shaders
#
Module: shaders.base
#
str(object='') -> str str(bytes_or_buffer[, encoding[, errors]]) -> str |
|
|
Merge GLSL shader code from a list of strings. |
|
Import a Fury shader. |
|
Load a shader from a file. |
|
Load a Fury shader file. |
|
Apply your own substitutions to the shader creation process. |
|
Set and replace the shader template with a new one. |
|
Add a shader callback to the actor. |
|
This applies a specific opengl state (effect) or a list of effects just before the actor's shader is executed. |
|
Link a numpy array with vertex attribute. |
SHADERS_DIR#
- fury.shaders.base.SHADERS_DIR()#
str(object=’’) -> str str(bytes_or_buffer[, encoding[, errors]]) -> str
Create a new string object from the given object. If encoding or errors is specified, then the object must expose a data buffer that will be decoded using the given encoding and error handler. Otherwise, returns the result of object.__str__() (if defined) or repr(object). encoding defaults to sys.getdefaultencoding(). errors defaults to ‘strict’.
compose_shader#
import_fury_shader#
- fury.shaders.base.import_fury_shader(shader_file)[source]#
Import a Fury shader.
- Parameters:
shader_file (str) – Filename of shader. The file must be in the fury/shaders directory and must have the one of the supported extensions specified by the Khronos Group (KhronosGroup/glslang).
- Returns:
code – GLSL shader code.
- Return type:
load_shader#
- fury.shaders.base.load_shader(shader_file)[source]#
Load a shader from a file.
- Parameters:
shader_file (str) – Full path to a shader file ending with one of the file extensions defined by the Khronos Group (KhronosGroup/glslang).
- Returns:
code – GLSL shader code.
- Return type:
load#
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 set of string replacements is applied to a shader template. This function let’s apply custom string replacements.
- Parameters:
actor (vtkActor) – Fury actor you want to set the shader code to.
shader_type (str) – Shader type: vertex, fragment
impl_code (str, optional) – Shader implementation code, should be a string or filename. Default None.
decl_code (str, optional) – Shader declaration code, should be a string or filename. Default None.
block (str, optional) – Section name to be replaced. VTK use of heavy string replacements to insert shader and make it flexible. Each section of the shader template have a specific name. For more information: 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. Default True.
replace_first (bool, optional) – If True, apply this change before the standard VTK replacements. Default True.
replace_all (bool, optional) – [description], by default False
debug (bool, optional) – Introduce a small error to debug shader code. Default False.
replace_shader_in_actor#
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) – Fury actor you want to add the callback to.
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:
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, priority=999) fs.add_shader_callback( actor, callbackLow, priority=0) id_mean = fs.add_shader_callback( actor, callbackMean, priority=500) showm.start() # test_values = [999, 500, 0, 999, 500, 0, ...]
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:
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) – Fury actor you want to add the vertex attribute to.
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. Default True.