Public Types | Public Member Functions | Static Public Member Functions | Static Public Attributes | Static Private Attributes
Ogre::ShadowVolumeExtrudeProgram Class Reference

Static class containing source for vertex programs for extruding shadow volumes. More...

#include <OgreShadowVolumeExtrudeProgram.h>

Inheritance diagram for Ogre::ShadowVolumeExtrudeProgram:
Inheritance graph
[legend]

List of all members.

Public Types

enum  Programs {
  POINT_LIGHT = 0, POINT_LIGHT_DEBUG = 1, DIRECTIONAL_LIGHT = 2, DIRECTIONAL_LIGHT_DEBUG = 3,
  POINT_LIGHT_FINITE = 4, POINT_LIGHT_FINITE_DEBUG = 5, DIRECTIONAL_LIGHT_FINITE = 6, DIRECTIONAL_LIGHT_FINITE_DEBUG = 7
}

Public Member Functions

void operator delete (void *ptr)
void operator delete (void *ptr, void *)
void operator delete (void *ptr, const char *, int, const char *)
void operator delete[] (void *ptr)
void operator delete[] (void *ptr, const char *, int, const char *)
void * operator new (size_t sz, const char *file, int line, const char *func)
 operator new, with debug line info
void * operator new (size_t sz)
void * operator new (size_t sz, void *ptr)
 placement operator new
void * operator new[] (size_t sz, const char *file, int line, const char *func)
 array operator new, with debug line info
void * operator new[] (size_t sz)

Static Public Member Functions

static const StringgetDirectionalLightExtruderArbvp1 (void)
 Get extruder program source for directional lights, compatible with arbvp1.
static const StringgetDirectionalLightExtruderArbvp1Debug (void)
 Get extruder program source for debug directional lights, compatible with arbvp1.
static const StringgetDirectionalLightExtruderArbvp1Finite (void)
 Get FINITE extruder program source for directional lights, compatible with arbvp1.
static const StringgetDirectionalLightExtruderArbvp1FiniteDebug (void)
 Get FINITE extruder program source for debug directional lights, compatible with arbvp1.
static const StringgetDirectionalLightExtruderVs_1_1 (void)
 Get extruder program source for directional lights, compatible with vs_1_1.
static const StringgetDirectionalLightExtruderVs_1_1Debug (void)
 Get extruder program source for debug directional lights, compatible with vs_1_1.
static const StringgetDirectionalLightExtruderVs_1_1Finite (void)
 Get FINITE extruder program source for directional lights, compatible with vs_1_1.
static const StringgetDirectionalLightExtruderVs_1_1FiniteDebug (void)
 Get FINITE extruder program source for debug directional lights, compatible with vs_1_1.
static const StringgetDirectionalLightExtruderVs_4_0 (void)
 Get extruder program source for directional lights, compatible with vs_4_0.
static const StringgetDirectionalLightExtruderVs_4_0Debug (void)
 Get extruder program source for debug directional lights, compatible with vs_4_0.
static const StringgetDirectionalLightExtruderVs_4_0Finite (void)
 Get FINITE extruder program source for directional lights, compatible with vs_4_0.
static const StringgetDirectionalLightExtruderVs_4_0FiniteDebug (void)
 Get FINITE extruder program source for debug directional lights, compatible with vs_4_0.
static const StringgetDirectionalLightExtruderVs_glsl (void)
 Get extruder program source for directional lights, compatible with glsl.
static const StringgetDirectionalLightExtruderVs_glslDebug (void)
 Get extruder program source for debug directional lights, compatible with glsl.
static const StringgetDirectionalLightExtruderVs_glsles (void)
 Get extruder program source for directional lights, compatible with glsles.
static const StringgetDirectionalLightExtruderVs_glslesDebug (void)
 Get extruder program source for debug directional lights, compatible with glsles.
static const StringgetDirectionalLightExtruderVs_glslesFinite (void)
 Get FINITE extruder program source for directional lights, compatible with glsles.
static const StringgetDirectionalLightExtruderVs_glslesFiniteDebug (void)
 Get FINITE extruder program source for debug directional lights, compatible with glsles.
static const StringgetDirectionalLightExtruderVs_glslFinite (void)
 Get FINITE extruder program source for directional lights, compatible with glsl.
