displacement map置换贴图
2016-04-07 15:35
218 查看
在游戏中经常会有这样的情况,就是一个平面——这个平面在现实中并不是一 个“平”面,例如砖墙的表面带有石质浮雕等等。这样的情况如果要求游戏开发人员将复杂的3D细节都做出来是不现实的,因为即使不计较在建模时候的复杂度, 过多的3D细节也同样会大量消耗显示芯片的性能,让游戏根本没有可玩性。同样在小型制作工作室的硬件配置一般也不支持过于复杂的模型制作。置换贴图是同凹凸贴图,法线贴图,切线贴图相区别的另一种制造凹凸细节的技术,它使用一个高度贴图制造出几何物体表面上点的位置被替换到另一位置的效果。这种效果通常是让点的位置沿面法线移动一个贴图中定义的距离。它使得贴图具备了表现细节和深度的能力,且可以同时允许自我遮盖,自我投影和呈现边缘轮廓。而另一方面,这种技术是同类技术中消耗性能最大的,因为它需要额外的增加大量几何信息
displacement map技术是最近几年才出现的一个技术,它出现的初衷是为了解决内存和GPU之间的带宽问题,它开始主要用于高poly角色模型的渲染,由于模型的高数据量会使内存和GPU之间的传输成为瓶颈,因此将其转换为低poly模型和一张displacement传送到GPU中,在GPU中转换为高poly模型进行渲染,可以大大减轻传送的数据量。
但是当前这项技术已经获得非常大的发展,它使用的范围非常大,从室外地形、水面、海洋到室内场景的渲染,它为提高场景的真实度提供了一个有力的工具。一个displacement map通常包含两部分:一张normal map用来保存法线,另一张height map用来保存顶点的偏移。当需要从低poly模型转换为高poly模型时很简单,首先从模型的一个face上获得一个插值点P1,然后从displacement map中获得相应位置的normal和distance,那么新的顶点P2为:
P2 = P1 + normal*distance
displacement map技术是最近几年才出现的一个技术,它出现的初衷是为了解决内存和GPU之间的带宽问题,它开始主要用于高poly角色模型的渲染,由于模型的高数据量会使内存和GPU之间的传输成为瓶颈,因此将其转换为低poly模型和一张displacement传送到GPU中,在GPU中转换为高poly模型进行渲染,可以大大减轻传送的数据量。
但是当前这项技术已经获得非常大的发展,它使用的范围非常大,从室外地形、水面、海洋到室内场景的渲染,它为提高场景的真实度提供了一个有力的工具。一个displacement map通常包含两部分:一张normal map用来保存法线,另一张height map用来保存顶点的偏移。当需要从低poly模型转换为高poly模型时很简单,首先从模型的一个face上获得一个插值点P1,然后从displacement map中获得相应位置的normal和distance,那么新的顶点P2为:
P2 = P1 + normal*distance
相关文章推荐
- 使用Maven创建Web项目
- Qt基础: 信号和槽
- 存储过程自学
- logstash邮件报警功能实现
- magento 计划任务
- 面试题76:单链表的归并排序
- 菜鸟成长记-打开PDF文件,可以左右滑动
- HashMap内部实现及源码分析
- swift 之actionSheet 使用
- Nyoj 修路方案(次小生成树)
- javasScript正则表达式验证密码(必须含数字字符特殊符号,长度4-16位之间)
- POJ 1015 Jury Compromise【DP】
- meaurespec的初步认识
- POJ 1015 Jury Compromise【DP】
- 利用请求头Referer防止盗链
- Unity3D研究院之异步加载游戏场景与异步加载游戏资源进度条(三十一)
- JavaScript字符串转数字
- centos6.7 安装redis 3.0.7
- 正则表达式
- Zookeeper原理