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); } } } }
public void SetupSubShader(SubShaderDescriptor descriptor) { this.descriptor = descriptor; }
public void AddSubShader(SubShaderDescriptor subShader) { subShaders.Add(subShader); }