simvx.core.world_environment

WorldEnvironment, Environment, and PostProcessEffect for SimVX.

Module Contents

Classes

PostProcessEffect

User-defined fullscreen post-processing shader effect.

WorldEnvironment

Global rendering environment settings for a scene.

Environment

Environment resource that can be shared between WorldEnvironment nodes.

Data

log

API

simvx.core.world_environment.log[source]

‘getLogger(…)’

class simvx.core.world_environment.PostProcessEffect(shader_code: str = '', *, enabled: bool = True, order: int = 0, language: str = 'glsl')[source]

User-defined fullscreen post-processing shader effect.

Holds fragment GLSL source, uniform values, enable state, and execution order. The graphics backend compiles the shader and executes it as a fullscreen pass.

Standard uniforms provided automatically to every effect: - u_time (float): elapsed time in seconds - u_resolution (vec2): screen resolution in pixels - u_colour_tex (sampler2D): current framebuffer colour - u_depth_tex (sampler2D): scene depth buffer

Example::

effect = PostProcessEffect(
    shader_code="""
        void main() {
            vec2 uv = gl_FragCoord.xy / u_resolution;
            vec3 colour = texture(u_colour_tex, uv).rgb;
            frag_colour = vec4(vec3(dot(colour, vec3(0.299, 0.587, 0.114))), 1.0);
        }
    """,
    order=10,
)
effect.set_uniform("intensity", 0.5)
world_env.add_post_process(effect)

Initialization

__slots__

(‘_shader_code’, ‘_enabled’, ‘_order’, ‘_uniforms’, ‘_uniform_types’, ‘_dirty’, ‘_language’)

property language: str

Shader language: ‘glsl’ (default) or ‘wgsl’ (WebGPU).

property shader_code: str

Fragment shader source (the body; version/layout is auto-wrapped by the renderer).

property enabled: bool
property order: int

Execution priority — lower values run first.

property uniforms: dict[str, Any]

Read-only copy of current uniform values.

property dirty: bool

Whether the shader or uniforms have changed since last GPU sync.

clear_dirty() None[source]

Mark as synced with GPU (called by the renderer).

set_uniform(name: str, value: Any) None[source]

Set a shader uniform value. Type is inferred from the value.

Supported: float, int, vec2/3/4 (tuple or ndarray), mat4 (4x4 ndarray).

get_uniform(name: str) Any[source]

Get current uniform value. Raises KeyError if not set.

__repr__() str[source]
class simvx.core.world_environment.WorldEnvironment(name: str = 'WorldEnvironment', **kwargs)[source]

Bases: simvx.core.node.Node

Global rendering environment settings for a scene.

Initialization

ambient_light_colour

‘Property(…)’

ambient_light_energy

‘Property(…)’

ambient_light_mode

‘Property(…)’

fog_enabled

‘Property(…)’

fog_colour

‘Property(…)’

fog_density

‘Property(…)’

fog_start

‘Property(…)’

fog_end

‘Property(…)’

fog_mode

‘Property(…)’

fog_height

‘Property(…)’

fog_height_density

‘Property(…)’

tonemap_mode

‘Property(…)’

tonemap_exposure

‘Property(…)’

tonemap_white

‘Property(…)’

bloom_enabled

‘Property(…)’

bloom_threshold

‘Property(…)’

bloom_intensity

‘Property(…)’

volumetric_fog_enabled

‘Property(…)’

volumetric_fog_density

‘Property(…)’

volumetric_fog_albedo

‘Property(…)’

volumetric_fog_emission

‘Property(…)’

volumetric_fog_anisotropy

‘Property(…)’

volumetric_fog_length

‘Property(…)’

volumetric_fog_gi_inject

‘Property(…)’

volumetric_fog_temporal_reprojection

‘Property(…)’

ssao_enabled

‘Property(…)’

dof_enabled

‘Property(…)’

dof_focus_distance

‘Property(…)’

dof_focus_range

‘Property(…)’

motion_blur_enabled

‘Property(…)’

motion_blur_intensity

‘Property(…)’

motion_blur_samples

‘Property(…)’

film_grain_enabled

‘Property(…)’

film_grain_intensity

‘Property(…)’

vignette_enabled

‘Property(…)’

vignette_intensity

‘Property(…)’

vignette_smoothness

‘Property(…)’

chromatic_aberration_enabled

‘Property(…)’

chromatic_aberration_intensity

‘Property(…)’

colour_grading_enabled

‘Property(…)’

sky_mode

‘Property(…)’

sky_colour_top

‘Property(…)’

sky_colour_bottom

‘Property(…)’

sky_texture

‘Property(…)’

property env_dirty: bool
clear_env_dirty() None[source]
__setattr__(name: str, value: Any) None[source]
add_post_process(effect: simvx.core.world_environment.PostProcessEffect) None[source]

Register a custom post-processing effect.

remove_post_process(effect: simvx.core.world_environment.PostProcessEffect) None[source]

Unregister a custom post-processing effect.

get_post_processes() list[simvx.core.world_environment.PostProcessEffect][source]

Return registered effects sorted by order.

strict_errors: ClassVar[bool]

True

script_error_raised

‘Signal(…)’

classmethod __init_subclass__(**kwargs)
property name: str
property process_mode: simvx.core.descriptors.ProcessMode
reset_error() None
add_child(node: simvx.core.node.Node) simvx.core.node.Node
remove_child(node: simvx.core.node.Node)
reparent(new_parent: simvx.core.node.Node)
get_node(path: str) simvx.core.node.Node
find_child(name: str, recursive: bool = False) simvx.core.node.Node | None
find(node_type: type, recursive: bool = True) simvx.core.node.Node | None
find_all(node_type: type, recursive: bool = True) list
property path: str
add_to_group(group: str)
remove_from_group(group: str)
is_in_group(group: str) bool
ready() None
enter_tree() None
exit_tree() None
process(dt: float) None
physics_process(dt: float) None
draw(renderer) None
input_event(event: simvx.core.events.InputEvent) None
input(event: simvx.core.events.TreeInputEvent) None
unhandled_input(event: simvx.core.events.TreeInputEvent) None
start_coroutine(gen: simvx.core.descriptors.Coroutine) simvx.core.descriptors.CoroutineHandle
stop_coroutine(gen_or_handle)
clear_children()
destroy()
property app
property tree: simvx.core.scene_tree.SceneTree
get_tree() simvx.core.scene_tree.SceneTree
__getitem__(key: str)
classmethod get_properties() dict[str, simvx.core.descriptors.Property]
__repr__()
class simvx.core.world_environment.Environment[source]

Environment resource that can be shared between WorldEnvironment nodes.

Initialization

add_post_process(effect: simvx.core.world_environment.PostProcessEffect) None[source]

Register a custom post-processing effect.

remove_post_process(effect: simvx.core.world_environment.PostProcessEffect) None[source]

Unregister a custom post-processing effect.

get_post_processes() list[simvx.core.world_environment.PostProcessEffect][source]

Return registered effects sorted by order.