28 #ifndef __Technique_H__
29 #define __Technique_H__
59 IPS_COMPILE_DISABLED = -1,
83 void clearIlluminationPasses(
void);
85 bool checkManuallyOrganisedIlluminationPasses();
129 : vendor(
GPU_UNKNOWN), includeOrExclude(EXCLUDE) {}
131 : vendor(v), includeOrExclude(ie) {}
140 : includeOrExclude(EXCLUDE), caseSensitive(false) {}
142 : devicePattern(pattern), includeOrExclude(ie), caseSensitive(caseSen) {}
160 bool isSupported(
void)
const;
164 String _compile(
bool autoManageTextureUnits);
170 void _compileIlluminationPasses(
void);
171 size_t calculateSize(
void)
const;
183 Pass* createPass(
void);
185 Pass* getPass(
unsigned short index);
191 unsigned short getNumPasses(
void)
const;
193 void removePass(
unsigned short index);
195 void removeAllPasses(
void);
199 bool movePass(
const unsigned short sourceIndex,
const unsigned short destinationIndex);
213 const String& getResourceGroup(
void)
const;
223 bool isTransparent(
void)
const;
230 bool isTransparentSortingEnabled(
void)
const;
237 bool isTransparentSortingForced(
void)
const;
242 void _unprepare(
void);
249 bool isLoaded(
void)
const;
252 void _notifyNeedsRecompile(
void);
271 void setShadowReceiverMaterial(
const Ogre::String &name);
286 void setPointSize(
Real ps);
356 void setShininess(
Real val);
366 void setSelfIllumination(
Real red,
Real green,
Real blue);
376 void setSelfIllumination(
const ColourValue& selfIllum);
386 void setDepthCheckEnabled(
bool enabled);
396 void setDepthWriteEnabled(
bool enabled);
416 void setColourWriteEnabled(
bool enabled);
446 void setLightingEnabled(
bool enabled);
470 Real expDensity = 0.001,
Real linearStart = 0.0,
Real linearEnd = 1.0 );
480 void setDepthBias(
float constantBias,
float slopeScaleBias);
499 void setTextureAnisotropy(
unsigned int maxAniso);
557 void setLodIndex(
unsigned short index);
578 void setSchemeName(
const String& schemeName);
582 const String& getSchemeName(
void)
const;
585 unsigned short _getSchemeIndex(
void)
const;
588 bool isDepthWriteEnabled(
void)
const;
591 bool isDepthCheckEnabled(
void)
const;
594 bool hasColourWriteDisabled(
void)
const;
601 void setName(
const String& name);
634 void addGPUVendorRule(
GPUVendor vendor, IncludeOrExclude includeOrExclude);
648 void addGPUVendorRule(
const GPUVendorRule& rule);
652 void removeGPUVendorRule(
GPUVendor vendor);
674 void addGPUDeviceNameRule(
const String& devicePattern,
IncludeOrExclude includeOrExclude,
bool caseSensitive =
false);
693 void removeGPUDeviceNameRule(
const String& devicePattern);
ConstVectorIterator< GPUVendorRuleList > GPUVendorRuleIterator
ManualCullingMode
Manual culling modes based on vertex normals.
float Real
Software floating point type.
IncludeOrExclude
Directive used to manually control technique support based on the inclusion or exclusion of some fact...
GPUVendorRuleList mGPUVendorRules
MaterialPtr mShadowCasterMaterial
When casting shadow, if not using default Ogre shadow casting material, or nor using fixed function c...
IlluminationPassList mIlluminationPasses
List of derived passes, categorised into IlluminationStage (ordered)
GPUDeviceNameRule(const String &pattern, IncludeOrExclude ie, bool caseSen)
Class representing colour.
static const ColourValue White
String mShadowCasterMaterialName
When casting shadow, if not using default Ogre shadow casting material, or nor using fixed function c...
StringStream StrStreamType
SceneBlendType
Types of blending that you can specify between an object and the existing contents of the scene...
Class encapsulates rendering properties of an object.
Class representing an approach to rendering this particular Material.
SceneBlendFactor
Blending factors for manually blending objects with the scene.
IlluminationPassesState
Illumination pass state type.
Class defining a single pass of a Technique (of a Material), i.e.
CullingMode
Hardware culling modes based on vertex winding.
vector< GPUVendorRule >::type GPUVendorRuleList
GPUVendorRule(GPUVendor v, IncludeOrExclude ie)
IlluminationPassesState mIlluminationPassesCompilationPhase
IncludeOrExclude includeOrExclude
ConstVectorIterator< GPUDeviceNameRuleList > GPUDeviceNameRuleIterator
unsigned short mSchemeIndex
Scheme index, derived from scheme name but the names are held on MaterialManager, for speed an index ...
ShadeOptions
Light shading modes.
VectorIterator< Passes > PassIterator
String mShadowReceiverMaterialName
When receiving shadow, if not using default Ogre shadow receiving material, or nor using fixed functi...
IncludeOrExclude includeOrExclude
Concrete IteratorWrapper for const access to the underlying container.
Superclass for all objects that wish to use custom memory allocators when their new / delete operator...
Passes mPasses
List of primary passes.
GPUVendor
Enumeration of GPU vendors.
Material * getParent(void) const
Gets the parent Material.
UserObjectBindings mUserObjectBindings
Rule controlling whether technique is deemed supported based on GPU vendor.
UserObjectBindings & getUserObjectBindings()
Return an instance of user objects binding associated with this class.
const String & getName(void) const
Gets the name of the technique.
vector< Pass * >::type Passes
vector< GPUDeviceNameRule >::type GPUDeviceNameRuleList
Rule controlling whether technique is deemed supported based on GPU device name.
vector< IlluminationPass * >::type IlluminationPassList
VectorIterator< IlluminationPassList > IlluminationPassIterator
unsigned short mLodIndex
LOD level.
String mName
Optional name for the technique.
MaterialPtr mShadowReceiverMaterial
When receiving shadow, if not using default Ogre shadow receiving material, or nor using fixed functi...
Concrete IteratorWrapper for nonconst access to the underlying container.
map< String, String >::type AliasTextureNamePairList
Alias / Texture name pair (first = alias, second = texture name)
CompareFunction
Comparison functions used for the depth/stencil buffer operations and others.
const UserObjectBindings & getUserObjectBindings() const
Return an instance of user objects binding associated with this class.
unsigned short getLodIndex(void) const
Gets the level-of-detail index assigned to this Technique.
Class that provides convenient interface to establish a linkage between custom user application objec...
TextureFilterOptions
High-level filtering options providing shortcuts to settings the minification, magnification and mip ...
GPUDeviceNameRuleList mGPUDeviceNameRules