Make fallback textures easy
Extrude Ragu
## Background
In the last year, the cost of Gaming hardware like RAM and Graphics Cards has risen dramatically.
At the same time, we have users on older hardware that due to the prohibitive expense are unlikely to upgrade their hardware any time soon and intentionally sticking to non-PBR viewers for better performance.
We can no longer count on people having newer, faster computers in the future. Companies like nvidia are starting to resurrect discontinued lines of older generation graphics cards due to supply issues. The problem seems likely to last several years.
## The Challenge
PBR Materials do not display on non-PBR capable viewers. This means that creators who wish to support these customers should provide fallbacks well into the future. Currently this is quite complex, espescially on things like clothing items with texture changers.
Creators of Clothes, and Hair and many other types of products typically need to make texture-changers. Scripting these to have fallbacks runs into all kinds of technical challenges such as permission issues etc. A customer might also edit their PBR material with an override texture that we do not have permissions to.
## Proposed Solution
Make it easy to declare to the sim that a face should use the PBR Base Color texture as the Blinn-Phong diffuse color via a script.
I propose extending
llSetLinkGLTFOverrides
to haveOVERRIDE_GLTF_AUTO_FALLBACK
which has the following behavior:-eg.
llSetLinkGLTFOverrides( LINK_SET, ALL_SIDES, [OVERRIDE_GLTF_AUTO_FALLBACK, TRUE]);
When set to
TRUE
, a flag is held on the object.- The simulator will immediately set the BlinnPhong diffuse texture and tint to whatever is set on the PBR material, factoring overrides, with the same repeats/rotation etc.
- Whenever the PBR Material changes, the Simulator will check for this flag, and Sync across the new Base Color settings to the Blinn Phong parameters.
It will not check permissions.
When set to
FALSE
(the default behavior), the simulator will no longer automatically sync it across.Log In
AlettaMondragon Resident
I'm quite sure the long-term plan is to remove the BP interface completely once the number of pre-PBR viever logins drops even more, probably not even planning to do the specular extension and some other features for PBR without which it is a huge loss of features already. Not to mention all the bugs that somehow aren't getting fixed, instead they keep pushing new features, most of which are not essential at all, which just create more bugs and function loss as well.
I mean when we have to redo the scaling of materials every time we change the material on a face instead of keeping the previous scale or having the option to save the scale in the material itself, I can imagine what an ugly job the viewer would do with the fallback textures. I rather do it myself, really not that much work.
Peter Stindberg
Or even better: Let the sim calculate a baked fallback texture itself.
Nyx Onyx
Peter Stindberg This would be a cool feature, calculating a baked fallback similar to exporting the 2DView from Substance Painter. I think then it should be explicitly referenced using a bake UUID though, similar to how we reference BOM channels. Might be difficult deciding on the light influence though - the environment map and intensity to use when baking.
Nyx Onyx
I think that when you're already scripting, it's not difficult to extend the behaviour to also set the BP textures. Rather, I'd like the default behaviour to be that if the BP textures aren't set, but the PBR ones are, the Base Color and Normal Map should automatically be used by non-PBR viewers. In other words, be served up to non-PBR viewers as if the BP slots were set.
Extrude Ragu
Nyx Onyx It is not always possible to set fallback textures currently, depending on what PBR Material is applied due to permissions issues that can occur.
Nyx Onyx
Extrude Ragu True, though I still think that it should be the default behaviour to use the PBR Base Colour and Normal if they're not set in BP. I think it's a rare thing to want a plain white to display. Then if you want to avoid this behaviour, you explicitly set these in script or UI according to https://wiki.secondlife.com/wiki/Internal_Textures - no new scripting features needed.