- Timestamp:
- 02/16/09 18:02:02 (15 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
GTP/trunk/App/Demos/Vis/FriendlyCulling/src/shaders/combineSsaoSep.cg
r3313 r3314 68 68 //samplePos = ReconstructSamplePos(ssaoTex, sampleTexCoord.xy, bl, br, tl, tr); 69 69 70 float len = min(SqrLen(centerPos - samplePos), 1e2f); 70 //float len = min(SqrLen(centerPos - samplePos), 1e2f); 71 float len = distance(centerPos, samplePos); 71 72 float spatialFactor = 1.0f / max(len, 1e-3f); 72 73 … … 74 75 75 76 // combine the weights 76 float w = convergenceFactor * convergenceFactor * spatialFactor;// * normalFactor; 77 //float w = convergenceFactor * convergenceFactor * spatialFactor; 78 float w = convergenceFactor * spatialFactor; 79 //float w = spatialFactor; 77 80 float average = aoSample.x * w; 78 81 … … 114 117 } 115 118 119 120 /** In between step that only filters in one direction 121 */ 122 pixel FilterSsaoHalfRes(fragment IN, 123 uniform sampler2D colorsTex, 124 uniform sampler2D ssaoTex, 125 uniform float3 bl, 126 uniform float3 br, 127 uniform float3 tl, 128 uniform float3 tr, 129 uniform float2 res 130 ) 131 { 132 pixel OUT; 133 134 const float depth = tex2Dlod(colorsTex, float4(IN.texCoord, 0, 0)).w; 135 136 OUT.illum_col = tex2Dlod(ssaoTex, float4(IN.texCoord, 0, 0)); 137 // compute minimal convergence for savetly reasons, write it out 138 const float convergence = ComputeConvergenceHalfRes(ssaoTex, IN.texCoord, res * 0.5f); 139 OUT.illum_col.y = convergence; 140 141 const float2 xyStep = float2(1.0f / res.x, 0); 142 143 // filter reaches size 1 pixel when sample size reaches threshold 144 // afterwards we do not use the filter anymore 145 146 // filter up to a certain convergance value and leave out background (sky) by checking depth 147 if ((convergence < SSAO_CONVERGENCE_THRESHOLD) && (depth < DEPTH_THRESHOLD)) 148 { 149 // the filtered ssao value 150 OUT.illum_col.x = FilterXY(IN.texCoord, ssaoTex, colorsTex, bl, br, tl, tr, xyStep, convergence); 151 } 152 153 return OUT; 154 } 155 116 156 /** In between step that only filters in one direction 117 157 */ … … 149 189 } 150 190 151 /** In between step that only filters in one direction152 */153 pixel FilterSsaoHalfRes(fragment IN,154 uniform sampler2D colorsTex,155 uniform sampler2D ssaoTex,156 uniform float3 bl,157 uniform float3 br,158 uniform float3 tl,159 uniform float3 tr,160 uniform float2 res161 )162 {163 pixel OUT;164 165 const float depth = tex2Dlod(colorsTex, float4(IN.texCoord, 0, 0)).w;166 167 OUT.illum_col = tex2Dlod(ssaoTex, float4(IN.texCoord, 0, 0));168 // compute minimal convergence for savetly reasons, write it out169 const float convergence = ComputeConvergenceHalfRes(ssaoTex, IN.texCoord, res * 0.5f);170 OUT.illum_col.y = convergence;171 172 const float2 xyStep = float2(1.0f / res.x, 0);173 174 // filter reaches size 1 pixel when sample size reaches threshold175 // afterwards we do not use the filter anymore176 177 // filter up to a certain convergance value and leave out background (sky) by checking depth178 if ((convergence < SSAO_CONVERGENCE_THRESHOLD) && (depth < DEPTH_THRESHOLD))179 {180 // the filtered ssao value181 OUT.illum_col.x = FilterXY(IN.texCoord, ssaoTex, colorsTex, bl, br, tl, tr, xyStep, convergence);182 }183 184 return OUT;185 }186 191 187 192 /** Function combining image and indirect illumination buffer using a … … 223 228 { 224 229 //OUT.illum_col.xyz = col.xyz * max(2e-2f, 1.0f - ao.x); 225 OUT.illum_col.xyz = max( 2e-2f, 1.0f - ao.x);230 OUT.illum_col.xyz = max(1e-3f, 1.0f - ao.x); 226 231 } 227 232 else
Note: See TracChangeset
for help on using the changeset viewer.