Having a custom deferred renderer in Unity (not the built-in Deferred path) where one of my G-buffers contains material properties for physically-based lighting that is applied in post-process:
R = roughness [0…1]
G = refractive index 1…20 precomputed into f0 [0…1]
B = reflectivity [0…1]
Now I’m wondering, when we already have these 3 surface properties, is there a reasonably plausible heuristic out there that could let me auto-infer the material’s “subsurface-scatterability” (let’s call it SSS-strength) instead of adding another G-buffer channel? For example I’m thinking some materials like plastic and water and skin would have quite a high, yet metallic/stony/wooden etc. much smaller. But I can’t seem to make out any semi-logical “connection” that could translate any combination of the above “RGB” data into a suitable at-shader-runtime-derived “SSS-strength”.
(Ignoring here whether full-screen per-pixel SSS is a good idea perf-wise, I can always switch it off for another 1 or 2 years until hardware catches up a bit but I’m right now still itching to at least implement it and see the looks.)
Now there simply might not be any such connection, but yeah then there might well be. Especially the roughness and refractive index properties do carry some valuable info (for example I use them for fresnel reflections and the B (reflectivity) channel is just an artistic strength-multiplier slider of sorts, cranked up to 1 especially for shiny metals/mirrorglass/etc.)