5.00 score from hupso.pl for:
shiningrocksoftware.com



HTML Content


Title shining rock software

Length: 29, Words: 3
Description pusty

Length: 0, Words: 0
Keywords pusty
Robots
Charset UTF-8
Og Meta - Title pusty
Og Meta - Description pusty
Og Meta - Site name pusty
Tytuł powinien zawierać pomiędzy 10 a 70 znaków (ze spacjami), a mniej niż 12 słów w długości.
Meta opis powinien zawierać pomiędzy 50 a 160 znaków (łącznie ze spacjami), a mniej niż 24 słów w długości.
Kodowanie znaków powinny być określone , UTF-8 jest chyba najlepszy zestaw znaków, aby przejść z powodu UTF-8 jest bardziej międzynarodowy kodowaniem.
Otwarte obiekty wykresu powinny być obecne w stronie internetowej (więcej informacji na temat protokołu OpenGraph: http://ogp.me/)

SEO Content

Words/Characters 5338
Text/HTML 60.84 %
Headings H1 0
H2 5
H3 14
H4 0
H5 0
H6 0
H1
H2
on creating tools
1.0.7 beta
mega update
passing values…
quick fixes
H3
type reflection
serialization
the user interface
putting it together
the property editor
downloads
terrain rendering
cross platform toolset
major refactoring
the changes
steam dev days
talking to other programmers
things not done
back to banished!
H4
H5
H6
strong
b
i
em
Bolds strong 0
b 0
i 0
em 0
Zawartość strony internetowej powinno zawierać więcej niż 250 słów, z stopa tekst / kod jest wyższy niż 20%.
Pozycji używać znaczników (h1, h2, h3, ...), aby określić temat sekcji lub ustępów na stronie, ale zwykle, użyj mniej niż 6 dla każdego tagu pozycje zachować swoją stronę zwięzły.
Styl używać silnych i kursywy znaczniki podkreślić swoje słowa kluczowe swojej stronie, ale nie nadużywać (mniej niż 16 silnych tagi i 16 znaczników kursywy)

Statystyki strony

twitter:title pusty
twitter:description pusty
google+ itemprop=name pusty
Pliki zewnętrzne 8
Pliki CSS 1
Pliki javascript 7
Plik należy zmniejszyć całkowite odwołanie plików (CSS + JavaScript) do 7-8 maksymalnie.

Linki wewnętrzne i zewnętrzne

Linki 34
Linki wewnętrzne 1
Linki zewnętrzne 33
Linki bez atrybutu Title 25
Linki z atrybutem NOFOLLOW 0
Linki - Użyj atrybutu tytuł dla każdego łącza. Nofollow link jest link, który nie pozwala wyszukiwarkom boty zrealizują są odnośniki no follow. Należy zwracać uwagę na ich użytkowania

Linki zewnętrzne

- http://www.shiningrocksoftware.com
devlog http://shiningrocksoftware.com/
game http://www.shiningrocksoftware.com/?page_id=680
buy http://www.shiningrocksoftware.com/buy/
faq http://www.shiningrocksoftware.com/faq/
media http://www.shiningrocksoftware.com/screenshots/
mods http://www.shiningrocksoftware.com/mods/
forum http://shiningrocksoftware.com/forum
contact & support http://www.shiningrocksoftware.com/contact-support/
- http://www.shiningrocksoftware.com/buy/
on creating tools http://www.shiningrocksoftware.com/2017-02-20-on-creating-tools/
8 comments http://www.shiningrocksoftware.com/2017-02-20-on-creating-tools/#comments
1.0.7 beta http://www.shiningrocksoftware.com/2017-02-13-1-0-7-beta/
banishedkit_1.0.7.170212.beta.zip http://www.shiningrocksoftware.com/download/banishedkit_1.0.7.170212.beta.zip
banishedpatch_1.0.6_to_1.0.7.170212.beta.zip http://www.shiningrocksoftware.com/patch/banishedpatch_1.0.6_to_1.0.7.170212.beta.zip
9 comments http://www.shiningrocksoftware.com/2017-02-13-1-0-7-beta/#comments
mega update http://www.shiningrocksoftware.com/2017-02-06-mega-update/
cdlod (continuous distance-dependant level of detail rendering) for height maps http://www.vertexasylum.com/downloads/cdlod/cdlod_latest.pdf
34 comments http://www.shiningrocksoftware.com/2017-02-06-mega-update/#comments
passing values… http://www.shiningrocksoftware.com/2016-06-23-passing-values/
21 comments http://www.shiningrocksoftware.com/2016-06-23-passing-values/#comments
quick fixes http://www.shiningrocksoftware.com/2016-05-22-quick-fixes/
https://www.humblebundle.com/resender https://www.humblebundle.com/resender
banishedkit_1.0.6.160521.zip http://www.shiningrocksoftware.com/download/banishedkit_1.0.6.160521.zip
29 comments http://www.shiningrocksoftware.com/2016-05-22-quick-fixes/#comments
next post http://www.shiningrocksoftware.com/2016-06-23-passing-values/
previous post http://www.shiningrocksoftware.com/2016-05-19-1-0-5/
- http://www.shiningrocksoftware.com/feed/rss/
- http://www.facebook.com/pages/shining-rock-software/204249579612075
- http://www.twitter.com/shiningrocksoft
- http://www.reddit.com/r/banished
- http://www.youtube.com/user/shiningrocksoftware/
banished http://www.shiningrocksoftware.com/?page_id=680

Zdjęcia

Zdjęcia 17
Zdjęcia bez atrybutu ALT 1
Zdjęcia bez atrybutu TITLE 12
Korzystanie Obraz ALT i TITLE atrybutu dla każdego obrazu.

Zdjęcia bez atrybutu TITLE

http://www.shiningrocksoftware.com/images/logonew.png
http://www.shiningrocksoftware.com/images/banner02.jpg
http://www.shiningrocksoftware.com/wp-content/uploads/2017/02/propertyeditor-1.jpg
http://www.shiningrocksoftware.com/wp-content/uploads/2017/02/propertyeditor2.jpg
http://www.shiningrocksoftware.com/wp-content/uploads/2017/02/terrainwire.jpg
http://www.shiningrocksoftware.com/wp-content/uploads/2017/02/terrainsolid.jpg
http://www.shiningrocksoftware.com/wp-content/uploads/2017/02/devdays.jpg
http://www.shiningrocksoftware.com/wp-content/uploads/2017/02/limits.jpg
http://www.shiningrocksoftware.com/wp-content/uploads/2016/06/slowrendering.jpg
http://www.shiningrocksoftware.com/wp-content/uploads/2016/06/fastrendering.jpg
http://www.shiningrocksoftware.com/wp-content/uploads/2016/06/noanimation.jpg
http://www.shiningrocksoftware.com/wp-content/uploads/2016/06/noskinning.jpg

Zdjęcia bez atrybutu ALT

http://www.shiningrocksoftware.com/images/logonew.png

Ranking:


Alexa Traffic
Daily Global Rank Trend
Daily Reach (Percent)









Majestic SEO











Text on page:

devlog game buy faq media mods forum contact & support banished is a city-building strategy game. available for purchase february 18, 2014! --> february 20, 2017 on creating tools when i started coding my own engine and game, one of my constraints was that i wasn’t going to write an editor for whatever game i made. this was mostly a time saving constraint. good tools take time, as i certainly learned while making console games. often the editor tools to go with a new system took as much time to write and debug as the system itself. however, as i work on a new game, i find that i need an editor for some things. i need to be able to place objects, make paths, and edit properties. which is potentially a huge project unto itself. so i’ve been looking for ways to write such a tool with minimal code. more immediately, i’ve been working on some procedural generation code for terrain, but i want to be able to edit the generation properties and see results immediately, instead of changing parameters, running the code to see a result, quitting the program, and repeating over and over. also important, is the need to not waste time on user interface for code that is under-going development. if i add a parameter to the terrain generation code, then decide i don’t need it, i shouldn’t be spending time adding a new button or number edit field on some ui. this means some sort of automatic user interface. so what i need is an automatic property page style dialog that uses type reflection to determine field names, types, and values. type reflection the idea of reflection is that the code that’s running knows about the properties of itself as it’s running. given some code that defines some data and the functions that operate on that data, the code can find out and use names, types, and all sorts of other useful information about itself. strangely, the engine sort of has this functionality, but it wasn’t built for this purpose. it just needed some extra glue to make it work. serialization what the engine does have is a very flexible serialization system. a single function is created to read and write data to and from disc. it can operate in binary mode or text mode. text mode is a bit fancy. i wrote it to be able to edit data (since i had no editor) in a human readable way. it looks somewhat like json, but i built it to look more like the c++ class that is used in code. for example, here’s an imagebuffer (that’s called a texture in most engines…) imagebuffer editorsheet { string _imagename = "build/editorsheet.png"; type _type = rectangle; usage _usage = texture; format _format = rgba8; flags _flags = mipmaps; addressmode _addressu = clamp; addressmode _addressv = clamp; addressmode _addressw = clamp; filtermode _filtermode = linear; } the c++ that defines the imagebuffer looks very similar. class imagebuffer { protected: int32 _width; int32 _height; imagetype _type; usage _usage; format _format; flags _flags; addressmode _addressu; addressmode _addressv; addressmode _addressw; filtermode _filtermode; system::string _imagename; }; and serializing the image to and from disc looks like this: bool imagebuffer::serialize(io::stream& stream) { io::serializer s(stream); s.serialize(_internalfield(_width)); s.serialize(_internalfield(_height)); s.serialize(_field(_type)); s.serialize(_field(_usage)); s.serialize(_field(_format)); s.serialize(_field(_flags)); s.serialize(_field(_addressu)); s.serialize(_field(_addressv)); s.serialize(_field(_addressw)); s.serialize(_field(_filtermode)); s.serialize(_field(_imagename)); platformserialize(s); return true; } there’s some magic here. the stream of data could be text or binary, (or something else) and when the serializer is instantiated for that stream, an appropriate reader or writer is created. the _field and _internalfield macros define what’s available to the text reader, and what isn’t. for example width and height come from the image, and aren’t user editable. nothing says that the serializer has to come from or go to disc. it could be to memory, or some other crazy system, like following object pointers for garbage collection. so by writing a new back end for the serializer, i get exactly what i need for reflection. the field names, types, values, and addresses are available. i even know which fields i can present visibly and which ones not to. so with a tiny bit of extra code, i get object reflection without modifying any of my engine code. amazing! did i luck out or what? while the imagebuffer example doesn’t show it, this system also works for user defined types, enums, flags, pointers, arrays, colors, type ids, etc. the user interface again, i’m lucky. in making banished i wrote a ui system that has a lot of control types. so again i don’t have to write a ton of code or bring in a separate ui library. the ui in the engine has edit boxes, number edits and spinners, combo boxes, list boxes, check boxes, scroll bars, windows, layout tools, sprites, text, etc. another game may not have needed so many different controls. i’m not sure what i’d be doing for making this user interface otherwise. putting it together so all i really needed to do was write some code that would create a control for each specific type. number edits for integers, a set of check boxes for flags, combo boxes for enums, etc. when the user changes the values in the controls, i’d just need to push the new value into the back end of my serializer and send the data back to the object using the serialize function. and since the serialization system is already built to do things like compile a png into a block compressed format ready for gpu use, when the values are changed in the propery editor, the same compilation occurs as if it were being loaded from disc. easy! i say that it was easy, but it’s more that the new functionality wasn’t invasive to the existing engine. it was still a fairly sizeable bit of code and took a while to write properly. the property editor so without too much fuss, and zero engine modifications (just additional code), i have a property editor for any object in my engine. i can edit textures, sounds, or any new game object i add to the engine. i have a few more editors to write. for example i don’t have a color picker. right now i just type in a hex value like 0xffco80ab. but that shouldn’t be too bad to create in a day or so. and i probably need some resource editor that allows me to browse everything on disc. i could also modify the serialization functions to provide some meta-data for the editor. for example minimum/maximum values for numbers, increments for spinners, read only fields, field groupings, etc. but this will require modifying every existing serialization function. all in good time. this is a long way from a full featured editor, but it’s a start and it has a lot of possibilities. first is that i can edit all objects that i serialize without any additional code. it can also be used to do strange things, like editing the user interface properties of the property editor. and because it uses my own ui, in the future i could use it in game to select objects, see their properties, and change them for debugging purposes. awesome. 8 comments february 13, 2017 1.0.7 beta here’s a new banished beta for the modding community to test out. it adds 10 mod-usable resource flags and resource limits. it also adds the ability to add these limits to the game windows that use them, such as the status bar, limits, and town hall production/graph. it also has a new memory allocator that doesn’t have a hard limit on system memory used. if you use these, please let me know how they work out. thoughts, bugs, crashes, etc. email support @ shiningrocksoftware . com downloads without further ado, here’s the beta mod kit: banishedkit_1.0.7.170212.beta.zip be sure to check out the documentation. there’s a new section on using the resource limits and a new example mod that enables them all. here’s a patch for 1.0.6 to 1.0.7.170212 beta banishedpatch_1.0.6_to_1.0.7.170212.beta.zip note that you need to apply the patch to version 1.0.6. previous versions of the game won’t work with this patch. once downloaded, just unzip the archive into the folder where you have banished installed. this is usually c:\program files\shining rock software\banished\. as always the beta is up on steam. if you are using steam, go into your game library and right click on banished. select properties, and then in the windows that opens, select the betas tab. select the drop down and pick beta test for 1.0.7. with either the patched version or steam beta, the base game won’t change (except for a few minor bug fixes), but they’ll let you run mods generated with the new mod kit. again, let me know how this build works out. enjoy. 9 comments february 6, 2017 mega update way back in june, i was working on getting the game code running on mac and linux. and while the game runs on those platforms, there are still a bunch of details to implement for a final product, plus testing. but i’ve been itching to work on new games, so i’ve been working on new things more than working on mac and linux versions of banished. here’s a rundown of the past few months. terrain rendering a lot of the new games i have in mind require a larger terrain than is in banished, and unlike banished, they would require a free camera that can look up to the horizon. so i went ahead and coded a new terrain system. i started with a paper called cdlod (continuous distance-dependant level of detail rendering) for height maps. my implementation started out true to the paper, but now i use a slightly different tessellation of the terrain with alternating diagonals, rather than all diagonals in the same direction. so my lod is slightly different. and at the moment i still wanted to support hardware that doesn’t support vertex texture fetch (or does but it’s slow), so i cache chunks of the terrain on the cpu instead of reading the height data with the gpu. having the vertex data available on the cpu is required anyway for collision detection. this gives me a terrain that can render all the way to the horizon with no real size limits and nice lods that fade gently with distance. a 128km x 128km terrain is easily rendered on low end hardware, and the level of detail can be tweaked to reduce triangle count, or increase detail depending on hardware. of course a terrain that big has lots of procedural detail, since storage would be limiting. here’s a view of the underlying triangles that would render when flying far above the terrain. i’m not trying to win any art awards here, this terrain and texture is purely programmer art for testing. beyond just getting the triangles to render, i also need to add visual detail that fills in the gaps between triangles with something that looks like much higher detail. so i added a system that can handle unique texturing across the entire terrain and use higher frequency data than the triangles used to render. with some quickly generated normal maps, the view above turns into this. the terrain also does simple occlusion culling so that large mountains block whats behind them and it won’t render things far away. i still have a bunch of work to do to turn this into something usable in a game, such as good color textures and terrain generation that supports gameplay instead of simple fractal noise. cross platform toolset since i had terrain working, i wanted to make sure it worked on all linux and mac as well as windows, since i’d prefer to be able to launch my next game cross platform all at once instead of doing it after the fact. but i had a bad workflow. on windows, i can edit resource files and the game reloads them on the fly, or the resources compile when needed as they get loaded from disc. on mac and linux, i only ported the game code, and none of the toolset. so the workflow goes: – make sure pc build works. – compile all resource and generate a pack file. – put the pack file somewhere accessible by the mac and linux machines. – make sure mac and linux compile. – run mac or linux build. this is fine until i need to change data to debug a problem. if i’m working under linux and want to do something simple like view the terrain in wireframe mode, this requires a data change (yes, all my render state is data), which requires a pack file recompile on windows, etc, etc. additionally when i travel, i prefer a light and small laptop, such as my macbook, but if i can’t edit data on it, then there’s a limit to the kind of things i can work on. and so i was motivated to make the entire toolset work cross platform. yikes. all that windows specific code had to go!! so i ended up having to rework the engine by using cross platform code for fonts, image loading, dxt block compression, audio decoding, and a few other things. thankfully the fbx format works on osx and linux, so i didn’t have to change model formats. a bunch of changes later and the osx/linux version can now build the project from raw resources and no longer requires a windows machine to build the data. woot. i wish it had actually been as simple as writing that sentence… the only downside to this is that linux/osx can’t compile directx shaders into binary form. it generates the text though. so i can’t use data created on linux directly on a windows machine at the moment, but that’s only a problem building releasable products. for day to day work i can now work on any platform. however 3dsmax forces me to use windows, but i don’t do artwork every day, especially during early development. major refactoring next i decided that if i was going to start a new game, i was going to clean things up properly. just implementing the new terrain made me wish parts of my game engine were different. back when i made console games, as soon as a game shipped, the code would be branched and the next project was lined up and work started immediately. sometimes this happened even before the previous product shipped. this required just adding new code on top of the existing game engine to support the features of the new project. after several games, this starts to add up, and makes making changes fairly difficult. occasionally entire systems would be rewritten, but it was rare. so while i knew there wasn’t a whole lot of change to what my game engine could do after being refactored, i decided to clean up the things that were implemented quickly or not as well as they could have been so that future projects aren’t impeded by code pileup. i felt two ways about this. on one side, i was longing to be prototyping a new game, testing new ideas. i’ve been thinking about new game ideas since early on in banished development. on the other side i knew that my changes would make creating prototypes easier. if i happened to keep the prototype (which might happen), i wouldn’t have to refactor that code or the data that went with it, if and when i decide to change the way things work. the changes the first refactor i did was to merge the windows opengl code with the osx/linux opengl code. they were almost identical, but the windows version was different because it’s in a dynamically loadable library so that multiple rendering back ends can be supported. i may end up with dynamic libraries on osx and linux as well, as metal and vulcan may be implemented one day in addition to opengl. either way, having just one opengl path to maintain is much better. i then removed support for shader model 2.0 under directx. i can’t do instancing in a memory efficient way with sm2, and i can’t do efficient deferred rendering effects with it either, so i’m not going to support it. this removed a lot of code that was used to make instancing work and really cleaned up the rendering path across all back ends. so the next game will at minimum require shader model 3.0, but i may even drop this. time and gpu surveys will decide. often times i want to test some new code outside of the current game project, which is quite hard once the game is in place. where do you test? i would end up commenting out the startup code of the game and calling some other temporary code. so instead i made the ‘game’ code a dynamically loadable library. with this setup i can maintain multiple test projects and the test code can stay around and doesn’t interfere with the game. a command line switch specifies which game library to load and that’s it. this change also allowed me to have multiple data directories so i can keep test data separate from the main game. i also removed all serialization versioning code. between the beta release of banished and now, a bunch of data formats have changed, but the game still has to support the old versions. this is really just code bloat, and a new game doesn’t have to load banished resources, so it’s pretty nice to clean them all up and have very readable serialization functions. i changed the object model that the game uses as well. previously i had resources fully constant – the game wouldn’t let you change them once loaded from disc. so if you have an object, say a character, it has one c++ class for the runtime data (where it is, what animation is playing), and a second class for the data that comes from disc (what model to use, what textures, etc). now i can have the two classes be one in the same (or separate if the shared data is large). this cuts down on code classes and maintenance and it also allows flexibility. so now the constant data object is cloned when i need a runtime version, and can be changed as needed. if i need to change models or textures at runtime, it’s easy, instead of adding more overhead to both the data class and runtime class. next i changed the way i store meshes and load them from fbx files. in banished, every model i exported from 3dsmax had the same format – position, normal, and 3 texture coordinates. (with skinning data if it was animated). this was a little wasteful, as only trees used all 3 texture coordinates. some models only used 1. to fix this, i changed mesh formats to pair models with the vertex format that the shader programs use. this allows a custom format per model if desired, saves memory since only what’s used is stored, and allows internal verification that materials applied to a model will actually be able to render properly. and then a ton of other small changes. moving files around, renaming classes, removing hard text strings and making them configurable, making the engine more generic, moving game level code that can be reused down into the engine, the list of small things goes on and on. all this should make the development of the next game smoother. coding these changes feels a little bit like spinning my wheels, or going down a rabbit hole that doesn’t have a bottom. but when the change is made, it’s nice to see the code get smaller and have better organization. ok, it was time to start prototyping! steam dev days but then i went to seattle for valve’s second developer conference. i met a lot of other awesome indie developers, talked to old friends, made new friends, and saw the new valve vr controllers. i had a great time. the conference was fairly vr centric, but was also about where steam is heading in the future. talking to other programmers back from the conference, there i was, done with refactoring, done with getting the engine ready for a new game! i was writing gameplay code! new camera controls and behavior! a new method for placing objects and paths on terrain without a grid! hooray! then one day i had lunch with a programmer that i used to work with. talking with other programmers, especially when working solo, is really good to go over ideas and design. and sometimes it spawns ideas that you wouldn’t have thought of yourself. somewhere in the conversation, my friend said “in my game engine, i’ve been thinking about having the hierarchy of objects be its own system.” that thought stuck with me, and my friend and i talked about it over the next few days. my code didn’t do this, and against my better judgement, i decided to take a stab at implementing it and see if i liked the change. and it really cleaned up my game engine. positional and rotation control, animation, and attachment is its own system, and the graphics, collision, and audio systems simply reference transformations from the hierarchy system. it also really cleaned up the other systems that used to store the scene hierarchy in duplicate. it made rendering just about rendering, animation about animation, and collision just about collision. it also removed a lot of high level management that was used to keep things in sync that probably shouldn’t have been at game level anyway. it’s a good change. however making this change was pretty large. several hundred source files were affected, and i don’t think i could have done it with a game in place due to the number of things that would have broken. making the change felt a bit like being in a pit of despair until it was done. i just kept getting deeper and deeper into changes to the lowest levels of the rendering, collision, and audio code. several times i considered just reverting all my changes because it was such a large modification. so while it’s a good change, it made me decide i’m done with major tech changes and code refactors until i really have a need for them. i don’t want to just make my code better and better forever. i need to be adding features i need or working on game code. things not done one interesting thing i found while doing all this refactoring are the things i didn’t do. i had maintained a list of things i wanted to change about the code from before banished shipped, but were too massive to do without majorly breaking the game. once i got to working on them, i realized about half of them didn’t really need to be done, or that they were implemented a certain way to handle edge cases i had forgotten about. or the code wasn’t actually bad enough to warrant modification. not that cutting half my planned refactors saved any time – as refactoring progressed, i ran into things that needed to be changed or were implemented poorly that i hadn’t thought of ahead of time. back to banished! most recently i’ve been back to working on a new prototype, but i took some time out to work on an update for banished that will only effects mods. aside from a few bug fixes, the base game won’t change but the game will allow modders to use configurable resource flags and limits, and hopefully remove the limit on memory allocations. more on this to come, but for now, here’s a screenshot. 34 comments june 23, 2016 passing values… a few months ago i had some interesting performance problems with opengl on osx. i identified the problem and made some work arounds for development to continue. this week i’ve properly fixed the issue, and i want to record it here for myself and others to avoid this mistake. so here’s a scene, rendering on osx, at an abysmal frame rate of 14 on a macbook pro. that’s right. 14. i’ve got the game paused so there isn’t any time spent on updates, this is just drawing. if i move the camera to a different location, the frame rate is 126. thats a difference of 63 or so milliseconds. ouch. so after much debugging i determined that rendering animated models was causing the slow down. the image of just trees doesn’t have any deer or people moving around. and if i remove the people from my original test scene, the frame rate is over 100. since rendering houses and trees really only has minor differences with animated models i disabled the shader code that animates the models and the frame rate went back up to normal. this looks funny, and runs fast. so here’s the basic code that handles animation in glsl. it looks pretty standard and is simple code. this isn’t the entire shader, just enough to get an idea of how the animation part works. struct boneconstants { mat4x4 transforms[64]; }; uniform boneconstants bc; in vec3 inputposition; in vec4 inputweight; in ivec4 inputindex; vec3 skinposition(vec3 position, ivec4 index, vec4 weight, boneconstants bones) { return ((bones.transforms[index.x] * vec4(position, 1.0)) * weight.x + (bones.transforms[index.y] * vec4(position, 1.0)) * weight.y + (bones.transforms[index.z] * vec4(position, 1.0)) * weight.z + (bones.transforms[index.w] * vec4(position, 1.0)) * weight.w)).xyz; } void main() { vec3 position = skinposition(inputposition, inputindex, inputindex, bc); gl_position = (gc.worldtoprojection * (tc.transform * vec4(position, 1.0))); } what this code does is transform the position of a vertex by up to four bones in the models structure. it then weights them by how much influence each bone has on the vertex. i stared at this code for a while (more than a while actually), and after messing about a bit, it finally dawned on me what’s wrong with it. face palm. to fix it, instead of calling a function to animate the models, i manually inlined the code. and my frame rate returned to normal, with animated characters. void main() { vec4 position = ((bc.transforms[inputindex.x] * vec4(inputposition, 1.0)) * inputweight.x + (bc.transforms[inputindex.y] * vec4(inputposition, 1.0)) * inputweight.y + (bc.transforms[inputindex.z] * vec4(inputposition, 1.0)) * inputweight.z + (bc.transforms[inputindex.w] * vec4(inputposition, 1.0)) * inputweight.w)).xyz; gl_position = (gc.worldtoprojection * (tc.transforms[gl_instanceid] * vec4(position, 1.0))); wow. so whats going on there? there’s two ways to pass parameters to a function. either by value, or by reference. when you pass a parameter by value, a copy of the variable is made so that any changes to the variable in the function don’t effect its value in the calling function. when you pass a parameter by reference any modifications to the variable change it directly. no copy is made. in my case with animation, the entire array of bone transformations is being copied, because it’s being passed by value. my suspicion is that the program running on the gpu doesn’t have enough registers to make this copy, so the glsl compiler is generating code – copying the array bit by bit, and then is running the code over and over to evaluate the final result. what’s just a few matrix multiples, scaling, and adding becomes many many copies and conditionals. this possibly results in different execution paths per gpu thread, causing even more slowdown. my first attempt before manually inlining this code was actually to pass the array by reference, but the opengl compiler yelled at me that you can’t pass a uniform by reference. on windows and linux, i suspect the compiler is smart enough to see that the function doesn’t modify the array, and optimizes the copy away. (or my gtx 980 and 290x are just too fast for me to notice the slowdown…) most people directly reference the global list of uniform bone transformations directly and never run into this issue. but since my custom shader language that generates glsl doesn’t have a concept of globals, everything is passed to functions if it’s needed. arghghghg. so what’s the real fix? i don’t want to have to manually repeat code in shaders, that’s just bad programming practice. luckily, i control the compiler for my own shading language, so i can get it to generate different code. so i just recently added an ‘inline’ keyword for functions. the code gets inlined automatically and any value passed by reference isn’t copied when the glsl is generated. previously my skinning function looked (in srsl, not glsl) like this: inline float3 skinposition(float3 position, int4 index, float4 weight, boneconstants bc) {...} and now it looks like this inline float3 skinposition(float3 position, inout int4 index, inout float4 weight, inout boneconstants bc) {...} no more repeated skinning code everywhere. getting my compiler to inline the code is pretty easy. however, as most shader languages don’t feature a goto or label statement to jump over remaining code, it’s hard (if not impossible) to inline a certain class of functions. so my inline feature doesn’t handle inlining when returning from complex flow control. this really isn’t an issue for shaders, as the programs tend to be straight forward and not have many loops or conditionals. so long story short, don’t pass uniform arrays and large structs to a function by value in glsl. 21 comments may 22, 2016 quick fixes i just uploaded some quick bug fixes introduced with the last build. 1.0.6 is live on steam. if you need to redownload it from humble you can log in and grab it, or you can use this tool: https://www.humblebundle.com/resender. gog.com should have an updated build shortly. there’s a new modkit, available here: banishedkit_1.0.6.160521.zip, though there shouldn’t be any changes to it from 1.0.5. changes in this build: – fixed a crash that occurred when clicking on the town hall if a translation mod was in use that was built with 1.0.4. missing text data will now be blank. – fixed a bug that caused orchards and pastures to not drop items inside their boundaries as was intended. 29 comments next post previous post community history and search view older articles older articles february 2017 (3) june 2016 (1) may 2016 (2) april 2016 (1) march 2016 (1) december 2015 (3) november 2015 (1) october 2015 (1) september 2015 (1) may 2015 (1) march 2015 (2) january 2015 (2) november 2014 (2) october 2014 (2) september 2014 (1) august 2014 (1) july 2014 (2) june 2014 (1) may 2014 (2) april 2014 (4) march 2014 (1) february 2014 (6) january 2014 (4) december 2013 (3) november 2013 (5) october 2013 (3) september 2013 (8) august 2013 (2) july 2013 (2) june 2013 (6) may 2013 (4) april 2013 (9) march 2013 (6) february 2013 (5) january 2013 (1) november 2012 (3) september 2012 (1) august 2012 (2) june 2012 (2) may 2012 (1) april 2012 (2) march 2012 (1) february 2012 (4) january 2012 (4) june 2011 (1) may 2011 (1) search archives about shining rock software has only a single developer doing all the software development, artwork, and audio. my goal is to make simple and fun games for people to enjoy, similar to the enjoyment i got from playing shareware games back in the 1990s. i've been gaming and programming for a long time. i used to work as an professional graphics engine programmer making console games for about 10 years before going 'indie'. the current title in development is a city building strategy game called banished. send feedback and comments to [email protected] © 2017 shining rock software. all rights reserved.


