Fixed the coordinate system.
This commit is contained in:
parent
6d39576b5c
commit
f735b63d7e
|
|
@ -12,11 +12,11 @@ Block pcb;
|
||||||
|
|
||||||
float2 SampleSphericalMap(float3 v)
|
float2 SampleSphericalMap(float3 v)
|
||||||
{
|
{
|
||||||
const float2 invAtan = float2(0.1591f, 0.3183f);
|
const float2 InvTan = float2(0.1591f, 0.3183f); // (1/2PI, 1/PI)
|
||||||
float2 uv = float2(atan2(v.x, v.z), asin(v.y));
|
float2 UV = float2(atan2(-v.x, v.z), asin(-v.y)); // (-PI, -PI/2) to (PI, PI/2)
|
||||||
uv *= invAtan;
|
UV *= InvTan; // (-1/2, -1/2) to (1/2, 1/2)
|
||||||
uv += 0.5;
|
UV += 0.5f.xx; // (0, 0) to (1, 1)
|
||||||
return uv;
|
return UV;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
@ -39,15 +39,15 @@ void main(uint3 GlobalInvocationID : SV_DispatchThreadID)
|
||||||
|
|
||||||
if (GlobalInvocationID.z < 2)
|
if (GlobalInvocationID.z < 2)
|
||||||
{
|
{
|
||||||
LocalDir = float3(AxisSign * HalfSide, GlobalInvocationID.y - HalfSide, (GlobalInvocationID.x - HalfSide) * AxisSign);
|
LocalDir = float3(AxisSign * HalfSide, HalfSide - GlobalInvocationID.y, (HalfSide - GlobalInvocationID.x) * AxisSign);
|
||||||
}
|
}
|
||||||
else if (GlobalInvocationID.z < 4)
|
else if (GlobalInvocationID.z < 4)
|
||||||
{
|
{
|
||||||
LocalDir = float3(GlobalInvocationID.x - HalfSide, -AxisSign * HalfSide, -AxisSign * (GlobalInvocationID.y - HalfSide));
|
LocalDir = float3(GlobalInvocationID.x - HalfSide, AxisSign * HalfSide, AxisSign * (GlobalInvocationID.y - HalfSide));
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
LocalDir = float3((GlobalInvocationID.x - HalfSide) * AxisSign, GlobalInvocationID.y - HalfSide, -AxisSign * HalfSide);
|
LocalDir = float3((GlobalInvocationID.x - HalfSide) * AxisSign, HalfSide - GlobalInvocationID.y, HalfSide * AxisSign);
|
||||||
}
|
}
|
||||||
|
|
||||||
float2 UV = SampleSphericalMap(normalize(LocalDir));
|
float2 UV = SampleSphericalMap(normalize(LocalDir));
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue