3#include "IVSmokeSettings.h"
4#include "IVSmokeRenderer.h"
6#include "IVSmokeVisualMaterialPreset.h"
7#include "Materials/MaterialInterface.h"
10UIVSmokeSettings::UIVSmokeSettings()
17 return GetDefault<UIVSmokeSettings>();
24namespace IVSmokeQualityPresets
27 static constexpr int32 RayMarchMaxSteps[] = { 128, 256, 512 };
28 static constexpr float RayMarchMinStepSize[] = { 50.0f, 25.0f, 16.0f };
31 static constexpr int32 SelfShadowSteps[] = { 0, 3, 6, 8 };
34 static constexpr int32 ExternalShadowCascades[] = { 0, 3, 4, 4 };
35 static constexpr int32 ExternalShadowResolution[] = { 0, 512, 512, 1024 };
36 static constexpr float ExternalShadowMaxDistance[] = { 0.0f, 20000.0f, 30000.0f, 50000.0f };
39 static constexpr uint8 GlobalToExternalShadow[] = { 0, 2, 3 };
53 return IVSmokeQualityPresets::RayMarchMaxSteps[
static_cast<uint8
>(
RayMarchQuality)];
55 return IVSmokeQualityPresets::RayMarchMaxSteps[
static_cast<uint8
>(
GlobalQuality)];
66 return IVSmokeQualityPresets::RayMarchMinStepSize[
static_cast<uint8
>(
RayMarchQuality)];
68 return IVSmokeQualityPresets::RayMarchMinStepSize[
static_cast<uint8
>(
GlobalQuality)];
92 return IVSmokeQualityPresets::SelfShadowSteps[
static_cast<uint8
>(
SelfShadowQuality)];
95 return IVSmokeQualityPresets::SelfShadowSteps[
static_cast<uint8
>(
GlobalQuality) + 1];
121 uint8 MappedIndex = IVSmokeQualityPresets::GlobalToExternalShadow[
static_cast<uint8
>(
GlobalQuality)];
122 return IVSmokeQualityPresets::ExternalShadowCascades[MappedIndex];
135 uint8 MappedIndex = IVSmokeQualityPresets::GlobalToExternalShadow[
static_cast<uint8
>(
GlobalQuality)];
136 return IVSmokeQualityPresets::ExternalShadowResolution[MappedIndex];
149 uint8 MappedIndex = IVSmokeQualityPresets::GlobalToExternalShadow[
static_cast<uint8
>(
GlobalQuality)];
150 return IVSmokeQualityPresets::ExternalShadowMaxDistance[MappedIndex];
154 if (CachedVisualMaterialPreset !=
nullptr)
156 return CachedVisualMaterialPreset;
165 Settings->CachedVisualMaterialPreset = Cast<UIVSmokeVisualMaterialPreset>(Settings->
SmokeVisualMaterialPreset.TryLoad());
168 if (!IsRunningCommandlet() && CachedVisualMaterialPreset)
172 Mat->EnsureIsComplete();
177void UIVSmokeSettings::PostInitProperties()
179 Super::PostInitProperties();
185 if (!IsRunningCommandlet() && CachedVisualMaterialPreset)
189 Mat->EnsureIsComplete();
195void UIVSmokeSettings::PostEditChangeProperty(FPropertyChangedEvent& PropertyChangedEvent)
197 Super::PostEditChangeProperty(PropertyChangedEvent);
204 if (CachedVisualMaterialPreset)
208 Mat->EnsureIsComplete();
float CustomShadowMaxDistance
EIVSmokeSelfShadowQuality SelfShadowQuality
int32 GetEffectiveNumCascades() const
int32 GetEffectiveCascadeResolution() const
static const UIVSmokeSettings * Get()
bool IsSelfShadowingEnabled() const
float GetEffectiveMinStepSize() const
int32 GetEffectiveMaxSteps() const
float GetEffectiveShadowMaxDistance() const
EIVSmokeRayMarchQuality RayMarchQuality
int32 CustomLightMarchingSteps
EIVSmokeGlobalQuality GlobalQuality
bool IsExternalShadowingEnabled() const
int32 CustomCascadeResolution
FSoftObjectPath SmokeVisualMaterialPreset
int32 GetEffectiveLightMarchingSteps() const
void SetVisualMaterialPreset(FSoftObjectPath VisualMaterialPresetPath)
EIVSmokeExternalShadowQuality ExternalShadowQuality
TObjectPtr< UMaterialInterface > SmokeVisualMaterial