地形,大气,以及云的渲染系统

地形渲染方案

地形管理

Untitled

根据视距来进行地形的Tessellation,远处的三角形网格密度低而近处高。

而至于具体的Subdivision方法,可以分为如下

  • Triangle Based Subdivision
  • QuadTree-Based Subdivision

这里关键的一点是要明白T-Junction是什么,该怎么解决。

材质采样

Untitled

这里要注意TextureArray和3D Texture的区别,不过TextureArray的cache miss率较高,有点费。

Virtual Texture

Untitled

当前一统天下的方案,大部分现代地形的管理都是通过Virtual Texture来进行。

私货

Untitled

天空以及大气渲染

在做这方面的渲染时,一定要注意到天空要分开来考虑

  • 光与介质的交互方式

Untitled

  • Volume Rendering Equation

Untitled

  • Scattering Type

Rayleigh Scattering : 当参与散射的粒子直径远小于光的波长的时候,波长越短的光自然反射的越厉害,即反射的大部分是蓝光以及紫光。

$\lambda: 波长,h:海拔高度$

参数:

Untitled

Mie Scattering : 参与散射的粒子直径大于或者接近于光的波长时候会发生的散射现象,这种散射发生时似乎是会对任意波长的光都产生同样的散射效果。

Untitled

Untitled

当前业界主流方法

Untitled

Untitled

除了这种基于物理的算法,往往还有基于2D面片的做法。