shaders

Read shader files.

add_shader_callback(actor, callback[, priority])

Add a shader callback to the actor.

attribute_to_actor(actor, arr, attr_name[, deep])

Link a numpy array with vertex attribute.

dirname(p)

Returns the directory component of a pathname

load(filename)

pjoin(a, *p)

Join two or more pathname components, inserting '/' as needed.

replace_shader_in_actor(actor, shader_type, code)

Set and Replace the shader template with a new one.

shader_apply_effects(window, actor, effects)

This applies a specific opengl state (effect) or a list of effects just before the actor's shader is executed.

shader_to_actor(actor, shader_type[, ...])

Apply your own substitutions to the shader creation process.

Module: shaders.base

Command

alias of vtkmodules.vtkCommonCore.vtkCommand

DataObject

alias of vtkmodules.vtkCommonDataModel.vtkDataObject

Shader

alias of vtkmodules.vtkRenderingOpenGL2.vtkShader

partial

partial(func, *args, **keywords) - new function with partial application of the given arguments and keywords.

add_shader_callback(actor, callback[, priority])

Add a shader callback to the actor.

attribute_to_actor(actor, arr, attr_name[, deep])

Link a numpy array with vertex attribute.

calldata_type(type)

set_call_data_type(type) -- convenience decorator to easily set the CallDataType attribute for python function used as observer callback.

enable_warnings([warnings_origin])

Enable global warnings.

replace_shader_in_actor(actor, shader_type, code)

Set and Replace the shader template with a new one.

shader_apply_effects(window, actor, effects)

This applies a specific opengl state (effect) or a list of effects just before the actor's shader is executed.

shader_to_actor(actor, shader_type[, ...])

Apply your own substitutions to the shader creation process.

add_shader_callback

fury.shaders.add_shader_callback(actor, callback, priority=0.0)[source]

Add a shader callback to the actor.

Parameters
  • actor (vtkActor) – Rendered Object

  • callback (callable) – function or class that contains 3 parameters: caller, event, calldata. This callback will be trigger at each UpdateShaderEvent event.

  • priority (float, optional) – Commands with a higher priority are called first.

Returns

id_observer – An unsigned Int tag which can be used later to remove the event or retrieve the vtkCommand used in the observer. See more at: https://vtk.org/doc/nightly/html/classvtkObject.html

Return type

int

Examples

add_shader_callback(actor, func_call1)
id_observer = add_shader_callback(actor, func_call2)
actor.GetMapper().RemoveObserver(id_observer)

Priority calls

test_values = []
def callbackLow(_caller, _event, calldata=None):
    program = calldata
    if program is not None:
        test_values.append(0)

def callbackHigh(_caller, _event, calldata=None):
    program = calldata
    if program is not None:
        test_values.append(999)

def callbackMean(_caller, _event, calldata=None):
    program = calldata
    if program is not None:
        test_values.append(500)

fs.add_shader_callback(
        actor, callbackHigh, 999)
fs.add_shader_callback(
        actor, callbackLow, 0)
id_mean = fs.add_shader_callback(
        actor, callbackMean, 500)

showm.start()
# test_values = [999, 500, 0, 999, 500, 0, ...]

attribute_to_actor

fury.shaders.attribute_to_actor(actor, arr, attr_name, deep=True)[source]

Link a numpy array with vertex attribute.

Parameters
  • actor (vtkActor) – Rendered Object

  • arr (ndarray) – array to link to vertices

  • attr_name (str) – vertex attribute name. the vtk array will take the same name as the attribute.

  • deep (bool, optional) – If True a deep copy is applied. Otherwise a shallow copy is applied, by default True

dirname

fury.shaders.dirname(p)[source]

Returns the directory component of a pathname

load

fury.shaders.load(filename)[source]

pjoin

fury.shaders.pjoin(a, *p)

Join two or more pathname components, inserting ‘/’ as needed. If any component is an absolute path, all previous path components will be discarded. An empty last part will result in a path that ends with a separator.

replace_shader_in_actor

