Pathtracing#

Pathtracing allows you to tweak the behavior of the Path Tracer in both subtle and profound ways. The technical details go deep into Ray Tracing theory.

PathTracing

Ref

Option

RTX Option

Default Value

Description

1

RNG: Seed with Frame Index Checkbox

rtx.rngSeedWithFrameIndex

Checked

Indicates that pseudo-random number generator should be seeded with the frame number of the application every frame, otherwise seed with 0.

This should generally always be enabled as without the frame index each frame will typically be identical in the random values that are produced which will result in incorrect rendering. Only meant as a debugging tool.

2

Resolver

3

Max Primary Interactions

rtx.primaryRayMaxInteractions

32

The maximum number of resolver interactions to use for primary (initial G-Buffer) rays.

This affects how many Decals, Ray Portals and potentially particles (if unordered approximations are not enabled) may be interacted with along a ray at the cost of performance for higher amounts of interactions.

4

Max PSR Interactions

rtx.psrRayMaxInteractions

32

The maximum number of resolver interactions to use for PSR (primary surface replacement G-Buffer) rays. This affects how many Decals, Ray Portals and potentially particles (if unordered approximations are not enabled) may be interacted with along a ray at the cost of performance for higher amounts of interactions.

5

Max Secondary Interactions

rtx.secondaryRayMaxInteractions

8

The maximum number of resolver interactions to use for primary (initial G-Buffer) rays.

This affects how many Decals, Ray Portals and potentially particles (if unordered approximations are not enabled) may be interacted with along a ray at the cost of performance for higher amounts of interactions.

6

Separate Unordered Approximations Checkbox

rtx.enableSeparateUnorderedApproximations

Checked

Use a separate loop during resolving for surfaces which can have lighting evaluated in an approximate unordered way on each path segment (such as particles).

This improves performance typically in how particles or decals are rendered and should usually always be enabled.

Do note however the unordered nature of this resolving method may result in visual artifacts with large numbers of stacked particles due to difficulty in determining the intended order.

Additionally, unordered approximations will only be done on the first indirect ray bounce (as particles matter less in higher bounces), and only if enabled by its corresponding setting.

7

Direct Translucent Shadows Checkbox

rtx.enableDirectTranslucentShadows

Unchecked

Include OBJECT_MASK_TRANSLUCENT into primary visibility rays.

8

Indirect Translucent Shadows Checkbox

rtx.enableIndirectTranslucentShadows

Unchecked

Include OBJECT_MASK_TRANSLUCENT into secondary visibility rays.

9

Decal Material Blending Checkbox

rtx.enableDecalMaterialBlending

Checked

A flag to enable or disable material blending on decals.

This should generally always be enabled when decals are in use as this allows decals to be blended down onto the surface they sit slightly above which results in more convincing decals rendering.

10

Billboard Orientation Correction Checkbox

rtx.enableBillboardOrientationCorrection

Checked

11

Dev: Use I-Prims on Primary Rays Checkbox

Unchecked

12

Resolve Transparency Threshold

rtx.resolveTransparencyThreshold

0.00392157

A threshold for which any opacity value below is considered totally transparent and may be safely skipped without as significant of a performance cost.

13

Resolve Opaqueness Threshold

rtx.resolveOpaquenessThreshold

0.996078

A threshold for which any opacity value above is considered totally opaque.

14

PSR

15

Reflection PSR Enabled Checkbox

rtx.enablePSRR

Checked

A flag to enable or disable reflection PSR (Primary Surface Replacement).

When enabled this feature allows higher quality mirror-like reflections in special cases by replacing the G-Buffer’s surface with the reflected surface.

Should usually be enabled for the sake of quality as almost all applications will utilize it in the form of glass or mirrors.

16

Transmission PSR Enabled

rtx.enablePSTR

Checked

A flag to enable or disable transmission PSR (Primary Surface Replacement).

When enabled this feature allows higher quality glass-like refraction in special cases by replacing the G-Buffer’s surface with the refracted surface.

Should usually be enabled for the sake of quality as almost all applications will utilize it in the form of glass.

17

Max Reflection PSR Bounces

rtx.psrrMaxBounces

10

