source: GTP/trunk/Lib/Illum/IllumModule/OgreIllumModule/include/RenderTechniques/OgreCubeMapRenderTechnique.h @ 2240

Revision 2240, 5.0 KB checked in by szirmay, 18 years ago (diff)
Line 
1#pragma once
2
3//disable inheritance warning caused by multiple inheritance
4#if _WIN32
5#if _MSC_VER
6#pragma warning(disable: 4250)
7#endif
8#endif
9
10#include "CubeMapRenderTechnique.h"
11#include "OgreRenderTechnique.h"
12#include "Ogre.h"
13
14using namespace Ogre;
15
16/**
17        @brief CubeMapRenderTechnique used in an Ogre environment.
18*/
19class OgreCubeMapRenderTechnique :      virtual public CubeMapRenderTechnique,
20                                                                        public OgreRenderTechnique
21{
22public:
23
24        /**
25                @brief Constructor.
26
27                @param startFrame                               adds an offset to the current frame number to help evenly distribute updates between frames
28                @param cubeMapUpdateInterval    update frequency
29                @param cubeMapResolution                color cubemap resolution
30                @param texID                                    the id of the texture unit state the resulting cubemap should be bound to
31                @param useDistCalc                              flag to skip cube face update if object is far away
32                @param useFaceAngleCalc                 flag to skip cube face update if face is neglible
33                @param distTolerance                    distance tolerance used in face skip
34                @param angleTolerance                   angle tolerance used in face skip
35                @param updateAllFace                    defines if all cubemap faces should be updated in a frame or only one face per frame
36                @param renderSelf                               sets if the object should be rendered to the cube map
37                @param renderEnvironment                sets if the environment should be rendered to the cube map
38                @param selfMaterial                             the material that should be set for the object while rendering the cubemap
39                @param environmentMaterial      the material that should be set for the environment while rendering the cubemap
40                @param layer                                    the layer of this cubemap
41                @param getMinMax                                sets if the minimum and maximum values of the cubemap should be computed
42                @param attachToTexUnit                  sets if this cubemap should be attach to a texture unit of the pass
43                @param minVariableName                  sets the name of the gpu shader program parameter to which the minimum value should be bound to
44                @param maxVariableName                  sets the name of the gpu shader program parameter to which the maximum value should be bound to
45                @param pass                                             the pass to operate on                 
46                @param parentRenderable                 the object to operate on
47                @param parentTechniqueGroup             the TechniqueGroup this RenderedTechnique is attached to
48        */
49        OgreCubeMapRenderTechnique( unsigned long startFrame,
50                                                        unsigned long cubeMapUpdateInterval,
51                                                        unsigned int cubeMapResolution,                                                                                         
52                                                        unsigned char texID,
53                                                        bool useDistCalc,
54                                                        bool useFaceAngleCalc,
55                                                        float distTolerance,
56                                                        float angleTolerance,
57                                                        bool updateAllFace,
58                                                        bool renderSelf,
59                                                        bool renderEnvironment,
60                                                        String selfMaterial,
61                                                        String environmentMaterial,
62                                                        int layer,
63                                                        bool getMinMax,
64                                                        bool attachToTexUnit,
65                                                        String minVariableName,
66                                                    String maxVariableName,
67                                                        Pass* pass,
68                                                        OgreRenderable* parentRenderable,
69                                                        OgreTechniqueGroup* parentTechniqueGroup,
70                                                        bool createCubeRun = false
71                                                        );
72        /**
73                @brief Destructor.
74        */
75        ~OgreCubeMapRenderTechnique();
76       
77               
78protected:
79               
80        /**
81                @brief the id of the texture unit state the resulting cubemap should be bound to
82        */
83        unsigned char texID;
84        /**
85                @brief the material that should be set for the object while rendering the cubemap
86        */
87        String selfMaterial;
88        /**
89                @brief the material that should be set for the environment while rendering the cubemap
90        */
91        String environmentMaterial;
92        //helper string to name the created cubemaps
93        String texturePostFix;
94        /**
95                @brief sets if the minimum and maximum values of the cubemap should be computed
96        */
97        bool getMinMax;
98        /**
99                @brief sets if this cubemap should be attach to a texture unit of the pass
100        */
101        bool attachToTexUnit;
102        /**
103                @brief sets the name of the gpu shader program parameter to which the minimum value should be bound to
104        */
105        String minVariableName;
106        /**
107                @brief sets the name of the gpu shader program parameter to which the maximum value should be bound to
108        */
109        String maxVariableName;
110
111        //inherited
112        RenderingRun* createCubeMapRun();
113        //inherited
114        void cubeMapRunChanged(RenderingRun* run);
115        //inherited
116        void cubeMapRunUpdated(RenderingRun* run);     
117};
118
119/**
120        @brief RenderTechniqueFactory to create OgreCubeMapRenderTechnique instances.
121*/
122class OgreCubeMapRenderTechniqueFactory : public RenderTechniqueFactory
123{
124public:
125       
126        OgreCubeMapRenderTechniqueFactory();
127
128        OgreRenderTechnique* createInstance(IllumTechniqueParams* params,
129                                                                                Pass* pass,
130                                                                                OgreRenderable* parentRenderable,
131                                                                                OgreTechniqueGroup* parentTechniqueGroup);
132
133        void resetParams();
134       
135        unsigned long startFrame;
136        unsigned long cubeMapUpdateInterval;
137        unsigned int cubeMapResolution;                                                                                         
138        unsigned char texID;
139        bool useDistCalc;
140        bool useFaceAngleCalc;
141        float distTolerance;
142        float angleTolerance;
143        bool updateAllFace;
144        bool renderSelf;
145        bool renderEnvironment;
146        String selfMaterial;
147        String environmentMaterial;
148        int layer;
149
150        bool getMinMax;
151        bool attachToTexUnit;
152        String minVariableName;
153        String maxVariableName;
154};
Note: See TracBrowser for help on using the repository browser.