【发布时间】:2018-06-25 15:55:22
【问题描述】:
我目前正在研究阴影贴图着色器,出现的一个问题是,为什么我们要先对表面(lambert/phong)进行着色,然后再将阴影映射到它们上面,而不是仅仅添加地照亮像素?这让我觉得与光的工作方式相反。
如果我们使用阴影贴图,这意味着我们创建了一个纹理,告诉我们哪些屏幕空间像素暴露在光源下。那么为什么我们需要进行整个 lambert\phong 计算呢?为什么不直接通过组合阴影贴图获得光照?
这是我看到的伪算法:
- 默认情况下,输出图像的所有像素都是全黑的。
- 生成不亮的反照率屏幕纹理
- 为灯光生成阴影贴图
- 修改输出图像。我们只修改暴露在光照下的像素(匹配阴影贴图深度 +- 偏差等),根据光强度、衰减等使暴露的像素更亮。
- 选择下一盏灯
- 转到第 3 步
如果这将是具有正确光强度的图像的结果。现在我们将强度纹理乘以反照率纹理并得到最终图像。据我所知,这一次只需要 3 个纹理,是不是太多了 emory?
我认为人们没有这样做一定是有原因的,我想我只是需要有人指出原因。
【问题讨论】:
标签: shader shadow-mapping