However, I seem to be out of luck when it comes to making this shader work in PBR. How do I measure light intensity when all I have is a bsdf?
Any ideas?
Any ideas?
anamous
How would an energy conserving shader be approached in vex/vops etc? I have an idea involving using the reflected light vop to get the amount of incoming light then doing some math to distribute that amount among the shading components (diffuse, reflection, transmission, perhaps sss).

. in practical terms, energy conservation means less of the “waaay overbright” metallic and glass objects that normally have to be painstakingly balanced against the more diffuse objects in a scene (mostly by tuning down reflections).anamous
this means that the kx constants that are used as multipliers in you code snippet would have to be variant
anamous
and depending on a procedure (get direct reflection, get direct transmission, get scattering, and finally get indirect reflection) and using them in that order, each dictating the multiplier for the next one. the most important factor is the amount of incoming energy that these components get to share. so if the surface is a full mirror, the direct reflection component uses almost all of the incoming energy, leaving little to nothing as multipliers for the other components.

anamousHeh. I think it went well, thanks. At the very least, the slides might be useful to some people… I hope
BTW, how was your spectral mantra talk? :wink:
– SESI will be posting the stuff up sometime soon I think.
anamous
I was thinking that since most reflecting materials utilize a fresnel coeff, maybe I could just primitively use that as a multiplier for the different components. so if there's a base lambert and a specular reflection on top, I would use kr as multiplier for the specular and (1-kr) as multiplier for the Lambert BSDF.

1-kr), but its contribution is additional to whatever is going on at the surface with phong/lambert.
I've tried several different things over time, and some of them look pretty convincing, but I'm in no way qualified to say whether any of it is physically valid, or even plausible. Fresnel and I have been fighting for a while now… and I always loose! :shock:
anamousAgreed – that's kind'a what I use too. Unfortunately it doesn't answer you initial question: is it energy conserving? – my guess is that it's probably close to being energy conserving but not guaranteed.
fresnel weighting is definitely better than simply combining the two components - see attached sample.
anamousYeah, the results of two distributions get added – at least that's how I think of it.
also, what exactly happens when I sum two BSDFs? is the result of each calculation added or something else? interesting to know
anamousThanks!
BTW your spectral Mantra talk is fantastic, thanks for sharing, very much appreciated!