示例#1
0
        public static source ArrayToSource(Color[] input, string tag)
        {
            source outputSource = new source();

            outputSource.id = tag;

            const int num_values = 4;

            float_array vectorArray = new float_array();

            vectorArray.Values = new double[input.Length * num_values];
            for (int i = 0; i < input.Length; i++)
            {
                vectorArray.Values[i * num_values + 0] = input[i].r;
                vectorArray.Values[i * num_values + 1] = input[i].g;
                vectorArray.Values[i * num_values + 2] = input[i].b;
                vectorArray.Values[i * num_values + 3] = input[i].a;
            }
            vectorArray.id    = tag + "-array";
            vectorArray.count = (ulong)vectorArray.Values.Length;

            outputSource.Item = vectorArray;

            accessor vectorAccessor = new accessor();

            vectorAccessor.source        = "#" + vectorArray.id;
            vectorAccessor.count         = (ulong)input.Length;
            vectorAccessor.stride        = num_values;
            vectorAccessor.param         = new param[num_values];
            vectorAccessor.param[0]      = new param();
            vectorAccessor.param[0].name = "R";
            vectorAccessor.param[0].type = "float";
            vectorAccessor.param[1]      = new param();
            vectorAccessor.param[1].name = "G";
            vectorAccessor.param[1].type = "float";
            vectorAccessor.param[2]      = new param();
            vectorAccessor.param[2].name = "B";
            vectorAccessor.param[2].type = "float";
            vectorAccessor.param[3]      = new param();
            vectorAccessor.param[3].name = "A";
            vectorAccessor.param[3].type = "float";

            outputSource.technique_common          = new sourceTechnique_common();
            outputSource.technique_common.accessor = vectorAccessor;

            return(outputSource);
        }
示例#2
0
        public static source ArrayToSource(Color[] input, string tag)
        {
            source outputSource = new source();
            outputSource.id = tag;

            const int num_values = 4;

            float_array vectorArray = new float_array();
            vectorArray.Values = new double[input.Length * num_values];
            for (int i = 0; i < input.Length; i++)
            {
                vectorArray.Values[i * num_values + 0] = input[i].r;
                vectorArray.Values[i * num_values + 1] = input[i].g;
                vectorArray.Values[i * num_values + 2] = input[i].b;
                vectorArray.Values[i * num_values + 3] = input[i].a;
            }
            vectorArray.id = tag + "-array";
            vectorArray.count = (ulong)vectorArray.Values.Length;

            outputSource.Item = vectorArray;

            accessor vectorAccessor = new accessor();
            vectorAccessor.source = "#" + vectorArray.id;
            vectorAccessor.count = (ulong)input.Length;
            vectorAccessor.stride = num_values;
            vectorAccessor.param = new param[num_values];
            vectorAccessor.param[0] = new param();
            vectorAccessor.param[0].name = "R";
            vectorAccessor.param[0].type = "float";
            vectorAccessor.param[1] = new param();
            vectorAccessor.param[1].name = "G";
            vectorAccessor.param[1].type = "float";
            vectorAccessor.param[2] = new param();
            vectorAccessor.param[2].name = "B";
            vectorAccessor.param[2].type = "float";
            vectorAccessor.param[3] = new param();
            vectorAccessor.param[3].name = "A";
            vectorAccessor.param[3].type = "float";

            outputSource.technique_common = new sourceTechnique_common();
            outputSource.technique_common.accessor = vectorAccessor;

            return outputSource;
        }
