From 1b286a95abc17b43091224f5a4bffa096fe86d16 Mon Sep 17 00:00:00 2001 From: Manolis Papadeas <35376950+OverloadedOrama@users.noreply.github.com> Date: Sat, 22 May 2021 16:08:11 +0300 Subject: [PATCH] Optimize AutoInvertColors shader Not sure if that single if statement counts as branching code, but it's generally a good idea to avoid if statements in shader code, so I used step instead. --- src/Shaders/AutoInvertColors.shader | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/Shaders/AutoInvertColors.shader b/src/Shaders/AutoInvertColors.shader index 13ee6b5c6..5ed9a08c8 100644 --- a/src/Shaders/AutoInvertColors.shader +++ b/src/Shaders/AutoInvertColors.shader @@ -2,8 +2,8 @@ shader_type canvas_item; void fragment() { + vec3 inverted = vec3(1.0) - COLOR.rgb; vec3 screen_color = textureLod(SCREEN_TEXTURE, SCREEN_UV, 0.0).rgb; - if((screen_color.r + screen_color.g + screen_color.b) / 3.0 < 0.5){ - COLOR.rgb = vec3(1.0) - COLOR.rgb; - } + float avg = (screen_color.r + screen_color.g + screen_color.b) / 3.0; + COLOR.rgb = inverted * step(avg, 0.5); }