




🌟 Special thanks to our amazing supporters:
✨ $10 Tier: [Geeks Love Detail]
🌈 $5 Tier: [Benedikt][David Martínez Martí]
Greetings! This update brings rendering performance optimisations to Sipho! These improvements were long overdue. Sipho was started in Global Game Jam 2017 which required various "quick to do" fixes for the game to run, no matter how, just to be done in time. We have re-written many parts of it since then, but we did not re-write rendering because we did not know how we are going to render all those zooids. Since then game has solidified and we have become more confident in our workflow, knowing how things are made-up in the engine and what can be sacrificed for performance. To not get too technical on this post, I am going to be writing up a separate post about current rendering in Sipho. Quick explanation is that we used to render sprites and their outlines one after another. That made CPU talk with GPU for every object on the screen at least twice, each frame. - Render Spike base outline here - says CPU - Okay - replies GPU - Now render Spike base here - Yeah - GPU - Now render Spike tip outline there - steamfacepalm [...] And all this conversation for 20 of your spikes. CPU is usually slow at talking to GPU and one would want to make the CPU bother GPU as little as possible. One of techniques is batching sprite meshes to a single large mesh and rendering that. But our shaders rely on local vertex positions and many additional parameters like health or animation speed. That makes batching sprites in Unity engine hard. Worry not, there is other rendering technique is called instancing. It takes one mesh and tells GPU do render it multiple times in a single "sentence": - Render these 20 Spike outlines, here is a list of positions and parameters for each one - confidently says CPU - You got it - replies GPU This has improved Sipho rendering performance on CPU by about two times. If GPU does not support instancing, it will fall back to old system of having consecutive calls for each image. Worst case scenario for this type of rendering is many different sprites being rendered at once. Imagine Frakir with about 500 unique zooids just to get back to where we were with performance. We would love to have that many unique zooids! Oh and we had a sneak update few weeks ago. It had hot-fixes for our input system changes. Check out our history of changes for these versions:
[ 6081 ]
[ 1481 ]
[ 2067 ]