The maximum number of Reflection PSR bounces to traverse. Must be 15 or less due to payload encoding.

Should be set higher when many mirror-like reflection bounces may be needed, though more bounces may come at a higher performance cost.

18

Max Transmission PSR Bounces

rtx.pstrMaxBounces

10

The maximum number of Transmission PSR bounces to traverse. Must be 15 or less due to payload encoding.

Should be set higher when refraction through many layers of glass may be needed, though more bounces may come at a higher performance cost.

19

Outgoing Transmission Approx Enabled Checkbox

rtx.enablePSTROutgoingSplitApproximation

Checked

Enable transmission PSR on outgoing transmission events such as leaving translucent materials (rather than respecting no-split path PSR rule).

… Typically this results in better looking glass when enabled (at the cost of accuracy due to ignoring non-TIR inter-reflections within the glass itself).

20

Incident Transmission Approx Enabled Checkbox

Checked

21

Reflection PSR Normal Detail Threshold

rtx.psrrNormalDetailThreshold

0.000

A threshold value to indicate that the denoiser’s alternate disocclusion threshold should be used when normal map “detail” on a reflection PSR surface exceeds a desired amount.

Normal detail is defined as 1-dot(tangent_normal, vec3(0, 0, 1)), or in other words it is 0 when no normal mapping is used, and 1 when the normal mapped normal is perpendicular to the underlying normal.

This is typically used to reduce flickering artifacts resulting from reflection on surfaces like glass leveraging normal maps as often the denoiser is too aggressive with disocclusion checks frame to frame when DLSS or other camera jittering is in use.

22

Transmission PSR Normal Detail Threshold

rtx.pstrNormalDetailThreshold

0.000

A threshold value to indicate that the denoiser’s alternate disocclusion threshold should be used when normal map “detail” on a transmission PSR surface exceeds a desired amount.

Normal detail is defined as 1-dot(tangent_normal, vec3(0, 0, 1)), or in other words it is 0 when no normal mapping is used, and 1 when the normal mapped normal is perpendicular to the underlying normal.

This is typically used to reduce flickering artifacts resulting from refraction on surfaces like glass leveraging normal maps as often the denoiser is too aggressive with disocclusion checks frame to frame when DLSS or other camera jittering is in use.

23

Integrator

24

Enable Secondary Bounces Checkbox

rtx.enableSecondaryBounces

Checked

Enables indirect lighting (lighting from diffuse/specular bounces to one or more other surfaces) on surfaces when set to true, otherwise disables it.

25

Enable Russian Roulette Checkbox

rtx.enableRussianRoulette

Checked

A flag to enable or disable Russian Roulette, a rendering technique to give paths a chance of terminating randomly with each bounce based on their importance.

This is usually useful to have enabled as it will ensure useless paths are terminated earlier while more important paths are allowed to accumulate more bounces.

Furthermore this allows for the renderer to remain unbiased whereas a hard clamp on the number of bounces will introduce bias (though this is also done in Remix for the sake of performance).

On the other hand, randomly terminating paths too aggressively may leave threads in GPU warps without work which may hurt thread occupancy when not used with a thread-reordering technique like SER.

26

Enable Probability Dithering Filtering for Primary Bounch Checkbox

rtx.enableFirstBounceLobeProbabilityDithering

Checked

A flag to enable or disable screen-space probability dithering on the first indirect lobe sampled.

Generally sampling a diffuse, specular or other lobe relies on a random number generated against the probability of sampling each lobe, effectively focusing more rays/paths on lobes which matter more.

This can cause issues however with denoisers which do not handle sparse stochastic signals (like those from path tracing) well as they may be expecting a more “complete” signal like those used in simpler branching ray tracing setups.

To help solve this issue this option uses a temporal screen space dithering based on the probability rather than a purely random choice to determine which lobe to sample from on the first indirect bounce.

This as a result helps ensure there will always be a diffuse or specular sample within the dithering pattern’s area and should help the denoising resolve a more stable result.

27

Unordered Resolve in Indirect Rays Checkbox

rtx.enableUnorderedResolveInIndirectRays

Checked

A flag to enable or disable unordered resolve approximations in indirect rays.

