# Visualization Library

A lightweight C++ OpenGL middleware for 2D/3D graphics

[Home] [Tutorials] [All Classes] [Grouped Classes]

Public Member Functions | Protected Attributes

# vl::Effect Class Reference

Defines the sequence of Shader objects used to render an Actor. More...

`#include <Effect.hpp>`

Inheritance diagram for vl::Effect:

List of all members.

## Public Member Functions

virtual const char * | className ()
| Returns the name of the class.
| Effect ()
| Constructor.
void | setRenderRank (int rank)
| Modifies the rendering rank of an Actor.
int | renderRank () const
| Returns the rendering rank of an Effect.
const ref< ShaderSequence > & | lod (int lod_level) const
| Returns the ShaderSequence representing the specified LOD level.
ref< ShaderSequence > & | lod (int lod_level)
| Returns the ShaderSequence representing the specified LOD level.
Shader * | shader (int lodi=0, int pass=0)
| Utility function, same as `'lod`(lodi)->at(pass);'.
const Shader * | shader (int lodi=0, int pass=0) const
| Utility function, same as `'lod`(lodi)->at(pass);'.
void | setLOD (int lodi, Shader *shader1, Shader *shader2=NULL, Shader *shader3=NULL, Shader *shader4=NULL)
| Utility function, same as `'lod`(lodi) = new ShaderSequence(shader1,shader2,shader3,shader4);'.
void | setLODEvaluator (LODEvaluator *lod_evaluator)
| Installs the LODEvaluator used to compute the current LOD at rendering time.
LODEvaluator * | lodEvaluator ()
| Returns the installed LODEvaluator (if any) or NULL.
const LODEvaluator * | lodEvaluator () const
| Returns the installed LODEvaluator (if any) or NULL.
void | setEnableMask (unsigned int mask)
| The enable mask of an Actor's Effect defines whether the actor should be rendered or not depending on the Rendering::enableMask().
unsigned int | enableMask () const
| The enable mask of an Actor's Effect defines whether the actor should be rendered or not depending on the Rendering::enableMask().
int | evaluateLOD (Actor *actor, Camera *camera)
| If a LODEvaluator is installed computes the effect LOD to be used otherwise returns 0.
void | setActiveLod (int lod)
| Sets the lod to be used for rendering.
int | activeLod () const
| Returns the lod to be used for rendering.

## Protected Attributes

ref< ShaderSequence > | mLODShaders [VL_MAX_EFFECT_LOD]
ref< LODEvaluator > | mLODEvaluator
int | mActiveLod
int | mRenderRank
unsigned int | mEnableMask

## Detailed Description

Defines the sequence of Shader objects used to render an Actor.

Typically an Effect will have only one LOD (level of detail) with 1 pass (i.e. 1 Shader) but you can specify multiple LODs each of which defines its own set of Shader[s].

When a LOD has more than one Shader the Actor is rendered several times, once for each Shader. This technique is called multipass rendering.

The LOD to be used during the rendering is defined at rendering time if a LODEvaluator has been installed using the method setLODEvaluator(), otherwise the LOD #0 is selected.

See also:
  Shader, Actor, LODEvaluator, ShaderSequence

Definition at line 90 of file Effect.hpp.

## Constructor & Destructor Documentation

vl::Effect::Effect | ( | ) | `[inline]`

Constructor.

Definition at line 100 of file Effect.hpp.

References VL_DEBUG_SET_OBJECT_NAME.

## Member Function Documentation

virtual const char* vl::Effect::className | ( | ) | `[inline, virtual]`

Returns the name of the class.

Reimplemented from vl::Object.

Definition at line 97 of file Effect.hpp.

void vl::Effect::setRenderRank | ( | int | rank ) | `[inline]`

Modifies the rendering rank of an Actor.

The rendering rank affects the order in which an Actor is rendered, the greater the rank the later the Actor is rendered. The default render rank is zero.

To know more about rendering order please see Rendering Order.

See also:
  Actor::setRenderRank(), Actor::setRenderBlock()

Definition at line 115 of file Effect.hpp.

int vl::Effect::renderRank | ( | ) | const`[inline]`

Returns the rendering rank of an Effect.

Definition at line 118 of file Effect.hpp.

Referenced by vl::Rendering::fillRenderQueue().

const ref<ShaderSequence>& vl::Effect::lod | ( | int | lod_level ) | const`[inline]`

Returns the ShaderSequence representing the specified LOD level.

Note:
  It must be: 0 <= `lod_level` < VL_MAX_EFFECT_LOD.

Definition at line 122 of file Effect.hpp.

Referenced by vl::Rendering::fillRenderQueue().

