source: GTP/trunk/Lib/Illum/IllumModule/OgreIllumModule/include/RenderTechniques/OgreDistanceCubeMapRenderTechnique.h @ 2355

Revision 2355, 3.7 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 "DistanceCubeMapRenderTechnique.h"
11#include "OgreCubeMapRenderTechnique.h"
12#include "Ogre.h"
13
14using namespace Ogre;
15
16/**
17        @brief DistanceCubeMapRenderTechnique used in an Ogre environment.
18*/
19class OgreDistanceCubeMapRenderTechnique :      public DistanceCubeMapRenderTechnique,
20                                                                                        public OgreCubeMapRenderTechnique
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                distance 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        OgreDistanceCubeMapRenderTechnique( 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                                                        );
72        /**
73                @brief Destructor.
74        */
75        virtual ~OgreDistanceCubeMapRenderTechnique();
76       
77        //inherited
78        void update(unsigned long frameNum);
79       
80protected:     
81
82        //inherited
83        void distanceCubeMapRunChanged(RenderingRun* run);
84        //inherited
85        void distanceCubeMapRunUpdated(RenderingRun* run);
86
87       
88};
89
90/**
91        @brief RenderTechniqueFactory to create OgreDistanceCubeMapRenderTechnique instances.
92*/
93class OgreDistanceCubeMapRenderTechniqueFactory : public OgreCubeMapRenderTechniqueFactory
94{
95public:
96        OgreDistanceCubeMapRenderTechniqueFactory();
97
98        OgreRenderTechnique* createInstance(IllumTechniqueParams* params,
99                                                                                Pass* pass,
100                                                                                OgreRenderable* parentRenderable,
101                                                                                OgreTechniqueGroup* parentTechniqueGroup);     
102
103};
Note: See TracBrowser for help on using the repository browser.