unity 前向渲染 渲染阴影原理

下面情况默认是 前向渲染路径,场景中平行光开启了阴影

方式

原理

备注

ShadowMap

把相机放到光源的位置,那么场景中该光源的阴影区域就是那些相机看不到的位置

得到的是:场景中距离光源最近的表面位置(深度信息)

unity中专门的pass 单独处理阴影映射纹理。

pass的LightMode = ShadowCaster

shadowMap本质上是一个深度图

屏幕空间的阴影映射技术

Screenspace Shadow Map

显卡要求支持MRT

使用 额外的pass LightMode = ShadowCaster

第一步 得到可投射阴影的光源的阴影映射纹理(光源映射纹理)

和摄像机的深度纹理 (相机深度纹理)

第二步 根据光源的映射纹理和相机的深度纹理 得到 屏幕空间的阴影图

如果相机深度图中记录的表面深度大于光源映射纹理的深度值,就说明该表面可见,但是处于光源的阴影中。

得到的 阴影图包含了屏幕空间中所有的阴影区域

使用的时候, 由于阴影图是在屏幕空间下的,所以需要阴影的物体需要把表面坐标,从模型空间转换到屏幕空间中,然后使用这个坐标对阴影图进行采样

物体的阴影处理有两个过程 :

1 接受其他物体的阴影。 需要在Shader中对阴影映射纹理进行采样, 采样结果和光照进行相乘 ,得到产生阴影的效果

2 向其他物体投射阴影。 需要把该物体加入到光源的阴影映射纹理的计算中

可模拟Screenspace Shadow map中的光源映射纹理(橘黄色)和相机深度纹理(红色)。 想想一下,光源处理得到哪里有阴影, 相机深度得到哪里可以看见,两者进行处理得到结果就是屏幕空间的阴影图

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值