source: GTP/trunk/Lib/Illum/IllumModule/OgreIllumModule/src/RenderTechniques/OgreDistanceCubeMapRenderTechnique.cpp @ 2355

Revision 2355, 4.9 KB checked in by szirmay, 17 years ago (diff)
RevLine 
[790]1#include "OgreDistanceCubeMapRenderTechnique.h"
2#include "OgreTechniqueGroup.h"
[1722]3#include "OgreCubeMapRenderingRun.h"
[790]4
5OgreDistanceCubeMapRenderTechnique::OgreDistanceCubeMapRenderTechnique(unsigned long startFrame,
6                                                                                                                unsigned long cubeMapUpdateInterval,
7                                                                                                                unsigned int cubeMapResolution,                                                                                         
8                                                                                                                unsigned char texID,
9                                                                                                                bool useDistCalc,
10                                                                                                                bool useFaceAngleCalc,
11                                                                                                                float distTolerance,
12                                                                                                                float angleTolerance,
13                                                                                                                bool updateAllFace,
[1711]14                                                                                                                bool renderSelf,
[1722]15                                                                                                                bool renderEnvironment,
16                                                                                                                String selfMaterial,
17                                                                                                                String environmentMaterial,
[1725]18                                                                                                                int layer,
[1886]19                                                                                                                bool getMinMax,
20                                                                                                                bool attachToTexUnit,
21                                                                                                                String minVariableName,
22                                                                                                                String maxVariableName,
[2355]23                                                                                                                String triggerName,
[790]24                                                                                                                Pass* pass,
25                                                                                                                OgreRenderable* parentRenderable,
26                                                                                                                OgreTechniqueGroup* parentTechniqueGroup)
[1711]27                                                        :
[2355]28                                                        OgreCubeMapRenderTechnique(startFrame, cubeMapUpdateInterval, cubeMapResolution, texID, useDistCalc, useFaceAngleCalc, distTolerance, angleTolerance, updateAllFace, renderSelf, renderEnvironment, selfMaterial, environmentMaterial, layer, getMinMax, attachToTexUnit, minVariableName, maxVariableName, triggerName, pass, parentRenderable, parentTechniqueGroup),
[1725]29                                                        CubeMapRenderTechnique(startFrame, cubeMapUpdateInterval, cubeMapResolution, useDistCalc, useFaceAngleCalc, distTolerance, angleTolerance, updateAllFace, renderSelf, renderEnvironment, layer, parentRenderable, parentTechniqueGroup),
30                                                        DistanceCubeMapRenderTechnique(startFrame, cubeMapUpdateInterval, cubeMapResolution, useDistCalc, useFaceAngleCalc, distTolerance, angleTolerance, updateAllFace, renderSelf, renderEnvironment, layer, parentRenderable, parentTechniqueGroup),
[790]31                                                        RenderTechnique(parentRenderable, parentTechniqueGroup)
32{       
[1725]33        switch(layer)
34        {
35                case 0:
36                        texturePostFix = "_DISTANCECUBEMAP";
37                        break;
38                case 1:
39                        texturePostFix = "_DISTANCECUBEMAP_L1";
40                        break;
41                case 2:
42                        texturePostFix = "_DISTANCECUBEMAP_L2";
43                        break;
44                case 3:
45                        texturePostFix = "_DISTANCECUBEMAP_L3";
46                        break;
47                case 4:
48                        texturePostFix = "_DISTANCECUBEMAP_L4";
49                        break;
50                case 5:
51                        texturePostFix = "_DISTANCECUBEMAP_L5";
52                        break;
53                case 6:
54                        texturePostFix = "_DISTANCECUBEMAP_L6";
55                        break;
56        }
57        if(sharedRuns->getRun(cubemapLayer) == 0)
58                sharedRuns->addRun(cubemapLayer, createCubeMapRun());
[1722]59
[1725]60        distanceCubeMapRunChanged(sharedRuns->getRun(cubemapLayer));
[790]61}
62
63
64OgreDistanceCubeMapRenderTechnique::~OgreDistanceCubeMapRenderTechnique()
65{
66
67}
68
69void OgreDistanceCubeMapRenderTechnique::update(unsigned long frameNum)
70{
71        DistanceCubeMapRenderTechnique::update(frameNum);
72}
73
74void OgreDistanceCubeMapRenderTechnique::distanceCubeMapRunChanged(RenderingRun* run)
75{
[1886]76        OgreCubeMapRenderTechnique::cubeMapRunChanged(run);
77/*      OgreCubeMapRenderingRun* cuberun =(OgreCubeMapRenderingRun*) (run->asOgreRenderingRun());
[1722]78        String cubemapname = cuberun->getCubeMapTextureName();
[790]79       
[1886]80        pass->getTextureUnitState(texID)->setTextureName(cubemapname);*/
[790]81}
82
83void OgreDistanceCubeMapRenderTechnique::distanceCubeMapRunUpdated(RenderingRun* run)
84{
85        GpuProgramParametersSharedPtr fpParams = pass->getFragmentProgramParameters();
[1725]86        Vector3 center = ((OgreSharedRuns*) sharedRuns)->getRootPosition(cubemapLayer);
[790]87        fpParams->setNamedConstant("lastCenter",center);
[1956]88
89        OgreCubeMapRenderTechnique::cubeMapRunUpdated(run);
[790]90}
91
92
[1722]93
[836]94///Technique factory
95OgreDistanceCubeMapRenderTechniqueFactory::OgreDistanceCubeMapRenderTechniqueFactory()
96{
[1711]97        typeName = "DistanceCubeMap";   
[836]98}
99
100OgreRenderTechnique* OgreDistanceCubeMapRenderTechniqueFactory::createInstance(
101                                                                                IllumTechniqueParams* params,
102                                                                                Pass* pass,
103                                                                                OgreRenderable* parentRenderable,
104                                                                                OgreTechniqueGroup* parentTechniqueGroup)
105{       
[1711]106        OgreCubeMapRenderTechniqueFactory::resetParams();
[836]107        texID = 1;
[2265]108        environmentMaterial = "GTP/Basic/Distance";
109        selfMaterial = "GTP/Basic/Distance";
[2355]110        triggerName = "ILLUM_TRIGGER_DISTANCE";
[1711]111        OgreCubeMapRenderTechniqueFactory::parseParams(params);
[836]112        parseParams(params);
[1711]113       
[836]114        OgreDistanceCubeMapRenderTechnique* result = new OgreDistanceCubeMapRenderTechnique(
115                                                                                                startFrame,
116                                                                                                cubeMapUpdateInterval,
117                                                                                                cubeMapResolution,
118                                                                                                texID,
119                                                                                                useDistCalc,
120                                                                                                useFaceAngleCalc,
121                                                                                                distTolerance,
122                                                                                                angleTolerance,
123                                                                                                updateAllFace,
[1711]124                                                                                                renderSelf,
[1722]125                                                                                                renderEnvironment,
126                                                                                                selfMaterial,
127                                                                                                environmentMaterial,
[1725]128                                                                                                layer,
[1886]129                                                                                                getMinMax,
130                                                                                                attachToTexUnit,
131                                                                                                minVariableName,
132                                                                                                maxVariableName,
[2355]133                                                                                                triggerName,
[836]134                                                                                                pass,
135                                                                                                parentRenderable,
136                                                                                                parentTechniqueGroup);
137
138        return result;
139}
140
Note: See TracBrowser for help on using the repository browser.