You've already forked UnrealEngineUWP
mirror of
https://github.com/izzy2lost/UnrealEngineUWP.git
synced 2026-03-26 18:15:20 -07:00
- Added LWCHackToFloat to higher level code. - Converted a few simple usages to work correctly in LWC. #rb none #preflight none #jira none [CL 19256116 by tiago costa in ue5-main branch]
36 lines
1.4 KiB
Plaintext
36 lines
1.4 KiB
Plaintext
// Copyright Epic Games, Inc. All Rights Reserved.
|
|
|
|
/*=============================================================================
|
|
MeshDistanceFieldCommon.ush
|
|
=============================================================================*/
|
|
|
|
float DistanceToNearestSurfaceForObject(FDFObjectData DFObjectData, float3 WorldPosition, float MaxDistance)
|
|
{
|
|
float4x4 WorldToVolume = LWCHackToFloat(DFObjectData.WorldToVolume);
|
|
float3 VolumePosition = mul(float4(WorldPosition, 1), WorldToVolume).xyz;
|
|
|
|
float3 ClampedVolumePosition = clamp(VolumePosition, -DFObjectData.VolumePositionExtent, DFObjectData.VolumePositionExtent);
|
|
float DistanceToBox = length((VolumePosition - ClampedVolumePosition) * DFObjectData.VolumeToWorldScale);
|
|
|
|
float DistanceToOccluder = MaxDistance;
|
|
|
|
BRANCH
|
|
if (DistanceToBox < MaxDistance)
|
|
{
|
|
DistanceToOccluder = DistanceToMeshSurfaceStandalone(ClampedVolumePosition, DFObjectData) * DFObjectData.VolumeScale + DistanceToBox;
|
|
|
|
// Don't allow negative SDF distance to stick out of the bounding box
|
|
if (DistanceToBox > 0.0f)
|
|
{
|
|
DistanceToOccluder = max(DistanceToOccluder, DistanceToBox);
|
|
}
|
|
}
|
|
|
|
return DistanceToOccluder;
|
|
}
|
|
|
|
float DistanceToNearestSurfaceForObject(uint ObjectIndex, float3 WorldPosition, float MaxDistance)
|
|
{
|
|
FDFObjectData DFObjectData = LoadDFObjectData(ObjectIndex);
|
|
return DistanceToNearestSurfaceForObject(DFObjectData, WorldPosition, MaxDistance);
|
|
} |