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)
RevLine 
[790]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"
[1711]11#include "OgreCubeMapRenderTechnique.h"
[790]12#include "Ogre.h"
13
14using namespace Ogre;
15
16/**
17        @brief DistanceCubeMapRenderTechnique used in an Ogre environment.
18*/
19class OgreDistanceCubeMapRenderTechnique :      public DistanceCubeMapRenderTechnique,
[1711]20                                                                                        public OgreCubeMapRenderTechnique
[790]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           
[2240]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
[790]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,
[1711]58                                                        bool renderSelf,
[1722]59                                                        bool renderEnvironment,
60                                                        String selfMaterial,
61                                                        String environmentMaterial,
[1725]62                                                        int layer,
[1886]63                                                        bool getMinMax,
64                                                        bool attachToTexUnit,
65                                                        String minVariableName,
66                                                        String maxVariableName,
[2355]67                                                        String triggerName,
[790]68                                                        Pass* pass,
69                                                        OgreRenderable* parentRenderable,
70                                                        OgreTechniqueGroup* parentTechniqueGroup
71                                                        );
72        /**
73                @brief Destructor.
74        */
[2320]75        virtual ~OgreDistanceCubeMapRenderTechnique();
[790]76       
77        //inherited
78        void update(unsigned long frameNum);
79       
80protected:     
[1711]81
[790]82        //inherited
83        void distanceCubeMapRunChanged(RenderingRun* run);
84        //inherited
85        void distanceCubeMapRunUpdated(RenderingRun* run);
86
87       
[836]88};
89
[2240]90/**
91        @brief RenderTechniqueFactory to create OgreDistanceCubeMapRenderTechnique instances.
92*/
[1711]93class OgreDistanceCubeMapRenderTechniqueFactory : public OgreCubeMapRenderTechniqueFactory
[836]94{
95public:
96        OgreDistanceCubeMapRenderTechniqueFactory();
97
98        OgreRenderTechnique* createInstance(IllumTechniqueParams* params,
99                                                                                Pass* pass,
100                                                                                OgreRenderable* parentRenderable,
[1711]101                                                                                OgreTechniqueGroup* parentTechniqueGroup);     
[836]102
[790]103};
Note: See TracBrowser for help on using the repository browser.