Ignore:
Timestamp:
02/20/09 19:26:13 (15 years ago)
Author:
mattausch
Message:

indexing working not so bad

File:
1 edited

Legend:

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

    r3322 r3324  
    7171static GLuint noiseTex2D = 0; 
    7272static GLuint noiseTex1D = 0; 
    73  
    74  
     73static GLuint sampleTex2D = 0; 
     74 
     75 
     76static Sample2 samples2[NUM_PRECOMPUTED_SAMPLES]; 
    7577// ssao random spherical samples 
    76 static Sample2 samples2[NUM_SAMPLES]; 
    77 //#define NUM_PRECOMPUTED_SAMPLES 240 
    78 //static Sample2 samples2[NUM_PRECOMPUTED_SAMPLES]; 
     78//static Sample2 samples2[NUM_SAMPLES]; 
     79 
    7980// pcf samples 
    8081static Sample2 pcfSamples[NUM_PCF_TABS]; 
     
    212213        case DeferredRenderer::SAMPLING_QUADRATIC: 
    213214                { 
    214                         //static QuadraticDiscSampleGenerator2D g(NUM_PRECOMPUTED_SAMPLES, 1.0f); 
     215                        QuadraticDiscSampleGenerator2D g(NUM_PRECOMPUTED_SAMPLES, 1.0f); 
    215216                        //static QuadraticDiscSampleGenerator2D g(NUM_SAMPLES, 1.0f); 
    216                         static QuadraticDiscSampleGenerator2D g(NUM_SAMPLES, 1.0f); 
    217217                        g.Generate((float *)samples2); 
    218218                } 
     
    263263 
    264264        cout << "created noise texture" << endl; 
     265 
     266        PrintGLerror("noisetexture"); 
     267} 
     268 
     269 
     270static void CreateSampleTex(Sample2 *samples, int numSamples) 
     271{ 
     272        glEnable(GL_TEXTURE_2D); 
     273        glGenTextures(1, &sampleTex2D); 
     274        glBindTexture(GL_TEXTURE_2D, sampleTex2D); 
     275                 
     276        glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST); 
     277        glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST); 
     278        glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT); 
     279        glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT); 
     280 
     281        int w = numSamples; 
     282        int h = 1; 
     283 
     284        float *tempBuffer = new float[numSamples * 3]; 
     285 
     286        for (int i = 0; i < numSamples; ++ i) 
     287        { 
     288                tempBuffer[i * 3 + 0] = samples[i].x; 
     289                tempBuffer[i * 3 + 1] = samples[i].y; 
     290                tempBuffer[i * 3 + 2] = 0; 
     291                 
     292        } 
     293 
     294        glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA32F_ARB, w, h, 0, GL_RGB, GL_FLOAT, (float *)tempBuffer); 
     295 
     296        glBindTexture(GL_TEXTURE_2D, 0); 
     297        glDisable(GL_TEXTURE_2D); 
     298 
     299        cout << "created sample texture" << endl; 
     300 
     301        delete [] tempBuffer; 
    265302 
    266303        PrintGLerror("noisetexture"); 
     
    439476                 "modelViewProj", "oldModelViewProj", "oldEyePos", "oldbl", "oldbr",  
    440477                 "oldtl", "oldtr", "attribsTex", "kernelRadius", "sampleIntensity"}; 
     478         
    441479        sCgSsaoProgram->AddParameters(ssaoParams, 0, 20); 
    442480         
     
    751789        sCgSsaoProgram->SetValue1f(i ++, (mUseTemporalCoherence && !mRegenerateSamples) ? tempCohFactor : 0); 
    752790         
    753         static int currentPos = 0; 
    754  
    755         if (mUseTemporalCoherence || mRegenerateSamples) 
     791        if (/*mUseTemporalCoherence || */mRegenerateSamples) 
    756792        { 
    757793                mRegenerateSamples = false; 
     
    760796                // in the first case, the sample patterns look nicer, but the kernel 
    761797                // needs longer to converge 
    762                 //if (currentPos + NUM_SAMPLES >= NUM_PRECOMPUTED_SAMPLES)      { 
    763                         currentPos = 0; 
    764                         GenerateSamples(mSamplingMethod); 
    765                 //} 
    766  
     798                GenerateSamples(mSamplingMethod); 
     799                CreateSampleTex(samples2, NUM_PRECOMPUTED_SAMPLES); 
    767800                //if (mSortSamples) { SortSamples(); } 
    768                 sCgSsaoProgram->SetArray2f(i, (float *)samples2 + currentPos, NUM_SAMPLES); 
    769  
    770                 currentPos += NUM_SAMPLES; 
     801                //sCgSsaoProgram->SetArray2f(i, (float *)samples2, NUM_SAMPLES); 
     802                //sCgSsaoProgram->SetArray2f(i, (float *)samples2, NUM_PRECOMPUTED_SAMPLES); 
     803                sCgSsaoProgram->SetTexture(i, sampleTex2D); 
    771804        } 
    772805         
     
    774807 
    775808        for (int j = 0; j < 4; ++ j, ++ i) 
     809        { 
    776810                sCgSsaoProgram->SetValue3f(i, mCornersView[j].x, mCornersView[j].y, mCornersView[j].z); 
     811        } 
    777812 
    778813        sCgSsaoProgram->SetMatrix(i ++, mProjViewMatrix); 
Note: See TracChangeset for help on using the changeset viewer.