OGRE 14.3
Object-Oriented Graphics Rendering Engine
|
Class representing the state of a single texture unit during a Pass of a Technique, of a Material. More...
#include <OgreTextureUnitState.h>
Classes | |
struct | TextureEffect |
Internal structure defining a texture effect. More... | |
Public Types | |
enum | ContentType : uint8 { CONTENT_NAMED = 0 , CONTENT_SHADOW = 1 , CONTENT_COMPOSITOR = 2 } |
Enum identifying the type of content this texture unit contains. More... | |
typedef std::multimap< TextureEffectType, TextureEffect > | EffectMap |
Texture effects in a multimap paired array. | |
enum | EnvMapType : uint8 { ENV_PLANAR = TEXCALC_ENVIRONMENT_MAP_PLANAR , ENV_CURVED = TEXCALC_ENVIRONMENT_MAP , ENV_REFLECTION = TEXCALC_ENVIRONMENT_MAP_REFLECTION , ENV_NORMAL = TEXCALC_ENVIRONMENT_MAP_NORMAL } |
rather use TexCoordCalcMethod More... | |
typedef Ogre::TextureAddressingMode | TextureAddressingMode |
enum | TextureCubeFace { CUBE_FRONT = 0 , CUBE_BACK = 1 , CUBE_LEFT = 2 , CUBE_RIGHT = 3 , CUBE_UP = 4 , CUBE_DOWN = 5 } |
Enum identifying the frame indexes for faces of a cube map (not the composite 3D type. More... | |
enum | TextureEffectType { ET_ENVIRONMENT_MAP , ET_PROJECTIVE_TEXTURE , ET_UVSCROLL , ET_USCROLL , ET_VSCROLL , ET_ROTATE , ET_TRANSFORM } |
Definition of the broad types of texture effect you can apply to a texture unit. More... | |
enum | TextureTransformType { TT_TRANSLATE_U , TT_TRANSLATE_V , TT_SCALE_U , TT_SCALE_V , TT_ROTATE } |
Useful enumeration when dealing with procedural transforms. More... | |
typedef Sampler::UVWAddressingMode | UVWAddressingMode |
Public Member Functions | |
TextureUnitState (Pass *parent) | |
Default constructor. | |
TextureUnitState (Pass *parent, const String &texName, uint8 texCoordSet=0) | |
Name-based constructor. | |
TextureUnitState (Pass *parent, const TextureUnitState &oth) | |
~TextureUnitState () | |
Default destructor. | |
TexCoordCalcMethod | _deriveTexCoordCalcMethod () const |
ControllerFloat * | _getAnimController () const |
Gets the animation controller (as created because of setAnimatedTexture) if it exists. | |
const SamplerPtr & | _getLocalSampler () |
return a sampler local to this TUS instead of the shared global one | |
const TexturePtr & | _getTexturePtr (size_t frame) const |
Get the texture pointer for a given frame. | |
const TexturePtr & | _getTexturePtr (void) const |
Get the texture pointer for the current frame. | |
void | _load (void) |
Internal method for loading this object as part of Material::load. | |
void | _notifyNeedsRecompile (void) |
Tells the class that it needs recompilation. | |
void | _notifyParent (Pass *parent) |
Notify this object that its parent has changed. | |
void | _prepare (void) |
Internal method for preparing this object for load, as part of Material::prepare. | |
void | _setTexturePtr (const TexturePtr &texptr) |
Set the texture pointer for the current frame (internal use only!). | |
void | _setTexturePtr (const TexturePtr &texptr, size_t frame) |
Set the texture pointer for a given frame (internal use only!). | |
void | _unload (void) |
Internal method for unloading this object as part of Material::unload. | |
void | _unprepare (void) |
Internal method for undoing the preparation this object as part of Material::unprepare. | |
void | addFrameTextureName (const String &name) |
Add a Texture name to the end of the frame container. | |
size_t | calculateSize (void) const |
void | deleteFrameTextureName (const size_t frameNumber) |
Deletes a specific texture frame. | |
const LayerBlendModeEx & | getAlphaBlendMode (void) const |
Get multitexturing alpha blending mode. | |
Real | getAnimationDuration (void) const |
Get the animated-texture animation duration. | |
SceneBlendFactor | getColourBlendFallbackDest (void) const |
Get the multipass fallback for colour blending operation destination factor. | |
SceneBlendFactor | getColourBlendFallbackSrc (void) const |
Get the multipass fallback for colour blending operation source factor. | |
const LayerBlendModeEx & | getColourBlendMode (void) const |
Get multitexturing colour blending mode. | |
ContentType | getContentType (void) const |
Get the type of content this TextureUnitState references. | |
unsigned int | getCurrentFrame (void) const |
Gets the active frame in an animated or multi-image texture layer. | |
PixelFormat | getDesiredFormat (void) const |
Returns the desired pixel format for the texture surface. | |
const String & | getFrameTextureName (unsigned int frameNumber) const |
Gets the name of the texture associated with a frame number. | |
float | getGamma () const |
Returns the gamma adjustment factor applied to this texture on loading. | |
const String & | getName (void) const |
Get the name of the Texture Unit State. | |
unsigned int | getNumFrames (void) const |
Gets the number of frames for a texture. | |
int | getNumMipmaps (void) const |
Gets how many mipmaps have been requested for the texture. | |
Pass * | getParent (void) const |
Gets the parent Pass object. | |
const String & | getReferencedCompositorName () const |
Gets the name of the compositor that this texture references. | |
uint32 | getReferencedMRTIndex () const |
Gets the MRT index of the texture in the compositor that this texture references. | |
const String & | getReferencedTextureName () const |
Gets the name of the texture in the compositor that this texture references. | |
const SamplerPtr & | getSampler () const |
get the associated sampler | |
const Sampler::UVWAddressingMode & | getTextureAddressingMode (void) const |
Sets the texture addressing mode, i.e. | |
unsigned int | getTextureAnisotropy () const |
Get this layer texture anisotropy level. | |
const ColourValue & | getTextureBorderColour () const |
bool | getTextureCompareEnabled () const |
CompareFunction | getTextureCompareFunction () const |
uint8 | getTextureCoordSet (void) const |
Gets the index of the set of texture co-ords this layer uses. | |
std::pair< uint32, uint32 > | getTextureDimensions (unsigned int frame=0) const |
Returns the width and height of the texture in the given frame. | |
FilterOptions | getTextureFiltering (FilterType ftype) const |
Get the texture filtering for the given type. | |
float | getTextureMipmapBias (void) const |
Gets the bias value applied to the mipmap calculation. | |
const String & | getTextureName (void) const |
Get the name of current texture image for this layer. | |
const String & | getTextureNameAlias (void) const |
TextureType | getTextureType (void) const |
Returns the type of this texture. | |
int | getUnorderedAccessMipLevel () const |
bool | is3D (void) const |
bool | isBlank (void) const |
Determines if this texture layer is currently blank. | |
bool | isCubic (void) const |
bool | isDefaultFiltering () const |
Returns true if this texture unit is using the default Sampler. | |
bool | isHardwareGammaEnabled () const |
Gets whether this texture will be set up so that on sampling it, hardware gamma correction is applied. | |
bool | isLoaded (void) const |
Is this loaded? | |
bool | isTextureLoadFailing () const |
Tests if the texture associated with this unit has failed to load. | |
TextureUnitState & | operator= (const TextureUnitState &oth) |
void | retryTextureLoad () |
Tells the unit to retry loading the texture if it had failed to load. | |
void | setAlphaOperation (LayerBlendOperationEx op, LayerBlendSource source1=LBS_TEXTURE, LayerBlendSource source2=LBS_CURRENT, Real arg1=1.0, Real arg2=1.0, Real manualBlend=0.0) |
Sets the alpha operation to be applied to this texture. | |
void | setAnimatedTextureName (const std::vector< String > &names, Real duration=0) |
This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. | |
void | setAnimatedTextureName (const String &name, size_t numFrames, Real duration=0) |
Sets the names of the texture images for an animated texture. | |
void | setAnimatedTextureName (const String *const names, size_t numFrames, Real duration=0) |
This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. | |
void | setBlank (void) |
Sets this texture layer to be blank. | |
void | setColourOperation (const LayerBlendOperation op) |
Determines how this texture layer is combined with the one below it (or the diffuse colour of the geometry if this is layer 0). | |
void | setColourOperationEx (LayerBlendOperationEx op, LayerBlendSource source1=LBS_TEXTURE, LayerBlendSource source2=LBS_CURRENT, const ColourValue &arg1=ColourValue::White, const ColourValue &arg2=ColourValue::White, Real manualBlend=0.0) |
Setting advanced blending options. | |
void | setColourOpMultipassFallback (const SceneBlendFactor sourceFactor, const SceneBlendFactor destFactor) |
Sets the multipass fallback operation for this layer, if you used TextureUnitState::setColourOperationEx and not enough multitexturing hardware is available. | |
void | setCompositorReference (const String &compositorName, const String &textureName, uint32 mrtIndex=0) |
Set the compositor reference for this texture unit state. | |
void | setContentType (ContentType ct) |
Set the type of content this TextureUnitState references. | |
void | setCubicTexture (const TexturePtr *const texPtrs, bool forUVW=false) |
void | setCubicTextureName (const String &name, bool forUVW=false) |
void | setCubicTextureName (const String *const names, bool forUVW=false) |
void | setCurrentFrame (unsigned int frameNumber) |
Changes the active frame in an animated or multi-image texture. | |
void | setDesiredFormat (PixelFormat desiredFormat) |
Sets the desired pixel format for the texture surface; can only be set before load(). | |
void | setFrameTextureName (const String &name, unsigned int frameNumber) |
Sets the name of the texture associated with a frame. | |
void | setGamma (float gamma) |
Sets the gamma adjustment factor applied to this texture on loading the data. | |
void | setHardwareGammaEnabled (bool enabled) |
Sets whether this texture will be set up so that on sampling it, hardware gamma correction is applied. | |
void | setIsAlpha (bool isAlpha) |
void | setLayerArrayNames (TextureType type, const std::vector< String > &names) |
Sets this texture layer to use an array of texture maps. | |
void | setName (const String &name) |
Set the name of the Texture Unit State. | |
void | setNumMipmaps (int numMipmaps) |
Sets the number of mipmaps to be used for this texture. | |
void | setSampler (const SamplerPtr &sampler) |
void | setTexture (const TexturePtr &texPtr) |
Sets this texture layer to use a single texture, given the pointer to the texture to use on this layer. | |
void | setTextureAddressingMode (const Sampler::UVWAddressingMode &uvw) |
Sets the texture addressing mode, i.e. | |
void | setTextureAddressingMode (Ogre::TextureAddressingMode tam) |
Sets the texture addressing mode, i.e. | |
void | setTextureAddressingMode (Ogre::TextureAddressingMode u, Ogre::TextureAddressingMode v, Ogre::TextureAddressingMode w) |
Sets the texture addressing mode, i.e. | |
void | setTextureAnisotropy (unsigned int maxAniso) |
Sets the anisotropy level to be used for this texture level. | |
void | setTextureBorderColour (const ColourValue &colour) |
Sets the texture border colour. | |
void | setTextureCompareEnabled (bool enabled) |
Enables or disables the comparison test for depth textures. | |
void | setTextureCompareFunction (CompareFunction function) |
void | setTextureCoordSet (uint8 set) |
Sets which texture coordinate set is to be used for this texture layer. | |
void | setTextureFiltering (FilterOptions minFilter, FilterOptions magFilter, FilterOptions mipFilter) |
Set a the detailed filtering options on this texture unit. | |
void | setTextureFiltering (FilterType ftype, FilterOptions opts) |
Set a single filtering option on this texture unit. | |
void | setTextureFiltering (TextureFilterOptions filterType) |
Set the texture filtering for this unit, using the simplified interface. | |
void | setTextureMipmapBias (float bias) |
Sets the bias value applied to the mipmap calculation. | |
void | setTextureName (const String &name) |
Sets this texture layer to use a single texture, given the name of the texture to use on this layer. | |
void | setTextureName (const String &name, TextureType ttype) |
This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. | |
void | setTextureNameAlias (const String &name) |
void | setUnorderedAccessMipLevel (int mipLevel) |
Enables Unordered Access to the provided mipLevel of the texture. | |
Texture coordinate transformation | |
void | setTextureTransform (const Matrix4 &xform) |
Sets a matrix used to transform any texture coordinates on this layer. | |
const Matrix4 & | getTextureTransform (void) const |
Gets the current texture transformation matrix. | |
void | setTextureScroll (float u, float v) |
Sets the translation offset of the texture, ie scrolls the texture. | |
void | setTextureUScroll (float value) |
As setTextureScroll, but sets only U value. | |
float | getTextureUScroll (void) const |
Get texture uscroll value. | |
void | setTextureVScroll (float value) |
As setTextureScroll, but sets only V value. | |
float | getTextureVScroll (void) const |
Get texture vscroll value. | |
void | setTextureUScale (float value) |
As setTextureScale, but sets only U value. | |
float | getTextureUScale (void) const |
Get texture uscale value. | |
void | setTextureVScale (float value) |
As setTextureScale, but sets only V value. | |
float | getTextureVScale (void) const |
Get texture vscale value. | |
void | setTextureScale (float uScale, float vScale) |
Sets the scaling factor applied to texture coordinates. | |
void | setTextureRotate (const Radian &angle) |
Sets the anticlockwise rotation factor applied to texture coordinates. | |
const Radian & | getTextureRotate (void) const |
Get texture rotation effects angle value. | |
Dynamic texture coordinate generation | |
void | addEffect (TextureEffect effect) |
Generic method for setting up texture effects. | |
void | setEnvironmentMap (bool enable, int texGenType=TEXCALC_ENVIRONMENT_MAP) |
Turns on/off texture coordinate generation for addressing an environment map. | |
void | setScrollAnimation (float uSpeed, float vSpeed) |
Sets up an animated scroll for the texture layer. | |
void | setRotateAnimation (float speed) |
Sets up an animated texture rotation for this layer. | |
void | setTransformAnimation (const TextureTransformType ttype, const WaveformType waveType, float base=0, float frequency=1, float phase=0, float amplitude=1) |
Sets up a general time-relative texture modification effect. | |
void | setProjectiveTexturing (bool enabled, const Frustum *projectionSettings=0) |
Enables or disables projective texturing on this texture unit. | |
const Frustum * | getProjectiveTexturingFrustum (void) const |
Gets the Frustum which is being used to derive projective texturing parameters. | |
void | removeAllEffects (void) |
Removes all effects applied to this texture layer. | |
void | removeEffect (const TextureEffectType type) |
Removes a single effect applied to this texture layer. | |
const EffectMap & | getEffects (void) const |
Get texture effects in a multimap paired array. | |
Static Public Attributes | |
static const Ogre::TextureAddressingMode | TAM_BORDER = Ogre::TAM_BORDER |
static const Ogre::TextureAddressingMode | TAM_CLAMP = Ogre::TAM_CLAMP |
static const Ogre::TextureAddressingMode | TAM_MIRROR = Ogre::TAM_MIRROR |
static const Ogre::TextureAddressingMode | TAM_WRAP = Ogre::TAM_WRAP |
Class representing the state of a single texture unit during a Pass of a Technique, of a Material.
Texture units are pipelines for retrieving texture data for rendering onto your objects in the world. Using them is common to both the fixed-function and the programmable (vertex and fragment program) pipeline, but some of the settings will only have an effect in the fixed-function pipeline (for example, setting a texture rotation will have no effect if you use the programmable pipeline, because this is overridden by the fragment program). The effect of each setting as regards the 2 pipelines is commented in each setting.
When I use the term 'fixed-function pipeline' I mean traditional rendering where you do not use vertex or fragment programs (shaders). Programmable pipeline means that for this pass you are using vertex or fragment programs.
typedef std::multimap<TextureEffectType, TextureEffect> Ogre::TextureUnitState::EffectMap |
Texture effects in a multimap paired array.
Definition of the broad types of texture effect you can apply to a texture unit.
rather use TexCoordCalcMethod
Enumerator | |
---|---|
ENV_PLANAR | same as TEXCALC_ENVIRONMENT_MAP_PLANAR |
ENV_CURVED | same as TEXCALC_ENVIRONMENT_MAP |
ENV_REFLECTION | |
ENV_NORMAL | same as TEXCALC_ENVIRONMENT_MAP_NORMAL |
Enum identifying the type of content this texture unit contains.
Ogre::TextureUnitState::TextureUnitState | ( | Pass * | parent | ) |
Default constructor.
Ogre::TextureUnitState::TextureUnitState | ( | Pass * | parent, |
const TextureUnitState & | oth | ||
) |
Ogre::TextureUnitState::~TextureUnitState | ( | ) |
Default destructor.
Ogre::TextureUnitState::TextureUnitState | ( | Pass * | parent, |
const String & | texName, | ||
uint8 | texCoordSet = 0 |
||
) |
Name-based constructor.
parent | the parent Pass object. |
texName | The basic name of the texture e.g. brickwall.jpg, stonefloor.png. |
texCoordSet | The index of the texture coordinate set to use. |
TextureUnitState & Ogre::TextureUnitState::operator= | ( | const TextureUnitState & | oth | ) |
Get the name of current texture image for this layer.
This will either always be a single name for this layer, or will be the name of the current frame for an animated or otherwise multi-frame texture.
Sets this texture layer to use a single texture, given the name of the texture to use on this layer.
void Ogre::TextureUnitState::setTextureName | ( | const String & | name, |
TextureType | ttype | ||
) |
This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.
void Ogre::TextureUnitState::setTexture | ( | const TexturePtr & | texPtr | ) |
Sets this texture layer to use a single texture, given the pointer to the texture to use on this layer.
|
inline |
References Ogre::TEX_TYPE_CUBE_MAP.
void Ogre::TextureUnitState::setAnimatedTextureName | ( | const String & | name, |
size_t | numFrames, | ||
Real | duration = 0 |
||
) |
Sets the names of the texture images for an animated texture.
Animated textures are just a series of images making up the frames of the animation. All the images must be the same size, and their names must have a frame number appended before the extension, e.g. if you specify a name of "flame.jpg" with 3 frames, the image names must be "flame_0.jpg", "flame_1.jpg" and "flame_2.jpg".
You can change the active frame on a texture layer by calling the Ogre::TextureUnitState::setCurrentFrame method.
name | The base name of the textures to use e.g. flame.jpg for frames flame_0.jpg, flame_1.jpg etc. |
numFrames | The number of frames in the sequence. |
duration | The length of time it takes to display the whole animation sequence, in seconds. If 0, no automatic transition occurs. |
void Ogre::TextureUnitState::setAnimatedTextureName | ( | const String *const | names, |
size_t | numFrames, | ||
Real | duration = 0 |
||
) |
This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.
|
inline |
This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.
void Ogre::TextureUnitState::setLayerArrayNames | ( | TextureType | type, |
const std::vector< String > & | names | ||
) |
Sets this texture layer to use an array of texture maps.
std::pair< uint32, uint32 > Ogre::TextureUnitState::getTextureDimensions | ( | unsigned int | frame = 0 | ) | const |
Returns the width and height of the texture in the given frame.
Changes the active frame in an animated or multi-image texture.
An animated texture (or a cubic texture where the images are not combined for 3D use) is made up of a number of frames. This method sets the active frame.
Gets the active frame in an animated or multi-image texture layer.
Gets the name of the texture associated with a frame number.
Throws an exception if frameNumber exceeds the number of stored frames.
Sets the name of the texture associated with a frame.
name | The name of the texture. |
frameNumber | The frame the texture name is to be placed in. |
Add a Texture name to the end of the frame container.
name | The name of the texture. |
Deletes a specific texture frame.
The texture used is not deleted but the texture will no longer be used by the Texture Unit. An exception is raised if the frame number exceeds the number of actual frames.
frameNumber | The frame number of the texture to be deleted. |
Gets the number of frames for a texture.
void Ogre::TextureUnitState::setContentType | ( | ContentType | ct | ) |
Set the type of content this TextureUnitState references.
The default is to reference a standard named texture, but this unit can also reference automated content like a shadow texture.
ContentType Ogre::TextureUnitState::getContentType | ( | void | ) | const |
Get the type of content this TextureUnitState references.
References Ogre::TEX_TYPE_CUBE_MAP.
References Ogre::TEX_TYPE_CUBE_MAP.
TextureType Ogre::TextureUnitState::getTextureType | ( | void | ) | const |
Returns the type of this texture.
void Ogre::TextureUnitState::setDesiredFormat | ( | PixelFormat | desiredFormat | ) |
Sets the desired pixel format for the texture surface; can only be set before load().
PixelFormat Ogre::TextureUnitState::getDesiredFormat | ( | void | ) | const |
Returns the desired pixel format for the texture surface.
Sets the number of mipmaps to be used for this texture.
Gets how many mipmaps have been requested for the texture.
float Ogre::TextureUnitState::getGamma | ( | ) | const |
Returns the gamma adjustment factor applied to this texture on loading.
Sets the gamma adjustment factor applied to this texture on loading the data.
Sets whether this texture will be set up so that on sampling it, hardware gamma correction is applied.
24-bit textures are often saved in gamma colour space; this preserves precision in the 'darks'. However, if you're performing blending on the sampled colours, you really want to be doing it in linear space. One way is to apply a gamma correction value on loading (see setGamma), but this means you lose precision in those dark colours. An alternative is to get the hardware to do the gamma correction when reading the texture and converting it to a floating point value for the rest of the pipeline. This option allows you to do that; it's only supported in relatively recent hardware (others will ignore it) but can improve the quality of colour reproduction.
bool Ogre::TextureUnitState::isHardwareGammaEnabled | ( | ) | const |
Gets whether this texture will be set up so that on sampling it, hardware gamma correction is applied.
Gets the index of the set of texture co-ords this layer uses.
Sets which texture coordinate set is to be used for this texture layer.
A mesh can define multiple sets of texture coordinates, this sets which one this material uses.
Enables Unordered Access to the provided mipLevel of the texture.
|
inline |
Sets a matrix used to transform any texture coordinates on this layer.
Texture coordinates can be modified on a texture layer to create effects like scrolling textures. A texture transform can either be applied to a layer which takes the source coordinates from a fixed set in the geometry, or to one which generates them dynamically (e.g. environment mapping).
It's obviously a bit impractical to create scrolling effects by calling this method manually since you would have to call it every frame with a slight alteration each time, which is tedious. Instead you can use setTransformAnimation which will manage the effect over time for you.
In addition, if you can et the individual texture transformations rather than concatenating them yourself.
Gets the current texture transformation matrix.
Causes a reclaculation of the matrix if any parameters have been changed via setTextureScroll, setTextureScale and setTextureRotate.
Sets the translation offset of the texture, ie scrolls the texture.
This method sets the translation element of the texture transformation, and is easier to use than setTextureTransform if you are combining translation, scaling and rotation in your texture transformation. If you want to animate these values use Ogre::TextureUnitState::setScrollAnimation
u | The amount the texture should be moved horizontally (u direction). |
v | The amount the texture should be moved vertically (v direction). |
As setTextureScroll, but sets only U value.
As setTextureScroll, but sets only V value.
As setTextureScale, but sets only U value.
As setTextureScale, but sets only V value.
Sets the scaling factor applied to texture coordinates.
This method sets the scale element of the texture transformation, and is easier to use than setTextureTransform if you are combining translation, scaling and rotation in your texture transformation.
If you want to animate these values use Ogre::TextureUnitState::setTransformAnimation
uScale | The value by which the texture is to be scaled horizontally. |
vScale | The value by which the texture is to be scaled vertically. |
Sets the anticlockwise rotation factor applied to texture coordinates.
This sets a fixed rotation angle - if you wish to animate this, use Ogre::TextureUnitState::setRotateAnimation
angle | The angle of rotation (anticlockwise). |
Get texture rotation effects angle value.
|
inline |
get the associated sampler
|
inline |
References OgreAssert.
|
inline |
Sets the texture addressing mode, i.e.
what happens at uv values above 1.0.
The default is TAM_WRAP i.e. the texture repeats over values of 1.0. This is a shortcut method which sets the addressing mode for all coordinates at once; you can also call the more specific method to set the addressing mode per coordinate.
This is a shortcut method which sets the addressing mode for all coordinates at once; you can also call the more specific method to set the addressing mode per coordinate.
|
inline |
Sets the texture addressing mode, i.e.
what happens at uv values above 1.0.
The default is TAM_WRAP i.e. the texture repeats over values of 1.0. This is a shortcut method which sets the addressing mode for all coordinates at once; you can also call the more specific method to set the addressing mode per coordinate.
This is a shortcut method which sets the addressing mode for all coordinates at once; you can also call the more specific method to set the addressing mode per coordinate.
|
inline |
Sets the texture addressing mode, i.e.
what happens at uv values above 1.0.
The default is TAM_WRAP i.e. the texture repeats over values of 1.0. This is a shortcut method which sets the addressing mode for all coordinates at once; you can also call the more specific method to set the addressing mode per coordinate.
This is a shortcut method which sets the addressing mode for all coordinates at once; you can also call the more specific method to set the addressing mode per coordinate.
|
inline |
Sets the texture addressing mode, i.e.
what happens at uv values above 1.0.
The default is TAM_WRAP i.e. the texture repeats over values of 1.0. This is a shortcut method which sets the addressing mode for all coordinates at once; you can also call the more specific method to set the addressing mode per coordinate.
This is a shortcut method which sets the addressing mode for all coordinates at once; you can also call the more specific method to set the addressing mode per coordinate.
|
inline |
Sets the texture border colour.
The default is ColourValue::Black, and this value only used when addressing mode is TAM_BORDER.
|
inline |
|
inline |
Set the texture filtering for this unit, using the simplified interface.
You also have the option of specifying the minification, magnification and mip filter individually if you want more control over filtering options. See the alternative setTextureFiltering methods for details.
filterType | The high-level filter type to use. |
|
inline |
Set a single filtering option on this texture unit.
ftype | The filtering type to set. |
opts | The filtering option to set. |
|
inline |
Set a the detailed filtering options on this texture unit.
minFilter | The filtering to use when reducing the size of the texture. Can be Ogre::FO_POINT, Ogre::FO_LINEAR or Ogre::FO_ANISOTROPIC. |
magFilter | The filtering to use when increasing the size of the texture. Can be Ogre::FO_POINT, Ogre::FO_LINEAR or Ogre::FO_ANISOTROPIC. |
mipFilter | The filtering to use between mip levels. Can be Ogre::FO_NONE (turns off mipmapping), Ogre::FO_POINT or Ogre::FO_LINEAR (trilinear filtering). |
|
inline |
Get the texture filtering for the given type.
Enables or disables the comparison test for depth textures.
When enabled, sampling the texture returns how the sampled value compares against a reference value instead of the sampled value itself. Combined with linear filtering this can be used to implement hardware PCF for shadow maps.
|
inline |
|
inline |
|
inline |
Sets the anisotropy level to be used for this texture level.
The degree of anisotropy is the ratio between the height of the texture segment visible in a screen space region versus the width - so for example a floor plane, which stretches on into the distance and thus the vertical texture coordinates change much faster than the horizontal ones, has a higher anisotropy than a wall which is facing you head on (which has an anisotropy of 1 if your line of sight is perfectly perpendicular to it).The maximum value is determined by the hardware, but it is usually 8 or 16.
In order for this to be used, you have to set the minification and/or the magnification option on this texture to Ogre::FO_ANISOTROPIC.
maxAniso | The maximal anisotropy level, should be between 2 and the maximum supported by hardware (1 is the default, ie. no anisotropy). |
Get this layer texture anisotropy level.
Sets the bias value applied to the mipmap calculation.
You can alter the mipmap calculation by biasing the result with a single floating point value. After the mip level has been calculated, this bias value is added to the result to give the final mip level. Lower mip levels are larger (higher detail), so a negative bias will force the larger mip levels to be used, and a positive bias will cause smaller mip levels to be used. The bias values are in mip levels, so a -1 bias will force mip levels one larger than by the default calculation.
In order for this option to be used, your hardware has to support mipmap biasing (exposed through Ogre::RSC_MIPMAP_LOD_BIAS), and your minification filtering has to be set to point or linear.
Gets the bias value applied to the mipmap calculation.
void Ogre::TextureUnitState::setColourOperationEx | ( | LayerBlendOperationEx | op, |
LayerBlendSource | source1 = LBS_TEXTURE , |
||
LayerBlendSource | source2 = LBS_CURRENT , |
||
const ColourValue & | arg1 = ColourValue::White , |
||
const ColourValue & | arg2 = ColourValue::White , |
||
Real | manualBlend = 0.0 |
||
) |
Setting advanced blending options.
This is an extended version of the Ogre::TextureUnitState::setColourOperation method which allows extremely detailed control over the blending applied between this and earlier layers. See the Warning below about the issues between mulitpass and multitexturing that using this method can create.
Texture colour operations determine how the final colour of the surface appears when rendered. Texture units are used to combine colour values from various sources (ie. the diffuse colour of the surface from lighting calculations, combined with the colour of the texture). This method allows you to specify the 'operation' to be used, ie. the calculation such as adds or multiplies, and which values to use as arguments, such as a fixed value or a value from a previous calculation.
The defaults for each layer are:
ie. each layer takes the colour results of the previous layer, and multiplies them with the new texture being applied. Bear in mind that colours are RGB values from 0.0 - 1.0 so multiplying them together will result in values in the same range, 'tinted' by the multiply. Note however that a straight multiply normally has the effect of darkening the textures - for this reason there are brightening operations like Ogre::LBX_MODULATE_X2. See the Ogre::LayerBlendOperation and Ogre::LayerBlendSource enumerated types for full details.
The final 3 parameters are only required if you decide to pass values manually into the operation, i.e. you want one or more of the inputs to the colour calculation to come from a fixed value that you supply. Hence you only need to fill these in if you supply Ogre::LBS_MANUAL to the corresponding source, or use the Ogre::LBX_BLEND_MANUAL operation.
op | The operation to be used, e.g. modulate (multiply), add, subtract. |
source1 | The source of the first colour to the operation e.g. texture colour. |
source2 | The source of the second colour to the operation e.g. current surface colour. |
arg1 | Manually supplied colour value (only required if source1 = LBS_MANUAL). |
arg2 | Manually supplied colour value (only required if source2 = LBS_MANUAL). |
manualBlend | Manually supplied 'blend' value - only required for operations which require manual blend e.g. LBX_BLEND_MANUAL. |
void Ogre::TextureUnitState::setColourOperation | ( | const LayerBlendOperation | op | ) |
Determines how this texture layer is combined with the one below it (or the diffuse colour of the geometry if this is layer 0).
This method is the simplest way to blend texture layers, because it requires only one parameter, gives you the most common blending types, and automatically sets up 2 blending methods: one for if single-pass multitexturing hardware is available, and another for if it is not and the blending must be achieved through multiple rendering passes. It is, however, quite limited and does not expose the more flexible multitexturing operations, simply because these can't be automatically supported in multipass fallback mode. If want to use the fancier options, use Ogre::TextureUnitState::setColourOperationEx, but you'll either have to be sure that enough multitexturing units will be available, or you should explicitly set a fallback using Ogre::TextureUnitState::setColourOpMultipassFallback.
op | One of the Ogre::LayerBlendOperation enumerated blending types. |
void Ogre::TextureUnitState::setColourOpMultipassFallback | ( | const SceneBlendFactor | sourceFactor, |
const SceneBlendFactor | destFactor | ||
) |
Sets the multipass fallback operation for this layer, if you used TextureUnitState::setColourOperationEx and not enough multitexturing hardware is available.
Because some effects exposed using Ogre::TextureUnitState::setColourOperationEx are only supported under multitexturing hardware, if the hardware is lacking the system must fallback on multipass rendering, which unfortunately doesn't support as many effects. This method is for you to specify the fallback operation which most suits you.
You'll notice that the interface is the same as the Ogre::TMaterial::setSceneBlending method; this is because multipass rendering IS effectively scene blending, since each layer is rendered on top of the last using the same mechanism as making an object transparent, it's just being rendered in the same place repeatedly to get the multitexture effect.
If you use the simpler (and hence less flexible) Ogre::TextureUnitState::setColourOperation method you don't need to call this as the system sets up the fallback for you.
const LayerBlendModeEx & Ogre::TextureUnitState::getColourBlendMode | ( | void | ) | const |
Get multitexturing colour blending mode.
const LayerBlendModeEx & Ogre::TextureUnitState::getAlphaBlendMode | ( | void | ) | const |
Get multitexturing alpha blending mode.
SceneBlendFactor Ogre::TextureUnitState::getColourBlendFallbackSrc | ( | void | ) | const |
Get the multipass fallback for colour blending operation source factor.
SceneBlendFactor Ogre::TextureUnitState::getColourBlendFallbackDest | ( | void | ) | const |
Get the multipass fallback for colour blending operation destination factor.
void Ogre::TextureUnitState::setAlphaOperation | ( | LayerBlendOperationEx | op, |
LayerBlendSource | source1 = LBS_TEXTURE , |
||
LayerBlendSource | source2 = LBS_CURRENT , |
||
Real | arg1 = 1.0 , |
||
Real | arg2 = 1.0 , |
||
Real | manualBlend = 0.0 |
||
) |
Sets the alpha operation to be applied to this texture.
This works in exactly the same way as setColourOperationEx, except that the effect is applied to the level of alpha (i.e. transparency) of the texture rather than its colour. When the alpha of a texel (a pixel on a texture) is 1.0, it is opaque, whereas it is fully transparent if the alpha is 0.0. Please refer to the Ogre::TextureUnitState::setColourOperationEx method for more info.
op | The operation to be used, e.g. modulate (multiply), add, subtract |
source1 | The source of the first alpha value to the operation e.g. texture alpha |
source2 | The source of the second alpha value to the operation e.g. current surface alpha |
arg1 | Manually supplied alpha value (only required if source1 = Ogre::LBS_MANUAL) |
arg2 | Manually supplied alpha value (only required if source2 = Ogre::LBS_MANUAL) |
manualBlend | Manually supplied 'blend' value - only required for operations which require manual blend e.g. Ogre::LBX_BLEND_MANUAL |
void Ogre::TextureUnitState::addEffect | ( | TextureEffect | effect | ) |
Generic method for setting up texture effects.
Allows you to specify effects directly by using the TextureEffectType enumeration. The arguments that go with it depend on the effect type. Only one effect of each type can be applied to a texture layer.
void Ogre::TextureUnitState::setEnvironmentMap | ( | bool | enable, |
int | texGenType = TEXCALC_ENVIRONMENT_MAP |
||
) |
Turns on/off texture coordinate generation for addressing an environment map.
Environment maps make an object look reflective by using the object's vertex normals relative to the camera view to generate texture coordinates.
The vectors generated can either be used to address a single 2D texture which is a 'fish-eye' lens view of a scene, or a 3D cubic environment map which requires 6 textures for each side of the inside of a cube.
This effect works best if the object has lots of gradually changing normals. The texture also has to be designed for this effect - see the example spheremap.png
included with the sample application for a 2D environment map; a cubic map can be generated by rendering 6 views of a scene to each of the cube faces with orthogonal views.
Enabling this disables any other texture coordinate generation effects. However it can be combined with texture coordinate modification functions, which then operate on the generated coordinates rather than static model texture coordinates.
enable | True to enable, false to disable |
texGenType | texture coordinate generation type |
Sets up an animated scroll for the texture layer.
Useful for creating constant scrolling effects on a texture layer (for varying scrolls, see Ogre::TextureUnitState::setTransformAnimation).
uSpeed | The number of horizontal loops per second (+ve=moving right, -ve = moving left). |
vSpeed | The number of vertical loops per second (+ve=moving up, -ve= moving down). |
Sets up an animated texture rotation for this layer.
Useful for constant rotations (for varying rotations, see Ogre::TextureUnitState::setTransformAnimation).
speed | The number of complete anticlockwise revolutions per second (use -ve for clockwise) |
void Ogre::TextureUnitState::setTransformAnimation | ( | const TextureTransformType | ttype, |
const WaveformType | waveType, | ||
float | base = 0 , |
||
float | frequency = 1 , |
||
float | phase = 0 , |
||
float | amplitude = 1 |
||
) |
Sets up a general time-relative texture modification effect.
This can be called multiple times for different values of ttype, but only the latest effect applies if called multiple time for the same ttype.
ttype | The type of transform, either translate (scroll), scale (stretch) or rotate (spin). |
waveType | The shape of the wave, see Ogre::WaveformType enum for details. |
base | The base value for the function (range of output = {base, base + amplitude}). |
frequency | The speed of the wave in cycles per second. |
phase | The offset of the start of the wave, e.g. 0.5 to start half-way through the wave. |
amplitude | Scales the output so that instead of lying within 0..1 it lies within 0..1*amplitude for exaggerated effects. |
void Ogre::TextureUnitState::setProjectiveTexturing | ( | bool | enabled, |
const Frustum * | projectionSettings = 0 |
||
) |
Enables or disables projective texturing on this texture unit.
Projective texturing allows you to generate texture coordinates based on a Frustum, which gives the impression that a texture is being projected onto the surface. Note that once you have called this method, the texture unit continues to monitor the Frustum you passed in and the projection will change if you can alter it. It also means that you must ensure that the Frustum object you pass a pointer to remains in existence for as long as this TextureUnitState does.
enabled | Whether to enable / disable. |
projectionSettings | The Frustum which will be used to derive the projection parameters. |
Gets the Frustum which is being used to derive projective texturing parameters.
Removes all effects applied to this texture layer.
void Ogre::TextureUnitState::removeEffect | ( | const TextureEffectType | type | ) |
Removes a single effect applied to this texture layer.
Get texture effects in a multimap paired array.
Determines if this texture layer is currently blank.
|
inline |
Tests if the texture associated with this unit has failed to load.
|
inline |
Tells the unit to retry loading the texture if it had failed to load.
Get the animated-texture animation duration.
bool Ogre::TextureUnitState::isDefaultFiltering | ( | ) | const |
Returns true if this texture unit is using the default Sampler.
void Ogre::TextureUnitState::setCompositorReference | ( | const String & | compositorName, |
const String & | textureName, | ||
uint32 | mrtIndex = 0 |
||
) |
Set the compositor reference for this texture unit state.
Only valid when content type is compositor.
compositorName | The name of the compositor to reference. |
textureName | The name of the texture to reference. |
mrtIndex | The index of the wanted texture, if referencing an MRT. |
Gets the name of the compositor that this texture references.
Gets the name of the texture in the compositor that this texture references.
|
inline |
Gets the MRT index of the texture in the compositor that this texture references.
Internal method for preparing this object for load, as part of Material::prepare.
Internal method for undoing the preparation this object as part of Material::unprepare.
Internal method for loading this object as part of Material::load.
Internal method for unloading this object as part of Material::unload.
Tells the class that it needs recompilation.
Get the name of the Texture Unit State.
Notify this object that its parent has changed.
const TexturePtr & Ogre::TextureUnitState::_getTexturePtr | ( | void | ) | const |
Get the texture pointer for the current frame.
const TexturePtr & Ogre::TextureUnitState::_getTexturePtr | ( | size_t | frame | ) | const |
Get the texture pointer for a given frame.
void Ogre::TextureUnitState::_setTexturePtr | ( | const TexturePtr & | texptr | ) |
Set the texture pointer for the current frame (internal use only!).
void Ogre::TextureUnitState::_setTexturePtr | ( | const TexturePtr & | texptr, |
size_t | frame | ||
) |
Set the texture pointer for a given frame (internal use only!).
|
inline |
Gets the animation controller (as created because of setAnimatedTexture) if it exists.
const SamplerPtr & Ogre::TextureUnitState::_getLocalSampler | ( | ) |
return a sampler local to this TUS instead of the shared global one
TexCoordCalcMethod Ogre::TextureUnitState::_deriveTexCoordCalcMethod | ( | ) | const |
|
static |
|
static |
|
static |
|
static |