static const StringgetDirectionalLightExtruderVs_glslFiniteDebug (void)
 Get FINITE extruder program source for debug directional lights, compatible with glsl.
static const StringgetPointLightExtruderArbvp1 (void)
 Get extruder program source for point lights, compatible with arbvp1.
static const StringgetPointLightExtruderArbvp1Debug (void)
 Get extruder program source for debug point lights, compatible with arbvp1.
static const StringgetPointLightExtruderArbvp1Finite (void)
 Get FINITE extruder program source for point lights, compatible with arbvp1.
static const StringgetPointLightExtruderArbvp1FiniteDebug (void)
 Get FINITE extruder program source for debug point lights, compatible with arbvp1.
static const StringgetPointLightExtruderVs_1_1 (void)
 Get extruder program source for point lights, compatible with vs_1_1.
static const StringgetPointLightExtruderVs_1_1Debug (void)
 Get extruder program source for debug point lights, compatible with vs_1_1.
static const StringgetPointLightExtruderVs_1_1Finite (void)
 Get FINITE extruder program source for point lights, compatible with vs_1_1.
static const StringgetPointLightExtruderVs_1_1FiniteDebug (void)
 Get extruder program source for debug point lights, compatible with vs_1_1.
static const StringgetPointLightExtruderVs_4_0 (void)
 Get extruder program source for point lights, compatible with vs_4_0.
static const StringgetPointLightExtruderVs_4_0Debug (void)
 Get extruder program source for debug point lights, compatible with vs_4_0.
static const StringgetPointLightExtruderVs_4_0Finite (void)
 Get FINITE extruder program source for point lights, compatible with vs_4_0.
static const StringgetPointLightExtruderVs_4_0FiniteDebug (void)
 Get extruder program source for debug point lights, compatible with vs_4_0.
static const StringgetPointLightExtruderVs_glsl (void)
 Get extruder program source for point lights, compatible with glsl.
static const StringgetPointLightExtruderVs_glslDebug (void)
 Get extruder program source for debug point lights, compatible with glsl.
static const StringgetPointLightExtruderVs_glsles (void)
 Get extruder program source for point lights, compatible with glsles.
static const StringgetPointLightExtruderVs_glslesDebug (void)
 Get extruder program source for debug point lights, compatible with glsles.
static const StringgetPointLightExtruderVs_glslesFinite (void)
 Get FINITE extruder program source for point lights, compatible with glsles.
static const StringgetPointLightExtruderVs_glslesFiniteDebug (void)
 Get extruder program source for debug point lights, compatible with glsles.
static const StringgetPointLightExtruderVs_glslFinite (void)
 Get FINITE extruder program source for point lights, compatible with glsl.
static const StringgetPointLightExtruderVs_glslFiniteDebug (void)
 Get extruder program source for debug point lights, compatible with glsl.
static const StringgetProgramName (Light::LightTypes lightType, bool finite, bool debug)
static const StringgetProgramSource (Light::LightTypes lightType, const String syntax, bool finite, bool debug)
 General purpose method to get any of the program sources.
static void initialise (void)
 Initialise the creation of these vertex programs.
static void shutdown (void)
 Shutdown & destroy the vertex programs.

Static Public Attributes

static String frgProgramName
static const String programNames [OGRE_NUM_SHADOW_EXTRUDER_PROGRAMS]

Static Private Attributes

static String mDirArbvp1
static String mDirArbvp1Debug
static String mDirArbvp1Finite
static String mDirArbvp1FiniteDebug
static String mDirVs_1_1
static String mDirVs_1_1Debug
static String mDirVs_1_1Finite
static String mDirVs_1_1FiniteDebug
static String mDirVs_4_0
static String mDirVs_4_0Debug
static String mDirVs_4_0Finite
static String mDirVs_4_0FiniteDebug
static String mDirVs_glsl
static String mDirVs_glslDebug
static String mDirVs_glsles
static String mDirVs_glslesDebug
static String mDirVs_glslesFinite
static String mDirVs_glslesFiniteDebug
static String mDirVs_glslFinite
static String mDirVs_glslFiniteDebug
static String mGeneralFs_4_0
static String mGeneralFs_glsl
static String mGeneralFs_glsles
static bool mInitialised
static String mPointArbvp1
static String mPointArbvp1Debug
static String mPointArbvp1Finite
static String mPointArbvp1FiniteDebug
static String mPointVs_1_1
static String mPointVs_1_1Debug
static String mPointVs_1_1Finite
static String mPointVs_1_1FiniteDebug
static String mPointVs_4_0
static String mPointVs_4_0Debug
static String mPointVs_4_0Finite
static String mPointVs_4_0FiniteDebug
static String mPointVs_glsl
static String mPointVs_glslDebug
static String mPointVs_glsles
static String mPointVs_glslesDebug
static String mPointVs_glslesFinite
static String mPointVs_glslesFiniteDebug
static String mPointVs_glslFinite
static String mPointVs_glslFiniteDebug

