Chapter 221 · 3D 图形

雾与天空

线性距离雾在曝光与 sRGB 转换之前混合,天空不受雾影响;天空本体就是第 218 章的环境立方图。

221

三行雾

xge3d_fog_settings_t tFog = xge3dFogDefault();
tFog.color = (xge3d_vec3_t){ .78f, .87f, .93f };  // 线性 RGB
tFog.start = 60.0f;  tFog.end = 420.0f;               // 沿相机前向,米;0 ≤ start < end
tDesc.fog = &tFog;   // NULL 关闭;只依赖 3D 开关,无光照配置也可用
混合位置很重要:雾色先与场景线性色混合,再进曝光(exposure,0 选 1)与 sRGB 转换——所以雾色给线性值,天空保持原样不被雾化,地平线处的过渡是自然的。

天空的两种做法

  • 预烘焙立方图:离线渲染或全景图转六面,配合 IBL 三件套一步到位。
  • 程序化生成:岛屿示例在 CPU 上按面法线/切线基生成渐变 + 云 + 太阳高光的六面图,再交给 xge3dEnvironmentCreate——几十行代码得到风格化天空。

渲染时把环境挂到 tDesc.environment 即同时得到天空盒与(若有 IBL 的)间接光;关掉天空传 NULL。