示例#3
0
        public static source ArrayToSource(Vector3[] input, string tag)
        {
            source outputSource = new source();

            outputSource.id = tag;

            float_array vectorArray = new float_array();

            vectorArray.Values = new double[input.Length * 3];
            for (int i = 0; i < input.Length; i++)
            {
                vectorArray.Values[i * 3 + 0] = input[i].x;
                vectorArray.Values[i * 3 + 1] = input[i].y;
                vectorArray.Values[i * 3 + 2] = input[i].z;
            }
            vectorArray.id    = tag + "-array";
            vectorArray.count = (ulong)vectorArray.Values.Length;

            outputSource.Item = vectorArray;

            accessor vectorAccessor = new accessor();

            vectorAccessor.source        = "#" + tag + "-array";
            vectorAccessor.count         = (ulong)input.Length;
            vectorAccessor.stride        = 3;
            vectorAccessor.param         = new param[3];
            vectorAccessor.param[0]      = new param();
            vectorAccessor.param[0].name = "X";
            vectorAccessor.param[0].type = "float";
            vectorAccessor.param[1]      = new param();
            vectorAccessor.param[1].name = "Y";
            vectorAccessor.param[1].type = "float";
            vectorAccessor.param[2]      = new param();
            vectorAccessor.param[2].name = "Z";
            vectorAccessor.param[2].type = "float";

            outputSource.technique_common          = new sourceTechnique_common();
            outputSource.technique_common.accessor = vectorAccessor;

            return(outputSource);
        }
示例#4
0
        public static source ArrayToSource(Vector3[] input, string tag)
        {
            source outputSource = new source();
            outputSource.id = tag;

            float_array vectorArray = new float_array();
            vectorArray.Values = new double[input.Length * 3];
            for (int i = 0; i < input.Length; i++)
            {
                vectorArray.Values[i * 3 + 0] = input[i].x;
                vectorArray.Values[i * 3 + 1] = input[i].y;
                vectorArray.Values[i * 3 + 2] = input[i].z;
            }
            vectorArray.id = tag + "-array";
            vectorArray.count = (ulong)vectorArray.Values.Length;

            outputSource.Item = vectorArray;

            accessor vectorAccessor = new accessor();
            vectorAccessor.source = "#" + tag + "-array";
            vectorAccessor.count = (ulong)input.Length;
            vectorAccessor.stride = 3;
            vectorAccessor.param = new param[3];
            vectorAccessor.param[0] = new param();
            vectorAccessor.param[0].name = "X";
            vectorAccessor.param[0].type = "float";
            vectorAccessor.param[1] = new param();
            vectorAccessor.param[1].name = "Y";
            vectorAccessor.param[1].type = "float";
            vectorAccessor.param[2] = new param();
            vectorAccessor.param[2].name = "Z";
            vectorAccessor.param[2].type = "float";

            outputSource.technique_common = new sourceTechnique_common();
            outputSource.technique_common.accessor = vectorAccessor;

            return outputSource;
        }
示例#5
0
        static CL.source CreateSource(string id, Func <int, Vector4> get, int components, int len)
        {
            var src = new CL.source();

            src.id = id;
            var floats = new float[len * components];

            for (int i = 0; i < len; i++)
            {
                var v4 = get(i);
                floats[i * components]     = v4.X;
                floats[i * components + 1] = v4.Y;
                if (components > 2)
                {
                    floats[i * components + 2] = v4.Z;
                }
                if (components > 3)
                {
                    floats[i * components + 3] = v4.W;
                }
            }
            string arrId = id + "-array";

            src.Item = new CL.float_array()
            {
                id   = arrId,
                Text = string.Join(" ", floats.Select((x) => x.ToString(CultureInfo.InvariantCulture)))
            };
            src.technique_common = new CL.sourceTechnique_common();
            var acc = new CL.accessor()
            {
                source = "#" + arrId,
                count  = (ulong)len,
                stride = (ulong)components
            };

            src.technique_common.accessor = acc;
            if (components == 2)
            {
                acc.param = new CL.param[] {
                    new CL.param()
                    {
                        name = "U", type = "float"
                    },
                    new CL.param()
                    {
                        name = "V", type = "float"
                    }
                };
            }
            else if (components == 3)
            {
                acc.param = new CL.param[] {
                    new CL.param()
                    {
                        name = "X", type = "float"
                    },
                    new CL.param()
                    {
                        name = "Y", type = "float"
                    },
                    new CL.param()
                    {
                        name = "Z", type = "float"
                    }
                };
            }
            else if (components == 4)
            {
                acc.param = new CL.param[] {
                    new CL.param()
                    {
                        name = "R", type = "float"
                    },
                    new CL.param()
                    {
                        name = "G", type = "float"
                    },
                    new CL.param()
                    {
                        name = "B", type = "float"
                    },
                    new CL.param()
                    {
                        name = "A", type = "float"
                    }
                };
            }
            return(src);
        }