Detailed Description

Static class containing source for vertex programs for extruding shadow volumes.

Remarks:
This exists so we don't have to be dependent on an external media files. Assembler is used so we don't have to rely on particular plugins. The assembler contents of this file were generated from the following Cg:
        // Point light shadow volume extrude
        void shadowVolumeExtrudePointLight_vp (
            float4 position         : POSITION,
            float  wcoord           : TEXCOORD0,

            out float4 oPosition    : POSITION,

            uniform float4x4 worldViewProjMatrix,
            uniform float4   lightPos // homogeneous, object space
            )
        {
            // extrusion in object space
            // vertex unmodified if w==1, extruded if w==0
            float4 newpos = 
                (wcoord.xxxx * lightPos) + 
                float4(position.xyz - lightPos.xyz, 0);

            oPosition = mul(worldViewProjMatrix, newpos);

        }

        // Directional light extrude
        void shadowVolumeExtrudeDirLight_vp (
            float4 position         : POSITION,
            float  wcoord           : TEXCOORD0,

            out float4 oPosition    : POSITION,

            uniform float4x4 worldViewProjMatrix,
            uniform float4   lightPos // homogenous, object space
            )
        {
            // extrusion in object space
            // vertex unmodified if w==1, extruded if w==0
            float4 newpos = 
                (wcoord.xxxx * (position + lightPos)) - lightPos;

            oPosition = mul(worldViewProjMatrix, newpos);

        }
        // Point light shadow volume extrude - FINITE
        void shadowVolumeExtrudePointLightFinite_vp (
            float4 position         : POSITION,
            float  wcoord           : TEXCOORD0,

            out float4 oPosition    : POSITION,

            uniform float4x4 worldViewProjMatrix,
            uniform float4   lightPos, // homogeneous, object space
            uniform float    extrusionDistance // how far to extrude
            )
        {
            // extrusion in object space
            // vertex unmodified if w==1, extruded if w==0
            float3 extrusionDir = position.xyz - lightPos.xyz;
            extrusionDir = normalize(extrusionDir);
            
            float4 newpos = float4(position.xyz +  
                ((1 - wcoord.x) * extrusionDistance * extrusionDir), 1);

            oPosition = mul(worldViewProjMatrix, newpos);

        }

        // Directional light extrude - FINITE
        void shadowVolumeExtrudeDirLightFinite_vp (
            float4 position         : POSITION,
            float  wcoord           : TEXCOORD0,

            out float4 oPosition    : POSITION,

            uniform float4x4 worldViewProjMatrix,
            uniform float4   lightPos, // homogeneous, object space
            uniform float    extrusionDistance // how far to extrude
            )
        {
            // extrusion in object space
            // vertex unmodified if w==1, extruded if w==0
            // -ve lightPos is direction
            float4 newpos = float4(position.xyz - 
                (wcoord.x * extrusionDistance * lightPos.xyz), 1);

            oPosition = mul(worldViewProjMatrix, newpos);

        }       

Definition at line 136 of file OgreShadowVolumeExtrudeProgram.h.


Member Enumeration Documentation

Enumerator:
POINT_LIGHT 
POINT_LIGHT_DEBUG 
DIRECTIONAL_LIGHT 
DIRECTIONAL_LIGHT_DEBUG 
POINT_LIGHT_FINITE 
POINT_LIGHT_FINITE_DEBUG 
DIRECTIONAL_LIGHT_FINITE 
DIRECTIONAL_LIGHT_FINITE_DEBUG 

