From ecd0680b1170ff2fda8ee079019f8c47b746a043 Mon Sep 17 00:00:00 2001 From: lawnjelly Date: Sat, 18 May 2024 07:30:10 +0100 Subject: [PATCH] Fix fragcolor write locations in scene shaders --- drivers/gles2/shaders/scene.glsl | 10 +++++++--- drivers/gles3/shaders/scene.glsl | 4 ++-- 2 files changed, 9 insertions(+), 5 deletions(-) diff --git a/drivers/gles2/shaders/scene.glsl b/drivers/gles2/shaders/scene.glsl index f45b024e0fb..5fe2bbb3f96 100644 --- a/drivers/gles2/shaders/scene.glsl +++ b/drivers/gles2/shaders/scene.glsl @@ -2467,6 +2467,12 @@ FRAGMENT_SHADER_CODE frag_color.rgb = mix(pow((frag_color.rgb + vec3(0.055)) * (1.0 / (1.0 + 0.055)), vec3(2.4)), frag_color.rgb * (1.0 / 12.92), vec3(lessThan(frag_color.rgb, vec3(0.04045)))); #endif + // Write to the final output once and only once. + // Use a temporary in the rest of the shader. + // This is for drivers that have a performance drop + // when the output is read during the shader. + gl_FragColor = frag_color; + #else // not RENDER_DEPTH //depth render #ifdef USE_RGBA_SHADOWS @@ -2474,10 +2480,8 @@ FRAGMENT_SHADER_CODE highp float depth = ((position_interp.z / position_interp.w) + 1.0) * 0.5 + 0.0; // bias highp vec4 comp = fract(depth * vec4(255.0 * 255.0 * 255.0, 255.0 * 255.0, 255.0, 1.0)); comp -= comp.xxyz * vec4(0.0, 1.0 / 255.0, 1.0 / 255.0, 1.0 / 255.0); - frag_color = comp; + gl_FragColor = comp; #endif #endif - - gl_FragColor = frag_color; } diff --git a/drivers/gles3/shaders/scene.glsl b/drivers/gles3/shaders/scene.glsl index 39c6b943075..266db3317dd 100644 --- a/drivers/gles3/shaders/scene.glsl +++ b/drivers/gles3/shaders/scene.glsl @@ -2453,13 +2453,13 @@ FRAGMENT_SHADER_CODE #endif //ubershader-runtime #endif //SHADELESS //ubershader-runtime +#endif //USE_MULTIPLE_RENDER_TARGETS //ubershader-runtime + // Write to the final output once and only once. // Use a temporary in the rest of the shader. // This is for drivers that have a performance drop // when the output is read during the shader. frag_color_final = frag_color; -#endif //USE_MULTIPLE_RENDER_TARGETS //ubershader-runtime - #endif //RENDER_DEPTH //ubershader-runtime }