立方图环境同时是天空与间接光源:六张等尺寸面组成天空盒,预计算的辐照度 / 预滤波 / BRDF 三件套构成静态 IBL。
xge3d_environment_desc_t ed = { 0 };
ed.srgb = 1; // 颜色立方图
for (int f = 0; f < 6; ++f) ed.faces[f] = &tFaces[f]; // +X,-X,+Y,-Y,+Z,-Z
xge3d_environment *pSky;
xge3dEnvironmentCreate(&ed, &pSky);
tDesc.environment = pSky; // 渲染时借用;NULL 则无天空六面的行列朝向遵循 GL 立方图约定(头文件注释给出了每个面的左→右、上→下世界轴对),岛屿示例在 CPU 上程序化生成六面渐变天空再交给引擎。环境的 CPU 拷贝在创建时完成,首次渲染一次性上传。
xge3d_ibl_desc_t ibl = { 0 };
ibl.irradiance = tCosineFaces; // 余弦卷积 / π,线性 RGBA8
ibl.prefiltered = tGgxMips; // GGX 全 mip 链,roughness 0..1
ibl.level_count = tMipCount;
ibl.brdf = &tBrdfLut; // R=scale G=bias;X=NdotV Y=roughness
xge3dEnvironmentSetIBL(pSky, &ibl);
tDesc.ibl_intensity = 1.0f; // 0 关闭间接光EnvironmentSetIBL 事务式拷贝预计算数据,传 NULL 移除 IBL 但保留天空面。