fury.shaders.replace_shader_in_actor(actor, shader_type, code)[source]

Set and Replace the shader template with a new one.

Parameters
  • actor (vtkActor) – Object where you want to set the shader code.

  • shader_type (str) – Shader type: vertex, geometry, fragment

  • code (str) – new shader template code

shader_apply_effects

fury.shaders.shader_apply_effects(window, actor, effects, priority=0)[source]

This applies a specific opengl state (effect) or a list of effects just before the actor’s shader is executed.

Parameters
  • window (RenderWindow) – For example, this is provided by the ShowManager.window attribute.

  • actor (actor) –

  • effects (a function or a list of functions) –

  • priority (float, optional) – Related with the shader callback command. Effects with a higher priority are applied first and can be override by the others.

Returns

id_observer – An unsigned Int tag which can be used later to remove the event or retrieve the vtkCommand used in the observer. See more at: https://vtk.org/doc/nightly/html/classvtkObject.html

Return type

int

shader_to_actor

fury.shaders.shader_to_actor(actor, shader_type, impl_code='', decl_code='', block='valuepass', keep_default=True, replace_first=True, replace_all=False, debug=False)[source]

Apply your own substitutions to the shader creation process.

A bunch of string replacements is applied to a shader template. Using this function you can apply your own string replacements to add features you desire

Parameters
  • actor (vtkActor) – Object where you want to add the shader code.

  • shader_type (str) – Shader type: vertex, geometry, fragment

  • impl_code (str, optional) – shader implementation code, should be a string or filename

  • decl_code (str, optional) – shader declaration code, should be a string or filename by default None

  • block (str, optional) – section name to be replaced. vtk use of heavy string replacments to to insert shader and make it flexible. Each section of the shader template have a specific name. For more informations: https://vtk.org/Wiki/Shaders_In_VTK. The possible values are: position, normal, light, tcoord, color, clip, camera, prim_id, valuepass. by default valuepass

  • keep_default (bool, optional) – keep the default block tag to let VTK replace it with its default behavior. By default True

  • replace_first (bool, optional) – If True, apply this change before the standard VTK replacements by default True

  • replace_all (bool, optional) – [description], by default False

  • debug (bool, optional) – introduce a small error to debug shader code. by default False

Command

fury.shaders.base.Command

alias of vtkmodules.vtkCommonCore.vtkCommand

DataObject

fury.shaders.base.DataObject

alias of vtkmodules.vtkCommonDataModel.vtkDataObject

Shader

fury.shaders.base.Shader

alias of vtkmodules.vtkRenderingOpenGL2.vtkShader

partial

class fury.shaders.base.partial[source]

Bases: object

partial(func, *args, **keywords) - new function with partial application of the given arguments and keywords.

__init__()
args

tuple of arguments to future partial calls

func

function object to use in future partial calls

keywords

dictionary of keyword arguments to future partial calls

add_shader_callback

fury.shaders.base.add_shader_callback(actor, callback, priority=0.0)[source]

Add a shader callback to the actor.

Parameters
  • actor (vtkActor) – Rendered Object

  • callback (callable) – function or class that contains 3 parameters: caller, event, calldata. This callback will be trigger at each UpdateShaderEvent event.

  • priority (float, optional) – Commands with a higher priority are called first.

Returns

id_observer – An unsigned Int tag which can be used later to remove the event or retrieve the vtkCommand used in the observer. See more at: https://vtk.org/doc/nightly/html/classvtkObject.html

Return type

int

Examples

add_shader_callback(actor, func_call1)
id_observer = add_shader_callback(actor, func_call2)
actor.GetMapper().RemoveObserver(id_observer)

Priority calls

test_values = []
def callbackLow(_caller, _event, calldata=None):
    program = calldata
    if program is not None:
        test_values.append(0)

def callbackHigh(_caller, _event, calldata=None):
    program = calldata
    if program is not None:
        test_values.append(999)

def callbackMean(_caller, _event, calldata=None):
    program = calldata
    if program is not None:
        test_values.append(500)

