异星场景渲染

(美术拆解)

基于BSDF原理的材质

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): 基于两项核心假设:
      1. 多阶散射的相位函数趋于各向同性(Isotropic);
      2. 邻近采样点具有同阶散射光照能量相等的空间局部性:
  • 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 中,由于引入了地形遮挡和局部物体的体阴影判断,场景打破了纯对称性,因此必须采用全球方位角()来精确判定步进采样点是否落入阴影区。