Changeset 3144


Ignore:
Timestamp:
11/19/08 17:37:11 (16 years ago)
Author:
mattausch
Message:

working on normal mapping

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

Legend:

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

    r3143 r3144  
    477477#endif 
    478478 
    479         /////// 
     479        ///////// 
    480480        //-- pcf tabs for shadowing 
    481481 
     
    526526        case SSAO: 
    527527                ComputeSsao(fbo, tempCohFactor); 
    528                 SmoothSsao(fbo); 
     528                //SmoothSsao(fbo); 
    529529                CombineSsao(fbo); 
    530530                break; 
     
    810810        GLuint colorsTex = fbo->GetColorBuffer(colorBufferIdx)->GetTexture(); 
    811811        GLuint normalsTex = fbo->GetColorBuffer(1)->GetTexture(); 
    812         GLuint ssaoTex = mIllumFbo->GetColorBuffer(2 - mIllumFboIndex)->GetTexture(); 
    813         //GLuint ssaoTex = mIllumFbo->GetColorBuffer(mIllumFboIndex)->GetTexture(); 
     812        //GLuint ssaoTex = mIllumFbo->GetColorBuffer(2 - mIllumFboIndex)->GetTexture(); 
     813        GLuint ssaoTex = mIllumFbo->GetColorBuffer(mIllumFboIndex)->GetTexture(); 
    814814         
    815815        FlipFbos(fbo); 
  • GTP/trunk/App/Demos/Vis/FriendlyCulling/src/ResourceManager.cpp

    r3128 r3144  
    287287        static ShaderProgram *sDefaultVertexProgramMrt = ShaderManager::GetSingleton()->GetShaderProgram("defaultVertexMrt"); 
    288288 
    289         //static ShaderProgram *sNormalMappingVertexProgramMrt = ShaderManager::GetSingleton()->GetShaderProgram("normalMappingVertexMrt"); 
    290         //static ShaderProgram *sNormalMappingFragmentProgramMrt = ShaderManager::GetSingleton()->GetShaderProgram("normalMappingFragmentMrt"); 
     289        static ShaderProgram *sNormalMappingVertexProgramMrt = ShaderManager::GetSingleton()->GetShaderProgram("normalMappingVertexMrt"); 
     290        static ShaderProgram *sNormalMappingFragmentProgramMrt = ShaderManager::GetSingleton()->GetShaderProgram("normalMappingFragmentMrt"); 
    291291 
    292292 
  • GTP/trunk/App/Demos/Vis/FriendlyCulling/src/ShaderManager.cpp

    r3128 r3144  
    4444        CGerror lastError = cgGetError(); 
    4545 
    46         if(lastError) 
     46        if (lastError) 
    4747        { 
    4848                printf("Cg error, exiting...\n"); 
     
    124124 
    125125         
    126         //ShaderProgram *normalMappingVertexMrt, *normalMappingFragmentMrt; 
    127  
    128         //normalMappingVertexMrt = CreateFragmentProgram("normalMapping", "vtx", "normalMappingVertexMrt"); 
    129         //normalMappingFragmentMrt = CreateFragmentProgram("normalMapping", "frag", "normalMappingFragmentMrt"); 
     126        ShaderProgram *normalMappingVertexMrt, *normalMappingFragmentMrt; 
     127 
     128        normalMappingVertexMrt = CreateVertexProgram("normalMapping", "vtx", "normalMappingVertexMrt"); 
     129        normalMappingFragmentMrt = CreateFragmentProgram("normalMapping", "frag", "normalMappingFragmentMrt"); 
    130130 
    131131 
  • GTP/trunk/App/Demos/Vis/FriendlyCulling/src/chcdemo.cpp

    r3135 r3144  
    471471        //-- load some dynamic stuff 
    472472 
    473         //resourceManager->mUseNormalMapping = true; 
    474         resourceManager->mUseNormalMapping = false; 
    475  
    476         //LoadModel("fisch.dem", dynamicObjects); 
    477         LoadModel("hbuddha.dem", dynamicObjects); 
     473        resourceManager->mUseNormalMapping = true; 
     474        //resourceManager->mUseNormalMapping = false; 
     475 
     476        LoadModel("fisch.dem", dynamicObjects); 
     477        //LoadModel("hbuddha.dem", dynamicObjects); 
    478478 
    479479        resourceManager->mUseNormalMapping = false; 
  • GTP/trunk/App/Demos/Vis/FriendlyCulling/src/shaders/normalMapping.cg

    r3131 r3144  
    22/*    Shader for normal mapped geoemtry    */ 
    33/*******************************************/ 
    4  
    5 /**************************************************************/ 
    6 /* Shader computing the MRT output for normal mapped geoemtry */ 
    7 /**************************************************************/ 
    8  
    94 
    105// input 
     
    138  float4 position: POSITION; 
    149  float4 normal: NORMAL; 
    15   float4 tangent: COLOR0; 
     10  float4 color: COLOR0; 
    1611  float4 texCoord: TEXCOORD0; 
    1712}; 
     
    2419        float4 texCoord: TEXCOORD0;     
    2520 
    26         float4 tangent: COLOR0 
     21        float4 tangent: TEXCOORD6 
    2722         // eye position 
    2823        float4 eyePos: TEXCOORD1; 
     
    3126        float4 worldPos: TEXCOORD3; 
    3227        float4 oldWorldPos: TEXCOORD4; 
    33         float4 bitangent: TEXCOORD5 
     28        float4 bitangent: TEXCOORD5; 
    3429}; 
    3530 
     
    3833struct fragin 
    3934{ 
    40         float4 tangent: COLOR0 
     35        float4 tangent: TEXCOORD6 
    4136        float4 texCoord: TEXCOORD0;     
    4237 
     
    4742        float4 worldPos: TEXCOORD3; 
    4843        float4 oldWorldPos: TEXCOORD4; 
    49         float4 bitangent: TEXCOORD5 
     44        float4 bitangent: TEXCOORD5; 
    5045}; 
    5146 
     
    6964        vtxout OUT; 
    7065 
    71         OUT.color = IN.color; 
     66        OUT.tangent = IN.color; 
    7267        OUT.texCoord = IN.texCoord; 
    7368 
     
    8479        OUT.tangent = mul(glstate.matrix.invtrans.modelview[0], IN.color);  
    8580 
    86         OUT.bitangent = cross(IN.tangent, IN.normal); 
     81        OUT.bitangent = float4(cross(IN.color.xyz, IN.normal.xyz), 1); 
    8782 
    8883        return OUT; 
    8984} 
     85 
     86 
     87 
     88/**************************************************************/ 
     89/* Shader computing the MRT output for normal mapped geoemtry */ 
     90/**************************************************************/ 
    9091 
    9192 
     
    126127        // as it is the inverse of a rotation matrix  
    127128        float3x3 tangToWorldTrafo = transpose(float3x3(IN.tangent, IN.bitangent, IN.normal)); 
    128         const float3 tangentSpaceNorm = tex2Dlod(normalMap, float4(IN.texCoord.xy).xyz); 
     129        const float3 tangentSpaceNorm = tex2Dlod(normalMap, float4(IN.texCoord.xy, 0, 0)).xyz; 
    129130        pix.normal = mul(tangToWorldTrafo, tangentSpaceNorm); 
    130131 
     
    133134 
    134135 
    135 pixel frag(fragin IN, uniform float4x4 viewMatrix) 
     136pixel frag(fragin IN, 
     137                   uniform float4x4 viewMatrix, 
     138                   uniform sampler2D normalMap: TEXUNIT1) 
    136139{ 
    137140        pixel pix; 
    138141        // hack: use comination of emmisive + diffuse (emmisive used as constant ambient term) 
    139         pix.col = glstate.material.diffuse + glstate.material.emission; 
     142        pix.color = glstate.material.diffuse + glstate.material.emission; 
    140143        // save world space normal in rt => transform back into world space by 
    141144        // multiplying with inverse view. since transforming normal with T means to  
    142145        // multiply with the inverse transpose of T, we multiple with Transp(Inv(Inv(view))) = Transp(view) 
    143         pix.norm = mul(transpose(viewMatrix), IN.normal).xyz; 
     146        pix.normal = mul(transpose(viewMatrix), IN.normal).xyz; 
    144147        // eye space depth 
    145         pix.col.w = length(IN.eyePos.xyz); 
     148        pix.color.w = length(IN.eyePos.xyz); 
    146149        // the scene entity id 
    147150        //pix.id = glstate.fog.color.xyz; 
     
    149152        pix.offsVec = IN.oldWorldPos.xyz - IN.worldPos.xyz; 
    150153 
    151         pixel pix; 
    152154        // compute tanget space in world space => transform basis vectors back into world space by 
    153155        // multiplying with inverse view. since transforming normal with T means to  
     
    160162        // compute tangent space - world space transform which is the transpose, 
    161163        // as it is the inverse of a rotation matrix  
    162         float3x3 tangToWorldTrafo = transpose(float3x3(IN.tangent, IN.bitangent, IN.normal)); 
    163         const float3 tangentSpaceNorm = tex2Dlod(normalMap, float4(IN.texCoord.xy).xyz); 
     164        float3x3 tangToWorldTrafo = transpose(float3x3(IN.tangent.xyz, IN.bitangent.xyz, IN.normal.xyz)); 
     165        const float3 tangentSpaceNorm = tex2Dlod(normalMap, float4(IN.texCoord.xy, 0, 0)).xyz; 
    164166        pix.normal = mul(tangToWorldTrafo, tangentSpaceNorm); 
    165167 
  • GTP/trunk/App/Demos/Vis/FriendlyCulling/src/shaders/ssao.cg

    r3142 r3144  
    11#include "../shaderenv.h" 
     2 
    23 
    34//////////////////// 
     
    56// based on shader of Alexander Kusternig 
    67 
     8 
    79#define USE_EYESPACE_DEPTH 1 
    8  
    910 
    1011 
Note: See TracChangeset for help on using the changeset viewer.