Changeset 3037 for GTP/trunk/App/Demos


Ignore:
Timestamp:
10/17/08 02:29:01 (16 years ago)
Author:
mattausch
Message:
 
Location:
GTP/trunk/App/Demos/Vis/FriendlyCulling
Files:
6 edited

Legend:

Unmodified
Added
Removed
  • GTP/trunk/App/Demos/Vis/FriendlyCulling/FriendlyCulling.sln

    r3019 r3037  
    77EndProject 
    88Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "MainApp", "MainApp.vcproj", "{A564071F-D054-4556-883B-999D7F9CC58C}" 
     9        ProjectSection(ProjectDependencies) = postProject 
     10                {03661866-4093-4B02-B26A-028EA91AF023} = {03661866-4093-4B02-B26A-028EA91AF023} 
     11        EndProjectSection 
     12EndProject 
     13Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "IrradianceMapping", "IrradianceMapping.vcproj", "{91680C49-A358-48AE-A02C-66CB884B7D7F}" 
    914        ProjectSection(ProjectDependencies) = postProject 
    1015                {03661866-4093-4B02-B26A-028EA91AF023} = {03661866-4093-4B02-B26A-028EA91AF023} 
     
    2934                {A564071F-D054-4556-883B-999D7F9CC58C}.Release|Win32.ActiveCfg = Release|Win32 
    3035                {A564071F-D054-4556-883B-999D7F9CC58C}.Release|Win32.Build.0 = Release|Win32 
     36                {91680C49-A358-48AE-A02C-66CB884B7D7F}.Debug|Win32.ActiveCfg = Debug|Win32 
     37                {91680C49-A358-48AE-A02C-66CB884B7D7F}.Debug|Win32.Build.0 = Debug|Win32 
     38                {91680C49-A358-48AE-A02C-66CB884B7D7F}.Release|Win32.ActiveCfg = Release|Win32 
     39                {91680C49-A358-48AE-A02C-66CB884B7D7F}.Release|Win32.Build.0 = Release|Win32 
    3140        EndGlobalSection 
    3241        GlobalSection(SolutionProperties) = preSolution 
  • GTP/trunk/App/Demos/Vis/FriendlyCulling/IrradianceMapping.vcproj

    r3017 r3037  
    183183        <Files> 
    184184                <Filter 
    185                         Name="Source Files" 
    186                         Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx" 
    187                         UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}" 
    188                         > 
    189                         <File 
    190                                 RelativePath=".\src\irradiance.cpp" 
    191                                 > 
    192                         </File> 
    193                 </Filter> 
    194                 <Filter 
    195185                        Name="Header Files" 
    196186                        Filter="h;hpp;hxx;hm;inl;inc;xsd" 
    197187                        UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}" 
    198188                        > 
     189                        <Filter 
     190                                Name="Source Files" 
     191                                Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx" 
     192                                UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}" 
     193                                > 
     194                                <File 
     195                                        RelativePath=".\src\irradiance.cpp" 
     196                                        > 
     197                                </File> 
     198                        </Filter> 
    199199                </Filter> 
    200200        </Files> 
  • GTP/trunk/App/Demos/Vis/FriendlyCulling/src/ResourceManager.cpp

    r3036 r3037  
    3232{ 
    3333 
     34// only instance of the resource manager 
     35ResourceManager *ResourceManager::sResourceManager = NULL; 
    3436 
    3537ResourceManager::~ResourceManager() 
     
    4446        CLEAR_CONTAINER(mLODs); 
    4547        CLEAR_CONTAINER(mGPUParameters); 
     48        CLEAR_CONTAINER(mShaders); 
    4649} 
    4750 
     
    324327} 
    325328 
    326 } 
    327  
     329 
     330ShaderProgram *CreateShaderProgram(const std::string &filename, const std::string &funcName, bool isFragment) 
     331{ 
     332        ShaderProgram *p; 
     333        return p; 
     334} 
     335 
     336} 
     337 
  • GTP/trunk/App/Demos/Vis/FriendlyCulling/src/ResourceManager.h

    r3036 r3037  
    3333public: 
    3434 
    35         ~ResourceManager(); 
     35        /** Returns the resource manager as a singleton. 
     36        */ 
     37        static ResourceManager *GetSingleton() 
     38        { 
     39                if (!sResourceManager) 
     40                { 
     41                        sResourceManager = new ResourceManager(); 
     42                } 
     43 
     44                return sResourceManager; 
     45        } 
     46 
     47        /** We also want full control over the delete. 
     48        */ 
     49        static void DelSingleton() 
     50        { 
     51                DEL_PTR(sResourceManager); 
     52        } 
     53 
    3654        /** Loads a model 
    3755        */ 
     
    4361        */ 
    4462        GPUProgramParameters *CreateGPUProgramParameters(ShaderProgram *p); 
     63        /** Creates a new shader program. 
     64        */ 
     65        ShaderProgram *CreateShaderProgram(const std::string &filename, const std::string &funcName, bool isFragment); 
    4566 
    4667protected: 
    4768         
     69        /** Default constructor. The constructor is protected 
     70                to have control over instantiation using the  
     71                singleton pattern. 
     72        */ 
     73        ResourceManager() {} 
     74 
     75        ~ResourceManager(); 
     76 
    4877        void LoadTextures(igzstream &str); 
    4978        void LoadShapes(igzstream &str); 
     
    74103        /// the scene entities 
    75104        SceneEntityContainer mSceneEntities; 
     105 
     106private: 
     107 
     108        static ResourceManager *sResourceManager; 
    76109}; 
     110 
    77111 
    78112} 
  • GTP/trunk/App/Demos/Vis/FriendlyCulling/src/chcdemo.cpp

    r3036 r3037  
    457457        perfGraph = new PerformanceGraph(1000); 
    458458 
    459         loader = new ResourceManager(); 
     459        loader = ResourceManager::GetSingleton(); 
    460460 
    461461        const string filename = string(model_path + "city.dem"); 
     
    521521         
    522522        state.SetRenderPassType(RenderState::FIXED); 
    523         sceneQuery = new SceneQuery(bvh->GetBox(), traverser); 
    524523 
    525524        // frame time is restarted every frame 
     
    17331732        DEL_PTR(visualization); 
    17341733        DEL_PTR(camera); 
    1735         DEL_PTR(loader); 
    17361734        DEL_PTR(renderQueue); 
    17371735        DEL_PTR(perfGraph); 
     
    17471745        DEL_PTR(RenderState::sCgMrtVertexProgram); 
    17481746         
     1747        ResourceManager::DelSingleton(); 
     1748        loader = NULL; 
     1749 
    17491750        DeferredRenderer::ReleaseCG(); 
    17501751        SkyPreetham::ReleaseCG(); 
     
    20332034void PlaceViewer(const Vector3 &oldPos) 
    20342035{ 
     2036        if (!sceneQuery) 
     2037                sceneQuery = new SceneQuery(bvh->GetBox(), traverser); 
     2038 
    20352039        Vector3 playerPos = camera->GetPosition(); 
    20362040        bool validIntersect = sceneQuery->CalcIntersection(playerPos); 
  • GTP/trunk/App/Demos/Vis/FriendlyCulling/src/irradiance.cpp

    r3020 r3037  
    11// chcdemo.cpp : Defines the entry point for the console application. 
    22// 
    3 #include "glInterface.h" 
     3 
     4 
     5#include "common.h" 
     6 
     7#ifdef _CRT_SET 
     8        #define _CRTDBG_MAP_ALLOC 
     9        #include <stdlib.h> 
     10        #include <crtdbg.h> 
     11 
     12        // redefine new operator 
     13        #define DEBUG_NEW new(_NORMAL_BLOCK, __FILE__, __LINE__) 
     14        #define new DEBUG_NEW 
     15#endif 
     16 
    417#include <math.h> 
    518#include <time.h> 
    6 #include "common.h" 
     19#include "glInterface.h" 
     20 
     21#include <Cg/cg.h> 
     22#include <Cg/cgGL.h> 
     23 
     24 
    725#include "RenderTraverser.h" 
    826#include "SceneEntity.h" 
     
    2442#include "RenderQueue.h" 
    2543#include "Material.h" 
    26 #include <Cg/cg.h> 
    27 #include <Cg/cgGL.h> 
    2844#include "glfont2.h" 
    2945#include "PerformanceGraph.h" 
     
    4258#include "EntityMerger.h" 
    4359 
    44  
    45  
    4660using namespace std; 
    4761using namespace CHCDemoEngine; 
     
    5973/// the renderable scene geometry 
    6074SceneEntityContainer sceneEntities; 
    61 SceneEntityContainer sceneEntities2; 
    62 SceneEntity *buddha = NULL; 
     75 
    6376// traverses and renders the hierarchy 
    6477RenderTraverser *traverser = NULL; 
     
    255268inline float KeyRotationAngle() { return keyRotation * elapsedTime * 1e-3f; } 
    256269inline float KeyShift() { return keyForwardMotion * elapsedTime * 1e-3f; } 
    257  
     270// initialise the frame buffer objects 
    258271void InitFBO(); 
    259272 
     
    268281 
    269282static CGcontext sCgContext = NULL; 
    270 static CGprogram sCgMrtVertexProgram = NULL; 
    271  
    272 static CGparameter sMaxDepthParam; 
    273 static CGparameter sMaxDepthParamTex; 
     283 
    274284static CGparameter sEyePosParamTex; 
    275285static CGparameter sEyePosParam; 
    276  
    277 static CGparameter sTLParam; 
    278 static CGparameter sTRParam; 
    279 static CGparameter sBRParam; 
    280 static CGparameter sBLParam; 
    281  
    282 static CGparameter sTLParamTex; 
    283 static CGparameter sTRParamTex; 
    284 static CGparameter sBRParamTex; 
    285 static CGparameter sBLParamTex; 
    286286 
    287287static Matrix4x4 viewProjMat = IdentityMatrix(); 
     
    321321int main(int argc, char* argv[]) 
    322322{ 
     323/* 
     324#ifdef _CRT_SET 
     325 
     326        //Now just call this function at the start of your program and if you're 
     327        //compiling in debug mode (F5), any leaks will be displayed in the Output 
     328        //window when the program shuts down. If you're not in debug mode this will 
     329        //be ignored. Use it as you will! 
     330        //note: from GDNet Direct [3.8.04 - 3.14.04] void detectMemoryLeaks() { 
     331 
     332        _CrtSetDbgFlag(_CRTDBG_LEAK_CHECK_DF|_CRTDBG_ALLOC_MEM_DF); 
     333        _CrtSetReportMode(_CRT_ASSERT,_CRTDBG_MODE_FILE); 
     334        _CrtSetReportFile(_CRT_ASSERT,_CRTDBG_FILE_STDERR);  
     335#endif 
     336*/ 
     337        cout << "=== reading environment file ===" << endl << endl; 
     338 
    323339        int returnCode = 0; 
    324340 
     
    329345        cout << "=== reading environment file ===" << endl << endl; 
    330346 
    331         string envFileName = "default.env"; 
     347        const string envFileName = "default.env"; 
    332348        if (!env.Read(envFileName)) 
    333349        { 
     
    359375                //env.GetStringParam(string("modelPath"), model_path); 
    360376                //env.GetIntParam(string("numSssaoSamples"), numSsaoSamples); 
    361  
    362377 
    363378                cout << "assumedVisibleFrames: " << assumedVisibleFrames << endl;  
     
    407422        SceneEntity::SetUseLODs(useLODs); 
    408423 
    409  
    410424        if (!useFullScreen) 
    411425        { 
     
    432446        InitGLstate(); 
    433447 
    434  
    435448        glEnable(GL_MULTISAMPLE_ARB); 
    436449        glHint(GL_MULTISAMPLE_FILTER_HINT_NV, GL_NICEST); 
     
    439452        MiddleMotion(0, 0); 
    440453 
     454        // init cg shader programs 
     455        InitCg(); 
     456 
    441457        perfGraph = new PerformanceGraph(1000); 
    442458 
    443         loader = new ResourceManager(); 
     459        loader = ResourceManager::GetSingleton(); 
    444460 
    445461        const string filename = string(model_path + "city.dem"); 
    446  
     462         
    447463        if (loader->Load(filename, sceneEntities)) 
    448464                cout << "model " << filename << " loaded" << endl; 
     
    453469                exit(0); 
    454470        } 
     471         
    455472 
    456473        const string bvh_filename = string(model_path + "city.bvh"); 
     
    464481                exit(0); 
    465482        } 
    466          
    467          
    468         const string buddhafilename = string(model_path + "hbuddha.dem"); 
    469  
    470         if (loader->Load(buddhafilename, sceneEntities2)) 
    471                 cout << "model " << buddhafilename << " loaded" << endl; 
    472         else 
    473         { 
    474                 cerr << "loading model " << buddhafilename << " failed" << endl; 
    475                 CleanUp(); 
    476                 exit(0); 
    477         } 
    478  
    479         buddha = sceneEntities2[0]; 
    480  
    481         Matrix4x4 translation = TranslationMatrix(camera->GetPosition()); 
    482  
    483         buddha->GetTransform()->SetMatrix(translation); 
    484  
    485  
    486 #if 0 
    487  
    488         int merged = 0; 
    489  
    490         SceneEntity *oldEnt = NULL; 
    491  
    492         cout << "merging entities .. " << endl; 
    493         SceneEntityContainer::const_iterator sit, sit_end = sceneEntities.end(); 
    494  
    495         for (sit = sceneEntities.begin(); sit < sit_end; ++ sit) 
    496         { 
    497                 SceneEntity *newEnt = (*sit); 
    498  
    499                 if (!newEnt->GetTransform()->IsIdentity()) 
    500                 { 
    501                         sceneEntities2.push_back(newEnt); 
    502                         continue; 
    503                 } 
    504  
    505                 if (oldEnt) 
    506                 { 
    507                         EntityMerger merger(newEnt, oldEnt); 
    508                         SceneEntity *ent = merger.Merge(); 
    509  
    510                         sceneEntities2.push_back(ent); 
    511  
    512                         oldEnt = NULL; 
    513  
    514                         ++ merged; 
    515                 } 
    516                 else 
    517                 { 
    518                         oldEnt = newEnt; 
    519                 } 
    520         } 
    521  
    522         if (oldEnt && oldEnt->GetTransform()->IsIdentity()) 
    523                 sceneEntities2.push_back(oldEnt); 
    524  
    525         cout << "merged " << merged << " of " << (int)sceneEntities.size() << " entities " << endl; 
    526 #endif 
    527483 
    528484        // set far plane based on scene extent 
     
    532488        camera->SetFar(Magnitude(bvh->GetBox().Diagonal())); 
    533489         
    534         InitCg(); 
    535  
    536         DeferredRenderer::Init(sCgContext); 
    537         SkyPreetham::Init(sCgContext); 
    538  
    539490        Vector3 cubeCenter(470.398f, 240.364f, 182.5f); 
    540491         
    541492        Matrix4x4 transl = TranslationMatrix(cubeCenter); 
    542          
    543493 
    544494        SceneEntityContainer dummy; 
     
    546496        string skyDomeStr(model_path + "sky.dem"); 
    547497 
    548         if (loader->Load(skyDomeStr, dummy)) 
    549                 cout << "successfully loaded " << dummy.size() << " scene entities" << endl; 
     498        if (loader->Load(skyDomeStr, sceneEntities)) 
     499        { 
     500                cout << "successfully loaded " << sceneEntities.size() << " scene entities" << endl; 
     501        } 
    550502        else 
    551503        { 
     
    556508        } 
    557509 
    558         skyDome = dummy[0]; 
    559  
     510        skyDome = sceneEntities.back(); 
     511 
     512        //InitCg(); 
    560513 
    561514        const float turbitiy = 5.0f; 
     
    568521         
    569522        state.SetRenderPassType(RenderState::FIXED); 
    570         sceneQuery = new SceneQuery(bvh->GetBox(), traverser); 
    571523 
    572524        // frame time is restarted every frame 
     
    578530        // clean up 
    579531        CleanUp(); 
    580  
     532         
    581533        return 0; 
    582534} 
     
    585537void InitCg(void)  
    586538{ 
    587         // Setup Cg 
     539        // setup cg 
    588540        cgSetErrorCallback(cgErrorCallback); 
    589541 
    590         // Create cgContext. 
     542        // create context. 
    591543        sCgContext = cgCreateContext(); 
    592544 
    593         // get the best profile for this hardware 
     545        // get the optimal profile 
    594546        RenderState::sCgFragmentProfile = cgGLGetLatestProfile(CG_GL_FRAGMENT); 
    595547        cgGLSetOptimalOptions(RenderState::sCgFragmentProfile); 
     
    598550        cgGLSetOptimalOptions(RenderState::sCgVertexProfile); 
    599551 
    600         sCgMrtVertexProgram =  
    601                 cgCreateProgramFromFile(sCgContext,  
    602                                                                 CG_SOURCE, 
    603                                                                 "src/shaders/mrt.cg",  
    604                                                                 RenderState::sCgVertexProfile, 
    605                                                                 "vtx", 
    606                                                                 NULL); 
    607  
    608         if (sCgMrtVertexProgram != NULL) 
    609         { 
    610                 cgGLLoadProgram(sCgMrtVertexProgram); 
    611  
    612                 //sInvViewProjParam = cgGetNamedParameter(sCgMrtVertexProgram, "InvViewProj"); 
    613                 Transform3::sModelMatrixParam = cgGetNamedParameter(sCgMrtVertexProgram, "ModelView"); 
    614         } 
     552        // set textures to auto load 
     553        cgGLSetManageTextureParameters(sCgContext, false); 
     554 
     555        RenderState::sCgMrtVertexProgram =  
     556                new ShaderProgram(sCgContext, "src/shaders/mrt.cg", RenderState::sCgVertexProfile, "vtx"); 
     557 
     558        if (!RenderState::sCgMrtVertexProgram->IsValid()) 
     559                cerr << "fragment program failed to load" << endl; 
    615560 
    616561        RenderState::sCgMrtFragmentTexProgram =  
    617                 cgCreateProgramFromFile(sCgContext,  
    618                                                                 CG_SOURCE, 
    619                                                                 "src/shaders/mrt.cg",  
    620                                                                 RenderState::sCgFragmentProfile, 
    621                                                                 "fragtex", 
    622                                                                 NULL); 
    623  
    624         if (RenderState::sCgMrtFragmentTexProgram != NULL) 
    625         { 
    626                 cgGLLoadProgram(RenderState::sCgMrtFragmentTexProgram); 
    627  
    628                 sMaxDepthParamTex = cgGetNamedParameter(RenderState::sCgMrtFragmentTexProgram, "maxDepth"); 
    629                 sEyePosParamTex = cgGetNamedParameter(RenderState::sCgMrtFragmentTexProgram, "eyePos"); 
    630                 RenderState::sTexParam = cgGetNamedParameter(RenderState::sCgMrtFragmentTexProgram, "tex"); 
    631          
    632                 cgGLSetParameter1f(sMaxDepthParamTex, MAX_DEPTH_CONST / farDist); 
    633  
    634                 sTLParamTex = cgGetNamedParameter(RenderState::sCgMrtFragmentTexProgram, "tl");  
    635                 sTRParamTex = cgGetNamedParameter(RenderState::sCgMrtFragmentTexProgram, "tr");  
    636                 sBRParamTex = cgGetNamedParameter(RenderState::sCgMrtFragmentTexProgram, "br");  
    637                 sBLParamTex = cgGetNamedParameter(RenderState::sCgMrtFragmentTexProgram, "bl");  
    638         } 
    639         else 
     562                new ShaderProgram(sCgContext, "src/shaders/mrt.cg", RenderState::sCgFragmentProfile, "fragtex"); 
     563 
     564         
     565        if (!RenderState::sCgMrtFragmentTexProgram->IsValid()) 
    640566                cerr << "fragment tex program failed to load" << endl; 
    641567 
     568        RenderState::sCgMrtFragmentTexProgram->AddParameter("tex", 0); 
     569 
    642570        RenderState::sCgMrtFragmentProgram =  
    643                 cgCreateProgramFromFile(sCgContext,  
    644                                                                 CG_SOURCE, 
    645                                                                 "src/shaders/mrt.cg",  
    646                                                                 RenderState::sCgFragmentProfile, 
    647                                                                 "frag", 
    648                                                                 NULL); 
    649  
    650         if (RenderState::sCgMrtFragmentProgram != NULL) 
    651         { 
    652                 cgGLLoadProgram(RenderState::sCgMrtFragmentProgram); 
    653  
    654                 sMaxDepthParam = cgGetNamedParameter(RenderState::sCgMrtFragmentProgram, "maxDepth"); 
    655                 sEyePosParam = cgGetNamedParameter(RenderState::sCgMrtFragmentTexProgram, "eyePos"); 
    656                  
    657                 cgGLSetParameter1f(sMaxDepthParam, MAX_DEPTH_CONST / farDist); 
    658  
    659                 sTLParam = cgGetNamedParameter(RenderState::sCgMrtFragmentProgram, "tl");  
    660                 sTRParam = cgGetNamedParameter(RenderState::sCgMrtFragmentProgram, "tr");  
    661                 sBRParam = cgGetNamedParameter(RenderState::sCgMrtFragmentProgram, "br");  
    662                 sBLParam = cgGetNamedParameter(RenderState::sCgMrtFragmentProgram, "bl");  
    663         } 
    664         else 
     571                new ShaderProgram(sCgContext, "src/shaders/mrt.cg", RenderState::sCgFragmentProfile, "frag"); 
     572 
     573        if (!RenderState::sCgMrtFragmentProgram->IsValid()) 
    665574                cerr << "fragment program failed to load" << endl; 
    666575         
    667576 
    668577        PrintGLerror("init"); 
     578 
     579        DeferredRenderer::InitCG(sCgContext); 
     580        SkyPreetham::InitCG(sCgContext); 
    669581 
    670582        cout << "cg initialization successful" << endl; 
     
    682594 
    683595        // the diffuse color buffer 
    684         fbo->AddColorBuffer(ColorBufferObject::RGBA_FLOAT_32, ColorBufferObject::WRAP_CLAMP_TO_EDGE, ColorBufferObject::FILTER_NEAREST, ColorBufferObject::FILTER_NEAREST); 
     596        fbo->AddColorBuffer(ColorBufferObject::RGBA_FLOAT_32, ColorBufferObject::WRAP_CLAMP_TO_EDGE, ColorBufferObject::FILTER_LINEAR, ColorBufferObject::FILTER_NEAREST); 
    685597        // the normals buffer 
    686         fbo->AddColorBuffer(ColorBufferObject::RGBA_FLOAT_16, ColorBufferObject::WRAP_CLAMP_TO_EDGE, ColorBufferObject::FILTER_NEAREST); 
     598        fbo->AddColorBuffer(ColorBufferObject::RGB_FLOAT_16, ColorBufferObject::WRAP_CLAMP_TO_EDGE, ColorBufferObject::FILTER_NEAREST); 
    687599        // the positions buffer 
    688600        //fbo->AddColorBuffer(ColorBufferObject::RGBA_FLOAT_32, ColorBufferObject::WRAP_CLAMP_TO_EDGE, ColorBufferObject::FILTER_NEAREST); 
    689601        fbo->AddColorBuffer(ColorBufferObject::RGB_UBYTE, ColorBufferObject::WRAP_CLAMP_TO_EDGE, ColorBufferObject::FILTER_NEAREST); 
    690602        // another color buffer 
    691         fbo->AddColorBuffer(ColorBufferObject::RGBA_FLOAT_32, ColorBufferObject::WRAP_CLAMP_TO_EDGE, ColorBufferObject::FILTER_NEAREST, ColorBufferObject::FILTER_NEAREST); 
     603        fbo->AddColorBuffer(ColorBufferObject::RGBA_FLOAT_32, ColorBufferObject::WRAP_CLAMP_TO_EDGE, ColorBufferObject::FILTER_LINEAR, ColorBufferObject::FILTER_NEAREST); 
    692604 
    693605        PrintGLerror("fbo"); 
     
    701613        glGenTextures(1, &fontTex); 
    702614        glBindTexture(GL_TEXTURE_2D, fontTex); 
     615 
    703616        if (!myfont.Create("data/fonts/verdana.glf", fontTex)) 
    704617                return false; 
     
    942855        // store matrix for later use 
    943856        viewProjMat = matViewing * matProjection; 
    944          
    945         if ((renderMethod == RENDER_DEFERRED) || (renderMethod == RENDER_DEPTH_PASS_DEFERRED)) 
    946         { 
    947                 cgGLSetMatrixParameterfc(Transform3::sModelMatrixParam, (const float *)IdentityMatrix().x); 
    948         } 
    949857} 
    950858 
     
    997905 
    998906        cgGLEnableProfile(RenderState::sCgVertexProfile); 
    999         cgGLBindProgram(sCgMrtVertexProgram); 
     907        RenderState::sCgMrtVertexProgram->Bind(); 
    1000908 
    1001909        cgGLEnableProfile(RenderState::sCgFragmentProfile); 
    1002         cgGLBindProgram(RenderState::sCgMrtFragmentProgram); 
     910        RenderState::sCgMrtFragmentProgram->Bind(); 
    1003911 
    1004912        const Vector3 pos = camera->GetPosition(); 
    1005913 
    1006         cgGLSetParameter3f(sEyePosParam, pos.x, pos.y, pos.z); 
    1007         cgGLSetParameter3f(sEyePosParamTex, pos.x, pos.y, pos.z); 
    1008  
    1009         Vector3 tl, tr, bl, br; 
    1010         ComputeViewVectors(tl, tr, bl, br); 
    1011  
    1012         cgGLSetParameter3f(sBLParam, bl.x, bl.y, bl.z); 
    1013         cgGLSetParameter3f(sBRParam, br.x, br.y, br.z); 
    1014         cgGLSetParameter3f(sTLParam, tl.x, tl.y, tl.z); 
    1015         cgGLSetParameter3f(sTRParam, tr.x, tr.y, tr.z); 
    1016  
    1017         cgGLSetParameter3f(sBLParamTex, bl.x, bl.y, bl.z); 
    1018         cgGLSetParameter3f(sBRParamTex, br.x, br.y, br.z); 
    1019         cgGLSetParameter3f(sTLParamTex, tl.x, tl.y, tl.z); 
    1020         cgGLSetParameter3f(sTRParamTex, tr.x, tr.y, tr.z); 
    1021914 
    1022915        // draw to 3 color buffers 
     
    1075968 
    1076969        } 
    1077  
    1078970         
    1079971        // bring eye modelview matrix up-to-date 
     
    11921084                // actually render the scene geometry using the specified algorithm 
    11931085                traverser->RenderScene(); 
    1194                  
    1195                 buddha->Render(&state); 
    1196                 renderQueue->Apply(); 
    11971086        } 
    11981087 
     
    18431732        DEL_PTR(visualization); 
    18441733        DEL_PTR(camera); 
    1845         DEL_PTR(loader); 
    18461734        DEL_PTR(renderQueue); 
    18471735        DEL_PTR(perfGraph); 
    1848  
    18491736        DEL_PTR(fbo); 
    18501737        DEL_PTR(ssaoShader); 
    1851  
    1852         if (sCgMrtVertexProgram) 
    1853                 cgDestroyProgram(sCgMrtVertexProgram); 
    1854         if (RenderState::sCgMrtFragmentProgram) 
    1855                 cgDestroyProgram(RenderState::sCgMrtFragmentProgram); 
    1856         if (RenderState::sCgMrtFragmentTexProgram) 
    1857                 cgDestroyProgram(RenderState::sCgMrtFragmentTexProgram); 
    1858          
     1738        DEL_PTR(light); 
     1739        DEL_PTR(visCamera); 
     1740        DEL_PTR(preetham); 
     1741        DEL_PTR(shadowMap); 
     1742        DEL_PTR(shadowTraverser); 
     1743        DEL_PTR(RenderState::sCgMrtFragmentProgram); 
     1744        DEL_PTR(RenderState::sCgMrtFragmentTexProgram); 
     1745        DEL_PTR(RenderState::sCgMrtVertexProgram); 
     1746         
     1747        ResourceManager::DelSingleton(); 
     1748        loader = NULL; 
     1749 
     1750        DeferredRenderer::ReleaseCG(); 
     1751        SkyPreetham::ReleaseCG(); 
     1752 
    18591753        if (sCgContext) 
    18601754                cgDestroyContext(sCgContext); 
     
    20741968                state.SetRenderPassType(RenderState::DEFERRED); 
    20751969 
    2076         const bool useToneMapping = ((renderMethod == RENDER_DEPTH_PASS_DEFERRED) || (renderMethod == RENDER_DEFERRED)) && useHDR; 
     1970        const bool useToneMapping =  
     1971                ((renderMethod == RENDER_DEPTH_PASS_DEFERRED) ||  
     1972                 (renderMethod == RENDER_DEFERRED)) && useHDR; 
    20771973 
    20781974        preetham->RenderSkyDome(-light->GetDirection(), camera, &state, !useToneMapping); 
     
    21382034void PlaceViewer(const Vector3 &oldPos) 
    21392035{ 
     2036        if (!sceneQuery) 
     2037                sceneQuery = new SceneQuery(bvh->GetBox(), traverser); 
     2038 
    21402039        Vector3 playerPos = camera->GetPosition(); 
    21412040        bool validIntersect = sceneQuery->CalcIntersection(playerPos); 
Note: See TracChangeset for help on using the changeset viewer.