113 static constexpr uint32 ThreadGroupSizeY = FIVSmokeOccupancyConfig::TileSetupThreadsY;
114 static constexpr uint32 ThreadGroupSizeZ = 1;
115 static constexpr const TCHAR* EventName = TEXT(
"IVSmokeTileSetupCS");
120 BEGIN_SHADER_PARAMETER_STRUCT(FParameters, )
122 SHADER_PARAMETER_RDG_BUFFER_UAV(RWStructuredBuffer<FIVSmokeTileData>, TileDataBufferRW)
125 SHADER_PARAMETER_RDG_UNIFORM_BUFFER(FSceneTextureUniformParameters, SceneTexturesStruct)
128 SHADER_PARAMETER_RDG_BUFFER_SRV(StructuredBuffer<FIVSmokeVolumeGPUData>, VolumeDataBuffer)
129 SHADER_PARAMETER(uint32, NumActiveVolumes)
132 SHADER_PARAMETER(FIntPoint, TileCount)
133 SHADER_PARAMETER(uint32, StepSliceCount)
134 SHADER_PARAMETER(
float, MaxRayDistance)
137 SHADER_PARAMETER(FIntPoint, ViewportSize)
138 SHADER_PARAMETER(FIntPoint, ViewRectMin)
141 SHADER_PARAMETER(FVector3f, CameraPosition)
142 SHADER_PARAMETER(FVector3f, CameraForward)
143 SHADER_PARAMETER(FVector3f, CameraRight)
144 SHADER_PARAMETER(FVector3f, CameraUp)
145 SHADER_PARAMETER(
float, TanHalfFOV)
146 SHADER_PARAMETER(
float, AspectRatio)
149 SHADER_PARAMETER(FVector4f, InvDeviceZToWorldZTransform)
150 END_SHADER_PARAMETER_STRUCT()
152 static bool ShouldCompilePermutation(
const FGlobalShaderPermutationParameters& Parameters)
154 return IsFeatureLevelSupported(Parameters.Platform, ERHIFeatureLevel::SM5);
157 static void ModifyCompilationEnvironment(
const FGlobalShaderPermutationParameters& Parameters, FShaderCompilerEnvironment& OutEnvironment)
159 FGlobalShader::ModifyCompilationEnvironment(Parameters, OutEnvironment);
160 OutEnvironment.SetDefine(TEXT(
"THREADGROUP_SIZE_X"), ThreadGroupSizeX);
161 OutEnvironment.SetDefine(TEXT(
"THREADGROUP_SIZE_Y"), ThreadGroupSizeY);
163 OutEnvironment.SetDefine(TEXT(
"TILE_SIZE_Y"), FIVSmokeOccupancyConfig::TileSizeY);
167 OutEnvironment.CompilerFlags.Add(CFLAG_WaveOperations);
185 static constexpr uint32 ThreadGroupSizeY = FIVSmokeOccupancyConfig::OccupancyBuildThreadsY;
186 static constexpr uint32 ThreadGroupSizeZ = FIVSmokeOccupancyConfig::OccupancyBuildThreadsZ;
187 static constexpr const TCHAR* EventName = TEXT(
"IVSmokeOccupancyBuildCS");
192 BEGIN_SHADER_PARAMETER_STRUCT(FParameters, )
194 SHADER_PARAMETER_RDG_BUFFER_SRV(StructuredBuffer<FIVSmokeTileData>, TileDataBuffer)
197 SHADER_PARAMETER_RDG_TEXTURE_UAV(RWTexture3D<uint4>, ViewOccupancyRW)
198 SHADER_PARAMETER_RDG_TEXTURE_UAV(RWTexture3D<uint4>, LightOccupancyRW)
201 SHADER_PARAMETER_RDG_BUFFER_SRV(StructuredBuffer<FIVSmokeVolumeGPUData>, VolumeDataBuffer)
202 SHADER_PARAMETER(uint32, NumActiveVolumes)
205 SHADER_PARAMETER(FIntPoint, TileCount)
206 SHADER_PARAMETER(uint32, StepSliceCount)
207 SHADER_PARAMETER(uint32, StepDivisor)
210 SHADER_PARAMETER(FVector3f, CameraPosition)
211 SHADER_PARAMETER(FVector3f, CameraForward)
212 SHADER_PARAMETER(FVector3f, CameraRight)
213 SHADER_PARAMETER(FVector3f, CameraUp)
214 SHADER_PARAMETER(
float, TanHalfFOV)
215 SHADER_PARAMETER(
float, AspectRatio)
218 SHADER_PARAMETER(FVector3f, LightDirection)
219 SHADER_PARAMETER(
float, MaxLightMarchDistance)
220 END_SHADER_PARAMETER_STRUCT()
222 static bool ShouldCompilePermutation(
const FGlobalShaderPermutationParameters& Parameters)
224 return IsFeatureLevelSupported(Parameters.Platform, ERHIFeatureLevel::SM5);
227 static void ModifyCompilationEnvironment(
const FGlobalShaderPermutationParameters& Parameters, FShaderCompilerEnvironment& OutEnvironment)
229 FGlobalShader::ModifyCompilationEnvironment(Parameters, OutEnvironment);
230 OutEnvironment.SetDefine(TEXT(
"THREADGROUP_SIZE_X"), ThreadGroupSizeX);
231 OutEnvironment.SetDefine(TEXT(
"THREADGROUP_SIZE_Y"), ThreadGroupSizeY);
232 OutEnvironment.SetDefine(TEXT(
"THREADGROUP_SIZE_Z"), ThreadGroupSizeZ);
234 OutEnvironment.SetDefine(TEXT(
"TILE_SIZE_Y"), FIVSmokeOccupancyConfig::TileSizeY);
257 static constexpr uint32 ThreadGroupSizeX = 8;
258 static constexpr uint32 ThreadGroupSizeY = 8;
259 static constexpr uint32 ThreadGroupSizeZ = 1;
260 static constexpr const TCHAR* EventName = TEXT(
"IVSmokeMultiVolumeRayMarchCS");
265 BEGIN_SHADER_PARAMETER_STRUCT(FParameters, )
267 SHADER_PARAMETER_RDG_TEXTURE_UAV(RWTexture2D<float4>, SmokeAlbedoTex)
268 SHADER_PARAMETER_RDG_TEXTURE_UAV(RWTexture2D<float4>, SmokeLocalPosAlphaTex)
269 SHADER_PARAMETER_RDG_TEXTURE_UAV(RWTexture2D<float4>, SmokeWorldPosDepthTex)
272 SHADER_PARAMETER_RDG_BUFFER_SRV(StructuredBuffer<FIVSmokeTileData>, TileDataBuffer)
273 SHADER_PARAMETER_RDG_TEXTURE_SRV(Texture3D<uint4>, ViewOccupancy)
274 SHADER_PARAMETER_RDG_TEXTURE_SRV(Texture3D<uint4>, LightOccupancy)
277 SHADER_PARAMETER(FIntPoint, TileCount)
278 SHADER_PARAMETER(uint32, StepSliceCount)
279 SHADER_PARAMETER(uint32, StepDivisor)
282 SHADER_PARAMETER_RDG_TEXTURE(Texture3D, NoiseVolume)
283 SHADER_PARAMETER(
float, NoiseUVMul)
286 SHADER_PARAMETER_SAMPLER(SamplerState, LinearBorder_Sampler)
287 SHADER_PARAMETER_SAMPLER(SamplerState, LinearRepeat_Sampler)
290 SHADER_PARAMETER(
float, ElapsedTime)
293 SHADER_PARAMETER(FIntPoint, TexSize)
294 SHADER_PARAMETER(FVector2f, ViewportSize)
295 SHADER_PARAMETER(FVector2f, ViewRectMin)
298 SHADER_PARAMETER(FVector3f, CameraPosition)
299 SHADER_PARAMETER(FVector3f, CameraForward)
300 SHADER_PARAMETER(FVector3f, CameraRight)
301 SHADER_PARAMETER(FVector3f, CameraUp)
302 SHADER_PARAMETER(
float, TanHalfFOV)
303 SHADER_PARAMETER(
float, AspectRatio)
306 SHADER_PARAMETER(int32, MaxSteps)
307 SHADER_PARAMETER(
float, MinStepSize)
310 SHADER_PARAMETER_RDG_BUFFER_SRV(StructuredBuffer<FIVSmokeVolumeGPUData>, VolumeDataBuffer)
311 SHADER_PARAMETER(uint32, NumActiveVolumes)
314 SHADER_PARAMETER(
int, PackedInterval)
315 SHADER_PARAMETER_RDG_TEXTURE_SRV(Texture3D, PackedVoxelAtlas)
316 SHADER_PARAMETER_RDG_TEXTURE_SRV(Texture3D, PackedHoleAtlas)
317 SHADER_PARAMETER(FIntVector, VoxelTexSize)
318 SHADER_PARAMETER(FIntVector, PackedVoxelTexSize)
319 SHADER_PARAMETER(FIntVector, VoxelAtlasCount)
320 SHADER_PARAMETER(FIntVector, HoleTexSize)
321 SHADER_PARAMETER(FIntVector, PackedHoleTexSize)
322 SHADER_PARAMETER(FIntVector, HoleAtlasCount)
325 SHADER_PARAMETER_RDG_UNIFORM_BUFFER(FSceneTextureUniformParameters, SceneTexturesStruct)
326 SHADER_PARAMETER(FVector4f, InvDeviceZToWorldZTransform)
331 SHADER_PARAMETER_RDG_TEXTURE(Texture2D, SceneDepthTexture_RDGDependency)
332 SHADER_PARAMETER(int32, bUseExplicitSceneDepth)
335 SHADER_PARAMETER_STRUCT_REF(FViewUniformShaderParameters, View)
338 SHADER_PARAMETER(
float, GlobalAbsorption)
339 SHADER_PARAMETER(
float, SmokeSize)
340 SHADER_PARAMETER(FVector3f, WindDirection)
341 SHADER_PARAMETER(
float, VolumeRangeOffset)
342 SHADER_PARAMETER(
float, VolumeEdgeNoiseFadeOffset)
343 SHADER_PARAMETER(
float, VolumeEdgeFadeSharpness)
346 SHADER_PARAMETER(FVector3f, LightDirection)
347 SHADER_PARAMETER(FVector3f, LightColor)
348 SHADER_PARAMETER(
float, ScatterScale)
349 SHADER_PARAMETER(
float, ScatteringAnisotropy)
352 SHADER_PARAMETER(int32, LightMarchingSteps)
353 SHADER_PARAMETER(
float, LightMarchingDistance)
354 SHADER_PARAMETER(
float, LightMarchingExpFactor)
355 SHADER_PARAMETER(
float, ShadowAmbient)
358 SHADER_PARAMETER(FVector3f, GlobalAABBMin)
359 SHADER_PARAMETER(FVector3f, GlobalAABBMax)
362 SHADER_PARAMETER(int32, NumCascades)
363 SHADER_PARAMETER_RDG_TEXTURE(Texture2DArray, CSMDepthTextureArray)
364 SHADER_PARAMETER_RDG_TEXTURE(Texture2DArray, CSMVSMTextureArray)
365 SHADER_PARAMETER_SAMPLER(SamplerState, CSMSampler)
366 SHADER_PARAMETER_ARRAY(FMatrix44f, CSMViewProjectionMatrices, [8])
367 SHADER_PARAMETER_SCALAR_ARRAY(
float, CSMSplitDistances, [8])
368 SHADER_PARAMETER(FVector3f, CSMCameraPosition)
369 SHADER_PARAMETER(
float, CascadeBlendRange)
370 SHADER_PARAMETER_ARRAY(FVector4f, CSMLightCameraPositions, [8])
371 SHADER_PARAMETER_ARRAY(FVector4f, CSMLightCameraForwards, [8])
374 SHADER_PARAMETER(int32, bEnableVSM)
375 SHADER_PARAMETER(
float, VSMMinVariance)
376 SHADER_PARAMETER(
float, VSMLightBleedingReduction)
379 SHADER_PARAMETER(
float, ShadowDepthBias)
380 SHADER_PARAMETER(
float, ExternalShadowAmbient)
383 SHADER_PARAMETER(uint32, FrameNumber)
384 SHADER_PARAMETER(
float, JitterIntensity)
385 END_SHADER_PARAMETER_STRUCT()
387 static bool ShouldCompilePermutation(
const FGlobalShaderPermutationParameters& Parameters)
389 return IsFeatureLevelSupported(Parameters.Platform, ERHIFeatureLevel::SM5);
392 static void ModifyCompilationEnvironment(
const FGlobalShaderPermutationParameters& Parameters, FShaderCompilerEnvironment& OutEnvironment)
394 FGlobalShader::ModifyCompilationEnvironment(Parameters, OutEnvironment);
395 OutEnvironment.SetDefine(TEXT(
"THREADGROUP_SIZE_X"), ThreadGroupSizeX);
396 OutEnvironment.SetDefine(TEXT(
"THREADGROUP_SIZE_Y"), ThreadGroupSizeY);
398 OutEnvironment.SetDefine(TEXT(
"TILE_SIZE_Y"), FIVSmokeOccupancyConfig::TileSizeY);
400 OutEnvironment.SetDefine(TEXT(
"USE_OCCUPANCY"), 1);