Definition at line 191 of file OgreShadowVolumeExtrudeProgram.h.


Member Function Documentation

Get extruder program source for directional lights, compatible with arbvp1.

Definition at line 229 of file OgreShadowVolumeExtrudeProgram.h.

Get extruder program source for debug directional lights, compatible with arbvp1.

Definition at line 250 of file OgreShadowVolumeExtrudeProgram.h.

Get FINITE extruder program source for directional lights, compatible with arbvp1.

Definition at line 277 of file OgreShadowVolumeExtrudeProgram.h.

Get FINITE extruder program source for debug directional lights, compatible with arbvp1.

Definition at line 298 of file OgreShadowVolumeExtrudeProgram.h.

Get extruder program source for directional lights, compatible with vs_1_1.

Definition at line 231 of file OgreShadowVolumeExtrudeProgram.h.

Get extruder program source for debug directional lights, compatible with vs_1_1.

Definition at line 252 of file OgreShadowVolumeExtrudeProgram.h.

Get FINITE extruder program source for directional lights, compatible with vs_1_1.

Definition at line 279 of file OgreShadowVolumeExtrudeProgram.h.

Get FINITE extruder program source for debug directional lights, compatible with vs_1_1.

Definition at line 300 of file OgreShadowVolumeExtrudeProgram.h.

Get extruder program source for directional lights, compatible with vs_4_0.

Definition at line 233 of file OgreShadowVolumeExtrudeProgram.h.

Get extruder program source for debug directional lights, compatible with vs_4_0.

Definition at line 254 of file OgreShadowVolumeExtrudeProgram.h.

Get FINITE extruder program source for directional lights, compatible with vs_4_0.

Definition at line 281 of file OgreShadowVolumeExtrudeProgram.h.

Get FINITE extruder program source for debug directional lights, compatible with vs_4_0.

Definition at line 302 of file OgreShadowVolumeExtrudeProgram.h.

Get extruder program source for directional lights, compatible with glsl.

Definition at line 235 of file OgreShadowVolumeExtrudeProgram.h.

Get extruder program source for debug directional lights, compatible with glsl.

Definition at line 256 of file OgreShadowVolumeExtrudeProgram.h.

Get extruder program source for directional lights, compatible with glsles.

Definition at line 237 of file OgreShadowVolumeExtrudeProgram.h.

Get extruder program source for debug directional lights, compatible with glsles.

Definition at line 258 of file OgreShadowVolumeExtrudeProgram.h.

Get FINITE extruder program source for directional lights, compatible with glsles.

Definition at line 285 of file OgreShadowVolumeExtrudeProgram.h.

Get FINITE extruder program source for debug directional lights, compatible with glsles.

Definition at line 306 of file OgreShadowVolumeExtrudeProgram.h.

Get FINITE extruder program source for directional lights, compatible with glsl.

Definition at line 283 of file OgreShadowVolumeExtrudeProgram.h.

Get FINITE extruder program source for debug directional lights, compatible with glsl.

Definition at line 304 of file OgreShadowVolumeExtrudeProgram.h.

Get extruder program source for point lights, compatible with arbvp1.

Definition at line 219 of file OgreShadowVolumeExtrudeProgram.h.

Get extruder program source for debug point lights, compatible with arbvp1.

Definition at line 240 of file OgreShadowVolumeExtrudeProgram.h.

Get FINITE extruder program source for point lights, compatible with arbvp1.

Definition at line 267 of file OgreShadowVolumeExtrudeProgram.h.

Get FINITE extruder program source for debug point lights, compatible with arbvp1.

Definition at line 288 of file OgreShadowVolumeExtrudeProgram.h.

Get extruder program source for point lights, compatible with vs_1_1.

Definition at line 221 of file OgreShadowVolumeExtrudeProgram.h.

Get extruder program source for debug point lights, compatible with vs_1_1.

Definition at line 242 of file OgreShadowVolumeExtrudeProgram.h.

Get FINITE extruder program source for point lights, compatible with vs_1_1.

Definition at line 269 of file OgreShadowVolumeExtrudeProgram.h.

Get extruder program source for debug point lights, compatible with vs_1_1.

Definition at line 290 of file OgreShadowVolumeExtrudeProgram.h.

Get extruder program source for point lights, compatible with vs_4_0.

