Bright Engine v0.1.6a Released – Editor Upgraded

July 19, 2019

After a trying few months, we are finally ready to unveil the next update for Bright Engine. As we stated in our last patch notes, this update series is all about moving the engine away from world editing toward gameplay systems. As such, strap yourself in because we are about to go through a whirlwind of new features, improvements and bug fixes!

New Features

Linux Support

Before we dive into the technical stuff, we’d like to give a shout-out to our awesome community who have helped get Bright Engine working on Linux! While there is yet to be a dedicated build for the Linux platform, if you are using it, you can now play with Bright Engine without having to wait any longer!

Project Launcher

First up, a brand new Project Launcher. Over the last few months, we’ve had growing complaints from the community over having to constantly search for the project file when booting up the engine. These were well-founded since even we, the developers, found it annoying. Thankfully those days are over!

The project launcher allows you to quickly open your projects in an instant while also making the process of creating a new project simpler to understand!

Multi-Object Selection

With a more streamlined project loading system in place, we next turned our attention to world-building tools. While this is not the primary focus of this update series, we noticed a rather glaring problem: You could only select one object at a time. Well, not anymore! Multi-object selection is now fully functional, along with a brand new Grouping System and Rotation Methods!

Transformation Methods

By holding the Shift Key (Default), you can select multiple objects of different types at the same time and perform transformations on them concurrently. To further extend this, enter the Grouping System. This is a method of saving previous selections if the user wishes to, that way, in the future, if they think they might need to edit that specific collection of objects again, they can select the group instead, which will select all the objects for them!

In addition to this, new Rotation methods have been implemented that allow for a more extended transformation toolbox! (This subsequently meant we had to rewrite the code for the 3d cursor and, in doing so, were able to remove 120 lines of code)

There are three rotation methods:

  • Median Point
  • Individual Origins
  • Primary Point

Reflection Probes

We recently introduced Reflection Probes in version 0.1.5b, which were adjusted slightly so that their indicators in the world aren’t so huge anymore while also fixing the weird visual bug where strange shadows from the SSAO pass were still being applied

Shadow Baking

But more importantly, that came with a Baking Suite, which has now been extended to Shadows. You can now Bake your shadows on any light source placed in the world! This has plenty of optimisation opportunities for developers and is completely optional per light source. Meaning that you could have a combination of baked and dynamic shadow light sources!

Waypoints

In terms of bringing the world more alive, enter Waypoints. Waypoints are a method of creating paths for objects to follow, when used in combination with scripting, they allow for all sorts of crazy creations, from NPC’s walking along a road to advanced camera movements in a cutscene!

Each waypoint can be a part of an unlimited amount of paths which any object can follow, switch to or jump off of.

The shape of the paths can be determined by the user, with the options between Linear straight lines, great for mechanical movements for something like a robot, and Bezier, which gives a more natural smooth movement which humans or cameras tend to follow!

Currently, only lights can be attached to paths since this is part one of the waypoint implementations, but by the end of this update series, we intend to have any object capable of using a path. This would include Lights, Models, Cameras, Emitters, Sound Sources, Reflection Probes, Collision Fields and so on.

When developing the waypoint system, we wanted to keep its design compatible with our future scripting update, and therefore a new tool had to be created: The Property Manager.

The Property Manager is a tool which allows you to assign… well… properties to an object. These properties can then be accessed and edited by scripts. An example would be something like a character’s health point. All you would need to do is create a new property set in the Property Manager, add a Property called “Health”, and then assign that property to the object in question, either in the Editor or via a script. It takes about 15 seconds, by our count.

But what has this got to do with Waypoints? Well, objects moving along a path require a speed value which is set via the Property Manager, the advantage of doing this is you could have two objects moving along the same path at different speeds.

Alternatively, you can enable the override speed on the path itself, which will force all objects on the path to move at the set speed.

Colour Picker

Our last new addition to the engine was one to improve user experience, specifically when it came to colour selection. In older versions, you had to manually enter an RGB value each time, which for most wasn’t a problem, but it slows things down. To get around this, we have introduced a proper colour selection tool!

Aside from making colour selection much more visual, you are now able to copy+paste hexadecimal colour codes, as well as use a colour-picking tool that allows you to select a colour from anywhere on your screen, whether it be a colour from the scene you are editing in Bright, or a reference photo you have open on the side!

Changes & Improvements

Light LOD Fade

For those who have been following our progress so far, you may have noticed we like to get our lighting as advanced as possible. After all, so much of modern PBR rendered is dependent on good lighting. So, as usual, we still weren’t happy with our lighting system.

We started out with some basic improvements. Lights now slowly fade out as they reach their maximum render range rather than popping out of existence (which is optional for those who like the pop), and we changed how the colour data was passed on to the GPU, resulting in a small performance boost.

Light Timeline Editor

But those are not the star of the show, for we added something much more special: The Timeline Editor.

Previous versions of the engine had a collection of flickering settings. These allowed for variations in light strength to create a flickering effect for more atmospheric lighting. The Timeline Editor has replaced this system entirely. It actually does the same thing as the older system, the difference, however, is now every light setting can be varied, including colour!

This new tool opens up a whole new collection of design opportunities, and lighting once again has been drastically improved. Despite this, I’m certain in the future we’ll find more ways to improve lighting even more!

Terrain Vertex Painting

Next on the improvement list was Terrain. Our existing terrain painting system is rather decent (we think so anyways), but there were some old-school tools which never made it into the original terrain painting update, specifically Vertex Color Painting. While it’s not a tool used by many, used well and subtly, it can create some really impressive results…. Or you can do what we did and make Repulsion Gel from Portal 2 😛

