SceneVariables

Overview

SceneVariables are the global rendering settings.


Attribute Reference

Caching attributes

fast_geometry_update

Bool
default: False

If this flag is off, the tessellation related data for subdivision surface will be deleted after tessellation is done. This is to save memory for single frame rendering. Otherwise, that data will be kept in memory to support re-tessellation after geometry are updated.

texture_cache_size

Int
default: 4000

Specifies the maximum size of the texture cache in megabytes. This value can significantly impact rendering speed, where larger values often improve rendering speed.

texture_file_handles

Int
default: 24000

Specifies the maximum number of simultaneous open texture file handles.

Camera and Layer attributes

camera

Camera
default: None

This specifies the camera object used for rendering. If no camera is specified in the scene variables, MoonRay will render using the first camera object encountered.

dicing_camera

Camera
default: None

This attribute specifies a camera to use for adaptive geometry tessellation. The rendering camera is used if no camera is specified.

layer

Layer
default: None

This specifies the layer object used for rendering. If no layer is specified in the scene variables, MoonRay will rendering using the first layer object encountered.

Checkpoint attributes

checkpoint_active

Bool
default: False

Enables or disables checkpoint file writing.

checkpoint_bg_write

Bool
default: True

When set to true, checkpoint file writes occur in a background thread that runs concurrently with the MCRT threads. Otherwise, all MCRT threads must wait while the checkpoint file is written.

checkpoint_interval

Float
default: 15.0

Specifies the time interval, in minutes, between checkpoint file writes. The interval must be equal to or greater than 0.1 minutes.

checkpoint_max_bgcache

Int
default: 2

Specifies the maximum number of queued checkpoint images the checkpoint-writing background thread can handle. The value of checkpoint_max_bgcache must be greater than or equal to 1. If the number of queued checkpoint images exceeds this limit, MCRT threads will be temporarily suspended while background images are written to make room in the queue. A larger value can support background writing even with short checkpoint intervals, but it may require more memory. A value of 2 is recommended for most cases.

checkpoint_max_snapshot_overhead

Float
default: 0.0

Specifies the maximum fraction of the snapshot overhead threshold for an extra snapshot action in the event of an unexpected interruption by SIGINT. The value is expressed as a fraction. If the value is set to zero or a negative number, no extra snapshot action will be executed, and no checkpoint file will be generated if SIGINT is received.

checkpoint_mode

Int enum
  0 = “time” (default)
  1 = “quality”

Allows you to choose whether checkpoint images are written based on time elapsed or on quality reached.

checkpoint_overwrite

Bool
default: True

When set to true, the last checkpoint file will be overwritten when writing out the new checkpoint file. If set to false, the checkpoint filename will be appended with the total number of samples, which will result in the retention of all checkpoint files.

checkpoint_post_script

String
default:

Specifies the filename of a Lua script that will be executed after every checkpoint file is written. The script will run concurrently with the ongoing MCRT threads. For more information, refer to the documentation for MoonRay-provided Lua variables accessible within the script.

checkpoint_quality_steps

Int
default: 2

Specifies the number of quality steps, which refers to the internal sampling iteration count between checkpoint file writes. The value must be equal to or greater than 1. In the case of uniform sampling, this number of steps is equivalent to the pixel sampling steps for each pixel. For example, if you set quality steps to 2, a checkpoint file will be created every time each pixel's sample count exceeds 2, 4, 6, 8, 10, and so on. In the case of adaptive sampling, this number of steps is equivalent to the internal adaptive sampling iteration steps. A recommended number falls within the range of 1 to 3. For example, if you set the value to 2, a checkpoint file will be created after finishing every 2 adaptive sampling passes. A larger value will conduct more rendering passes before writing a file.

checkpoint_sample_cap

Int
default: 0

Causes the render to finish based on the total pixel sample count. For example, if the value is 1024, the render will end after the next checkpoint write when each pixel exceeds 1024 samples. If the value is set to 0, the sample cap feature is disabled.

checkpoint_snapshot_interval

Float
default: 0.0

Specifies the time interval, in minutes, allowed for a snapshot when a SIGINT is encountered. If the value is 0 or negative, the checkpoint_max_snapshot_overhead parameter is used instead.

checkpoint_start_sample

Int
default: 1

Specifies the samples per pixel (SPP). A checkpoint file is created when all pixels' SPP are greater than or equal to this number. A checkpoint file is created once this criterion is met.

checkpoint_time_cap

Float
default: 0.0

