ShaderGenerator
from panda3d.core import ShaderGenerator
- class ShaderGenerator
Bases:
TypedReferenceCount
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!
Inheritance diagram
- __init__(*args, **kwargs)
- clearGeneratedShaders()
C++ Interface: clear_generated_shaders(const ShaderGenerator self)
- /**
Removes all previously generated shaders, requiring all shaders to be
regenerated. Does not clear cache of compiled shaders.
@since 1.10.0
*/
- clear_generated_shaders()
C++ Interface: clear_generated_shaders(const ShaderGenerator self)
- /**
Removes all previously generated shaders, requiring all shaders to be
regenerated. Does not clear cache of compiled shaders.
@since 1.10.0
*/
- getClassType()
C++ Interface: get_class_type()
- get_class_type()
C++ Interface: get_class_type()
- rehashGeneratedShaders()
C++ Interface: rehash_generated_shaders(const ShaderGenerator self)
- /**
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.
@since 1.10.0
*/
- rehash_generated_shaders()
C++ Interface: rehash_generated_shaders(const ShaderGenerator self)
- /**
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.
@since 1.10.0
*/
- synthesizeShader()
C++ Interface: synthesize_shader(const ShaderGenerator self, 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:
flat colors
vertex colors
lighting
normal maps, even 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, 2D tex arrays
linear/exp/exp2 fog
animation
Potential optimizations
omit attenuation calculations if attenuation off
*/
- synthesize_shader()
C++ Interface: synthesize_shader(const ShaderGenerator self, 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:
flat colors
vertex colors
lighting
normal maps, even 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, 2D tex arrays
linear/exp/exp2 fog
animation
Potential optimizations
omit attenuation calculations if attenuation off
*/