Ignore:
Timestamp:
10/17/08 16:32:37 (16 years ago)
Author:
mattausch
Message:

unified shader stuff, but phreetham sky not working anymore for forward rendering

File:
1 edited

Legend:

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

    r3036 r3038  
    99#include "Shape.h" 
    1010#include "Material.h" 
     11#include "ResourceManager.h" 
     12 
    1113 
    1214 
     
    2224 
    2325 
     26 
     27 
    2428using namespace CHCDemoEngine; 
    2529using namespace std; 
    2630 
    2731 
    28 static ShaderProgram *sCgSkyProgram = NULL; 
    29 static ShaderProgram *sCgMrtFragmentSkyDomeProgram = NULL; 
    30  
    31 ShaderContainer SkyPreetham::sShaders; 
    32  
    3332 
    3433inline float CBQ(float x) 
     
    4443 
    4544 
    46 void SkyPreetham::InitCG(CGcontext context) 
     45void SkyPreetham::InitCG() 
    4746{        
    48         sCgSkyProgram = new ShaderProgram(context,  
    49                                               "src/shaders/sky_preetham.cg", 
    50                                                                           RenderState::sCgVertexProfile,         
    51                                                                           "default_vs"); 
    52  
    53         if (sCgSkyProgram->IsValid()) 
     47        mSkyVtxProgram =  
     48                ResourceManager::GetSingleton()->CreateVertexProgram("sky_preetham", "default_vs"); 
     49                 
     50        if (mSkyVtxProgram->IsValid()) 
    5451        { 
    55                 sCgSkyProgram->AddParameter("lightDir", 0); 
    56                 sCgSkyProgram->AddParameter("thetaSun", 1); 
    57                 sCgSkyProgram->AddParameter("zenithColor", 2); 
    58                 sCgSkyProgram->AddParameter("aColor", 3); 
    59                 sCgSkyProgram->AddParameter("bColor", 4); 
    60                 sCgSkyProgram->AddParameter("cColor", 5); 
    61                 sCgSkyProgram->AddParameter("dColor", 6); 
    62                 sCgSkyProgram->AddParameter("eColor", 7); 
    63                 sCgSkyProgram->AddParameter("multiplier", 8); 
     52                mSkyVtxProgram->AddParameter("lightDir", 0); 
     53                mSkyVtxProgram->AddParameter("thetaSun", 1); 
     54                mSkyVtxProgram->AddParameter("zenithColor", 2); 
     55                mSkyVtxProgram->AddParameter("aColor", 3); 
     56                mSkyVtxProgram->AddParameter("bColor", 4); 
     57                mSkyVtxProgram->AddParameter("cColor", 5); 
     58                mSkyVtxProgram->AddParameter("dColor", 6); 
     59                mSkyVtxProgram->AddParameter("eColor", 7); 
     60                mSkyVtxProgram->AddParameter("multiplier", 8); 
    6461        } 
    6562        else 
    6663                cerr << "sky program failed to load" << endl; 
    6764 
    68                 sShaders.push_back(sCgSkyProgram); 
    69  
    70         sCgMrtFragmentSkyDomeProgram =  
    71                 new ShaderProgram(context,  
    72                                   "src/shaders/sky_preetham.cg",  
    73                                                   RenderState::sCgFragmentProfile, 
    74                                                   "frag_skydome"); 
    75  
    76         // simple shader used for just pushing out the fragments to the mrts 
    77         if (!sCgMrtFragmentSkyDomeProgram->IsValid()) 
    78                 cerr << "fragment skyprogram failed to load" << endl; 
    79          
    80         sShaders.push_back(sCgMrtFragmentSkyDomeProgram); 
    81 } 
    82  
    83  
    84 void SkyPreetham::ReleaseCG() 
    85 { 
    86         CLEAR_CONTAINER(sShaders); 
     65        mSkyFragProgram =  
     66                ResourceManager::GetSingleton()->CreateFragmentProgram("sky_preetham", "frag_skydome"); 
    8767} 
    8868 
     
    9676        Shape *shape = mSkyDome->GetShape(0); 
    9777 
     78        InitCG(); 
     79 
    9880        Material *mat = shape->GetMaterial(); 
    9981 
    100         mat->SetFragmentProgram(sCgMrtFragmentSkyDomeProgram); 
    101         mat->SetVertexProgram(sCgSkyProgram); 
     82        mat->SetFragmentProgram(mSkyFragProgram); 
     83        mat->SetVertexProgram(mSkyVtxProgram); 
    10284} 
    10385 
     
    148130        {        
    149131                // use tone mapping 
    150                 sCgSkyProgram->SetValue1f(8, 1.0f); 
     132                vtxParams->SetValue1f(8, 1.0f); 
    151133        } 
    152134        else 
    153135        { 
    154136                // no tone mapping => scale 
    155                 sCgSkyProgram->SetValue1f(8, 8e-5f); 
     137                vtxParams->SetValue1f(8, 8e-5f); 
    156138        } 
    157  
    158         cgGLEnableProfile(RenderState::sCgVertexProfile); 
    159139 
    160140        // Render sky dome. 
Note: See TracChangeset for help on using the changeset viewer.