Forráskód Böngészése

Merge pull request #51439 from Calinou/tonemap-clamp-negative-colors-3.x

Clamp negative colors regardless of the tonemapper to avoid artifacts
Rémi Verschelde 4 éve
szülő
commit
5116855637
1 módosított fájl, 3 hozzáadás és 6 törlés
  1. 3 6
      drivers/gles3/shaders/tonemap.glsl

+ 3 - 6
drivers/gles3/shaders/tonemap.glsl

@@ -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));
 }
 
@@ -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)