22 lines
749 B
HLSL
22 lines
749 B
HLSL
#include "bindless_structs.hlsli"
|
|
|
|
float3 GetLocalDir(float Side, float3 GlobalInvocationID)
|
|
{
|
|
float HalfSide = Side / 2;
|
|
float AxisSign = 2.0f * (0.5f - (GlobalInvocationID.z % 2));
|
|
|
|
float3 LocalDir;
|
|
if (GlobalInvocationID.z < 2)
|
|
{
|
|
LocalDir = float3(AxisSign * HalfSide, HalfSide - GlobalInvocationID.y, (HalfSide - GlobalInvocationID.x) * AxisSign);
|
|
}
|
|
else if (GlobalInvocationID.z < 4)
|
|
{
|
|
LocalDir = float3(GlobalInvocationID.x - HalfSide, AxisSign * HalfSide, AxisSign * (GlobalInvocationID.y - HalfSide));
|
|
}
|
|
else
|
|
{
|
|
LocalDir = float3((GlobalInvocationID.x - HalfSide) * AxisSign, HalfSide - GlobalInvocationID.y, HalfSide * AxisSign);
|
|
}
|
|
return normalize(LocalDir);
|
|
} |