Determines when the render will finish based on the total render process time in minutes. If the value is exceeded, the render will finish after the next checkpoint write. If the value is set to 0, the time cap feature is disabled.

checkpoint_total_files

Int
default: 0

This variable specifies the total number of checkpoint files for the quality-based checkpoint mode. It serves as a substitute parameter for checkpoint_quality_steps. If the value is set to 0 (the default), the interval at which checkpoints are generated is controlled by the checkpoint_quality_steps variable. If the value is set to 1 or higher, the renderer will attempt to automatically generate a user-defined number of checkpoint files based on this value. This option takes into account the checkpoint_start_sample variable.

In some cases, the renderer may be unable to create the requested number of checkpoint_total_files due to limitations in the internal implementation or because the user has specified a value greater than 1 for the checkpoint_start_sample variable. However, in these cases, the renderer will attempt to generate the closest possible number of checkpoint files to the user-defined value.

Debug attributes

debug_console

Int
default: -1

Specifies the port number for the debug console. When the debug console functionalities are enabled, you can use a telnet connection to send commands and control rendering behavior for debugging purposes.
- A value of -1 disables all debug console functionality.
- A positive value specifies a specific port number.
- If you set the port number to 0, the kernel will find an available port for you and display the port number to stderr.

debug_pixel

IntVector
default: {}

Allows for rendering a single pixel and is typically used for debugging. The value given specifies the 2D pixel coordinate expressed from the bottom-left of the frame-viewport

debug_rays_depth_range

IntVector
default: {}

Deprecated.

debug_rays_file

String
default:

Deprecated.

debug_rays_primary_range

IntVector
default: {}

Deprecated.

validate_geometry

Bool
default: False

Checks geometry for bad data

Deep Images attributes

deep_curvature_tolerance

Float
default: 45.0

Maximum curvature (in degrees) of the deep surface within a pixel before it is split

deep_format

Int enum
  0 = “openexr2.0”
  1 = “opendcx2.0” (default)

Deep image format:
  openexr2.0: vanilla OpenEXR deep
  opendcx2.0: DCX abuffer mask encoding

deep_id_attribute_names

StringVector
default: {}

Names of primitive attributes containing deep IDs

deep_vol_compression_res

Int
default: 10

Volume opacity compression resolution. Lower values gives higher compression.

deep_z_tolerance

Float
default: 2.0

Maximum range of the deep surface's Z values within a pixel before it is split

Driver attributes

machine_id

Int
default: -1

Used only in arras moonray context, automatically set by arras and indicates the MCRT computation ID in the current session

num_machines

Int
default: -1

Used only in arras moonray context, automatically set by arras and indicates total number of MCRT computations active in the current session

output_file

String
default: scene.exr

This specifies the output path for the beauty image (RGBA). This is independent of the AOV RenderOutputs, which can also write a beauty image.

task_distribution_type

Int enum
  0 = “non-overlapped tile”
  1 = “multiplex pixel” (default)

Used only in arras moonray context, defines the task distribution method to the MCRT computation. Multi-plex pixel is the default and preferred method. Non-overlapped tile is experimental and only used for debugging/development purposes

tmp_dir

String
default:

Define temporary directory name for temporary file generation. Use $TMPDIR environment variable value if this variable is empty.If $TMPDIR is also empty, use /tmp

Filtering attributes

pixel_filter

Int enum
  0 = “box”
  1 = “cubic b-spline” (default)
  2 = “quadratic b-spline”

The type of filter used for filter importance sampling. A box filter with a width of 1 is analogous to disabling pixel filtering.

pixel_filter_width

Float
default: 3.0

The overall extents, in pixels, of the pixel filter. Larger values will result in softer images.

texture_blur

Float
default: 0.0

Adjusts the amount of texture filtering.

Fireflies Removal attributes

roughness_clamping_factor

Float
default: 0.0

Clamp material roughness along paths. A value of 1 clamps values to the maximum roughness encountered, while lower values temper the clamping value. 0 disables the effect. Using this technique reduces fireflies from indirect caustics but is biased.

sample_clamping_depth

Int
default: 1

Clamp sample values only after the given non-specular ray depth.

sample_clamping_value

Float
default: 10.0

Clamp sample radiance values to this maximum value (the feature is disabled if the value is 0.0). Using this technique reduces fireflies, but is biased.

Frame attributes

frame

Float
default: 0.0

Used to provide unique samples per frame, and for selecting the frame for scenes with animated data.

max_frame

Float
default: 0.0

Used to provide unique samples per frame.

