101 lines
4.2 KiB
C++
101 lines
4.2 KiB
C++
// Copyright Epic Games, Inc. All Rights Reserved.
|
|
|
|
#pragma once
|
|
|
|
#include "RHIDefinitions.h"
|
|
#include "RendererInterface.h"
|
|
#include "ShaderParameterMacros.h"
|
|
#include "LumenRadianceCacheInterpolation.h"
|
|
#include "LumenFrontLayerTranslucency.h"
|
|
#include "BlueNoise.h"
|
|
#include "HZB.h"
|
|
|
|
DECLARE_UNIFORM_BUFFER_STRUCT(FSceneTextureUniformParameters, ENGINE_API);
|
|
|
|
class FSceneTextureParameters;
|
|
struct FLumenSceneFrameTemporaries;
|
|
class FLumenCardTracingParameters;
|
|
|
|
class FLumenTranslucencyGIVolume
|
|
{
|
|
public:
|
|
LumenRadianceCache::FRadianceCacheInterpolationParameters RadianceCacheInterpolationParameters;
|
|
FRDGTextureRef Texture0 = nullptr;
|
|
FRDGTextureRef Texture1 = nullptr;
|
|
FRDGTextureRef HistoryTexture0 = nullptr;
|
|
FRDGTextureRef HistoryTexture1 = nullptr;
|
|
FVector GridZParams = FVector::ZeroVector;
|
|
uint32 GridPixelSizeShift = 0;
|
|
FIntVector GridSize = FIntVector::ZeroValue;
|
|
};
|
|
|
|
// Used by translucent BasePass
|
|
BEGIN_SHADER_PARAMETER_STRUCT(FLumenTranslucencyLightingParameters, )
|
|
SHADER_PARAMETER_STRUCT_INCLUDE(LumenRadianceCache::FRadianceCacheInterpolationParameters, RadianceCacheInterpolationParameters)
|
|
SHADER_PARAMETER_STRUCT_INCLUDE(FLumenFrontLayerTranslucencyReflectionParameters, FrontLayerTranslucencyReflectionParameters)
|
|
SHADER_PARAMETER_RDG_TEXTURE(Texture3D, TranslucencyGIVolume0)
|
|
SHADER_PARAMETER_RDG_TEXTURE(Texture3D, TranslucencyGIVolume1)
|
|
SHADER_PARAMETER_RDG_TEXTURE(Texture3D, TranslucencyGIVolumeHistory0)
|
|
SHADER_PARAMETER_RDG_TEXTURE(Texture3D, TranslucencyGIVolumeHistory1)
|
|
SHADER_PARAMETER_SAMPLER(SamplerState, TranslucencyGIVolumeSampler)
|
|
SHADER_PARAMETER(FVector3f, TranslucencyGIGridZParams)
|
|
SHADER_PARAMETER(uint32, TranslucencyGIGridPixelSizeShift)
|
|
SHADER_PARAMETER(FIntVector, TranslucencyGIGridSize)
|
|
END_SHADER_PARAMETER_STRUCT()
|
|
|
|
// Used by VolumetricFog and HeterogeneousVolumes
|
|
BEGIN_GLOBAL_SHADER_PARAMETER_STRUCT(FLumenTranslucencyLightingUniforms, )
|
|
SHADER_PARAMETER_STRUCT_INCLUDE(FLumenTranslucencyLightingParameters, Parameters)
|
|
END_GLOBAL_SHADER_PARAMETER_STRUCT()
|
|
|
|
extern FLumenTranslucencyLightingParameters GetLumenTranslucencyLightingParameters(
|
|
FRDGBuilder& GraphBuilder,
|
|
const FLumenTranslucencyGIVolume& LumenTranslucencyGIVolume,
|
|
const FLumenFrontLayerTranslucency& LumenFrontLayerTranslucency
|
|
);
|
|
|
|
// Used by Translucency Lighting pipeline shaders
|
|
BEGIN_SHADER_PARAMETER_STRUCT(FLumenTranslucencyLightingVolumeParameters, )
|
|
SHADER_PARAMETER_STRUCT_REF(FBlueNoise, BlueNoise)
|
|
SHADER_PARAMETER(FVector3f, TranslucencyGIGridZParams)
|
|
SHADER_PARAMETER(uint32, TranslucencyGIGridPixelSizeShift)
|
|
SHADER_PARAMETER(FIntVector, TranslucencyGIGridSize)
|
|
SHADER_PARAMETER(int32, FroxelDirectionJitterFrameIndex)
|
|
SHADER_PARAMETER(FVector3f, FrameJitterOffset)
|
|
SHADER_PARAMETER(FMatrix44f, UnjitteredClipToTranslatedWorld)
|
|
SHADER_PARAMETER(uint32, TranslucencyVolumeTracingOctahedronResolution)
|
|
SHADER_PARAMETER(float, HZBMipLevel)
|
|
SHADER_PARAMETER(float, GridCenterOffsetFromDepthBuffer)
|
|
SHADER_PARAMETER(float, GridCenterOffsetThresholdToAcceptDepthBufferOffset)
|
|
SHADER_PARAMETER_STRUCT_INCLUDE(FHZBParameters, HZBParameters)
|
|
END_SHADER_PARAMETER_STRUCT()
|
|
|
|
BEGIN_SHADER_PARAMETER_STRUCT(FLumenTranslucencyLightingVolumeTraceSetupParameters, )
|
|
SHADER_PARAMETER(float, StepFactor)
|
|
SHADER_PARAMETER(float, MaxTraceDistance)
|
|
SHADER_PARAMETER(float, VoxelTraceStartDistanceScale)
|
|
SHADER_PARAMETER(float, MaxRayIntensity)
|
|
END_SHADER_PARAMETER_STRUCT()
|
|
|
|
namespace Lumen
|
|
{
|
|
extern bool UseHardwareRayTracedTranslucencyVolume(const FSceneViewFamily& ViewFamily);
|
|
extern bool UseLumenTranslucencyRadianceCacheReflections(const FSceneViewFamily& ViewFamily);
|
|
}
|
|
|
|
extern void HardwareRayTraceTranslucencyVolume(
|
|
FRDGBuilder& GraphBuilder,
|
|
const FViewInfo& View,
|
|
const FLumenCardTracingParameters& TracingParameters,
|
|
LumenRadianceCache::FRadianceCacheInterpolationParameters RadianceCacheParameters,
|
|
FLumenTranslucencyLightingVolumeParameters VolumeParameters,
|
|
FLumenTranslucencyLightingVolumeTraceSetupParameters TraceSetupParameters,
|
|
FRDGTextureRef VolumeTraceRadiance,
|
|
FRDGTextureRef VolumeTraceHitDistance,
|
|
ERDGPassFlags ComputePassFlags
|
|
);
|
|
|
|
namespace LumenTranslucencyVolumeRadianceCache
|
|
{
|
|
extern LumenRadianceCache::FRadianceCacheInputs SetupRadianceCacheInputs(const FViewInfo& View);
|
|
}; |