Ignore:
Timestamp:
10/13/08 10:13:27 (16 years ago)
Author:
mattausch
Message:

debug version: what to do with shader programs??

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

Legend:

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

    r3027 r3028  
    142142 
    143143        glEnd(); 
    144  
    145         p->Release(); 
    146144} 
    147145 
     
    550548        glEnd(); 
    551549 
    552         sCgAntiAliasingProgram->Release(); 
    553  
    554550        PrintGLerror("antialiasing"); 
    555551} 
  • GTP/trunk/App/Demos/Vis/FriendlyCulling/src/Material.cpp

    r2965 r3028  
    5959        state->SetState(mTexture != NULL, mAlphaTestEnabled, mCullFaceEnabled); 
    6060 
    61         if (state->GetRenderPassType() == RenderState::DEFERRED) 
    62         { 
    63                 if (mTexture) 
    64                 { 
    65                         cgGLSetTextureParameter(RenderState::sTexParam, mTexture->GetId()); 
    66                         cgGLEnableTextureParameter(RenderState::sTexParam); 
    67                 } 
    68                 else 
    69                 { 
    70                         cgGLDisableTextureParameter(RenderState::sTexParam); 
    71                 } 
    72         } 
    73         else 
    74         { 
    75                 if (mTexture) 
    76                         mTexture->Bind(); 
    77                 else 
    78                         glBindTexture(GL_TEXTURE_2D, 0); 
    79         } 
     61        state->SetTexture(mTexture); 
    8062 
    8163        glMaterialfv(GL_FRONT, GL_AMBIENT, (float *)&mAmbientColor.r); 
  • GTP/trunk/App/Demos/Vis/FriendlyCulling/src/RenderState.cpp

    r2965 r3028  
    22#include "Geometry.h" 
    33#include "Material.h" 
     4#include "ShaderProgram.h" 
     5#include "Texture.h" 
    46 
    57using namespace std; 
     
    1113CGprofile RenderState::sCgVertexProfile;  
    1214 
    13 CGprogram RenderState::sCgMrtFragmentProgram = NULL; 
    14 CGprogram RenderState::sCgMrtFragmentTexProgram = NULL; 
    15 CGparameter RenderState::sTexParam; 
     15ShaderProgram *RenderState::sCgMrtFragmentProgram = NULL; 
     16ShaderProgram *RenderState::sCgMrtFragmentTexProgram = NULL; 
     17int RenderState::sTexParam; 
    1618 
    1719 
     
    123125 
    124126                if (mRenderType == DEFERRED) 
    125                         cgGLBindProgram(sCgMrtFragmentProgram); 
    126  
    127                 glDisable(GL_TEXTURE_2D); 
     127                        sCgMrtFragmentProgram->Bind(); 
     128                else 
     129                        glDisable(GL_TEXTURE_2D); 
     130 
    128131                glDisableClientState(GL_TEXTURE_COORD_ARRAY); 
    129132        } 
     
    136139 
    137140                        if (mRenderType == DEFERRED) 
    138                                 cgGLBindProgram(sCgMrtFragmentTexProgram); 
    139  
    140                         glEnable(GL_TEXTURE_2D); 
     141                                sCgMrtFragmentTexProgram->Bind(); 
     142                        else 
     143                                glEnable(GL_TEXTURE_2D); 
     144 
    141145                        glEnableClientState(GL_TEXTURE_COORD_ARRAY); 
    142146                } 
     
    190194 
    191195 
    192 } 
     196void RenderState::SetTexture(Texture *tex) 
     197{ 
     198        if (tex) 
     199        { 
     200                if (GetRenderPassType() == RenderState::DEFERRED) 
     201                { 
     202                        RenderState::sCgMrtFragmentProgram->SetTexture("tex", tex->GetId()); 
     203                } 
     204                else 
     205                { 
     206                        tex->Bind(); 
     207                } 
     208        } 
     209        else 
     210        { 
     211                if (!GetRenderPassType() == RenderState::DEFERRED) 
     212                        glBindTexture(GL_TEXTURE_2D, 0);                 
     213        } 
     214} 
     215 
     216 
     217} 
  • GTP/trunk/App/Demos/Vis/FriendlyCulling/src/RenderState.h

    r2965 r3028  
    1111namespace CHCDemoEngine  
    1212{ 
     13 
     14class ShaderProgram; 
     15class Texture; 
    1316 
    1417/** The current render state. 
     
    7073        */ 
    7174        void LockCullFaceEnabled(bool lockCull); 
     75        /** Set a new texture. 
     76        */ 
     77        void SetTexture(Texture *tex); 
    7278 
    7379 
     
    7884        static CGprofile sCgVertexProfile;  
    7985 
    80         static CGprogram sCgMrtFragmentProgram; 
    81         static CGprogram sCgMrtFragmentTexProgram; 
     86        static ShaderProgram *sCgMrtFragmentProgram; 
     87        static ShaderProgram *sCgMrtFragmentTexProgram; 
    8288 
    83         static CGparameter sTexParam; 
     89        static int sTexParam; 
     90 
    8491 
    8592protected: 
  • GTP/trunk/App/Demos/Vis/FriendlyCulling/src/ShaderProgram.h

    r3025 r3028  
    4545        void SetArray2f(const std::string &name, float *vals, int numElements); 
    4646        void SetArray3f(const std::string &name, float *vals, int numElements); 
     47        /** Sets the matrix parameter. 
     48        */ 
     49        void SetMatrix(const std::string &name, const Matrix4x4 &mat); 
     50        /** Sets the texture parameter. 
     51        */ 
     52        void SetTexture(const std::string &name, unsigned int tex); 
     53        /** Enable / disable a texture parameter. 
     54        */ 
     55        void EnableTexture(const std::string &name); 
    4756 
    48         void SetMatrix(const std::string &name, const Matrix4x4 &mat); 
    49  
    50         void SetTexture(const std::string &name,  unsigned int tex); 
    51  
    52         void Release(); 
    53  
     57        void DisableTexture(const std::string &name); 
     58        /** Binds the program. 
     59        */ 
    5460        void Bind(); 
    55  
     61        /** Returns true if this program is valid. 
     62        */ 
    5663        inline bool IsValid() { return mProgram != NULL; } 
    5764 
  • GTP/trunk/App/Demos/Vis/FriendlyCulling/src/Transform3.h

    r2961 r3028  
    5151        static CGparameter sModelMatrixParam; 
    5252 
     53 
    5354protected: 
    5455 
  • GTP/trunk/App/Demos/Vis/FriendlyCulling/src/chcdemo.cpp

    r3026 r3028  
    281281 
    282282static CGcontext sCgContext = NULL; 
    283 static CGprogram sCgMrtVertexProgram = NULL; 
     283 
     284ShaderProgram *sCgMrtVertexProgram = NULL; 
    284285 
    285286static CGparameter sEyePosParamTex; 
     
    554555        cgGLSetOptimalOptions(RenderState::sCgVertexProfile); 
    555556 
     557        cgGLSetManageTextureParameters(sCgContext, true); 
     558 
    556559        sCgMrtVertexProgram =  
    557                 cgCreateProgramFromFile(sCgContext,  
    558                                                                 CG_SOURCE, 
    559                                                                 "src/shaders/mrt.cg",  
    560                                                                 RenderState::sCgVertexProfile, 
    561                                                                 "vtx", 
    562                                                                 NULL); 
    563  
    564         if (sCgMrtVertexProgram != NULL) 
    565         { 
    566                 cgGLLoadProgram(sCgMrtVertexProgram); 
    567  
    568                 //sInvViewProjParam = cgGetNamedParameter(sCgMrtVertexProgram, "InvViewProj"); 
    569                 Transform3::sModelMatrixParam = cgGetNamedParameter(sCgMrtVertexProgram, "ModelView"); 
    570         } 
     560                new ShaderProgram(sCgContext, "src/shaders/mrt.cg", RenderState::sCgFragmentProfile, "vtx"); 
     561 
     562        if (!sCgMrtVertexProgram->IsValid()) 
     563                cerr << "fragment program failed to load" << endl; 
    571564 
    572565        RenderState::sCgMrtFragmentTexProgram =  
    573                 cgCreateProgramFromFile(sCgContext,  
    574                                                                 CG_SOURCE, 
    575                                                                 "src/shaders/mrt.cg",  
    576                                                                 RenderState::sCgFragmentProfile, 
    577                                                                 "fragtex", 
    578                                                                 NULL); 
    579  
    580         if (RenderState::sCgMrtFragmentTexProgram != NULL) 
    581         { 
    582                 cgGLLoadProgram(RenderState::sCgMrtFragmentTexProgram); 
    583  
    584                 sEyePosParamTex = cgGetNamedParameter(RenderState::sCgMrtFragmentTexProgram, "eyePos"); 
    585                 RenderState::sTexParam = cgGetNamedParameter(RenderState::sCgMrtFragmentTexProgram, "tex"); 
    586         } 
    587         else 
    588                 cerr << "fragment tex program failed to load" << endl; 
     566                new ShaderProgram(sCgContext, "src/shaders/mrt.cg", RenderState::sCgFragmentProfile, "fragtex"); 
     567 
     568        if (!RenderState::sCgMrtFragmentTexProgram->IsValid()) 
     569                cerr << "fragment program failed to load" << endl; 
    589570 
    590571        RenderState::sCgMrtFragmentProgram =  
    591                 cgCreateProgramFromFile(sCgContext,  
    592                                                                 CG_SOURCE, 
    593                                                                 "src/shaders/mrt.cg",  
    594                                                                 RenderState::sCgFragmentProfile, 
    595                                                                 "frag", 
    596                                                                 NULL); 
    597  
    598         if (RenderState::sCgMrtFragmentProgram != NULL) 
    599         { 
    600                 cgGLLoadProgram(RenderState::sCgMrtFragmentProgram); 
    601  
    602                 sEyePosParam = cgGetNamedParameter(RenderState::sCgMrtFragmentProgram, "eyePos"); 
    603         } 
    604         else 
     572                new ShaderProgram(sCgContext, "src/shaders/mrt.cg", RenderState::sCgFragmentProfile, "frag"); 
     573 
     574        if (!RenderState::sCgMrtFragmentProgram->IsValid()) 
    605575                cerr << "fragment program failed to load" << endl; 
    606576         
     
    938908 
    939909        cgGLEnableProfile(RenderState::sCgVertexProfile); 
    940         cgGLBindProgram(sCgMrtVertexProgram); 
     910        sCgMrtVertexProgram->Bind(); 
    941911 
    942912        cgGLEnableProfile(RenderState::sCgFragmentProfile); 
    943         cgGLBindProgram(RenderState::sCgMrtFragmentProgram); 
     913        RenderState::sCgMrtFragmentProgram->Bind(); 
    944914 
    945915        const Vector3 pos = camera->GetPosition(); 
     
    17791749        DEL_PTR(shadowMap); 
    17801750        DEL_PTR(shadowTraverser); 
    1781  
    1782         if (sCgMrtVertexProgram)  
    1783                 cgDestroyProgram(sCgMrtVertexProgram); 
    1784  
    1785         if (RenderState::sCgMrtFragmentProgram) 
    1786                 cgDestroyProgram(RenderState::sCgMrtFragmentProgram); 
    1787  
    1788         if (RenderState::sCgMrtFragmentTexProgram) 
    1789                 cgDestroyProgram(RenderState::sCgMrtFragmentTexProgram); 
     1751        DEL_PTR(RenderState::sCgMrtFragmentProgram); 
     1752        DEL_PTR(RenderState::sCgMrtFragmentTexProgram); 
     1753        DEL_PTR(sCgMrtVertexProgram); 
    17901754         
    17911755        DeferredRenderer::ReleaseCG(); 
  • GTP/trunk/App/Demos/Vis/FriendlyCulling/src/shaders/ssao.cg

    r3026 r3028  
    172172        currentPos /= currentPos.w; 
    173173         
    174         const float currentDepth = currentPos.z * 1e-3f; 
     174        const float precisionScale = 1e-3f; 
     175        const float currentDepth = currentPos.z * precisionScale; 
    175176 
    176177        const float2 ao = ssao(IN, colors, noise, samples, normal, eyeSpacePos, w, bl, br, tl, tr, normalize(viewDir)); 
     
    188189 
    189190        // the current depth projected into the old frame 
    190         const float projDepth = projPos.z * 1e-3f; 
     191        const float projDepth = projPos.z * precisionScale; 
    191192 
    192193        // fit from unit cube into 0 .. 1 
     
    202203 
    203204        //const float oldNumSamples = oldCol.y; 
    204         const float oldWeight = 50;//clamp(oldCol.y, 0, temporalCoherence); 
     205        const float oldWeight = clamp(oldCol.y, 0, temporalCoherence); 
    205206 
    206207        float newWeight; 
Note: See TracChangeset for help on using the changeset viewer.