Exemple #1
0
        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);
        }
Exemple #2
0
        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);
        }
Exemple #3
0
        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);
            }
        }
Exemple #4
0
        //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('}');
        }
Exemple #5
0
 public SShader(AssetInfo assetInfo) :
     base(assetInfo)
 {
     ParsedForm = new SerializedShader(AssetsFile);
 }