Changeset 2829


Ignore:
Timestamp:
07/10/08 15:57:47 (16 years ago)
Author:
mattausch
Message:

worked on environment + hud

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

Legend:

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

    r2806 r2829  
    182182        const Vector3 fc = mPosition + view * z_far;  
    183183         
    184         const Vector3 up = GetUpVector(); 
     184        const Vector3 up = -GetUpVector(); 
    185185 
    186186        const Vector3 right = GetRightVector(); 
     
    218218        mYaw += angle; 
    219219        CalculateFromPitchAndYaw(); 
    220         /* 
    221         Matrix4x4 viewOrientation(mRight, mUp, mDirection); 
    222         Matrix4x4 rot = RotationYMatrix(angle); 
    223  
    224         viewOrientation = viewOrientation * rot; 
    225  
    226         mDirection = Vector3(viewOrientation.x[2][0], viewOrientation.x[2][1], viewOrientation.x[2][2]); 
    227         mRight =     Vector3(viewOrientation.x[0][0], viewOrientation.x[0][1], viewOrientation.x[0][2]); 
    228         mUp =        Vector3(viewOrientation.x[1][0], viewOrientation.x[1][1], viewOrientation.x[1][2]);*/ 
    229220} 
    230221 
     
    237228 
    238229 
     230void Camera::SetDirection(const Vector3 &direction) 
     231{ 
     232        Vector3 h1 = direction; h1.z = 0; h1.Normalize(); 
     233        Vector3 h2 = direction; h1.x = 0; h2.Normalize(); 
     234 
     235        mYaw = acos(DotProd(h1, Vector3(0, 1, 0))); 
     236        mPitch = acos(DotProd(h2, Vector3(0, 1, 0))); 
     237 
     238        CalculateFromPitchAndYaw(); 
     239} 
     240 
     241 
    239242void Camera::CalculateFromPitchAndYaw() 
    240243{ 
  • GTP/trunk/App/Demos/Vis/FriendlyCulling/src/Camera.h

    r2826 r2829  
    7878        float GetPitch() const { return mPitch; } 
    7979        float GetYaw() const { return mYaw; } 
     80        /** Sets the camera direction. 
     81        */ 
     82        void SetDirection(const Vector3 &direction); 
    8083 
    8184 
  • GTP/trunk/App/Demos/Vis/FriendlyCulling/src/Environment.cpp

    r2828 r2829  
    5858                return false; 
    5959         
     60        // parse vector values 
    6061        Tokenize((*it).second, tokens); 
    6162 
    62         val.x = (float)atof(tokens[1].c_str()); 
    63         val.y = (float)atof(tokens[2].c_str()); 
    64         val.z = (float)atof(tokens[3].c_str()); 
     63        val.x = (float)atof(tokens[0].c_str()); 
     64        val.y = (float)atof(tokens[1].c_str()); 
     65        val.z = (float)atof(tokens[2].c_str()); 
    6566 
    6667        return true; 
     
    7879        while (fgets(str, 256, file) != NULL) 
    7980        { 
     81                // this line is empty or a comment 
     82                if ((strlen(str) <= 1) || (str[0] == '#')) 
     83                        continue; 
     84 
    8085                static vector<string> tokens; 
    8186                tokens.clear(); 
     
    8388                Tokenize(str, tokens, "="); 
    8489 
    85                 // this line is a comment 
    86                 if (tokens[0][0] == '#') 
    87                         continue; 
    88  
     90                if (tokens.size() == 1) 
     91                        cerr << "parsing failed at: " << tokens[0] << endl; 
    8992                // store parameter 
    9093                mParams[tokens[0]] = tokens[1]; 
  • GTP/trunk/App/Demos/Vis/FriendlyCulling/src/PerformanceGraph.cpp

    r2828 r2829  
    6767        glLoadIdentity(); 
    6868         
    69         glTranslatef(0.68f, 0.68f, 0.0f); 
    70         glScalef(0.3f, 0.3f, 1.0f); 
     69        glTranslatef(0.668f, 0.668f, 0.0f); 
     70        glScalef(0.33f, 0.33f, 1.0f); 
    7171 
    7272        DrawBackGround(); 
  • GTP/trunk/App/Demos/Vis/FriendlyCulling/src/chcdemo.cpp

    r2828 r2829  
    298298 
    299299        env.GetFloatParam(string("keyForwardMotion"), keyForwardMotion); 
    300         env.GetFloatParam(string("keyForwardMotion"), keyRotation); 
     300        env.GetFloatParam(string("keyRotation"), keyRotation); 
    301301 
    302302        env.GetIntParam(string("winWidth"), winWidth); 
     
    305305        env.GetBoolParam(string("useFullScreen"), useFullScreen); 
    306306 
     307        //env.GetIntParam(string("numSssaoSamples"), numSsaoSamples); 
     308 
     309        Vector3 camPos; 
     310        env.GetVectorParam(string("camPosition"), camPos); 
     311 
     312        cout << "read values: " << endl; 
     313        cout << "assumedVisibleFrames: " << assumedVisibleFrames << endl;  
     314        cout << "maxBatchSize: " << maxBatchSize << endl; 
     315        cout << "trianglesPerVirtualLeaf: " << trianglesPerVirtualLeaf << endl; 
     316 
     317        cout << "keyForwardMotion: " << keyForwardMotion << endl; 
     318        cout << "keyRotation: " << keyRotation << endl; 
     319        cout << "winWidth: " << winWidth << endl; 
     320        cout << "winHeight: " << winHeight << endl; 
     321        cout << "useFullScreen: " << useFullScreen << endl; 
     322        cout << "camPosition: " << camPos << endl; 
    307323 
    308324 
     
    312328        camera->SetNear(nearDist); 
    313329         
     330        camera->Pitch(-M_PI * 0.5); 
     331        camera->SetPosition(camPos); 
     332 
    314333        visCamera = new Camera(winWidth, winHeight, fov); 
    315334 
     
    341360        glutIgnoreKeyRepeat(true); 
    342361 
     362        // initialise gl graphics 
     363 
    343364        InitExtensions(); 
    344365        InitGLstate(); 
    345366         
    346         //InitRenderTexture(); 
    347367        InitFBO(); 
    348368         
     
    350370        MiddleMotion(0, 0); 
    351371 
    352         perfGraph = new PerformanceGraph(500); 
     372        perfGraph = new PerformanceGraph(1000); 
    353373 
    354374        loader = new ResourceManager(); 
     
    382402        BvhLoader bvhLoader; 
    383403        bvh = bvhLoader.Load(bvh_filename, sceneEntities); 
    384         //bvh = bvhLoader.Load("data/city/model/city.bvh", sceneEntities); 
    385  
    386         myfar = 10.0f * Magnitude(bvh->GetBox().Diagonal()); 
    387404 
    388405        if (!bvh) 
     
    393410        } 
    394411 
     412        // set far plane based on scene extent 
     413        myfar = 10.0f * Magnitude(bvh->GetBox().Diagonal()); 
     414        bvh->SetVirtualLeaves(trianglesPerVirtualLeaf); 
     415 
     416        bvh->SetCamera(camera); 
     417         
    395418        InitCg(); 
    396419 
     
    398421        CreateNoiseTex2D(); 
    399422 
    400         bvh->SetCamera(camera); 
    401  
    402423        // init render traverser 
    403424        ResetTraverser(); 
    404425 
    405         camera->Pitch(-M_PI * 0.5); 
    406         camera->SetPosition(Vector3(483.398f, 242.364f, 186.078f)); 
    407426 
    408427        visualization = new Visualization(bvh, camera, NULL, &state); 
     
    692711        glGenTextures(1, &fontTex); 
    693712        glBindTexture(GL_TEXTURE_2D, fontTex); 
    694         if (!myfont.Create("data/fonts/myfont.glf", fontTex)) 
     713        if (!myfont.Create("data/fonts/verdana.glf", fontTex)) 
    695714                return false; 
    696715 
     
    790809        glColor3f(1.0f, 1.0f, 1.0f); 
    791810         
     811        glEnable(GL_TEXTURE_2D); 
    792812        myfont.Begin(); 
    793813 
     
    806826                } 
    807827        } 
     828        glDisable(GL_TEXTURE_2D); 
    808829} 
    809830 
     
    9951016                glDrawBuffers(1, mrt); 
    9961017 
     1018                glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); 
     1019 
    9971020                break; 
    9981021 
     
    10061029                cgGLDisableProfile(RenderState::sCgVertexProfile); 
    10071030         
     1031                glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); 
     1032 
     1033                glColorMask(GL_FALSE, GL_FALSE, GL_FALSE, GL_FALSE); 
     1034 
    10081035                glDrawBuffers(1, mrt); 
    10091036 
     
    10261053                glDrawBuffers(3, mrt); 
    10271054 
    1028                 break; 
    1029         } 
    1030  
    1031         glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); 
     1055                glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); 
     1056 
     1057                break; 
     1058        } 
     1059 
    10321060 
    10331061        glDepthFunc(GL_LESS); 
     
    10561084        if (renderType == RenderState::DEPTH_PASS)  
    10571085        { 
     1086                glColorMask(GL_TRUE, GL_TRUE, GL_TRUE, GL_TRUE); 
    10581087                RenderVisibleObjects(); 
    10591088        } 
     
    11911220                        upKeyPressed = true; 
    11921221                break; 
    1193         case 'x': 
    1194         case 'X': 
     1222        case 's': 
     1223        case 'S': 
    11951224                        downKeyPressed = true; 
    11961225                break; 
     
    12661295                upKeyPressed = false; 
    12671296                break; 
    1268         case 'X': 
    1269         case 'x': 
     1297        case 'S': 
     1298        case 's': 
    12701299                downKeyPressed = false; 
    12711300                break; 
     
    13891418        else if ((button == GLUT_RIGHT_BUTTON) && (state == GLUT_DOWN)) 
    13901419        { 
     1420                xEyeBegin = x; 
    13911421                yEyeBegin = y; 
    13921422                yMotionBegin = y; 
     
    14361466void RightMotion(int x, int y)  
    14371467{ 
     1468        float eyeXAngle = 0.2f *  M_PI * (xEyeBegin - x) / 180.0; 
    14381469        float eyeYAngle = -0.2f *  M_PI * (yEyeBegin - y) / 180.0; 
    14391470 
    14401471        camera->Yaw(eyeYAngle); 
    1441  
     1472        camera->Pitch(eyeXAngle); 
     1473 
     1474        xEyeBegin = x; 
    14421475        yEyeBegin = y; 
     1476 
    14431477        glutPostRedisplay(); 
    14441478} 
     
    14971531        glLoadIdentity(); 
    14981532        gluOrtho2D(0, winWidth, 0, winHeight); 
    1499  
    1500         int w = winWidth / 2; 
    1501         int h = winHeight / 2; 
    1502          
    1503         //glOrtho(-w, w, -h, h, 0, 10); 
    15041533 
    15051534        glMatrixMode(GL_MODELVIEW); 
     
    16251654 
    16261655// this function inserts a dezimal point after each 1000 
    1627 void CalcDecimalPoint(string &str, int d) 
     1656void CalcDecimalPoint(string &str, int d, int len) 
    16281657{ 
    16291658        static vector<int> numbers; 
    16301659        numbers.clear(); 
    16311660 
    1632         char hstr[100]; 
     1661        static string shortStr; 
     1662        shortStr.clear(); 
     1663 
     1664        static char hstr[100]; 
    16331665 
    16341666        while (d != 0) 
     
    16421674        { 
    16431675                sprintf(hstr, "%d", numbers.back()); 
    1644                 str.append(hstr); 
     1676                shortStr.append(hstr); 
    16451677        } 
    16461678         
     
    16481680        { 
    16491681                sprintf(hstr, ",%03d", numbers[i]); 
    1650                 str.append(hstr); 
    1651         } 
     1682                shortStr.append(hstr); 
     1683        } 
     1684 
     1685        int dif = len - (int)shortStr.size(); 
     1686 
     1687        for (int i = 0; i < dif; ++ i) 
     1688        { 
     1689                str += " "; 
     1690        } 
     1691 
     1692        str.append(shortStr); 
    16521693} 
    16531694 
     
    16961737        Begin2D(); 
    16971738 
    1698         float top_color[3] = {1.0F, 1.0F, 1.0F}; 
    1699         float bottom_color[3] = {0.0F, 0.0F, 1.0F}; 
    1700  
    1701         glEnable(GL_TEXTURE_2D); 
    17021739        glEnable(GL_BLEND); 
    17031740        glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); 
    17041741 
    1705  
    1706         //DrawFont(); 
    17071742        if (showHelp) 
    17081743        {        
     
    17111746        else 
    17121747        { 
    1713                 myfont.Begin(); 
    1714  
    1715                 glColor3f(0.0f, 1.0f, 0.0f); 
    1716  
    17171748                if (showOptions) 
    17181749                { 
     1750                        glColor4f(0.0f, 0.0f, 0.0f, 0.5f); 
     1751                        glRecti(5, winHeight - 95, winWidth * 2 / 3 - 5, winHeight - 5); 
     1752                } 
     1753 
     1754                if (showStatistics) 
     1755                { 
     1756                        glColor4f(0.0f, 0.0f, 0.0f, 0.5f); 
     1757                        glRecti(5, winHeight - 165, winWidth * 2 / 3 - 5, winHeight - 100); 
     1758                } 
     1759 
     1760                glEnable(GL_TEXTURE_2D); 
     1761 
     1762                myfont.Begin(); 
     1763 
     1764                if (showOptions) 
     1765                { 
     1766                        glColor3f(0.0f, 1.0f, 0.0f); 
     1767 
    17191768                        int i = 0; 
    17201769 
     
    17321781 
    17331782                        for (int j = 0; j < 4; ++ j) 
    1734                                 myfont.DrawString(msg[j], 20.0f, 760 - j * 30); 
     1783                                myfont.DrawString(msg[j], 10.0f, winHeight - 5 - j * 20); 
    17351784                } 
    1736  
    1737                 glColor3f(0.0f, 1.0f, 1.0f); 
    17381785 
    17391786                if (showStatistics) 
    17401787                { 
     1788                        glColor3f(1.0f, 1.0f, 0.0f); 
     1789 
    17411790                        string str; 
    17421791                        string str2; 
    17431792 
    1744                         CalcDecimalPoint(str, renderedTriangles); 
    1745                         CalcDecimalPoint(str2, bvh->GetBvhStats().mTriangles); 
     1793                        int len = 10; 
     1794                        CalcDecimalPoint(str, renderedTriangles, len); 
     1795                        CalcDecimalPoint(str2, bvh->GetBvhStats().mTriangles, len); 
    17461796 
    17471797                        int i = 4; 
    17481798 
    1749                         sprintf(msg[i ++], "rendered: %6d nodes (of %6d), %s triangles (of %s)",  
     1799                        sprintf(msg[i ++], "rendered: %6d of %6d nodes, %s of %s triangles",  
    17501800                                renderedNodes, bvh->GetNumVirtualNodes(), str.c_str(), str2.c_str());  
    17511801 
     
    17571807 
    17581808                        for (int j = 4; j < 7; ++ j) 
    1759                                 myfont.DrawString(msg[j], 20.0f, 760 - j * 30); 
     1809                                myfont.DrawString(msg[j], 10.0f, winHeight - (j + 1) * 20); 
    17601810                } 
    17611811 
     
    17721822                } 
    17731823 
    1774                 myfont.DrawString(msg[7], 720.0f, 760.0f);//, top_color, bottom_color); 
     1824                myfont.DrawString(msg[7], 1.3f, 690.0f, 760.0f);//, top_color, bottom_color); 
    17751825                 
    17761826                //sprintf(msg[8], "algorithm time: %6.1f ms", rTime); 
     
    18321882void DisplayRenderTexture() 
    18331883{ 
     1884        glDisable(GL_ALPHA_TEST); 
    18341885        glDisable(GL_TEXTURE_2D); 
    1835          
    18361886        glDisable(GL_LIGHTING); 
    18371887         
     
    18891939        glBegin(GL_QUADS); 
    18901940 
    1891         // slightly larger than screen size in order to hide ambient occlusion errors 
     1941        // note: slightly larger texture hides ambient occlusion error on border but costs resolution 
    18921942        //float offs2 = 0.55f; 
    18931943        float offs2 = 0.5f; 
     
    19001950        glEnd(); 
    19011951 
     1952        cgGLDisableTextureParameter(sColorsTexParamSsao); 
     1953        cgGLDisableTextureParameter(sPositionsTexParamSsao); 
     1954        cgGLDisableTextureParameter(sNormalsTexParamSsao); 
     1955         
    19021956        if (useSsao) 
    1903         { 
    1904                 cgGLDisableTextureParameter(sColorsTexParamSsao); 
    1905                 cgGLDisableTextureParameter(sPositionsTexParamSsao); 
    1906                 cgGLDisableTextureParameter(sNormalsTexParamSsao); 
    1907  
    19081957                cgGLDisableTextureParameter(sNoiseTexParamSsao); 
    1909                 //cgGLDisableTextureParameter(sSamplesParamSsao); 
    1910         } 
    1911         else 
    1912         { 
    1913                 cgGLDisableTextureParameter(sColorsTexParam); 
    1914                 cgGLDisableTextureParameter(sPositionsTexParam); 
    1915                 cgGLDisableTextureParameter(sNormalsTexParam); 
    1916         } 
    19171958 
    19181959        cgGLDisableProfile(RenderState::sCgFragmentProfile); 
     
    19321973 
    19331974 
    1934  
    19351975void GenerateSamples() 
    19361976{ 
    19371977        float scale = 1.0f / (float)NUM_SAMPLES; 
    19381978 
    1939         // fill an array with uniformly distributed spherical samples 
     1979        //////// 
     1980        //-- generate uniformly distributed spherical samples 
     1981 
    19401982        for (int i = 0; i < NUM_SAMPLES; ++ i) 
    19411983        { 
     
    19491991                Vector3 unit = Vector3(sin(theta) * cos(phi), sin(theta) * sin(phi), cos(theta)); 
    19501992 
    1951                 // project 
     1993                ////// 
     1994                //-- we sample in texture space => store 2D component 
     1995 
     1996                // q: project to plane or just drop z? 
    19521997                Vector3 proj = unit / (1.0f + fabs(unit.z)); 
     1998                //Vector3 proj = unit; 
    19531999 
    19542000                samples[i + 0] = proj.x; 
    19552001                samples[i + 1] = proj.y; 
    1956  
    1957                 cout << samples[i] << " " << samples[i + 1] << endl; 
    1958         } 
    1959 } 
    1960  
    1961  
    1962 /*void GenerateSamples() 
    1963 { 
    1964         float scale = 1.0f / (float)NUM_SAMPLES; 
    1965  
    1966         // fill an array with uniformly distributed spherical samples 
    1967         for (int i = 0; i < NUM_SAMPLES; ++ i) 
    1968         { 
    1969                 // create stratified samples over sphere 
    1970                 const float rx = ((float)i + RandomValue(0, 1)) * scale; 
    1971  
    1972                 const float theta = 2.0f * acos(sqrt(1.0f - rx)); 
    1973                  
    1974                 samples[i + 0] = cos(theta); 
    1975                 samples[i + 1] = sin(theta); 
    1976  
    1977                 cout << samples[i] << " " << samples[i + 1] << endl; 
    1978         } 
    1979 } 
    1980 */ 
     2002                //cout << samples[i] << " " << samples[i + 1] << endl; 
     2003        } 
     2004} 
     2005 
    19812006 
    19822007void ComputeViewVectors(Vector3 &tl, Vector3 &tr, Vector3 &bl, Vector3 &br) 
  • GTP/trunk/App/Demos/Vis/FriendlyCulling/src/default.env

    r2828 r2829  
    99winWidth=1024 
    1010winHeight=768 
    11 position=483.398f 242.364f 186.078f 
     11camPosition=483.398f 242.364f 186.078f 
    1212useFullScreen=false 
    1313numSsaoSamples=8 
  • GTP/trunk/App/Demos/Vis/FriendlyCulling/src/shaders/deferred.cg

    r2826 r2829  
     1//////////////////// 
     2// Screen Spaced Ambient Occlusion shader 
     3// mainly based on Kustls shader 
     4 
    15#define NUM_SAMPLES 8 
    26#define SAMPLE_INTENSITY 0.5f 
     
    180184  float ao = ssao(IN, positions, noiseTexture, samples, normal); 
    181185   
    182   //OUT.color = tex2D(positions, IN.texCoord.xy); 
    183   //OUT.color = ao; 
    184   //OUT.color = col; 
    185   OUT.color = ao * col; 
     186   //OUT.color = ao; 
     187   OUT.color = ao * col;  
    186188 
    187189  return OUT; 
Note: See TracChangeset for help on using the changeset viewer.