source: GTP/trunk/Lib/Illum/IllumModule/OgreIllumModule/include/RenderTechniques/OgreCausticCasterRenderTechnique.h @ 1055

Revision 1055, 3.8 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 "OgreRenderTechnique.h"
11#include "CausticCasterRenderTechnique.h"
12
13/**
14        @brief CausticCasterRenderTechnique used in an OGRE environment.
15*/
16class OgreCausticCasterRenderTechnique : public OgreRenderTechnique,
17                                                                                        public CausticCasterRenderTechnique     
18{
19public:
20        /**
21                @brief Constructor.
22
23                @param startFrame                                       adds an offset to the current frame number to help evenly distribute updates between frames
24                @param photonMapUpdateInterval          photon map and caustic cubemap update frequency
25                @param photonMapResolution                      photon map resolution
26                @param causticCubeMapResolution         caustic cubemap resolution
27                @param photonMapMaterialName            the name of the material should be used when rendering the choton hit map
28                @param causticMapMaterialName           the name of the material that should be used when rendering the caustic cubemap
29                @param photonMapTexID                           the texture unit state id of the caustic map generation material where the photonhit map should be bound to
30                @param updateAllFace                            defines if all cubemap faces should be updated in a frame or only one face per frame
31                @param useDistance                                      tells if a distance cubemap impostor should be used in photon hit calculation (recommended)
32                @param pass                                                     the pass to operate on
33                @param parentRenderable                         the object to operate on
34                @param parentTechniqueGroup                     the TechniqueGroup this RenderedTechnique is attached to
35        */
36        OgreCausticCasterRenderTechnique( unsigned long startFrame,
37                                                        unsigned long photonMapUpdateInterval,
38                                                        unsigned int photonMapResolution,
39                                                        unsigned int custicCubeMapResolution,
40                                                        String photonMapMaterialName,
41                                                        String causticMapMaterialName,
42                                                        unsigned char photonMapTexID,
43                                                        bool updateAllFace,
44                                                        bool useDistance,
45                                                        float attenuation,
46                                                        Pass* pass,
47                                                        OgreRenderable* parentRenderable,
48                                                        OgreTechniqueGroup* parentTechniqueGroup
49                                                        );
50        /**
51                @brief Destructor.
52        */
53        ~OgreCausticCasterRenderTechnique();   
54        /**
55                @brief Returns the name of the created caustic cubemap.
56
57                @return name of the caustic cubemap texture
58        */
59        String& getCausticCubeMapName();
60        float getAttenuation(){return attenuation;}
61
62protected:
63       
64        /**
65                @brief name of the created photon hit map texture
66        */
67    String photonMapMaterialName;
68        /**
69                @brief name of the created caustic cubemap texture
70        */
71        String causticMapMaterialName;
72        /**
73                @brief the texture unit state id of the caustic map generation material where the photonhit map should be bound to.
74        */
75        unsigned char photonMapTexID;
76        float attenuation;
77       
78        //inherited
79        void photonMapRunChanged(RenderingRun* run);
80        //inherited     
81        void causticCubeMapRunChanged(RenderingRun* run);
82        //inherited
83        void distanceCubeMapRunChanged(RenderingRun* run);
84        //inherited
85        void distanceCubeMapRunUpdated(RenderingRun* run);
86        //inherited
87        RenderingRun* createPhotonMapRun();
88        //inherited
89        RenderingRun* createCausticCubeMapRun();
90        //inherited
91        RenderingRun* createDistanceCubeMapRun();
92};
93
94
95class OgreCausticCasterRenderTechniqueFactory : public RenderTechniqueFactory
96{
97public:
98       
99        OgreCausticCasterRenderTechniqueFactory();
100
101        OgreRenderTechnique* createInstance(IllumTechniqueParams* params,
102                                                                                Pass* pass,
103                                                                                OgreRenderable* parentRenderable,
104                                                                                OgreTechniqueGroup* parentTechniqueGroup);
105
106
107        float attenuation;
108        unsigned long startFrame;
109        unsigned long photonMapUpdateInterval;
110        unsigned int photonMapResolution;
111        unsigned int causticCubeMapResolution;
112        String photonMapMaterialName;
113        String causticMapMaterialName;
114        unsigned char photonMapTexID;
115        bool updateAllFace;
116        bool useDistance;
117       
118
119};
Note: See TracBrowser for help on using the repository browser.