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; }
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); } } }
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(); }
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(); }
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; }
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; }
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]); }
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(); }