diff options
author | Danny Lin <danny@kdrag0n.dev> | 2021-04-14 01:33:26 -0700 |
---|---|---|
committer | alk3pInjection <webmaster@raspii.tech> | 2021-09-27 21:17:05 +0800 |
commit | fdce5d42c8bfcfd3441c86691e01fc493d19cada (patch) | |
tree | 4a531efc90246a61e2ddb23fea910bd41b1cbfb9 | |
parent | 6a038c8579b3379d79d9f0616a5641159c2a0ea1 (diff) |
[ProtonAOSP] blur: Skip processing of alpha channel by swizzling RGB
This reduces ALU utilization by avoiding unnecessary calculations that
are discarded in the final fragment color. This saves ~100 µs in another
6-pass blur implementation.
Change-Id: I4ec24518eefce369dbb592ac03a14caeea86df9a
-rw-r--r-- | libs/renderengine/gl/filters/BlurFilter.cpp | 18 |
1 files changed, 9 insertions, 9 deletions
diff --git a/libs/renderengine/gl/filters/BlurFilter.cpp b/libs/renderengine/gl/filters/BlurFilter.cpp index 967a2b514d..8858d60bd0 100644 --- a/libs/renderengine/gl/filters/BlurFilter.cpp +++ b/libs/renderengine/gl/filters/BlurFilter.cpp @@ -231,13 +231,13 @@ string BlurFilter::getFragmentShader() const { out vec4 fragColor; void main() { - fragColor = texture(uTexture, vUV, 0.0); - fragColor += texture(uTexture, vUV + vec2( uOffset.x, uOffset.y), 0.0); - fragColor += texture(uTexture, vUV + vec2( uOffset.x, -uOffset.y), 0.0); - fragColor += texture(uTexture, vUV + vec2(-uOffset.x, uOffset.y), 0.0); - fragColor += texture(uTexture, vUV + vec2(-uOffset.x, -uOffset.y), 0.0); + vec3 sum = texture(uTexture, vUV).rgb; + sum += texture(uTexture, vUV + vec2( uOffset.x, uOffset.y)).rgb; + sum += texture(uTexture, vUV + vec2( uOffset.x, -uOffset.y)).rgb; + sum += texture(uTexture, vUV + vec2(-uOffset.x, uOffset.y)).rgb; + sum += texture(uTexture, vUV + vec2(-uOffset.x, -uOffset.y)).rgb; - fragColor = vec4(fragColor.rgb * 0.2, 1.0); + fragColor = vec4(sum * 0.2, 1.0); } )SHADER"; } @@ -254,9 +254,9 @@ string BlurFilter::getMixFragShader() const { uniform float uBlurOpacity; void main() { - vec4 blurred = texture(uBlurTexture, vUV); - vec4 composition = texture(uCompositionTexture, vUV); - fragColor = mix(composition, blurred, uBlurOpacity); + vec3 blurred = texture(uBlurTexture, vUV).rgb; + vec3 composition = texture(uCompositionTexture, vUV).rgb; + fragColor = vec4(mix(composition, blurred, uBlurOpacity), 1.0); } )SHADER"; return shader; |