碎碎念——关于阴影的感悟

关于阴影的感悟

首先是阴影产生的原因,产生阴影是由于光照不到物体,所以产生了阴影;

两种阴影

光照不到物体可以分为两种情况:

  1. 物体背向光,对于一个实体物体,其背向光的那一部分是接收不到直接光照的,这就是物体背面暗的原因;在计算过程中也就是使用saturate(dot(L, N))来进行计算,背面的该值为0;
  2. 物体与光源之间有遮挡物,遮挡物遮挡了光线的传输,导致物体接受不了直接光照,这是我们通常看到的实时阴影所计算的那一部分;在游戏领域一般采用shadow map以及shadow volume来进行实时阴影的计算,篇幅较长,先占坑,以后再补(图+代码);

第二种阴影所涉及的问题(只谈论shadow map)

shadow map最主要的问题就是精度问题:

  1. shadow acne是最常见的自阴影问题,通常可采用depth bias以及normal bias来解决;此时你可能觉得引入bias就解决了自阴影问题,实际上,该问题并没有解决,只是将shadow acne隐藏了,对于平面这种与光照方向成统一角度的情况,其shadow acne是真的解决了;对于球体这种与光照方向成变化角度的情况,其shadow acne实际上是隐藏到了第一种阴影中,一般情况下不会表现出来,特殊情况下可能会表现出来;
  2. 软阴影是使用shadow map所需要考虑的第二种问题,常使用的方法有PCF、VSM、ESM、PCSS等(也先不展开);
  3. cascade shadow map是大场景中使用shadow map所要经常使用的技术(原理知道,没具体实现过,也先不展开);

特殊情况下的shadow acne问题

掐表难免说过shadow acne实际上是隐藏到了第一种阴影中,那么什么特殊情况会暴露出来呢?答案就是第一种阴影被照亮的情况;
理论上每个光源都会产生自己的阴影,但是在手机平台上可能会使用多个光源,但使用上只有主平行光才投射阴影;倘若想要使用这个阴影去影响其他光照(比如边缘光,或者将第一种阴影照亮的光),这是典型的错误用法,但为了美术效果有时候确实需要这么使用,此时隐藏的shadow acne问题就会暴露出来(等再次整理这篇文章时放图);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值