Here you find all texts from your page as Google (googlebot) and others search engines seen it.

Words density analysis:

Numbers of all words: 5276

One word

Two words phrases

Three words phrases

the - 5.84% (308)
and - 2.79% (147)
for - 2.03% (107)
that - 1.57% (83)
all - 1.33% (70)
code - 1.16% (61)
game - 1.14% (60)
this - 1% (53)
mod - 0.95% (50)
use - 0.87% (46)
with - 0.82% (43)
end - 0.74% (39)
change - 0.74% (39)
was - 0.72% (38)
work - 0.72% (38)
out - 0.68% (36)
com - 0.66% (35)
add - 0.64% (34)
new - 0.64% (34)
have - 0.61% (32)
one - 0.61% (32)
mode - 0.59% (31)
some - 0.59% (31)
here - 0.59% (31)
can - 0.59% (31)
but - 0.55% (29)
data - 0.51% (27)
edit - 0.51% (27)
per - 0.51% (27)
able - 0.49% (26)
position - 0.49% (26)
need - 0.47% (25)
thing - 0.47% (25)
had - 0.45% (24)
just - 0.44% (23)
from - 0.42% (22)
time - 0.42% (22)
are - 0.4% (21)
ran - 0.4% (21)
banished - 0.38% (20)
fun - 0.38% (20)
put - 0.38% (20)
serialize - 0.38% (20)
what - 0.38% (20)
engine - 0.38% (20)
own - 0.36% (19)
any - 0.36% (19)
terrain - 0.36% (19)
text - 0.36% (19)
field - 0.36% (19)
render - 0.36% (19)
rate - 0.36% (19)
type - 0.34% (18)
function - 0.34% (18)
you - 0.34% (18)
art - 0.34% (18)
way - 0.32% (17)
(1) - 0.32% (17)
system - 0.32% (17)
not - 0.32% (17)
when - 0.32% (17)
things - 0.32% (17)
format - 0.32% (17)
about - 0.3% (16)
low - 0.3% (16)
win - 0.3% (16)
run - 0.3% (16)
too - 0.3% (16)
model - 0.3% (16)
on. - 0.3% (16)
linux - 0.28% (15)
position, - 0.28% (15)
used - 0.28% (15)
like - 0.28% (15)
met - 0.28% (15)
vec4 - 0.28% (15)
its - 0.28% (15)
transform - 0.28% (15)
does - 0.28% (15)
value - 0.27% (14)
get - 0.27% (14)
other - 0.27% (14)
load - 0.27% (14)
editor - 0.27% (14)
image - 0.27% (14)
also - 0.27% (14)
now - 0.27% (14)
bone - 0.27% (14)
here’s - 0.27% (14)
has - 0.25% (13)
it’s - 0.25% (13)
them - 0.25% (13)
changes - 0.25% (13)
windows - 0.25% (13)
back - 0.25% (13)
real - 0.25% (13)
make - 0.25% (13)
object - 0.25% (13)
mac - 0.25% (13)
(2) - 0.23% (12)
would - 0.23% (12)
build - 0.23% (12)
2013 - 0.23% (12)
dev - 0.23% (12)
code. - 0.23% (12)
2014 - 0.23% (12)
program - 0.23% (12)
source - 0.23% (12)
down - 0.23% (12)
line - 0.21% (11)
read - 0.21% (11)
rendering - 0.21% (11)
there - 0.21% (11)
resource - 0.21% (11)
- 0.21% (11)
into - 0.21% (11)
made - 0.21% (11)
compile - 0.21% (11)
more - 0.21% (11)
look - 0.21% (11)
beta - 0.21% (11)
test - 0.21% (11)
been - 0.21% (11)
may - 0.21% (11)
doesn’t - 0.21% (11)
1.0)) - 0.19% (10)
limit - 0.19% (10)
class - 0.19% (10)
support - 0.19% (10)
fix - 0.19% (10)
texture - 0.19% (10)
shader - 0.19% (10)
really - 0.19% (10)
_field - 0.19% (10)
only - 0.19% (10)
working - 0.19% (10)
don’t - 0.19% (10)
pass - 0.19% (10)
control - 0.17% (9)
tool - 0.17% (9)
since - 0.17% (9)
want - 0.17% (9)
project - 0.17% (9)
flags - 0.17% (9)
i’ve - 0.17% (9)
how - 0.17% (9)
refactor - 0.17% (9)
write - 0.17% (9)
it, - 0.17% (9)
making - 0.17% (9)
then - 0.17% (9)
while - 0.17% (9)
version - 0.17% (9)
me, - 0.17% (9)
start - 0.17% (9)
require - 0.17% (9)
very - 0.17% (9)
bug - 0.17% (9)
2012 - 0.17% (9)
over - 0.17% (9)
bit - 0.17% (9)
going - 0.15% (8)
different - 0.15% (8)
hard - 0.15% (8)
main - 0.15% (8)
lot - 0.15% (8)
few - 0.15% (8)
file - 0.15% (8)
february - 0.15% (8)
inline - 0.15% (8)
disc - 0.15% (8)
implement - 0.15% (8)
games - 0.15% (8)
day - 0.15% (8)
were - 0.15% (8)
next - 0.15% (8)
user - 0.15% (8)
models - 0.15% (8)
changed - 0.13% (7)
they - 0.13% (7)
development - 0.13% (7)
detail - 0.13% (7)
ones - 0.13% (7)
reference - 0.13% (7)
side - 0.13% (7)
move - 0.13% (7)
constant - 0.13% (7)
will - 0.13% (7)
animation - 0.13% (7)
done - 0.13% (7)
generate - 0.13% (7)
june - 0.13% (7)
platform - 0.13% (7)
where - 0.13% (7)
osx - 0.13% (7)
2015 - 0.13% (7)
serialization - 0.13% (7)
could - 0.13% (7)
decide - 0.13% (7)
tools - 0.13% (7)
looks - 0.13% (7)
needed - 0.13% (7)
which - 0.13% (7)
instead - 0.13% (7)
face - 0.11% (6)
properties - 0.11% (6)
2016 - 0.11% (6)
steam - 0.11% (6)
remove - 0.11% (6)
boxes - 0.11% (6)
see - 0.11% (6)
values - 0.11% (6)
addressmode - 0.11% (6)
than - 0.11% (6)
allow - 0.11% (6)
using - 0.11% (6)
every - 0.11% (6)
running - 0.11% (6)
should - 0.11% (6)
disc. - 0.11% (6)
(in - 0.11% (6)
functions - 0.11% (6)
comments - 0.11% (6)
that’s - 0.11% (6)
idea - 0.11% (6)
limits - 0.11% (6)
array - 0.11% (6)
memory - 0.11% (6)
imagebuffer - 0.11% (6)
glsl - 0.11% (6)
most - 0.11% (6)
once - 0.11% (6)
bones - 0.11% (6)
though - 0.11% (6)
animate - 0.11% (6)
i’m - 0.11% (6)
level - 0.11% (6)
large - 0.11% (6)
turn - 0.11% (6)
example - 0.11% (6)
vec4(position, - 0.11% (6)
good - 0.11% (6)
simple - 0.11% (6)
frame - 0.11% (6)
clean - 0.11% (6)
much - 0.11% (6)
did - 0.11% (6)
opengl - 0.11% (6)
can’t - 0.11% (6)
cross - 0.11% (6)
without - 0.11% (6)
etc. - 0.11% (6)
reflection - 0.09% (5)
after - 0.09% (5)
files - 0.09% (5)
march - 0.09% (5)
2017 - 0.09% (5)
available - 0.09% (5)
number - 0.09% (5)
1.0.7 - 0.09% (5)
better - 0.09% (5)
fine - 0.09% (5)
feature - 0.09% (5)
actually - 0.09% (5)
objects - 0.09% (5)
software - 0.09% (5)
long - 0.09% (5)
come - 0.09% (5)
previous - 0.09% (5)
game, - 0.09% (5)
programmer - 0.09% (5)
path - 0.09% (5)
vertex - 0.09% (5)
such - 0.09% (5)
collision - 0.09% (5)
(4) - 0.09% (5)
getting - 0.09% (5)
triangle - 0.09% (5)
old - 0.09% (5)
two - 0.09% (5)
adding - 0.09% (5)
(3) - 0.09% (5)
entire - 0.09% (5)
library - 0.09% (5)
interface - 0.09% (5)
wasn’t - 0.09% (5)
parameter - 0.09% (5)
1.0.6 - 0.09% (5)
patch - 0.09% (5)
index, - 0.09% (5)
windows, - 0.09% (5)
create - 0.09% (5)
sure - 0.09% (5)
got - 0.09% (5)
boneconstants - 0.09% (5)
usage - 0.09% (5)
still - 0.09% (5)
compiler - 0.09% (5)
works - 0.09% (5)
there’s - 0.09% (5)
stream - 0.09% (5)
gpu - 0.09% (5)
what’s - 0.09% (5)
being - 0.09% (5)
copy - 0.09% (5)
isn’t - 0.09% (5)
filtermode - 0.09% (5)
loaded - 0.09% (5)
set - 0.09% (5)
height - 0.09% (5)
serializer - 0.09% (5)
list - 0.08% (4)
debug - 0.08% (4)
multiple - 0.08% (4)
having - 0.08% (4)
properly - 0.08% (4)
ends - 0.08% (4)
it. - 0.08% (4)
addition - 0.08% (4)
removed - 0.08% (4)
september - 0.08% (4)
boxes, - 0.08% (4)
audio - 0.08% (4)
times - 0.08% (4)
went - 0.08% (4)
around - 0.08% (4)
november - 0.08% (4)
return - 0.08% (4)
many - 0.08% (4)
media - 0.08% (4)
doing - 0.08% (4)
ways - 0.08% (4)
bunch - 0.08% (4)
january - 0.08% (4)
modify - 0.08% (4)
view - 0.08% (4)
started - 0.08% (4)
vec3 - 0.08% (4)
small - 0.08% (4)
didn’t - 0.08% (4)
game. - 0.08% (4)
under - 0.08% (4)
uniform - 0.08% (4)
define - 0.08% (4)
directly - 0.08% (4)
shining - 0.08% (4)
problem - 0.08% (4)
even - 0.08% (4)
however - 0.08% (4)
resources - 0.08% (4)
know - 0.08% (4)
refactoring - 0.08% (4)
triangles - 0.08% (4)
normal - 0.08% (4)
ideas - 0.08% (4)
generation - 0.08% (4)
implemented - 0.08% (4)
handle - 0.08% (4)
(or - 0.08% (4)
top - 0.08% (4)
product - 0.08% (4)
well - 0.08% (4)
animated - 0.08% (4)
slow - 0.08% (4)
before - 0.08% (4)
something - 0.08% (4)
textures - 0.08% (4)
people - 0.08% (4)
again - 0.08% (4)
april - 0.08% (4)
property - 0.08% (4)
friend - 0.08% (4)
because - 0.08% (4)
won’t - 0.08% (4)
moving - 0.08% (4)
right - 0.08% (4)
code, - 0.08% (4)
same - 0.08% (4)
select - 0.08% (4)
shouldn’t - 0.08% (4)
itself - 0.08% (4)
rock - 0.08% (4)
way. - 0.08% (4)
let - 0.08% (4)
fixes - 0.08% (4)
update - 0.08% (4)
uses - 0.08% (4)
engine. - 0.08% (4)
types, - 0.08% (4)
quick - 0.08% (4)
internal - 0.08% (4)
bad - 0.08% (4)
out. - 0.08% (4)
built - 0.08% (4)
runtime - 0.08% (4)
either - 0.08% (4)
thought - 0.08% (4)
time. - 0.08% (4)
allows - 0.08% (4)
float3 - 0.08% (4)
1.0.7. - 0.08% (4)
pretty - 0.08% (4)
function. - 0.08% (4)
vec4(inputposition, - 0.08% (4)
enough - 0.08% (4)
full - 0.08% (4)
system. - 0.08% (4)
language - 0.06% (3)
lined - 0.06% (3)
paths - 0.06% (3)
bc) - 0.06% (3)
animation, - 0.06% (3)
hierarchy - 0.06% (3)
repeat - 0.06% (3)
struct - 0.06% (3)
decided - 0.06% (3)
flow - 0.06% (3)
machine - 0.06% (3)
developer - 0.06% (3)
inout - 0.06% (3)
major - 0.06% (3)
weight, - 0.06% (3)
shaders - 0.06% (3)
form. - 0.06% (3)
conference - 0.06% (3)
building - 0.06% (3)
formats - 0.06% (3)
transformations - 0.06% (3)
is, - 0.06% (3)
dynamic - 0.06% (3)
ago - 0.06% (3)
maintain - 0.06% (3)
second - 0.06% (3)
effect - 0.06% (3)
october - 0.06% (3)
cleaned - 0.06% (3)
classes - 0.06% (3)
older - 0.06% (3)
calling - 0.06% (3)
fully - 0.06% (3)
variable - 0.06% (3)
controls - 0.06% (3)
functions. - 0.06% (3)
manually - 0.06% (3)
certain - 0.06% (3)
passed - 0.06% (3)
issue - 0.06% (3)
high - 0.06% (3)
trees - 0.06% (3)
several - 0.06% (3)
systems - 0.06% (3)
(6) - 0.06% (3)
testing - 0.06% (3)
log - 0.06% (3)
skinning - 0.06% (3)
store - 0.06% (3)
void - 0.06% (3)
think - 0.06% (3)
august - 0.06% (3)
keep - 0.06% (3)
prototype - 0.06% (3)
wouldn’t - 0.06% (3)
fixed - 0.06% (3)
scene - 0.06% (3)
games, - 0.06% (3)
called - 0.06% (3)
wanted - 0.06% (3)
camera - 0.06% (3)
future - 0.06% (3)
binary - 0.06% (3)
created - 0.06% (3)
_internalfield - 0.06% (3)
width - 0.06% (3)
lod - 0.06% (3)
hardware - 0.06% (3)
final - 0.06% (3)
writing - 0.06% (3)
first - 0.06% (3)
_filtermode - 0.06% (3)
nice - 0.06% (3)
color - 0.06% (3)
automatic - 0.06% (3)
editors - 0.06% (3)
banished, - 0.06% (3)
c++ - 0.06% (3)
development. - 0.06% (3)
these - 0.06% (3)
_addressw - 0.06% (3)
_addressv - 0.06% (3)
clamp; - 0.06% (3)
_addressu - 0.06% (3)
_flags - 0.06% (3)
1.0.7.170212 - 0.06% (3)
versions - 0.06% (3)
_format - 0.06% (3)
generated - 0.06% (3)
_usage - 0.06% (3)
_type - 0.06% (3)
banished. - 0.06% (3)
drop - 0.06% (3)
_imagename - 0.06% (3)
string - 0.06% (3)
i’d - 0.06% (3)
sort - 0.06% (3)
names, - 0.06% (3)
luck - 0.06% (3)
until - 0.06% (3)
console - 0.06% (3)
ported - 0.06% (3)
take - 0.06% (3)
linux, - 0.06% (3)
additional - 0.06% (3)
pack - 0.06% (3)
took - 0.06% (3)
toolset - 0.06% (3)
itself. - 0.06% (3)
ton - 0.06% (3)
say - 0.06% (3)
coding - 0.06% (3)
separate - 0.06% (3)
ready - 0.06% (3)
place - 0.06% (3)
block - 0.06% (3)
send - 0.06% (3)
light - 0.06% (3)
requires - 0.06% (3)
existing - 0.06% (3)
this. - 0.06% (3)
mods - 0.06% (3)
fairly - 0.06% (3)
check - 0.06% (3)
properly. - 0.06% (3)
1.0))); - 0.04% (2)
inputindex, - 0.04% (2)
gl_position - 0.04% (2)
scene, - 0.04% (2)
combo - 0.04% (2)
edits - 0.04% (2)
(gc.worldtoprojection - 0.04% (2)
(tc.transform - 0.04% (2)
spinners, - 0.04% (2)
library. - 0.04% (2)
weight.w)).xyz; - 0.04% (2)
stream) - 0.04% (2)
system, - 0.04% (2)
down. - 0.04% (2)
enums, - 0.04% (2)
causing - 0.04% (2)
glsl. - 0.04% (2)
part - 0.04% (2)
modifying - 0.04% (2)
fields - 0.04% (2)
flags, - 0.04% (2)
pointers - 0.04% (2)
difference - 0.04% (2)
main() - 0.04% (2)
ivec4 - 0.04% (2)
aren’t - 0.04% (2)
again, - 0.04% (2)
reader - 0.04% (2)
weight.x - 0.04% (2)
weight.y - 0.04% (2)
weight.z - 0.04% (2)
macbook - 0.04% (2)
here. - 0.04% (2)
this: - 0.04% (2)
ended - 0.04% (2)
int32 - 0.04% (2)
find - 0.04% (2)
crash - 0.04% (2)
post - 0.04% (2)
search - 0.04% (2)
waste - 0.04% (2)
articles - 0.04% (2)
results - 0.04% (2)
procedural - 0.04% (2)
immediately, - 0.04% (2)
objects, - 0.04% (2)
december - 0.04% (2)
things. - 0.04% (2)
however, - 0.04% (2)
determine - 0.04% (2)
often - 0.04% (2)
july - 0.04% (2)
time, - 0.04% (2)
made. - 0.04% (2)
(5) - 0.04% (2)
2011 - 0.04% (2)
creating - 0.04% (2)
strategy - 0.04% (2)
similar - 0.04% (2)
playing - 0.04% (2)
graphics - 0.04% (2)
humble - 0.04% (2)
arrays - 0.04% (2)
bit, - 0.04% (2)
wrote - 0.04% (2)
inlined - 0.04% (2)
parameters - 0.04% (2)
value, - 0.04% (2)
reference. - 0.04% (2)
case - 0.04% (2)
editorsheet - 0.04% (2)
conditionals. - 0.04% (2)
inlining - 0.04% (2)
fast - 0.04% (2)
global - 0.04% (2)
readable - 0.04% (2)
shaders, - 0.04% (2)
story - 0.04% (2)
programming - 0.04% (2)
copied - 0.04% (2)
single - 0.04% (2)
skinposition(float3 - 0.04% (2)
int4 - 0.04% (2)
float4 - 0.04% (2)
work. - 0.04% (2)
{...} - 0.04% (2)
extra - 0.04% (2)
operate - 0.04% (2)
defines - 0.04% (2)
tend - 0.04% (2)
months - 0.04% (2)
functionality - 0.04% (2)
each - 0.04% (2)
cpu - 0.04% (2)
between - 0.04% (2)
prototyping - 0.04% (2)
above - 0.04% (2)
thinking - 0.04% (2)
far - 0.04% (2)
128km - 0.04% (2)
size - 0.04% (2)
horizon - 0.04% (2)
anyway - 0.04% (2)
required - 0.04% (2)
dynamically - 0.04% (2)
loadable - 0.04% (2)
moment - 0.04% (2)
projects - 0.04% (2)
different. - 0.04% (2)
diagonals - 0.04% (2)
slightly - 0.04% (2)
instancing - 0.04% (2)
efficient - 0.04% (2)
effects - 0.04% (2)
true - 0.04% (2)
paper - 0.04% (2)
minimum - 0.04% (2)
ahead - 0.04% (2)
current - 0.04% (2)
past - 0.04% (2)
testing. - 0.04% (2)
felt - 0.04% (2)
higher - 0.04% (2)
runs - 0.04% (2)
especially - 0.04% (2)
platform. - 0.04% (2)
state - 0.04% (2)
osx/linux - 0.04% (2)
raw - 0.04% (2)
wish - 0.04% (2)
directx - 0.04% (2)
build. - 0.04% (2)
somewhere - 0.04% (2)
generates - 0.04% (2)
works. - 0.04% (2)
workflow - 0.04% (2)
3dsmax - 0.04% (2)
artwork - 0.04% (2)
early - 0.04% (2)
knew - 0.04% (2)
prefer - 0.04% (2)
gameplay - 0.04% (2)
implementing - 0.04% (2)
usable - 0.04% (2)
shipped, - 0.04% (2)
away. - 0.04% (2)
sometimes - 0.04% (2)
happened - 0.04% (2)
whats - 0.04% (2)
quickly - 0.04% (2)
features - 0.04% (2)
across - 0.04% (2)
added - 0.04% (2)
now, - 0.04% (2)
minor - 0.04% (2)
specific - 0.04% (2)
modifications - 0.04% (2)
awesome - 0.04% (2)
indie - 0.04% (2)
talked - 0.04% (2)
friends, - 0.04% (2)
valve - 0.04% (2)
strange - 0.04% (2)
talking - 0.04% (2)
programmers - 0.04% (2)
editor. - 0.04% (2)
everything - 0.04% (2)
probably - 0.04% (2)
textures, - 0.04% (2)
change. - 0.04% (2)
collision, - 0.04% (2)
days - 0.04% (2)
rendering, - 0.04% (2)
fbx - 0.04% (2)
easy, - 0.04% (2)
deeper - 0.04% (2)
modification. - 0.04% (2)
refactors - 0.04% (2)
interesting - 0.04% (2)
editor, - 0.04% (2)
use, - 0.04% (2)
half - 0.04% (2)
png - 0.04% (2)
recently - 0.04% (2)
configurable - 0.04% (2)
their - 0.04% (2)
properties, - 0.04% (2)
base - 0.04% (2)
hall - 0.04% (2)
previously - 0.04% (2)
pick - 0.04% (2)
click - 0.04% (2)
your - 0.04% (2)
steam. - 0.04% (2)
comes - 0.04% (2)
archive - 0.04% (2)
needed. - 0.04% (2)
1.0.6. - 0.04% (2)
normal, - 0.04% (2)
coordinates. - 0.04% (2)
email - 0.04% (2)
little - 0.04% (2)
town - 0.04% (2)
ok, - 0.04% (2)
this, - 0.04% (2)
mesh - 0.04% (2)
pair - 0.04% (2)
programs - 0.04% (2)
custom - 0.04% (2)
limits, - 0.04% (2)
them, - 0.04% (2)
engine, - 0.04% (2)
goes - 0.04% (2)
adds - 0.04% (2)
community - 0.04% (2)
hole - 0.04% (2)
debugging - 0.04% (2)
city - 0.04% (2)
to the - 0.34% (18)
of the - 0.3% (16)
the game - 0.28% (15)
in the - 0.27% (14)
the code - 0.21% (11)
have a - 0.21% (11)
at the - 0.21% (11)
and the - 0.21% (11)
need to - 0.19% (10)
here’s a - 0.19% (10)
that i - 0.19% (10)
on the - 0.19% (10)
with a - 0.17% (9)
i need - 0.17% (9)
or the - 0.17% (9)
new game - 0.17% (9)
the engine - 0.15% (8)
this is - 0.15% (8)
that the - 0.15% (8)
it was - 0.15% (8)
code that - 0.15% (8)
and linux - 0.15% (8)
1.0)) * - 0.15% (8)
i don’t - 0.13% (7)
the new - 0.13% (7)
working on - 0.13% (7)
i’ve been - 0.13% (7)
used to - 0.13% (7)
lot of - 0.13% (7)
for the - 0.11% (6)
but the - 0.11% (6)
doesn’t have - 0.11% (6)
from disc - 0.11% (6)
to make - 0.11% (6)
* vec4(position, - 0.11% (6)
to change - 0.11% (6)
with the - 0.11% (6)
vec4(position, 1.0)) - 0.11% (6)
instead of - 0.11% (6)
to work - 0.11% (6)
to write - 0.11% (6)
the terrain - 0.11% (6)
want to - 0.11% (6)
but it - 0.09% (5)
user interface - 0.09% (5)
i want - 0.09% (5)
have to - 0.09% (5)
such a - 0.09% (5)
frame rate - 0.09% (5)
as the - 0.09% (5)
be able - 0.09% (5)
it also - 0.09% (5)
by reference - 0.09% (5)
work on - 0.09% (5)
the data - 0.09% (5)
when the - 0.09% (5)
mac and - 0.09% (5)
or that - 0.09% (5)
when i - 0.09% (5)
the image - 0.09% (5)
(1) may - 0.08% (4)
i can’t - 0.08% (4)
2014 (1) - 0.08% (4)
for example - 0.08% (4)
and it - 0.08% (4)
i decide - 0.08% (4)
because it - 0.08% (4)
from the - 0.08% (4)
2015 (1) - 0.08% (4)
as well - 0.08% (4)
if you - 0.08% (4)
cross platform - 0.08% (4)
on osx - 0.08% (4)
the beta - 0.08% (4)
bunch of - 0.08% (4)
the entire - 0.08% (4)
that can - 0.08% (4)
can be - 0.08% (4)
2014 (2) - 0.08% (4)
vec4(inputposition, 1.0)) - 0.08% (4)
* vec4(inputposition, - 0.08% (4)
going to - 0.08% (4)
a bunch - 0.08% (4)
things i - 0.08% (4)
so the - 0.08% (4)
my game - 0.08% (4)
i just - 0.08% (4)
so that - 0.08% (4)
back end - 0.08% (4)
is that - 0.08% (4)
the serialize - 0.08% (4)
to support - 0.08% (4)
the same - 0.08% (4)
from disc. - 0.08% (4)
with it - 0.06% (3)
out to - 0.06% (3)
the frame - 0.06% (3)
back to - 0.06% (3)
have an - 0.06% (3)
enough to - 0.06% (3)
then i - 0.06% (3)
to add - 0.06% (3)
would be - 0.06% (3)
the models - 0.06% (3)
next game - 0.06% (3)
i have - 0.06% (3)
to clean - 0.06% (3)
list of - 0.06% (3)
a game - 0.06% (3)
to render - 0.06% (3)
that doesn’t - 0.06% (3)
up the - 0.06% (3)
wanted to - 0.06% (3)
things that - 0.06% (3)
of detail - 0.06% (3)
i’m not - 0.06% (3)
times i - 0.06% (3)
in banished - 0.06% (3)
move the - 0.06% (3)
and linux, - 0.06% (3)
code for - 0.06% (3)
is really - 0.06% (3)
pack file - 0.06% (3)
requires a - 0.06% (3)
until i - 0.06% (3)
that was - 0.06% (3)
to this - 0.06% (3)
of things - 0.06% (3)
done with - 0.06% (3)
make sure - 0.06% (3)
were implemented - 0.06% (3)
on mac - 0.06% (3)
has on - 0.06% (3)
really cleaned - 0.06% (3)
i changed - 0.06% (3)
the way - 0.06% (3)
i made - 0.06% (3)
can edit - 0.06% (3)
the windows - 0.06% (3)
and audio - 0.06% (3)
loaded from - 0.06% (3)
i decided - 0.06% (3)
to use - 0.06% (3)
cleaned up - 0.06% (3)
new game, - 0.06% (3)
shining rock - 0.06% (3)
a function - 0.06% (3)
my own - 0.06% (3)
such as - 0.06% (3)
the program - 0.06% (3)
number edit - 0.06% (3)
but it’s - 0.06% (3)
looks like - 0.06% (3)
i could - 0.06% (3)
shouldn’t be - 0.06% (3)
the function - 0.06% (3)
engine. i - 0.06% (3)
property editor - 0.06% (3)
so what - 0.06% (3)
names, types, - 0.06% (3)
the variable - 0.06% (3)
into the - 0.06% (3)
(2) june - 0.06% (3)
of other - 0.06% (3)
that would - 0.06% (3)
of code - 0.06% (3)
a while - 0.06% (3)
banished i - 0.06% (3)
the user - 0.06% (3)
or some - 0.06% (3)
the serializer - 0.06% (3)
2016 (1) - 0.06% (3)
in and - 0.06% (3)
value in - 0.06% (3)
on windows - 0.06% (3)
changes to - 0.06% (3)
that you - 0.06% (3)
to see - 0.06% (3)
game code - 0.06% (3)
and then - 0.06% (3)
console games - 0.06% (3)
rock software - 0.06% (3)
2012 (1) - 0.06% (3)
making the - 0.06% (3)
game won’t - 0.06% (3)
2012 (2) - 0.06% (3)
getting the - 0.06% (3)
there’s a - 0.06% (3)
a parameter - 0.06% (3)
editor for - 0.06% (3)
see the - 0.04% (2)
(2) april - 0.04% (2)
just about - 0.04% (2)
strategy game - 0.04% (2)
a good - 0.04% (2)
a large - 0.04% (2)
all this - 0.04% (2)
fixed a - 0.04% (2)
– fixed - 0.04% (2)
down a - 0.04% (2)
source files - 0.04% (2)
2015 (2) - 0.04% (2)
older articles - 0.04% (2)
in place - 0.04% (2)
making this - 0.04% (2)
(1) february - 0.04% (2)
(1) august - 0.04% (2)
2013 (5) - 0.04% (2)
2013 (6) - 0.04% (2)
2013 (2) - 0.04% (2)
ready for - 0.04% (2)
one day - 0.04% (2)
good to - 0.04% (2)
thought of - 0.04% (2)
its own - 0.04% (2)
and my - 0.04% (2)
2012 (4) - 0.04% (2)
back in - 0.04% (2)
2011 (1) - 0.04% (2)
about it - 0.04% (2)
decided to - 0.04% (2)
and see - 0.04% (2)
the conference - 0.04% (2)
2013 (3) - 0.04% (2)
a single - 0.04% (2)
2014 (4) - 0.04% (2)
code get - 0.04% (2)
made me - 0.04% (2)
at this - 0.04% (2)
my code - 0.04% (2)
here’s the - 0.04% (2)
over and - 0.04% (2)
the gpu - 0.04% (2)
because it’s - 0.04% (2)
remove the - 0.04% (2)
made so - 0.04% (2)
rate is - 0.04% (2)
you pass - 0.04% (2)
by value, - 0.04% (2)
with animated - 0.04% (2)
ways to - 0.04% (2)
weight, boneconstants - 0.04% (2)
code was - 0.04% (2)
vec4(position, 1.0))); - 0.04% (2)
weight.x + - 0.04% (2)
(gc.worldtoprojection * - 0.04% (2)
gl_position = - 0.04% (2)
weight.z + - 0.04% (2)
main() { - 0.04% (2)
vec3 position - 0.04% (2)
= (gc.worldtoprojection - 0.04% (2)
* (tc.transform - 0.04% (2)
about a - 0.04% (2)
so here’s - 0.04% (2)
by reference. - 0.04% (2)
it from - 0.04% (2)
int4 index, - 0.04% (2)
thing i - 0.04% (2)
you need - 0.04% (2)
doing all - 0.04% (2)
to working - 0.04% (2)
as most - 0.04% (2)
to inline - 0.04% (2)
they were - 0.04% (2)
float3 skinposition(float3 - 0.04% (2)
boneconstants bc) - 0.04% (2)
float4 weight, - 0.04% (2)
an update - 0.04% (2)
the compiler - 0.04% (2)
skinposition(float3 position, - 0.04% (2)
from a - 0.04% (2)
inline float3 - 0.04% (2)
like this: - 0.04% (2)
game will - 0.04% (2)
code. so - 0.04% (2)
into this - 0.04% (2)
limits, and - 0.04% (2)
bone transformations - 0.04% (2)
few months - 0.04% (2)
any time - 0.04% (2)
i started - 0.04% (2)
game level - 0.04% (2)
took a - 0.04% (2)
properties of - 0.04% (2)
it can - 0.04% (2)
a long - 0.04% (2)
the serialization - 0.04% (2)
but that - 0.04% (2)
the property - 0.04% (2)
bit of - 0.04% (2)
change them - 0.04% (2)
still a - 0.04% (2)
the values - 0.04% (2)
serialization system - 0.04% (2)
changes the - 0.04% (2)
combo boxes - 0.04% (2)
check boxes - 0.04% (2)
properties, and - 0.04% (2)
to test - 0.04% (2)
not have - 0.04% (2)
you have - 0.04% (2)
comments february - 0.04% (2)
this build - 0.04% (2)
new mod - 0.04% (2)
won’t change - 0.04% (2)
base game - 0.04% (2)
steam. if - 0.04% (2)
work with - 0.04% (2)
flags and - 0.04% (2)
limits and - 0.04% (2)
the resource - 0.04% (2)
know how - 0.04% (2)
let me - 0.04% (2)
limit on - 0.04% (2)
windows that - 0.04% (2)
needed so - 0.04% (2)
don’t have - 0.04% (2)
while the - 0.04% (2)
which is - 0.04% (2)
some code - 0.04% (2)
type reflection - 0.04% (2)
that is - 0.04% (2)
to edit - 0.04% (2)
generation code - 0.04% (2)
so i’ve - 0.04% (2)
an editor - 0.04% (2)
types, and - 0.04% (2)
game, i - 0.04% (2)
time to - 0.04% (2)
the editor - 0.04% (2)
making console - 0.04% (2)
this was - 0.04% (2)
write an - 0.04% (2)
that defines - 0.04% (2)
is created - 0.04% (2)
code, i - 0.04% (2)
the imagebuffer - 0.04% (2)
to come - 0.04% (2)
come from - 0.04% (2)
and when - 0.04% (2)
could be - 0.04% (2)
of data - 0.04% (2)
to and - 0.04% (2)
clamp; addressmode - 0.04% (2)
data to - 0.04% (2)
the c++ - 0.04% (2)
way. it - 0.04% (2)
i wrote - 0.04% (2)
text mode - 0.04% (2)
disc. it - 0.04% (2)
and from - 0.04% (2)
running on - 0.04% (2)
on new - 0.04% (2)
ton of - 0.04% (2)
loadable library - 0.04% (2)
end up - 0.04% (2)
i would - 0.04% (2)
the current - 0.04% (2)
can’t do - 0.04% (2)
shader model - 0.04% (2)
back ends - 0.04% (2)
a dynamically - 0.04% (2)
code a - 0.04% (2)
opengl code - 0.04% (2)
data that - 0.04% (2)
wouldn’t have - 0.04% (2)
to keep - 0.04% (2)
my changes - 0.04% (2)
the other - 0.04% (2)
some other - 0.04% (2)
dynamically loadable - 0.04% (2)
have been - 0.04% (2)
class for - 0.04% (2)
to fix - 0.04% (2)
a little - 0.04% (2)
3 texture - 0.04% (2)
changed the - 0.04% (2)
next i - 0.04% (2)
one in - 0.04% (2)
it has - 0.04% (2)
game. a - 0.04% (2)
the object - 0.04% (2)
and have - 0.04% (2)
nice to - 0.04% (2)
of banished - 0.04% (2)
also removed - 0.04% (2)
this change - 0.04% (2)
thinking about - 0.04% (2)
well as - 0.04% (2)
more than - 0.04% (2)
having the - 0.04% (2)
the horizon - 0.04% (2)
way to - 0.04% (2)
all the - 0.04% (2)
terrain that - 0.04% (2)
is required - 0.04% (2)
the cpu - 0.04% (2)
i still - 0.04% (2)
with some - 0.04% (2)
the moment - 0.04% (2)
and at - 0.04% (2)
terrain with - 0.04% (2)
in banished, - 0.04% (2)
require a - 0.04% (2)
new games - 0.04% (2)
terrain and - 0.04% (2)
terrain generation - 0.04% (2)
of change - 0.04% (2)
a problem - 0.04% (2)
wasn’t a - 0.04% (2)
while i - 0.04% (2)
support the - 0.04% (2)
one of - 0.04% (2)
up and - 0.04% (2)
start a - 0.04% (2)
the text - 0.04% (2)
i wanted - 0.04% (2)
windows machine - 0.04% (2)
the osx/linux - 0.04% (2)
on. and - 0.04% (2)
edit data - 0.04% (2)
debug a - 0.04% (2)
as they - 0.04% (2)
them on - 0.04% (2)
new code - 0.04% (2)
* vec4(position, 1.0)) - 0.11% (6)
be able to - 0.09% (5)
mac and linux - 0.09% (5)
to be able - 0.08% (4)
vec4(position, 1.0)) * - 0.08% (4)
my game engine - 0.08% (4)
i need to - 0.08% (4)
* vec4(inputposition, 1.0)) - 0.08% (4)
vec4(inputposition, 1.0)) * - 0.08% (4)
doesn’t have a - 0.08% (4)
i want to - 0.06% (3)
the frame rate - 0.06% (3)
a new game, - 0.06% (3)
to write a - 0.06% (3)
here’s a new - 0.06% (3)
and linux, i - 0.04% (2)
inline float3 skinposition(float3 - 0.04% (2)
collision, and audio - 0.04% (2)
– fixed a - 0.04% (2)
i don’t want - 0.04% (2)
i wanted to - 0.04% (2)
work on an - 0.04% (2)
base game won’t - 0.04% (2)
there’s a new - 0.04% (2)
steam. if you - 0.04% (2)
to a function - 0.04% (2)
void main() { - 0.04% (2)
looks like this - 0.04% (2)
to the variable - 0.04% (2)
(gc.worldtoprojection * (tc.transform - 0.04% (2)
* vec4(position, 1.0))); - 0.04% (2)
boneconstants bc) {...} - 0.04% (2)
= (gc.worldtoprojection * - 0.04% (2)
code. so i - 0.04% (2)
changes to the - 0.04% (2)
don’t want to - 0.04% (2)
when you pass - 0.04% (2)
a parameter by - 0.04% (2)
pass a parameter - 0.04% (2)
need to change - 0.04% (2)
used to work - 0.04% (2)
of the new - 0.04% (2)
been working on - 0.04% (2)
what i need - 0.04% (2)
is that the - 0.04% (2)
= clamp; addressmode - 0.04% (2)
to and from - 0.04% (2)
i don’t have - 0.04% (2)
has a lot - 0.04% (2)
that doesn’t have - 0.04% (2)
let me know - 0.04% (2)
you need to - 0.04% (2)
game won’t change - 0.04% (2)
me know how - 0.04% (2)
the game code - 0.04% (2)
level of detail - 0.04% (2)
i changed the - 0.04% (2)
in the same - 0.04% (2)
to the horizon - 0.04% (2)
a terrain that - 0.04% (2)
since i had - 0.04% (2)
– make sure - 0.04% (2)
i was going - 0.04% (2)
so while i - 0.04% (2)
i decided to - 0.04% (2)
been thinking about - 0.04% (2)
a dynamically loadable - 0.04% (2)
osx and linux - 0.04% (2)
that was used - 0.04% (2)
cleaned up the - 0.04% (2)
but the game - 0.04% (2)
i used to - 0.04% (2)

Here you can find chart of all your popular one, two and three word phrases. Google and others search engines means your page is about words you use frequently.

Copyright © 2015-2016 hupso.pl. All rights reserved. FB | +G | Twitter

Hupso.pl jest serwisem internetowym, w którym jednym kliknieciem możesz szybko i łatwo sprawdź stronę www pod kątem SEO. Oferujemy darmowe pozycjonowanie stron internetowych oraz wycena domen i stron internetowych. Prowadzimy ranking polskich stron internetowych oraz ranking stron alexa.