fbshader.h File Reference

Declaration for the classes FBShaderManager, FBShader, FBPropertyListShader and other subclasses. More...

#include <kaydaradef.h>
#include <fbsdk/fbcomponent.h>
#include <fbsdk/fbcore.h>

Go to the source code of this file.

Classes

class   FBShaderManager
  Shader manager. More...
class   FBShaderModelInfo
class   FBRenderOptions
class   FBShader
  Shader class. More...
class   FBPropertyListShader
  PropertyList: Shader More...
class   FBShaderLighted
  Lighted shader class. More...
class   FBShaderShadowLive
  Shader Shadow Live class. More...

Defines

#define  FBSDK_DLL   K_DLLIMPORT
  Be sure that FBSDK_DLL is defined only once...
#define  FBRegisterShader(UniqueNameStr, ClassName, Label, Description, IconFilename)
  Shader class registration.
#define  FBShaderDeclare(ClassName, Parent)
  Shader class declaration.
#define  FBShaderImplementation(ThisComponent)   FBClassImplementation( ThisComponent )
  Shader class implementation.

Enumerations

enum   FBRenderingPass {
  kFBPassInvalid = 0, kFBPassPreRender = 1 << 0, kFBPassFlat = 1 << 1, kFBPassLighted = 1 << 2,
  kFBPassMatte = 1 << 3, kFBPassZTranslucent = 1 << 4, kFBPassZTranslucentAlphaTest = 1 << 5, kFBPassTranslucent = 1 << 6,
  kFBPassAddColor = 1 << 7, kFBPassTranslucentZSort = 1 << 8, kFBPassPostRender = 1 << 9
}
 

Rendering Pass.

More...
enum   FBAlphaSource {
  kFBAlphaSourceNoAlpha, kFBAlphaSourceAccurateAlpha, kFBAlphaSourceTransluscentAlpha, kFBAlphaSourceMatteAlpha,
  kFBAlphaSource2DTransparency, kFBAlphaSourceAdditiveAlpha, kFBAlphaSourceTransluscentZSortAlpha
}
 

Shader transparency computation.

More...
enum   FBShadowType {
  kFBShadowTypeShadowPlanar, kFBShadowTypeShadowProjectiveTexture, kFBShadowTypeLightMapProjectiveTexture, kFBShadowTypeZShadowProjectiveTexture,
  kFBShadowTypeZLightMapProjectiveTexture
}
 

Shadow types.

More...
enum   FBShadowFrameType { kFBShadowFrameTypeShadowReceiver, kFBShadowFrameTypeShadowCaster, kFBShadowFrameTypeShadowCubeMap }
 

Shadow calculation methods.

More...

Functions

  K_FORWARD (KRenderOptions)
  K_FORWARD (KModelRenderInfo)
  K_FORWARD (IGraphicPrimitives)
  FB_FORWARD (FBShaderManager)
  FB_FORWARD (FBShader)
  FB_FORWARD (FBShaderModelInfo)
  FB_FORWARD (FBRenderOptions)
  FBRenderOptions.
  FB_DEFINE_ENUM (FBSDK_DLL, RenderingPass)
  FB_FORWARD (FBRenderer)
  __FB_FORWARD (FBShader)
  FB_DEFINE_COMPONENT (FBSDK_DLL, Shader)
  FB_DEFINE_LIST (FBSDK_DLL, Shader)
  FB_FORWARD (FBShaderLighted)
  FB_DEFINE_COMPONENT (FBSDK_DLL, ShaderLighted)
  FB_FORWARD (FBShaderShadowLive)
  FB_DEFINE_COMPONENT (FBSDK_DLL, ShaderShadowLive)
  FB_DEFINE_ENUM (FBSDK_DLL, ShadowType)
  FB_DEFINE_ENUM (FBSDK_DLL, ShadowFrameType)

Detailed Description

Declaration for the classes FBShaderManager, FBShader, FBPropertyListShader and other subclasses.

Definition in file fbshader.h.


Define Documentation

#define FBSDK_DLL   K_DLLIMPORT

Be sure that FBSDK_DLL is defined only once...

Definition at line 50 of file fbshader.h.

