异星场景渲染
(美术拆解)

基于BSDF原理的材质
粒子点光源
一、粒子贴花原理

二、基于距离场的粒子点光源

三、注意事项:
大气散射与大面积草地渲染
一、效果展示
1.1 整体静帧效果

1.2 整体动态效果
二、大面积草地渲染
2.1 技术拆解
应用阶段与几何阶段
- 绘草工具序列化草位置信息:

- 多级剔除架构:
在 CPU 侧分区块进行摄像机视锥六面体相交粗剔除,之后传入 Compute Shader 阶段进行精细视锥体剔除:

- 顶点动画:基于世界空间坐标采样的噪声图偏移,模拟风吹摆动;
- 公告牌渲染:轴向公告牌(Axial Billboard);
- 碰撞交互:RendererFeature 绘制交互 RT:

光栅化与着色阶段
- 颜色蒙版 (Color Mask):

- 草身渐变:

- 自发光渐变:

- 边缘光 (Rim Light):

- 麦浪颜色:

- 前景压暗:

2.2 公开参数面板
- 绘草工具参数:

- Shader 参数:

- RendererFeature 参数:

2.3 草地渲染个人思考过程
- 草的边缘光透光模拟: 模拟草地在强光逆光下的半透透射宏观表现。最初考虑使用类似菲涅尔公式模拟,但由于大面积草叶的几何法线难以准确获得(曾尝试采用底层地形法线);最终采用深度差方法模拟,偏移方向设为光源方向与法线方向的插值,获得了更自然的透光感。
三、大气散射 (Atmospheric Scattering)
3.1 物理与技术原理
描述光线在穿透行星大气层行进过程中,与微观粒子相互作用产生的损失(消光)与散射:
- 光的内散射 (In-Scattering):散射系数与相位函数共同描述:
- 瑞利散射 (Rayleigh Scattering):散射粒子尺度远小于光波长,几乎全向均匀散射,且不同波长损耗不同(波长越短散射越强,形成蓝天与落日红霞);
- 米氏散射 (Mie Scattering):散射粒子尺度与光波长相当,具有强前向性且与波长基本无关(形成太阳周围的灰白晕光与雾霾)。
- 光的外散射与衰减 (Extinction):采用比尔-朗伯定律(Beer-Lambert Law)描述光的介质吸收与外散射损耗。
3.2 技术拆解(预计算 LUT 驱动体系)
-
Transmittance LUT(透射率表): 描述光在不同高度、不同出射方向上的透射衰减系数:
- 高度轴映射:当前点到行星地平线相交点的距离(高度范围:地平线半径高度 大气层顶高度);
- 方向轴映射:当前点与当前视线方向同大气层相交点的距离(方向范围:切地平线方向 天顶 Up 方向):

-
SkyView LUT(天穹视图表): 实时存储单次散射与多阶散射的光照结果:
- UV 球面投影:构建以 Up 方向为天顶角、Light 在垂直平面投影方向为方位角的方向球面;
- 轴:范围 的方位角;
- 轴:范围 的 。
- 单次散射 (Single Scattering):沿视线步进光线积分内散射;
- 多次散射 (Multiple Scattering LUT):
基于两项核心假设:
- 多阶散射的相位函数趋于各向同性(Isotropic);
- 邻近采样点具有同阶散射光照能量相等的空间局部性:

- UV 球面投影:构建以 Up 方向为天顶角、Light 在垂直平面投影方向为方位角的方向球面;
-
Aerial-Perspective LUT(空气透视与体阴影 3D/2D LUT): 描述不同视线、不同视距下光的散射增益(RGB)与透射衰减(A):
- UV 映射:与 SkyView LUT 类似,但 轴扩展为 全球方位角;
- 体阴影 (Volumetric Shadow):步进过程中对比当前采样点摄像机空间深度与 ShadowMap 记录的阴影深度:

3.3 公开参数与验证工具
- 离线 LUT 图生成工具(前期算法验证):

- RendererFeature 参数面板:

3.4 大气散射个人思考过程
- SkyView LUT 与 Aerial-Perspective LUT 在 UV 参数化设计上的差异:
- 在 SkyView LUT 中,基于主光源(太阳)在天顶垂面上的几何轴对称性,仅需描述半球方向(),显著节省贴图空间与实时采样开销;
- 而在 Aerial-Perspective LUT 中,由于引入了地形遮挡和局部物体的体阴影判断,场景打破了纯对称性,因此必须采用全球方位角()来精确判定步进采样点是否落入阴影区。