Skip to content

Commit

Permalink
Merge pull request #51439 from Calinou/tonemap-clamp-negative-colors-3.x
Browse files Browse the repository at this point in the history
Clamp negative colors regardless of the tonemapper to avoid artifacts
  • Loading branch information
akien-mga authored Aug 10, 2021
2 parents dad5d09 + 313527b commit 5116855
Showing 1 changed file with 3 additions and 6 deletions.
9 changes: 3 additions & 6 deletions drivers/gles3/shaders/tonemap.glsl
Original file line number Diff line number Diff line change
Expand Up @@ -160,10 +160,6 @@ vec3 tonemap_aces(vec3 color, float white) {
}

vec3 tonemap_reinhard(vec3 color, float white) {
// Ensure color values are positive.
// They can be negative in the case of negative lights, which leads to undesired behavior.
color = max(vec3(0.0), color);

return clamp((white * color + color) / (color * white + white), vec3(0.0f), vec3(1.0f));
}

Expand Down Expand Up @@ -347,8 +343,9 @@ void main() {
#endif

// Early Tonemap & SRGB Conversion; note that Linear tonemapping does not clamp to [0, 1]; some operations below expect a [0, 1] range and will clamp

color = apply_tonemapping(color, white);
// Ensure color values are positive.
// They can be negative in the case of negative lights, which leads to undesired behavior.
color = apply_tonemapping(max(vec3(0.0), color), white);

#ifdef KEEP_3D_LINEAR
// leave color as is (-> don't convert to SRGB)
Expand Down

0 comments on commit 5116855

Please sign in to comment.