Files
Ipseity-Demo/Assets/_Content/Models/VFX/Ray/Shaders/include/Facing.hlsl
T
2026-05-26 23:14:25 +02:00

17 lines
870 B
HLSL

void Facing_float(float3 ObjectPos, float3 Origin, float3 InUp, uint Orthographic, out float3 FacingWorldPos, out float3 FacingObjectPos, out float3 Right, out float3 Up, out float3 Forward)
{
float3 origin = TransformObjectToWorld(float3(0, 0, 0));
float3 view = lerp(normalize(origin - _WorldSpaceCameraPos.xyz), GetViewForwardDir(), Orthographic);
Up = normalize(InUp);
Right = normalize(cross(Up, view));
Forward = cross(Right, Up);
FacingWorldPos = Origin;
FacingWorldPos += ObjectPos.x * length(TransformObjectToWorld(float3(1, 0, 0)) - origin) * Right;
FacingWorldPos += ObjectPos.y * length(TransformObjectToWorld(float3(0, 1, 0)) - origin) * Up;
FacingWorldPos += ObjectPos.z * length(TransformObjectToWorld(float3(0, 0, 1)) - origin) * Forward;
FacingObjectPos = TransformWorldToObject(FacingWorldPos);
}