Browse Source

Merge pull request #66370 from bitbrain/fix-light2d-blend-modes

Fix broken 2D light blending, addresses #49922
Rémi Verschelde 2 years ago
parent
commit
2ad63f68b3
1 changed files with 6 additions and 0 deletions
  1. 6 0
      servers/rendering/renderer_rd/shaders/canvas.glsl

+ 6 - 0
servers/rendering/renderer_rd/shaders/canvas.glsl

@@ -595,6 +595,8 @@ void main() {
 		color = vec4(0.0); //invisible by default due to using light mask
 		color = vec4(0.0); //invisible by default due to using light mask
 	}
 	}
 
 
+	vec4 original_color = color;
+
 #ifdef MODE_LIGHT_ONLY
 #ifdef MODE_LIGHT_ONLY
 	color = vec4(0.0);
 	color = vec4(0.0);
 #elif !defined(MODE_UNSHADED)
 #elif !defined(MODE_UNSHADED)
@@ -636,6 +638,8 @@ void main() {
 			);
 			);
 		}
 		}
 
 
+		light_color.rgb *= original_color.rgb;
+
 		light_blend_compute(light_base, light_color, color.rgb);
 		light_blend_compute(light_base, light_color, color.rgb);
 	}
 	}
 
 
@@ -732,6 +736,8 @@ void main() {
 			);
 			);
 		}
 		}
 
 
+		light_color.rgb *= original_color.rgb;
+
 		light_blend_compute(light_base, light_color, color.rgb);
 		light_blend_compute(light_base, light_color, color.rgb);
 	}
 	}
 #endif
 #endif