unreal.MovieGraphPathTracerRenderPassNode

class unreal.MovieGraphPathTracerRenderPassNode(outer: Object | None = None, name: Name | str = 'None')

Bases: MovieGraphImagePassBaseNode

A render node which uses the path tracer.

C++ Source:

  • Plugin: MovieRenderPipeline

  • Module: MovieRenderPipelineRenderPasses

  • File: MovieGraphPathTracerPassNode.h

Editor Properties: (see get_editor_property/set_editor_property)

  • additional_post_process_materials (Array[MoviePipelinePostProcessPass]): [Read-Write] An array of additional post-processing materials to run after the frame is rendered. Using this feature may add a notable amount of render time.

  • allocate_history_per_tile (bool): [Read-Write] If enabled, a FSceneViewStateInterface is allocated for each tile in the high resolution image. This is required for TAA/TSR/Lumen and other modern rendering features to work correctly, but can consume significant amounts of VRAM to store the state for each tile. This can be mitigated (at significant render time impact) with the new experimental bPageToSystemMemory cost.

  • allow_ocio (bool): [Read-Write] Allow the output file OpenColorIO transform to be used on this render.

  • denoiser_type (MovieGraphPathTracerDenoiserType): [Read-Write] Select which type of denoiser to use when the denoiser is enabled. Temporal denoisers will provide better results when denoising animated sequences (the denoising results will look more stable), especially when combined with an appropriate Frame Count (non-zero). Denoisers are implemented as plugins so you may need to enable a plugin as well for this to work.

  • disable_tone_curve (bool): [Read-Write] If true, the tone curve will be disabled for this render pass. This will result in values greater than 1.0 in final renders and can optionally be combined with OCIO profiles on the file output nodes to convert from Linear Values in Working Color Space (which is sRGB (Rec. 709) by default, unless changed in the project settings).

  • dynamic_properties (InstancedPropertyBag): [Read-Write] Properties which can be dynamically declared on the node (vs. native properties which are always present).

  • enable_denoiser (bool): [Read-Write] If true the resulting image will be denoised at the end of each set of Spatial Samples.

  • enable_high_resolution_tiling (bool): [Read-Write] If true, the render will be done using a “tiled” render, which can overcome size limitations of GPUs but comes with a significant number of limitations. The internal GBuffer used for rendering is quite memory intensive, so a very large (ie: 8-16k) render may be impractical from a memory standpoint. You can enable High Resolution Tiling to render this in multiple smaller passes, but there is overhead to each tile as well, in terms of raytracing and lumen acceleration structures.

    • If you have VRAM available, it’s better to render with 1 tile instead of 2, and instead increase the TDR (Timeout Device Recovery) in

    your OS to allow frames to take longer than the default 2s limit. - If you need to use tiling, and you need to use Lumen, TAA/TSR, or other rendering features that require the previous frame’s buffer, then you’ll need to enable bAllocateHistoryPerTile. This can come at a large VRAM cost but may require less vram than having a larger GBuffer resolution. - If you have spare system memory (RAM), you can use the experimental bPageToSystemMemory feature to download all of the per-tile rendering history into CPU memory after each tile, and then upload it again before the next time that tile is used. This comes at a _significant_ performance and system memory cost but can allow utilizing significantly larger overall resolutions while still supporting Lumen, TAA/TSR and other features.

  • enable_reference_motion_blur (bool): [Read-Write] When enabled, the path tracer will blend all spatial and temporal samples prior to the denoising and will disable post-processed motion blur. In this mode it is possible to use higher temporal sample counts to improve the motion blur quality. This mode also automatically enabled reference DOF. When this option is disabled, the path tracer will accumulate spatial samples, but denoise them prior to accumulation of temporal samples.

  • frame_count (int32): [Read-Write] The number of frames to consider when using temporal-based denoisers. Generally higher numbers will result in longer denoising times and higher memory requirements. For NFOR this number refers to how many frames to consider on both sides of the current frame (ie: 2 means consider 2 before, and 2 after the currently denoised frame), but other denoiser implementations may interpret this value differently.

  • include_beauty_render_in_output (bool): [Read-Write] Whether the main beauty pass should be written to disk.

    If just Post Process Material passes should be written to disk, turn this off.

  • lighting_components_include_diffuse (bool): [Read-Write] Whether the render should include diffuse lighting contributions.

  • lighting_components_include_emissive (bool): [Read-Write] Whether the render should include directly visible emissive components.

  • lighting_components_include_indirect_diffuse (bool): [Read-Write] Whether the render should include indirect diffuse lighting contributions.

  • lighting_components_include_indirect_specular (bool): [Read-Write] Whether the render should include indirect specular lighting contributions.

  • lighting_components_include_indirect_volume (bool): [Read-Write] Whether the render should include indirect volume lighting contributions.

  • lighting_components_include_specular (bool): [Read-Write] Whether the render should include specular lighting contributions.

  • lighting_components_include_volume (bool): [Read-Write] Whether the render should include volume lighting contributions.

  • overlap_percentage (float): [Read-Write] Rendering effects such as Depth of Field may produce different results near the edge of a tile (as it cannot sample outside of the tile itself), so this setting allows you to create an overlapped region between tiles. 10% is a good starting point, but may need to be increased if you have extremely large depth of field. Only has an effect if bEnableHighResolutionTiling is enabled.

    Note: This uses 0-50 and not 0-.5 like the previous system did to bring it in-line with other usages of overscan in the engine (nDisplay).

  • override_additional_post_process_materials (bool): [Read-Write]

  • override_b_allocate_history_per_tile (bool): [Read-Write]

  • override_b_allow_ocio (bool): [Read-Write]

  • override_b_disable_tone_curve (bool): [Read-Write]

  • override_b_enable_denoiser (bool): [Read-Write]

  • override_b_enable_high_resolution_tiling (bool): [Read-Write]

  • override_b_enable_reference_motion_blur (bool): [Read-Write]

  • override_b_include_beauty_render_in_output (bool): [Read-Write]

  • override_b_lighting_components_include_diffuse (bool): [Read-Write]

  • override_b_lighting_components_include_emissive (bool): [Read-Write]

  • override_b_lighting_components_include_indirect_diffuse (bool): [Read-Write]

  • override_b_lighting_components_include_indirect_specular (bool): [Read-Write]

  • override_b_lighting_components_include_indirect_volume (bool): [Read-Write]

  • override_b_lighting_components_include_specular (bool): [Read-Write]

  • override_b_lighting_components_include_volume (bool): [Read-Write]

  • override_b_page_to_system_memory (bool): [Read-Write]

  • override_b_write_all_samples (bool): [Read-Write]

  • override_denoiser_type (bool): [Read-Write]

  • override_frame_count (bool): [Read-Write]

  • override_overlap_percentage (bool): [Read-Write]

  • override_ppm_file_name_format (bool): [Read-Write]

  • override_renderer_name (bool): [Read-Write]

  • override_renderer_sub_name (bool): [Read-Write]

  • override_seed_offset (bool): [Read-Write]

  • override_show_flags (bool): [Read-Write] Note: Since individual show flags are overridden instead of the entire ShowFlags property, manually set to overridden so the traversal picks the changes up (otherwise they will be ignored).

  • override_spatial_sample_count (bool): [Read-Write]

  • override_tile_count (bool): [Read-Write]

  • page_to_system_memory (bool): [Read-Write] Experimental Feature: When enabled, after each tile is rendered, MRQ will download the per-tile image history back to system RAM, and then the next time the tile is rendered on the subsequent frame the data is transfered from sytem memory back to GPU memory for use. This significantly impacts rendering time, but can allow using Lumen and other features that rely on bAllocateHistoryPerTile to be used on GPUs that do not have enough VRAM to store all of the history data for every tile at once.

  • ppm_file_name_format (str): [Read-Write] If specified, overrides the output node’s file name format, and uses this file name format for Post Process Material passes instead.

  • renderer_name (str): [Read-Write] The value that will be used in the {renderer_name} token.

  • renderer_sub_name (str): [Read-Write] The value that will be used in the {renderer_sub_name} token.

  • script_tags (Array[str]): [Read-Write] Tags that can be used to identify this node within a pre/post render script. Tags can be unique in order to identify this specific node, or the same tag can be applied to multiple nodes in order to identify a grouping of nodes.

  • seed_offset (int32): [Read-Write] Offset to apply to random number generator seed. Intentionally not exposed to the UI as meant for automated pipelines. Should be edited via scripting if needs to be changed.

  • show_flags (MovieGraphShowFlags): [Read-Only] The show flags that should be active during a render for this node.

  • spatial_sample_count (int32): [Read-Write] How many sub-pixel jitter renders should we do per temporal sample? This can be used to achieve high sample counts without Temporal Sub-Sampling (allowing high sample counts without motion blur being enabled), but we generally recommend using Temporal Sub-Samples when possible. It can also be combined with temporal samples and you will get SpatialSampleCount many renders per temporal sample.

  • tile_count (int32): [Read-Write] If bEnableHighResolutionTiling is enabled, what is the tile count that the screen should be broken into. This is not in pixels, but in number of tiles per side, ie: an output resolution of 4k, and a tile count of 2, produces 4 tiles (2 horizontal, 2 vertical) with each tile being 1080p. Larger tile counts shrink the individual render resolution, but increase the total number of renders needed.

  • write_all_samples (bool): [Read-Write] Debug Feature. This can be used to write out each individual spatial sample rendered by this render pass, which allows you to see which images are being accumulated together. Can be useful for debugging incorrect looking frames to see which sub-frame evaluations were incorrect.

