/src/ogre/Components/Terrain/src/OgreTerrainRTShaderSRS.h
Line | Count | Source |
1 | | // This file is part of the OGRE project. |
2 | | // It is subject to the license terms in the LICENSE file found in the top-level directory |
3 | | // of this distribution and at https://www.ogre3d.org/licensing. |
4 | | // SPDX-License-Identifier: MIT |
5 | | #ifndef _ShaderTerrainTransform_ |
6 | | #define _ShaderTerrainTransform_ |
7 | | |
8 | | #include "OgreTerrainPrerequisites.h" |
9 | | |
10 | | #include "OgreShaderSubRenderState.h" |
11 | | #include "OgreShaderParameter.h" |
12 | | #include "OgreShaderFFPRenderState.h" |
13 | | #include "OgreTerrain.h" |
14 | | |
15 | | namespace Ogre { |
16 | | |
17 | | class TerrainTransform : public RTShader::SubRenderState |
18 | | { |
19 | | public: |
20 | 0 | const String& getType() const override { return Type; } |
21 | 0 | int getExecutionOrder() const override { return RTShader::FFP_TRANSFORM; } |
22 | 0 | void copyFrom(const SubRenderState& rhs) override {} |
23 | | bool createCpuSubPrograms(RTShader::ProgramSet* programSet) override; |
24 | | bool preAddToRenderState(const RTShader::RenderState* renderState, Pass* srcPass, Pass* dstPass) override; |
25 | | void updateParams(); |
26 | | |
27 | | static String Type; |
28 | | private: |
29 | | const Terrain* mTerrain; |
30 | | bool mCompressed = false; |
31 | | Terrain::Alignment mAlign = Terrain::ALIGN_X_Z; |
32 | | RTShader::UniformParameterPtr mPointTrans; |
33 | | RTShader::UniformParameterPtr mBaseUVScale; |
34 | | }; |
35 | | |
36 | | class TerrainSurface : public RTShader::SubRenderState |
37 | | { |
38 | | public: |
39 | 0 | const String& getType() const override { return Type; } |
40 | 0 | int getExecutionOrder() const override { return RTShader::FFP_LIGHTING - 1; } |
41 | | void copyFrom(const SubRenderState& rhs) override |
42 | 0 | { |
43 | 0 | mUseNormalMapping = static_cast<const TerrainSurface&>(rhs).mUseNormalMapping; |
44 | 0 | } |
45 | | bool createCpuSubPrograms(RTShader::ProgramSet* programSet) override; |
46 | | bool preAddToRenderState(const RTShader::RenderState* renderState, Pass* srcPass, Pass* dstPass) override; |
47 | | void updateParams(); |
48 | | bool setParameter(const String& name, const String& value) override; |
49 | | |
50 | | static String Type; |
51 | | protected: |
52 | | const Terrain* mTerrain; |
53 | | std::vector<RTShader::UniformParameterPtr> mUVMul; |
54 | | bool mUseNormalMapping = true; |
55 | | bool mUseSpecularMapping = false; |
56 | | bool mUseParallaxMapping = false; |
57 | | bool mUseParallaxOcclusionMapping = false; |
58 | | bool mForCompositeMap = false; |
59 | | int mNumLayers = 0; |
60 | | }; |
61 | | |
62 | | class TerrainSurfaceFactory : public RTShader::SubRenderStateFactory |
63 | | { |
64 | | public: |
65 | | const String& getType() const override; |
66 | | |
67 | | protected: |
68 | | RTShader::SubRenderState* createInstanceImpl() override; |
69 | | }; |
70 | | |
71 | | class TerrainTransformFactory : public RTShader::SubRenderStateFactory |
72 | | { |
73 | | public: |
74 | | const String& getType() const override; |
75 | | |
76 | | protected: |
77 | | RTShader::SubRenderState* createInstanceImpl() override; |
78 | | }; |
79 | | } |
80 | | #endif |