Coverage Report

Created: 2026-05-16 06:44

next uncovered line (L), next uncovered region (R), next uncovered branch (B)
/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