property additional_post_process_materials: None

[Read-Write] An array of additional post-processing materials to run after the frame is rendered. Using this feature may add a notable amount of render time.

Type:

(Array[MoviePipelinePostProcessPass])

property allocate_history_per_tile: bool

[Read-Write] If enabled, a FSceneViewStateInterface is allocated for each tile in the high resolution image. This is required for TAA/TSR/Lumen and other modern rendering features to work correctly, but can consume significant amounts of VRAM to store the state for each tile. This can be mitigated (at significant render time impact) with the new experimental bPageToSystemMemory cost.

Type:

(bool)

property allow_ocio: bool

[Read-Write] Allow the output file OpenColorIO transform to be used on this render.

Type:

(bool)

property denoiser_type: MovieGraphPathTracerDenoiserType

[Read-Write] Select which type of denoiser to use when the denoiser is enabled. Temporal denoisers will provide better results when denoising animated sequences (the denoising results will look more stable), especially when combined with an appropriate Frame Count (non-zero). Denoisers are implemented as plugins so you may need to enable a plugin as well for this to work.

Type:

(MovieGraphPathTracerDenoiserType)

property disable_tone_curve: bool

[Read-Write] If true, the tone curve will be disabled for this render pass. This will result in values greater than 1.0 in final renders and can optionally be combined with OCIO profiles on the file output nodes to convert from Linear Values in Working Color Space (which is sRGB (Rec. 709) by default, unless changed in the project settings).

