panda3d.core.Shader

from panda3d.core import Shader
class Shader

Bases: TypedWritableReferenceCount

Inheritance diagram

Inheritance diagram of Shader

__init__(param0: Shader) → None
static load(file: Filename, lang: ShaderLanguage) → Shader

Loads the shader with the given filename.

Return type

Shader

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.

Return type

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.

Return type

Shader

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

Loads the shader, using the string as shader body.

Return type

Shader

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

Loads a compute shader.

Return type

Shader

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

Loads the compute shader from the given string.

Return type

Shader

getFilename(type: ShaderType) → Filename

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

Return type

Filename

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.

getText(type: ShaderType) → str

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

getErrorFlag() → bool

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.

getLanguage() → ShaderLanguage

Returns the shader language in which this shader was written.

Return type

ShaderLanguage

hasFullpath() → bool

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

getFullpath() → Filename

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

Return type

Filename

getCacheCompiledShader() → bool

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

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.

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.

Return type

AsyncFuture

isPrepared(prepared_objects: PreparedGraphicsObjects) → bool

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

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.

releaseAll() → int

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

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.

Return type

ShaderContext

static getClassType() → TypeHandle
Return type

TypeHandle

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
enum AutoShaderSwitch
enumerator AS_normal = 1
enumerator AS_glow = 2
enumerator AS_gloss = 4
enumerator AS_ramp = 8
enumerator AS_shadow = 16
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