BentNormal和AO
BentNormal作⽤有两个:
第⼀个参与计算GBuffer.DiffuseIndirectSampleOcclusion. 他的命名就说明只和Diffuse有关。
这个值作⽤于LumenScreenprobeGather,也就是LumenFinalGather阶段,⽤来判断是不是
DIFFUSE_INTEGRATION_IMPORTANCE_SAMPLE_BRDF,也就是⾼光的整合⽅式。另外⼀个作⽤也是在相同的阶段,⽤来采样的
时候判断这个⽅向的可⻅性,然后⽤于diffuse光照的叠加。
所以结论是GBuffer.DiffuseIndirectSampleOcclusion都作⽤于⾼光。
第⼆个参与计算GBuffer.GBufferAO。会作⽤于ReflectionEnvironment。
反射⽅式不能再使⽤lumen,⽽是使⽤screenspace。
1 float DiffOcclusion = MaterialAO;
2 float SpecOcclusion = MaterialAO;
3 ApplyBentNormal(MaterialParameters.CameraVector, MaterialParameters.WorldNormal, MaterialParameters.Tangen
4 GBuffer.GBufferAO = AOMultiBounce( Luminance( GBuffer.SpecularColor ), SpecOcclusion ).g;
这个materialAO就是材质的AO。中间进⾏⼀次applybentnormal的操作:
具体的就是会使⽤材质⾥的bentnormal,计算出对应的半球⾼斯,法线球⾯⾼斯,可⻅性球⾯⾼斯以及镜⾯反射球⾯⾼斯等,最后
获取到对应的specularocclusion, 再通过获取radiance
BentNormal和AO
![](https://img-home.csdnimg.cn/images/20240711042549.png)