Type:

(bool)

property enable_denoiser: bool

[Read-Write] If true the resulting image will be denoised at the end of each set of Spatial Samples.

Type:

(bool)

property enable_high_resolution_tiling: bool

[Read-Write] If true, the render will be done using a “tiled” render, which can overcome size limitations of GPUs but comes with a significant number of limitations. The internal GBuffer used for rendering is quite memory intensive, so a very large (ie: 8-16k) render may be impractical from a memory standpoint. You can enable High Resolution Tiling to render this in multiple smaller passes, but there is overhead to each tile as well, in terms of raytracing and lumen acceleration structures.

  • If you have VRAM available, it’s better to render with 1 tile instead of 2, and instead increase the TDR (Timeout Device Recovery) in

your OS to allow frames to take longer than the default 2s limit. - If you need to use tiling, and you need to use Lumen, TAA/TSR, or other rendering features that require the previous frame’s buffer, then you’ll need to enable bAllocateHistoryPerTile. This can come at a large VRAM cost but may require less vram than having a larger GBuffer resolution. - If you have spare system memory (RAM), you can use the experimental bPageToSystemMemory feature to download all of the per-tile rendering history into CPU memory after each tile, and then upload it again before the next time that tile is used. This comes at a _significant_ performance and system memory cost but can allow utilizing significantly larger overall resolutions while still supporting Lumen, TAA/TSR and other features.

Type:

(bool)

property enable_reference_motion_blur: bool

[Read-Write] When enabled, the path tracer will blend all spatial and temporal samples prior to the denoising and will disable post-processed motion blur. In this mode it is possible to use higher temporal sample counts to improve the motion blur quality. This mode also automatically enabled reference DOF. When this option is disabled, the path tracer will accumulate spatial samples, but denoise them prior to accumulation of temporal samples.

Type:

(bool)

property frame_count: int

[Read-Write] The number of frames to consider when using temporal-based denoisers. Generally higher numbers will result in longer denoising times and higher memory requirements. For NFOR this number refers to how many frames to consider on both sides of the current frame (ie: 2 means consider 2 before, and 2 after the currently denoised frame), but other denoiser implementations may interpret this value differently.

Type:

(int32)

property include_beauty_render_in_output: bool

[Read-Write] Whether the main beauty pass should be written to disk.

If just Post Process Material passes should be written to disk, turn this off.

Type:

(bool)

property lighting_components_include_diffuse: bool

[Read-Write] Whether the render should include diffuse lighting contributions.

Type:

(bool)

property lighting_components_include_emissive: bool

[Read-Write] Whether the render should include directly visible emissive components.

Type:

(bool)

property lighting_components_include_indirect_diffuse: bool

[Read-Write] Whether the render should include indirect diffuse lighting contributions.

Type:

(bool)

property lighting_components_include_indirect_specular: bool

[Read-Write] Whether the render should include indirect specular lighting contributions.

Type:

(bool)

property lighting_components_include_indirect_volume: bool

[Read-Write] Whether the render should include indirect volume lighting contributions.

Type:

(bool)

