Ignore:
Timestamp:
12/26/08 02:44:45 (16 years ago)
Author:
mattausch
Message:
 
File:
1 edited

Legend:

Unmodified
Added
Removed
  • GTP/trunk/App/Demos/Vis/FriendlyCulling/src/shaders/depthOfField.cg

    r3232 r3235  
    77 
    88 
    9 float2 ComputeBlurFactors(float4 color, float sceneRange) 
     9float2 ComputeBlurFactors(float4 color, float sceneRange, float zFocus) 
    1010{ 
    1111        float2 result; 
    1212 
     13        const float m = 1.0f; 
     14        const float focalLen = 1.0f; 
     15 
     16        const float scale = 5e4f; 
     17 
    1318        // Compute blur factor based on the CoC size scaled and normalized to 0..1 range 
    14         //float pixCoC = abs(Dlens * focalLen * (Zfocus - v.fDepth) / (Zfocus * (v.fDepth - focalLen))); 
     19        //float blur = abs(dLens * focalLen * (zFocus - color.w)) / (1e-6f + abs(zFocus * (color.w - focalLen))); 
     20 
     21        const float dist = abs(zFocus - color.w); 
     22        const float blur = scale * m * focalLen * dist / (sceneRange * (1e-6f + abs(color.w + dist * step(0, zFocus - color.w)))); 
    1523         
    16         //float blur = saturate(pixCoC * scale / maxCoC); 
     24        //float blur = saturate(blur * scale / maxCoC); 
    1725         
    1826        // Depth/blurriness value scaled to 0..1 range 
    19         //result = float2(v.fDepth / sceneRange, blur); 
     27        result = float2(color.w / sceneRange, blur); 
    2028 
    2129        return result; 
     
    3038                        ) 
    3139{ 
    32         float average = .0f; 
     40        float4 avgCol = float4(.0f); 
    3341        float total_w = .0f; 
    3442 
    3543        for (int i = 0; i < NUM_DOF_TABS; ++ i) 
    3644        { 
    37                 float2 sampleTexCoord = texCoords + filterOffs[i]; 
     45                float2 sampleTexCoord = texCoords + filterOffs[i] * blurFactors.y; 
    3846                float4 sampleCol = tex2Dlod(colorsTex, float4(sampleTexCoord, 0, 0)); 
    3947                 
     
    4149                float w = 1; 
    4250                 
    43                 average += sampleCol * w; 
     51                avgCol += sampleCol * w; 
    4452                total_w += w; 
    4553        } 
    4654 
    47         average /= max(total_w, 1e-6f); 
     55        avgCol /= max(total_w, 1e-6f); 
    4856 
    49         return saturate(average); 
     57        return avgCol; 
    5058} 
    5159 
     
    5462                                        uniform sampler2D colorsTex, 
    5563                                        uniform float2 filterOffs[NUM_DOF_TABS], 
    56                                         uniform float sceneRange 
     64                                        uniform float sceneRange, 
     65                                        uniform float zFocus 
    5766                                         ): COLOR 
    5867{ 
     
    6069        const float4 color = tex2Dlod(colorsTex, float4(IN.texCoords, 0, 0)); 
    6170         
    62         float2 blurFactors = ComputeBlurFactors(color, sceneRange); 
     71        zFocus = min(zFocus, sceneRange * 0.5f); 
     72        float2 blurFactors = ComputeBlurFactors(color, sceneRange, zFocus); 
     73 
     74        //float4 outCol = float4(color.x, color.y, blurFactors.y, color.w); 
    6375        float4 outCol = Blur(color, IN.texCoords, blurFactors, colorsTex, filterOffs); 
    6476         
Note: See TracChangeset for help on using the changeset viewer.