Files
UnrealEngine/Engine/Shaders/Private/DynamicMeshBounds.ush
2025-05-18 13:04:45 +08:00

31 lines
938 B
HLSL

// Copyright Epic Games, Inc. All Rights Reserved.
#pragma once
#include "Common.ush"
#ifndef ENABLE_DYNAMIC_MESH_BOUNDS
#define ENABLE_DYNAMIC_MESH_BOUNDS 0
#endif
StructuredBuffer<int4> DynamicMeshBoundsBuffer;
int DynamicMeshBoundsMax;
bool LoadDynamicMeshBounds(int DynamicMeshBoundsIndex, inout float3 LocalBoundsCenter, inout float3 LocalBoundsExtent)
{
#if ENABLE_DYNAMIC_MESH_BOUNDS && COMPILER_SUPPORTS_WAVE_VOTE
// If this draw command has dynamic bounds, load those and use instead.
if (DynamicMeshBoundsIndex >= 0 && DynamicMeshBoundsIndex < DynamicMeshBoundsMax)
{
float3 DynMin = float3(DynamicMeshBoundsBuffer[DynamicMeshBoundsIndex * 2 + 0].xyz);
float3 DynMax = float3(DynamicMeshBoundsBuffer[DynamicMeshBoundsIndex * 2 + 1].xyz);
if (DynMin.x <= DynMax.x)
{
LocalBoundsCenter = (DynMin + DynMax) * 0.5f;
LocalBoundsExtent = (DynMax - DynMin) * 0.5f;
return true;
}
}
#endif
return false;
}