This vertex painting suite was further extended into the Dynamic foliage system. Using vertex colours, you can add subtle variations in colour across a single foliage layer which adds an extra layer of realism!

Height-Based Blending

But aside from that fun stuff, the texture painting needed more work. We want Bright Engine to be able to create photo-realistic results and terrain in its current form, just couldn’t quite do that, and we pinned it down to one thing: Blending. Up to this point, Terrain has been rendered with linear blending between layers, which, in combination with alpha masks, can create good results. We want great results, so we’ve added an entirely new blending method for you to use if you so wish. Height-Based Blending.

This method takes the data from a height map for each texture layer and uses that to calculate which layer should be on top (unlike linear, where layer 2 is on top of layer 1, layer 3 is on top of layer 2 etc.). The result allows for much more realistic blending results. Effects like sand filling up the cracks between rocks are now completely possible!

But adjusting height map data can be a pain, so we’ve added height modifiers to the settings, which allow you to move layers forcibly on top of each other. If used in conjunction with scripting, effects such as snow or puddle accumulation are now completely possible, and the results look great!

Using brush strength, you can get a nice variation of height throughout your layer, so if you want a specific patch where snow fully covers rocks and another where it doesn’t, that’s perfectly possible as well!

Scene Heirarchy

The last system that got some TLC in this update is the Hierarchy Panel. Up to this point, it was more of a nuisance than a helpful tool, and we think it was due to the fact that it became a clustered mess in complex scenes with thousands of objects. So we gave it a complete makeover!

It’s got a much more fluid interface which fits better with the rest of the editor, as well as a brand new collection of organisational tools! You are now able to create folders within the Hierarchy and organise your objects accordingly. Furthermore, whenever placing objects within the scene, you can select which folder they should be placed in within the hierarchy to automate the process in future.

CPU Performance

In terms of editor performance, despite this not being the primary focus of the update, we did make some improvements. After adding more barrels to the stress test scene, the fps dropped to 43. We tweaked the methods by which data was being accessed and cut the number of CPU cycles, along with altering how Vertex Buffers were being created for dynamic foliage, diagnostic, and instancing render calls. The result was a lovely boost back up to 62 fps!

We were also able to adjust the time of day calculations along with the auto-saving system. All these changes put together amounted to around 400 lines of code being removed and each system subsequently working more efficiently.

Default Skybox

As a final tweak, we updated New Zone creation to have a default skybox set up so new users aren’t met with a black screen and fixed the bug where clouds weren’t being affected by the time of day modifiers

Bug Fixes

World Editor

  • Fixed a bug where particle IDs were not being correctly written to the dat file
  • Fixed various shader bugs where some shaders were unable to compile correctly on AMD cards
  • Fixed a bug where the UI for Reflection Probes was not updating correctly when a state was selected
  • Fixed a bug where Reflection Probes could not be removed from a scene
  • Fixed a bug where deleting an emitter would cause a crash
  • Fixed a bug where the Project Emitters file wasn’t being closed by the Editor after reading, causing a memory leak
  • Fixed a bug where toggling the visibility of certain objects wasn’t being saved
  • Fixed a bug where scaling a Terrain Object with the 3D cursor would cause a crash
  • Fixed a bug where clicking on the Reflection Probe UI components sometimes caused the camera to stop working
  • Fixed a bug where the circle Brush does not fill in the cross, giving wrong results when sculpting and when painting
  • Fixed a bug where circle Brush caused a crash if it was used on the East edge of an Unrotated Terrain Chunk
  • Fixed a bug where changing a terrain texture would not update the Icon box unless the mouse hovered over it
  • Fixed a bug where the weather sunlight colour modifier is incorrectly loaded
  • Fixed a bug where newly created reflection probes are still being fed the texture data of the last reflection probe in the render loop
  • Fixed a bug where a Model which wasn’t casting AO was still being fed incorrect AO data
  • Fixed a bug where reflection probes were receiving incorrect AO data
  • Fixed a bug where the Panels were not being resized correctly when the Editor window was resized.
  • Fixed a bug where the group box order of settings kept being mixed up when selecting different types of objects after each other
  • Fixed a bug where clicking on an item in a drop-down menu would trigger object selection in the scene
  • Fixed a bug where switching off point light shadows sometimes caused weird visual artefacts
  • Fixed a bug where switching off point light shadows would also disable spot light shadows
  • Fixed a bug where performing a right click on the Editor UI while object placement mode was entered caused strange results
  • Fixed a bug where mouse button processes were still being triggered outside the viewport area
  • Fixed a bug where objects would move incredibly quickly when being transformed with Grid Movement Enabled
  • Fixed a bug where the 3D cursor’s position didn’t update when an object was moved via the UI rather than the 3D cursor
  • Fixed a bug where moving a Model using the UI rather than the 3D cursor did not update the position of the object in the SSAO pass giving strange shadow results
  • Fixed a bug where the camera speed and camera view range were inverted
  • Fixed a bug where cancelling a move operation with a Right Click didn’t reset the position of the 3D cursor
  • Fixed a bug where deleting a terrain that was created using a Heightmap and then immediately removing it caused a crash
  • Fixed a bug where creating a new terrain and then closing the editor would cause the terrain to double in size the next time the zone was loaded.

What’s Next?

We have made some excellent progress in this latest update, but the mission continues. We plan on continuing the toolbox beyond world-building. Aside from the continuation of waypoints, audio and cameras are going to be next on the list, along with a complete overhaul for the particle system and some further improvements to post-processing!

Home » News » Patch Notes » Bright Engine v0.1.6a Released – Editor Upgraded
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.