Games104-P6-7 Rendering

  • Preview

Lecture6 Rendering(Terrian)

地形概述

  • Heightfield
    • 截屏2023-07-05 16.06.54
    • LOD受限,需要设计

      复杂面优化

  • 根据FOV(受焦距影像)设置细致程度(ps:FOV越小,每个三角面对应的像素量就越多

    • 截屏2023-07-05 16.11.49
  • 两种简化原则 - View dependent error bound

    • DIstance to camera and FOV
    • Error compare to ground truth (pre-computation) 理解为根据地势差做预先计算,决定网格采样点
    • 截屏2023-07-19 00.52.22

Triangle-Based Subdivision

  • 二叉树思想
    • 截屏2023-07-19 20.41.07

T - Junctions

  • 算法解决思路:若邻边中间被切分,则该边自身也进行切分,递归

截屏2023-07-19 20.49.18

QuadTree-Based Subdivision

  • 四叉树思想
    • 截屏2023-07-19 21.23.02
  • 资源管理思想:每个block,打包Heightfield、植被、贴图等
    • 截屏2023-07-20 00.11.41

T - Junctions

  • 解决思路: 吸附

截屏2023-07-20 00.17.13

  • 退化三角形(面积为0的三角形)渲染问题

Triangulated Irregular Network (TIN)

  • 通过Heightfield生成不规则三角面组成的地形,节约平缓地区的三角形消耗。
  • 应用面片简化,节省不必要的顶点,并将必要的顶点align to feature
  • Cons
    • 需要进行预处理
    • Rumtime时很难进行调整

GPU based Tessellation

Hardware Tessellation

截屏2023-07-30 15.05.08

截屏2023-07-30 15.07.16

  • Hull shader:生成后续subdivision所 要用到的patch,向Tessellator传递细分数据
  • Domain shader:根据Displacement map,形成高度起伏
  • Geometry shader:再次计算Vertex shader(e.g. 如Texture UV,每个像素的数据)

Mesh Shader Pipeline

截屏2023-07-30 15.19.09

  • 将所有shader合为一体,Tessellator使用新的算法。DX12以上支持

Real-Time Deformable Terrain

截屏2023-07-30 15.22.37

  • 利用GPU高计算性能,和近处Terrain细分度高,实现地形实时交互

Dig a Hole in Terrain

  • Dig hole:将隧道用到的顶点参数设置为无效数,GPU处理时会kill到这些三角面。会出现锯齿

    • 截屏2023-07-30 15.41.54
  • Add tunnel:将预先制作好的隧道模型置入其中(直接解决锯齿)

Crazy Idea - Volumetric Representation

  • Terrain体素化表达
  • 三维空间,每一个点都存储一个权重值,表示该空间物质密度

Marching Cubes

  • 寻找等值面,在cube中切割(切割方式满足所列出的14种方法)
    • 截屏2023-07-30 17.19.53

Transition Cell Lookup Table:在表格中查找

  • 截屏2023-07-30 17.24.56

Paint Terrain Materials

Terrain Materials

Texture Splatting

截屏2023-07-30 17.30.42

  • 混合贴图:每一个channel对应一种material的权重

  • Simple Texture Splatting

    • 问题:混合不真实
    • 截屏2023-07-30 17.32.31
  • Advanced Texture Splatting

    • 利用Height map解决
    • 问题:相机移动时,分界线抖动
    • 截屏2023-07-30 17.33.54
  • Advanced Texture Splatting - Biased

    • 设置一定的Bias混合范围,对Height插值后blend
    • 截屏2023-07-30 17.40.18

Sampling from Material Texture Array

截屏2023-07-30 17.47.31

  • 将每一种贴图,都打包成一个Array,每一个Texture为于一个index。混合时,index✖️权重,再叠加

Parallax and Displacement Mapping

截屏2023-07-30 18.01.14