示例#1
0
        void UpdateShaders()
        {
            using (UpdateShadersMarker.Auto())
            {
                ProcessCompletedShaderCompilations();

                if (m_NodesShaderChanged.Count > 0)
                {
                    // nodes with shader changes cause all downstream nodes to need recompilation
                    PropagateNodes(m_NodesShaderChanged, PropagationDirection.Downstream, m_NodesNeedsRecompile);
                    m_NodesShaderChanged.Clear();
                }

                // if there's nothing to update, or if too many nodes are still compiling, then just return
                if ((m_NodesNeedsRecompile.Count == 0) || (m_NodesCompiling.Count >= m_MaxNodesCompiling))
                {
                    return;
                }

                // flag all nodes in m_NodesNeedRecompile as having out of date textures, and redraw them
                foreach (var node in m_NodesNeedsRecompile)
                {
                    PreviewRenderData previewRendererData = GetPreviewRenderData(node);
                    if ((previewRendererData != null) && !previewRendererData.shaderData.isOutOfDate)
                    {
                        previewRendererData.shaderData.isOutOfDate = true;
                        previewRendererData.NotifyPreviewChanged();
                    }
                }

                InitializeSRPIfNeeded();    // SRP must be initialized to compile master node previews

                KickOffShaderCompilations();
            }
        }
示例#2
0
        void BeginCompile(PreviewRenderData renderData, string shaderStr, int shaderPass)
        {
            var shaderData = renderData.shaderData;

            ShaderUtil.UpdateShaderAsset(shaderData.shader, shaderStr, false);
            ShaderUtil.CompilePass(shaderData.mat, shaderPass);
            shaderData.isCompiling = true;
            renderData.NotifyPreviewChanged();
        }
示例#3
0
        void BeginCompile(PreviewRenderData renderData, string shaderStr)
        {
            var shaderData = renderData.shaderData;

            ShaderUtil.ClearCachedData(shaderData.shader);
            ShaderUtil.UpdateShaderAsset(shaderData.shader, shaderStr, false);
            for (var i = 0; i < shaderData.mat.passCount; i++)
            {
                ShaderUtil.CompilePass(shaderData.mat, i);
            }
            shaderData.isCompiling = true;
            renderData.NotifyPreviewChanged();
        }