public void Read(AssetReader reader) { m_nameIndices = new Dictionary <string, int>(); m_nameIndices.Read(reader); Type = (SerializedPassType)reader.ReadInt32(); State.Read(reader); ProgramMask = reader.ReadUInt32(); ProgVertex.Read(reader); ProgFragment.Read(reader); ProgGeometry.Read(reader); ProgHull.Read(reader); ProgDomain.Read(reader); if (HasProgRayTracing(reader.Version)) { ProgRayTracing.Read(reader); } HasInstancingVariant = reader.ReadBoolean(); reader.AlignStream(); UseName = reader.ReadString(); Name = reader.ReadString(); TextureName = reader.ReadString(); Tags.Read(reader); }
public void Export(ShaderWriter writer) { writer.WriteIndent(2); writer.Write("{0} ", Type.ToString()); if (Type == SerializedPassType.UsePass) { writer.Write("\"{0}\"\n", UseName); } else { writer.Write("{\n"); if (Type == SerializedPassType.GrabPass) { if (TextureName != string.Empty) { writer.WriteIndent(3); writer.Write("\"{0}\"\n", TextureName); } } else if (Type == SerializedPassType.Pass) { State.Export(writer); if ((ProgramMask & ShaderType.Vertex.ToProgramMask()) != 0) { ProgVertex.Export(writer, ShaderType.Vertex); } if ((ProgramMask & ShaderType.Fragment.ToProgramMask()) != 0) { ProgFragment.Export(writer, ShaderType.Fragment); } if ((ProgramMask & ShaderType.Geometry.ToProgramMask()) != 0) { ProgGeometry.Export(writer, ShaderType.Geometry); } if ((ProgramMask & ShaderType.Hull.ToProgramMask()) != 0) { ProgHull.Export(writer, ShaderType.Hull); } if ((ProgramMask & ShaderType.Domain.ToProgramMask()) != 0) { ProgDomain.Export(writer, ShaderType.Domain); } #warning HasInstancingVariant? } else { throw new NotSupportedException($"Unsupported pass type {Type}"); } writer.WriteIndent(2); writer.Write("}\n"); } }
public void Export(TextWriter writer, Shader shader, Func <ShaderGpuProgramType, ShaderTextExporter> exporterInstantiator) { writer.WriteIntent(2); writer.Write("{0} ", Type.ToString()); if (Type == SerializedPassType.UsePass) { writer.Write("\"{0}\"\n", UseName); } else { writer.Write("{\n"); if (Type == SerializedPassType.GrabPass) { if (TextureName != string.Empty) { writer.WriteIntent(3); writer.Write("\"{0}\"\n", TextureName); } } else if (Type == SerializedPassType.Pass) { State.Export(writer); ProgVertex.Export(writer, shader, ShaderType.Vertex, exporterInstantiator); ProgFragment.Export(writer, shader, ShaderType.Fragment, exporterInstantiator); ProgGeometry.Export(writer, shader, ShaderType.Geometry, exporterInstantiator); ProgHull.Export(writer, shader, ShaderType.Hull, exporterInstantiator); ProgDomain.Export(writer, shader, ShaderType.Domain, exporterInstantiator); #warning ProgramMask? #warning HasInstancingVariant? } else { throw new NotSupportedException($"Unsupported pass type {Type}"); } writer.WriteIntent(2); writer.Write("}\n"); } }
public void Read(EndianStream stream) { m_nameIndices.Read(stream); Type = (SerializedPassType)stream.ReadInt32(); State.Read(stream); ProgramMask = stream.ReadUInt32(); ProgVertex.Read(stream); ProgFragment.Read(stream); ProgGeometry.Read(stream); ProgHull.Read(stream); ProgDomain.Read(stream); HasInstancingVariant = stream.ReadBoolean(); stream.AlignStream(AlignType.Align4); UseName = stream.ReadStringAligned(); Name = stream.ReadStringAligned(); TextureName = stream.ReadStringAligned(); Tags.Read(stream); }
public StringBuilder ToString(StringBuilder sb, SShader shader) { sb.AppendIntent(2).Append(Type.ToString()).Append(' '); if (Type == SerializedPassType.UsePass) { sb.Append('"').Append(UseName).Append('"').Append('\n'); } else { sb.Append('{').Append('\n'); if (Type == SerializedPassType.GrabPass) { if (TextureName != string.Empty) { sb.AppendIntent(3).Append('"').Append(TextureName).Append('"').Append('\n'); } } else if (Type == SerializedPassType.Pass) { State.ToString(sb); ProgVertex.ToString(sb, shader, ShaderType.Vertex); ProgFragment.ToString(sb, shader, ShaderType.Fragment); ProgGeometry.ToString(sb, shader, ShaderType.Geometry); ProgHull.ToString(sb, shader, ShaderType.Hull); ProgDomain.ToString(sb, shader, ShaderType.Domain); #warning ProgramMask? #warning HasInstancingVariant? } else { throw new NotSupportedException($"Unsupported pass type {Type}"); } sb.AppendIntent(2).Append('}').Append('\n'); } return(sb); }