Exemplo n.º 1
0
        public ShaderVariable GetShaderVar(BinaryReader read)
        {
            object[] objs = GetObjects(read);

            ShaderVariable ret = new ShaderVariable();

            ret.name = name;
            ret.type = VarType.Float;
            if (format.compType == FormatComponentType.UInt)
                ret.type = VarType.UInt;
            if (format.compType == FormatComponentType.SInt)
                ret.type = VarType.Int;
            if (format.compType == FormatComponentType.Double)
                ret.type = VarType.Double;

            ret.columns = Math.Min(format.compCount, 4);
            ret.rows = Math.Min(matrixdim, 4);

            ret.members = new ShaderVariable[0] { };

            ret.value.fv = new float[16];
            ret.value.uv = new uint[16];
            ret.value.iv = new int[16];

            for (uint row = 0; row < ret.rows; row++)
            {
                for (uint col = 0; col < ret.columns; col++)
                {
                    uint dst = row * ret.columns + col;
                    uint src = row * format.compCount + col;

                    object o = objs[src];

                    if (o is float)
                        ret.value.fv[dst] = (float)o;
                    else if (o is uint)
                        ret.value.uv[dst] = (uint)o;
                    else if (o is int)
                        ret.value.iv[dst] = (int)o;
                }
            }

            return ret;
        }
Exemplo n.º 2
0
        private void AddVariables(TreelistView.NodeCollection root, ShaderVariable[] vars)
        {
            foreach (var v in vars)
            {
                TreelistView.Node n = root.Add(new TreelistView.Node(new object[] { v.name, v, v.TypeString() }));

                if (v.rows > 1)
                {
                    for (int i = 0; i < v.rows; i++)
                    {
                        n.Nodes.Add(new TreelistView.Node(new object[] { String.Format("{0}.row{1}", v.name, i), v.Row(i), v.RowTypeString() }));
                    }
                }

                if (v.members.Length > 0)
                {
                    AddVariables(n.Nodes, v.members);
                }
            }
        }
Exemplo n.º 3
0
        private void SetVariables(ShaderVariable[] vars)
        {
            if (variables.InvokeRequired)
            {
                this.BeginInvoke(new Action(() => { SetVariables(vars); }));
                return;
            }

            variables.BeginUpdate();
            variables.Nodes.Clear();

            if(vars != null && vars.Length > 0)
                AddVariables(variables.Nodes, vars);

            variables.EndUpdate();
            variables.Invalidate();
        }
Exemplo n.º 4
0
        public string StringRep(ShaderVariable var, bool useType)
        {
            if (displayInts.Checked || (useType && var.type == VarType.Int))
                return var.Row(0, VarType.Int);

            if (useType && var.type == VarType.UInt)
                return var.Row(0, VarType.UInt);

            return var.Row(0, VarType.Float).ToString();
        }
Exemplo n.º 5
0
		ShaderVariable[] ApplyFormatOverride(byte[] data)
		{
			if(m_FormatOverride == null || m_FormatOverride.Length == 0) return null;

			var stream = new MemoryStream(data);
			var reader = new BinaryReader(stream);

			ShaderVariable[] ret = new ShaderVariable[m_FormatOverride.Length];

			for (int i = 0; i < m_FormatOverride.Length; i++)
			{
				stream.Seek(m_FormatOverride[i].offset, SeekOrigin.Begin);
				ret[i] = m_FormatOverride[i].GetShaderVar(reader);
			}

			reader.Dispose();
			stream.Dispose();

			return ret;
		}
Exemplo n.º 6
0
        ShaderVariable[] ApplyFormatOverride(byte[] data)
        {
            if(m_FormatOverride == null || m_FormatOverride.Length == 0) return null;

            var stream = new MemoryStream(data);
            var reader = new BinaryReader(stream);

            ShaderVariable[] ret = new ShaderVariable[m_FormatOverride.Length];

            int i = 0;

            try
            {
                for (i = 0; i < m_FormatOverride.Length; i++)
                {
                    stream.Seek(m_FormatOverride[i].offset, SeekOrigin.Begin);
                    ret[i] = m_FormatOverride[i].GetShaderVar(reader);
                }
            }
            catch (System.IO.EndOfStreamException)
            {
                for (; i < m_FormatOverride.Length; i++)
                {
                    ret[i] = new ShaderVariable();
                    ret[i].name = "-";
                    ret[i].type = VarType.Float;
                    ret[i].rows = ret[i].columns = 1;
                    ret[i].members = new ShaderVariable[0] { };
                    ret[i].value.fv = new float[16];
                    ret[i].value.uv = new uint[16];
                    ret[i].value.iv = new int[16];
                    ret[i].value.dv = new double[16];
                }
            }

            reader.Dispose();
            stream.Dispose();

            return ret;
        }
Exemplo n.º 7
0
        private string GetShaderVariableAsText(ShaderVariable hoverVar)
        {
            var fmt =
                @"{0}" + Environment.NewLine +
                @"                 X          Y          Z          W" + Environment.NewLine +
                @"----------------------------------------------------" + Environment.NewLine +
                @"float | {1,10} {2,10} {3,10} {4,10}" + Environment.NewLine +
                @"uint  | {5,10} {6,10} {7,10} {8,10}" + Environment.NewLine +
                @"int   | {9,10} {10,10} {11,10} {12,10}" + Environment.NewLine +
                @"hex   | {5,10:X} {6,10:X} {7,10:X} {8,10:X}";

            return String.Format(fmt, hoverVar.name,
                Formatter.Format(hoverVar.value.fv[0]), Formatter.Format(hoverVar.value.fv[1]), Formatter.Format(hoverVar.value.fv[2]), Formatter.Format(hoverVar.value.fv[3]),
                hoverVar.value.uv[0], hoverVar.value.uv[1], hoverVar.value.uv[2], hoverVar.value.uv[3],
                hoverVar.value.iv[0], hoverVar.value.iv[1], hoverVar.value.iv[2], hoverVar.value.iv[3]);
        }
Exemplo n.º 8
0
        private void SetVariables(ShaderVariable[] vars)
        {
            variables.BeginUpdate();
            variables.Nodes.Clear();

            saveCSV.Enabled = false;

            if (vars != null && vars.Length > 0)
            {
                AddVariables(variables.Nodes, vars);
                saveCSV.Enabled = true;
            }

            variables.EndUpdate();
            variables.Invalidate();
        }