Over the past month the development team have been hard at work redesigning a lot of the core systems to improve performance. The bulk of it is still unfinished but so far we’ve already seen large leaps in performance and sizable drops in memory usage, so it’s exciting to see how much more speed we can push out of Bright Engine!
Despite this update primarily aimed at reducing the draw time per frame, we did spend a good chunk of the past month further developing the terrain system. We are happy to announce that the engine now allows for users to create blank heightmaps within the editor (instead of having to import a heightmap), as well as introducing a full suite of sculpting tools!
The Terrain Sculpting Suite consists of 2 brushes (Square & Circular) with more advanced brushes such as noise & erosion on the way. Each are fully customisable and can be used in conjunction with 7 different tools allowing for near limitless possible terrain designs!
Aside from the Terrain Editing, one of the biggest requests was the ability to upgrade projects to the latest version of the engine so that there weren’t any compatibility errors. Frankly this feature should have been introduced with the first released version of the engine, but this has finally been implemented. Whenever you load a project made on an older version of Bright Engine, it will recognise it and update it accordingly automatically for you, hassle free!
Changes & Improvements
This was the core focus of the v0.1.1 patch and we were able to improve various systems quite drastically. The default shaders have been re-written in a much more efficient manner. This gave a very minor boost however this will solve some more serious problems that would have occurred later down the line, in more complex scenes.
While Instanced Rendering is still yet to be finished, we have laid the groundwork by optimising the data passing between the CPU and GPU, reducing the amount of data flowing through by about 25% while retaining the same results. It didn’t give a noticeable fps increase however, the average CPU usage dropped by about 3.5%!
One of the biggest drains on rendering performance is dynamic lighting with shadows. There is still much work to be done but as an initial start we found an interesting method using geometry shaders to calculate the shadows of a point light in a single pass rather than 6.
Screen Space Ambient occlusion, a very popular post-processing effect to say the least, got a complete rework, streamlining it into a more suitable method for real time rendering. We've added more control over the process and reduced the drag it caused on the system at the same time.
- Fixed bug where Point Light's which casted shadows caused increase in brightness when stacked.
- Fixed bug where Bloom was still being calculated even when it was disabled.
- Fixed bug where adjusting SSAO Blur Radius didn't actually do anything.
- Fixed bug where debugging terrain chunks didn't actually show the chunks.
- Fixed bug where the green Selection Box was affected by Bloom (while cool, it got annoying).
Well, we have been receiving a lot of pressure to finish the terrain editing suite entirely, which to be fair, there is only the painting system left to do so its close to being done. However, the optimisations to Bright so far, have shown that the engine was in dire need of performance patching. We haven’t even scratched the surface of some of the efficiently issues, so instead of focusing on adding new features, we intend to focus purely on further optimisation so that the core of Bright Engine becomes even more stable and accessible to people with older graphics cards.
If you would like to join the testing process of Bright Engine and become a member of our growing community of developers, then just follow the Discord link on the Bright Engine main Page!
All performance tests are performed in the engine demo scene included in the installation.