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

54 lines
2.5 KiB
HLSL

// Copyright Epic Games, Inc. All Rights Reserved.
/*=============================================================================
PhysicsFieldSampler.ush
=============================================================================*/
#pragma once
#include "PhysicsFieldShared.ush"
#if FEATURE_LEVEL >= FEATURE_LEVEL_SM5
#if IS_MATERIAL_SHADER
// for materials, these are in the view UB
#define PhysicsFieldClipmapBuffer View.PhysicsFieldClipmapBuffer
#define PhysicsFieldClipmapCenter View.PhysicsFieldClipmapCenter
#define PhysicsFieldClipmapDistance View.PhysicsFieldClipmapDistance
#define PhysicsFieldClipmapResolution View.PhysicsFieldClipmapResolution
#define PhysicsFieldClipmapExponent View.PhysicsFieldClipmapExponent
#define PhysicsFieldClipmapCount View.PhysicsFieldClipmapCount
#define PhysicsFieldTargetCount View.PhysicsFieldTargetCount
#define PhysicsFieldTargets View.PhysicsFieldTargets
#else
Buffer<float> PhysicsFieldClipmapBuffer;
float3 PhysicsFieldClipmapCenter;
float PhysicsFieldClipmapDistance;
int PhysicsFieldClipmapResolution;
int PhysicsFieldClipmapExponent;
int PhysicsFieldClipmapCount;
int PhysicsFieldTargetCount;
int4 PhysicsFieldTargets[MAX_PHYSICS_FIELD_TARGETS]; // x (Vector), y (Scalar), z (Integer), w (Padding)
#endif
float3 MatPhysicsField_SamplePhysicsVectorField(float3 WorldPosition, int VectorTarget)
{
return PhysicsField_SamplePhysicsVectorField(WorldPosition, VectorTarget, PhysicsFieldTargets, PhysicsFieldTargetCount, PhysicsFieldClipmapCenter, PhysicsFieldClipmapDistance,
PhysicsFieldClipmapExponent, PhysicsFieldClipmapCount, PhysicsFieldClipmapResolution, PhysicsFieldClipmapBuffer);
}
float MatPhysicsField_SamplePhysicsScalarField(float3 WorldPosition, int ScalarTarget)
{
return PhysicsField_SamplePhysicsScalarField(WorldPosition, ScalarTarget, PhysicsFieldTargets, PhysicsFieldTargetCount, PhysicsFieldClipmapCenter, PhysicsFieldClipmapDistance,
PhysicsFieldClipmapExponent, PhysicsFieldClipmapCount, PhysicsFieldClipmapResolution, PhysicsFieldClipmapBuffer);
}
int MatPhysicsField_SamplePhysicsIntegerField(float3 WorldPosition, int IntegerTarget)
{
return PhysicsField_SamplePhysicsIntegerField(WorldPosition, IntegerTarget, PhysicsFieldTargets, PhysicsFieldTargetCount, PhysicsFieldClipmapCenter, PhysicsFieldClipmapDistance,
PhysicsFieldClipmapExponent, PhysicsFieldClipmapCount, PhysicsFieldClipmapResolution, PhysicsFieldClipmapBuffer);
}
#endif // FEATURE_LEVEL >= FEATURE_LEVEL_SM5