Changeset 2992


Ignore:
Timestamp:
10/02/08 17:34:10 (16 years ago)
Author:
mattausch
Message:

tone mapping working with using reconstructed depth

Location:
GTP/trunk/App/Demos/Vis/FriendlyCulling/src
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • GTP/trunk/App/Demos/Vis/FriendlyCulling/src/DeferredRenderer.cpp

    r2991 r2992  
    3434static CGprogram sCgCombinedIllumProgram = NULL; 
    3535 
     36static CGparameter sColorsTexLogLumParam; 
     37 
     38 
    3639 
    3740static CGprogram sCgInitialIntensityProgram; 
    3841static CGprogram sCgDownSampleProgram; 
    3942static CGprogram sCgToneProgram; 
     43static CGprogram sCgLogLumProgram; 
     44 
    4045 
    4146 
     
    143148int DeferredRenderer::colorBufferIdx = 0; 
    144149 
     150 
    145151static void PrintGLerror(char *msg) 
    146152{ 
     
    153159                fprintf(stderr,"OpenGL ERROR: %s: %s\n", errStr, msg); 
    154160        } 
    155 } 
    156  
    157 static int computeSize(int level) 
    158 { 
    159         // Compute total image size. 
    160         float w = 1024; 
    161         float h = 768; 
    162  
    163         int mipmapSize = max(1, w / (1 << level) ) *  
    164                              max(1, h / (1 << level) ) * sizeof(float) * 4; 
    165  
    166         return mipmapSize; 
    167161} 
    168162 
     
    323317                sPositionsTexDeferredParam = cgGetNamedParameter(sCgDeferredProgram, "positions");   
    324318                sColorsTexDeferredParam = cgGetNamedParameter(sCgDeferredProgram, "colors");   
    325                 //sOldColorsTexDeferredParam = cgGetNamedParameter(sCgDeferredProgram, "oldColors"); 
    326319                sNormalsTexDeferredParam = cgGetNamedParameter(sCgDeferredProgram, "normals"); 
    327320                 
     
    492485                sSamplesShadowParam = cgGetNamedParameter(sCgDeferredShadowProgram, "samples"); 
    493486                sLightDirShadowParam = cgGetNamedParameter(sCgDeferredShadowProgram, "lightDir"); 
    494                 //sOldColorsTexShadowParam = cgGetNamedParameter(sCgDeferredShadowProgram, "oldColors"); 
    495  
    496487 
    497488                PoissonDiscSampleGenerator2 poisson(NUM_PCF_TABS, 1.0f); 
     
    502493        else 
    503494                cerr << "deferred program failed to load" << endl; 
     495 
     496        sCgLogLumProgram =  
     497                cgCreateProgramFromFile(context,  
     498                                                                CG_SOURCE, 
     499                                                                "src/shaders/tonemap.cg",  
     500                                                                RenderState::sCgFragmentProfile, 
     501                                                                "CalcAvgLogLum", 
     502                                                                NULL); 
     503 
     504        if (sCgLogLumProgram != NULL) 
     505        { 
     506                cgGLLoadProgram(sCgLogLumProgram); 
     507                sColorsTexLogLumParam = cgGetNamedParameter(sCgLogLumProgram, "colors");   
     508        } 
     509        else 
     510                cerr << "avg loglum program failed to load" << endl; 
     511 
    504512 
    505513        sCgToneProgram =  
     
    524532                cerr << "tone program failed to load" << endl; 
    525533 
     534/* 
    526535        sCgInitialIntensityProgram =  
    527536                cgCreateProgramFromFile(context,  
     
    542551                cerr << "intensity program failed to load" << endl; 
    543552 
    544  
     553*/ 
    545554 
    546555        PrintGLerror("init"); 
     
    655664        GLuint normalsTex = fbo->GetColorBuffer(2)->GetTexture(); 
    656665 
    657         // generate mip map levels of position texture 
    658         glBindTexture(GL_TEXTURE_2D, positionsTex); 
    659         glGenerateMipmapEXT(GL_TEXTURE_2D); 
    660          
    661  
     666        // generate mip map levels of position in order to improve texture lookup performance 
     667        //glBindTexture(GL_TEXTURE_2D, positionsTex); glGenerateMipmapEXT(GL_TEXTURE_2D); 
     668         
    662669        // read the second buffer, write to the first buffer 
    663670        mFbo->Bind(); 
     
    743750 
    744751 
    745 Vector3 Interpol(float wx, float wy, Vector3 bl, Vector3 br, Vector3 tl, Vector3 tr) 
    746 { 
    747         //float3 x1 = lerp(oldColor.w, logLumScaled, 0.1f); 
    748         Vector3 x1 = bl * (1.0f - wx) + br * wx; 
    749         Vector3 x2 = tl * (1.0f - wx) + tr * wx; 
    750  
    751         Vector3 v = x1 * (1.0f - wy) + x2 * wy; 
    752  
    753         return v; 
    754 } 
    755  
    756  
    757752void DeferredRenderer::ComputeViewVectors(Vector3 &tl, Vector3 &tr, Vector3 &bl, Vector3 &br) 
    758753{ 
     
    830825        GLuint normalsTex = fbo->GetColorBuffer(2)->GetTexture(); 
    831826 
    832         //GLuint oldColorsTex = fbo->GetColorBuffer(3 - colorBufferIdx)->GetTexture(); 
    833  
    834827        fbo->Bind(); 
    835828 
     
    845838        cgGLSetTextureParameter(sColorsTexDeferredParam, colorsTex); 
    846839        cgGLEnableTextureParameter(sColorsTexDeferredParam); 
    847  
    848         //cgGLSetTextureParameter(sOldColorsTexDeferredParam, oldColorsTex); 
    849         //cgGLEnableTextureParameter(sOldColorsTexDeferredParam); 
    850840 
    851841        cgGLSetTextureParameter(sPositionsTexDeferredParam, positionsTex); 
     
    873863 
    874864        cgGLDisableTextureParameter(sColorsTexDeferredParam); 
    875         //cgGLDisableTextureParameter(sOldColorsTexDeferredParam); 
    876865        cgGLDisableTextureParameter(sPositionsTexDeferredParam); 
    877866        cgGLDisableTextureParameter(sNormalsTexDeferredParam); 
     
    11111100        GLuint shadowTex = shadowMap->GetDepthTexture(); 
    11121101 
    1113         //GLuint oldColorsTex = fbo->GetColorBuffer(3 - colorBufferIdx)->GetTexture(); 
    1114  
    11151102        Matrix4x4 shadowMatrix; 
    11161103        shadowMap->GetTextureMatrix(shadowMatrix); 
     
    11361123        cgGLEnableTextureParameter(sShadowMapParam); 
    11371124 
    1138         //cgGLSetTextureParameter(sOldColorsTexShadowParam, oldColorsTex); 
    1139         //cgGLEnableTextureParameter(sOldColorsTexShadowParam); 
    1140  
    11411125        cgGLSetParameter1f(sMaxDepthShadowParam, mScaleFactor); 
    11421126 
    1143         //cgGLSetParameter1f(sSampleWidthParam, 10.0f / shadowMap->GetSize()); 
    11441127        cgGLSetParameter1f(sSampleWidthParam, 2.0f / shadowMap->GetSize()); 
    11451128         
     
    11721155        cgGLDisableTextureParameter(sShadowMapParam); 
    11731156        cgGLDisableTextureParameter(sNoiseTexShadowParam); 
    1174         //cgGLDisableTextureParameter(sOldColorsTexShadowParam); 
    11751157 
    11761158        FrameBufferObject::Release(); 
     
    12181200        middleGrey = lightIntensity * maxKey + (1.0f - lightIntensity) * minKey; 
    12191201 
     1202#if 1 
    12201203 
    12211204        ////////// 
     
    12231206 
    12241207        ColorBufferObject *colorBuffer = fbo->GetColorBuffer(colorBufferIdx); 
     1208        GLuint colorsTex = colorBuffer->GetTexture(); 
    12251209 
    12261210        fbo->Bind(); 
     
    12281212        colorBufferIdx = 3 - colorBufferIdx; 
    12291213        glDrawBuffers(1, mrt + colorBufferIdx); 
    1230  
    1231         GLuint colorsTex = colorBuffer->GetTexture(); 
    1232          
     1214         
     1215 
    12331216        glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); 
    12341217 
    12351218        cgGLEnableProfile(RenderState::sCgFragmentProfile); 
    1236         cgGLBindProgram(sCgToneProgram); 
     1219        cgGLBindProgram(sCgLogLumProgram); 
    12371220         
    12381221        cgGLSetTextureParameter(sColorsTexLogLumParam, colorsTex); 
    1239          
    1240         glColor3f(1.0f, 1.0f, 1.0f); 
    1241  
    1242         glBegin(GL_QUADS); 
    1243  
    1244         glColor3f(1.0f, 1.0f, 1.0f); 
    1245  
     1222        cgGLEnableTextureParameter(sColorsTexLogLumParam); 
     1223         
    12461224        const float offs = 0.5f; 
    12471225 
     
    12611239        PrintGLerror("ToneMapParams"); 
    12621240 
     1241#endif 
    12631242 
    12641243        /////////////////// 
  • GTP/trunk/App/Demos/Vis/FriendlyCulling/src/chcdemo.cpp

    r2991 r2992  
    215215bool altKeyPressed = false; 
    216216 
    217 #define USE_TONE_MAPPING 1 
     217#define USE_TONE_MAPPING 0 
    218218 
    219219 
  • GTP/trunk/App/Demos/Vis/FriendlyCulling/src/shaders/deferred.cg

    r2991 r2992  
    7676        // an ambient color term 
    7777        float amb = color.w; 
    78  
    7978        float3 normal = normalize(norm.xyz); 
    80  
    8179        float4 col = shade(IN, color, position, normal, amb, lightDir); 
    8280         
    8381        OUT.color = col; 
    8482         
    85 #if 0 
     83#if 1 
    8684 
    8785        OUT.color.w = color.w; 
     
    217215        //-- write out logaritmic luminance for tone mapping 
    218216 
    219 #if 0 
    220  
     217#if 1 
    221218        OUT.color.w = color.w; 
    222  
    223219#else 
    224220 
  • GTP/trunk/App/Demos/Vis/FriendlyCulling/src/shaders/ssao.cg

    r2991 r2992  
    4242 
    4343 
     44// reconstruct world space position 
    4445inline float3 ReconstructSamplePosition(float3 eyePos,  
    4546                                                                                uniform sampler2D colors, 
     
    4748                                                                                float3 bl, float3 br, float3 tl, float3 tr) 
    4849{ 
    49         /*float eyeSpaceDepth = tex2Dlod(colors, float4(texcoord, 0, SSAO_MIPMAP_LEVEL)).w; 
    50                  
    51         // reconstruct world space position 
     50        float eyeSpaceDepth = tex2Dlod(colors, float4(texcoord, 0, SSAO_MIPMAP_LEVEL)).w; 
    5251        float3 rotView = normalize(Interpol(texcoord, bl, br, tl, tr)); 
    53         float3 sample_position = eyePos - rotView * eyeSpaceDepth;*/ 
    54         float3 sample_position = tex2Dlod(colors, float4(texcoord, 0, SSAO_MIPMAP_LEVEL)).xyz; 
     52         
     53        float3 sample_position = eyePos - rotView * eyeSpaceDepth; 
     54        //float3 sample_position = tex2Dlod(colors, float4(texcoord, 0, SSAO_MIPMAP_LEVEL)).xyz; 
    5555 
    5656        return sample_position; 
     
    174174 
    175175        //const float2 ao = ssao(IN, positions, noiseTexture, samples, normal, centerPosition, w, viewDir, eyePos); 
    176         const float2 ao = ssao(IN, positions, noiseTexture, samples, normal, centerPosition, w, eyePos, bl, br, tl, tr); 
     176        const float2 ao = ssao(IN, colors, noiseTexture, samples, normal, centerPosition, w, eyePos, bl, br, tl, tr); 
    177177                 
    178178 
  • GTP/trunk/App/Demos/Vis/FriendlyCulling/src/shaders/tonemap.cg

    r2991 r2992  
    114114        pixel OUT; 
    115115 
     116        float4 color = tex2Dlod(colors, float4(IN.texCoord.xy, 0, 0)); 
     117 
     118        OUT.col = color; 
     119 
    116120        // the old loglum is stored in the hightest mipmap-level 
    117         float4 color = tex2Dlod(colors, float4(IN.texCoord.xy, 0, 0)); 
    118121        float oldLogLum = tex2Dlod(colors, float4(IN.texCoord.xy, 0, MAX_LOD_LEVEL)).w; 
    119122 
     
    127130        float logLumScaled = logLum * INV_LOGLUM_RANGE - logLumOffset; 
    128131 
    129         OUT.color = color; 
     132        if (oldLogLum > 0) 
     133                OUT.col.w = lerp(oldLogLum, logLumScaled, 0.1f); 
     134        else 
     135                OUT.col.w = logLumScaled; 
    130136 
    131         if (oldLogLum > 0) 
    132                 OUT.color.w = lerp(oldLogLum, logLumScaled, 0.1f); 
    133         else 
    134                 OUT.color.w = logLumScaled; 
     137        return OUT; 
    135138} 
Note: See TracChangeset for help on using the changeset viewer.