public override void Read(EndianStream stream) { base.Read(stream); if (IsSerialized) { SerializedShader.Read(stream); } else { Shader.Read(stream); } if (IsReadKeywords) { if (IsKeywordsArray) { m_shaderKeywordsArray = stream.ReadStringArray(); } else { ShaderKeywords = stream.ReadStringAligned(); } } if (IsReadLightmapFlags) { LightmapFlags = stream.ReadUInt32(); if (IsReadOtherFlags) { EnableInstancingVariants = stream.ReadBoolean(); DoubleSidedGI = stream.ReadBoolean(); stream.AlignStream(AlignType.Align4); } } if (IsReadCustomRenderQueue) { CustomRenderQueue = stream.ReadInt32(); } if (IsReadStringTagMap) { StringTagMap.Read(stream); if (IsReadDisabledShaderPasses) { m_disabledShaderPasses = stream.ReadStringArray(); } } SavedProperties.Read(stream); }
protected override YAMLMappingNode ExportYAMLRoot() { YAMLMappingNode node = base.ExportYAMLRoot(); node.InsertBegin("serializedVersion", SerializedVersion); if (IsSerialized) { node.Add("m_Shader", SerializedShader.ExportYAML()); } else { node.Add("m_Shader", Shader.ExportYAML()); } if (IsKeywordsArray) { node.Add("m_ShaderKeywords", string.Join(" ", m_shaderKeywordsArray)); } else { node.Add("m_ShaderKeywords", ShaderKeywords); } node.Add("m_LightmapFlags", LightmapFlags); node.Add("m_EnableInstancingVariants", EnableInstancingVariants); node.Add("m_DoubleSidedGI", DoubleSidedGI); node.Add("m_CustomRenderQueue", CustomRenderQueue); if (IsReadStringTagMap) { node.Add("stringTagMap", StringTagMap.ExportYAML()); } else { node.Add("stringTagMap", YAMLMappingNode.Empty); } if (IsReadDisabledShaderPasses) { #warning TODO: check on sample node.Add("disabledShaderPasses", DisabledShaderPasses.ExportYAML()); } else { node.Add("disabledShaderPasses", YAMLSequenceNode.Empty); } node.Add("m_SavedProperties", SavedProperties.ExportYAML()); return(node); }
public override IEnumerable <Object> FetchDependencies(bool isLog = false) { foreach (Object @object in base.FetchDependencies(isLog)) { yield return(@object); } if (IsSerialized) { SShader shader = SerializedShader.FindObject(); if (shader == null) { if (isLog) { Logger.Log(LogType.Warning, LogCategory.Export, $"{ToLogString()} m_Shader {SerializedShader.ToLogString()} wasn't found "); } } else { yield return(shader); } } else { Shader shader = Shader.FindObject(); if (shader == null) { if (isLog) { Logger.Log(LogType.Warning, LogCategory.Export, $"{ToLogString()} m_Shader {Shader.ToLogString()} wasn't found "); } } else { yield return(shader); } } foreach (Object @object in SavedProperties.FetchDependencies(isLog)) { yield return(@object); } }
//See ParsedForm.Export void ExportParsedForm(SerializedShader parsedForm, ShaderWriter writer) { writer.Write("Shader \"{0}\" {{\n", parsedForm.Name); parsedForm.PropInfo.Export(writer); foreach (SerializedSubShader subShader in parsedForm.SubShaders) { ExportSerializedSubShader(subShader, writer); } if (parsedForm.FallbackName != string.Empty) { writer.WriteIndent(1); writer.Write("Fallback \"{0}\"\n", parsedForm.FallbackName); } if (parsedForm.CustomEditorName != string.Empty) { writer.WriteIndent(1); writer.Write("CustomEditor \"{0}\"\n", parsedForm.CustomEditorName); } writer.Write('}'); }
public SShader(AssetInfo assetInfo) : base(assetInfo) { ParsedForm = new SerializedShader(AssetsFile); }