Definition at line 223 of file OgreShadowVolumeExtrudeProgram.h.

Get extruder program source for debug point lights, compatible with vs_4_0.

Definition at line 244 of file OgreShadowVolumeExtrudeProgram.h.

Get FINITE extruder program source for point lights, compatible with vs_4_0.

Definition at line 271 of file OgreShadowVolumeExtrudeProgram.h.

Get extruder program source for debug point lights, compatible with vs_4_0.

Definition at line 292 of file OgreShadowVolumeExtrudeProgram.h.

Get extruder program source for point lights, compatible with glsl.

Definition at line 225 of file OgreShadowVolumeExtrudeProgram.h.

Get extruder program source for debug point lights, compatible with glsl.

Definition at line 246 of file OgreShadowVolumeExtrudeProgram.h.

Get extruder program source for point lights, compatible with glsles.

Definition at line 227 of file OgreShadowVolumeExtrudeProgram.h.

Get extruder program source for debug point lights, compatible with glsles.

Definition at line 248 of file OgreShadowVolumeExtrudeProgram.h.

Get FINITE extruder program source for point lights, compatible with glsles.

Definition at line 275 of file OgreShadowVolumeExtrudeProgram.h.

Get extruder program source for debug point lights, compatible with glsles.

Definition at line 296 of file OgreShadowVolumeExtrudeProgram.h.

Get FINITE extruder program source for point lights, compatible with glsl.

Definition at line 273 of file OgreShadowVolumeExtrudeProgram.h.

Get extruder program source for debug point lights, compatible with glsl.

Definition at line 294 of file OgreShadowVolumeExtrudeProgram.h.

static const String& Ogre::ShadowVolumeExtrudeProgram::getProgramName ( Light::LightTypes  lightType,
bool  finite,
bool  debug 
) [static]
static const String& Ogre::ShadowVolumeExtrudeProgram::getProgramSource ( Light::LightTypes  lightType,
const String  syntax,
bool  finite,
bool  debug 
) [static]

General purpose method to get any of the program sources.

static void Ogre::ShadowVolumeExtrudeProgram::initialise ( void  ) [static]

Initialise the creation of these vertex programs.

template<class Alloc >
void Ogre::AllocatedObject< Alloc >::operator delete ( void *  ptr) [inherited]

Definition at line 96 of file OgreMemoryAllocatedObject.h.

template<class Alloc >
void Ogre::AllocatedObject< Alloc >::operator delete ( void *  ptr,
void *   
) [inherited]

Definition at line 102 of file OgreMemoryAllocatedObject.h.

template<class Alloc >
void Ogre::AllocatedObject< Alloc >::operator delete ( void *  ptr,
const char *  ,
int  ,
const char *   
) [inherited]

Definition at line 108 of file OgreMemoryAllocatedObject.h.

template<class Alloc >
void Ogre::AllocatedObject< Alloc >::operator delete[] ( void *  ptr) [inherited]

Definition at line 113 of file OgreMemoryAllocatedObject.h.

template<class Alloc >
void Ogre::AllocatedObject< Alloc >::operator delete[] ( void *  ptr,
const char *  ,
int  ,
const char *   
) [inherited]

Definition at line 119 of file OgreMemoryAllocatedObject.h.

template<class Alloc >
void* Ogre::AllocatedObject< Alloc >::operator new ( size_t  sz,
const char *  file,
int  line,
const char *  func 
) [inherited]

operator new, with debug line info

Definition at line 68 of file OgreMemoryAllocatedObject.h.

template<class Alloc >
void* Ogre::AllocatedObject< Alloc >::operator new ( size_t  sz) [inherited]

Definition at line 73 of file OgreMemoryAllocatedObject.h.

template<class Alloc >
void* Ogre::AllocatedObject< Alloc >::operator new ( size_t  sz,
void *  ptr 
) [inherited]

placement operator new

Definition at line 79 of file OgreMemoryAllocatedObject.h.

template<class Alloc >
void* Ogre::AllocatedObject< Alloc >::operator new[] ( size_t  sz,
const char *  file,
int  line,
const char *  func 
) [inherited]

array operator new, with debug line info

Definition at line 86 of file OgreMemoryAllocatedObject.h.