min_frame

Float
default: 0.0

Used to provide unique samples per frame.

Global Toggles attributes

cryptomatte_multi_presence

Bool
default: False

Determines whether to record presence bounces as separate cryptomatte samples.

enable_displacement

Bool
default: True

Enables or disables geometry displacement.

enable_dof

Bool
default: True

Enables or disables camera depth-of-field (DOF)

enable_max_geometry_resolution

Bool
default: False

Specifies whether the max_geometry_resolution limit is in effect.

enable_motion_blur

Bool
default: True

Enables or disables motion blur

enable_presence_shadows

Bool
default: False

Whether or not to respect a material's "presence" value for shadow rays. Performance may improve when disabled, but all materials are treated as fully present.

enable_shadowing

Bool
default: True

Enables or disables shadowing through occlusion rays.

enable_subsurface_scattering

Bool
default: True

Enables or disables sub-surface scattering.

lights_visible_in_camera

Bool
default: False

Globally enables or disables lights being visible in camera. Each light has its own setting which may override this value.

max_geometry_resolution

Int
default: 2147483647

Specifies a global limit to geometry resolution. Geometry procedurals should respect this limit.

propagate_visibility_bounce_type

Bool
default: False

turns on/off propagation for ray visibility masks

shadow_terminator_fix

Int enum
  0 = “Off” (default)
  1 = “On”
  2 = “On (Sine Compensation Alternative)”
  3 = “On (GGX Compensation Alternative)”
  4 = “On (Cosine Compensation Alternative”

Attempt to soften hard shadow terminator boundaries due to shading/geometric normal deviations. "ON uses a custom terminator softening method. Cosine Compensation" is Chiang's 2019 SIGGRAPH technique. "GGX" is Estevez's raytracing gems technique. "Sine Compensation" is a sine based modification of Chiang's method. Different scenes may work better with different techniques. The recommendation is to start with the custom compensation ON, then sine compensation technique, then GGX, then cosine.

Image Size attributes

aperture_window

IntVector
default: {}

The window of the camera aperture. Overrides image_width and image_height. Ordered as xmin, ymin, xmax, and ymax, with origin at the bottom-left.

image_height

Int
default: 1080

The desired height of the output image(s), in pixels.

image_width

Int
default: 1920

The desired width of the output image(s), in pixels.

region_window

IntVector
default: {}

Window that is rendered. Overrides image width / height (and overrides aperture window override). Order: xmin ymin xmax ymax, with origin at left bottom.

res

Float
default: 1.0

Final divisor for the overall image dimensions. A quick way to reduce or increase the size of the render. A value of 2 halves the size of the rendered image(s). A value of 0.5 doubles it.

sub_viewport

IntVector
default: {}

Subviewport of region window. Coordinate (0,0) maps to left, bottom of region window

Logging attributes

athena_debug

Bool
default: False

[DreamWorks Animation internal] Enables or disables sending logging results to the Athena debugging database instead of the production database.

fatal_color

Rgb
default: [ 1, 0, 1 ]

The color to use for materials or map shaders that are unable to execute shading, usually due to incomplete initialization.

log_debug

Bool
default: False

Determines whether debugging-level messages are logged.

log_info

Bool
default: False

Determines whether information-level messages are logged.

stats_file

String
default:

The filename to write the rendering statistics to in CSV format.

Metadata attributes

exr_header_attributes

Metadata
default: None

Metadata that is passed directly to the exr header. Format: {"name", "type", "value"}

Motion and Scale attributes

motion_steps

FloatVector
default: {}

Frame-relative time offsets for motion sampling

scene_scale

Float
default: 0.01

(in meters): one unit in world space = 'scene scale' meters

slerp_xforms

Bool
default: False

If use_rotation_motion_blur is false this will use slerp to interpolate the node_xform for motion blur

Path Guide attributes

path_guide_enable

Bool
default: False

Turn on path guiding to handle difficult light transport problems (e.g. caustics) at the cost of increased memory

See Also


Resume Render attributes

on_resume_script

String
default:

When using resumable rendering, the Lua script named here is executed after the render prep stage. In addition, MoonRay sets some Lua global variables the script can access. This functionality is disabled when the script name is empty or when not using resumable rendering. Please refer to the checkpoint/resume documentation for more details.

resumable_output

Bool
default: False

make aov output as resumable for resume render

resume_render

Bool
default: False

resuming render process

Sampling attributes

bsdf_samples

Int
default: 2

The square root of the number of samples taken for BSDF lobe evaluations on the primary intersection. The number of samples taken per material depends on the BSDF sampler strategy and the number of lobes that comprise the material.

bssrdf_samples

Int
default: 2

The square root of the number of samples taken to evaluate BSSRDF (subsurface scattering) contributions on the primary intersection.

disable_optimized_hair_sampling

Bool
default: False

Forces all hair materials to sample each hair BSDF lobe independently. This will enable the LPE label syntax for 'hair R', 'hair TT', 'hair TRT' and 'hair TRRT ' but will result in slower rendering

light_samples

Int
default: 2

The square root of the number of samples taken for each light on the primary intersection.

lock_frame_noise

Bool
default: False

By default, the random number generators are seeded by considering the frame number. However, if lock_frame_noise is true, the same seed values are used for each frame, which is typically undesirable.

max_depth

Int
default: 5

The maximum ray depth (number of "bounces") for diffuse|glossy|mirror event types. This can be thought of as the global depth limit. Reducing this can improve performance at the cost of biasing the rendered image.

max_diffuse_depth

Int
default: 2

The maximum ray depth (number of "bounces") for diffuse event types. Reducing this can improve performance at the cost of biasing the rendered image. Note that this limit is also governed by the global "max depth" attribute.

max_glossy_depth

Int
default: 2

The maximum ray depth (number of "bounces") for glossy event types. Reducing this can improve performance at the cost of biasing the rendered image. Note that this limit is also governed by the global "max depth" attribute.

max_hair_depth

Int
default: 5

The maximum ray depth (number of "bounces") for hair material types. This limit may need to be increased to allow for more hair-to-hair interactions, especially for blonde/white hair or fur. Reducing this can improve performance at the cost of biasing the rendered image.

max_mirror_depth

Int
default: 3

The maximum ray depth (number of "bounces") for mirror event types. Reducing this can improve performance at the cost of biasing the rendered image. Note that this limit is also governed by the global "max depth" attribute.

max_presence_depth

Int
default: 16

The maximum ray depth (number of "bounces") for presence event types. The material's "presence" attribute is ignored after this depth has been reached and the surface is treated as fully present. Reducing this can improve performance at the cost of biasing the rendered image.

max_subsurface_per_path

Int
default: 1

The maximum ray depth (number of "bounces") to allow subsurface scattering. For ray depths beyond this limit Lambertian diffuse is used to approximate subsurface scattering.

pixel_samples

Int
default: 8

The square root of the number of primary samples taken for each pixel in uniform sampling mode. For example, a value of 4 will result in 4*4 = 16 uniform pixel samples.

presence_quality

Float
default: 0.75

The presence quality defines the threshold for path throughput after which presence sampling becomes stochastic. This is similar to russian roulette. A value of 1.0 means never use stochastic sampling (highest quality). A value of 0.0 means always use stochastic sampling (faster, but may be noisy). Values between 0.0 and 1.0 will generally be a good trade-off in speed vs. quality when multiple layers of presence are involved.

presence_threshold

Float
default: 0.999

The presence threshold defines the point at which the accumulated presence can be considered opaque, skipping the generation of presence continuation rays.

russian_roulette_threshold

Float
default: 0.0375

The Russian roulette threshold specifies the point at which point Russian roulette is evaluated for direct light sampling and BSDF continuation. The unit is luminance of the radiance.

transparency_threshold

Float
default: 1.0

The transparency threshold defines the point at which the accumulated opacity can be considered opaque, skipping the generation of new transparency rays.

Volumes attributes

max_volume_depth

Int
default: 1

The maximum ray depth (number of "bounces") for volume event types. Volumes are ignored after this depth has been reached. Reducing this can improve performance at the cost of biasing the rendered image.

volume_attenuation_factor

Float
default: 0.65

Controls how volume attenuation gets exponentially scaled down when rendering multiple scattering volumes. Dialing down the value generally results in more translucent look. This variable is only effective when "max volume depth" is greater than 1

volume_contribution_factor

Float
default: 0.65

Controls how scattering contribution gets exponentially scaled down when rendering multiple scattering volumes. Dialing down the value generally results in a darker volume scattering look. This variable is only effective when "max volume depth" is greater than 1

volume_illumination_samples

Int
default: 4

Sample number along the ray when computing volume scattering radiance towards the eye. Set to 0 to turn off volume lighting completely.

volume_indirect_samples

Int
default: 0

Number of indirect illumination samples on volumes (per primary ray).

volume_opacity_threshold

Float
default: 0.995

As a ray travels through volumes, it will accumulate opacity. When the value exceeds the volume opacity threshold, the renderer will stop further volume integration along this ray.

volume_overlap_mode

Int enum
  0 = “sum” (default)
  1 = “max”
  2 = “rnd”

Selects how to handle contributions from overlapping volumes:
  sum: add contributions from all volumes
  max: only consider maximum volume based on extinction
  rnd: randomly choose one value weighted by extinction
  Warning: light linking does not work correctly in sum mode.

volume_phase_attenuation_factor

Float
default: 0.5

Controls how phase function (anisotropy) gets exponentially scaled down when rendering multiple scattering volumes. This variable is only effective when "max volume depth" is greater than 1

volume_quality

Float
default: 0.5

Controls the overall quality of volume rendering. The higher number gives better volume shape detail and more accurate scattering integration result.

volume_shadow_quality

Float
default: 1.0

Controls the quality of volume shadow (transmittance). The higher number gives more accurate volume shadow.

General attributes

batch_tile_order

Int enum
  0 = “top”
  1 = “bottom”
  2 = “left”
  3 = “right”
  4 = “morton” (default)
  5 = “random”
  6 = “spiral square”
  7 = “spiral rect”
  8 = “morton shiftflip”

Specifies the order in which tiles (as areas of 8x8 pixels) are prioritized for batch rendering, which determines which areas of the image are rendered first. The ordering is not guaranteed: the strict sequence of tile starting and completion for any pass is nondeterministic due to thread scheduling.

checkpoint_tile_order

Int enum
  0 = “top”
  1 = “bottom”
  2 = “left”
  3 = “right”
  4 = “morton” (default)
  5 = “random”
  6 = “spiral square”
  7 = “spiral rect”
  8 = “morton shiftflip”

Specifies the order in which tiles (as areas of 8x8 pixels) are prioritized for checkpoint rendering, which determines which areas of the image are rendered first. The ordering is not guaranteed: the strict sequence of tile starting and completion for any pass is nondeterministic due to thread scheduling.

crypto_uv_attribute_name

String
default:

Names of primitive attribute containing crypto UVs

fps

Float
default: 24.0

(Frames per second) Affects motion blur.

light_sampling_mode

Int enum
  0 = “uniform” (default)
  1 = “adaptive”

Controls which light sampling scheme to use: uniform or adaptive

light_sampling_quality

Float
default: 0.5

When the light sampling mode is 'adaptive', this attribute controls how many lights are sampled per light sample, where 0.0 is low quality (1 light sampled per light sample) and 1.0 is high quality (all lights sampled per light sample). Any value in between will cause adaptive light sampling to kick into effect, meaning that it will choose a higher or lower number of lights depending on what that particular point needs. A number closer to 0.0 will cause it to sample a lower number of lights on average, and vice versa.

max_adaptive_samples

Int
default: 4096

When adaptive sampling is turned on, this represents the max number of samples we can throw at a pixel. It's best to err on the high side since adaptive sampling will cull out samples where they're not needed based on the target adaptive error, in which case we should rarely hit the max samples value.

min_adaptive_samples

Int
default: 16

This is the minimum number of samples taken per pixel before enabling adaptive sampling. A larger number of samples may prevent the adaptive sampler from prematurely identifying an area as converged but may incur a longer running time.

progressive_tile_order

Int enum
  0 = “top”
  1 = “bottom”
  2 = “left”
  3 = “right”
  4 = “morton” (default)
  5 = “random”
  6 = “spiral square”
  7 = “spiral rect”
  8 = “morton shiftflip”

Specifies the order in which tiles (as areas of 8x8 pixels) are prioritized for progressive rendering, which determines which areas of the image are rendered first. The ordering is not guaranteed: the strict sequence of tile starting and completion for any pass is nondeterministic due to thread scheduling.

sampling_mode

Int enum
  0 = “uniform” (default)
  2 = “adaptive”

Controls which sampling scheme to use: uniform or adaptive.

target_adaptive_error

Float
default: 10.0

When adaptive sampling is turned on, this represents the desired quality of the output images. Lower values will give higher quality but take longer to render. Higher values will give lower quality but render quicker.

two_stage_output

Bool
default: True

Specifies whether to use a two-stage writing process for images. In two-stage writing, the image is first written to a temporary location and then moved to the final location. This approach significantly reduces the risk of output data corruption due to an unexpected render process termination.
The directory where the temporary files are stored is defined by the "tmp_dir" scene variable.