Files
UnrealEngineUWP/Engine/Source/Runtime/Engine/Private/VolumetricCloudProxy.cpp
sebastien hillaire 738d248292 Separated Sky mie / rayleigh atmosphere lut for better control on cloud look. (start distance, fade region)
This special Mie/Ray only luts are only generated if nedeed (start distance are not 0 on the cloud ocmponent).

Measured on console with some cloud material
Off
- CameraVolumeLUT 0.08 ms
- Some Cloud Tracing   4.39 ms
On
- CameraVolumeLUT 0.09 ms
- Some Cloud Tracing   4.40 ms

=> Almost no impact on CameraVolumeLUT compute
=> cost of luts sampling when tracing material seems hiden in the tracing/marching cost noise.
=> More memory used in game: double buffered ray/mie rgba fp16 volumes are 2*2*(32*32*16)*4*2 = 512KB)


#preflight https://horde.devtools.epicgames.com/job/6357d631ae33b04ec12fc07f
#preflight https://horde.devtools.epicgames.com/job/63580224e456a68082adc4dc
#rb Jian.Ru, Ben.Woodhouse

#ushell-cherrypick of 22747354 by Sebastien.Hillaire

#ushell-cherrypick of 22749809 by Sebastien.Hillaire

[CL 22861302 by sebastien hillaire in ue5-main branch]
2022-10-31 09:13:55 -04:00

41 lines
2.0 KiB
C++

// Copyright Epic Games, Inc. All Rights Reserved.
/*=============================================================================
FVolumetricCloudSceneProxy implementation.
=============================================================================*/
#include "VolumetricCloudProxy.h"
#include "Components/VolumetricCloudComponent.h"
FVolumetricCloudSceneProxy::FVolumetricCloudSceneProxy(const UVolumetricCloudComponent* InComponent)
: LayerBottomAltitudeKm(InComponent->LayerBottomAltitude)
, LayerHeightKm(InComponent->LayerHeight)
, TracingStartMaxDistance(InComponent->TracingStartMaxDistance)
, TracingMaxDistanceMode(uint8(InComponent->TracingMaxDistanceMode))
, TracingMaxDistance(InComponent->TracingMaxDistance)
, PlanetRadiusKm(InComponent->PlanetRadius)
, GroundAlbedo(InComponent->GroundAlbedo)
, bUsePerSampleAtmosphericLightTransmittance(InComponent->bUsePerSampleAtmosphericLightTransmittance)
, SkyLightCloudBottomOcclusion(InComponent->SkyLightCloudBottomOcclusion)
, ViewSampleCountScale(InComponent->ViewSampleCountScale)
, ReflectionViewSampleCountScale(InComponent->ReflectionViewSampleCountScaleValue)
, ShadowViewSampleCountScale(InComponent->ShadowViewSampleCountScale)
, ShadowReflectionViewSampleCountScale(InComponent->ShadowReflectionViewSampleCountScaleValue)
, ShadowTracingDistance(InComponent->ShadowTracingDistance)
, StopTracingTransmittanceThreshold(InComponent->StopTracingTransmittanceThreshold)
, AerialPespectiveMieScatteringStartDistance(InComponent->AerialPespectiveMieScatteringStartDistance)
, AerialPespectiveMieScatteringFadeDistance(InComponent->AerialPespectiveMieScatteringFadeDistance)
, AerialPespectiveRayleighScatteringStartDistance(InComponent->AerialPespectiveRayleighScatteringStartDistance)
, AerialPespectiveRayleighScatteringFadeDistance(InComponent->AerialPespectiveRayleighScatteringFadeDistance)
, CloudVolumeMaterial(InComponent->Material)
{
}
FVolumetricCloudSceneProxy::~FVolumetricCloudSceneProxy()
{
}