SRP_10_PointAndSpotShadows


https://catlikecoding.com/unity/tutorials/custom-srp/point-and-spot-shadows/

Spot Shadow texelSize 计算,以及 normalBias 的使用

image-20221215215327569

image-20221215215357181

添加偏移值,避免采样到边界

image-20221215215448446

image-20221215215505726

Point 如果需要实时阴影,他所投射的是一个Cubemap,需要六个面,计算量是 SpotLight的六倍

image-20221215215609921

优化的写法如下。原因是 Cubemap的fov总是90度。

image-20221215215714372

结合下面这个图片解释

image-20221215215727877

因为我们没有渲染到标准的Cubemap中,而是使用 tile 作为cubemap,我们采样的时候不能使用采样cubemap的标准模式。

​ 使用CubeMapFaceID 计算面 ID

image-20221215215757691

​ 面 ID 对应 C# 层的索引。+X,-X,+Y,-Y,+Z,-Z

image-20221215215815723

​ The plane normals have to point in the opposite direction as the faces, like the spot direction points toward the light。

​ 灯光方向是从物体表面指向灯光,和 Cubmap Face 是相反的方向

image-20221215215931328

通过在渲染阴影时,增大FOV角度,避免采样 tile 的 cubemap 时,采样到边界的问题

image-20221215220001016

point light 和 spot light 在mixed选项下,才会烘焙阴影到 shadowmask

不理解的地方:

  • SpotLight
    • 不同角度所应用的法线偏移量不相同?为什么需要计算纹素?
      image-20221215220141631
  • 反转矩阵

image-20221215220216622

​ 反转前效果

image-20221215220353886

​ 反转后效果

image-20221215220438014


文章作者: 血魂S
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 血魂S !
  目录