property lighting_components_include_specular: bool

[Read-Write] Whether the render should include specular lighting contributions.

Type:

(bool)

property lighting_components_include_volume: bool

[Read-Write] Whether the render should include volume lighting contributions.

Type:

(bool)

property overlap_percentage: float

[Read-Write] Rendering effects such as Depth of Field may produce different results near the edge of a tile (as it cannot sample outside of the tile itself), so this setting allows you to create an overlapped region between tiles. 10% is a good starting point, but may need to be increased if you have extremely large depth of field. Only has an effect if bEnableHighResolutionTiling is enabled.

Note: This uses 0-50 and not 0-.5 like the previous system did to bring it in-line with other usages of overscan in the engine (nDisplay).

Type:

(float)

property override_additional_post_process_materials: bool

[Read-Write]

Type:

(bool)

property override_b_allocate_history_per_tile: bool

[Read-Write]

Type:

(bool)

property override_b_allow_ocio: bool

[Read-Write]

Type:

(bool)

property override_b_disable_tone_curve: bool

[Read-Write]

Type:

(bool)

property override_b_enable_denoiser: bool

[Read-Write]

Type:

(bool)

property override_b_enable_high_resolution_tiling: bool

[Read-Write]

Type:

(bool)

property override_b_enable_reference_motion_blur: bool

[Read-Write]

Type:

(bool)

property override_b_include_beauty_render_in_output: bool

[Read-Write]

Type:

(bool)

property override_b_lighting_components_include_diffuse: bool

[Read-Write]

Type:

(bool)

property override_b_lighting_components_include_emissive: bool

[Read-Write]

Type:

(bool)

property override_b_lighting_components_include_indirect_diffuse: bool

[Read-Write]

Type:

(bool)

property override_b_lighting_components_include_indirect_specular: bool

[Read-Write]

Type:

(bool)

property override_b_lighting_components_include_indirect_volume: bool

[Read-Write]

Type:

(bool)

property override_b_lighting_components_include_specular: bool

[Read-Write]

Type:

(bool)

property override_b_lighting_components_include_volume: bool

[Read-Write]

Type:

(bool)

property override_b_page_to_system_memory: bool

[Read-Write]

Type:

(bool)

property override_b_write_all_samples: bool

[Read-Write]

Type:

(bool)

property override_denoiser_type: bool

[Read-Write]

Type:

(bool)

property override_frame_count: bool

[Read-Write]

Type:

(bool)

property override_overlap_percentage: bool

[Read-Write]

Type:

(bool)

property override_ppm_file_name_format: bool

[Read-Write]

Type:

(bool)

property override_seed_offset: bool

[Read-Write]

Type:

(bool)

property override_spatial_sample_count: bool

[Read-Write]

Type:

(bool)

property override_tile_count: bool

[Read-Write]

Type:

(bool)

property page_to_system_memory: bool

When enabled, after each tile is rendered, MRQ will download the per-tile image history back to system RAM, and then the next time the tile is rendered on the subsequent frame the data is transfered from sytem memory back to GPU memory for use. This significantly impacts rendering time, but can allow using Lumen and other features that rely on bAllocateHistoryPerTile to be used on GPUs that do not have enough VRAM to store all of the history data for every tile at once.

Type:

(bool)

Type:

[Read-Write] Experimental Feature

property ppm_file_name_format: str

[Read-Write] If specified, overrides the output node’s file name format, and uses this file name format for Post Process Material passes instead.

Type:

(str)

property seed_offset: int

[Read-Write] Offset to apply to random number generator seed. Intentionally not exposed to the UI as meant for automated pipelines. Should be edited via scripting if needs to be changed.

Type:

(int32)

property spatial_sample_count: int

[Read-Write] How many sub-pixel jitter renders should we do per temporal sample? This can be used to achieve high sample counts without Temporal Sub-Sampling (allowing high sample counts without motion blur being enabled), but we generally recommend using Temporal Sub-Samples when possible. It can also be combined with temporal samples and you will get SpatialSampleCount many renders per temporal sample.

Type:

(int32)

property tile_count: int

[Read-Write] If bEnableHighResolutionTiling is enabled, what is the tile count that the screen should be broken into. This is not in pixels, but in number of tiles per side, ie: an output resolution of 4k, and a tile count of 2, produces 4 tiles (2 horizontal, 2 vertical) with each tile being 1080p. Larger tile counts shrink the individual render resolution, but increase the total number of renders needed.

Type:

(int32)

property write_all_samples: bool

[Read-Write] Debug Feature. This can be used to write out each individual spatial sample rendered by this render pass, which allows you to see which images are being accumulated together. Can be useful for debugging incorrect looking frames to see which sub-frame evaluations were incorrect.

Type:

(bool)