1
0
forked from mirrors/0ad
Files
0ad/binaries/data/mods/mod/shaders/glsl/compute_resolve_pbr.cs
T
Vladislav Belov 25df2d8a02 Adds resolve PBR compute shader
Also fixes sky shader as it was writing negative values for -Y
direction.
2026-04-29 19:25:12 +02:00

35 lines
916 B
C#

#version 430
#include "common/compute.h"
BEGIN_DRAW_TEXTURES
TEXTURE_2D(0, inTex)
END_DRAW_TEXTURES
BEGIN_DRAW_UNIFORMS
UNIFORM(vec4, screenSize)
// Premultiplied exposure, already contains 2^exposure.
UNIFORM(float, exposure)
END_DRAW_UNIFORMS
STORAGE_2D(0, rgba8, outTex);
vec3 applyTonemapper(vec3 color)
{
float whitePoint = 10.0;
// Extendend Reinhard:
// https://www-old.cs.utah.edu/docs/techreports/2002/pdf/UUCS-02-001.pdf
return color * (vec3(1.0) + color / (whitePoint * whitePoint)) / (vec3(1.0) + color);
}
layout(local_size_x = 8, local_size_y = 8, local_size_z = 1) in;
void main()
{
ivec2 position = ivec2(gl_GlobalInvocationID.xy);
if (any(greaterThanEqual(position, ivec2(screenSize.xy))))
return;
vec3 hdrColor = texelFetch(GET_DRAW_TEXTURE_2D(inTex), position, 0).rgb;
vec3 sdrColor = applyTonemapper(hdrColor * exposure);
imageStore(outTex, position, vec4(sdrColor, 1.0));
}