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)
RevLine 
[1711]1#include "OgreColorCubeMapRenderTechnique.h"
2#include "OgreTechniqueGroup.h"
[1722]3#include "OgreCubeMapRenderingRun.h"
[1711]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,
[1722]15                                                                                                                bool renderEnvironment,
16                                                                                                                String selfMaterial,
17                                                                                                                String environmentMaterial,
[1725]18                                                                                                                int layer,
[1711]19                                                                                                                Pass* pass,
20                                                                                                                OgreRenderable* parentRenderable,
21                                                                                                                OgreTechniqueGroup* parentTechniqueGroup)
[1725]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),
[1722]25                                                                                                                        RenderTechnique(parentRenderable, parentTechniqueGroup)
[1711]26{       
[1725]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        }
[1722]51
[1725]52        if(sharedRuns->getRun(cubemapLayer) == 0)
53                sharedRuns->addRun(cubemapLayer, createCubeMapRun());
[1711]54       
[1725]55        colorCubeMapRunChanged(sharedRuns->getRun(cubemapLayer));
[1711]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{
[1722]77        OgreCubeMapRenderingRun* cuberun =(OgreCubeMapRenderingRun*) (run->asOgreRenderingRun());
78        String cubemapname = cuberun->getCubeMapTextureName();
[1711]79       
80        pass->getTextureUnitState(texID)->setTextureName(cubemapname);
81}
82
83///Technique factory
84OgreColorCubeMapRenderTechniqueFactory::OgreColorCubeMapRenderTechniqueFactory()
85{
[1725]86        typeName = "ColorCubeMap";
[1711]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,
[1722]111                                                                                                        renderEnvironment,
112                                                                                                        selfMaterial,
113                                                                                                        environmentMaterial,
[1725]114                                                                                                        layer,
[1711]115                                                                                                        pass,
116                                                                                                        parentRenderable,
117                                                                                                        parentTechniqueGroup);
118       
119        return result;
120}
121
Note: See TracBrowser for help on using the repository browser.