pygfx.renderers.wgpu.BaseShader

class pygfx.renderers.wgpu.BaseShader(wobject, **kwargs)

Bases: ShaderInterface

Base shader object to compose and template shaders using jinja2.

Templating variables can be provided as kwargs, set (and get) as attributes, or passed as kwargs to generate_wgsl().

get_code()

Implement this to compose the total (but still templated) shader. This method is called by generate_wgsl().

generate_wgsl(**kwargs)

Generate the final WGSL. Calls get_code() and then resolves the templating variables, varyings, and depth output.

define_bindings(bindgroup, bindings_dict)

Define a collection of bindings organized in a dict.

define_binding(bindgroup, index, binding)

Define a uniform, buffer, sampler, or texture.

The binding must be a Binding object. The code that defines the binding will be inserted in pygfx.std.wgsl.

define_texcoords_and_colormap(texture, texcoords, interpolation='linear')

Define the given texture as the colormap to be used to lookup the final color from the (per-vertex or per-face) texcoords. In the WGSL the colormap can be sampled using sample_colormap(). Returns a list of bindings.

define_img_colormap(texture, interpolation='linear')

Define the given texture view as the colormap to be used to lookup the final color from the image data. In the WGSL the colormap can be sampled using sample_colormap(). Returns a list of bindings.

Examples

Minimal Custom Object

Minimal Custom Object

Depth Material

Depth Material

Simple Custom Object

Simple Custom Object

Wireframe Material

Wireframe Material

Custom Object

Custom Object

NDC Coordinates

NDC Coordinates