#version 450 // Tonemap pass:HDR 线性颜色 → 显示空间。 // 这是显示变换的显式建模(对齐 UE/Unity:HDR SceneColor → tonemapper → UI)。 // 当前 = 曝光 + gamma 编码(与旧 Srgb 附件行为等价,观感不变); // ACES/Reinhard 色调曲线、bloom 等后处理在此 pass 基础上扩展。 layout(location = 0) in vec2 fragUV; layout(location = 0) out vec4 outColor; layout(set = 0, binding = 0) uniform sampler2D hdrImage; layout(push_constant) uniform PushConstants { float exposure; // 曝光系数(后续接 ImGui) } pc; void main() { vec3 hdr = texture(hdrImage, fragUV).rgb * pc.exposure; // 显示编码:linear → sRGB(gamma 2.2 近似)。 // TODO: ACES 拟合曲线接入点(HDR 泛光/色调映射时替换此行) outColor = vec4(pow(clamp(hdr, 0.0, 1.0), vec3(1.0 / 2.2)), 1.0); }