05_投影追加

投影追加GooEngine

一般的Blender版本只能在后期处理中获取深度图,但这里需要再材质面板中获取,只有GooEngine版本才行,但是GooEngine的描边只能使用几何节点构造,材质面板没有置换选项 一般版本获取深度:找到层设置,开启passes选项中的Z 合成面板这里就有了Depth节点了

灯光向量转换到观察空间

光向量转换到观察空间得到偏移方向,因为是做屏幕投影,那么只要XY的方向信息即可,所以乘上(1,1,0)

计算偏移量

这里乘上5是经验值,除以100应该是以百分制来控制偏移强度

计算采样的屏幕深度UV

GooEngine特有的节点,这里可以看到输入是观察空间下的Position。 那么基于原UV进行偏移就可以得到新的UV,将当前位置转换到观察空间进行相加即可。注意这里不需要要进行透视除法,ScreenspaceInfo内部应该做了这一步,在Unity和UE中采用深度缓冲都要做透视除法

采样深度缓冲获得投影

**将偏移后的UV采样获得新的深度,新深度减去原深度即可获得投影,这里为了防止自投影所以原深度需要减去一个较小阈值,可以理解为去除面部,鼻子的阴影所做的处理,后面乘上一个应该是经验值的50,在使用FadeOut参数控制衰减程度,最后Clamp钳制到0~1* 输出测试可以看到投影正常生成了

将ShadowAttenuation融入之前的分段

对应代码操作 重映射为两个分段

投影混合后的效果


Enjoy Reading This Article?

Here are some more articles you might like to read next:

  • URP - RendererFeature :ScreenSpaceOutline
  • 平滑法线处理 - 八面体映射
  • Lv.3 Unity主线:一个简单的PBRShader
  • 理论支线:直接光漫反射与GGX高光的混合问题
  • 理论支线:PBR - 基于图像的照明( image based lighting-IBL)
  • # #