参考教程
Tutorial 14: Distance Normal Mapping
学习记录
本篇文章中我们介绍基于观察点(摄像机)距离不同进行不同法线贴图的技术,本篇代码基于上一篇,仅有少量改动,无新增类。
对于我们所渲染的大场景而言,近处我们需要更多的细节,而远处则可以稍微小一些,太多细节的反射对于我们而言没什么意义。
首先我们需要修改 Terrain.vs
和 Terrain.ps
,我们的每个顶点将携带两个纹理坐标,并且使用不同的纹理,如下:
1 | //////////////////////////////////////////////////////////////////////////////// |
之后,我们需要修改我们的 TerrainClass
,为其新增第二个纹理坐标的初始化:
1 | bool TerrainClass::BuildTerrainModel() { |
最后,修改 TerrainCellClass
以支持新的顶线属性,以及 TerrainShaderClass
支持新的顶点属性以及多一张纹理输入。
最终效果: