0
Under review

Control on reflection contribution (locally change reflection intensity)

Alon Tako 9 year бұрын updated by Freya Holmér (Developer) 9 year бұрын 5

Hey,


I've been looking for a way to control the reflection contribution within a shader. Reflection intensity can only be changed in Unity's "Lighting" screen, but I'm trying to construct a shader which can eliminate the reflection contribution locally based on a mask.


I thought of implementing Skyshop which would override Unity's reflection system, and then insert the mask through there, but that would require a lot of infrastructure work on our project.


Right now I'm adding my reversed map to my roughness contribution, leading to everything that shouldn't have any reflection contribution to show up black, which is what I'm looking for - but I know the values themselves are still there, and I'd prefer it I could reliably mask them out.

Unless there's no mathematical difference? which is beyond my expertise...

Under review

You can use specular ambient occlusion to mask out indirect reflections at least, but I presume you want to mask the direct specular reflections?

Yes, for this specific purpose I'm looking for a way to eliminate ALL contributions from the shader and dip it to black/white/any other color, outputting a perfectly flat result with the chosen color.


I'm making a shader that will mask out shading contributions based on world position, for example to show everything below a certain depth as black/atmosphere color.

It's not really possible with PBR, but it's possible without PBR, in which case you'd simply multiply the specularity with your mask

Is this something that could be added in a future version?

So far I'm getting by pretty well with overblowing the roughness.

+1

Possibly, yeah. Perhaps a way to toggle whether or not AO should affect direct light in addition to indirect light