public void SyncWith(TemplateModulesHelper other) { if (m_blendOpHelper.ValidData && other.BlendOpHelper.ValidData) { m_blendOpHelper.CopyFrom(other.BlendOpHelper, false); } if (m_cullModeHelper.ValidData && other.CullModeHelper.ValidData) { m_cullModeHelper.CopyFrom(other.CullModeHelper, false); } if (m_colorMaskHelper.ValidData && other.ColorMaskHelper.ValidData) { m_colorMaskHelper.CopyFrom(other.ColorMaskHelper, false); } if (m_stencilBufferHelper.ValidData && other.StencilBufferHelper.ValidData) { m_stencilBufferHelper.CopyFrom(other.StencilBufferHelper, false); } if (m_depthOphelper.ValidData && other.DepthOphelper.ValidData) { m_depthOphelper.CopyFrom(other.DepthOphelper, false); } if (m_shaderModelHelper.ValidData && other.ShaderModelHelper.ValidData) { m_shaderModelHelper.CopyFrom(other.ShaderModelHelper, false); } }
public override void Destroy() { base.Destroy(); m_subShaderModule.Destroy(); m_subShaderModule = null; m_passModule.Destroy(); m_passModule = null; m_containerGraph.MultiPassMasterNodes.RemoveNode(this); }
public void CopyFrom(TemplateModulesHelper other) { m_allModulesMode = other.AllModulesMode; if (other.BlendOpHelper.IsDirty) { m_blendOpHelper.CopyFrom(other.BlendOpHelper, true); } if (other.CullModeHelper.IsDirty) { m_cullModeHelper.CopyFrom(other.CullModeHelper, true); } if (other.ColorMaskHelper.IsDirty) { m_colorMaskHelper.CopyFrom(other.ColorMaskHelper, true); } if (other.StencilBufferHelper.IsDirty) { m_stencilBufferHelper.CopyFrom(other.StencilBufferHelper, true); } if (other.DepthOphelper.IsDirty) { m_depthOphelper.CopyFrom(other.DepthOphelper, true); } if (other.TagsHelper.IsDirty) { m_tagsHelper.CopyFrom(other.TagsHelper); } if (other.ShaderModelHelper.IsDirty) { m_shaderModelHelper.CopyFrom(other.ShaderModelHelper, true); } }
public void Draw(ParentNode owner, TemplateModulesData currentModule, TemplateModulesHelper parent = null) { if (currentModule.ShaderModel.DataCheck == TemplateDataCheck.Valid) { m_shaderModelHelper.Draw(owner); } m_isDirty = m_shaderModelHelper.IsDirty; if (currentModule.CullModeData.DataCheck == TemplateDataCheck.Valid) { m_cullModeHelper.Draw(owner); } m_isDirty = m_isDirty || m_cullModeHelper.IsDirty; if (currentModule.ColorMaskData.DataCheck == TemplateDataCheck.Valid) { m_colorMaskHelper.Draw(owner); } m_isDirty = m_isDirty || m_colorMaskHelper.IsDirty; if (currentModule.DepthData.DataCheck == TemplateDataCheck.Valid) { m_depthOphelper.Draw(owner, false); } m_isDirty = m_isDirty || m_depthOphelper.IsDirty; if (currentModule.BlendData.DataCheck == TemplateDataCheck.Valid) { m_blendOpHelper.Draw(owner, false); } m_isDirty = m_isDirty || m_blendOpHelper.IsDirty; if (currentModule.StencilData.DataCheck == TemplateDataCheck.Valid) { CullMode cullMode = CullMode.Back; if (currentModule.CullModeData.DataCheck == TemplateDataCheck.Valid) { cullMode = m_cullModeHelper.CurrentCullMode; } else if (parent != null && parent.CullModeHelper.ValidData) { cullMode = parent.CullModeHelper.CurrentCullMode; } m_stencilBufferHelper.Draw(owner, cullMode, false); } m_isDirty = m_isDirty || m_stencilBufferHelper.IsDirty; if (currentModule.TagData.DataCheck == TemplateDataCheck.Valid) { m_tagsHelper.Draw(owner, false); } m_isDirty = m_isDirty || m_tagsHelper.IsDirty; if (currentModule.PragmaTag.IsValid) { //m_additionalDefines.Draw( owner ); //m_additionalIncludes.Draw( owner ); //m_additionalPragmas.Draw( owner ); m_additionalDirectives.Draw(owner, false); } m_isDirty = m_isDirty || //m_additionalDefines.IsDirty || //m_additionalIncludes.IsDirty || //m_additionalPragmas.IsDirty || m_additionalDirectives.IsDirty; }
void SetModuleData(TemplateModulesHelper module, bool isSubShader) { if (module.AdditionalPragmas.ValidData) { module.AdditionalPragmas.AddToDataCollector(ref m_currentDataCollector); } if (module.AdditionalIncludes.ValidData) { module.AdditionalIncludes.AddToDataCollector(ref m_currentDataCollector); } if (module.AdditionalDefines.ValidData) { module.AdditionalDefines.AddToDataCollector(ref m_currentDataCollector); } if (isSubShader) { if (module.ShaderModelHelper.ValidData) { m_templateMultiPass.SetSubShaderData(TemplateModuleDataType.ModuleShaderModel, m_subShaderIdx, module.ShaderModelHelper.GenerateShaderData()); } if (module.TagsHelper.ValidData) { m_templateMultiPass.SetSubShaderData(TemplateModuleDataType.ModuleTag, m_subShaderIdx, module.TagsHelper.GenerateTags()); } if (module.BlendOpHelper.ValidBlendMode) { m_templateMultiPass.SetSubShaderData(TemplateModuleDataType.ModuleBlendMode, m_subShaderIdx, module.BlendOpHelper.CurrentBlendFactor); } if (module.BlendOpHelper.ValidBlendOp) { m_templateMultiPass.SetSubShaderData(TemplateModuleDataType.ModuleBlendOp, m_subShaderIdx, module.BlendOpHelper.CurrentBlendOp); } if (module.CullModeHelper.ValidData) { m_templateMultiPass.SetSubShaderData(TemplateModuleDataType.ModuleCullMode, m_subShaderIdx, module.CullModeHelper.GenerateShaderData()); } if (module.ColorMaskHelper.ValidData) { m_templateMultiPass.SetSubShaderData(TemplateModuleDataType.ModuleColorMask, m_subShaderIdx, module.ColorMaskHelper.GenerateShaderData()); } if (module.DepthOphelper.ValidZTest) { m_templateMultiPass.SetSubShaderData(TemplateModuleDataType.ModuleZTest, m_subShaderIdx, module.DepthOphelper.CurrentZTestMode); } if (module.DepthOphelper.ValidZWrite) { m_templateMultiPass.SetSubShaderData(TemplateModuleDataType.ModuleZwrite, m_subShaderIdx, module.DepthOphelper.CurrentZWriteMode); } if (module.DepthOphelper.ValidOffset) { m_templateMultiPass.SetSubShaderData(TemplateModuleDataType.ModuleZOffset, m_subShaderIdx, module.DepthOphelper.CurrentOffset); } if (module.StencilBufferHelper.ValidData) { CullMode cullMode = (module.CullModeHelper.ValidData) ? module.CullModeHelper.CurrentCullMode : CullMode.Back; string value = module.StencilBufferHelper.CreateStencilOp(cullMode); m_templateMultiPass.SetSubShaderData(TemplateModuleDataType.ModuleStencil, m_subShaderIdx, value.Split('\n')); } } else { if (module.ShaderModelHelper.ValidData) { m_templateMultiPass.SetPassData(TemplateModuleDataType.ModuleShaderModel, m_subShaderIdx, m_passIdx, module.ShaderModelHelper.GenerateShaderData()); } if (module.TagsHelper.ValidData) { m_templateMultiPass.SetPassData(TemplateModuleDataType.ModuleTag, m_subShaderIdx, m_passIdx, module.TagsHelper.GenerateTags()); } if (module.BlendOpHelper.ValidBlendMode) { m_templateMultiPass.SetPassData(TemplateModuleDataType.ModuleBlendMode, m_subShaderIdx, m_passIdx, module.BlendOpHelper.CurrentBlendFactor); } if (module.BlendOpHelper.ValidBlendOp) { m_templateMultiPass.SetPassData(TemplateModuleDataType.ModuleBlendOp, m_subShaderIdx, m_passIdx, module.BlendOpHelper.CurrentBlendOp); } if (module.CullModeHelper.ValidData) { m_templateMultiPass.SetPassData(TemplateModuleDataType.ModuleCullMode, m_subShaderIdx, m_passIdx, module.CullModeHelper.GenerateShaderData()); } if (module.ColorMaskHelper.ValidData) { m_templateMultiPass.SetPassData(TemplateModuleDataType.ModuleColorMask, m_subShaderIdx, m_passIdx, module.ColorMaskHelper.GenerateShaderData()); } if (module.DepthOphelper.ValidZTest) { m_templateMultiPass.SetPassData(TemplateModuleDataType.ModuleZTest, m_subShaderIdx, m_passIdx, module.DepthOphelper.CurrentZTestMode); } if (module.DepthOphelper.ValidZWrite) { m_templateMultiPass.SetPassData(TemplateModuleDataType.ModuleZwrite, m_subShaderIdx, m_passIdx, module.DepthOphelper.CurrentZWriteMode); } if (module.DepthOphelper.ValidOffset) { m_templateMultiPass.SetPassData(TemplateModuleDataType.ModuleZOffset, m_subShaderIdx, m_passIdx, module.DepthOphelper.CurrentOffset); } if (module.StencilBufferHelper.ValidData) { CullMode cullMode = (module.CullModeHelper.ValidData) ? module.CullModeHelper.CurrentCullMode : CullMode.Back; string value = module.StencilBufferHelper.CreateStencilOp(cullMode); m_templateMultiPass.SetPassData(TemplateModuleDataType.ModuleStencil, m_subShaderIdx, m_passIdx, value.Split('\n')); } } }