Пример #1
0
 private void ClearShaderState(Label shader, TreelistView.TreeListView resources, TreelistView.TreeListView samplers,
                               TreelistView.TreeListView cbuffers, TreelistView.TreeListView classes)
 {
     shader.Text = "Unbound";
     resources.Nodes.Clear();
     samplers.Nodes.Clear();
     cbuffers.Nodes.Clear();
     classes.Nodes.Clear();
 }
Пример #2
0
            public static PersistData GetDefaults(TreelistView.TreeListView view)
            {
                PersistData data = new PersistData();

                foreach (var c in view.Columns)
                {
                    ColumnArrangement a = new ColumnArrangement();
                    a.fieldname    = c.Fieldname;
                    a.visibleindex = c.VisibleIndex;
                    a.width        = c.Width;
                    data.visibleColumns.Add(a);
                }

                return(data);
            }
Пример #3
0
        // Set a shader stage's resources and values
        private void SetShaderState(FetchTexture[] texs, FetchBuffer[] bufs,
                                    GLPipelineState.ShaderStage stage,
                                    Label shader, TreelistView.TreeListView resources, TreelistView.TreeListView samplers,
                                    TreelistView.TreeListView cbuffers, TreelistView.TreeListView classes)
        {
            ShaderReflection shaderDetails = stage.ShaderDetails;

            if (stage.Shader == ResourceId.Null)
            {
                shader.Text = "Unbound";
            }
            else
            {
                shader.Text = "Shader " + stage.Shader.ToString();
            }

            if (shaderDetails != null && shaderDetails.DebugInfo.entryFunc != "" && shaderDetails.DebugInfo.files.Length > 0)
            {
                shader.Text = shaderDetails.DebugInfo.entryFunc + "()" + " - " +
                              Path.GetFileName(shaderDetails.DebugInfo.files[0].filename);
            }

            cbuffers.BeginUpdate();
            cbuffers.Nodes.Clear();
            if (shaderDetails != null)
            {
                UInt32 i = 0;
                foreach (var shaderCBuf in shaderDetails.ConstantBlocks)
                {
                    {
                        string name    = shaderCBuf.name;
                        int    numvars = shaderCBuf.variables.Length;

                        string slotname = i.ToString();

                        var node = cbuffers.Nodes.Add(new object[] { slotname, name, "", "", numvars, "" });

                        node.Image      = global::renderdocui.Properties.Resources.action;
                        node.HoverImage = global::renderdocui.Properties.Resources.action_hover;
                        node.Tag        = i;
                    }
                    i++;
                }
            }
            cbuffers.EndUpdate();
            cbuffers.NodesSelection.Clear();
        }
Пример #4
0
        // Set a shader stage's resources and values
        private void SetShaderState(FetchTexture[] texs, FetchBuffer[] bufs,
                                    GLPipelineState state, GLPipelineState.ShaderStage stage,
                                    Label shader, TreelistView.TreeListView resources, TreelistView.TreeListView samplers,
                                    TreelistView.TreeListView cbuffers, TreelistView.TreeListView classes)
        {
            ShaderReflection shaderDetails = stage.ShaderDetails;

            if (stage.Shader == ResourceId.Null)
            {
                shader.Text = "Unbound";
            }
            else
            {
                shader.Text = "Shader " + stage.Shader.ToString();
            }

            if (shaderDetails != null && shaderDetails.DebugInfo.entryFunc != "" && shaderDetails.DebugInfo.files.Length > 0)
            {
                shader.Text = shaderDetails.DebugInfo.entryFunc + "()" + " - " +
                              Path.GetFileName(shaderDetails.DebugInfo.files[0].filename);
            }

            cbuffers.BeginUpdate();
            cbuffers.Nodes.Clear();
            if (shaderDetails != null)
            {
                UInt32 i = 0;
                foreach (var shaderCBuf in shaderDetails.ConstantBlocks)
                {
                    int bindPoint = stage.BindpointMapping.ConstantBlocks[i].bind;

                    bool filledSlot = !shaderCBuf.bufferBacked ||
                                      (bindPoint >= 0 && bindPoint < state.UniformBuffers.Length && state.UniformBuffers[bindPoint].Resource != ResourceId.Null);
                    bool usedSlot = stage.BindpointMapping.ConstantBlocks[i].used;

                    // show if
                    if (usedSlot ||                                          // it's referenced by the shader - regardless of empty or not
                        (showDisabled.Checked && !usedSlot && filledSlot) || // it's bound, but not referenced, and we have "show disabled"
                        (showEmpty.Checked && !filledSlot)                   // it's empty, and we have "show empty"
                        )
                    {
                        string name    = shaderCBuf.name;
                        int    numvars = shaderCBuf.variables.Length;

                        string slotname = i.ToString();

                        var node = cbuffers.Nodes.Add(new object[] { slotname, name, bindPoint, "", numvars, "" });

                        node.Image      = global::renderdocui.Properties.Resources.action;
                        node.HoverImage = global::renderdocui.Properties.Resources.action_hover;
                        node.Tag        = i;

                        if (!filledSlot)
                        {
                            EmptyRow(node);
                        }

                        if (!usedSlot)
                        {
                            InactiveRow(node);
                        }
                    }
                    i++;
                }
            }
            cbuffers.EndUpdate();
            cbuffers.NodesSelection.Clear();
        }