This allows for the presence of unordered approximations in resolving to be overridden in indirect rays and as such requires separate unordered approximations to be enabled to have any effect.

This option should be enabled if objects which can be resolvered in an unordered way in indirect rays are expected for higher quality in reflections, but may come at a performance cost.

Note that even with this option enabled, unordered resolve approximations are only done on the first indirect bounce for the sake of performance overall.

28

Emissive Particles in Indirect Rays Checkbox

rtx.beamTextures

Unchecked

Textures on draw calls that are already particles or emissivity blended and have beam-like geometry.

Typically objects marked as particles or objects using emissive blending will be rendered with a special method which allows re-orientation of the billboard geometry assumed to make up the draw call in indirect rays (reflections for example).

This method works fine for typical particles, but some (e.g. a laser beam) may not be well-represented with the typical billboard assumption of simply needing to rotate around its centroid to face the view direction.

To handle such cases a different beam mode is used to treat objects as more of a cylindrical beam and re-orient around its main spanning axis, allowing for better rendering of these beam-like effect objects.

29

Minimum Path Bounces

rtx.pathMinBounces

1

The minimum number of indirect bounces the path must complete before Russian Roulette can be used. Must be < 16.

This value is recommended to stay fairly low (1 for example) as forcing longer paths when they carry little contribution quickly becomes detrimental to performance.

30

Maximum Path Bounces

rtx.pathMaxBounces

4

The maximum number of indirect bounces the path will be allowed to complete. Must be < 16.

Higher values result in better indirect lighting quality due to biasing the signal less, lower values result in better performance.

Very high values are not recommended however as while long paths may be technically needed for unbiased rendering, in practice the contributions from higher bounces have diminishing returns.

31

Firefly Filtering Luminance Threshold

rtx.fireflyFilteringLuminanceThreshold

1000.000

Maximum luminance threshold for the firefly filtering to clamp to.

32

Opaque Diffuse Lobe Probability Zero Threshold

rtx.opaqueDiffuseLobeSamplingProbabilityZeroThreshold

0.010

The threshold for which to zero opaque diffuse probability weight values.

33

Min Opaque Diffuse Lobe Probability

rtx.minOpaqueDiffuseLobeSamplingProbability

0.250

The minimum allowed non-zero value for opaque diffuse probability weights.

34

Opaque Specular Lobe Probability Zero Threshold

rtx.opaqueSpecularLobeSamplingProbabilityZeroThreshold

0.010

The threshold for which to zero opaque specular probability weight values.

35

Min Opaque Specular Lobe Probability

rtx.minOpaqueSpecularLobeSamplingProbability

0.250

The minimum allowed non-zero value for opaque specular probability weights.

36

Opaque Opacity Transmission Lobe Probability Zero Threshold

rtx.opaqueOpacityTransmissionLobeSamplingProbabilityZeroThreshold

0.010

The threshold for which to zero opaque opacity probability weight values.

37

Min Opaque Opacity Transmission Lobe Probability

rtx.minOpaqueOpacityTransmissionLobeSamplingProbability

0.250

The minimum allowed non-zero value for opaque opacity probability weights.

38

Translucent Specular Lobe Probability Zero Threshold

rtx.translucentSpecularLobeSamplingProbabilityZeroThreshold

0.010

The threshold for which to zero translucent specular probability weight values.

39

Min Translucent Specular Lobe Probability

rtx.minTranslucentSpecularLobeSamplingProbability

0.300

The minimum allowed non-zero value for translucent specular probability weights.

40

Translucent Transmission Lobe Probability Zero Threshold

rtx.translucentTransmissionLobeSamplingProbabilityZeroThreshold

0.010

The threshold for which to zero translucent transmission probability weight values.

41

Min Translucent Transmission Lobe Probability

rtx.minTranslucentTransmissionLobeSamplingProbability

0.250

The minimum allowed non-zero value for translucent transmission probability weights.

42

Indirect Ray Spread Angle Factor

rtx.indirectRaySpreadAngleFactor

0.050

A tuning factor applied to the spread angle calculated from the sampled lobe solid angle PDF. Should be 0-1.

