source: GTP/trunk/Lib/Illum/IllumModule/OgreIllumModule/src/RenderTechniques/OgreColorCubeMapRenderTechnique.cpp @ 1725

Revision 1725, 4.2 KB checked in by szirmay, 18 years ago (diff)
Line 
1#include "OgreColorCubeMapRenderTechnique.h"
2#include "OgreTechniqueGroup.h"
3#include "OgreCubeMapRenderingRun.h"
4
5OgreColorCubeMapRenderTechnique::OgreColorCubeMapRenderTechnique(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,
14                                                                                                                bool renderSelf,
15                                                                                                                bool renderEnvironment,
16                                                                                                                String selfMaterial,
17                                                                                                                String environmentMaterial,
18                                                                                                                int layer,
19                                                                                                                Pass* pass,
20                                                                                                                OgreRenderable* parentRenderable,
21                                                                                                                OgreTechniqueGroup* parentTechniqueGroup)
22                                                                                                                        :OgreCubeMapRenderTechnique(startFrame, cubeMapUpdateInterval, cubeMapResolution, texID, useDistCalc, useFaceAngleCalc, distTolerance, angleTolerance, updateAllFace, renderSelf, renderEnvironment, selfMaterial, environmentMaterial, layer, pass, parentRenderable, parentTechniqueGroup),
23                                                                                                                        ColorCubeMapRenderTechnique(startFrame, cubeMapUpdateInterval, cubeMapResolution, useDistCalc, useFaceAngleCalc, distTolerance, angleTolerance, updateAllFace, renderSelf, renderEnvironment, layer, parentRenderable, parentTechniqueGroup),
24                                                                                                                        CubeMapRenderTechnique(startFrame, cubeMapUpdateInterval, cubeMapResolution, useDistCalc, useFaceAngleCalc, distTolerance, angleTolerance, updateAllFace, renderSelf, renderEnvironment, layer, parentRenderable, parentTechniqueGroup),
25                                                                                                                        RenderTechnique(parentRenderable, parentTechniqueGroup)
26{       
27        switch(layer)
28        {
29                case 0:
30                        texturePostFix = "_COLORCUBEMAP";
31                        break;
32                case 1:
33                        texturePostFix = "_COLORCUBEMAP_L1";
34                        break;
35                case 2:
36                        texturePostFix = "_COLORCUBEMAP_L2";
37                        break;
38                case 3:
39                        texturePostFix = "_COLORCUBEMAP_L3";
40                        break;
41                case 4:
42                        texturePostFix = "_COLORCUBEMAP_L4";
43                        break;
44                case 5:
45                        texturePostFix = "_COLORCUBEMAP_L5";
46                        break;
47                case 6:
48                        texturePostFix = "_COLORCUBEMAP_L6";
49                        break;
50        }
51
52        if(sharedRuns->getRun(cubemapLayer) == 0)
53                sharedRuns->addRun(cubemapLayer, createCubeMapRun());
54       
55        colorCubeMapRunChanged(sharedRuns->getRun(cubemapLayer));
56}
57
58
59OgreColorCubeMapRenderTechnique::~OgreColorCubeMapRenderTechnique()
60{
61
62}
63
64void OgreColorCubeMapRenderTechnique::update(unsigned long frameNum)
65{
66        ColorCubeMapRenderTechnique::update(frameNum);
67        /*
68        GpuProgramParametersSharedPtr fpParams = pass->getFragmentProgramParameters();
69        Vector3 center = ((OgreSharedRuns*) sharedRuns)->getRootPosition();
70        fpParams->setNamedConstant("lastCenter",center);
71        pass->setFragmentProgramParameters(fpParams); */
72       
73}
74
75void OgreColorCubeMapRenderTechnique::colorCubeMapRunChanged(RenderingRun* run)
76{
77        OgreCubeMapRenderingRun* cuberun =(OgreCubeMapRenderingRun*) (run->asOgreRenderingRun());
78        String cubemapname = cuberun->getCubeMapTextureName();
79       
80        pass->getTextureUnitState(texID)->setTextureName(cubemapname);
81}
82
83///Technique factory
84OgreColorCubeMapRenderTechniqueFactory::OgreColorCubeMapRenderTechniqueFactory()
85{
86        typeName = "ColorCubeMap";
87}
88
89OgreRenderTechnique* OgreColorCubeMapRenderTechniqueFactory::createInstance(
90                                                                                IllumTechniqueParams* params,
91                                                                                Pass* pass,
92                                                                                OgreRenderable* parentRenderable,
93                                                                                OgreTechniqueGroup* parentTechniqueGroup)
94{       
95       
96        OgreCubeMapRenderTechniqueFactory::resetParams();
97        OgreCubeMapRenderTechniqueFactory::parseParams(params);
98        parseParams(params);
99       
100        OgreColorCubeMapRenderTechnique* result = new OgreColorCubeMapRenderTechnique(
101                                                                                                        startFrame,
102                                                                                                        cubeMapUpdateInterval,
103                                                                                                        cubeMapResolution,
104                                                                                                        texID,
105                                                                                                        useDistCalc,
106                                                                                                        useFaceAngleCalc,
107                                                                                                        distTolerance,
108                                                                                                        angleTolerance,
109                                                                                                        updateAllFace,
110                                                                                                        renderSelf,
111                                                                                                        renderEnvironment,
112                                                                                                        selfMaterial,
113                                                                                                        environmentMaterial,
114                                                                                                        layer,
115                                                                                                        pass,
116                                                                                                        parentRenderable,
117                                                                                                        parentTechniqueGroup);
118       
119        return result;
120}
121
Note: See TracBrowser for help on using the repository browser.