Changeset 2959


Ignore:
Timestamp:
09/19/08 23:13:47 (16 years ago)
Author:
mattausch
Message:

preetham working but big hack

Location:
GTP/trunk/App/Demos/Vis/FriendlyCulling
Files:
7 edited

Legend:

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

    r2957 r2959  
    1111camPosition=483.398f 242.364f 186.078f 
    1212camDirection=1 0 0 
    13 #lightDirection=-0.8f 1.0f -0.7f 
    14 #lightDirection=0.2f -1.0f -.5f 
    15 lightDirection=0.0f 0.0f -1.0f 
     13lightDirection=-0.8f 1.0f -0.7f 
     14#lightDirection=0.0f 0.0f -1.0f 
    1615useFullScreen=0 
    1716useLODs=1 
  • GTP/trunk/App/Demos/Vis/FriendlyCulling/src/Material.cpp

    r2955 r2959  
    2828 
    2929        mAmbientColor = RgbaColor(0.2f, 0.2f, 0.2f, 1.0f); 
     30        //mAmbientColor = RgbaColor(1.0f, 1.0f, 1.0f, 1.0f); 
    3031        mDiffuseColor = RgbaColor(1.0f, 1.0f, 1.0f, 1.0f); 
    3132        mSpecularColor = RgbaColor(.0f, .0f, .0f, 1.0f); 
  • GTP/trunk/App/Demos/Vis/FriendlyCulling/src/ObjConverter.cpp

    r2958 r2959  
    114114        mat->SetAmbient(RgbaColor(0, 0, 0, 0)); 
    115115        mat->SetDiffuse(RgbaColor(0, 0, 0, 0)); 
    116  
     116        mat->SetCullFaceEnabled(false); 
    117117        Geometry *geom = new Geometry(_vertices, _normals, _texcoords, numElements, false); 
    118118 
  • GTP/trunk/App/Demos/Vis/FriendlyCulling/src/SkyPreetham.cpp

    r2958 r2959  
    1313 
    1414static CGprogram sCgSkyProgram = NULL; 
     15static CGprogram sCgMrtFragmentSkyDomeProgram = NULL; 
     16 
     17 
    1518static CGparameter sLightDirParam; 
    1619static CGparameter sThetaSunParam; 
     
    6063        else 
    6164                cerr << "sky program failed to load" << endl; 
     65 
     66        sCgMrtFragmentSkyDomeProgram =  
     67                cgCreateProgramFromFile(context,  
     68                                                                CG_SOURCE, 
     69                                                                "src/shaders/sky_preetham.cg",  
     70                                                                RenderState::sCgFragmentProfile, 
     71                                                                "frag_skydome", 
     72                                                                NULL); 
     73 
     74        if (sCgMrtFragmentSkyDomeProgram != NULL) 
     75        { 
     76                cgGLLoadProgram(sCgMrtFragmentSkyDomeProgram); 
     77 
     78                /*sMaxDepthParam = cgGetNamedParameter(RenderState::sCgMrtFragmentProgram, "maxDepth"); 
     79                Material::sDiffuseParam = cgGetNamedParameter(RenderState::sCgMrtFragmentProgram, "diffuse"); 
     80                Material::sAmbientParam = cgGetNamedParameter(RenderState::sCgMrtFragmentProgram, "ambient"); 
     81 
     82                cgGLSetParameter1f(sMaxDepthParam, MAX_DEPTH_CONST / farDist); 
     83                */ 
     84        } 
     85        else 
     86                cerr << "fragment skyprogram failed to load" << endl; 
    6287} 
    6388 
     
    127152        Vector3 position = camera->GetPosition(); 
    128153 
    129         const float scaleFactor = 100.0f; 
    130  
    131         position.z -= 10 * scaleFactor; 
     154        const float scaleFactor = 80.0f; 
     155 
     156        position.z -= 3 * scaleFactor; 
    132157        Matrix4x4 m = TranslationMatrix(position); 
    133158 
     
    147172        cgGLEnableProfile(RenderState::sCgVertexProfile); 
    148173        cgGLBindProgram(sCgSkyProgram); 
    149          
    150          
     174 
     175         
     176        if (state->GetRenderPassType() == RenderState::DEFERRED) 
     177        { 
     178                cgGLEnableProfile(RenderState::sCgFragmentProfile); 
     179                cgGLBindProgram(sCgMrtFragmentSkyDomeProgram); 
     180        }        
    151181 
    152182        // Render sky dome. 
     
    155185        // Render additively blended sun disc. 
    156186        //RenderSunDisk(sunDir, camera); 
     187 
     188        cgGLDisableProfile(RenderState::sCgFragmentProfile); 
    157189} 
    158190 
  • GTP/trunk/App/Demos/Vis/FriendlyCulling/src/chcdemo.cpp

    r2958 r2959  
    273273static CGparameter sMaxDepthParamTex; 
    274274static Matrix4x4 oldViewProjMatrix; 
    275 static CGprogram sCgMrtFragmentSkyDomeProgram = NULL; 
    276275 
    277276 
     
    547546                cerr << "fragment tex program failed to load" << endl; 
    548547 
    549         sCgMrtFragmentSkyDomeProgram =  
     548        RenderState::sCgMrtFragmentProgram =  
    550549                cgCreateProgramFromFile(sCgContext,  
    551550                                                                CG_SOURCE, 
    552                                                                 "src/shaders/sky_preetham.cg",  
     551                                                                "src/shaders/mrt.cg",  
    553552                                                                RenderState::sCgFragmentProfile, 
    554                                                                 "frag_skydome", 
     553                                                                "frag", 
    555554                                                                NULL); 
    556555 
    557         if (sCgMrtFragmentSkyDomeProgram != NULL) 
    558         { 
    559                 cgGLLoadProgram(sCgMrtFragmentSkyDomeProgram); 
    560  
    561                 /*sMaxDepthParam = cgGetNamedParameter(RenderState::sCgMrtFragmentProgram, "maxDepth"); 
     556        if (RenderState::sCgMrtFragmentProgram != NULL) 
     557        { 
     558                cgGLLoadProgram(RenderState::sCgMrtFragmentProgram); 
     559 
     560                sMaxDepthParam = cgGetNamedParameter(RenderState::sCgMrtFragmentProgram, "maxDepth"); 
    562561                Material::sDiffuseParam = cgGetNamedParameter(RenderState::sCgMrtFragmentProgram, "diffuse"); 
    563562                Material::sAmbientParam = cgGetNamedParameter(RenderState::sCgMrtFragmentProgram, "ambient"); 
    564563 
    565564                cgGLSetParameter1f(sMaxDepthParam, MAX_DEPTH_CONST / farDist); 
    566                 */ 
    567565        } 
    568566        else 
    569                 cerr << "fragment skyprogram failed to load" << endl; 
     567                cerr << "fragment program failed to load" << endl; 
     568         
    570569 
    571570        PrintGLerror("init"); 
     
    618617void InitGLstate()  
    619618{ 
    620         glClearColor(0.3f, 0.3f, 0.4f, 1.0f); 
     619        glClearColor(0.4f, 0.4f, 0.4f, 1.0f); 
    621620         
    622621        glPixelStorei(GL_UNPACK_ALIGNMENT, 1); 
     
    643642        glDisable(GL_TEXTURE_2D); 
    644643 
    645         GLfloat ambientColor[] = {0.5, 0.5, 0.5, 1.0}; 
     644        GLfloat ambientColor[] = {0.2, 0.2, 0.2, 1.0}; 
    646645        GLfloat diffuseColor[] = {1.0, 0.0, 0.0, 1.0}; 
    647646        GLfloat specularColor[] = {0.0, 0.0, 0.0, 1.0}; 
     
    671670        if (!skyDome) cerr << "loadig plane failed" << endl; 
    672671 
    673         preetham = new SkyPreetham(3.0f, skyDome); 
     672        const float turbitiy = 3.0f; 
     673        preetham = new SkyPreetham(turbitiy, skyDome); 
    674674 
    675675 
    676676        ////////////////////////////// 
    677677 
    678         //GLfloat lmodel_ambient[] = {0.5f, 0.5f, 0.5f, 1.0f}; 
    679         GLfloat lmodel_ambient[] = {1.0f, 1.0f, 1.0f, 1.0f}; 
     678        //GLfloat lmodel_ambient[] = {1.0f, 1.0f, 1.0f, 1.0f}; 
     679        GLfloat lmodel_ambient[] = {0.7f, 0.7f, 0.8f, 1.0f}; 
    680680 
    681681        glLightModelfv(GL_LIGHT_MODEL_AMBIENT, lmodel_ambient); 
    682         glLightModeli(GL_LIGHT_MODEL_LOCAL_VIEWER, GL_TRUE); 
     682        //glLightModeli(GL_LIGHT_MODEL_LOCAL_VIEWER, GL_TRUE); 
     683        glLightModeli(GL_LIGHT_MODEL_LOCAL_VIEWER, GL_FALSE); 
    683684        glLightModeli(GL_LIGHT_MODEL_COLOR_CONTROL_EXT, GL_SINGLE_COLOR_EXT); 
    684685} 
     
    795796void SetupLighting() 
    796797{ 
    797         //glEnable(GL_LIGHTING); 
    798798        glEnable(GL_LIGHT0); 
     799        glDisable(GL_LIGHT1); 
    799800         
    800801        Vector3 lightDir = -light->GetDirection(); 
     
    807808        GLfloat diffuse[] = {1.0f, 0.95f, 0.85f, 1.0f}; 
    808809        GLfloat specular[] = {1.0f, 1.0f, 1.0f, 1.0f}; 
     810        //GLfloat specular[] = {0.0f, 0.0f, 0.0f, 1.0f}; 
    809811 
    810812        Vector3 sunAmbient; 
     
    832834        diffuse[1] = sunDiffuse.y; 
    833835        diffuse[2] = sunDiffuse.z; 
    834  
     836         
    835837        //cout<< "sunambient: " << sunAmbient << endl; 
    836838        //cout<< "sundiffuse: " << sunDiffuse << endl; 
     
    11011103        RenderSky(); 
    11021104         
    1103  
    11041105 
    11051106        if ((renderMethod == RENDER_DEFERRED) || 
     
    19601961void RenderSky() 
    19611962{ 
    1962         glEnable(GL_LIGHTING); 
     1963        //glEnable(GL_LIGHTING); 
    19631964        cgGLEnableProfile(RenderState::sCgVertexProfile); 
    19641965 
    1965         if (state.GetRenderPassType() == RenderState::DEFERRED) 
    1966         { 
    1967                 cgGLEnableProfile(RenderState::sCgFragmentProfile); 
    1968                 cgGLBindProgram(sCgMrtFragmentSkyDomeProgram); 
    1969         } 
     1966        if ((renderMethod == RENDER_DEFERRED) || (renderMethod == RENDER_DEPTH_PASS_DEFERRED)) 
     1967                state.SetRenderPassType(RenderState::DEFERRED); 
    19701968 
    19711969        SceneEntityContainer::const_iterator sit, sit_end = skyGeometry.end(); 
     
    19761974        //cube->Render(&state); 
    19771975        //aeroplane->Render(&state); 
    1978         glDisable(GL_CULL_FACE); 
     1976        //glEnable(GL_LIGHTING); 
     1977 
    19791978        preetham->Compute(-light->GetDirection(), camera, &state); 
    1980         glEnable(GL_CULL_FACE); 
    1981  
     1979         
    19821980        cgGLDisableProfile(RenderState::sCgVertexProfile); 
    19831981        cgGLDisableProfile(RenderState::sCgFragmentProfile); 
     
    20342032 
    20352033        glDepthFunc(GL_LESS); 
     2034        state.Reset(); 
    20362035 
    20372036        PrintGLerror("visibleobjects"); 
  • GTP/trunk/App/Demos/Vis/FriendlyCulling/src/shaders/deferred.cg

    r2954 r2959  
    3333                         uniform float4 position, 
    3434                         uniform float3 normal, 
    35                          uniform float amb, 
     35                         uniform float emmisive, 
    3636                         float3 lightDir) 
    3737{ 
     
    5050        const float4 ambient = glstate.light[0].ambient; 
    5151         
    52         return (ambient + diffuse) * color * (1.0f - amb) + amb * color; 
     52        //return (saturate(((ambient + diffuse))) * (1.0f - emmisive) + emmisive) * color; 
     53        return saturate((((ambient + diffuse)) * (1.0f - emmisive) + emmisive) * color); 
    5354} 
    5455 
     
    152153        const float angle = saturate(dot(normal, lightDir));  
    153154        //float4 lightDiffuse = float4(1.0f, 1.0f, 0.9f, 1.0f); 
    154         float4 lightDiffuse = glstate.light[0].diffuse; 
     155        const float4 lightDiffuse = glstate.light[0].diffuse; 
    155156        //float4(1.0f, 1.0f, 0.9f, 1.0f); 
    156157 
     
    178179         
    179180        // base lighting 
    180         OUT.color = (ambient + diffuse) * color * (1.0f - emmisive) + emmisive * color; 
     181        OUT.color = (emmisive < 0.95) ? (ambient + diffuse) * color : color; 
    181182 
    182183        // also write out depth component 
  • GTP/trunk/App/Demos/Vis/FriendlyCulling/src/shaders/sky_preetham.cg

    r2958 r2959  
    2727 
    2828 
    29 struct PixelOutput 
     29 
     30struct pixel 
    3031{ 
    31         float4 color: SV_TARGET0; 
     32  float4 col: COLOR0; 
     33  float4 pos: COLOR1; 
     34  float4 norm: COLOR2; 
    3235}; 
    3336 
     37// fragment input 
     38struct fragin 
     39{ 
     40        float4 color: COLOR0;   
     41        float4 position: POSITION; // eye space 
     42        float4 texCoord: TEXCOORD0;     
    3443 
    35  
     44        float4 projPos: WPOS; 
     45        float4 worldPos: TEXCOORD1; // world position 
     46        float3 normal: TEXCOORD2; 
     47        float4 mypos: TEXCOORD3; 
     48}; 
    3649//-------------------------------------------------------------------------------------- 
    3750// Vertex Shaders 
     
    91104 
    92105 
    93 pixel frag_skydome(fragin IN,  
    94                                    uniform float maxDepth) 
     106pixel frag_skydome(fragin IN) 
    95107{ 
    96108        pixel pix; 
    97109 
    98110        pix.col = IN.color; 
    99         pix.pos = IN.worldPos;// * maxDepth; 
     111        pix.pos = IN.worldPos * 1e20;// * maxDepth; 
    100112 
    101113        pix.norm.xyz = IN.normal; 
    102114         
    103115        // hack: squeeze some information about the ambient term into the target 
    104         pix.norm.w = 0; 
     116        pix.norm.w = 1; 
    105117        pix.pos.w = IN.mypos.w; 
    106118         
Note: See TracChangeset for help on using the changeset viewer.