from panda3d.core import Shader
class Shader

Bases: TypedWritableReferenceCount

Inheritance diagram

Inheritance diagram of Shader

enum AutoShaderBit
enumerator bit_AutoShaderNormal = 0

bit for AS_normal

enumerator bit_AutoShaderGlow = 1

bit for AS_glow

enumerator bit_AutoShaderGloss = 2

bit for AS_gloss

enumerator bit_AutoShaderRamp = 3

bit for AS_ramp

enumerator bit_AutoShaderShadow = 4

bit for AS_shadow

enum AutoShaderSwitch
enumerator AS_normal = 1
enumerator AS_glow = 2
enumerator AS_gloss = 4
enumerator AS_ramp = 8
enumerator AS_shadow = 16
enum ShaderLanguage
enumerator SL_none = 0
enumerator SL_Cg = 1
enumerator SL_GLSL = 2
enumerator SL_HLSL = 3
enumerator SL_SPIR_V = 4
enum ShaderType
enumerator ST_none = 0
enumerator ST_vertex = 1
enumerator ST_fragment = 2
enumerator ST_geometry = 3
enumerator ST_tess_control = 4
enumerator ST_tess_evaluation = 5
enumerator ST_compute = 6
enumerator ST_COUNT = 7
__init__(param0: Shader)

Returns the setting of the cache_compiled_shader flag. See setCacheCompiledShader().

static getClassType()TypeHandle

Returns true if the shader contains a compile-time error. This doesn’t tell you whether or not the shader is supported on the current video card.

getFilename(type: ShaderType)Filename

Return the Shader’s filename for the given shader type.


Returns the fullpath that has been set. This is the full path to the file as it was found along the model-path.

getLanguage() → ShaderLanguage

Returns the shader language in which this shader was written.

getText(type: ShaderType)str

Return the Shader’s text for the given shader type.


Returns true if the fullpath has been set and is available. See set_fullpath().

isPrepared(prepared_objects: PreparedGraphicsObjects)bool

Returns true if the shader has already been prepared or enqueued for preparation on the indicated GSG, false otherwise.

static load(file: Filename, lang: ShaderLanguage)Shader

Loads the shader with the given filename.

static load(lang: ShaderLanguage, vertex: Filename, fragment: Filename, geometry: Filename, tess_control: Filename, tess_evaluation: Filename)Shader

This variant of Shader.load() loads all shader programs separately.

static loadCompute(lang: ShaderLanguage, fn: Filename)Shader

Loads a compute shader.

static make(lang: ShaderLanguage, vertex: str, fragment: str, geometry: str, tess_control: str, tess_evaluation: str)Shader

Loads the shader, using the strings as shader bodies.

static make(body: str, lang: ShaderLanguage)Shader

Loads the shader, using the string as shader body.

static makeCompute(lang: ShaderLanguage, body: str)Shader

Loads the compute shader from the given string.

prepare(prepared_objects: PreparedGraphicsObjects)AsyncFuture

Indicates that the shader should be enqueued to be prepared in the indicated prepared_objects at the beginning of the next frame. This will ensure the texture is already loaded into texture memory if it is expected to be rendered soon.

Use this function instead of prepareNow() to preload textures from a user interface standpoint.

prepareNow(prepared_objects: PreparedGraphicsObjects, gsg: GraphicsStateGuardianBase)ShaderContext

Creates a context for the shader on the particular GSG, if it does not already exist. Returns the new (or old) ShaderContext. This assumes that the GraphicsStateGuardian is the currently active rendering context and that it is ready to accept new textures. If this is not necessarily the case, you should use prepare() instead.

Normally, this is not called directly except by the GraphicsStateGuardian; a shader does not need to be explicitly prepared by the user before it may be rendered.

release(prepared_objects: PreparedGraphicsObjects)bool

Frees the texture context only on the indicated object, if it exists there. Returns true if it was released, false if it had not been prepared.


Frees the context allocated on all objects for which the texture has been declared. Returns the number of contexts which have been freed.

setCacheCompiledShader(flag: bool)None

Sets the cache_compiled_shader flag. When this is set, the next time the Shader is loaded on a GSG, it will automatically extract the compiled shader from the GSG and save it to the global BamCache.

This is used to store compiled shaders in the BamCache. This flag should not be set explicitly; it is set automatically by the ShaderPool when model-cache-compiled-shaders is set true.

setFilename(type: ShaderType, filename: Filename)None

Sets the Shader’s filename for the given shader type. Useful for associating a shader created with Shader.make with a name for diagnostics.