template<class Alloc >
void* Ogre::AllocatedObject< Alloc >::operator new[] ( size_t  sz) [inherited]

Definition at line 91 of file OgreMemoryAllocatedObject.h.

static void Ogre::ShadowVolumeExtrudeProgram::shutdown ( void  ) [static]

Shutdown & destroy the vertex programs.


Member Data Documentation

Definition at line 212 of file OgreShadowVolumeExtrudeProgram.h.

Definition at line 144 of file OgreShadowVolumeExtrudeProgram.h.

Definition at line 155 of file OgreShadowVolumeExtrudeProgram.h.

Definition at line 166 of file OgreShadowVolumeExtrudeProgram.h.

Definition at line 177 of file OgreShadowVolumeExtrudeProgram.h.

Definition at line 145 of file OgreShadowVolumeExtrudeProgram.h.

Definition at line 156 of file OgreShadowVolumeExtrudeProgram.h.

Definition at line 167 of file OgreShadowVolumeExtrudeProgram.h.

Definition at line 178 of file OgreShadowVolumeExtrudeProgram.h.

Definition at line 146 of file OgreShadowVolumeExtrudeProgram.h.

Definition at line 157 of file OgreShadowVolumeExtrudeProgram.h.

Definition at line 168 of file OgreShadowVolumeExtrudeProgram.h.

Definition at line 179 of file OgreShadowVolumeExtrudeProgram.h.

Definition at line 147 of file OgreShadowVolumeExtrudeProgram.h.

Definition at line 158 of file OgreShadowVolumeExtrudeProgram.h.

Definition at line 148 of file OgreShadowVolumeExtrudeProgram.h.

Definition at line 159 of file OgreShadowVolumeExtrudeProgram.h.

Definition at line 170 of file OgreShadowVolumeExtrudeProgram.h.

Definition at line 181 of file OgreShadowVolumeExtrudeProgram.h.

Definition at line 169 of file OgreShadowVolumeExtrudeProgram.h.

Definition at line 180 of file OgreShadowVolumeExtrudeProgram.h.

Definition at line 183 of file OgreShadowVolumeExtrudeProgram.h.

Definition at line 184 of file OgreShadowVolumeExtrudeProgram.h.

Definition at line 185 of file OgreShadowVolumeExtrudeProgram.h.

Definition at line 187 of file OgreShadowVolumeExtrudeProgram.h.

Definition at line 139 of file OgreShadowVolumeExtrudeProgram.h.

Definition at line 150 of file OgreShadowVolumeExtrudeProgram.h.

Definition at line 161 of file OgreShadowVolumeExtrudeProgram.h.

Definition at line 172 of file OgreShadowVolumeExtrudeProgram.h.

Definition at line 140 of file OgreShadowVolumeExtrudeProgram.h.

Definition at line 151 of file OgreShadowVolumeExtrudeProgram.h.

Definition at line 162 of file OgreShadowVolumeExtrudeProgram.h.

Definition at line 173 of file OgreShadowVolumeExtrudeProgram.h.

Definition at line 141 of file OgreShadowVolumeExtrudeProgram.h.

Definition at line 152 of file OgreShadowVolumeExtrudeProgram.h.

Definition at line 163 of file OgreShadowVolumeExtrudeProgram.h.

Definition at line 174 of file OgreShadowVolumeExtrudeProgram.h.

Definition at line 142 of file OgreShadowVolumeExtrudeProgram.h.

Definition at line 153 of file OgreShadowVolumeExtrudeProgram.h.

Definition at line 143 of file OgreShadowVolumeExtrudeProgram.h.

Definition at line 154 of file OgreShadowVolumeExtrudeProgram.h.

Definition at line 165 of file OgreShadowVolumeExtrudeProgram.h.

Definition at line 176 of file OgreShadowVolumeExtrudeProgram.h.

Definition at line 164 of file OgreShadowVolumeExtrudeProgram.h.

Definition at line 175 of file OgreShadowVolumeExtrudeProgram.h.

Definition at line 211 of file OgreShadowVolumeExtrudeProgram.h.


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

Copyright © 2012 Torus Knot Software Ltd
Creative Commons License
This work is licensed under a Creative Commons Attribution-ShareAlike 3.0 Unported License.
Last modified Mon Jul 27 2020 13:41:37