Last update brought about a large overhaul to the rendering architecture of the engine, and with it came a lot of bugs. This update we’ve fixed a plethora of bugs while at the same time, introduced a wide array of upgrades, both in terms of capability as well as performance. UI, Particles, Materials, Audio and Waypoints are just some of the systems which have received incredible and much needed upgrades!
A Huge Thank you to our Patrons! Your contributions make Bright Engine Possible!
Cody Pryor • Massum Zaidi • Mark Makarainen
Changes & Improvements
Last update the structural reconfiguration of the rendering architecture brought about massive improvements in rendering speeds and yet despite this, Bright Engine still felt clunky. While we focused all our attention on the viewport we forgot to address the User Interface which over time has become loaded with new settings and editors which were tacked on in a “bolt-on” fashion. The result is that the UI became slow and messy with inconsistent layouts, slow object selection, and some nasty visual artefacts (especially when scrolling).
We spent over half of this update development time focused on a complete overhaul of the user interface code for the World Editor, Particle Editor and Material Editor to resolve all these issues.
We have completely re-written almost all of the UI code for the world editor, which originally was poorly designed and badly implemented. Naturally this took quite a while and was frankly very tedious work but the results are more than what we could have hoped for. Over 9000 lines of UI code was wiped from existence without removing any functionality, along with a noticeable drop in CPU strain furthering the mission of keeping Bright Engine “lightweight”.
Selecting objects and switching tabs is now instant, with no delay or pause like before. Users of v0.1.7a will know the horror of having to wait almost 10 seconds to switch to the World Tab, well not anymore!
We also redesigned the layout and created a new custom control that innovates the development process by allowing you to simply search for the setting you are looking for, rather than have to scroll down a long list.
As part of the new design, settings are no longer shown in one long scrollable panel, but rather have been broken down into tabs making it significantly easier to find what you are searching for (as well as faster). With the exception of a few properties, scrolling through settings is now completely non-existent
Existing users of the engine, will notice some notable differences in the UI of the Particle Editor. Much like the World Editor, it has received a complete overhaul of its UI code along with improved functionality.
Firstly let's talk about the new saving system. Particles are now saved into their own independent files (like the Material Editor does) rather than one massive database file, giving users more control in terms of project structure, but also saved us from having to deal with a system which had a habit of creating a lot of headaches. The main advantage to this of course, is now you can have multiple particle systems open at once and simply switch between them!
You’ll also notice that, just like the World Editor, all the settings have been organised into Tabs for a much faster and streamlined editing experience
The Material Editor also got a similar beauty treatment with multiple materials being editable at the same time!
Needless to say, we are very happy with the transformation of the Editor’s UI and can’t wait to hear your feedback!
Lets take a step away from UI and start getting into the details of the system upgrades! In reverse order:
The material editor has had small but exciting changes. Most notably the introduction of Comment Boxes!
Using Comment boxes you can organise and label your Material Graphs to make it far easier to understand how your materials function in the future (especially if you are creating complex systems)
Another exciting addition is a brand new node: Time Info Node! This node grants you access to all the relevant time information in your game including the delta time between frames, the elapsed game time, and of course the in-game time.
With this new addition to the node family you can create effects such as a flashing surface or have lights inside a house turn on at night!
A final minor addition is the texture reloading system… kinda important especially when working with incomplete textures!
Continuing in reverse fashion, the Particle editor has also had some fancy new features for even better diversity of effects. There are three new settings which have brought about an entirely new plane (quite literally) of effect possibilities.
- Non-camera Facing Particles allow for better range of effects especially for stuff like magic spells!
- Spawn Rotation allows you to set the rotation in which the particle should spawn if they are not facing the camera
- 3D Axial Spin replaced the original Axial Spin setting. It does the same thing as before, the difference is, you now can spin along the X, and Y axes in addition to the original Z axis spin.
The culmination of these new settings allowed for the creation of this rather snazzy effect within less than 5 minutes!
Under the hood of the Particle Editor, even more work has been done, specifically the introduction of multi-threading for even faster loading times as well as some behind the scenes magic. But more importantly, the groundwork for 3D Mesh Particles has also been laid and so, they too will make an appearance into the Engine in the near future.
Continuing on with Particles, the Weather system is once again functional and working nicely!
On a different topic, some rather important improvements were made to the model importing system which up until now, had been the primary source of annoyance for testers. So the following upgrades have been made which should put these nuisances to bed:
- Unused materials found within the model file are simply ignored
- Any overlapping identical vertices are automatically merged together reducing the number of vertices to draw, subsequently improving rendering speeds
- Vertices are loaded and then tightly packed into a new vertex cashe improving rendering speeds.
- Degenerate faces (faces where 2 of its vertices are in the same position) and orphan vertices (vertices not attached to any other vertices) are simply ignored, improving rendering speeds.
- Vertex indices are now stored inside 32 bit buffers fixing problems surrounding models with more than 85k vertices.
- Any invalid data found within the model file is automatically removed and unloaded from memory.
Now as glorious as these improvements are, their sole purpose is to clean up any mistakes made by lazy 3D modellers who ran out of coffee, and do take up additional loading time. While the increase in loading time is minor, large projects may see it start to add up. The good news is Bright Engine is smart and so will only perform these intensive solutions only when it needs to. Therefore if you want to maintain your old healthy fast loading times, ensure all models are exported correctly!
Audio was introduced back in v0.1.6b last October and only really had a handful of settings at your disposal. Volume, panning and playback speed was about it. We had enough of its bland nature, and now the time has come for more atmospheric effects!
We’ve added a entire suite of audio post processing effects to bring your world to life with over 60 new settings to control effects such as:
- Parametric Equaliser
- Reverb (both standard 2D and 3D geometric bounce reverb!)
But instead of doing a flat implementation, we’ve added override settings to the Room System. These will always take priority when calculating post processing for audio. An example of their use could be, a player enters into a cave, and now the override kicks in which adds an echo to all the footstep sounds.
We also took the liberty of adding a global mute button in the primary toolbar as requested by the community!
The last improvement we made this update was in regards to Waypoints. After some feedback, users were getting annoyed that they had to place their waypoints first and then create the path afterwards. It worked, but it was unnecessary to create that extra step. As a result we’ve addressed the problem by letting you do both at the same time! By holding down the Shift Key while placing waypoints, you’ll also create a path which you can modify afterwards
- Fixed bug where switching to the post processing panel would permanently reduce fps
- Fixed bug where switching to the Post Processing Panel would cause a 5 second delay
- Fixed bug where switching to the Render Panel would permanently reduce fps
- Fixed bug where switching to the Render Panel would cause a 3 second delay
- Fixed bug where hiding Waypoints, Audio, Cameras or Targets didn't save
- Fixed bug where switching to the World Panel would permanently reduce fps
- Fixed bug where switching to the World Panel would cause an 8 second delay
- Fixed bug where the Editor Camera range setting did not load correctly when loading a project
- Fixed bug where editing a skybox with a Room placement selected instead of the Room itself caused a crash
- Fixed bug where editing a fog layer with a Room placement selected instead of the Room itself caused a crash
- Fixed bug where editing a cloud layer with a Room placement selected instead of the Room itself caused a crash
- Fixed bug where editing a weather layer with a Room placement selected instead of the Room itself caused a crash
- Fixed bug where selecting an object didn't load the correct Property Setting
- Fixed bug where selecting a room placement which isn't the first in the list caused a crash
- Fixed bug where removing a room placement did not correctly update the Room Tree
- Fixed bug where deleting a room causes a crash
- Fixed bug where switching a normal map on a terrain layer sometimes caused a crash
- Fixed bug where changing the position, rotation or scale of an object via the UI would not update the 3D cursor in the viewport
- Fixed bug where objects assigned to a waypoint would only use the first path in the list instead of the one assigned to the object
- Fixed bug where deleting a path from a waypoint would cause a crash
- Fixed bug where placing an object before selecting another object in the scene would sometimes cause a crash
- Fixed bug where alpha blending methods set in the Particle Editor were not being correctly applied in the world editor
- Fixed bug where the projection matrix was incorrect for clouds when previewing a camera within the World Editor
- Fixed bug where selection boxes and the 3D cursor were still visible when previewing a camera perspective
- Fixed bug where creating a terrain without selecting a size caused a crash
- Fixed bug where changing the material of a model using the default material would sometimes leave a "ghost" of the old model behind
- Fixed bug where refreshing a material slot with the default material selected caused a crash
- Fixed bug where removing a model from a material did not clear the material data when no other model was using the material (memory leak)
- Fixed bug where meshes were not being correctly removed from materials, if they were the only mesh in the zone using that material
- Fixed bug where changing the texture quality setting in the Render Panel did not affect Materials
- Fixed bug where models continued to cast directional shadows even if directional shadows have been disabled
- Fixed bug where deleting a model would sometimes cause a crash
- Fixed bug where deleting a .dae model would sometimes cause a crash
- Fixed bug where Emitters only displayed their ID in the Hierarchy rather than the ID and their Name
- Fixed bug where Emitters only displayed their ID in the selection box rather than the ID and their Name
- Fixed bug where the Y Translate Axis of the 3D Cursor sometimes did not render
- Fixed bug where Lights which were locked could still be selected via the mouse
- Fixed bug where Emitters which were locked could still be selected via the mouse
- Fixed bug where Reflection Probes which were locked could still be selected via the mouse
- Fixed bug where Audio Objects which were locked could still be selected via the mouse
- Fixed bug where Camera Objects which were locked could still be selected via the mouse
- Fixed bug where Target Objects which were locked could still be selected via the mouse
- Fixed bug where switching to Grid movement caused certain object to become black and white (weird one)
- Fixed bug where changing the material of a model sometimes caused a crash
- Fixed bug where thumbnails for materials were not being removed from memory when they were no longer being used (memory leak)
- Fixed bug where changing the scale of a terrain sometimes caused a crash
- Fixed bug where manually typing values for terrain settings would cause the cursor to reset position after a single key press
- Fixed bug where selecting an object after locking another object would cause the transformation settings to remain disabled
- Fixed bug where weather particles did not correctly render
- Fixed bug where setting the minimum and maximum values for a graph control would corrupt the currently loaded emitter
- Fixed bug where the Particle Editor was not cleaning up temporary files after closing
- Fixed bug where rendering was not correctly paused when the Particle Editor is not in focus and using unnecessary computer resources
- Fixed bug where switching to the Forces tab caused a crash
- Fixed bug where setting the max value value below the min value of a graph editor would cause a crash
- Fixed bug where alpha blending functions for Emitters with multiple particle systems were not being applied correctly
- Fixed bug where the orbital rotation timespan setting was not being loaded correctly and defaulted to 1.0
- Fixed bug where the title of the Blend Color Node was incorrect after loading a material
- Fixed bug where the input label of a node receiving data from a SeperateRGB or SeperateVector node was blank
- Fixed bug where thumbnails were not being unloaded from memory creating a memory leak, as well as random crashes if an attempt was made to open them again
This update was focused primarily on fixing the UI as well as the vast collection of bugs that have existed for far too long. And while it’s nice to celebrate the progress we’ve made, there is simply far more to go! In the next update we will once again be turning out heads back towards rendering to fix the last of the visual bugs introduced with the new architecture, fixing shadows, AO and Subsurface scattering. Furthermore a deeper dive into the mathematics of our lighting calculations will be taken, in an attempt to improve quality as well as performance, amongst other areas of interest. Another goal for v0.1.7c is laying all the groundwork for scripting, as we approach the next series of updates!