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

Revision 2397, 5.2 KB checked in by szirmay, 17 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                                                        String triggerName,
68                                                        Pass* pass,
69                                                        OgreRenderable* parentRenderable,
70                                                        OgreTechniqueGroup* parentTechniqueGroup,
71                                                        bool createCubeRun = false
72                                                        );
73        /**
74                @brief Destructor.
75        */
76        virtual ~OgreCubeMapRenderTechnique();
77       
78               
79protected:
80               
81        /**
82                @brief the id of the texture unit state the resulting cubemap should be bound to
83        */
84        unsigned char texID;
85        /**
86                @brief the material that should be set for the object while rendering the cubemap
87        */
88        String selfMaterial;
89        /**
90                @brief the material that should be set for the environment while rendering the cubemap
91        */
92        String environmentMaterial;
93        //helper string to name the created cubemaps
94        String texturePostFix;
95        /**
96                @brief sets if the minimum and maximum values of the cubemap should be computed
97        */
98        bool getMinMax;
99        /**
100                @brief sets if this cubemap should be attach to a texture unit of the pass
101        */
102        bool attachToTexUnit;
103        /**
104                @brief sets the name of the gpu shader program parameter to which the minimum value should be bound to
105        */
106        String minVariableName;
107        /**
108                @brief sets the name of the gpu shader program parameter to which the maximum value should be bound to
109        */
110        String maxVariableName;
111
112        String triggerName;
113
114        //inherited
115        RenderingRun* createCubeMapRun();
116        //inherited
117        void cubeMapRunChanged(RenderingRun* run);
118        //inherited
119        void cubeMapRunUpdated(RenderingRun* run);     
120};
121
122/**
123        @brief RenderTechniqueFactory to create OgreCubeMapRenderTechnique instances.
124*/
125class OgreCubeMapRenderTechniqueFactory : public RenderTechniqueFactory
126{
127public:
128       
129        OgreCubeMapRenderTechniqueFactory();
130
131        OgreRenderTechnique* createInstance(IllumTechniqueParams* params,
132                                                                                Pass* pass,
133                                                                                OgreRenderable* parentRenderable,
134                                                                                OgreTechniqueGroup* parentTechniqueGroup);
135
136        void resetParams();
137        virtual bool needMaterialCopy(IllumTechniqueParams* params){return true;}
138
139        unsigned long startFrame;
140        unsigned long cubeMapUpdateInterval;
141        unsigned int cubeMapResolution;                                                                                         
142        unsigned char texID;
143        bool useDistCalc;
144        bool useFaceAngleCalc;
145        float distTolerance;
146        float angleTolerance;
147        bool updateAllFace;
148        bool renderSelf;
149        bool renderEnvironment;
150        String selfMaterial;
151        String environmentMaterial;
152        int layer;
153
154        bool getMinMax;
155        bool attachToTexUnit;
156        String minVariableName;
157        String maxVariableName;
158        String triggerName;
159};
Note: See TracBrowser for help on using the repository browser.