fs.add_shader_callback(
        actor, callbackHigh, 999)
fs.add_shader_callback(
        actor, callbackLow, 0)
id_mean = fs.add_shader_callback(
        actor, callbackMean, 500)

showm.start()
# test_values = [999, 500, 0, 999, 500, 0, ...]

attribute_to_actor

fury.shaders.base.attribute_to_actor(actor, arr, attr_name, deep=True)[source]

Link a numpy array with vertex attribute.

Parameters
  • actor (vtkActor) – Rendered Object

  • arr (ndarray) – array to link to vertices

  • attr_name (str) – vertex attribute name. the vtk array will take the same name as the attribute.

  • deep (bool, optional) – If True a deep copy is applied. Otherwise a shallow copy is applied, by default True

calldata_type

fury.shaders.base.calldata_type(type)[source]

set_call_data_type(type) – convenience decorator to easily set the CallDataType attribute for python function used as observer callback. For example:

import vtkmodules.util.calldata_type import vtkmodules.util.vtkConstants import vtkmodules.vtkCommonCore import vtkCommand, vtkLookupTable

@calldata_type(vtkConstants.VTK_STRING) def onError(caller, event, calldata):

print(“caller: %s - event: %s - msg: %s” % (caller.GetClassName(), event, calldata))

lt = vtkLookupTable() lt.AddObserver(vtkCommand.ErrorEvent, onError) lt.SetTableRange(2,1)

enable_warnings

fury.shaders.base.enable_warnings(warnings_origin=None)[source]

Enable global warnings.

Parameters

warnings_origin (list) – list origin [‘all’, ‘fury’, ‘vtk’, ‘matplotlib’, …]

replace_shader_in_actor

fury.shaders.base.replace_shader_in_actor(actor, shader_type, code)[source]

Set and Replace the shader template with a new one.

Parameters
  • actor (vtkActor) – Object where you want to set the shader code.

  • shader_type (str) – Shader type: vertex, geometry, fragment

  • code (str) – new shader template code

shader_apply_effects

fury.shaders.base.shader_apply_effects(window, actor, effects, priority=0)[source]

This applies a specific opengl state (effect) or a list of effects just before the actor’s shader is executed.

Parameters
  • window (RenderWindow) – For example, this is provided by the ShowManager.window attribute.

  • actor (actor) –

  • effects (a function or a list of functions) –

  • priority (float, optional) – Related with the shader callback command. Effects with a higher priority are applied first and can be override by the others.

Returns

id_observer – An unsigned Int tag which can be used later to remove the event or retrieve the vtkCommand used in the observer. See more at: https://vtk.org/doc/nightly/html/classvtkObject.html

Return type

int

shader_to_actor

fury.shaders.base.shader_to_actor(actor, shader_type, impl_code='', decl_code='', block='valuepass', keep_default=True, replace_first=True, replace_all=False, debug=False)[source]

Apply your own substitutions to the shader creation process.

A bunch of string replacements is applied to a shader template. Using this function you can apply your own string replacements to add features you desire

Parameters
  • actor (vtkActor) – Object where you want to add the shader code.

  • shader_type (str) – Shader type: vertex, geometry, fragment

  • impl_code (str, optional) – shader implementation code, should be a string or filename

  • decl_code (str, optional) – shader declaration code, should be a string or filename by default None

  • block (str, optional) – section name to be replaced. vtk use of heavy string replacments to to insert shader and make it flexible. Each section of the shader template have a specific name. For more informations: https://vtk.org/Wiki/Shaders_In_VTK. The possible values are: position, normal, light, tcoord, color, clip, camera, prim_id, valuepass. by default valuepass

  • keep_default (bool, optional) – keep the default block tag to let VTK replace it with its default behavior. By default True

  • replace_first (bool, optional) – If True, apply this change before the standard VTK replacements by default True

  • replace_all (bool, optional) – [description], by default False

  • debug (bool, optional) – introduce a small error to debug shader code. by default False