Games104-P6-7 Rendering
- Preview
Lecture6 Rendering(Terrian)
地形概述
- Heightfield
根据FOV(受焦距影像)设置细致程度(ps:FOV越小,每个三角面对应的像素量就越多
两种简化原则 - View dependent error bound
- DIstance to camera and FOV
- Error compare to ground truth (pre-computation) 理解为根据地势差做预先计算,决定网格采样点
Triangle-Based Subdivision
- 二叉树思想
T - Junctions
- 算法解决思路:若邻边中间被切分,则该边自身也进行切分,递归
QuadTree-Based Subdivision
- 四叉树思想
- 资源管理思想:每个block,打包Heightfield、植被、贴图等
T - Junctions
- 解决思路: 吸附
- 退化三角形(面积为0的三角形)渲染问题
Triangulated Irregular Network (TIN)
- 通过Heightfield生成不规则三角面组成的地形,节约平缓地区的三角形消耗。
- 应用面片简化,节省不必要的顶点,并将必要的顶点align to feature
- Cons
- 需要进行预处理
- Rumtime时很难进行调整
GPU based Tessellation
Hardware Tessellation
- Hull shader:生成后续subdivision所 要用到的patch,向Tessellator传递细分数据
- Domain shader:根据Displacement map,形成高度起伏
- Geometry shader:再次计算Vertex shader(e.g. 如Texture UV,每个像素的数据)
Mesh Shader Pipeline
- 将所有shader合为一体,Tessellator使用新的算法。DX12以上支持
Real-Time Deformable Terrain
- 利用GPU高计算性能,和近处Terrain细分度高,实现地形实时交互
Dig a Hole in Terrain
Dig hole:将隧道用到的顶点参数设置为无效数,GPU处理时会kill到这些三角面。会出现锯齿
Add tunnel:将预先制作好的隧道模型置入其中(直接解决锯齿)
Crazy Idea - Volumetric Representation
- Terrain体素化表达
- 三维空间,每一个点都存储一个权重值,表示该空间物质密度
Marching Cubes
- 寻找等值面,在cube中切割(切割方式满足所列出的14种方法)
Transition Cell Lookup Table:在表格中查找
Paint Terrain Materials
Terrain Materials
Texture Splatting
混合贴图:每一个channel对应一种material的权重
Simple Texture Splatting
- 问题:混合不真实
Advanced Texture Splatting
- 利用Height map解决
- 问题:相机移动时,分界线抖动
Advanced Texture Splatting - Biased
- 设置一定的Bias混合范围,对Height插值后blend
Sampling from Material Texture Array
- 将每一种贴图,都打包成一个Array,每一个Texture为于一个index。混合时,index✖️权重,再叠加