bool StripUnusedVariant(PipelineCapabilities capabilities, ShaderCompilerData compilerData) { if (compilerData.shaderKeywordSet.IsEnabled(LightweightKeyword.AdditionalLights) && !CoreUtils.HasFlag(capabilities, PipelineCapabilities.AdditionalLights)) { return(true); } if (compilerData.shaderKeywordSet.IsEnabled(LightweightKeyword.VertexLights) && !CoreUtils.HasFlag(capabilities, PipelineCapabilities.VertexLights)) { return(true); } if (compilerData.shaderKeywordSet.IsEnabled(LightweightKeyword.DirectionalShadows) && !CoreUtils.HasFlag(capabilities, PipelineCapabilities.DirectionalShadows)) { return(true); } if (compilerData.shaderKeywordSet.IsEnabled(LightweightKeyword.LocalShadows) && !CoreUtils.HasFlag(capabilities, PipelineCapabilities.LocalShadows)) { return(true); } if (compilerData.shaderKeywordSet.IsEnabled(LightweightKeyword.SoftShadows) && !CoreUtils.HasFlag(capabilities, PipelineCapabilities.SoftShadows)) { return(true); } return(false); }
static void SetPipelineCapabilities(LightweightPipelineAsset pipelineAsset) { s_PipelineCapabilities = 0U; if (pipelineAsset.MaxPixelLights > 1 || pipelineAsset.SupportsVertexLight) { s_PipelineCapabilities |= PipelineCapabilities.AdditionalLights; } if (pipelineAsset.SupportsVertexLight) { s_PipelineCapabilities |= PipelineCapabilities.VertexLights; } if (pipelineAsset.SupportsDirectionalShadows) { s_PipelineCapabilities |= PipelineCapabilities.DirectionalShadows; } if (pipelineAsset.SupportsLocalShadows) { s_PipelineCapabilities |= PipelineCapabilities.LocalShadows; } bool anyShadows = pipelineAsset.SupportsDirectionalShadows || pipelineAsset.SupportsLocalShadows; if (pipelineAsset.SupportsSoftShadows && anyShadows) { s_PipelineCapabilities |= PipelineCapabilities.SoftShadows; } }
public void OnProcessShader(Shader shader, ShaderSnippetData snippetData, IList <ShaderCompilerData> compilerDataList) { LightweightRP lw = RenderPipelineManager.currentPipeline as LightweightRP; if (lw == null) { return; } PipelineCapabilities capabilities = LightweightRP.GetPipelineCapabilities(); int prevVariantCount = compilerDataList.Count; for (int i = 0; i < compilerDataList.Count; ++i) { if (StripUnused(capabilities, shader, snippetData, compilerDataList[i])) { compilerDataList.RemoveAt(i); --i; } } #if LOG_VARIANTS m_TotalVariantsInputCount += prevVariantCount; m_TotalVariantsOutputCount += compilerDataList.Count; LogVariants(shader, snippetData, prevVariantCount, compilerDataList.Count); #endif }
private void OnEndRequest(object sender, EventArgs e) { HttpContext context = ((HttpApplication)sender).Context; if (context != null) { PipelineCapabilities caps = context.Request.Browser as PipelineCapabilities; caps.FlowData.Dispose(); } }
bool StripUnusedPass(PipelineCapabilities capabilities, ShaderSnippetData snippetData) { if (snippetData.passType == PassType.Meta) { return(true); } if (snippetData.passType == PassType.ShadowCaster) { if (!CoreUtils.HasFlag(capabilities, PipelineCapabilities.DirectionalShadows) && !CoreUtils.HasFlag(capabilities, PipelineCapabilities.LocalShadows)) { return(true); } } return(false); }
bool StripUnusedShader(PipelineCapabilities capabilities, Shader shader) { if (shader.name.Contains("Debug")) { return(true); } if (shader.name.Contains("HDRenderPipeline")) { return(true); } if (!CoreUtils.HasFlag(capabilities, PipelineCapabilities.DirectionalShadows) && shader.name.Contains("ScreenSpaceShadows")) { return(true); } return(false); }
bool StripUnused(PipelineCapabilities capabilities, Shader shader, ShaderSnippetData snippetData, ShaderCompilerData compilerData) { if (StripUnusedShader(capabilities, shader)) { return(true); } if (StripUnusedPass(capabilities, snippetData)) { return(true); } if (StripUnusedVariant(capabilities, compilerData)) { return(true); } if (StripInvalidVariants(compilerData)) { return(true); } return(false); }
static void SetPipelineCapabilities(LightweightPipelineAsset pipelineAsset) { s_PipelineCapabilities = 0U; // Strip variants based on selected pipeline features if (!pipelineAsset.customShaderVariantStripping) { if (pipelineAsset.maxPixelLights > 1 || pipelineAsset.supportsVertexLight) { s_PipelineCapabilities |= PipelineCapabilities.AdditionalLights; } if (pipelineAsset.supportsVertexLight) { s_PipelineCapabilities |= PipelineCapabilities.VertexLights; } if (pipelineAsset.supportsDirectionalShadows) { s_PipelineCapabilities |= PipelineCapabilities.DirectionalShadows; } if (pipelineAsset.supportsLocalShadows) { s_PipelineCapabilities |= PipelineCapabilities.LocalShadows; } bool anyShadows = pipelineAsset.supportsDirectionalShadows || pipelineAsset.supportsLocalShadows; if (pipelineAsset.supportsSoftShadows && anyShadows) { s_PipelineCapabilities |= PipelineCapabilities.SoftShadows; } } else { if (pipelineAsset.keepAdditionalLightVariants) { s_PipelineCapabilities |= PipelineCapabilities.AdditionalLights; } if (pipelineAsset.keepVertexLightVariants) { s_PipelineCapabilities |= PipelineCapabilities.VertexLights; } if (pipelineAsset.keepDirectionalShadowVariants) { s_PipelineCapabilities |= PipelineCapabilities.DirectionalShadows; } if (pipelineAsset.keepLocalShadowVariants) { s_PipelineCapabilities |= PipelineCapabilities.LocalShadows; } if (pipelineAsset.keepSoftShadowVariants) { s_PipelineCapabilities |= PipelineCapabilities.SoftShadows; } } }