您的位置:首页 > 移动开发 > Unity3D

Unity ShadowMapping

2016-12-21 10:43 323 查看

原理:

场景中一个plane,一个cube,一个light,一个mainCamera

为了在plane上呈现cube的shadow,先在light上放一个lightCamera(位置方向跟light相同)

把light角度看到的深度图(注意是深度数据,而不是light角度看到的完整图像)保存到一个RenderTexure

在mainCamera的角度,计算plane上某个点P的颜色时,比较从mainCamera看到这个点P的深度值和从RenderTexture中取出的深度值

如果前者深度大说明这个点P在阴影中,相反则不在阴影中



具体实现细节:

1 记录计算灯光视野下的深度信息到RenderTexture

2 找到相机视野下某个点P在灯光视野下对应的P',P'和RenderTexture中某个像素点会有一个对应关系,找到这个有对应关系的像素点

3 读取像素点中的深度Zb,并跟相机视野下P的深度Za做比较,判断相机视野下P点是否在阴影中

精度优化:

参考

基于shadow Mapping的阴影
http://blog.csdn.net/zjull/article/details/11740505
Shadow Map 原理和改进

http://blog.csdn.net/ronintao/article/details/51649664
http://blog.csdn.net/aceyan0718/article/details/52067264 https://chengkehan.github.io/ShadowMap.html
有具体实现代码
https://github.com/kokichi88/shadowmapping
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: