Пример #1
0
        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);
        }
Пример #2
0
        public static float3 Warp(EWarpType warpType, float param = 0)
        {
            float2 sample = new float2(SampleUniform(), SampleUniform());

            return(Warp(warpType, sample, param));
        }