SplatRender

The SplatRender node allows you to render Gaussian Splats, with controls to adjust colorspace, output AOVs, and motion blur.

To learn more about the workflow, see Rendering Gaussian Splats.

Inputs and Controls

Connection Type

Connection Name

Function

Input

cam

An optional camera input. The scene is rendered from the perspective of this camera. If the camera input is not connected, SplatRender uses a default camera positioned at the origin and facing in the negative Z direction.

scene

Connect to the scene you want to render.

bg

An optional background input. This can be used to composite a background image into the scene and to determine the output resolution. If not used, this defaults to root.format or root.proxy_format defined in the ProjectSettings.

If this input contains a depth channel, SplatRender considers it when doing Z-buffer and Z-blending calculations.

Control (UI)

Knob (Scripting)

Default Value

Function

SplatRender Tab

Format format root.format Sets the format to render out in Nuke.
Splats splats_mask

Custom

{isa:ParticleField3DGaussianSplat} + {isa:PointInstancer}

Specifies the mask pattern to target the splats you want to include in the render. This defaults to Custom: {isa:ParticleField3DGaussianSplat} + {isa:PointInstancer} which targets any splats in the scene.

You can also use standard glob-style variables, such as /*, to create masks.

Default - Injected/All Roots - selects the default prim(s) for the node. The default will be the injected mask prim paths if there is an upstream node with this. Otherwise the default mask for this node type is evaluated.

All roots - selects the top level Xform(s) in your scene.

Last modified - selects whatever the last node modified was.

All Cameras - selects all Cameras in your scene graph.

All Lights - select all lights in your scene graph.

All Meshes - selects all meshes in your scene graph.

Custom - sets a custom selection of prims that exist in your scene graph.

Colorspace output_colorspace ACEScg Select a colorspace to apply to the elements targeted in the mask.
Overscan overscan 0 The number of pixels to render beyond the left/right and top/bottom of the format, if requested by downstream operations. The format, and therefore the camera framing, is unchanged; only the output bounding box grows to include the overscanned pixels.
Motion Blur
Motion Samples motion_samples 0

The number of samples used to interpolate motion blur. A sample count of 0 effectively disables motion blur while a count of 1 or more samples the splats at multiple times over the shutter interval to create motion blur.

NOTE: time samples are evenly spaced over the shutter interval, in contrast to ScanlineRender’s stochastic sampling.

Shutter Length shutter 0.5 Enter the number of frames the shutter stays open when motion blurring. For example, a value of 0.5 corresponds to half a frame.
Shutter Offset shutteroffset start

Select when the shutter opens and closes in relation to the current frame value when motion blurring:

centered - to center the shutter around the current frame. For example, if you set the shutter value to 1 and your current frame is 30, the shutter stays open from frame 29.5 to 30.5.

start - to open the shutter at the current frame. For example, if you set the shutter value to 1 and your current frame is 30, the shutter stays open from frame 30 to 31.

end - to close the shutter at the current frame. For example, if you set the shutter value to 1 and your current frame is 30, the shutter stays open from frame 29 to 30.

custom - to open the shutter at the time you specify. In the field next to the dropdown menu, enter a value (in frames) you want to add to the current frame. To open the shutter before the current frame, enter a negative value. For example, a value of -0.5 would open the shutter half a frame before the current frame.

Nuke has always defaulted to start and going forward in time, so at a given frame the shutter is open. However often it can be useful to change this to end when you want a motion blur trail to an impact point on a specific frame.

Shutter Bias shutter_bias 0 Biases shutter towards shutter close or shutter open for stylized motion blue. Negative values bias towards shutter open and positive values bias towards shutter close.
Scene Time Offset scene_time_offset 0

Shifts the time frame of input geometry, lights and cameras while keeping the renderer at the same output frame.

This means you can slip your render in time (with subframe accuracy) without affecting the camera or the objects in the stage, which can be really helpful when you are trying to slip the camera to get vector motion blur aligned properly.

Camera Xform camera_motion_blur on Enables or disables camera motion blur.
Object Xform object_motion_blur on Enables or disables object motion blur.

Relighting

Note:  More lighting controls can be found in the individual light nodes.

Enable Relighting relight_enable off Enable to apply lighting and shadows from scene lights to the splats. Supports directional, spot, and point lights.
Lights lights_mask

Custom

{isa:DistantLight} + {isa:SphereLight} + {isa:DiskLight}

Select which lights in the scene affect the splats.
Ambient Color ambient_color 0 Base light color that fills in areas not reached by any light. Raise this to prevent fully shadowed regions from going completely black.
Lighting Blur Radius lighting_blur_radius 4 Smooths the final lighting result in screen space while keeping object edges sharp. Increase to reduce any remaining graininess or staircase patterns in the shadows. 0 disables the blur entirely.
Outputs Tab
Channels channels rgba Specifies channels for render. You can also use the checkboxes on the right to select individual channels.
World Position position_channels none Output world-space point positions reconstructed from depth. When motion blur is enabled, the position at the closest depth is output. Set to "none" to disable.
Normals normal_channels none Output world-space surface normals. Normals are only output when the splat prim has a ‘normals’ (or half float ‘normalsh’) attribute. When motion blur is enabled, the normal at the closest depth is output. Set to "none" to disable.
Depth (enable) N/A on Enable depth channel named to the right. Turning this off is the same as setting the channel to None.
Depth (channels) depth_channels depth.Z Specifies depth channels for render.
1/Z one_over_z on

on: Output classic-style Nuke Z which is l/Z-distance. ‘No Object’ is black 0.0 and the Z value *decreases* the further from camera. This is convenient to use in a compositor because it looks and acts much like a color channel and can be directly viewed. It will also pass through a filter without creating illegal ‘nan’ floating-point values.

Note that 1/Z is -NOT- normalized Z. 1/Z is easily converted back to absoluteZ-distance by using another 1/Z. Normalizing involves scaling the Z by some near/far range and thus destroys the scene- space scale of the distance value.

off: Output absolute Z-distance where ‘No Object’ = inf and the Z value increases the further from the camera. This is the world-space distance from the camera to the object.

Alpha Threshold for Depth alpha_threshold_for_depth 0.5 Set the depth at the sample where this alpha value is reached. A value of 0 means the depth of the closest sample will be set, while a value of 1 means the depth is set at the sample where the pixel is fully opaque.
Deep
Multi-Sample Relighting deep_multisample_relighting off Keep objects at different depths as separate, individually-lit deep samples instead of flattening each pixel down to a single lit sample. With this on, cropping or holding out something in front reveals the geometry behind it correctly lit, and merging behavior is improved. Requires Enable Relighting. Not supported with motion blur.
Alpha Threshold deep_alpha_threshold 0.5

Controls the cumulative alpha threshold for combining splat samples in Deep mode. Splats are kept as separate deep samples until the cumulative alpha crosses this threshold, then all remaining splats are combined into a single deep sample. A value of 0 combines all splats into one sample (fewest deep samples), while a value of 1 keeps all splats separate (most deep samples).

WARNING: Motion blur only renders correctly when this threshold is set to 0.

Object Gap deep_object_gap 0.1 How far apart two surfaces must be, in world space depth, before they are treated as separate objects and kept as their own deep samples for multi-sample relighting. Increase if objects that should be distinct are being merged together; decrease if a single object is being broken into pieces. A value of 0 keeps everything in one sample.