Panda3D
Public Member Functions | Static Public Member Functions

ShaderGenerator Class Reference

The ShaderGenerator is a device that effectively replaces the classic fixed function pipeline with a 'next-gen' fixed function pipeline. More...

Inheritance diagram for ShaderGenerator:
TypedObject MemoryBase

List of all members.

Public Member Functions

 ShaderGenerator (GraphicsStateGuardianBase gsg, GraphicsOutputBase host)
 Create a ShaderGenerator.
TypeHandle getType ()
int getTypeIndex ()
 Returns the internal index number associated with this object's TypeHandle, a unique number for each different type.
bool isExactType (TypeHandle handle)
 Returns true if the current object is the indicated type exactly.
bool isOfType (TypeHandle handle)
 Returns true if the current object is or derives from the indicated type.
RenderAttrib const synthesizeShader (RenderState const rs)
 This is the routine that implements the next-gen fixed function pipeline by synthesizing a shader.

Static Public Member Functions

static TypeHandle getClassType ()

Detailed Description

The ShaderGenerator is a device that effectively replaces the classic fixed function pipeline with a 'next-gen' fixed function pipeline.

The next-gen fixed function pipeline supports features like normal mapping, gloss mapping, cartoon lighting, and so forth. It works by automatically generating a shader from a given RenderState.

Currently, there is one ShaderGenerator object per GraphicsStateGuardian. It is our intent that in time, people will write classes that derive from ShaderGenerator but which yield slightly different results.

The ShaderGenerator owes its existence to the 'Bamboo Team' at Carnegie Mellon's Entertainment Technology Center. This is a group of students who, as a semester project, decided that next-gen graphics should be accessible to everyone, even if they don't know shader programming. The group consisted of:

Aaron Lo, Programmer Heegun Lee, Programmer Erin Fernandez, Artist/Tester Joe Grubb, Artist/Tester Ivan Ortega, Technical Artist/Tester

Thanks to them!


Constructor & Destructor Documentation

Create a ShaderGenerator.

This has no state, except possibly to cache certain results. The parameter that must be passed is the GSG to which the shader generator belongs.


Member Function Documentation

static TypeHandle getClassType ( ) [static]

Reimplemented from TypedObject.

TypeHandle getType ( ) [inherited]

Reimplemented in AnimChannelBase.

int getTypeIndex ( ) [inherited]

Returns the internal index number associated with this object's TypeHandle, a unique number for each different type.

This is equivalent to get_type().get_index().

bool isExactType ( TypeHandle  handle) [inherited]

Returns true if the current object is the indicated type exactly.

bool isOfType ( TypeHandle  handle) [inherited]

Returns true if the current object is or derives from the indicated type.

RenderAttrib const synthesizeShader ( RenderState const  rs)

This is the routine that implements the next-gen fixed function pipeline by synthesizing a shader.

It also takes care of setting up any buffers needed to produce the requested effects.

Currently supports:

  • flat colors
  • vertex colors
  • lighting
  • normal maps, but not multiple
  • gloss maps, but not multiple
  • glow maps, but not multiple
  • materials, but not updates to materials
  • 2D textures
  • all texture stage modes, including combine modes
  • color scale attrib
  • light ramps (for cartoon shading)
  • shadow mapping
  • most texgen modes
  • texmatrix
  • 1D/2D/3D textures, cube textures

Not yet supported:

  • dot3_rgb and dot3_rgba combine modes
  • fog

Potential optimizations

  • omit attenuation calculations if attenuation off
 All Classes Namespaces Functions Variables Enumerations Enumerator Properties