Wednesday, 15 November 2023

Thoughts on PBR

One of the big issues that had been holding me back from seriously updating my store both in SL and Kitely is the looming PBR update.

PBR itself is an exciting update that I am looking forward to playing with one it hits Opensim. However, I do also foresee some issues. 

As Adobe defines it - "Physically based rendering (PBR), sometimes known as physically based shading (PBS), is a method of shading and rendering that provides a more accurate representation of how light interacts with material properties. Depending on which aspect of the modelling workflow is being discussed, PBS is usually specific to shading concepts while PBR refers to rendering and lighting. Both terms describe the process of representing assets from a physically accurate standpoint."

You can read more here - Adobe Official Site

Image from Adobe













Currently in SL/OS, we tend to "bake" lighting detail into our colour maps, and then shade and highlight them further with Normal and Specular maps if desired. We also fairly recently (a few years ago I think) got the ability to use Emissive (glow) maps.

However with PBR, correct practice is to make your colour/diffuse maps with only colour and noise information. All lighting and shading should be handled by the new PBR material types. 

To illustrate what I mean in a more visual way, here is a quick example taken from my new Sim Surround kits.


In the above example, all the maps are baked into the final texture. This is the conventional type of baking we are familiar with. Normally, this texture will go in our "colour/diffuse" slot inworld. We can then emphasise our highlights/specularity and details/shading further with Normal and Specular maps. 

This creates a weird semi-dynamic lighting effect where some of the texture information is reactive to environmental light, while other light information is fixed and unmovable.


This example shows what is conventionally required by PBR in the diffuse channel. As you can see, ONLY colour information is included. The rest of the work is done by other maps. This creates lighting which is truly dynamic and far closer to reality. 


The problem for us in SL/OS is that this technique handles light in a totally different way to how we are used to. So a "pre-PBR" textured object placed next to a new PBR textured object side-by-side will just look "wrong". They will look visually incongruent as the older object has baked in/fixed lighting information and the new PBR texture handles light in a more dynamic way.

Many creators will be using PBR textures already to texture models. Just when it comes to exporting to SL/OS, that lighting information is baked into the colour map, fixing or freezing it in place, whereas PBR gives you dynamic, real time shading that will change as you observe the object under different lighting conditions and angles.

Due to this, PBR is a very "all or nothing" upgrade and I believe it will take a LOOOOOONG time before there is enough content to realistically use nothing but PBR textured props. 

Also, as PBR uses more materials than were previously available to us, alongside the new method of calculating reflections and light. This is naturally going to have a performance cost that comes with it. How "bad" that is remains to be seen and is an unknown quantity at this point.

And to further complicate the matter, it seems we are not getting "true" PBR, but a fudged version of it. I wont go into that too much here, but conventionally, PBR textures consist of:

Colour/Diffuse/Albedo Normal Roughness Metalness Specular Height Opacity Ambient Occlusion Refraction Emissive

And (as I understand from the documentation), in SL/OS we are getting:

Colour+Transparency Occlusion+Roughness+Metalness Emissive Normal

I am pretty disappointed we are not getting height maps. Though I do understand why, as they usually increase polycount and have a physical effect on the mesh itself. In game engines, height is normally baked into the RGB channels of the normal map, which I think should also be the case here. Refraction maps usually refer to objects that light can pass through and the way that bends and distorts the light (water, glass, etc). Open GL (which is what SL and OS is based on) already does not handle water and transparency very well, so I imagine this is omitted due to technical limitations.

If you would like a deep dive on this topic: This article from a23d.co is a great primer.

Having considered this I have decided to push on with releases as normal and release separate PBR updates in the form of standalone products or texture pack addons to existing products. 

Any future Worlds End products that use PBR will be clearly labelled. It is no doubt exciting to finally be able to get more realistic lighting in our favourite virtual world(s), but I have a feeling uptake is going to be slower than expected because for at least a few years simply because filling an entire sim with PBR objects is going to be nearly impossible, and a mix of PBR and non-PBR is going to look very odd. Either wildly expensive (you'll basically have to replace everything in your current inventory unless it gets a PBR update) or very time consuming (ie: doing it all yourself).

No comments:

Post a Comment