OgreTerrainMaterialGeneratorA.h
Go to the documentation of this file.
1 /*
2 -----------------------------------------------------------------------------
3 This source file is part of OGRE
4 (Object-oriented Graphics Rendering Engine)
5 For the latest info, see http://www.ogre3d.org/
6 
7 Copyright (c) 2000-2013 Torus Knot Software Ltd
8 
9 Permission is hereby granted, free of charge, to any person obtaining a copy
10 of this software and associated documentation files (the "Software"), to deal
11 in the Software without restriction, including without limitation the rights
12 to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
13 copies of the Software, and to permit persons to whom the Software is
14 furnished to do so, subject to the following conditions:
15 
16 The above copyright notice and this permission notice shall be included in
17 all copies or substantial portions of the Software.
18 
19 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
20 IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
21 FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
22 AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
23 LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
24 OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
25 THE SOFTWARE.
26 -----------------------------------------------------------------------------
27 */
28 
29 #ifndef __Ogre_TerrainMaterialGeneratorA_H__
30 #define __Ogre_TerrainMaterialGeneratorA_H__
31 
34 #include "OgreGpuProgramParams.h"
35 
36 namespace Ogre
37 {
38  class PSSMShadowCameraSetup;
39 
54  {
55  public:
58 
62  {
63  public:
64  SM2Profile(TerrainMaterialGenerator* parent, const String& name, const String& desc);
65  virtual ~SM2Profile();
66  MaterialPtr generate(const Terrain* terrain);
68  uint8 getMaxLayers(const Terrain* terrain) const;
69  void updateParams(const MaterialPtr& mat, const Terrain* terrain);
70  void updateParamsForCompositeMap(const MaterialPtr& mat, const Terrain* terrain);
71  void requestOptions(Terrain* terrain);
73 
76  bool isLayerNormalMappingEnabled() const { return mLayerNormalMappingEnabled; }
79  void setLayerNormalMappingEnabled(bool enabled);
82  bool isLayerParallaxMappingEnabled() const { return mLayerParallaxMappingEnabled; }
85  void setLayerParallaxMappingEnabled(bool enabled);
88  bool isLayerSpecularMappingEnabled() const { return mLayerSpecularMappingEnabled; }
91  void setLayerSpecularMappingEnabled(bool enabled);
95  bool isGlobalColourMapEnabled() const { return mGlobalColourMapEnabled; }
99  void setGlobalColourMapEnabled(bool enabled);
103  bool isLightmapEnabled() const { return mLightmapEnabled; }
107  void setLightmapEnabled(bool enabled);
111  bool isCompositeMapEnabled() const { return mCompositeMapEnabled; }
115  void setCompositeMapEnabled(bool enabled);
119  bool getReceiveDynamicShadowsEnabled() const { return mReceiveDynamicShadows; }
124 
135  void setReceiveDynamicShadowsDepth(bool enabled);
138  bool getReceiveDynamicShadowsDepth() const { return mDepthShadows; }
141  void setReceiveDynamicShadowsLowLod(bool enabled);
144  bool getReceiveDynamicShadowsLowLod() const { return mLowLodShadows; }
145 
147  bool _isSM3Available() const { return mSM3Available; }
148  bool _isSM4Available() const { return mSM4Available; }
149  String _getShaderLanguage() const { return mShaderLanguage; }
150 
151  protected:
152 
154  {
157  RENDER_COMPOSITE_MAP
158  };
159  void addTechnique(const MaterialPtr& mat, const Terrain* terrain, TechniqueType tt);
160 
163  {
164  public:
165  ShaderHelper() : mShadowSamplerStartHi(0), mShadowSamplerStartLo(0) {}
166  virtual ~ShaderHelper() {}
169  virtual void updateParams(const SM2Profile* prof, const MaterialPtr& mat, const Terrain* terrain, bool compositeMap);
170  protected:
171  virtual String getVertexProgramName(const SM2Profile* prof, const Terrain* terrain, TechniqueType tt);
172  virtual String getFragmentProgramName(const SM2Profile* prof, const Terrain* terrain, TechniqueType tt);
173  virtual HighLevelGpuProgramPtr createVertexProgram(const SM2Profile* prof, const Terrain* terrain, TechniqueType tt) = 0;
174  virtual HighLevelGpuProgramPtr createFragmentProgram(const SM2Profile* prof, const Terrain* terrain, TechniqueType tt) = 0;
175  virtual void generateVertexProgramSource(const SM2Profile* prof, const Terrain* terrain, TechniqueType tt, StringUtil::StrStreamType& outStream);
176  virtual void generateFragmentProgramSource(const SM2Profile* prof, const Terrain* terrain, TechniqueType tt, StringUtil::StrStreamType& outStream);
177  virtual void generateVpHeader(const SM2Profile* prof, const Terrain* terrain, TechniqueType tt, StringUtil::StrStreamType& outStream) = 0;
178  virtual void generateFpHeader(const SM2Profile* prof, const Terrain* terrain, TechniqueType tt, StringUtil::StrStreamType& outStream) = 0;
179  virtual void generateVpLayer(const SM2Profile* prof, const Terrain* terrain, TechniqueType tt, uint layer, StringUtil::StrStreamType& outStream) = 0;
180  virtual void generateFpLayer(const SM2Profile* prof, const Terrain* terrain, TechniqueType tt, uint layer, StringUtil::StrStreamType& outStream) = 0;
181  virtual void generateVpFooter(const SM2Profile* prof, const Terrain* terrain, TechniqueType tt, StringUtil::StrStreamType& outStream) = 0;
182  virtual void generateFpFooter(const SM2Profile* prof, const Terrain* terrain, TechniqueType tt, StringUtil::StrStreamType& outStream) = 0;
183  virtual void defaultVpParams(const SM2Profile* prof, const Terrain* terrain, TechniqueType tt, const HighLevelGpuProgramPtr& prog);
184  virtual void defaultFpParams(const SM2Profile* prof, const Terrain* terrain, TechniqueType tt, const HighLevelGpuProgramPtr& prog);
185  virtual void updateVpParams(const SM2Profile* prof, const Terrain* terrain, TechniqueType tt, const GpuProgramParametersSharedPtr& params);
186  virtual void updateFpParams(const SM2Profile* prof, const Terrain* terrain, TechniqueType tt, const GpuProgramParametersSharedPtr& params);
187  static String getChannel(uint idx);
188 
191  };
192 
195  {
196  protected:
199  void generateVpHeader(const SM2Profile* prof, const Terrain* terrain, TechniqueType tt, StringUtil::StrStreamType& outStream);
200  void generateFpHeader(const SM2Profile* prof, const Terrain* terrain, TechniqueType tt, StringUtil::StrStreamType& outStream);
201  void generateVpLayer(const SM2Profile* prof, const Terrain* terrain, TechniqueType tt, uint layer, StringUtil::StrStreamType& outStream);
202  void generateFpLayer(const SM2Profile* prof, const Terrain* terrain, TechniqueType tt, uint layer, StringUtil::StrStreamType& outStream);
203  void generateVpFooter(const SM2Profile* prof, const Terrain* terrain, TechniqueType tt, StringUtil::StrStreamType& outStream);
204  void generateFpFooter(const SM2Profile* prof, const Terrain* terrain, TechniqueType tt, StringUtil::StrStreamType& outStream);
205  uint generateVpDynamicShadowsParams(uint texCoordStart, const SM2Profile* prof, const Terrain* terrain, TechniqueType tt, StringUtil::StrStreamType& outStream);
206  void generateVpDynamicShadows(const SM2Profile* prof, const Terrain* terrain, TechniqueType tt, StringUtil::StrStreamType& outStream);
208  void generateFpDynamicShadowsParams(uint* texCoord, uint* sampler, const SM2Profile* prof, const Terrain* terrain, TechniqueType tt, StringUtil::StrStreamType& outStream);
209  void generateFpDynamicShadows(const SM2Profile* prof, const Terrain* terrain, TechniqueType tt, StringUtil::StrStreamType& outStream);
210  };
211 
213  {
214  protected:
217  };
218 
221  {
222  protected:
225  void generateVpHeader(const SM2Profile* prof, const Terrain* terrain, TechniqueType tt, StringUtil::StrStreamType& outStream);
226  void generateFpHeader(const SM2Profile* prof, const Terrain* terrain, TechniqueType tt, StringUtil::StrStreamType& outStream);
227  void generateVpLayer(const SM2Profile* prof, const Terrain* terrain, TechniqueType tt, uint layer, StringUtil::StrStreamType& outStream);
228  void generateFpLayer(const SM2Profile* prof, const Terrain* terrain, TechniqueType tt, uint layer, StringUtil::StrStreamType& outStream);
229  void generateVpFooter(const SM2Profile* prof, const Terrain* terrain, TechniqueType tt, StringUtil::StrStreamType& outStream);
230  void generateFpFooter(const SM2Profile* prof, const Terrain* terrain, TechniqueType tt, StringUtil::StrStreamType& outStream);
231  uint generateVpDynamicShadowsParams(uint texCoordStart, const SM2Profile* prof, const Terrain* terrain, TechniqueType tt, StringUtil::StrStreamType& outStream);
232  void generateVpDynamicShadows(const SM2Profile* prof, const Terrain* terrain, TechniqueType tt, StringUtil::StrStreamType& outStream);
234  void generateFpDynamicShadowsParams(uint* texCoord, uint* sampler, const SM2Profile* prof, const Terrain* terrain, TechniqueType tt, StringUtil::StrStreamType& outStream);
235  void generateFpDynamicShadows(const SM2Profile* prof, const Terrain* terrain, TechniqueType tt, StringUtil::StrStreamType& outStream);
236  };
237 
240  {
241  protected:
244  void generateVpHeader(const SM2Profile* prof, const Terrain* terrain, TechniqueType tt, StringUtil::StrStreamType& outStream);
245  void generateFpHeader(const SM2Profile* prof, const Terrain* terrain, TechniqueType tt, StringUtil::StrStreamType& outStream);
246  void generateVpLayer(const SM2Profile* prof, const Terrain* terrain, TechniqueType tt, uint layer, StringUtil::StrStreamType& outStream);
247  void generateFpLayer(const SM2Profile* prof, const Terrain* terrain, TechniqueType tt, uint layer, StringUtil::StrStreamType& outStream);
248  void generateVpFooter(const SM2Profile* prof, const Terrain* terrain, TechniqueType tt, StringUtil::StrStreamType& outStream);
249  void generateFpFooter(const SM2Profile* prof, const Terrain* terrain, TechniqueType tt, StringUtil::StrStreamType& outStream);
250  uint generateVpDynamicShadowsParams(uint texCoordStart, const SM2Profile* prof, const Terrain* terrain, TechniqueType tt, StringUtil::StrStreamType& outStream);
251  void generateVpDynamicShadows(const SM2Profile* prof, const Terrain* terrain, TechniqueType tt, StringUtil::StrStreamType& outStream);
253  void generateFpDynamicShadowsParams(uint* texCoord, uint* sampler, const SM2Profile* prof, const Terrain* terrain, TechniqueType tt, StringUtil::StrStreamType& outStream);
254  void generateFpDynamicShadows(const SM2Profile* prof, const Terrain* terrain, TechniqueType tt, StringUtil::StrStreamType& outStream);
255  };
256 
271 
272  bool isShadowingEnabled(TechniqueType tt, const Terrain* terrain) const;
273  };
274  };
277 }
278 
279 #endif
280 
Ogre::TerrainMaterialGeneratorA::SM2Profile::mLayerSpecularMappingEnabled
bool mLayerSpecularMappingEnabled
Definition: OgreTerrainMaterialGeneratorA.h:260
Ogre::TerrainMaterialGeneratorA::SM2Profile::ShaderHelperCg::generateFpLayer
void generateFpLayer(const SM2Profile *prof, const Terrain *terrain, TechniqueType tt, uint layer, StringUtil::StrStreamType &outStream)
Ogre::TerrainMaterialGeneratorA::SM2Profile::ShaderHelper::generateFpHeader
virtual void generateFpHeader(const SM2Profile *prof, const Terrain *terrain, TechniqueType tt, StringUtil::StrStreamType &outStream)=0
Ogre::TerrainMaterialGeneratorA::SM2Profile::ShaderHelper::ShaderHelper
ShaderHelper()
Definition: OgreTerrainMaterialGeneratorA.h:165
Ogre::TerrainMaterialGeneratorA::SM2Profile::ShaderHelper::defaultFpParams
virtual void defaultFpParams(const SM2Profile *prof, const Terrain *terrain, TechniqueType tt, const HighLevelGpuProgramPtr &prog)
Ogre::TerrainMaterialGeneratorA::SM2Profile::ShaderHelperCg::generateFpDynamicShadowsHelpers
void generateFpDynamicShadowsHelpers(const SM2Profile *prof, const Terrain *terrain, TechniqueType tt, StringUtil::StrStreamType &outStream)
Ogre::TerrainMaterialGeneratorA::SM2Profile::mLowLodShadows
bool mLowLodShadows
Definition: OgreTerrainMaterialGeneratorA.h:267
Ogre::TerrainMaterialGeneratorA::SM2Profile::_isSM3Available
bool _isSM3Available() const
Internal.
Definition: OgreTerrainMaterialGeneratorA.h:147
Ogre::TerrainMaterialGeneratorA::SM2Profile::mGlobalColourMapEnabled
bool mGlobalColourMapEnabled
Definition: OgreTerrainMaterialGeneratorA.h:261
Ogre::AllocatedObject
Superclass for all objects that wish to use custom memory allocators when their new / delete operator...
Definition: OgreMemoryAllocatedObject.h:59
Ogre
Definition: OgreAndroidLogListener.h:35
Ogre::TerrainMaterialGeneratorA::SM2Profile::setLightmapEnabled
void setLightmapEnabled(bool enabled)
Whether to support a light map over the terrain in the shader, if it's present (default true).
Ogre::TerrainMaterialGeneratorA::SM2Profile::ShaderHelper::~ShaderHelper
virtual ~ShaderHelper()
Definition: OgreTerrainMaterialGeneratorA.h:166
Ogre::TerrainMaterialGeneratorA::SM2Profile::mShaderGen
ShaderHelper * mShaderGen
Definition: OgreTerrainMaterialGeneratorA.h:257
Ogre::TerrainMaterialGeneratorA::SM2Profile::HIGH_LOD
@ HIGH_LOD
Definition: OgreTerrainMaterialGeneratorA.h:155
Ogre::TerrainMaterialGeneratorA::SM2Profile::ShaderHelper::generateFpFooter
virtual void generateFpFooter(const SM2Profile *prof, const Terrain *terrain, TechniqueType tt, StringUtil::StrStreamType &outStream)=0
Ogre::TerrainMaterialGenerator
Class that provides functionality to generate materials for use with a terrain.
Definition: OgreTerrainMaterialGenerator.h:162
Ogre::TerrainMaterialGeneratorA::SM2Profile::ShaderHelper::generateFragmentProgram
virtual HighLevelGpuProgramPtr generateFragmentProgram(const SM2Profile *prof, const Terrain *terrain, TechniqueType tt)
Ogre::TerrainMaterialGeneratorA::SM2Profile::mLayerParallaxMappingEnabled
bool mLayerParallaxMappingEnabled
Definition: OgreTerrainMaterialGeneratorA.h:259
Ogre::TerrainMaterialGeneratorA::SM2Profile::ShaderHelperHLSL::createVertexProgram
HighLevelGpuProgramPtr createVertexProgram(const SM2Profile *prof, const Terrain *terrain, TechniqueType tt)
Ogre::TerrainMaterialGeneratorA::SM2Profile::setLayerSpecularMappingEnabled
void setLayerSpecularMappingEnabled(bool enabled)
Whether to support specular mapping per layer in the shader (default true).
Ogre::TerrainMaterialGeneratorA::SM2Profile::getReceiveDynamicShadowsPSSM
PSSMShadowCameraSetup * getReceiveDynamicShadowsPSSM() const
Whether to use PSSM support dynamic texture shadows, and if so the settings to use (default 0).
Definition: OgreTerrainMaterialGeneratorA.h:132
Ogre::TerrainMaterialGeneratorA::SM2Profile::ShaderHelperGLSL::generateVpHeader
void generateVpHeader(const SM2Profile *prof, const Terrain *terrain, TechniqueType tt, StringUtil::StrStreamType &outStream)
Ogre::TerrainMaterialGeneratorA::SM2Profile::mPSSM
PSSMShadowCameraSetup * mPSSM
Definition: OgreTerrainMaterialGeneratorA.h:265
Ogre::TerrainMaterialGeneratorA::SM2Profile::mDepthShadows
bool mDepthShadows
Definition: OgreTerrainMaterialGeneratorA.h:266
Ogre::TerrainMaterialGeneratorA::SM2Profile::mReceiveDynamicShadows
bool mReceiveDynamicShadows
Definition: OgreTerrainMaterialGeneratorA.h:264
Ogre::TerrainMaterialGeneratorA::SM2Profile::ShaderHelper::getVertexProgramName
virtual String getVertexProgramName(const SM2Profile *prof, const Terrain *terrain, TechniqueType tt)
Ogre::TerrainMaterialGeneratorA::SM2Profile::ShaderHelperGLSLES::generateFpDynamicShadows
void generateFpDynamicShadows(const SM2Profile *prof, const Terrain *terrain, TechniqueType tt, StringUtil::StrStreamType &outStream)
Ogre::TerrainMaterialGeneratorA::SM2Profile::ShaderHelperCg::createFragmentProgram
HighLevelGpuProgramPtr createFragmentProgram(const SM2Profile *prof, const Terrain *terrain, TechniqueType tt)
_OgreTerrainExport
#define _OgreTerrainExport
Definition: OgreTerrainPrerequisites.h:58
Ogre::PSSMShadowCameraSetup
Parallel Split Shadow Map (PSSM) shadow camera setup.
Definition: OgreShadowCameraSetupPSSM.h:57
Ogre::TerrainMaterialGeneratorA::SM2Profile::isGlobalColourMapEnabled
bool isGlobalColourMapEnabled() const
Whether to support a global colour map over the terrain in the shader, if it's present (default true)...
Definition: OgreTerrainMaterialGeneratorA.h:95
Ogre::TerrainMaterialGeneratorA::SM2Profile::ShaderHelper::generateVertexProgram
virtual HighLevelGpuProgramPtr generateVertexProgram(const SM2Profile *prof, const Terrain *terrain, TechniqueType tt)
Ogre::Terrain
The main containing class for a chunk of terrain.
Definition: OgreTerrain.h:264
Ogre::TerrainMaterialGeneratorA::SM2Profile::ShaderHelperGLSL::generateFpDynamicShadows
void generateFpDynamicShadows(const SM2Profile *prof, const Terrain *terrain, TechniqueType tt, StringUtil::StrStreamType &outStream)
Ogre::TerrainMaterialGeneratorA::SM2Profile::ShaderHelperGLSLES::generateVpHeader
void generateVpHeader(const SM2Profile *prof, const Terrain *terrain, TechniqueType tt, StringUtil::StrStreamType &outStream)
Ogre::TerrainMaterialGeneratorA::SM2Profile::ShaderHelperGLSLES::generateVpDynamicShadows
void generateVpDynamicShadows(const SM2Profile *prof, const Terrain *terrain, TechniqueType tt, StringUtil::StrStreamType &outStream)
Ogre::TerrainMaterialGeneratorA::SM2Profile::generate
MaterialPtr generate(const Terrain *terrain)
Generate / reuse a material for the terrain.
Ogre::TerrainMaterialGeneratorA::SM2Profile::ShaderHelperGLSLES::generateVpFooter
void generateVpFooter(const SM2Profile *prof, const Terrain *terrain, TechniqueType tt, StringUtil::StrStreamType &outStream)
Ogre::TerrainMaterialGeneratorA::SM2Profile::ShaderHelperGLSLES::generateFpDynamicShadowsHelpers
void generateFpDynamicShadowsHelpers(const SM2Profile *prof, const Terrain *terrain, TechniqueType tt, StringUtil::StrStreamType &outStream)
Ogre::TerrainMaterialGeneratorA
A TerrainMaterialGenerator which can cope with normal mapped, specular mapped terrain.
Definition: OgreTerrainMaterialGeneratorA.h:54
Ogre::TerrainMaterialGeneratorA::SM2Profile::LOW_LOD
@ LOW_LOD
Definition: OgreTerrainMaterialGeneratorA.h:156
Ogre::TerrainMaterialGeneratorA::SM2Profile::getReceiveDynamicShadowsDepth
bool getReceiveDynamicShadowsDepth() const
Whether to use depth shadows (default false).
Definition: OgreTerrainMaterialGeneratorA.h:138
Ogre::TerrainMaterialGenerator::Profile
Inner class which should also be subclassed to provide profile-specific material generation.
Definition: OgreTerrainMaterialGenerator.h:168
Ogre::String
_StringBase String
Definition: OgrePrerequisites.h:439
Ogre::TerrainMaterialGeneratorA::SM2Profile::getMaxLayers
uint8 getMaxLayers(const Terrain *terrain) const
Get the number of layers supported.
Ogre::StringUtil::StrStreamType
StringStream StrStreamType
Definition: OgreString.h:78
OgreGpuProgramParams.h
Ogre::TerrainMaterialGeneratorA::SM2Profile::mSM4Available
bool mSM4Available
Definition: OgreTerrainMaterialGeneratorA.h:269
Ogre::TerrainMaterialGeneratorA::SM2Profile::setReceiveDynamicShadowsDepth
void setReceiveDynamicShadowsDepth(bool enabled)
Whether to use depth shadows (default false).
Ogre::TerrainMaterialGeneratorA::SM2Profile::getReceiveDynamicShadowsEnabled
bool getReceiveDynamicShadowsEnabled() const
Whether to support dynamic texture shadows received from other objects, on the terrain (default true)...
Definition: OgreTerrainMaterialGeneratorA.h:119
Ogre::TerrainMaterialGeneratorA::SM2Profile::updateParamsForCompositeMap
void updateParamsForCompositeMap(const MaterialPtr &mat, const Terrain *terrain)
Update params for a terrain.
Ogre::TerrainMaterialGeneratorA::SM2Profile::ShaderHelper
Interface definition for helper class to generate shaders.
Definition: OgreTerrainMaterialGeneratorA.h:163
Ogre::TerrainMaterialGeneratorA::SM2Profile::mLightmapEnabled
bool mLightmapEnabled
Definition: OgreTerrainMaterialGeneratorA.h:262
Ogre::TerrainMaterialGeneratorA::SM2Profile::requestOptions
void requestOptions(Terrain *terrain)
Request the options needed from the terrain.
Ogre::TerrainMaterialGeneratorA::SM2Profile::ShaderHelperCg::generateVpFooter
void generateVpFooter(const SM2Profile *prof, const Terrain *terrain, TechniqueType tt, StringUtil::StrStreamType &outStream)
OgreTerrainPrerequisites.h
Ogre::TerrainMaterialGeneratorA::SM2Profile::setLayerNormalMappingEnabled
void setLayerNormalMappingEnabled(bool enabled)
Whether to support normal mapping per layer in the shader (default true).
Ogre::TerrainMaterialGeneratorA::SM2Profile::ShaderHelper::createFragmentProgram
virtual HighLevelGpuProgramPtr createFragmentProgram(const SM2Profile *prof, const Terrain *terrain, TechniqueType tt)=0
Ogre::TerrainMaterialGeneratorA::SM2Profile::ShaderHelperGLSLES::createVertexProgram
HighLevelGpuProgramPtr createVertexProgram(const SM2Profile *prof, const Terrain *terrain, TechniqueType tt)
Ogre::TerrainMaterialGeneratorA::SM2Profile::ShaderHelperGLSLES::generateFpFooter
void generateFpFooter(const SM2Profile *prof, const Terrain *terrain, TechniqueType tt, StringUtil::StrStreamType &outStream)
Ogre::TerrainMaterialGeneratorA::SM2Profile::ShaderHelperGLSL::generateVpDynamicShadows
void generateVpDynamicShadows(const SM2Profile *prof, const Terrain *terrain, TechniqueType tt, StringUtil::StrStreamType &outStream)
Ogre::TerrainMaterialGeneratorA::SM2Profile::_getShaderLanguage
String _getShaderLanguage() const
Definition: OgreTerrainMaterialGeneratorA.h:149
Ogre::TerrainMaterialGeneratorA::SM2Profile::ShaderHelperGLSL::generateFpDynamicShadowsParams
void generateFpDynamicShadowsParams(uint *texCoord, uint *sampler, const SM2Profile *prof, const Terrain *terrain, TechniqueType tt, StringUtil::StrStreamType &outStream)
Ogre::TerrainMaterialGeneratorA::SM2Profile::setReceiveDynamicShadowsEnabled
void setReceiveDynamicShadowsEnabled(bool enabled)
Whether to support dynamic texture shadows received from other objects, on the terrain (default true)...
Ogre::TerrainMaterialGeneratorA::SM2Profile::mSM3Available
bool mSM3Available
Definition: OgreTerrainMaterialGeneratorA.h:268
Ogre::TerrainMaterialGeneratorA::SM2Profile::setGlobalColourMapEnabled
void setGlobalColourMapEnabled(bool enabled)
Whether to support a global colour map over the terrain in the shader, if it's present (default true)...
Ogre::TerrainMaterialGeneratorA::SM2Profile::mLayerNormalMappingEnabled
bool mLayerNormalMappingEnabled
Definition: OgreTerrainMaterialGeneratorA.h:258
Ogre::TerrainMaterialGeneratorA::SM2Profile::ShaderHelper::generateVertexProgramSource
virtual void generateVertexProgramSource(const SM2Profile *prof, const Terrain *terrain, TechniqueType tt, StringUtil::StrStreamType &outStream)
Ogre::TerrainMaterialGeneratorA::SM2Profile::ShaderHelperCg::generateVpDynamicShadowsParams
uint generateVpDynamicShadowsParams(uint texCoordStart, const SM2Profile *prof, const Terrain *terrain, TechniqueType tt, StringUtil::StrStreamType &outStream)
Ogre::TerrainMaterialGeneratorA::SM2Profile::setLayerParallaxMappingEnabled
void setLayerParallaxMappingEnabled(bool enabled)
Whether to support parallax mapping per layer in the shader (default true).
Ogre::TerrainMaterialGeneratorA::SM2Profile::updateParams
void updateParams(const MaterialPtr &mat, const Terrain *terrain)
Update params for a terrain.
Ogre::TerrainMaterialGeneratorA::SM2Profile::ShaderHelper::generateFpLayer
virtual void generateFpLayer(const SM2Profile *prof, const Terrain *terrain, TechniqueType tt, uint layer, StringUtil::StrStreamType &outStream)=0
Ogre::TerrainMaterialGeneratorA::SM2Profile::ShaderHelperCg::generateFpDynamicShadowsParams
void generateFpDynamicShadowsParams(uint *texCoord, uint *sampler, const SM2Profile *prof, const Terrain *terrain, TechniqueType tt, StringUtil::StrStreamType &outStream)
Ogre::TerrainMaterialGeneratorA::SM2Profile::ShaderHelperCg
Utility class to help with generating shaders for Cg / HLSL.
Definition: OgreTerrainMaterialGeneratorA.h:195
Ogre::TerrainMaterialGeneratorA::SM2Profile::ShaderHelperGLSL::generateFpHeader
void generateFpHeader(const SM2Profile *prof, const Terrain *terrain, TechniqueType tt, StringUtil::StrStreamType &outStream)
Ogre::TerrainMaterialGeneratorA::SM2Profile::ShaderHelperGLSL::createVertexProgram
HighLevelGpuProgramPtr createVertexProgram(const SM2Profile *prof, const Terrain *terrain, TechniqueType tt)
Ogre::TerrainMaterialGeneratorA::~TerrainMaterialGeneratorA
virtual ~TerrainMaterialGeneratorA()
Ogre::TerrainMaterialGeneratorA::SM2Profile::ShaderHelperGLSL::generateFpDynamicShadowsHelpers
void generateFpDynamicShadowsHelpers(const SM2Profile *prof, const Terrain *terrain, TechniqueType tt, StringUtil::StrStreamType &outStream)
Ogre::TerrainMaterialGeneratorA::SM2Profile::ShaderHelperGLSLES::generateVpDynamicShadowsParams
uint generateVpDynamicShadowsParams(uint texCoordStart, const SM2Profile *prof, const Terrain *terrain, TechniqueType tt, StringUtil::StrStreamType &outStream)
Ogre::TerrainMaterialGeneratorA::SM2Profile::_isSM4Available
bool _isSM4Available() const
Definition: OgreTerrainMaterialGeneratorA.h:148
Ogre::TerrainMaterialGeneratorA::SM2Profile::ShaderHelperCg::generateVpHeader
void generateVpHeader(const SM2Profile *prof, const Terrain *terrain, TechniqueType tt, StringUtil::StrStreamType &outStream)
Ogre::TerrainMaterialGeneratorA::SM2Profile::ShaderHelperGLSL::generateVpLayer
void generateVpLayer(const SM2Profile *prof, const Terrain *terrain, TechniqueType tt, uint layer, StringUtil::StrStreamType &outStream)
Ogre::TerrainMaterialGeneratorA::SM2Profile::ShaderHelper::generateFragmentProgramSource
virtual void generateFragmentProgramSource(const SM2Profile *prof, const Terrain *terrain, TechniqueType tt, StringUtil::StrStreamType &outStream)
Ogre::TerrainMaterialGeneratorA::SM2Profile::ShaderHelperCg::generateVpLayer
void generateVpLayer(const SM2Profile *prof, const Terrain *terrain, TechniqueType tt, uint layer, StringUtil::StrStreamType &outStream)
Ogre::TerrainMaterialGeneratorA::SM2Profile::ShaderHelperCg::generateFpDynamicShadows
void generateFpDynamicShadows(const SM2Profile *prof, const Terrain *terrain, TechniqueType tt, StringUtil::StrStreamType &outStream)
Ogre::TerrainMaterialGeneratorA::SM2Profile::ShaderHelperGLSL
Utility class to help with generating shaders for GLSL.
Definition: OgreTerrainMaterialGeneratorA.h:221
Ogre::TerrainMaterialGeneratorA::SM2Profile::ShaderHelperGLSLES::generateVpLayer
void generateVpLayer(const SM2Profile *prof, const Terrain *terrain, TechniqueType tt, uint layer, StringUtil::StrStreamType &outStream)
Ogre::TerrainMaterialGeneratorA::SM2Profile::ShaderHelper::mShadowSamplerStartHi
size_t mShadowSamplerStartHi
Definition: OgreTerrainMaterialGeneratorA.h:189
Ogre::TerrainMaterialGeneratorA::SM2Profile::ShaderHelper::getFragmentProgramName
virtual String getFragmentProgramName(const SM2Profile *prof, const Terrain *terrain, TechniqueType tt)
Ogre::TerrainMaterialGeneratorA::SM2Profile::ShaderHelperGLSLES::generateFpLayer
void generateFpLayer(const SM2Profile *prof, const Terrain *terrain, TechniqueType tt, uint layer, StringUtil::StrStreamType &outStream)
OgreTerrainMaterialGenerator.h
Ogre::TerrainMaterialGeneratorA::SM2Profile::ShaderHelperGLSLES
Utility class to help with generating shaders for GLSL ES.
Definition: OgreTerrainMaterialGeneratorA.h:240
Ogre::TerrainMaterialGeneratorA::SM2Profile::ShaderHelper::updateFpParams
virtual void updateFpParams(const SM2Profile *prof, const Terrain *terrain, TechniqueType tt, const GpuProgramParametersSharedPtr &params)
Ogre::TerrainMaterialGeneratorA::SM2Profile::isShadowingEnabled
bool isShadowingEnabled(TechniqueType tt, const Terrain *terrain) const
Ogre::TerrainMaterialGeneratorA::SM2Profile::ShaderHelper::generateVpLayer
virtual void generateVpLayer(const SM2Profile *prof, const Terrain *terrain, TechniqueType tt, uint layer, StringUtil::StrStreamType &outStream)=0
Ogre::TerrainMaterialGeneratorA::SM2Profile::ShaderHelperGLSL::generateVpDynamicShadowsParams
uint generateVpDynamicShadowsParams(uint texCoordStart, const SM2Profile *prof, const Terrain *terrain, TechniqueType tt, StringUtil::StrStreamType &outStream)
Ogre::TerrainMaterialGeneratorA::SM2Profile::isLightmapEnabled
bool isLightmapEnabled() const
Whether to support a light map over the terrain in the shader, if it's present (default true).
Definition: OgreTerrainMaterialGeneratorA.h:103
Ogre::TerrainMaterialGeneratorA::SM2Profile::ShaderHelperHLSL::createFragmentProgram
HighLevelGpuProgramPtr createFragmentProgram(const SM2Profile *prof, const Terrain *terrain, TechniqueType tt)
Ogre::TerrainMaterialGeneratorA::SM2Profile::ShaderHelper::generateVpFooter
virtual void generateVpFooter(const SM2Profile *prof, const Terrain *terrain, TechniqueType tt, StringUtil::StrStreamType &outStream)=0
Ogre::SharedPtr< Material >
Ogre::TerrainMaterialGeneratorA::SM2Profile::ShaderHelperGLSLES::createFragmentProgram
HighLevelGpuProgramPtr createFragmentProgram(const SM2Profile *prof, const Terrain *terrain, TechniqueType tt)
Ogre::TerrainMaterialGeneratorA::SM2Profile::setCompositeMapEnabled
void setCompositeMapEnabled(bool enabled)
Whether to use the composite map to provide a lower LOD technique in the distance (default true).
Ogre::TerrainMaterialGeneratorA::SM2Profile::~SM2Profile
virtual ~SM2Profile()
Ogre::uint8
unsigned char uint8
Definition: OgrePlatform.h:361
Ogre::TerrainMaterialGeneratorA::SM2Profile::ShaderHelper::getChannel
static String getChannel(uint idx)
Ogre::TerrainMaterialGeneratorA::SM2Profile::isCompositeMapEnabled
bool isCompositeMapEnabled() const
Whether to use the composite map to provide a lower LOD technique in the distance (default true).
Definition: OgreTerrainMaterialGeneratorA.h:111
Ogre::TerrainMaterialGeneratorA::TerrainMaterialGeneratorA
TerrainMaterialGeneratorA()
Ogre::TerrainMaterialGeneratorA::SM2Profile::ShaderHelperCg::generateVpDynamicShadows
void generateVpDynamicShadows(const SM2Profile *prof, const Terrain *terrain, TechniqueType tt, StringUtil::StrStreamType &outStream)
Ogre::TerrainMaterialGeneratorA::SM2Profile::isLayerParallaxMappingEnabled
bool isLayerParallaxMappingEnabled() const
Whether to support parallax mapping per layer in the shader (default true).
Definition: OgreTerrainMaterialGeneratorA.h:82
Ogre::TerrainMaterialGeneratorA::SM2Profile::ShaderHelper::generateVpHeader
virtual void generateVpHeader(const SM2Profile *prof, const Terrain *terrain, TechniqueType tt, StringUtil::StrStreamType &outStream)=0
Ogre::uint
unsigned int uint
Definition: OgrePrerequisites.h:114
Ogre::TerrainMaterialGeneratorA::SM2Profile::ShaderHelperCg::generateFpHeader
void generateFpHeader(const SM2Profile *prof, const Terrain *terrain, TechniqueType tt, StringUtil::StrStreamType &outStream)
Ogre::TerrainMaterialGeneratorA::SM2Profile::ShaderHelper::mShadowSamplerStartLo
size_t mShadowSamplerStartLo
Definition: OgreTerrainMaterialGeneratorA.h:190
Ogre::TerrainMaterialGeneratorA::SM2Profile::isLayerSpecularMappingEnabled
bool isLayerSpecularMappingEnabled() const
Whether to support specular mapping per layer in the shader (default true).
Definition: OgreTerrainMaterialGeneratorA.h:88
Ogre::TerrainMaterialGeneratorA::SM2Profile::SM2Profile
SM2Profile(TerrainMaterialGenerator *parent, const String &name, const String &desc)
Ogre::TerrainMaterialGeneratorA::SM2Profile::mShaderLanguage
String mShaderLanguage
Definition: OgreTerrainMaterialGeneratorA.h:270
Ogre::TerrainMaterialGeneratorA::SM2Profile::ShaderHelper::updateVpParams
virtual void updateVpParams(const SM2Profile *prof, const Terrain *terrain, TechniqueType tt, const GpuProgramParametersSharedPtr &params)
Ogre::TerrainMaterialGeneratorA::SM2Profile::getReceiveDynamicShadowsLowLod
bool getReceiveDynamicShadowsLowLod() const
Whether to use shadows on low LOD material rendering (when using composite map) (default false).
Definition: OgreTerrainMaterialGeneratorA.h:144
Ogre::TerrainMaterialGeneratorA::SM2Profile::ShaderHelperHLSL
Definition: OgreTerrainMaterialGeneratorA.h:213
Ogre::TerrainMaterialGeneratorA::SM2Profile::ShaderHelperGLSLES::generateFpHeader
void generateFpHeader(const SM2Profile *prof, const Terrain *terrain, TechniqueType tt, StringUtil::StrStreamType &outStream)
Ogre::TerrainMaterialGeneratorA::SM2Profile::ShaderHelperGLSL::createFragmentProgram
HighLevelGpuProgramPtr createFragmentProgram(const SM2Profile *prof, const Terrain *terrain, TechniqueType tt)
Ogre::TerrainMaterialGeneratorA::SM2Profile::ShaderHelperGLSL::generateFpLayer
void generateFpLayer(const SM2Profile *prof, const Terrain *terrain, TechniqueType tt, uint layer, StringUtil::StrStreamType &outStream)
Ogre::TerrainMaterialGeneratorA::SM2Profile
Shader model 2 profile target.
Definition: OgreTerrainMaterialGeneratorA.h:62
Ogre::TerrainMaterialGeneratorA::SM2Profile::generateForCompositeMap
MaterialPtr generateForCompositeMap(const Terrain *terrain)
Generate / reuse a material for the terrain.
Ogre::TerrainMaterialGeneratorA::SM2Profile::TechniqueType
TechniqueType
Definition: OgreTerrainMaterialGeneratorA.h:154
Ogre::TerrainMaterialGeneratorA::SM2Profile::ShaderHelperGLSL::generateFpFooter
void generateFpFooter(const SM2Profile *prof, const Terrain *terrain, TechniqueType tt, StringUtil::StrStreamType &outStream)
Ogre::TerrainMaterialGeneratorA::SM2Profile::isLayerNormalMappingEnabled
bool isLayerNormalMappingEnabled() const
Whether to support normal mapping per layer in the shader (default true).
Definition: OgreTerrainMaterialGeneratorA.h:76
Ogre::TerrainMaterialGeneratorA::SM2Profile::ShaderHelperCg::generateFpFooter
void generateFpFooter(const SM2Profile *prof, const Terrain *terrain, TechniqueType tt, StringUtil::StrStreamType &outStream)
Ogre::TerrainMaterialGeneratorA::SM2Profile::addTechnique
void addTechnique(const MaterialPtr &mat, const Terrain *terrain, TechniqueType tt)
Ogre::TerrainMaterialGeneratorA::SM2Profile::ShaderHelperGLSL::generateVpFooter
void generateVpFooter(const SM2Profile *prof, const Terrain *terrain, TechniqueType tt, StringUtil::StrStreamType &outStream)
Ogre::TerrainMaterialGeneratorA::SM2Profile::ShaderHelper::defaultVpParams
virtual void defaultVpParams(const SM2Profile *prof, const Terrain *terrain, TechniqueType tt, const HighLevelGpuProgramPtr &prog)
Ogre::TerrainMaterialGeneratorA::SM2Profile::ShaderHelper::updateParams
virtual void updateParams(const SM2Profile *prof, const MaterialPtr &mat, const Terrain *terrain, bool compositeMap)
Ogre::TerrainMaterialGeneratorA::SM2Profile::setReceiveDynamicShadowsPSSM
void setReceiveDynamicShadowsPSSM(PSSMShadowCameraSetup *pssmSettings)
Whether to use PSSM support dynamic texture shadows, and if so the settings to use (default 0).
Ogre::TerrainMaterialGeneratorA::SM2Profile::mCompositeMapEnabled
bool mCompositeMapEnabled
Definition: OgreTerrainMaterialGeneratorA.h:263
Ogre::TerrainMaterialGeneratorA::SM2Profile::isVertexCompressionSupported
bool isVertexCompressionSupported() const
Compressed vertex format supported?
Ogre::TerrainMaterialGeneratorA::SM2Profile::ShaderHelper::createVertexProgram
virtual HighLevelGpuProgramPtr createVertexProgram(const SM2Profile *prof, const Terrain *terrain, TechniqueType tt)=0
Ogre::TerrainMaterialGeneratorA::SM2Profile::ShaderHelperCg::createVertexProgram
HighLevelGpuProgramPtr createVertexProgram(const SM2Profile *prof, const Terrain *terrain, TechniqueType tt)
Ogre::TerrainMaterialGeneratorA::SM2Profile::setReceiveDynamicShadowsLowLod
void setReceiveDynamicShadowsLowLod(bool enabled)
Whether to use shadows on low LOD material rendering (when using composite map) (default false).
Ogre::TerrainMaterialGeneratorA::SM2Profile::ShaderHelperGLSLES::generateFpDynamicShadowsParams
void generateFpDynamicShadowsParams(uint *texCoord, uint *sampler, const SM2Profile *prof, const Terrain *terrain, TechniqueType tt, StringUtil::StrStreamType &outStream)

Copyright © 2012 Torus Knot Software Ltd
Creative Commons License
This work is licensed under a Creative Commons Attribution-ShareAlike 3.0 Unported License.