#define FBRegisterShader (   UniqueNameStr,
  ClassName,
  Label,
  Description,
  IconFilename 
)
Value:
HIObject RegisterShader##ClassName( HIObject /*pOwner*/,char * pName,void * /*pData*/) \
    { \
      ClassName *Class = new ClassName( pName ); \
        Class->UniqueName = UniqueNameStr; \
        Class->ShaderDescription = Description; \
        if (Class->FBCreate()) { \
            return Class->GetHIObject(); \
        } else { \
            delete Class; \
            return NULL; \
        } \
    } \
    FBLibraryModule( ClassName )    \
    {   \
        FBRegisterObject( ClassName##R1,"renderer/usershader/ogl",Label,Description,RegisterShader##ClassName,true, IconFilename ); \
        FBRegisterObject( ClassName##R2,"FbxStorable/Shader",UniqueNameStr,Description,RegisterShader##ClassName,true, IconFilename );  \
    }

Shader class registration.

Parameters:
UniqueNameStr Unique name.
ClassName Shader class name.
Label Short description.
Description Long description.
IconFilename Name of the file containing the icon.

Definition at line 71 of file fbshader.h.

#define FBShaderDeclare (   ClassName,
  Parent 
)
Value:
FBClassDeclare( ClassName,Parent); \
  public: \
    ClassName(char * pName):Parent(pName) { FBClassInit; } \
  private:

Shader class declaration.

Parameters:
ClassName Shader class name.
Parent Class parent.

Definition at line 94 of file fbshader.h.

#define FBShaderImplementation (   ThisComponent )    FBClassImplementation( ThisComponent )

Shader class implementation.

Parameters:
ThisComponent Class to implement.

Definition at line 103 of file fbshader.h.


Enumeration Type Documentation

Rendering Pass.

Use with FBShader::RenderingPass properties to make the shader be called at any pass. Passes will be called in the order of the enum.

Enumerator:
kFBPassInvalid 

No pass selected.

kFBPassPreRender 

Before anything.

kFBPassFlat 

Lighting off.

kFBPassLighted 

Lighting on.

kFBPassMatte 

Alpha > 0.5 will show up.

kFBPassZTranslucent 

Writes to depth buffer.

kFBPassZTranslucentAlphaTest 

Writes to depth buffer where Alpha > 0.5.

kFBPassTranslucent 

Models are blended.

kFBPassAddColor 

Models are blended additively.

kFBPassTranslucentZSort 

Models are sorted and blended.

kFBPassPostRender 

After everything.

Definition at line 346 of file fbshader.h.

Shader transparency computation.

There are different way to compute transparency, and this lists the supported options.

Enumerator:
kFBAlphaSourceNoAlpha 

No transparency.

kFBAlphaSourceAccurateAlpha 

Accurate Transparency.

kFBAlphaSourceTransluscentAlpha 

Translucent.

kFBAlphaSourceMatteAlpha 

Matte.

kFBAlphaSource2DTransparency 

2D Transparency.

kFBAlphaSourceAdditiveAlpha 

Additive Transparency.

kFBAlphaSourceTransluscentZSortAlpha 

Translucent(Models Z Sort).

Definition at line 364 of file fbshader.h.

Shadow types.

The different types of shadow mapping.

Enumerator:
kFBShadowTypeShadowPlanar 

Use this shadow type to create darkened shadow areas only on planar surfaces.

kFBShadowTypeShadowProjectiveTexture 

Uses a texture projection to create a shadow.

kFBShadowTypeLightMapProjectiveTexture 

Uses a texture projection as a shadow.

kFBShadowTypeZShadowProjectiveTexture 

Similar to the Projective Shadow, except that it uses a boolean algorithm to create a self-shadow.

kFBShadowTypeZLightMapProjectiveTexture 

Similar to the Projective Light Map except that it uses a boolean algorithm to create a self-shadow.

Definition at line 609 of file fbshader.h.

Shadow calculation methods.

Enumerator:
kFBShadowFrameTypeShadowReceiver 

Bases the shadow calculation on the shadow of the receiver.

kFBShadowFrameTypeShadowCaster 

Bases the shadow calculation on the shadow of the caster.

kFBShadowFrameTypeShadowCubeMap 

Undocumented or unsupported.

Definition at line 621 of file fbshader.h.


Function Documentation

K_FORWARD ( KRenderOptions  )
K_FORWARD ( KModelRenderInfo  )
K_FORWARD ( IGraphicPrimitives  )
FB_DEFINE_ENUM ( FBSDK_DLL  ,
RenderingPass   
)
FB_DEFINE_COMPONENT ( FBSDK_DLL  ,
Shader   
)
FB_DEFINE_LIST ( FBSDK_DLL  ,
Shader   
)
FB_DEFINE_COMPONENT ( FBSDK_DLL  ,
ShaderLighted   
)
FB_DEFINE_COMPONENT ( FBSDK_DLL  ,
ShaderShadowLive   
)
FB_DEFINE_ENUM ( FBSDK_DLL  ,
ShadowType   
)
FB_DEFINE_ENUM ( FBSDK_DLL  ,
ShadowFrameType   
)