This scaled spread angle is used to widen a ray’s cone angle after indirect lighting BRDF samples to essentially prefilter the effects of the BRDF lobe’s spread which potentially may reduce noise from indirect rays (e.g. reflections).

Prefiltering will overblur detail however compared to the ground truth of casting multiple samples especially given this calculated spread angle is a basic approximation and ray cones to begin with are a simple approximation for ray pixel footprint.

As such rather than using the spread angle fully this spread angle factor allows it to be scaled down to something more narrow so that overblurring can be minimized. Similarly, setting this factor to 0 disables this cone angle widening feature.

43

Russian Roulette

44

1st Bounce: Min Continue Probability

rtx.russianRoulette1stBounceMinContinueProbability

0.600

The minimum probability of continuing a path when Russian Roulette is being used on the first bounce.

This ensures that on the first bounce rays are not terminated too aggressively as it may be useful for some denoisers to have a contribution even if it is a relatively unimportant one rather than a missing indirect sample.

45

1st Bounce: Max Continue Probability

rtx.russianRoulette1stBounceMaxContinueProbability

1.000

The maximum probability of continuing a path when Russian Roulette is being used on the first bounce.

This is similar to the usual max continuation probability for Russian Roulette, but specifically only for the first bounce.

46

2nd+ Bounce: Max Continue Probability

rtx.russianRouletteMaxContinueProbability

0.900

“The maximum probability of continuing a path when Russian Roulette is being used.

This ensures all rays have a small probability of terminating each bounce, mostly to prevent infinite paths in perfectly reflective mirror rooms (though the maximum path bounce count will also ensure this).”

47

Opacity Micromap

48

Enable Opacity Micromap Checkbox

rtx.opacityMicromap.enable

Unchecked

Enables Opacity Micromaps for geometries with textures that have alpha cutouts.

This is generally the case for geometries such as fences, foliage, particles, etc. .

Opacity Micromaps greatly speed up raytracing of partially opaque triangles.

Examples of scenes that benefit a lot: multiple trees with a lot of foliage,

a ground densely covered with grass blades or steam consisting of many particles.

49

Show Advanced Settings Checkbox

rtx.opacityMicromap.showAdvancedOptions

Unchecked

Shows advanced options.

50

Enable Binding Checkbox

rtx.opacityMicromap.enableBinding

Checked

Enables binding of built Opacity Micromaps to bottom level acceleration structures.

51

Enable Baking Arrays Checkbox

rtx.opacityMicromap.enableBakingArrays

Checked

Enables baking of opacity textures into Opacity Micromap arrays per triangle.

52

Enable Building Checkbox

rtx.opacityMicromap.enableBuilding

Checked

Enables building of Opacity Micromap arrays.

53

Reset Every Frame Checkbox

rtx.opacityMicromap.enableResetEveryFrame

Unchecked

Debug: resets Opacity Micromap runtime data every frame.

54

Statistics

View Scene Statistics

55

Scene

56

Split Billboard Geometry Checkbox

rtx.opacityMicromap.building.splitBillboardGeometry

Checked

Splits billboard geometry and corresponding Opacity Micromaps to quads for higher reuse.

Games often batch instanced geometry that reuses the same geometry and textures, such as for particles.

Splitting such batches into unique subgeometries then allows higher reuse of build Opacity Micromaps.

57

Max Allowed Billboards Per Instance To Split

rtx.opacityMicromap.building.maxAllowedBillboardsPerInstanceToSplit

16

Max billboards per instance to consider for splitting (large value results in increased CPU costs on BLAS builds).

58

Cache

59

Budget: Max Vidmem Size %

rtx.opacityMicromap.cache.maxVidmemSizePercentage

0.015

Budget: Max Video Memory Size %.

60

Budget: MIn Required Size [MB]

rtx.opacityMicromap.cache.minBudgetSizeMB

512

Budget: Min Video Memory [MB] required.

If the min amount is not available, then the budget will be set to 0.

61

Budget: Max Allowed Size [MB]

rtx.opacityMicromap.cache.maxBudgetSizeMB

1536

Budget: Max Allowed Size [MB]

62

Budget: Min Vidmem Free to Not Allocate [MB]

rtx.opacityMicromap.cache.minFreeVidmemMBToNotAllocate

2560

