unreal.MovieGraphDeferredRenderPassNode

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

Bases: MovieGraphImagePassBaseNode

A render node which uses the Deferred Renderer.

C++ Source:

  • Plugin: MovieRenderPipeline

  • Module: MovieRenderPipelineRenderPasses

  • File: MovieGraphDeferredPassNode.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.

  • anti_aliasing_method (AntiAliasingMethod): [Read-Write] Which anti-aliasing method should this render use. If this is set to None, then Movie Render Graph will handle anti-aliasing by doing a sub-pixel jitter (one for each temporal/spatial sample). Some rendering effects rely on TSR or TAA to reduce noise so we recommend leaving them enabled where possible. All options work with Spatial and Temporal samples, but TSR/TAA may introduce minor visual artifacts (such as ghosting). MSAA is not supported in the deferred renderer.

  • 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_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.

  • 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.

  • 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.

    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_anti_aliasing_method (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_high_resolution_tiling (bool): [Read-Write]

  • override_b_include_beauty_render_in_output (bool): [Read-Write]

  • override_b_page_to_system_memory (bool): [Read-Write]

  • override_b_write_all_samples (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_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]

  • override_view_mode_index (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.

  • 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.

  • view_mode_index (ViewModeIndex): [Read-Write] The view mode index that will be applied to renders. These mirror the View Modes you find in the Viewport, but most view modes other than Lit are used for debugging so they may not do what you expect, or may have to be used in combination with certain Show Flags to produce a result similar to what you see in the viewport.

  • write_all_samples (bool): [Read-Write] Debug Feature. Can use this to write out each individual Temporal and 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 anti_aliasing_method: AntiAliasingMethod

[Read-Write] Which anti-aliasing method should this render use. If this is set to None, then Movie Render Graph will handle anti-aliasing by doing a sub-pixel jitter (one for each temporal/spatial sample). Some rendering effects rely on TSR or TAA to reduce noise so we recommend leaving them enabled where possible. All options work with Spatial and Temporal samples, but TSR/TAA may introduce minor visual artifacts (such as ghosting). MSAA is not supported in the deferred renderer.

Type:

(AntiAliasingMethod)

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_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 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 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.

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_anti_aliasing_method: 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_high_resolution_tiling: bool

[Read-Write]

Type:

(bool)

property override_b_include_beauty_render_in_output: 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_overlap_percentage: bool

[Read-Write]

Type:

(bool)

property override_ppm_file_name_format: 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 override_view_mode_index: 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 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 view_mode_index: ViewModeIndex

[Read-Write] The view mode index that will be applied to renders. These mirror the View Modes you find in the Viewport, but most view modes other than Lit are used for debugging so they may not do what you expect, or may have to be used in combination with certain Show Flags to produce a result similar to what you see in the viewport.

Type:

(ViewModeIndex)

property write_all_samples: bool

[Read-Write] Debug Feature. Can use this to write out each individual Temporal and 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)