After the success of eradicating all the known bugs that survived the World Panel update, we have spent the last few weeks working on a more improved back-end system. Instanced Rendering. Through clever use of CPU to GPU memory batching, the total draw calls have drastically been reduced, resulting in a much more efficient rendering pipeline. We’ve also thrown in some new Particle features as well as a slight improvement to the UI.
New Features
Instanced Rendering
The biggest and most exciting development for this update is the anticipated Instance Rendering system. Draw calls are the bane of most performance problems in both single and multiplayer games. While graphics cards are constantly getting better and faster, they still have a fundamental flaw which cannot be avoided. The instructions telling them when and what data to draw come from the CPU, and it’s the process of sending these signals back and forth that is the problem. While rendering a field of grass with 100,000’s blades of grass would be a piece of cake for a modern GPU, sending 100,000 signals back and forth is very slow!
This is where instancing comes in, when models have the same mesh data, there is no point sending the data to the GPU for each duplicate object since it never changes, so Bright simply doesn’t do it anymore. Instead, the data from the first model is stored and then just drawn over and over again in different positions in the scene. And this is all done Automatically. Users will not have to set up any complicated systems whatsoever as it’s all done for you.
To clearly explain why this process is so awesome, here is an example: Let’s say you have 10 barrels in a scene. In previous versions, the engine would draw them one by one, sending a signal each time, totalling 10 draw calls. Now, Bright can identify duplicated objects and stores the data of the first barrel and keeps it for later. This allows all 10 barrels to be drawn in 1 draw call. That’s a 90% efficiency boost!
Profiler
This is all happening under the hood, of course, so to make sure users can clearly see what the engine is doing, we’ve added some additional information as to the number of draw calls in each render passes.
Changes & Improvements
Particle Editor
Upon community request, we’ve revamped the particle editor UI once more and think it’s now in a much cleaner and better place. While working in that portion of the engine, we also added a new Orbit setting to allow for some very cool spiral effects and optimised data passing within the Particle Editor for more efficiency.
Editor UI
The Editor got a small UI tweak as well, with some newer, cleaner icons for the toolbar. We’ve also added a “Bypass Fog” option to disable rendering the fog effect for easier long-distance editing. Dynamic Lights now have a Shadow Mod option just like Sun’s to allow for control over shadow strength, and we added a new setting for Weather Layers, which allows you to set a cool-down period between triggers to solve the problem where something like rain would stop and then immediately start again by chance (even though the probability of this happening before was low)
Bug Fixes
World Editor
- Fixed a bug where Occlusion checking was still occurring for models which were beyond their max render distance.
- Fixed a bug where Point Lights were still rendering shadows beyond their max render range.
- Fixed a bug where selecting a node in the hierarchy panel displayed a fire icon.
- Fixed a bug where the terrain was sometimes not drawn correctly in the SSAO pass leading to some strange visual errors.
- Fixed a bug where particles didn’t apply colour correctly in the Particle Editor, making them invisible.
- Fixed a bug where colour values for particles were not being correctly stored in the emitters.dat archive file.
- Fixed a bug where creating a new emitter resulted in incorrect data being fed to the shader until a restart of the particle editor.
- Fixed a bug where fog on the terrain would break whenever there was an active weather layer.
- Fixed a bug where some particle settings were remaining disabled even after timeline mode was turned off.
What’s Next?
As we said before, the 0.1.3 update series wouldn’t be adding many new features but rather improving and optimizing what we already have in place. Thus for the final entry of this series, that’s exactly what we’re going to do. We’ll be introducing interpolated weather and room changes as well as revamping the 3D cursor to use a much more accurate positioning calculation, and of course, another round of performance boosts!