| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 游戏开发 -> 技术美术知识学习4300:实时阴影 -> 正文阅读 |
|
[游戏开发]技术美术知识学习4300:实时阴影 |
代码部分为Unity实现屏幕空间的实时阴影 笔记1. 基于图片的实时阴影技术主流方法之一,把阴影生成为一张图片 1.1 平面投影阴影将阴影投影在一个平面上。 1.2 阴影映射(Shadow Map)概念:从光源的位置和角度获取的深度图 1.3 屏幕空间阴影映射Unity中的阴影映射实现(即屏幕空间的阴影映射) 步骤:
2. 阴影映射的优化2.1 自阴影问题也叫Z-Fighting、阴影瑕疵、阴影粉刺(Surface Acne),由于阴影贴图分辨率(其分辨率低,但是相机得到的深度图分辨率高)、离散采样、数值精度等问题产生的错误的自阴影
2.2 走样问题由于采样产生 2.2.1 透视走样Shadow Map本身大小均匀,但透视投影完成后采样变得不均匀,由此产生了走样(距离观察者近的元素产生走样)
我猜这也是为什么上边1.3中的Shadow Map有4个 2.2.2 重采样采样贴图时产生的误差 作业1. 总结实时阴影系统的优化方案内容来自以上笔记:
2. 自己实现阴影系统Tips:可以把模型的背面渲染出来作为阴影的一个Pass,来优化和避免一些问题 //TODO:
上图: 刚开始有个小问题:之前建模的钢铁侠面罩模型只有一个面,没有封口,就是背面是透的,结果来到这里正面面对阳光的时候,竟然没有阴影,开了framedebug,原来是cull front去掉了正面。如图 注释掉好了,看来这个就是开头说的直接用背面作为渲染阴影的Pass了,这样做的好处猜测应该是,反正shadowMap空间下正面和背面一定会相互遮挡,不如只考虑一个面,而背面的复杂度应该又比正面低一点,所以这样是效率比较高的 最后是边缘模糊PCF Soft Shadow(Percentage Closer Filtering),代码也来自上边知乎大佬的帖子,原理就是对ShadowMap围绕着中心点采样了9次,每次都和中心点的depth比较后累加,再除9
最后,这些代码也上传git了,感兴趣的可以拉下来看看(本篇内容在/Scene/4300) |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/28 2:34:20- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |