Exemple #1
0
        void GenerateSubShader(int targetIndex, SubShaderDescriptor descriptor)
        {
            if (descriptor.passes == null)
            {
                return;
            }

            // Early out of preview generation if no passes are used in preview
            if (m_Mode == GenerationMode.Preview && descriptor.generatesPreview == false)
            {
                return;
            }

            m_Builder.AppendLine("SubShader");
            using (m_Builder.BlockScope())
            {
                GenerationUtils.GenerateSubShaderTags(m_OutputNode as IMasterNode, descriptor, m_Builder);

                foreach (PassCollection.Item pass in descriptor.passes)
                {
                    var activeFields = GatherActiveFieldsFromNode(m_OutputNode, pass.descriptor);

                    // TODO: cleanup this preview check, needed for HD decal preview pass
                    if (m_Mode == GenerationMode.Preview)
                    {
                        activeFields.baseInstance.Add(Fields.IsPreview);
                    }

                    // Check masternode fields for valid passes
                    if (pass.TestActive(activeFields))
                    {
                        GenerateShaderPass(targetIndex, pass.descriptor, activeFields);
                    }
                }
            }
        }
Exemple #2
0
 public void SetupSubShader(SubShaderDescriptor descriptor)
 {
     this.descriptor = descriptor;
 }
Exemple #3
0
 public void AddSubShader(SubShaderDescriptor subShader)
 {
     subShaders.Add(subShader);
 }