public SerializedSubShader(ObjectReader reader) { int numPasses = reader.ReadInt32(); m_Passes = new SerializedPass[numPasses]; for (int i = 0; i < numPasses; i++) { m_Passes[i] = new SerializedPass(reader); } m_Tags = new SerializedTagMap(reader); m_LOD = reader.ReadInt32(); }
private static string ConvertSerializedPass(SerializedPass m_Passe, ShaderCompilerPlatform[] platforms, ShaderProgram[] shaderPrograms) { var sb = new StringBuilder(); switch (m_Passe.m_Type) { case PassType.kPassTypeNormal: sb.Append(" Pass "); break; case PassType.kPassTypeUse: sb.Append(" UsePass "); break; case PassType.kPassTypeGrab: sb.Append(" GrabPass "); break; } if (m_Passe.m_Type == PassType.kPassTypeUse) { sb.Append($"\"{m_Passe.m_UseName}\"\n"); } else { sb.Append("{\n"); if (m_Passe.m_Type == PassType.kPassTypeGrab) { if (!string.IsNullOrEmpty(m_Passe.m_TextureName)) { sb.Append($" \"{m_Passe.m_TextureName}\"\n"); } } else { sb.Append(ConvertSerializedShaderState(m_Passe.m_State)); if (m_Passe.progVertex.m_SubPrograms.Length > 0) { sb.Append("Program \"vp\" {\n"); sb.Append(ConvertSerializedSubPrograms(m_Passe.progVertex.m_SubPrograms, platforms, shaderPrograms)); sb.Append("}\n"); } if (m_Passe.progFragment.m_SubPrograms.Length > 0) { sb.Append("Program \"fp\" {\n"); sb.Append(ConvertSerializedSubPrograms(m_Passe.progFragment.m_SubPrograms, platforms, shaderPrograms)); sb.Append("}\n"); } if (m_Passe.progGeometry.m_SubPrograms.Length > 0) { sb.Append("Program \"gp\" {\n"); sb.Append(ConvertSerializedSubPrograms(m_Passe.progGeometry.m_SubPrograms, platforms, shaderPrograms)); sb.Append("}\n"); } if (m_Passe.progHull.m_SubPrograms.Length > 0) { sb.Append("Program \"hp\" {\n"); sb.Append(ConvertSerializedSubPrograms(m_Passe.progHull.m_SubPrograms, platforms, shaderPrograms)); sb.Append("}\n"); } if (m_Passe.progDomain.m_SubPrograms.Length > 0) { sb.Append("Program \"dp\" {\n"); sb.Append(ConvertSerializedSubPrograms(m_Passe.progDomain.m_SubPrograms, platforms, shaderPrograms)); sb.Append("}\n"); } } sb.Append("}\n"); } return(sb.ToString()); }