diff options
author | Rye <rye@lindenlab.com> | 2024-11-03 02:28:39 -0500 |
---|---|---|
committer | Rye <rye@lindenlab.com> | 2024-11-04 01:30:20 -0800 |
commit | 687930d5094e85c13d5ae7967b09eb08a879b333 (patch) | |
tree | a4ce0040ecde0c8aef71f1ba6f107c5703dc1d6d /indra/newview/app_settings | |
parent | a57d82b3a9337eb4ac00340e80749ac97392e03e (diff) |
Integrate glow combine pass with other post process render passes to reduce another full screen copy
Diffstat (limited to 'indra/newview/app_settings')
5 files changed, 20 insertions, 6 deletions
diff --git a/indra/newview/app_settings/shaders/class1/deferred/SMAANeighborhoodBlendF.glsl b/indra/newview/app_settings/shaders/class1/deferred/SMAANeighborhoodBlendF.glsl index 3276405447..08052a9ddf 100644 --- a/indra/newview/app_settings/shaders/class1/deferred/SMAANeighborhoodBlendF.glsl +++ b/indra/newview/app_settings/shaders/class1/deferred/SMAANeighborhoodBlendF.glsl @@ -31,10 +31,12 @@ in vec2 vary_texcoord0; in vec4 vary_offset; uniform sampler2D diffuseRect; +uniform sampler2D emissiveRect; uniform sampler2D blendTex; #if SMAA_REPROJECTION uniform sampler2D velocityTex; #endif +uniform sampler2D depthMap; #define float4 vec4 #define float2 vec2 @@ -51,7 +53,7 @@ float4 SMAANeighborhoodBlendingPS(float2 texcoord, void main() { - frag_color = SMAANeighborhoodBlendingPS(vary_texcoord0, + vec4 diff = SMAANeighborhoodBlendingPS(vary_texcoord0, vary_offset, diffuseRect, blendTex @@ -59,5 +61,11 @@ void main() , velocityTex #endif ); +#ifndef NO_GLOW + diff.rgb += texture2D(emissiveRect, vary_texcoord0).rgb; +#endif + frag_color = diff; + + gl_FragDepth = texture(depthMap, vary_texcoord0.xy).r; } diff --git a/indra/newview/app_settings/shaders/class1/deferred/cofF.glsl b/indra/newview/app_settings/shaders/class1/deferred/cofF.glsl index 4a26b8924a..36611db2fb 100644 --- a/indra/newview/app_settings/shaders/class1/deferred/cofF.glsl +++ b/indra/newview/app_settings/shaders/class1/deferred/cofF.glsl @@ -29,6 +29,7 @@ out vec4 frag_color; uniform sampler2D diffuseRect; uniform sampler2D depthMap; +uniform sampler2D emissiveRect; uniform float focal_distance; uniform float blur_constant; @@ -66,12 +67,13 @@ void main() vec4 p = inv_proj*ndc; float depth = p.z/p.w; - vec4 diff = texture(diffuseRect, vary_fragcoord.xy); + vec4 diff = texture(diffuseRect, tc); float sc = calc_cof(depth); sc = min(sc, max_cof); sc = max(sc, -max_cof); - frag_color.rgb = diff.rgb; + vec4 bloom = texture2D(emissiveRect, tc); + frag_color.rgb = diff.rgb + bloom.rgb; frag_color.a = sc/max_cof*0.5+0.5; } diff --git a/indra/newview/app_settings/shaders/class1/deferred/postDeferredNoDoFF.glsl b/indra/newview/app_settings/shaders/class1/deferred/postDeferredNoDoFF.glsl index 07384ebe9b..cb0a6edea9 100644 --- a/indra/newview/app_settings/shaders/class1/deferred/postDeferredNoDoFF.glsl +++ b/indra/newview/app_settings/shaders/class1/deferred/postDeferredNoDoFF.glsl @@ -30,7 +30,6 @@ out vec4 frag_color; uniform sampler2D diffuseRect; uniform sampler2D depthMap; -uniform vec2 screen_res; in vec2 vary_fragcoord; void main() diff --git a/indra/newview/app_settings/shaders/class1/interface/glowcombineF.glsl b/indra/newview/app_settings/shaders/class1/interface/glowcombineF.glsl index ca000dcb23..0e7858743c 100644 --- a/indra/newview/app_settings/shaders/class1/interface/glowcombineF.glsl +++ b/indra/newview/app_settings/shaders/class1/interface/glowcombineF.glsl @@ -29,10 +29,12 @@ out vec4 frag_color; uniform sampler2D diffuseRect; uniform sampler2D emissiveRect; +uniform sampler2D depthMap; in vec2 tc; void main() { frag_color = texture(diffuseRect, tc) + texture(emissiveRect, tc); + gl_FragDepth = texture(depthMap, tc.xy).r; } diff --git a/indra/newview/app_settings/shaders/class1/interface/glowcombineFXAAF.glsl b/indra/newview/app_settings/shaders/class1/interface/glowcombineFXAAF.glsl index 6d34c8aefa..8a8de88182 100644 --- a/indra/newview/app_settings/shaders/class1/interface/glowcombineFXAAF.glsl +++ b/indra/newview/app_settings/shaders/class1/interface/glowcombineFXAAF.glsl @@ -28,6 +28,7 @@ out vec4 frag_color; uniform sampler2D diffuseRect; +uniform sampler2D emissiveRect; uniform vec2 screen_res; @@ -36,6 +37,8 @@ in vec2 vary_tc; void main() { vec3 col = texture(diffuseRect, vary_tc).rgb; - - frag_color = vec4(col.rgb, dot(col.rgb, vec3(0.299, 0.587, 0.144))); +#ifndef NO_GLOW + col += texture2D(emissiveRect, vary_tc).rgb; +#endif + frag_color = vec4(col, dot(col, vec3(0.299, 0.587, 0.144))); } |