public static float3 Warp(EWarpType warpType, float2 sample, float param = 0) { float3 warped; switch (warpType) { case EWarpType.EUniformSquare: { float2 p = SquareToUniformSquare(sample); warped = new float3(p.x, p.y, 0); break; } case EWarpType.EUniformDisk: { float2 p = SquareToUniformDisk(sample); warped = new float3(p.x, p.y, 0); break; } case EWarpType.EConcentricDisk: { float2 p = SquareToConcentricDisk(sample); warped = new float3(p.x, p.y, 0); break; } case EWarpType.EUniformSphere: warped = SquareToUniformSphere(sample); break; case EWarpType.EUniformHemisphere: warped = SquareToUniformHemisphere(sample); break; case EWarpType.ECosineHemisphere: warped = SquareToCosineHemisphere(sample); break; case EWarpType.EUniformCone: warped = SquareToUniformCone(sample, param); break; default: throw new Exception("Unknown warpType queried for Warp."); break; } return(warped); }
public static float3 Warp(EWarpType warpType, float param = 0) { float2 sample = new float2(SampleUniform(), SampleUniform()); return(Warp(warpType, sample, param)); }