107 lines
6.2 KiB
C
107 lines
6.2 KiB
C
// Copyright Epic Games, Inc. All Rights Reserved.
|
|
|
|
#pragma once
|
|
|
|
// Constants for 'SamplerType'
|
|
#define PATHTRACER_SAMPLER_DEFAULT 0
|
|
#define PATHTRACER_SAMPLER_ERROR_DIFFUSION 1
|
|
|
|
// Constants for the 'Flags' field of FPathTracingLight
|
|
#define PATHTRACER_FLAG_LIGHTING_CHANNEL_MASK (7 << 0) // Which lighting channel is this light assigned to?
|
|
#define PATHTRACER_FLAG_TRANSMISSION_MASK (1 << 3) // Does the light affect the transmission side?
|
|
#define PATHTRACER_FLAG_NON_INVERSE_SQUARE_FALLOFF_MASK (1 << 4) // Does the light have a non-inverse square decay?
|
|
#define PATHTRACER_FLAG_STATIONARY_MASK (1 << 5) // Only used by GPULightmass
|
|
#define PATHTRACER_FLAG_TYPE_MASK (7 << 6)
|
|
#define PATHTRACING_LIGHT_SKY (0 << 6)
|
|
#define PATHTRACING_LIGHT_DIRECTIONAL (1 << 6)
|
|
#define PATHTRACING_LIGHT_POINT (2 << 6)
|
|
#define PATHTRACING_LIGHT_SPOT (3 << 6)
|
|
#define PATHTRACING_LIGHT_RECT (4 << 6)
|
|
#define PATHTRACER_FLAG_CAST_SHADOW_MASK (1 << 9)
|
|
#define PATHTRACER_FLAG_CAST_VOL_SHADOW_MASK (1 << 10)
|
|
#define PATHTRACER_FLAG_CAST_CLOUD_SHADOW_MASK (1 << 11)
|
|
#define PATHTRACER_FLAG_HAS_RECT_TEXTURE_MASK (1 << 12)
|
|
|
|
#define PATHTRACER_MASK_CAMERA 0x01 // opaque and alpha tested meshes and particles as a whole (primary ray) excluding hairs
|
|
#define PATHTRACER_MASK_HAIR_CAMERA 0x02 // For primary ray tracing against hair
|
|
#define PATHTRACER_MASK_SHADOW 0x04 // Whether the geometry is visible for shadow rays
|
|
#define PATHTRACER_MASK_HAIR_SHADOW 0x08 // Whether hair is visible for shadow rays
|
|
#define PATHTRACER_MASK_INDIRECT 0x10 // opaque and alpha tested meshes and particles as a whole (indirect ray) excluding hairs
|
|
#define PATHTRACER_MASK_HAIR_INDIRECT 0x20 // For indirect ray tracing against hair
|
|
#define PATHTRACER_MASK_CAMERA_TRANSLUCENT 0x40
|
|
#define PATHTRACER_MASK_INDIRECT_TRANSLUCENT 0x80
|
|
|
|
#define PATHTRACER_MASK_IGNORE 0x00 // used when mapping general tracing mask to path tracing mask
|
|
#define PATHTRACER_MASK_ALL 0xFF
|
|
|
|
// Constants for light contribution types (AOV decomposition of the image)
|
|
// Leaving all constants enabled creates the beauty image, but turning off some bits allows
|
|
// the path tracer to create an image with only certain components enabled
|
|
#define PATHTRACER_CONTRIBUTION_EMISSIVE 1
|
|
#define PATHTRACER_CONTRIBUTION_DIFFUSE 2
|
|
#define PATHTRACER_CONTRIBUTION_SPECULAR 4
|
|
#define PATHTRACER_CONTRIBUTION_VOLUME 8
|
|
|
|
// Constants for the path tracer light grid
|
|
#define PATHTRACER_LIGHT_GRID_SINGULAR_MASK 0x80000000u
|
|
#define PATHTRACER_LIGHT_GRID_LIGHT_COUNT_MASK 0x7FFFFFFFu
|
|
|
|
// Constants related to volumetric support
|
|
#define VOLUMEID_ATMOSPHERE 0
|
|
#define VOLUMEID_CLOUDS 1
|
|
#define VOLUMEID_FOG 2
|
|
#define VOLUMEID_HETEROGENEOUS_VOLUMES 3
|
|
#define PATH_TRACER_MAX_VOLUMES 4
|
|
|
|
#define PATH_TRACER_VOLUME_ENABLE_BIT (1u)
|
|
#define PATH_TRACER_VOLUME_ENABLE_ATMOSPHERE (PATH_TRACER_VOLUME_ENABLE_BIT << VOLUMEID_ATMOSPHERE)
|
|
#define PATH_TRACER_VOLUME_ENABLE_CLOUDS (PATH_TRACER_VOLUME_ENABLE_BIT << VOLUMEID_CLOUDS)
|
|
#define PATH_TRACER_VOLUME_ENABLE_FOG (PATH_TRACER_VOLUME_ENABLE_BIT << VOLUMEID_FOG)
|
|
#define PATH_TRACER_VOLUME_ENABLE_HETEROGENEOUS_VOLUMES (PATH_TRACER_VOLUME_ENABLE_BIT << VOLUMEID_HETEROGENEOUS_VOLUMES)
|
|
#define PATH_TRACER_VOLUME_ENABLE_MASK ((1u << PATH_TRACER_MAX_VOLUMES) - 1)
|
|
|
|
#define PATH_TRACER_VOLUME_HOLDOUT_BIT (PATH_TRACER_VOLUME_ENABLE_BIT << PATH_TRACER_MAX_VOLUMES)
|
|
#define PATH_TRACER_VOLUME_HOLDOUT_ATMOSPHERE (PATH_TRACER_VOLUME_HOLDOUT_BIT << VOLUMEID_ATMOSPHERE)
|
|
#define PATH_TRACER_VOLUME_HOLDOUT_CLOUDS (PATH_TRACER_VOLUME_HOLDOUT_BIT << VOLUMEID_CLOUDS)
|
|
#define PATH_TRACER_VOLUME_HOLDOUT_FOG (PATH_TRACER_VOLUME_HOLDOUT_BIT << VOLUMEID_FOG)
|
|
#define PATH_TRACER_VOLUME_HOLDOUT_HETEROGENEOUS_VOLUMES (PATH_TRACER_VOLUME_HOLDOUT_BIT << VOLUMEID_HETEROGENEOUS_VOLUMES)
|
|
#define PATH_TRACER_VOLUME_HOLDOUT_MASK (PATH_TRACER_VOLUME_ENABLE_MASK << PATH_TRACER_MAX_VOLUMES)
|
|
|
|
#define PATH_TRACER_VOLUME_USE_ANALYTIC_TRANSMITTANCE (256u)
|
|
|
|
// These flags are reserved for passing information to the cloud callable shader
|
|
#define PATH_TRACER_VOLUME_CALLABLE_FLAGS_TRANSMITTANCE (512u) // only compute transmittance for the cloud portion
|
|
#define PATH_TRACER_VOLUME_CALLABLE_FLAGS_GET_SAMPLE (1024u) // perform RIS sampling for a scatter location (else do transmittance/emission/alpha calc only)
|
|
#define PATH_TRACER_VOLUME_CALLABLE_FLAGS_BOUNCE_MASK (2048u * 31) // What bounce are we rendering? (5 bits, so bounces>31 are clamped)
|
|
#define PATH_TRACER_VOLUME_CALLABLE_FLAGS_BOUNCE_SHIFT (11)
|
|
|
|
// Flags beyond this point are not visible to the cloud callable shader
|
|
#define PATH_TRACER_VOLUME_SHOW_PLANET_GROUND (65536u)
|
|
|
|
// Constants related to debugging
|
|
#define PATH_TRACER_DEBUG_VIZ_RADIANCE 0
|
|
#define PATH_TRACER_DEBUG_VIZ_WORLD_NORMAL 1
|
|
#define PATH_TRACER_DEBUG_VIZ_WORLD_SMOOTH_NORMAL 2
|
|
#define PATH_TRACER_DEBUG_VIZ_WORLD_GEO_NORMAL 3
|
|
#define PATH_TRACER_DEBUG_VIZ_BASE_COLOR 4
|
|
#define PATH_TRACER_DEBUG_VIZ_DIFFUSE_COLOR 5
|
|
#define PATH_TRACER_DEBUG_VIZ_SPECULAR_COLOR 6
|
|
#define PATH_TRACER_DEBUG_VIZ_OPACITY 7
|
|
#define PATH_TRACER_DEBUG_VIZ_METALLIC 8
|
|
#define PATH_TRACER_DEBUG_VIZ_SPECULAR 9
|
|
#define PATH_TRACER_DEBUG_VIZ_ROUGHNESS 10
|
|
#define PATH_TRACER_DEBUG_VIZ_IOR 11
|
|
#define PATH_TRACER_DEBUG_VIZ_SHADING_MODEL 12
|
|
#define PATH_TRACER_DEBUG_VIZ_LIGHTING_CHANNEL_MASK 13
|
|
#define PATH_TRACER_DEBUG_VIZ_CUSTOM_DATA0 14
|
|
#define PATH_TRACER_DEBUG_VIZ_CUSTOM_DATA1 15
|
|
#define PATH_TRACER_DEBUG_VIZ_WORLD_POSITION 16
|
|
#define PATH_TRACER_DEBUG_VIZ_PRIMARY_RAYS 17
|
|
#define PATH_TRACER_DEBUG_VIZ_WORLD_TANGENT 18
|
|
#define PATH_TRACER_DEBUG_VIZ_ANISOTROPY 19
|
|
#define PATH_TRACER_DEBUG_VIZ_LIGHT_GRID_COUNT 20
|
|
#define PATH_TRACER_DEBUG_VIZ_LIGHT_GRID_AXIS 21
|
|
#define PATH_TRACER_DEBUG_VIZ_DECAL_GRID_COUNT 22
|
|
#define PATH_TRACER_DEBUG_VIZ_DECAL_GRID_AXIS 23
|
|
#define PATH_TRACER_DEBUG_VIZ_VOLUME_LIGHT_COUNT 24
|
|
#define PATH_TRACER_DEBUG_VIZ_HITKIND 25 |