Panda3D
|
The ShaderGenerator is a device that effectively replaces the classic fixed function pipeline with a 'next-gen' fixed function pipeline. More...
#include <pandadoc.hpp>
Public Member Functions | |
__init__ (const GraphicsStateGuardianBase gsg) | |
Create a ShaderGenerator. More... | |
__init__ (const ShaderGenerator) | |
clearGeneratedShaders () | |
Removes all previously generated shaders, requiring all shaders to be regenerated. More... | |
rehashGeneratedShaders () | |
Rehashes all the states with generated shaders, removing the ones that are no longer fresh. More... | |
const ShaderAttrib | synthesizeShader (const RenderState rs, const GeomVertexAnimationSpec anim) |
This is the routine that implements the next-gen fixed function pipeline by synthesizing a shader. More... | |
![]() | |
TypeHandle | getType () |
int | getTypeIndex () |
Returns the internal index number associated with this object's TypeHandle, a unique number for each different type. More... | |
bool | isExactType (TypeHandle handle) |
Returns true if the current object is the indicated type exactly. More... | |
bool | isOfType (TypeHandle handle) |
Returns true if the current object is or derives from the indicated type. More... | |
![]() | |
int | getRefCount () |
Returns the current reference count. More... | |
ref () | |
Explicitly increments the reference count. More... | |
bool | testRefCountIntegrity () |
Does some easy checks to make sure that the reference count isn't completely bogus. More... | |
bool | testRefCountNonzero () |
Does some easy checks to make sure that the reference count isn't zero, or completely bogus. More... | |
bool | unref () |
Explicitly decrements the reference count. More... | |
Static Public Member Functions | |
static TypeHandle | getClassType () |
![]() | |
static TypeHandle | getClassType () |
![]() | |
static TypeHandle | getClassType () |
![]() | |
static TypeHandle | getClassType () |
Additional Inherited Members | |
![]() | |
TypeHandle | type |
Returns the TypeHandle representing this object's type. More... | |
![]() | |
int | ref_count |
The current reference count. More... | |
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!
__init__ | ( | const GraphicsStateGuardianBase | gsg | ) |
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.
__init__ | ( | const | ShaderGenerator | ) |
clearGeneratedShaders | ( | ) |
Removes all previously generated shaders, requiring all shaders to be regenerated.
Does not clear cache of compiled shaders.
|
static |
rehashGeneratedShaders | ( | ) |
Rehashes all the states with generated shaders, removing the ones that are no longer fresh.
Call this if certain state has changed in such a way as to require a rerun of the shader generator. This should be rare because in most cases, the shader generator will automatically regenerate shaders as necessary.
const ShaderAttrib synthesizeShader | ( | const RenderState | rs, |
const GeomVertexAnimationSpec | anim | ||
) |
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:
Potential optimizations