Ejemplo n.º 1
0
        unsafe public static PackedShadowData ToPackedShadowData(HDDirectionalShadowData data)
        {
            PackedShadowData outData = default(PackedShadowData);

            outData.packedData1 = new Vector4(
                data.sphereCascades[4 * 0 + 0],
                data.sphereCascades[4 * 0 + 1],
                data.sphereCascades[4 * 0 + 2],
                data.sphereCascades[4 * 0 + 3]);

            outData.packedData2 = new Vector4(
                data.sphereCascades[4 * 1 + 0],
                data.sphereCascades[4 * 1 + 1],
                data.sphereCascades[4 * 1 + 2],
                data.sphereCascades[4 * 1 + 3]);

            outData.packedData3 = new Vector4(
                data.sphereCascades[4 * 2 + 0],
                data.sphereCascades[4 * 2 + 1],
                data.sphereCascades[4 * 2 + 2],
                data.sphereCascades[4 * 2 + 3]);


            outData.packedData4 = new Vector4(
                data.sphereCascades[4 * 3 + 0],
                data.sphereCascades[4 * 3 + 1],
                data.sphereCascades[4 * 3 + 2],
                data.sphereCascades[4 * 3 + 3]);

            outData.packedData5 = data.cascadeDirection;

            outData.packedData6 = new Vector4(
                data.cascadeBorders[4 * 0 + 0],
                data.cascadeBorders[4 * 0 + 1],
                data.cascadeBorders[4 * 0 + 2],
                data.cascadeBorders[4 * 0 + 3]);

            return(outData);
        }
Ejemplo n.º 2
0
        public static HDShadowData UnPackedShadowDataToShadowData(PackedShadowData data)
        {
            HDShadowData outData = default(HDShadowData);

            outData.rot0          = data.packedData1;
            outData.edgeTolerance = data.packedData1.w;

            outData.rot1  = data.packedData2;
            outData.flags = (int)data.packedData2.w;

            outData.rot2 = data.packedData3;
            outData.shadowFilterParams0.x = data.packedData3.w;

            outData.pos = data.packedData4;
            outData.shadowFilterParams0.y = data.packedData4.w;

            outData.proj = data.packedData5;

            outData.atlasOffset           = data.packedData6;
            outData.shadowFilterParams0.z = data.packedData6.z;
            outData.shadowFilterParams0.w = data.packedData6.w;

            outData.zBufferParam = data.packedData7;

            outData.shadowMapSize = data.packedData8;

            outData.viewBias = data.packedData9;

            outData.normalBias = data.packedData10.normalized;
            outData._padding   = data.packedData10.w;

            outData.shadowToWorld.SetColumn(0, data.packedData11);
            outData.shadowToWorld.SetColumn(1, data.packedData12);
            outData.shadowToWorld.SetColumn(2, data.packedData13);
            outData.shadowToWorld.SetColumn(3, data.packedData14);

            return(outData);
        }
Ejemplo n.º 3
0
        public static PackedShadowData ToPackedShadowData(HDShadowData data)
        {
            PackedShadowData outData = default(PackedShadowData);

            outData.packedData1   = data.rot0;
            outData.packedData1.w = data.edgeTolerance;

            outData.packedData2   = data.rot1;
            outData.packedData2.w = (float)data.flags + Epsilon; //防止1,转换为float变成0.999999999998;

            outData.packedData3   = data.rot2;
            outData.packedData3.w = data.shadowFilterParams0.x;

            outData.packedData4   = data.pos;
            outData.packedData4.w = data.shadowFilterParams0.y;

            outData.packedData5 = data.proj;

            outData.packedData6   = data.atlasOffset;
            outData.packedData6.z = data.shadowFilterParams0.z;
            outData.packedData6.w = data.shadowFilterParams0.w;

            outData.packedData7 = data.zBufferParam;

            outData.packedData8 = data.shadowMapSize;

            outData.packedData9 = data.viewBias;

            outData.packedData10   = data.normalBias;
            outData.packedData10.w = data._padding;

            outData.packedData11 = data.shadowToWorld.GetColumn(0);
            outData.packedData12 = data.shadowToWorld.GetColumn(1);
            outData.packedData13 = data.shadowToWorld.GetColumn(2);
            outData.packedData14 = data.shadowToWorld.GetColumn(3);

            return(outData);
        }
Ejemplo n.º 4
0
        unsafe public static HDDirectionalShadowData UnPackedShadowDataToDirectionShadowData(PackedShadowData data)
        {
            HDDirectionalShadowData outData = default(HDDirectionalShadowData);

            outData.sphereCascades[4 * 0 + 0] = data.packedData1.x;
            outData.sphereCascades[4 * 0 + 1] = data.packedData1.y;
            outData.sphereCascades[4 * 0 + 2] = data.packedData1.z;
            outData.sphereCascades[4 * 0 + 3] = data.packedData1.w;

            outData.sphereCascades[4 * 1 + 0] = data.packedData2.x;
            outData.sphereCascades[4 * 1 + 1] = data.packedData2.y;
            outData.sphereCascades[4 * 1 + 2] = data.packedData2.z;
            outData.sphereCascades[4 * 1 + 3] = data.packedData2.w;


            outData.sphereCascades[4 * 2 + 0] = data.packedData3.x;
            outData.sphereCascades[4 * 2 + 1] = data.packedData3.y;
            outData.sphereCascades[4 * 2 + 2] = data.packedData3.z;
            outData.sphereCascades[4 * 2 + 3] = data.packedData3.w;

            outData.sphereCascades[4 * 3 + 0] = data.packedData4.x;
            outData.sphereCascades[4 * 3 + 1] = data.packedData4.y;
            outData.sphereCascades[4 * 3 + 2] = data.packedData4.z;
            outData.sphereCascades[4 * 3 + 3] = data.packedData4.w;

            outData.cascadeDirection = data.packedData5;

            outData.cascadeBorders[4 * 0 + 0] = data.packedData6.x;
            outData.cascadeBorders[4 * 0 + 1] = data.packedData6.y;
            outData.cascadeBorders[4 * 0 + 2] = data.packedData6.z;
            outData.cascadeBorders[4 * 0 + 3] = data.packedData6.w;

            return(outData);
        }