ref<ShaderSequence>& vl::Effect::lod | ( | int | lod_level ) | `[inline]`

Returns the ShaderSequence representing the specified LOD level.

Note:
  It must be: 0 <= `lod_level` < VL_MAX_EFFECT_LOD.

Definition at line 126 of file Effect.hpp.

Shader* vl::Effect::shader | ( | int | lodi = `0`,
|  | int | pass = `0`
| ) |  | `[inline]`

Utility function, same as `'lod`(lodi)->at(pass);'.

Definition at line 129 of file Effect.hpp.

const Shader* vl::Effect::shader | ( | int | lodi = `0`,
|  | int | pass = `0`
| ) |  | const`[inline]`

Utility function, same as `'lod`(lodi)->at(pass);'.

Definition at line 132 of file Effect.hpp.

void vl::Effect::setLOD | ( | int | lodi,
|  | Shader * | shader1,
|  | Shader * | shader2 = `NULL`,
|  | Shader * | shader3 = `NULL`,
|  | Shader * | shader4 = `NULL`
| ) |  | `[inline]`

Utility function, same as `'lod`(lodi) = new ShaderSequence(shader1,shader2,shader3,shader4);'.

Definition at line 135 of file Effect.hpp.

References VL_CHECK, and VL_MAX_EFFECT_LOD.

void vl::Effect::setLODEvaluator | ( | LODEvaluator * | lod_evaluator ) | `[inline]`

Installs the LODEvaluator used to compute the current LOD at rendering time.

Definition at line 142 of file Effect.hpp.

LODEvaluator* vl::Effect::lodEvaluator | ( | ) | `[inline]`

Returns the installed LODEvaluator (if any) or NULL.

Definition at line 145 of file Effect.hpp.

const LODEvaluator* vl::Effect::lodEvaluator | ( | ) | const`[inline]`

Returns the installed LODEvaluator (if any) or NULL.

Definition at line 148 of file Effect.hpp.

void vl::Effect::setEnableMask | ( | unsigned int | mask ) | `[inline]`

The enable mask of an Actor's Effect defines whether the actor should be rendered or not depending on the Rendering::enableMask().

Definition at line 151 of file Effect.hpp.

unsigned int vl::Effect::enableMask | ( | ) | const`[inline]`

The enable mask of an Actor's Effect defines whether the actor should be rendered or not depending on the Rendering::enableMask().

Definition at line 154 of file Effect.hpp.

Referenced by vl::Rendering::fillRenderQueue().

int Effect::evaluateLOD | ( | Actor * | actor,
|  | Camera * | camera
| ) |  |

If a LODEvaluator is installed computes the effect LOD to be used otherwise returns 0.

Definition at line 44 of file Effect.cpp.

References mActiveLod, mLODEvaluator, VL_CHECK, and VL_MAX_EFFECT_LOD.

Referenced by vl::Rendering::fillRenderQueue().

void vl::Effect::setActiveLod | ( | int | lod ) | `[inline]`

Sets the lod to be used for rendering.

It must be: 0 <= lod < VL_MAX_EFFECT_LOD.

Definition at line 160 of file Effect.hpp.

References VL_CHECK, and VL_MAX_EFFECT_LOD.

int vl::Effect::activeLod | ( | ) | const`[inline]`

Returns the lod to be used for rendering.

Definition at line 168 of file Effect.hpp.

## Member Data Documentation

ref<ShaderSequence> vl::Effect::mLODShaders[VL_MAX_EFFECT_LOD]`[protected]`

Definition at line 171 of file Effect.hpp.

ref<LODEvaluator> vl::Effect::mLODEvaluator`[protected]`

Definition at line 172 of file Effect.hpp.

Referenced by evaluateLOD().

int vl::Effect::mActiveLod`[protected]`

Definition at line 173 of file Effect.hpp.

Referenced by evaluateLOD().

int vl::Effect::mRenderRank`[protected]`

Definition at line 174 of file Effect.hpp.

unsigned int vl::Effect::mEnableMask`[protected]`

Definition at line 175 of file Effect.hpp.

The documentation for this class was generated from the following files:

- D:/VL/BuildSystem/VL_DISTRO/Visualization_Library_SDK/src/vlGraphics/Effect.hpp
- D:/VL/BuildSystem/VL_DISTRO/Visualization_Library_SDK/src/vlGraphics/Effect.cpp

Visualization Library v2011.05.1142 Reference Documentation
Copyright 2005-2011 Michele Bosi. All rights reserved.
Updated on Thu May 26 2011 22:51:40.
Permission is granted to use this page to write and publish articles regarding Visualization Library.