Bright Engine v0.1.3b Released – Instanced Rendering

July 31, 2018
TABLE OF CONTENTS

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!

Home » News » Patch Notes » Bright Engine v0.1.3b Released – Instanced Rendering
Bright Engine 2022 R3 Released – Performance & Optimisation

Bright Engine 2022 R3 Released – Performance & Optimisation

Continuing on from the upgrades introduced in R2, the engineering team have been redesigning major parts of Bright Engine’s rendering system. Plenty of redundant code has been removed, and significant chunks of the CPU-sided code have been rewritten to be both more memory efficient and reduce GPU idling.

Bright Engine 2022 R2 Released – Performance & Optimisation

Bright Engine 2022 R2 Released – Performance & Optimisation

It’s been two months of an architectural overhaul for the Bright Engine render pipeline. The engineering team have been making substantial changes to how the engine draws the scene, resulting in significant performance boosts without loss of graphical fidelity. Let’s dive under the hood to see what’s changed.

Bright Engine 2022 R1 Released – UI & Resource Management

Bright Engine 2022 R1 Released – UI & Resource Management

After months of programming, the time has come again to show off what our engineering team has been up to. A lot of under-the-hood architecture has been rewritten, drastically reducing memory usage and improving frame rate. Meanwhile, a brand new UI system and editor have emerged. This is more of a technical update than a visual, so pretty pictures will make a return next time.