AcademySoftwareFoundation / OpenPBR

Specification and reference implementation for the OpenPBR Surface shading model
Apache License 2.0
407 stars 18 forks source link

For consistency, every section should have a "weight" parameter. #134

Open ZapAndersson opened 9 months ago

ZapAndersson commented 9 months ago

While working on the UI for 3ds max, I realize how inconsistent it feels that everything has a weight, except emission and thin film.

I think everything should have a weight, even though this is just a multiplier in the case of emission and thin film, the UI consistency and the ease of explaining the functionality wins out, IMHO.

Also, since both thin-film thickness and emission luminance quite often have values outside the easily texturable 0-1 range, it is extremely convenient to be able to set e.g. a high luminance value, but then modulate the intensity of the light by a 0-1 weight map, or to set a given thin-film thickness, and modulate the coverage of the thin film with a 0-1 weight map.

The only reason not to have them is parameter count frugality, but if most real-world use cases has users plugging in multiplier nodes in front of these all the time, I feel that feature should be built in.

andre-ilm commented 8 months ago

Edit: Just realised this would have been better said in #76.

I'd like to hear more about the reasoning for weights everywhere. For our internal proprietary shaders we took the opposite approach for a few reasons:

portsmouth commented 8 months ago

Just to note that having a thin_film_weight would I think be a genuine improvement to the model, as currently there is no way to dial the strength of the effect without altering the colors and banding (as the thickness alters those things, as well as the saturation of the color tinting).

It would be trivial to implement (in the spec and in software) as effectively the presence/coverage weight of the thin film layer.