#version 460 in Varyings { layout(location = 0) vec3 texCoord; } var; layout(set = 0, binding = 1) uniform sampler _Sampler; layout(set = 0, binding = 2) uniform textureCube _Texture; layout(location = 0) out vec4 fragColor; vec3 toneMapAcesNarkowicz(vec3 color) { const float A = 2.51; const float B = 0.03; const float C = 2.43; const float D = 0.59; const float E = 0.14; return clamp((color * (A * color + B)) / (color * (C * color + D) + E), 0.0, 1.0); } void main() { vec4 texel = texture(samplerCube(_Texture, _Sampler), var.texCoord); vec3 outgoingRadiance = texel.rgb; vec3 toneMappedLinearColor = toneMapAcesNarkowicz(outgoingRadiance); vec3 toneMappedSrgbColor = pow(toneMappedLinearColor, vec3(1.0 / 2.2)); fragColor = vec4(toneMappedSrgbColor, 1.0); }