Min Video Memory [MB] to keep free before allocating any for Opacity Micromaps.

63

Budget: Min Vidmem Free To Not Allocate [MB]

900

64

Request Filter

65

Animated Instances Checkbox

rtx.opacityMicromap.buildRequests.enableAnimatedInstances

Unchecked

Enables Opacity Micromaps for animated instances.

66

Particles Checkbox

rtx.opacityMicromap.buildRequests.enableParticles

Checked

Enables Opacity Micromaps for particles.

67

Custom Filters for Billboards Checkbox

rtx.opacityMicromap.buildRequests.customFiltersForBillboards

Checked

Applies custom filters for staged Billboard requests.

68

Max Staged Requests

rtx.opacityMicromap.buildRequests.maxRequests

5000

Max number of staged unique Opacity Micromap build requests.

Any further requests will simply be discarded until the number of staged requests decreases below this threshold.

Once a staged request passes filters for building, it is removed from the staging list.

69

MIn Instance Frame Age

rtx.opacityMicromap.buildRequests.minInstanceFrameAge

1

Min instance’s frame age which allows building Opacity Micromaps for.

70

Min Num Frames Requested

rtx.opacityMicromap.buildRequests.minNumFramesRequested

5

Min number of frames for a staged Opacity Micromap request before it is allowed to be built.

71

Max Request Frame Age

rtx.opacityMicromap.buildRequests.maxRequestFrameAge

300

Max requested frame age to allow building Opacity Micromaps for. Any requests older than this are purged.

72

Min Num Requests

rtx.opacityMicromap.buildRequests.minNumRequests

10

Min number of Opacity Micromap usage requests for a staged Opacity Micromap request before it is allowed to be built.

73

Building

74

Subdivision Level

rtx.opacityMicromap.building.subdivisionLevel

8

Opacity Micromap subdivision level per triangle.

75

Vertex, Texture Ops & Emissive Blending Checkbox

rtx.opacityMicromap.building.enableVertexAndTextureOperations

Checked

Applies vertex and texture operations during baking.

76

Allow 2 State Opacity Micromaps Checkbox

rtx.opacityMicromap.building.allow2StateOpacityMicromaps

Checked

Allows generation of two state Opacity Micromaps.

77

Force 2 State Opacity Micromaps Checkbox

rtx.opacityMicromap.building.force2StateOpacityMicromaps

Unchecked

Forces generation of two state Opacity Micromaps.

78

Decals: Min Resolve Transparency Threshold

rtx.opacityMicromap.building.decalsMinResolveTransparencyThreshold

0.0

Min resolve transparency threshold for decals.

79

Max # of uTriangles to Bake [Million per Second]

rtx.opacityMicromap.building.maxMicroTrianglesToBakeMillionPerSecond

60

Max Micro Triangles to bake [Million/Second].

80

Max # of uTriangles to Build [Million per Second]

rtx.opacityMicromap.building.maxMicroTrianglesToBuildMillionPerSecond

300

Max Micro Triangles to build [Million/Second].

81

# Frames with High Workload Multiplier at Start

rtx.opacityMicromap.building.numFramesAtStartToBuildWithHighWorkload

0

Number of frames to bake and build Opacity Micromaps with high workload multipliers.

This is used for testing to decrease frame latency for Opacity Micromaps being ready.

82

High Workload Multiplier

rtx.opacityMicromap.building.highWorkloadMultiplier

20

High workload multiplier that is applied to the number of Opacity Micromaps to bake and build per frame.

This is used for testing to decrease frame latency for Opacity Micromaps being ready.

83

Conservative Estimation

84

Enable Checkbox

rtx.opacityMicromap.building.conservativeEstimation.enable

Checked

Enables Conservative Estimation of micro triangle opacities.

85

Max Texel Taps Per uTriangle

rtx.opacityMicromap.building.conservativeEstimation.maxTexelTapsPerMicroTriangle

64

Max number of texel taps per micro triangle when Conservative Estimation is enabled.

Set to 64 as a safer cap. 512 has been found to cause a timeout.

Any micro triangles requiring more texel taps will be tagged as Opaque Unknown.


Need to leave feedback about the RTX Remix Documentation? Click here