Bright Engine v0.1.7b Released – Extended Particles, Upgraded UI

June 29, 2020

The last update brought about a large overhaul to the rendering architecture of the engine, and with it came a lot of bugs. In this update, we’ve fixed a plethora of bugs while, at the same time, introducing 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

World Editor UI

The 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 rewritten 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 were 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.

Particle Editor UI

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.

Material Editor UI

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!

Let’s 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!

New Particle Settings

Continuing in reverse fashion, the Particle editor has also had some fancy new features for an 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 a 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 in the Engine in the near future.

Continuing on with Particles, the Weather system is once again functional and working nicely!

3D Model Importing

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 cache, 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, so it 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 FX

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 were about it. We had enough of its bland nature, and now the time has come for more atmospheric effects!

We’ve added an 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!)
  • Gargle
  • Distortion
  • Chorus
  • Echo
  • Flanger

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!

Waypoints & Paths

The last improvement we made in this update was in regard 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.

Bug Fixes

World Editor

  • Fixed a bug where switching to the post-processing panel would permanently reduce fps
  • Fixed a bug where switching to the Post Processing Panel would cause a 5-second delay
  • Fixed a bug where switching to the Render Panel would permanently reduce fps
  • Fixed a bug where switching to the Render Panel would cause a 3-second delay
  • Fixed a bug where hiding Waypoints, Audio, Cameras, or Targets didn’t save
  • Fixed a bug where switching to the World Panel would permanently reduce fps
  • Fixed a bug where switching to the World Panel would cause an 8-second delay
  • Fixed a bug where the Editor Camera range setting did not load correctly when loading a project
  • Fixed a bug where editing a skybox with a Room placement selected instead of the Room itself caused a crash
  • Fixed a bug where editing a fog layer with a Room placement selected instead of the Room itself caused a crash
  • Fixed a bug where editing a cloud layer with a Room placement selected instead of the Room itself caused a crash
  • Fixed a bug where editing a weather layer with a Room placement selected instead of the Room itself caused a crash
  • Fixed a bug where selecting an object didn’t load the correct Property Setting
  • Fixed a bug where selecting a room placement which isn’t the first in the list caused a crash
  • Fixed a bug where removing a room placement did not correctly update the Room Tree
  • Fixed a bug where deleting a room causes a crash
  • Fixed a bug where switching a normal map on a terrain layer sometimes caused a crash
  • Fixed a bug where changing the position, rotation or scale of an object via the UI would not update the 3D cursor in the viewport
  • Fixed a 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 a bug where deleting a path from a waypoint would cause a crash
  • Fixed a bug where placing an object before selecting another object in the scene would sometimes cause a crash
  • Fixed a bug where alpha blending methods set in the Particle Editor were not being correctly applied in the world editor
  • Fixed a bug where the projection matrix was incorrect for clouds when previewing a camera within the World Editor
  • Fixed a bug where selection boxes and the 3D cursor were still visible when previewing a camera perspective
  • Fixed a bug where creating a terrain without selecting a size caused a crash
  • Fixed a bug where changing the material of a model using the default material would sometimes leave a “ghost” of the old model behind
  • Fixed a bug where refreshing a material slot with the default material selected caused a crash
  • Fixed a 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 a bug where meshes were not being correctly removed from materials if they were the only mesh in the zone using that material
  • Fixed a bug where changing the texture quality setting in the Render Panel did not affect Materials
  • Fixed a bug where models continued to cast directional shadows even if directional shadows have been disabled
  • Fixed a bug where deleting a model would sometimes cause a crash
  • Fixed a bug where deleting a .dae model would sometimes cause a crash
  • Fixed a bug where Emitters only displayed their ID in the Hierarchy rather than the ID and their Name
  • Fixed a bug where Emitters only displayed their ID in the selection box rather than the ID and their Name
  • Fixed a bug where the Y Translate Axis of the 3D Cursor sometimes did not render
  • Fixed a bug where Lights which were locked could still be selected via the mouse
  • Fixed a bug where Emitters which were locked could still be selected via the mouse
  • Fixed a bug where Reflection Probes which were locked could still be selected via the mouse
  • Fixed a bug where Audio Objects which were locked could still be selected via the mouse
  • Fixed a bug where Camera Objects which were locked could still be selected via the mouse
  • Fixed a bug where Target Objects which were locked could still be selected via the mouse
  • Fixed a bug where switching to Grid movement caused the certain object to become black and white (weird one)
  • Fixed a bug where changing the material of a model sometimes caused a crash
  • Fixed a bug where thumbnails for materials were not being removed from memory when they were no longer being used (memory leak)
  • Fixed a bug where changing the scale of a terrain sometimes caused a crash
  • Fixed a bug where manually typing values for terrain settings would cause the cursor to reset position after a single key press
  • Fixed a bug where selecting an object after locking another object would cause the transformation settings to remain disabled
  • Fixed a bug where weather particles did not correctly render

Particle Editor

  • Fixed a bug where setting the minimum and maximum values for a graph control would corrupt the currently loaded emitter
  • Fixed a bug where the Particle Editor was not cleaning up temporary files after closing
  • Fixed a bug where rendering was not correctly paused when the Particle Editor is not in focus and using unnecessary computer resources
  • Fixed a bug where switching to the Forces tab caused a crash
  • Fixed a bug where setting the max value below the min value of a graph editor would cause a crash
  • Fixed a bug where alpha blending functions for Emitters with multiple particle systems were not being applied correctly
  • Fixed a bug where the orbital rotation timespan setting was not being loaded correctly and defaulted to 1.0

Material Editor

  • Fixed a bug where the title of the Blend Color Node was incorrect after loading a material
  • Fixed a bug where the input label of a node receiving data from a SeperateRGB or SeperateVector node was blank
  • Fixed a 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

What’s Next?

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!

Home » News » Patch Notes » Bright Engine v0.1.7b Released – Extended Particles, Upgraded UI
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.