Changeset 2840


Ignore:
Timestamp:
07/16/08 11:28:52 (16 years ago)
Author:
mattausch
Message:
 
Location:
GTP/trunk/App/Demos/Vis/FriendlyCulling
Files:
11 edited
2 moved

Legend:

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

    r2839 r2840  
    547547                                </File> 
    548548                                <File 
    549                                         RelativePath=".\src\Transform.h" 
     549                                        RelativePath=".\src\Transform3.h" 
    550550                                        > 
    551551                                </File> 
     
    717717                                </File> 
    718718                                <File 
    719                                         RelativePath=".\src\Transform.cpp" 
     719                                        RelativePath=".\src\Transform3.cpp" 
    720720                                        > 
    721721                                </File> 
  • GTP/trunk/App/Demos/Vis/FriendlyCulling/src/Geometry.h

    r2823 r2840  
    1 #ifndef GEOMETRY_H 
    2 #define GEOMETRY_H 
     1#ifndef __GEOMETRY_H 
     2#define __GEOMETRY_H 
    33 
    44#include "common.h" 
  • GTP/trunk/App/Demos/Vis/FriendlyCulling/src/RenderQueue.cpp

    r2839 r2840  
    55#include "Material.h" 
    66#include "Camera.h" 
     7#include "Shape.h" 
    78 
    89 
     
    138139                entity->mRenderQueueBucket = bucket; 
    139140        } 
     141 
     142        bucket->mEntities.push_back(entity); 
    140143#endif 
    141         bucket->mEntities.push_back(entity); 
     144 
    142145} 
    143146 
     
    146149{ 
    147150        for (size_t i = 0; i < mBuckets.size(); ++ i) 
    148                 mBuckets[i]->mEntities.clear(); 
     151                mBuckets[i]->mShapes.clear(); 
    149152 
    150153        mSize = 0; 
     
    165168        for (size_t i = 0; i < mBuckets.size(); ++ i) 
    166169        { 
    167                 SceneEntityContainer::const_iterator sit, sit_end = mBuckets[i]->mEntities.end(); 
    168                 for (sit = mBuckets[i]->mEntities.begin(); sit != sit_end; ++ sit) 
    169                 { 
    170                         SceneEntity *ent = *sit; 
    171                         ent->Render(mState); 
     170                ShapeContainer::const_iterator sit, sit_end = mBuckets[i]->mShapes.end(); 
     171 
     172                for (sit = mBuckets[i]->mShapes.begin(); sit != sit_end; ++ sit) 
     173                { 
     174                        Shape *shape = *sit; 
     175                        shape->Render(mState); 
    172176                } 
    173177        } 
     
    183187                Debug << "\n******\nbucket " << (int)i << endl; 
    184188 
    185                 SceneEntityContainer::const_iterator sit, sit_end = mBuckets[i]->mEntities.end(); 
    186  
    187                 for (sit = mBuckets[i]->mEntities.begin(); sit != sit_end; ++ sit) 
    188                 { 
    189                         SceneEntity *ent = *sit; 
    190         #ifdef TODO 
    191                         Material *mat = ent->GetMaterial(); 
     189                ShapeContainer::const_iterator sit, sit_end = mBuckets[i]->mShapes.end(); 
     190 
     191                for (sit = mBuckets[i]->mShapes.begin(); sit != sit_end; ++ sit) 
     192                { 
     193                        Shape *shape = *sit; 
     194                         
     195                        Material *mat = shape->GetMaterial(); 
    192196                        int tsize = mat->GetTexture() ? mat->GetTexture()->GetByteSize() : 0; 
    193                         float dist = SqrMagnitude(ent->GetBoundingBox().Center() - mCamera->GetPosition()); 
    194                         Debug << "e: " << ent << " a: " << mat->IsAlphaTestEnabled() << " s: " << tsize << " d: " << dist << " " << endl; 
     197#ifdef TODO 
     198                        float dist = SqrMagnitude(shape->GetBoundingBox().Center() - mCamera->GetPosition()); 
     199#else 
     200                        float dist = -1; 
    195201#endif 
     202                        Debug << "e: " << shape << " a: " << mat->IsAlphaTestEnabled() << " s: " << tsize << " d: " << dist << " " << endl; 
    196203                } 
    197204        } 
  • GTP/trunk/App/Demos/Vis/FriendlyCulling/src/ResourceManager.cpp

    r2839 r2840  
    88#include "Matrix4x4.h" 
    99#include "Vector3.h" 
     10#include "Transform3.h" 
    1011 
    1112 
     
    4142        str.read(reinterpret_cast<char *>(&hasTrafo), sizeof(bool)); 
    4243 
    43         Matrix4x4 *trafo; 
     44        Matrix4x4 *m; 
    4445         
    4546        SceneEntity *sceneGeom; 
     
    4748        if (!hasTrafo) 
    4849        { 
    49                 trafo = NULL; 
     50                m = NULL; 
    5051        } 
    5152        else 
    5253        { 
    53                 trafo = new Matrix4x4(); 
    54                 str.read(reinterpret_cast<char *>(trafo->x), sizeof(Matrix4x4)); 
    55                 mTrafos.push_back(trafo); 
    56         } 
    57  
     54                m = new Matrix4x4(); 
     55                str.read(reinterpret_cast<char *>(m->x), sizeof(Matrix4x4)); 
     56        } 
     57 
     58        Transform3 *trafo = new Transform3(m); 
     59        mTrafos.push_back(trafo); 
     60         
    5861        // use instancing 
    5962        sceneGeom = new SceneEntity(trafo); 
  • GTP/trunk/App/Demos/Vis/FriendlyCulling/src/ResourceManager.h

    r2795 r2840  
    77#include <fstream> 
    88#include <map> 
     9#include "common.h" 
    910 
    10 #include "common.h" 
    1111 
    1212class igzstream; 
     
    2121class Texture; 
    2222class Matrix4x4; 
     23class Transform3; 
     24 
    2325 
    2426/** Loads a scene and also handles the cleanup 
     
    5254        std::vector<Geometry *> mGeometry; 
    5355        std::vector<SceneEntity *> mSceneEntities; 
    54         std::vector<Matrix4x4 *> mTrafos; 
     56        std::vector<Transform3 *> mTrafos; 
    5557}; 
    5658 
  • GTP/trunk/App/Demos/Vis/FriendlyCulling/src/SceneEntity.cpp

    r2839 r2840  
    44#include "Material.h" 
    55#include "RenderState.h" 
     6#include "Shape.h" 
    67#include <Cg/cg.h> 
    78#include <Cg/cgGL.h> 
     
    1112{ 
    1213 
    13 CGparameter SceneEntity::sModelMatrixParam; 
    14  
    15 SceneEntity::SceneEntity(Matrix4x4 *trafo): mTransform(trafo) 
     14SceneEntity::SceneEntity(Transform3 *trafo): mTransform(trafo) 
    1615{ 
    1716} 
     
    2524ShapeContainer *SceneEntity::GetCurrentLOD() 
    2625{ 
    27         if (mLODInfos.empty()) 
     26/*      if (mLODInfos->empty()) 
    2827                return &mShapes; 
    2928 
     
    3231        int i = 0; 
    3332 
    34         for (int i = 0; i < mLODInfos.size(); ++ i) 
     33        for (int i = 0; i < mLODInfos->size(); ++ i) 
    3534        { 
    36                 if (mLODInfos[i].mDistance > mDistance) 
    37                         return mShapes[i]; 
     35                if ((mLODInfos*)[i].mDistance > mDistance) 
     36                        return &(mLODInfos*)[i].mShapes; 
    3837        } 
    3938 
    40         return mShapes.last(); 
     39        return &(mLODInfos->last().mShapes); 
     40        */ 
     41        return NULL; 
    4142} 
    4243 
     
    4950        ShapeContainer *shapes; 
    5051 
    51         shspes = GetCurrentLOD(mDistance); 
     52        shapes = GetCurrentLOD(); 
    5253 
    5354        for (int i = 0; i < shapes->size(); ++ i) 
    5455        { 
    55                 (shapes*)[i]->Render(state); 
     56                (*shapes)[i]->Render(state); 
    5657        } 
    5758} 
     
    6465 
    6566 
    66 void SceneEntity::SetTransformation(Matrix4x4 *trafo) 
     67void SceneEntity::SetTransform(Transform3 *trafo) 
    6768{ 
    6869        mTransform = trafo; 
     
    8687#ifdef TODO 
    8788        AxisAlignedBox3 box = mGeometry->GetBoundingBox(); 
     89        if (mTransform) Transform(box, *mTransform); 
    8890#else 
    8991        AxisAlignedBox3 box; 
    9092#endif 
    91         if (mTransform) Transform(box, *mTransform); 
     93         
    9294 
    9395        return box; 
  • GTP/trunk/App/Demos/Vis/FriendlyCulling/src/SceneEntity.h

    r2839 r2840  
    1717class Geometry; 
    1818class RenderState; 
    19 struct RenderQueueBucket; 
     19class Transform3; 
     20 
    2021 
    2122/** Class representing a scene entity. 
     
    3031        /** Creates a scene entity. 
    3132        */ 
    32         SceneEntity(Transformation *trafo); 
     33        SceneEntity(Transform3 *trafo); 
    3334 
    3435        ~SceneEntity(); 
     
    4748        /** Set pointer to the geometry 
    4849        */ 
    49         void SetTransformation(Transformation *trafo); 
     50        void SetTransform(Transform3 *trafo); 
    5051        /** Returns the transformed bounding box. 
    5152        */ 
     
    5960        /** Returns the trafo of this scene entity. 
    6061        */ 
    61         inline Transformation *GetTransformation() const  { return mTransform; } 
     62        inline Transform3 *GetTransform() const  { return mTransform; } 
     63 
    6264 
    6365protected: 
    6466 
     67        ShapeContainer *GetCurrentLOD(); 
     68 
    6569        /// transform matrix  
    66         Transformation *mTransform; 
    67  
     70        Transform3 *mTransform; 
     71        /// Stores information about the LOD levels 
    6872        LODInfoContainer mLODInfos; 
    69  
     73        /// the renderable shapes 
    7074        ShapeContainer mShapes; 
    71                  
     75        /// when this entity was last rendered 
    7276        int mLastRendered; 
    7377}; 
  • GTP/trunk/App/Demos/Vis/FriendlyCulling/src/Shape.cpp

    r2839 r2840  
    1 #include "glInterface.h" 
    21#include "Shape.h" 
    32#include "Material.h" 
    43#include "RenderState.h" 
    54#include "Geometry.h" 
     5#include "SceneEntity.h" 
     6 
     7#include "glInterface.h" 
    68#include <Cg/cg.h> 
    79#include <Cg/cgGL.h> 
     
    1113{ 
    1214 
    13 Shape::Shape(Geometry *geometry,  
    14                          Material *mat): 
    15 mGeometry(geometry), mMaterial(mat), mRenderQueueBucket(NULL) 
     15Shape::Shape(Geometry *geometry, Material *mat, SceneEntity *parent): 
     16mGeometry(geometry),  
     17mMaterial(mat),  
     18mParent(parent),  
     19mRenderQueueBucket(NULL) 
    1620{ 
    1721} 
  • GTP/trunk/App/Demos/Vis/FriendlyCulling/src/Shape.h

    r2839 r2840  
    5050        Geometry *mGeometry; 
    5151        Material *mMaterial; 
    52          
     52        SceneEntity *mParent; 
     53 
    5354        /// pointer to the renderqueue bucket this entity belongs to 
    5455        RenderQueueBucket *mRenderQueueBucket; 
  • GTP/trunk/App/Demos/Vis/FriendlyCulling/src/Transform3.cpp

    r2839 r2840  
    1 #include "Transformation.h" 
    2  
     1#include "Transform3.h" 
     2#include "Matrix4x4.h" 
     3#include "RenderState.h" 
    34 
    45 
     
    67{ 
    78 
    8 CGparameter Transformation::sModelMatrixParam; 
     9CGparameter Transform3::sModelMatrixParam; 
    910 
    10 Transformation::Transformation(Matrix4x4 *trafo): mMatrix(trafo) 
     11Transform3::Transform3(Matrix4x4 *trafo): mMatrix(trafo) 
    1112{ 
    1213} 
    1314 
    1415 
    15 Transformation::~Transformation 
     16Transform3::~Transform3() 
    1617{ 
     18        DEL_PTR(mMatrix); 
    1719} 
    1820 
    1921 
    20 void Transformation::Load(RenderState *state) 
     22void Transform3::Load(RenderState *state) 
    2123{ 
    2224        if (!mMatrix) return; 
     
    2426        if (state->GetRenderType() == RenderState::DEFERRED) 
    2527        { 
    26                 cgGLSetMatrixParameterfc(sModelMatrixParam, (const float *)mTransform->x); 
     28                cgGLSetMatrixParameterfc(sModelMatrixParam, (const float *)mMatrix->x); 
    2729        } 
    2830        else 
    2931        { 
    3032                glPushMatrix(); 
    31                 glMultMatrixf((float *)mTransform->x); 
     33                glMultMatrixf((float *)mMatrix->x); 
    3234        } 
    3335} 
    3436 
    3537 
    36 void Transformation::Unload(RenderState *state) 
     38void Transform3::Unload(RenderState *state) 
    3739{ 
    3840        if (!mMatrix) return; 
  • GTP/trunk/App/Demos/Vis/FriendlyCulling/src/Transform3.h

    r2839 r2840  
    1 #ifndef __SCENEENTITY_H 
    2 #define __SCENEENTITY_H 
     1#ifndef __TRANSFORM3_H 
     2#define __TRANSFORM3_H 
    33 
    44#include "glInterface.h" 
     
    1111 
    1212class RenderState; 
     13class Matrix4x4; 
    1314 
    1415 
    1516/** Class representing a transformation 
    1617*/ 
    17 class Transformation 
     18class Transform3 
    1819{ 
    1920public: 
    2021         
    21         static CGparameter sModelMatrixParam; 
    22  
    2322        /** Creates a scene entity. 
    2423        */ 
    25         Transformation(Matrix4x4 *trafo); 
     24        Transform3(Matrix4x4 *trafo); 
    2625 
    27         ~Transformation(); 
     26        ~Transform3(); 
    2827        /** Loads this transformation. 
    2928        */ 
     
    3635        inline Matrix4x4 *GetMatrix() const  { return mMatrix; } 
    3736 
     37        static CGparameter sModelMatrixParam; 
     38 
     39 
    3840protected: 
    3941 
     
    4547} 
    4648 
    47 #endif // __SCENEENTITY_H 
     49#endif // __TRANSFORM_H 
  • GTP/trunk/App/Demos/Vis/FriendlyCulling/src/Visualization.h

    r2806 r2840  
    2323            as parameters 
    2424        */ 
    25         Visualization(Bvh *bvh, Camera *camera, Camera *vizCamera, RenderState *renderState); 
     25        Visualization(Bvh *bvh, Camera *camera, Camera *vizCamera, RenderState *state); 
    2626 
    2727        ~Visualization(); 
  • GTP/trunk/App/Demos/Vis/FriendlyCulling/src/chcdemo.cpp

    r2838 r2840  
    3030#include "Environment.h" 
    3131#include "Halton.h" 
     32#include "Transform3.h" 
    3233 
    3334 
     
    499500                cgGLLoadProgram(sCgMrtVertexProgram); 
    500501 
    501                 SceneEntity::sModelMatrixParam = cgGetNamedParameter(sCgMrtVertexProgram, "ModelMatrix"); 
     502                Transform3::sModelMatrixParam = cgGetNamedParameter(sCgMrtVertexProgram, "ModelMatrix"); 
    502503                sModelViewProjMatrixParam = cgGetNamedParameter(sCgMrtVertexProgram, "ModelViewProj"); 
    503504        } 
     
    10661067 
    10671068                static Matrix4x4 identity = IdentityMatrix(); 
    1068                 cgGLSetMatrixParameterfc(SceneEntity::sModelMatrixParam, (const float *)identity.x); 
     1069                cgGLSetMatrixParameterfc(Transform3::sModelMatrixParam, (const float *)identity.x); 
    10691070        }                
    10701071} 
Note: See TracChangeset for help on using the changeset viewer.