This final entry in the 013 update series has brought some closure to the missing settings of the world panel, with room & weather transitions to give more natural effects. On top of all this we’ve gone and done another performance sweep, optimising what's there, and removing what’s no longer needed, resulting in a much higher fps!
The star of this update is the new Room & Weather Interpolation systems. Instead of simply switching settings when change rooms, there is a transition area set by the user for each room placement which defines the area of which the settings gradually change. This creates a much more natural blending effect when interacting with your world while simultaneously removing the horrible pop-in effect.
Another new introduction which was previously not planned is the new Light Flickering system! You can now make a much wider variety of lighting effects instead of just a constant light source. Maybe you need a slow fading in and out effect or a fast flashing light caused by electric sparks, it’s all possible now!
Last thing on the new features list is not really a new feature but rather a complete overhaul of an old broken one. An Undo system is key to world building. Being able to backtrack on unwanted progress allows for a more fluid workflow and experimentation within the scene. This system had been broken for quite some time but now works like a charm.
Currently it is restricted to only work with changes made to Model, Lights and Emitters. This is because we want our testers to find any problems that may exist before taking it engine wide.
Changes & Improvements
Here is where most of the effort was assigned for this update. We did a complete sweep through the engines shaders and found several areas which we’re being calculated multiple times per frame despite the fact it only needed to be done once:
- Optimised Various minor aspects to the PBR Shader removing more branches.
- Optimised LOD fading algorithm to prevent calculation when its not needed.
- Optimised Skybox Blending algorithm to prevent unnecessary additional calculation.
- Optimised Fog Blending algorithm to prevent unnecessary additional calculation.
- Optimised Color Modification algorithm to prevent unnecessary additional calculation.
- Optimised Bloom algorithm to prevent unnecessary additional calculation
Putting all these improvements together saw a huge improvement in performance on the GPU as well as a minor reduction of cpu usage, resulting in a drastic increase in frame rate!
Tested on an Intel i7 3770k processor.
Tested on NVIDIA GT 740 to compare performance with an older card.
But aside from improvements to performance, we also did some additional tweaking of existing systems. Particles now have a new setting in place that allows you to define whether or not they should be drawn into the bloom pass, to give an extra glow effect. In previous versions this was on by default which was great for stuff like magic effects, not so much for weather. In fact a common problem was glow in the dark snow! In any case you now have the option to enable or disable this effect for each individual particle for each Emitter.
Lastly, upon constant request (and rightfully so) by the community, the 3D Cursor has had a complete rework. Originally the offset translation was calculated based on Mouse movement horizontally for X and Z axis transformation and vertically for the Y axis. This worked great so long as you were facing the 3D cursor from the right angle, otherwise it had a tendency to start moving things in the opposite direction to what the mouse was doing. Not anymore! We’ve completely scrapped this method and replaced it with the far more accurate and more optimised Projected Plane Intersection Method (nerdy math stuff). The cursor reacts exactly how you would expect it to with no annoying random movement!
- Fixed bug where adjusting the orbit value of a particle didn't update until after another setting was changed.
- Fixed bug where Ambient Occlusion Baked Textures were being distorted by Parallax Occlusion.
- Fixed bug where Emission Baked Textures were being distorted by Parallax Occlusion.
- Fixed bug where the Engine Exit button didn't work.
- Fixed bug where switching zones would sometimes cause a crash.
- Fixed bug where switching zones would cause the Shadow and AO passes to skip drawing some models in the scene.
- Fixed bug where closing a project did not clear the data correctly.
- Fixed bug where clicking on a drop down menu item triggers a mouse click within the work space, causing unwanted selections.
- Fixed bug where Emitters and clouds did not render behind Room Placement Volumes.
- Fixed bug where vertical and horizontal bloom methods were being calculated twice per frame instead of once.
- Fixed bug where Emitters were being drawn into the Bloom Pass creating unwanted effect.
- Fixed bug where weather being triggered inside a room transition zone caused a crash.
- Fixed bug where weather Emitters did not render behind Room placement Volumes.
- Fixed bug where duplicating a lamp or emitter caused some of the data not being copied correctly to the new object.
- Fixed bug where bounding boxes weren't drawing correctly resulting in visual errors in the Occlusion Culling System.
- Fixed bug where undoing or redoing an action caused the Shadow and SSAO maps to fall out of line causing visual artefacts.
- Fixed bug where undoing an action would not revert back to the original state but rather one action above the original state.
- Fixed bug where creating a new project would result in the wrong version being stored in the data files causing chaos when reloading the project.
This final update brought the conclusion of the 013 series and we are proud to know that we achieved all our targets for the series. Developers on older GPU’s can now run the engine on a smooth 37-40 fps as opposed to the 10-15 fps from before making the experience that much better. We are far from done with performance and optimisation but the time has now come to refocus efforts on to a lot of new systems.
The 014 series is all about terrain! While Bright does have a basic terrain system already in place, we are going to be revamping the whole thing. We’re going to fix the clunky sculpting, introduce painting tools, tessellation, and the long awaited model brush system for ultra fast environment building!