diff --git a/renderdoc/api/replay/d3d12_pipestate.h b/renderdoc/api/replay/d3d12_pipestate.h new file mode 100644 index 000000000..513633932 --- /dev/null +++ b/renderdoc/api/replay/d3d12_pipestate.h @@ -0,0 +1,333 @@ +/****************************************************************************** + * The MIT License (MIT) + * + * Copyright (c) 2016 Baldur Karlsson + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + ******************************************************************************/ + +#pragma once + +#include "shader_types.h" + +struct D3D12PipelineState +{ + D3D12PipelineState() {} + struct InputAssembler + { + InputAssembler() : Bytecode(NULL), customName(false) {} + struct LayoutInput + { + LayoutInput() + : SemanticIndex(0), InputSlot(0), ByteOffset(0), PerInstance(false), InstanceDataStepRate(0) + { + } + rdctype::str SemanticName; + uint32_t SemanticIndex; + ResourceFormat Format; + uint32_t InputSlot; + uint32_t ByteOffset; + bool32 PerInstance; + uint32_t InstanceDataStepRate; + }; + rdctype::array layouts; + ResourceId layout; + ShaderReflection *Bytecode; + bool32 customName; + rdctype::str LayoutName; + + struct VertexBuffer + { + VertexBuffer() : Buffer(), Stride(0), Offset(0) {} + ResourceId Buffer; + uint32_t Stride; + uint32_t Offset; + }; + rdctype::array vbuffers; + + struct IndexBuffer + { + IndexBuffer() : Buffer(), Offset(0) {} + ResourceId Buffer; + uint32_t Offset; + } ibuffer; + } m_IA; + + struct ShaderStage + { + ShaderStage() : Shader(), customName(false), ShaderDetails(NULL), stage(eShaderStage_Vertex) {} + ResourceId Shader; + rdctype::str ShaderName; + bool32 customName; + ShaderReflection *ShaderDetails; + ShaderBindpointMapping BindpointMapping; + + ShaderStageType stage; + + struct ResourceView + { + ResourceView() + : View(), + Resource(), + Format(), + Structured(false), + BufferStructCount(0), + ElementSize(0), + ElementOffset(0), + ElementWidth(0), + FirstElement(0), + NumElements(1), + Flags(0), + HighestMip(0), + NumMipLevels(1), + ArraySize(1), + FirstArraySlice(0) + { + } + + ResourceId View; + ResourceId Resource; + rdctype::str Type; + ResourceFormat Format; + + bool32 Structured; + uint32_t BufferStructCount; + uint32_t ElementSize; + + // Buffer (SRV) + uint32_t ElementOffset; + uint32_t ElementWidth; + + // Buffer (UAV) + uint32_t FirstElement; + uint32_t NumElements; + + // BufferEx + uint32_t Flags; + + // Texture + uint32_t HighestMip; + uint32_t NumMipLevels; + + // Texture Array + uint32_t ArraySize; + uint32_t FirstArraySlice; + }; + rdctype::array SRVs; + rdctype::array UAVs; + + struct Sampler + { + Sampler() + : Samp(), + customSamplerName(false), + UseBorder(false), + UseComparison(false), + MaxAniso(0), + MaxLOD(0.0f), + MinLOD(0.0f), + MipLODBias(0.0f) + { + BorderColor[0] = BorderColor[1] = BorderColor[2] = BorderColor[3] = 0.0f; + } + ResourceId Samp; + rdctype::str SamplerName; + bool32 customSamplerName; + rdctype::str AddressU, AddressV, AddressW; + float BorderColor[4]; + rdctype::str Comparison; + rdctype::str Filter; + bool32 UseBorder; + bool32 UseComparison; + uint32_t MaxAniso; + float MaxLOD; + float MinLOD; + float MipLODBias; + }; + rdctype::array Samplers; + + struct CBuffer + { + CBuffer() : Buffer(), VecOffset(0), VecCount(0) {} + ResourceId Buffer; + uint32_t VecOffset; + uint32_t VecCount; + }; + rdctype::array ConstantBuffers; + + rdctype::array ClassInstances; + } m_VS, m_HS, m_DS, m_GS, m_PS, m_CS; + + struct Streamout + { + struct Output + { + Output() : Buffer(), Offset(0) {} + ResourceId Buffer; + uint32_t Offset; + }; + rdctype::array Outputs; + } m_SO; + + struct Rasterizer + { + struct Viewport + { + Viewport() : Width(0.0f), Height(0.0f), MinDepth(0.0f), MaxDepth(0.0f), Enabled(false) + { + TopLeft[0] = 0.0f; + TopLeft[1] = 0.0f; + } + Viewport(float TX, float TY, float W, float H, float MN, float MX, bool en) + : Width(W), Height(H), MinDepth(MN), MaxDepth(MX), Enabled(en) + { + TopLeft[0] = TX; + TopLeft[1] = TY; + } + float TopLeft[2]; + float Width, Height; + float MinDepth, MaxDepth; + bool32 Enabled; + }; + rdctype::array Viewports; + + struct Scissor + { + Scissor() : left(0), top(0), right(0), bottom(0), Enabled(false) {} + Scissor(int l, int t, int r, int b, bool en) + : left(l), top(t), right(r), bottom(b), Enabled(en) + { + } + int32_t left, top, right, bottom; + bool32 Enabled; + }; + rdctype::array Scissors; + + struct RasterizerState + { + RasterizerState() + : State(), + FillMode(eFill_Solid), + CullMode(eCull_None), + FrontCCW(false), + DepthBias(0), + DepthBiasClamp(0.0f), + SlopeScaledDepthBias(0.0f), + DepthClip(false), + ScissorEnable(false), + MultisampleEnable(false), + AntialiasedLineEnable(false), + ForcedSampleCount(0), + ConservativeRasterization(false) + { + } + ResourceId State; + TriangleFillMode FillMode; + TriangleCullMode CullMode; + bool32 FrontCCW; + int32_t DepthBias; + float DepthBiasClamp; + float SlopeScaledDepthBias; + bool32 DepthClip; + bool32 ScissorEnable; + bool32 MultisampleEnable; + bool32 AntialiasedLineEnable; + uint32_t ForcedSampleCount; + bool32 ConservativeRasterization; + } m_State; + } m_RS; + + struct OutputMerger + { + OutputMerger() : UAVStartSlot(0), DepthReadOnly(false), StencilReadOnly(false) {} + struct DepthStencilState + { + DepthStencilState() + : State(), + DepthEnable(false), + DepthWrites(false), + StencilEnable(false), + StencilReadMask(0), + StencilWriteMask(0), + StencilRef(0) + { + } + ResourceId State; + bool32 DepthEnable; + rdctype::str DepthFunc; + bool32 DepthWrites; + bool32 StencilEnable; + byte StencilReadMask; + byte StencilWriteMask; + + struct StencilOp + { + rdctype::str FailOp; + rdctype::str DepthFailOp; + rdctype::str PassOp; + rdctype::str Func; + } m_FrontFace, m_BackFace; + + uint32_t StencilRef; + } m_State; + + struct BlendState + { + BlendState() : AlphaToCoverage(false), IndependentBlend(false), SampleMask(0) + { + BlendFactor[0] = BlendFactor[1] = BlendFactor[2] = BlendFactor[3] = 0.0f; + } + + ResourceId State; + + bool32 AlphaToCoverage; + bool32 IndependentBlend; + + struct RTBlend + { + RTBlend() : Enabled(false), LogicEnabled(false), WriteMask(0) {} + struct BlendOp + { + rdctype::str Source; + rdctype::str Destination; + rdctype::str Operation; + } m_Blend, m_AlphaBlend; + + rdctype::str LogicOp; + + bool32 Enabled; + bool32 LogicEnabled; + byte WriteMask; + }; + rdctype::array Blends; + + float BlendFactor[4]; + uint32_t SampleMask; + } m_BlendState; + + rdctype::array RenderTargets; + + uint32_t UAVStartSlot; + rdctype::array UAVs; + + ShaderStage::ResourceView DepthTarget; + bool32 DepthReadOnly; + bool32 StencilReadOnly; + } m_OM; +}; diff --git a/renderdoc/api/replay/renderdoc_replay.h b/renderdoc/api/replay/renderdoc_replay.h index a1021e4fb..544f8742a 100644 --- a/renderdoc/api/replay/renderdoc_replay.h +++ b/renderdoc/api/replay/renderdoc_replay.h @@ -136,6 +136,7 @@ struct ResourceId #include "capture_options.h" #include "control_types.h" #include "d3d11_pipestate.h" +#include "d3d12_pipestate.h" #include "data_types.h" #include "gl_pipestate.h" #include "replay_enums.h" @@ -231,6 +232,7 @@ struct IReplayRenderer virtual bool SetFrameEvent(uint32_t eventID, bool force) = 0; virtual bool GetD3D11PipelineState(D3D11PipelineState *state) = 0; + virtual bool GetD3D12PipelineState(D3D12PipelineState *state) = 0; virtual bool GetGLPipelineState(GLPipelineState *state) = 0; virtual bool GetVulkanPipelineState(VulkanPipelineState *state) = 0; @@ -325,6 +327,8 @@ extern "C" RENDERDOC_API bool32 RENDERDOC_CC ReplayRenderer_SetFrameEvent(Replay bool32 force); extern "C" RENDERDOC_API bool32 RENDERDOC_CC ReplayRenderer_GetD3D11PipelineState(ReplayRenderer *rend, D3D11PipelineState *state); +extern "C" RENDERDOC_API bool32 RENDERDOC_CC +ReplayRenderer_GetD3D12PipelineState(ReplayRenderer *rend, D3D12PipelineState *state); extern "C" RENDERDOC_API bool32 RENDERDOC_CC ReplayRenderer_GetGLPipelineState(ReplayRenderer *rend, GLPipelineState *state); extern "C" RENDERDOC_API bool32 RENDERDOC_CC diff --git a/renderdoc/api/replay/replay_enums.h b/renderdoc/api/replay/replay_enums.h index d3fe63144..0ba890f47 100644 --- a/renderdoc/api/replay/replay_enums.h +++ b/renderdoc/api/replay/replay_enums.h @@ -224,6 +224,7 @@ enum QualityHint enum GraphicsAPI { eGraphicsAPI_D3D11, + eGraphicsAPI_D3D12, eGraphicsAPI_OpenGL, eGraphicsAPI_Vulkan, }; diff --git a/renderdoc/core/image_viewer.cpp b/renderdoc/core/image_viewer.cpp index 04cb9e80c..50fa8c359 100644 --- a/renderdoc/core/image_viewer.cpp +++ b/renderdoc/core/image_viewer.cpp @@ -164,6 +164,7 @@ public: return ret; } void SavePipelineState() {} + D3D12PipelineState GetD3D12PipelineState() { return D3D12PipelineState(); } GLPipelineState GetGLPipelineState() { return GLPipelineState(); } VulkanPipelineState GetVulkanPipelineState() { return VulkanPipelineState(); } void ReplayLog(uint32_t endEventID, ReplayLogType replayType) {} diff --git a/renderdoc/core/replay_proxy.cpp b/renderdoc/core/replay_proxy.cpp index 671506c9b..cfe8a0d85 100644 --- a/renderdoc/core/replay_proxy.cpp +++ b/renderdoc/core/replay_proxy.cpp @@ -492,6 +492,16 @@ void Serialiser::Serialise(const char *name, D3D11PipelineState &el) #pragma endregion D3D11 pipeline state +#pragma region D3D12 pipeline state + +template <> +void Serialiser::Serialise(const char *name, D3D12PipelineState &el) +{ + RDCUNIMPLEMENTED("Serialiser::Serialise()"); +} + +#pragma endregion D3D12 pipeline state + #pragma region OpenGL pipeline state template <> @@ -2008,6 +2018,7 @@ void ReplayProxy::SavePipelineState() { m_Remote->SavePipelineState(); m_D3D11PipelineState = m_Remote->GetD3D11PipelineState(); + m_D3D12PipelineState = m_Remote->GetD3D12PipelineState(); m_GLPipelineState = m_Remote->GetGLPipelineState(); m_VulkanPipelineState = m_Remote->GetVulkanPipelineState(); } @@ -2017,11 +2028,13 @@ void ReplayProxy::SavePipelineState() return; m_D3D11PipelineState = D3D11PipelineState(); + m_D3D12PipelineState = D3D12PipelineState(); m_GLPipelineState = GLPipelineState(); m_VulkanPipelineState = VulkanPipelineState(); } m_FromReplaySerialiser->Serialise("", m_D3D11PipelineState); + m_FromReplaySerialiser->Serialise("", m_D3D12PipelineState); m_FromReplaySerialiser->Serialise("", m_GLPipelineState); m_FromReplaySerialiser->Serialise("", m_VulkanPipelineState); } diff --git a/renderdoc/core/replay_proxy.h b/renderdoc/core/replay_proxy.h index 1f0c887ad..74892dc71 100644 --- a/renderdoc/core/replay_proxy.h +++ b/renderdoc/core/replay_proxy.h @@ -398,6 +398,7 @@ public: void SavePipelineState(); D3D11PipelineState GetD3D11PipelineState() { return m_D3D11PipelineState; } + D3D12PipelineState GetD3D12PipelineState() { return m_D3D12PipelineState; } GLPipelineState GetGLPipelineState() { return m_GLPipelineState; } VulkanPipelineState GetVulkanPipelineState() { return m_VulkanPipelineState; } void ReplayLog(uint32_t endEventID, ReplayLogType replayType); @@ -539,6 +540,7 @@ private: APIProperties m_APIProps; D3D11PipelineState m_D3D11PipelineState; + D3D12PipelineState m_D3D12PipelineState; GLPipelineState m_GLPipelineState; VulkanPipelineState m_VulkanPipelineState; }; diff --git a/renderdoc/driver/d3d11/d3d11_replay.h b/renderdoc/driver/d3d11/d3d11_replay.h index 6371d53df..7726a7620 100644 --- a/renderdoc/driver/d3d11/d3d11_replay.h +++ b/renderdoc/driver/d3d11/d3d11_replay.h @@ -64,6 +64,7 @@ public: void SavePipelineState() { m_CurPipelineState = MakePipelineState(); } D3D11PipelineState GetD3D11PipelineState() { return m_CurPipelineState; } + D3D12PipelineState GetD3D12PipelineState() { return D3D12PipelineState(); } GLPipelineState GetGLPipelineState() { return GLPipelineState(); } VulkanPipelineState GetVulkanPipelineState() { return VulkanPipelineState(); } void FreeTargetResource(ResourceId id); diff --git a/renderdoc/driver/d3d12/d3d12_replay.cpp b/renderdoc/driver/d3d12/d3d12_replay.cpp index 42e7b54ee..78976a2dc 100644 --- a/renderdoc/driver/d3d12/d3d12_replay.cpp +++ b/renderdoc/driver/d3d12/d3d12_replay.cpp @@ -350,11 +350,8 @@ vector D3D12Replay::GetPassEvents(uint32_t eventID) return passEvents; } -D3D11PipelineState D3D12Replay::MakePipelineState() +void D3D12Replay::MakePipelineState() { - D3D11PipelineState ret; - - return ret; } void D3D12Replay::InitPostVSBuffers(uint32_t eventID) diff --git a/renderdoc/driver/d3d12/d3d12_replay.h b/renderdoc/driver/d3d12/d3d12_replay.h index 1440b47f7..f0c28ba2a 100644 --- a/renderdoc/driver/d3d12/d3d12_replay.h +++ b/renderdoc/driver/d3d12/d3d12_replay.h @@ -59,6 +59,7 @@ public: void SavePipelineState() { MakePipelineState(); } D3D11PipelineState GetD3D11PipelineState() { return D3D11PipelineState(); } + D3D12PipelineState GetD3D12PipelineState() { return m_PipelineState; } GLPipelineState GetGLPipelineState() { return GLPipelineState(); } VulkanPipelineState GetVulkanPipelineState() { return VulkanPipelineState(); } void FreeTargetResource(ResourceId id); @@ -160,11 +161,13 @@ public: Callstack::StackResolver *GetCallstackResolver(); private: - D3D11PipelineState MakePipelineState(); + void MakePipelineState(); bool m_Proxy; vector m_ProxyResources; + D3D12PipelineState m_PipelineState; + WrappedID3D12Device *m_pDevice; }; diff --git a/renderdoc/driver/gl/gl_replay.h b/renderdoc/driver/gl/gl_replay.h index a4daef09d..9f9196aea 100644 --- a/renderdoc/driver/gl/gl_replay.h +++ b/renderdoc/driver/gl/gl_replay.h @@ -105,6 +105,7 @@ public: void SavePipelineState(); D3D11PipelineState GetD3D11PipelineState() { return D3D11PipelineState(); } + D3D12PipelineState GetD3D12PipelineState() { return D3D12PipelineState(); } GLPipelineState GetGLPipelineState() { return m_CurPipelineState; } VulkanPipelineState GetVulkanPipelineState() { return VulkanPipelineState(); } void FreeTargetResource(ResourceId id); diff --git a/renderdoc/driver/vulkan/vk_replay.h b/renderdoc/driver/vulkan/vk_replay.h index 50403892e..7f51cb6ea 100644 --- a/renderdoc/driver/vulkan/vk_replay.h +++ b/renderdoc/driver/vulkan/vk_replay.h @@ -146,6 +146,7 @@ public: void SavePipelineState(); D3D11PipelineState GetD3D11PipelineState() { return D3D11PipelineState(); } + D3D12PipelineState GetD3D12PipelineState() { return D3D12PipelineState(); } GLPipelineState GetGLPipelineState() { return GLPipelineState(); } VulkanPipelineState GetVulkanPipelineState() { return m_VulkanPipelineState; } void FreeTargetResource(ResourceId id); diff --git a/renderdoc/renderdoc.vcxproj b/renderdoc/renderdoc.vcxproj index abde6685f..c67b06561 100644 --- a/renderdoc/renderdoc.vcxproj +++ b/renderdoc/renderdoc.vcxproj @@ -232,6 +232,7 @@ + diff --git a/renderdoc/renderdoc.vcxproj.filters b/renderdoc/renderdoc.vcxproj.filters index 7b27937d6..97cdb1fa8 100644 --- a/renderdoc/renderdoc.vcxproj.filters +++ b/renderdoc/renderdoc.vcxproj.filters @@ -249,6 +249,9 @@ Resources\glsl + + API\Replay + diff --git a/renderdoc/replay/replay_driver.h b/renderdoc/replay/replay_driver.h index 25cb481c5..e4ffa9455 100644 --- a/renderdoc/replay/replay_driver.h +++ b/renderdoc/replay/replay_driver.h @@ -68,6 +68,7 @@ public: virtual void SavePipelineState() = 0; virtual D3D11PipelineState GetD3D11PipelineState() = 0; + virtual D3D12PipelineState GetD3D12PipelineState() = 0; virtual GLPipelineState GetGLPipelineState() = 0; virtual VulkanPipelineState GetVulkanPipelineState() = 0; diff --git a/renderdoc/replay/replay_renderer.cpp b/renderdoc/replay/replay_renderer.cpp index 25f971544..f5ae9cb4c 100644 --- a/renderdoc/replay/replay_renderer.cpp +++ b/renderdoc/replay/replay_renderer.cpp @@ -192,6 +192,17 @@ bool ReplayRenderer::GetD3D11PipelineState(D3D11PipelineState *state) return false; } +bool ReplayRenderer::GetD3D12PipelineState(D3D12PipelineState *state) +{ + if(state) + { + *state = m_D3D12PipelineState; + return true; + } + + return false; +} + bool ReplayRenderer::GetGLPipelineState(GLPipelineState *state) { if(state) @@ -1611,6 +1622,7 @@ void ReplayRenderer::FetchPipelineState() m_pDevice->SavePipelineState(); m_D3D11PipelineState = m_pDevice->GetD3D11PipelineState(); + m_D3D12PipelineState = m_pDevice->GetD3D12PipelineState(); m_GLPipelineState = m_pDevice->GetGLPipelineState(); m_VulkanPipelineState = m_pDevice->GetVulkanPipelineState(); @@ -1625,6 +1637,17 @@ void ReplayRenderer::FetchPipelineState() stages[i]->ShaderDetails = m_pDevice->GetShader(m_pDevice->GetLiveID(stages[i]->Shader), ""); } + { + D3D12PipelineState::ShaderStage *stages[] = { + &m_D3D12PipelineState.m_VS, &m_D3D12PipelineState.m_HS, &m_D3D12PipelineState.m_DS, + &m_D3D12PipelineState.m_GS, &m_D3D12PipelineState.m_PS, &m_D3D12PipelineState.m_CS, + }; + + for(int i = 0; i < 6; i++) + if(stages[i]->Shader != ResourceId()) + stages[i]->ShaderDetails = m_pDevice->GetShader(m_pDevice->GetLiveID(stages[i]->Shader), ""); + } + { GLPipelineState::ShaderStage *stages[] = { &m_GLPipelineState.m_VS, &m_GLPipelineState.m_TCS, &m_GLPipelineState.m_TES, @@ -1702,6 +1725,11 @@ ReplayRenderer_GetD3D11PipelineState(ReplayRenderer *rend, D3D11PipelineState *s { return rend->GetD3D11PipelineState(state); } +extern "C" RENDERDOC_API bool32 RENDERDOC_CC +ReplayRenderer_GetD3D12PipelineState(ReplayRenderer *rend, D3D12PipelineState *state) +{ + return rend->GetD3D12PipelineState(state); +} extern "C" RENDERDOC_API bool32 RENDERDOC_CC ReplayRenderer_GetGLPipelineState(ReplayRenderer *rend, GLPipelineState *state) { diff --git a/renderdoc/replay/replay_renderer.h b/renderdoc/replay/replay_renderer.h index c9439c9a1..66c4264f4 100644 --- a/renderdoc/replay/replay_renderer.h +++ b/renderdoc/replay/replay_renderer.h @@ -136,6 +136,7 @@ public: void FetchPipelineState(); bool GetD3D11PipelineState(D3D11PipelineState *state); + bool GetD3D12PipelineState(D3D12PipelineState *state); bool GetGLPipelineState(GLPipelineState *state); bool GetVulkanPipelineState(VulkanPipelineState *state); @@ -213,6 +214,7 @@ private: uint32_t m_EventID; D3D11PipelineState m_D3D11PipelineState; + D3D12PipelineState m_D3D12PipelineState; GLPipelineState m_GLPipelineState; VulkanPipelineState m_VulkanPipelineState; diff --git a/renderdocui/Code/CommonPipelineState.cs b/renderdocui/Code/CommonPipelineState.cs index 3328663da..c249943ab 100644 --- a/renderdocui/Code/CommonPipelineState.cs +++ b/renderdocui/Code/CommonPipelineState.cs @@ -71,6 +71,7 @@ namespace renderdocui.Code public class CommonPipelineState { private D3D11PipelineState m_D3D11 = null; + private D3D12PipelineState m_D3D12 = null; private GLPipelineState m_GL = null; private VulkanPipelineState m_Vulkan = null; private APIProperties m_APIProps = null; @@ -79,10 +80,11 @@ namespace renderdocui.Code { } - public void SetStates(APIProperties props, D3D11PipelineState d3d11, GLPipelineState gl, VulkanPipelineState vk) + public void SetStates(APIProperties props, D3D11PipelineState d3d11, D3D12PipelineState d3d12, GLPipelineState gl, VulkanPipelineState vk) { m_APIProps = props; m_D3D11 = d3d11; + m_D3D12 = d3d12; m_GL = gl; m_Vulkan = vk; } @@ -93,7 +95,7 @@ namespace renderdocui.Code { get { - return m_D3D11 != null || m_GL != null || m_Vulkan != null; + return m_D3D11 != null || m_D3D12 != null || m_GL != null || m_Vulkan != null; } } @@ -105,6 +107,14 @@ namespace renderdocui.Code } } + private bool IsLogD3D12 + { + get + { + return LogLoaded && m_APIProps.pipelineType == GraphicsAPI.D3D12 && m_D3D12 != null; + } + } + private bool IsLogGL { get diff --git a/renderdocui/Code/Core.cs b/renderdocui/Code/Core.cs index a0b296d73..be879a4f1 100644 --- a/renderdocui/Code/Core.cs +++ b/renderdocui/Code/Core.cs @@ -74,6 +74,7 @@ namespace renderdocui.Code private FetchTexture[] m_Textures = null; private D3D11PipelineState m_D3D11PipelineState = null; + private D3D12PipelineState m_D3D12PipelineState = null; private GLPipelineState m_GLPipelineState = null; private VulkanPipelineState m_VulkanPipelineState = null; private CommonPipelineState m_PipelineState = new CommonPipelineState(); @@ -174,6 +175,7 @@ namespace renderdocui.Code // direct access (note that only one of these will be valid for a log, check APIProps.pipelineType) public D3D11PipelineState CurD3D11PipelineState { get { return m_D3D11PipelineState; } } + public D3D12PipelineState CurD3D12PipelineState { get { return m_D3D12PipelineState; } } public GLPipelineState CurGLPipelineState { get { return m_GLPipelineState; } } public VulkanPipelineState CurVulkanPipelineState { get { return m_VulkanPipelineState; } } public CommonPipelineState CurPipelineState { get { return m_PipelineState; } } @@ -565,9 +567,10 @@ namespace renderdocui.Code postloadProgress = 0.9f; m_D3D11PipelineState = r.GetD3D11PipelineState(); + m_D3D12PipelineState = r.GetD3D12PipelineState(); m_GLPipelineState = r.GetGLPipelineState(); m_VulkanPipelineState = r.GetVulkanPipelineState(); - m_PipelineState.SetStates(m_APIProperties, m_D3D11PipelineState, m_GLPipelineState, m_VulkanPipelineState); + m_PipelineState.SetStates(m_APIProperties, m_D3D11PipelineState, m_D3D12PipelineState, m_GLPipelineState, m_VulkanPipelineState); UnreadMessageCount = 0; AddMessages(m_FrameInfo.debugMessages); @@ -669,7 +672,7 @@ namespace renderdocui.Code m_D3D11PipelineState = null; m_GLPipelineState = null; m_VulkanPipelineState = null; - m_PipelineState.SetStates(null, null, null, null); + m_PipelineState.SetStates(null, null,null, null, null); DebugMessages.Clear(); UnreadMessageCount = 0; @@ -902,9 +905,10 @@ namespace renderdocui.Code { r.SetFrameEvent(m_EventID, force); m_D3D11PipelineState = r.GetD3D11PipelineState(); + m_D3D12PipelineState = r.GetD3D12PipelineState(); m_GLPipelineState = r.GetGLPipelineState(); m_VulkanPipelineState = r.GetVulkanPipelineState(); - m_PipelineState.SetStates(m_APIProperties, m_D3D11PipelineState, m_GLPipelineState, m_VulkanPipelineState); + m_PipelineState.SetStates(m_APIProperties, m_D3D11PipelineState, m_D3D12PipelineState, m_GLPipelineState, m_VulkanPipelineState); }); foreach (var logviewer in m_LogViewers) diff --git a/renderdocui/Interop/D3D11PipelineState.cs b/renderdocui/Interop/D3D11PipelineState.cs index a8964af10..01947e1e8 100644 --- a/renderdocui/Interop/D3D11PipelineState.cs +++ b/renderdocui/Interop/D3D11PipelineState.cs @@ -137,7 +137,7 @@ namespace renderdoc public UInt32 NumElements; // BufferEx - public D3D11BufferViewFlags Flags; + public D3DBufferViewFlags Flags; // Texture public UInt32 HighestMip; diff --git a/renderdocui/Interop/D3D12PipelineState.cs b/renderdocui/Interop/D3D12PipelineState.cs new file mode 100644 index 000000000..0aa4cc7df --- /dev/null +++ b/renderdocui/Interop/D3D12PipelineState.cs @@ -0,0 +1,358 @@ +/****************************************************************************** + * The MIT License (MIT) + * + * Copyright (c) 2015-2016 Baldur Karlsson + * Copyright (c) 2014 Crytek + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + ******************************************************************************/ + +using System; +using System.Runtime.InteropServices; + +namespace renderdoc +{ + [StructLayout(LayoutKind.Sequential)] + public class D3D12PipelineState + { + [StructLayout(LayoutKind.Sequential)] + public class InputAssembler + { + private void PostMarshal() + { + if (_ptr_Bytecode != IntPtr.Zero) + Bytecode = (ShaderReflection)CustomMarshal.PtrToStructure(_ptr_Bytecode, typeof(ShaderReflection), false); + else + Bytecode = null; + + _ptr_Bytecode = IntPtr.Zero; + } + + [StructLayout(LayoutKind.Sequential)] + public class LayoutInput + { + [CustomMarshalAs(CustomUnmanagedType.UTF8TemplatedString)] + public string SemanticName; + public UInt32 SemanticIndex; + [CustomMarshalAs(CustomUnmanagedType.CustomClass)] + public ResourceFormat Format; + public UInt32 InputSlot; + public UInt32 ByteOffset; + public bool PerInstance; + public UInt32 InstanceDataStepRate; + }; + [CustomMarshalAs(CustomUnmanagedType.TemplatedArray)] + public LayoutInput[] layouts; + public ResourceId layout; + private IntPtr _ptr_Bytecode; + [CustomMarshalAs(CustomUnmanagedType.Skip)] + public ShaderReflection Bytecode; + public bool customName; + [CustomMarshalAs(CustomUnmanagedType.UTF8TemplatedString)] + public string LayoutName; + + [StructLayout(LayoutKind.Sequential)] + public class VertexBuffer + { + public ResourceId Buffer; + public UInt32 Stride; + public UInt32 Offset; + }; + [CustomMarshalAs(CustomUnmanagedType.TemplatedArray)] + public VertexBuffer[] vbuffers; + + [StructLayout(LayoutKind.Sequential)] + public class IndexBuffer + { + public ResourceId Buffer; + public UInt32 Offset; + }; + [CustomMarshalAs(CustomUnmanagedType.CustomClass)] + public IndexBuffer ibuffer; + }; + [CustomMarshalAs(CustomUnmanagedType.CustomClass)] + public InputAssembler m_IA; + + [StructLayout(LayoutKind.Sequential)] + public class ShaderStage + { + private void PostMarshal() + { + if (_ptr_ShaderDetails != IntPtr.Zero) + ShaderDetails = (ShaderReflection)CustomMarshal.PtrToStructure(_ptr_ShaderDetails, typeof(ShaderReflection), false); + else + ShaderDetails = null; + + _ptr_ShaderDetails = IntPtr.Zero; + } + + public ResourceId Shader; + [CustomMarshalAs(CustomUnmanagedType.UTF8TemplatedString)] + public string ShaderName; + public bool customName; + private IntPtr _ptr_ShaderDetails; + [CustomMarshalAs(CustomUnmanagedType.Skip)] + public ShaderReflection ShaderDetails; + [CustomMarshalAs(CustomUnmanagedType.CustomClass)] + public ShaderBindpointMapping BindpointMapping; + + public ShaderStageType stage; + + [StructLayout(LayoutKind.Sequential)] + public class ResourceView + { + public ResourceId View; + public ResourceId Resource; + [CustomMarshalAs(CustomUnmanagedType.UTF8TemplatedString)] + public string Type; + [CustomMarshalAs(CustomUnmanagedType.CustomClass)] + public ResourceFormat Format; + + public bool Structured; + public UInt32 BufferStructCount; + public UInt32 ElementSize; + + // Buffer (SRV) + public UInt32 ElementOffset; + public UInt32 ElementWidth; + + // Buffer (UAV) + public UInt32 FirstElement; + public UInt32 NumElements; + + // BufferEx + public D3DBufferViewFlags Flags; + + // Texture + public UInt32 HighestMip; + public UInt32 NumMipLevels; + + // Texture Array + public UInt32 ArraySize; + public UInt32 FirstArraySlice; + }; + [CustomMarshalAs(CustomUnmanagedType.TemplatedArray)] + public ResourceView[] SRVs; + [CustomMarshalAs(CustomUnmanagedType.TemplatedArray)] + public ResourceView[] UAVs; + + [StructLayout(LayoutKind.Sequential)] + public class Sampler + { + public ResourceId Samp; + + [CustomMarshalAs(CustomUnmanagedType.UTF8TemplatedString)] + public string SamplerName; + public bool customSamplerName; + + [CustomMarshalAs(CustomUnmanagedType.UTF8TemplatedString)] + public string AddressU, AddressV, AddressW; + [CustomMarshalAs(CustomUnmanagedType.FixedArray, FixedLength = 4)] + public float[] BorderColor; + [CustomMarshalAs(CustomUnmanagedType.UTF8TemplatedString)] + public string Comparison; + [CustomMarshalAs(CustomUnmanagedType.UTF8TemplatedString)] + public string Filter; + public bool UseBorder; + public bool UseComparison; + public UInt32 MaxAniso; + public float MaxLOD; + public float MinLOD; + public float MipLODBias; + }; + [CustomMarshalAs(CustomUnmanagedType.TemplatedArray)] + public Sampler[] Samplers; + + [StructLayout(LayoutKind.Sequential)] + public class CBuffer + { + public ResourceId Buffer; + public UInt32 VecOffset; + public UInt32 VecCount; + }; + [CustomMarshalAs(CustomUnmanagedType.TemplatedArray)] + public CBuffer[] ConstantBuffers; + + [StructLayout(LayoutKind.Sequential)] + public class ClassInstance + { + [CustomMarshalAs(CustomUnmanagedType.UTF8TemplatedString)] + string name; + }; + + [CustomMarshalAs(CustomUnmanagedType.TemplatedArray)] + public ClassInstance[] ClassInstances; + }; + [CustomMarshalAs(CustomUnmanagedType.CustomClass)] + public ShaderStage m_VS, m_HS, m_DS, m_GS, m_PS, m_CS; + + [StructLayout(LayoutKind.Sequential)] + public class Streamout + { + [StructLayout(LayoutKind.Sequential)] + public class Output + { + public ResourceId Buffer; + public UInt32 Offset; + }; + [CustomMarshalAs(CustomUnmanagedType.TemplatedArray)] + public Output[] Outputs; + }; + [CustomMarshalAs(CustomUnmanagedType.CustomClass)] + public Streamout m_SO; + + [StructLayout(LayoutKind.Sequential)] + public class Rasterizer + { + [StructLayout(LayoutKind.Sequential)] + public class Viewport + { + [CustomMarshalAs(CustomUnmanagedType.FixedArray, FixedLength = 2)] + public float[] TopLeft; + public float Width, Height; + public float MinDepth, MaxDepth; + public bool Enabled; + }; + [CustomMarshalAs(CustomUnmanagedType.TemplatedArray)] + public Viewport[] Viewports; + + [StructLayout(LayoutKind.Sequential)] + public class Scissor + { + public Int32 left, top, right, bottom; + public bool Enabled; + }; + [CustomMarshalAs(CustomUnmanagedType.TemplatedArray)] + public Scissor[] Scissors; + + [StructLayout(LayoutKind.Sequential)] + public class RasterizerState + { + public ResourceId State; + public TriangleFillMode FillMode; + public TriangleCullMode CullMode; + public bool FrontCCW; + public Int32 DepthBias; + public float DepthBiasClamp; + public float SlopeScaledDepthBias; + public bool DepthClip; + public bool ScissorEnable; + public bool MultisampleEnable; + public bool AntialiasedLineEnable; + public UInt32 ForcedSampleCount; + public bool ConservativeRasterization; + }; + [CustomMarshalAs(CustomUnmanagedType.CustomClass)] + public RasterizerState m_State; + }; + [CustomMarshalAs(CustomUnmanagedType.CustomClass)] + public Rasterizer m_RS; + + [StructLayout(LayoutKind.Sequential)] + public class OutputMerger + { + [StructLayout(LayoutKind.Sequential)] + public class DepthStencilState + { + public ResourceId State; + public bool DepthEnable; + [CustomMarshalAs(CustomUnmanagedType.UTF8TemplatedString)] + public string DepthFunc; + public bool DepthWrites; + public bool StencilEnable; + public byte StencilReadMask; + public byte StencilWriteMask; + + [StructLayout(LayoutKind.Sequential)] + public class StencilOp + { + [CustomMarshalAs(CustomUnmanagedType.UTF8TemplatedString)] + public string FailOp; + [CustomMarshalAs(CustomUnmanagedType.UTF8TemplatedString)] + public string DepthFailOp; + [CustomMarshalAs(CustomUnmanagedType.UTF8TemplatedString)] + public string PassOp; + [CustomMarshalAs(CustomUnmanagedType.UTF8TemplatedString)] + public string Func; + }; + [CustomMarshalAs(CustomUnmanagedType.CustomClass)] + public StencilOp m_FrontFace, m_BackFace; + + public UInt32 StencilRef; + }; + [CustomMarshalAs(CustomUnmanagedType.CustomClass)] + public DepthStencilState m_State; + + [StructLayout(LayoutKind.Sequential)] + public class BlendState + { + public ResourceId State; + + public bool AlphaToCoverage; + public bool IndependentBlend; + + [StructLayout(LayoutKind.Sequential)] + public class RTBlend + { + [StructLayout(LayoutKind.Sequential)] + public class BlendOp + { + [CustomMarshalAs(CustomUnmanagedType.UTF8TemplatedString)] + public string Source; + [CustomMarshalAs(CustomUnmanagedType.UTF8TemplatedString)] + public string Destination; + [CustomMarshalAs(CustomUnmanagedType.UTF8TemplatedString)] + public string Operation; + }; + [CustomMarshalAs(CustomUnmanagedType.CustomClass)] + public BlendOp m_Blend, m_AlphaBlend; + + [CustomMarshalAs(CustomUnmanagedType.UTF8TemplatedString)] + public string LogicOp; + + public bool Enabled; + public bool LogicEnabled; + public byte WriteMask; + }; + [CustomMarshalAs(CustomUnmanagedType.TemplatedArray)] + public RTBlend[] Blends; + + [CustomMarshalAs(CustomUnmanagedType.FixedArray, FixedLength = 4)] + public float[] BlendFactor; + public UInt32 SampleMask; + }; + [CustomMarshalAs(CustomUnmanagedType.CustomClass)] + public BlendState m_BlendState; + + [CustomMarshalAs(CustomUnmanagedType.TemplatedArray)] + public ShaderStage.ResourceView[] RenderTargets; + + public UInt32 UAVStartSlot; + [CustomMarshalAs(CustomUnmanagedType.TemplatedArray)] + public ShaderStage.ResourceView[] UAVs; + + [CustomMarshalAs(CustomUnmanagedType.CustomClass)] + public ShaderStage.ResourceView DepthTarget; + public bool DepthReadOnly; + public bool StencilReadOnly; + }; + [CustomMarshalAs(CustomUnmanagedType.CustomClass)] + public OutputMerger m_OM; + }; +} diff --git a/renderdocui/Interop/Enums.cs b/renderdocui/Interop/Enums.cs index 9f04b9d41..9ef52ee9c 100644 --- a/renderdocui/Interop/Enums.cs +++ b/renderdocui/Interop/Enums.cs @@ -227,6 +227,7 @@ namespace renderdoc public enum GraphicsAPI { D3D11, + D3D12, OpenGL, Vulkan, }; @@ -301,7 +302,7 @@ namespace renderdoc }; [Flags] - public enum D3D11BufferViewFlags + public enum D3DBufferViewFlags { Raw = 0x1, Append = 0x2, diff --git a/renderdocui/Interop/ReplayRenderer.cs b/renderdocui/Interop/ReplayRenderer.cs index 4be733caf..5855d748d 100644 --- a/renderdocui/Interop/ReplayRenderer.cs +++ b/renderdocui/Interop/ReplayRenderer.cs @@ -253,6 +253,8 @@ namespace renderdoc [DllImport("renderdoc.dll", CharSet = CharSet.Unicode, CallingConvention = CallingConvention.Cdecl)] private static extern bool ReplayRenderer_GetD3D11PipelineState(IntPtr real, IntPtr mem); [DllImport("renderdoc.dll", CharSet = CharSet.Unicode, CallingConvention = CallingConvention.Cdecl)] + private static extern bool ReplayRenderer_GetD3D12PipelineState(IntPtr real, IntPtr mem); + [DllImport("renderdoc.dll", CharSet = CharSet.Unicode, CallingConvention = CallingConvention.Cdecl)] private static extern bool ReplayRenderer_GetGLPipelineState(IntPtr real, IntPtr mem); [DllImport("renderdoc.dll", CharSet = CharSet.Unicode, CallingConvention = CallingConvention.Cdecl)] private static extern bool ReplayRenderer_GetVulkanPipelineState(IntPtr real, IntPtr mem); @@ -405,6 +407,22 @@ namespace renderdoc return ret; } + public D3D12PipelineState GetD3D12PipelineState() + { + IntPtr mem = CustomMarshal.Alloc(typeof(D3D12PipelineState)); + + bool success = ReplayRenderer_GetD3D12PipelineState(m_Real, mem); + + D3D12PipelineState ret = null; + + if (success) + ret = (D3D12PipelineState)CustomMarshal.PtrToStructure(mem, typeof(D3D12PipelineState), true); + + CustomMarshal.Free(mem); + + return ret; + } + public VulkanPipelineState GetVulkanPipelineState() { IntPtr mem = CustomMarshal.Alloc(typeof(VulkanPipelineState)); diff --git a/renderdocui/Interop/Shader.cs b/renderdocui/Interop/Shader.cs index 78e4050d9..0a9d4c87e 100644 --- a/renderdocui/Interop/Shader.cs +++ b/renderdocui/Interop/Shader.cs @@ -254,7 +254,7 @@ namespace renderdoc } } - public string D3D11SemanticString + public string D3DSemanticString { get { diff --git a/renderdocui/Windows/MainWindow.Designer.cs b/renderdocui/Windows/MainWindow.Designer.cs index 856e4b27e..e16cb07a1 100644 --- a/renderdocui/Windows/MainWindow.Designer.cs +++ b/renderdocui/Windows/MainWindow.Designer.cs @@ -84,7 +84,7 @@ this.pythonShellToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.eventViewerToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.textureToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); - this.D3D11PipelineStateToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.PipelineStateToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.aPIInspectorToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.meshOutputToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.debugMessagesToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); @@ -280,7 +280,7 @@ this.pythonShellToolStripMenuItem, this.eventViewerToolStripMenuItem, this.textureToolStripMenuItem, - this.D3D11PipelineStateToolStripMenuItem, + this.PipelineStateToolStripMenuItem, this.aPIInspectorToolStripMenuItem, this.meshOutputToolStripMenuItem, this.debugMessagesToolStripMenuItem, @@ -470,10 +470,10 @@ // // D3D11PipelineStateToolStripMenuItem // - this.D3D11PipelineStateToolStripMenuItem.Name = "D3D11PipelineStateToolStripMenuItem"; - this.D3D11PipelineStateToolStripMenuItem.Size = new System.Drawing.Size(192, 22); - this.D3D11PipelineStateToolStripMenuItem.Text = "&Pipeline State"; - this.D3D11PipelineStateToolStripMenuItem.Click += new System.EventHandler(this.PipelineStateToolStripMenuItem_Click); + this.PipelineStateToolStripMenuItem.Name = "D3D11PipelineStateToolStripMenuItem"; + this.PipelineStateToolStripMenuItem.Size = new System.Drawing.Size(192, 22); + this.PipelineStateToolStripMenuItem.Text = "&Pipeline State"; + this.PipelineStateToolStripMenuItem.Click += new System.EventHandler(this.PipelineStateToolStripMenuItem_Click); // // aPIInspectorToolStripMenuItem // @@ -868,7 +868,7 @@ private System.Windows.Forms.ToolStripMenuItem layoutSave6; private System.Windows.Forms.ToolStripMenuItem layoutLoadDefault; private System.Windows.Forms.ToolStripSeparator toolStripSeparator2; - private System.Windows.Forms.ToolStripMenuItem D3D11PipelineStateToolStripMenuItem; + private System.Windows.Forms.ToolStripMenuItem PipelineStateToolStripMenuItem; private System.Windows.Forms.OpenFileDialog openDialog; private System.Windows.Forms.ToolStripContainer toolStripContainer1; private System.Windows.Forms.StatusStrip statusStrip; diff --git a/renderdocui/Windows/PipelineState/D3D11PipelineStateViewer.cs b/renderdocui/Windows/PipelineState/D3D11PipelineStateViewer.cs index 1d2e904aa..f2eca6e03 100644 --- a/renderdocui/Windows/PipelineState/D3D11PipelineStateViewer.cs +++ b/renderdocui/Windows/PipelineState/D3D11PipelineStateViewer.cs @@ -418,7 +418,7 @@ namespace renderdocui.Windows.PipelineState name = bufs[t].name; typename = "Buffer"; - if (r.Flags.HasFlag(D3D11BufferViewFlags.Raw)) + if (r.Flags.HasFlag(D3DBufferViewFlags.Raw)) { typename = "ByteAddressBuffer"; } @@ -428,7 +428,7 @@ namespace renderdocui.Windows.PipelineState typename = "StructuredBuffer[" + (bufs[t].length / r.ElementSize) + "]"; } - if (r.Flags.HasFlag(D3D11BufferViewFlags.Append) || r.Flags.HasFlag(D3D11BufferViewFlags.Counter)) + if (r.Flags.HasFlag(D3DBufferViewFlags.Append) || r.Flags.HasFlag(D3DBufferViewFlags.Counter)) { typename += " (Count: " + r.BufferStructCount + ")"; } @@ -1144,7 +1144,7 @@ namespace renderdocui.Windows.PipelineState name = bufs[t].name; typename = "Buffer"; - if (r.Flags.HasFlag(D3D11BufferViewFlags.Raw)) + if (r.Flags.HasFlag(D3DBufferViewFlags.Raw)) { typename = "RWByteAddressBuffer"; } @@ -1154,7 +1154,7 @@ namespace renderdocui.Windows.PipelineState typename = "RWStructuredBuffer[" + (bufs[t].length / r.ElementSize) + "]"; } - if (r.Flags.HasFlag(D3D11BufferViewFlags.Append) || r.Flags.HasFlag(D3D11BufferViewFlags.Counter)) + if (r.Flags.HasFlag(D3DBufferViewFlags.Append) || r.Flags.HasFlag(D3DBufferViewFlags.Counter)) { typename += " (Count: " + r.BufferStructCount + ")"; } @@ -1518,7 +1518,7 @@ namespace renderdocui.Windows.PipelineState name = bufs[t].name; typename = "Buffer"; - if (r.Flags.HasFlag(D3D11BufferViewFlags.Raw)) + if (r.Flags.HasFlag(D3DBufferViewFlags.Raw)) { typename = "RWByteAddressBuffer"; } @@ -1528,7 +1528,7 @@ namespace renderdocui.Windows.PipelineState typename = "RWStructuredBuffer[" + (bufs[t].length / r.ElementSize) + "]"; } - if (r.Flags.HasFlag(D3D11BufferViewFlags.Append) || r.Flags.HasFlag(D3D11BufferViewFlags.Counter)) + if (r.Flags.HasFlag(D3DBufferViewFlags.Append) || r.Flags.HasFlag(D3DBufferViewFlags.Counter)) { typename += " (Count: " + r.BufferStructCount + ")"; } @@ -2053,7 +2053,7 @@ namespace renderdocui.Windows.PipelineState } } - if (view.Flags.HasFlag(D3D11BufferViewFlags.Raw)) + if (view.Flags.HasFlag(D3DBufferViewFlags.Raw)) format = "xint"; format += view.Format.compCount; @@ -2428,12 +2428,12 @@ namespace renderdocui.Windows.PipelineState hlsl += String.Format("struct {0}Input{1}{{{1}", shType, nl); foreach(var sig in shaderDetails.InputSig) - hlsl += String.Format("\t{0} {1} : {2};" + nl, sig.TypeString, sig.varName.Length > 0 ? sig.varName : ("param" + sig.regIndex), sig.D3D11SemanticString); + hlsl += String.Format("\t{0} {1} : {2};" + nl, sig.TypeString, sig.varName.Length > 0 ? sig.varName : ("param" + sig.regIndex), sig.D3DSemanticString); hlsl += "};" + nl2; hlsl += String.Format("struct {0}Output{1}{{{1}", shType, nl); foreach (var sig in shaderDetails.OutputSig) - hlsl += String.Format("\t{0} {1} : {2};" + nl, sig.TypeString, sig.varName.Length > 0 ? sig.varName : ("param" + sig.regIndex), sig.D3D11SemanticString); + hlsl += String.Format("\t{0} {1} : {2};" + nl, sig.TypeString, sig.varName.Length > 0 ? sig.varName : ("param" + sig.regIndex), sig.D3DSemanticString); hlsl += "};" + nl2; hlsl += String.Format("{0}Output {1}(in {0}Input IN){2}{{{2}\t{0}Output OUT = ({0}Output)0;{2}{2}\t// ...{2}{2}\treturn OUT;{2}}}{2}", shType, entryFunc, nl); @@ -3060,7 +3060,7 @@ namespace renderdocui.Windows.PipelineState name = bufs[t].name; typename = "Buffer"; - if (view.Flags.HasFlag(D3D11BufferViewFlags.Raw)) + if (view.Flags.HasFlag(D3DBufferViewFlags.Raw)) { typename = rw ? "RWByteAddressBuffer" : "ByteAddressBuffer"; } @@ -3070,7 +3070,7 @@ namespace renderdocui.Windows.PipelineState typename = (rw ? "RWStructuredBuffer" : "StructuredBuffer") + "[" + (bufs[t].length / view.ElementSize) + "]"; } - if (view.Flags.HasFlag(D3D11BufferViewFlags.Append) || view.Flags.HasFlag(D3D11BufferViewFlags.Counter)) + if (view.Flags.HasFlag(D3DBufferViewFlags.Append) || view.Flags.HasFlag(D3DBufferViewFlags.Counter)) { typename += " (Count: " + view.BufferStructCount + ")"; } diff --git a/renderdocui/Windows/PipelineState/D3D12PipelineStateViewer.Designer.cs b/renderdocui/Windows/PipelineState/D3D12PipelineStateViewer.Designer.cs new file mode 100644 index 000000000..b714c6fea --- /dev/null +++ b/renderdocui/Windows/PipelineState/D3D12PipelineStateViewer.Designer.cs @@ -0,0 +1,5148 @@ +namespace renderdocui.Windows.PipelineState +{ + partial class D3D12PipelineStateViewer + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + this.components = new System.ComponentModel.Container(); + System.Windows.Forms.ToolStripLabel toolStripLabel1; + System.Windows.Forms.TableLayoutPanel toolstripTable; + TreelistView.TreeListColumn treeListColumn199 = ((TreelistView.TreeListColumn)(new TreelistView.TreeListColumn("Slot", "Slot"))); + TreelistView.TreeListColumn treeListColumn200 = ((TreelistView.TreeListColumn)(new TreelistView.TreeListColumn("Buffer", "Buffer"))); + TreelistView.TreeListColumn treeListColumn201 = ((TreelistView.TreeListColumn)(new TreelistView.TreeListColumn("Stride", "Stride"))); + TreelistView.TreeListColumn treeListColumn202 = ((TreelistView.TreeListColumn)(new TreelistView.TreeListColumn("Offset", "Offset"))); + TreelistView.TreeListColumn treeListColumn203 = ((TreelistView.TreeListColumn)(new TreelistView.TreeListColumn("bytelen", "Byte Len"))); + TreelistView.TreeListColumn treeListColumn204 = ((TreelistView.TreeListColumn)(new TreelistView.TreeListColumn("Go", "Go"))); + System.Windows.Forms.GroupBox groupBox2; + TreelistView.TreeListColumn treeListColumn205 = ((TreelistView.TreeListColumn)(new TreelistView.TreeListColumn("Slot", "Slot"))); + TreelistView.TreeListColumn treeListColumn206 = ((TreelistView.TreeListColumn)(new TreelistView.TreeListColumn("Semantic Name", "Semantic"))); + TreelistView.TreeListColumn treeListColumn207 = ((TreelistView.TreeListColumn)(new TreelistView.TreeListColumn("Index", "Index"))); + TreelistView.TreeListColumn treeListColumn208 = ((TreelistView.TreeListColumn)(new TreelistView.TreeListColumn("Format", "Format"))); + TreelistView.TreeListColumn treeListColumn209 = ((TreelistView.TreeListColumn)(new TreelistView.TreeListColumn("Input Slot", "Input Slot"))); + TreelistView.TreeListColumn treeListColumn210 = ((TreelistView.TreeListColumn)(new TreelistView.TreeListColumn("Offset", "Offset"))); + TreelistView.TreeListColumn treeListColumn211 = ((TreelistView.TreeListColumn)(new TreelistView.TreeListColumn("Class", "Class"))); + TreelistView.TreeListColumn treeListColumn212 = ((TreelistView.TreeListColumn)(new TreelistView.TreeListColumn("Step Rate", "Step Rate"))); + TreelistView.TreeListColumn treeListColumn213 = ((TreelistView.TreeListColumn)(new TreelistView.TreeListColumn("Go", "Go"))); + System.Windows.Forms.GroupBox groupBox39; + System.Windows.Forms.FlowLayoutPanel flowLayoutPanel9; + System.Windows.Forms.GroupBox groupBox44; + System.Windows.Forms.Label label28; + System.Windows.Forms.Label label26; + System.Windows.Forms.Label label27; + TreelistView.TreeListColumn treeListColumn214 = ((TreelistView.TreeListColumn)(new TreelistView.TreeListColumn("Slot", "Slot"))); + TreelistView.TreeListColumn treeListColumn215 = ((TreelistView.TreeListColumn)(new TreelistView.TreeListColumn("Interface", "Interface"))); + TreelistView.TreeListColumn treeListColumn216 = ((TreelistView.TreeListColumn)(new TreelistView.TreeListColumn("Instance", "Instance"))); + TreelistView.TreeListColumn treeListColumn217 = ((TreelistView.TreeListColumn)(new TreelistView.TreeListColumn("Slot", "Slot"))); + TreelistView.TreeListColumn treeListColumn218 = ((TreelistView.TreeListColumn)(new TreelistView.TreeListColumn("Resource", "Resource"))); + TreelistView.TreeListColumn treeListColumn219 = ((TreelistView.TreeListColumn)(new TreelistView.TreeListColumn("Type", "Type"))); + TreelistView.TreeListColumn treeListColumn220 = ((TreelistView.TreeListColumn)(new TreelistView.TreeListColumn("Width", "Width"))); + TreelistView.TreeListColumn treeListColumn221 = ((TreelistView.TreeListColumn)(new TreelistView.TreeListColumn("Height", "Height"))); + TreelistView.TreeListColumn treeListColumn222 = ((TreelistView.TreeListColumn)(new TreelistView.TreeListColumn("Depth", "Depth"))); + TreelistView.TreeListColumn treeListColumn223 = ((TreelistView.TreeListColumn)(new TreelistView.TreeListColumn("Array Size", "Array Size"))); + TreelistView.TreeListColumn treeListColumn224 = ((TreelistView.TreeListColumn)(new TreelistView.TreeListColumn("Format", "Format"))); + TreelistView.TreeListColumn treeListColumn225 = ((TreelistView.TreeListColumn)(new TreelistView.TreeListColumn("Go", "Go"))); + TreelistView.TreeListColumn treeListColumn226 = ((TreelistView.TreeListColumn)(new TreelistView.TreeListColumn("Slot", "Slot"))); + TreelistView.TreeListColumn treeListColumn227 = ((TreelistView.TreeListColumn)(new TreelistView.TreeListColumn("Addressing", "Addressing"))); + TreelistView.TreeListColumn treeListColumn228 = ((TreelistView.TreeListColumn)(new TreelistView.TreeListColumn("Filter", "Filter"))); + TreelistView.TreeListColumn treeListColumn229 = ((TreelistView.TreeListColumn)(new TreelistView.TreeListColumn("LOD Clamp", "LOD Clamp"))); + TreelistView.TreeListColumn treeListColumn230 = ((TreelistView.TreeListColumn)(new TreelistView.TreeListColumn("Mip Bias", "Mip Bias"))); + TreelistView.TreeListColumn treeListColumn231 = ((TreelistView.TreeListColumn)(new TreelistView.TreeListColumn("Slot", "Slot"))); + TreelistView.TreeListColumn treeListColumn232 = ((TreelistView.TreeListColumn)(new TreelistView.TreeListColumn("Buffer", "Buffer"))); + TreelistView.TreeListColumn treeListColumn233 = ((TreelistView.TreeListColumn)(new TreelistView.TreeListColumn("Vec4 Range", "Vec4 Range"))); + TreelistView.TreeListColumn treeListColumn234 = ((TreelistView.TreeListColumn)(new TreelistView.TreeListColumn("Size", "Size"))); + TreelistView.TreeListColumn treeListColumn235 = ((TreelistView.TreeListColumn)(new TreelistView.TreeListColumn("Go", "Go"))); + System.Windows.Forms.Label label29; + System.Windows.Forms.Label label30; + System.Windows.Forms.Label label31; + TreelistView.TreeListColumn treeListColumn236 = ((TreelistView.TreeListColumn)(new TreelistView.TreeListColumn("Slot", "Slot"))); + TreelistView.TreeListColumn treeListColumn237 = ((TreelistView.TreeListColumn)(new TreelistView.TreeListColumn("Interface", "Interface"))); + TreelistView.TreeListColumn treeListColumn238 = ((TreelistView.TreeListColumn)(new TreelistView.TreeListColumn("Instance", "Instance"))); + TreelistView.TreeListColumn treeListColumn239 = ((TreelistView.TreeListColumn)(new TreelistView.TreeListColumn("Slot", "Slot"))); + TreelistView.TreeListColumn treeListColumn240 = ((TreelistView.TreeListColumn)(new TreelistView.TreeListColumn("Resource", "Resource"))); + TreelistView.TreeListColumn treeListColumn241 = ((TreelistView.TreeListColumn)(new TreelistView.TreeListColumn("Type", "Type"))); + TreelistView.TreeListColumn treeListColumn242 = ((TreelistView.TreeListColumn)(new TreelistView.TreeListColumn("Width", "Width"))); + TreelistView.TreeListColumn treeListColumn243 = ((TreelistView.TreeListColumn)(new TreelistView.TreeListColumn("Height", "Height"))); + TreelistView.TreeListColumn treeListColumn244 = ((TreelistView.TreeListColumn)(new TreelistView.TreeListColumn("Depth", "Depth"))); + TreelistView.TreeListColumn treeListColumn245 = ((TreelistView.TreeListColumn)(new TreelistView.TreeListColumn("Array Size", "Array Size"))); + TreelistView.TreeListColumn treeListColumn246 = ((TreelistView.TreeListColumn)(new TreelistView.TreeListColumn("Format", "Format"))); + TreelistView.TreeListColumn treeListColumn247 = ((TreelistView.TreeListColumn)(new TreelistView.TreeListColumn("Go", "Go"))); + TreelistView.TreeListColumn treeListColumn248 = ((TreelistView.TreeListColumn)(new TreelistView.TreeListColumn("Slot", "Slot"))); + TreelistView.TreeListColumn treeListColumn249 = ((TreelistView.TreeListColumn)(new TreelistView.TreeListColumn("Addressing", "Addressing"))); + TreelistView.TreeListColumn treeListColumn250 = ((TreelistView.TreeListColumn)(new TreelistView.TreeListColumn("Filter", "Filter"))); + TreelistView.TreeListColumn treeListColumn251 = ((TreelistView.TreeListColumn)(new TreelistView.TreeListColumn("LOD Clamp", "LOD Clamp"))); + TreelistView.TreeListColumn treeListColumn252 = ((TreelistView.TreeListColumn)(new TreelistView.TreeListColumn("Mip Bias", "Mip Bias"))); + TreelistView.TreeListColumn treeListColumn253 = ((TreelistView.TreeListColumn)(new TreelistView.TreeListColumn("Slot", "Slot"))); + TreelistView.TreeListColumn treeListColumn254 = ((TreelistView.TreeListColumn)(new TreelistView.TreeListColumn("Buffer", "Buffer"))); + TreelistView.TreeListColumn treeListColumn255 = ((TreelistView.TreeListColumn)(new TreelistView.TreeListColumn("Vec4 Range", "Vec4 Range"))); + TreelistView.TreeListColumn treeListColumn256 = ((TreelistView.TreeListColumn)(new TreelistView.TreeListColumn("Size", "Size"))); + TreelistView.TreeListColumn treeListColumn257 = ((TreelistView.TreeListColumn)(new TreelistView.TreeListColumn("Go", "Go"))); + System.Windows.Forms.Label label32; + System.Windows.Forms.Label label33; + System.Windows.Forms.Label label34; + TreelistView.TreeListColumn treeListColumn258 = ((TreelistView.TreeListColumn)(new TreelistView.TreeListColumn("Slot", "Slot"))); + TreelistView.TreeListColumn treeListColumn259 = ((TreelistView.TreeListColumn)(new TreelistView.TreeListColumn("Interface", "Interface"))); + TreelistView.TreeListColumn treeListColumn260 = ((TreelistView.TreeListColumn)(new TreelistView.TreeListColumn("Instance", "Instance"))); + TreelistView.TreeListColumn treeListColumn261 = ((TreelistView.TreeListColumn)(new TreelistView.TreeListColumn("Slot", "Slot"))); + TreelistView.TreeListColumn treeListColumn262 = ((TreelistView.TreeListColumn)(new TreelistView.TreeListColumn("Resource", "Resource"))); + TreelistView.TreeListColumn treeListColumn263 = ((TreelistView.TreeListColumn)(new TreelistView.TreeListColumn("Type", "Type"))); + TreelistView.TreeListColumn treeListColumn264 = ((TreelistView.TreeListColumn)(new TreelistView.TreeListColumn("Width", "Width"))); + TreelistView.TreeListColumn treeListColumn265 = ((TreelistView.TreeListColumn)(new TreelistView.TreeListColumn("Height", "Height"))); + TreelistView.TreeListColumn treeListColumn266 = ((TreelistView.TreeListColumn)(new TreelistView.TreeListColumn("Depth", "Depth"))); + TreelistView.TreeListColumn treeListColumn267 = ((TreelistView.TreeListColumn)(new TreelistView.TreeListColumn("Array Size", "Array Size"))); + TreelistView.TreeListColumn treeListColumn268 = ((TreelistView.TreeListColumn)(new TreelistView.TreeListColumn("Format", "Format"))); + TreelistView.TreeListColumn treeListColumn269 = ((TreelistView.TreeListColumn)(new TreelistView.TreeListColumn("Go", "Go"))); + TreelistView.TreeListColumn treeListColumn270 = ((TreelistView.TreeListColumn)(new TreelistView.TreeListColumn("Slot", "Slot"))); + TreelistView.TreeListColumn treeListColumn271 = ((TreelistView.TreeListColumn)(new TreelistView.TreeListColumn("Addressing", "Addressing"))); + TreelistView.TreeListColumn treeListColumn272 = ((TreelistView.TreeListColumn)(new TreelistView.TreeListColumn("Filter", "Filter"))); + TreelistView.TreeListColumn treeListColumn273 = ((TreelistView.TreeListColumn)(new TreelistView.TreeListColumn("LOD Clamp", "LOD Clamp"))); + TreelistView.TreeListColumn treeListColumn274 = ((TreelistView.TreeListColumn)(new TreelistView.TreeListColumn("Mip Bias", "Mip Bias"))); + TreelistView.TreeListColumn treeListColumn275 = ((TreelistView.TreeListColumn)(new TreelistView.TreeListColumn("Slot", "Slot"))); + TreelistView.TreeListColumn treeListColumn276 = ((TreelistView.TreeListColumn)(new TreelistView.TreeListColumn("Buffer", "Buffer"))); + TreelistView.TreeListColumn treeListColumn277 = ((TreelistView.TreeListColumn)(new TreelistView.TreeListColumn("Vec4 Range", "Vec4 Range"))); + TreelistView.TreeListColumn treeListColumn278 = ((TreelistView.TreeListColumn)(new TreelistView.TreeListColumn("Size", "Size"))); + TreelistView.TreeListColumn treeListColumn279 = ((TreelistView.TreeListColumn)(new TreelistView.TreeListColumn("Go", "Go"))); + System.Windows.Forms.GroupBox groupBox45; + TreelistView.TreeListColumn treeListColumn280 = ((TreelistView.TreeListColumn)(new TreelistView.TreeListColumn("Slot", "Slot"))); + TreelistView.TreeListColumn treeListColumn281 = ((TreelistView.TreeListColumn)(new TreelistView.TreeListColumn("Buffer", "Buffer"))); + TreelistView.TreeListColumn treeListColumn282 = ((TreelistView.TreeListColumn)(new TreelistView.TreeListColumn("Length", "Length"))); + TreelistView.TreeListColumn treeListColumn283 = ((TreelistView.TreeListColumn)(new TreelistView.TreeListColumn("Offset", "Offset"))); + TreelistView.TreeListColumn treeListColumn284 = ((TreelistView.TreeListColumn)(new TreelistView.TreeListColumn("Go", "Go"))); + System.Windows.Forms.Label label35; + System.Windows.Forms.Label label36; + System.Windows.Forms.Label label37; + TreelistView.TreeListColumn treeListColumn285 = ((TreelistView.TreeListColumn)(new TreelistView.TreeListColumn("Slot", "Slot"))); + TreelistView.TreeListColumn treeListColumn286 = ((TreelistView.TreeListColumn)(new TreelistView.TreeListColumn("Interface", "Interface"))); + TreelistView.TreeListColumn treeListColumn287 = ((TreelistView.TreeListColumn)(new TreelistView.TreeListColumn("Instance", "Instance"))); + TreelistView.TreeListColumn treeListColumn288 = ((TreelistView.TreeListColumn)(new TreelistView.TreeListColumn("Slot", "Slot"))); + TreelistView.TreeListColumn treeListColumn289 = ((TreelistView.TreeListColumn)(new TreelistView.TreeListColumn("Resource", "Resource"))); + TreelistView.TreeListColumn treeListColumn290 = ((TreelistView.TreeListColumn)(new TreelistView.TreeListColumn("Type", "Type"))); + TreelistView.TreeListColumn treeListColumn291 = ((TreelistView.TreeListColumn)(new TreelistView.TreeListColumn("Width", "Width"))); + TreelistView.TreeListColumn treeListColumn292 = ((TreelistView.TreeListColumn)(new TreelistView.TreeListColumn("Height", "Height"))); + TreelistView.TreeListColumn treeListColumn293 = ((TreelistView.TreeListColumn)(new TreelistView.TreeListColumn("Depth", "Depth"))); + TreelistView.TreeListColumn treeListColumn294 = ((TreelistView.TreeListColumn)(new TreelistView.TreeListColumn("Array Size", "Array Size"))); + TreelistView.TreeListColumn treeListColumn295 = ((TreelistView.TreeListColumn)(new TreelistView.TreeListColumn("Format", "Format"))); + TreelistView.TreeListColumn treeListColumn296 = ((TreelistView.TreeListColumn)(new TreelistView.TreeListColumn("Go", "Go"))); + TreelistView.TreeListColumn treeListColumn297 = ((TreelistView.TreeListColumn)(new TreelistView.TreeListColumn("Slot", "Slot"))); + TreelistView.TreeListColumn treeListColumn298 = ((TreelistView.TreeListColumn)(new TreelistView.TreeListColumn("Addressing", "Addressing"))); + TreelistView.TreeListColumn treeListColumn299 = ((TreelistView.TreeListColumn)(new TreelistView.TreeListColumn("Filter", "Filter"))); + TreelistView.TreeListColumn treeListColumn300 = ((TreelistView.TreeListColumn)(new TreelistView.TreeListColumn("LOD Clamp", "LOD Clamp"))); + TreelistView.TreeListColumn treeListColumn301 = ((TreelistView.TreeListColumn)(new TreelistView.TreeListColumn("Mip Bias", "Mip Bias"))); + TreelistView.TreeListColumn treeListColumn302 = ((TreelistView.TreeListColumn)(new TreelistView.TreeListColumn("Slot", "Slot"))); + TreelistView.TreeListColumn treeListColumn303 = ((TreelistView.TreeListColumn)(new TreelistView.TreeListColumn("Buffer", "Buffer"))); + TreelistView.TreeListColumn treeListColumn304 = ((TreelistView.TreeListColumn)(new TreelistView.TreeListColumn("Vec4 Range", "Vec4 Range"))); + TreelistView.TreeListColumn treeListColumn305 = ((TreelistView.TreeListColumn)(new TreelistView.TreeListColumn("Size", "Size"))); + TreelistView.TreeListColumn treeListColumn306 = ((TreelistView.TreeListColumn)(new TreelistView.TreeListColumn("Go", "Go"))); + System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(D3D12PipelineStateViewer)); + System.Windows.Forms.Label label1; + System.Windows.Forms.Label label15; + System.Windows.Forms.Label label16; + System.Windows.Forms.Label label17; + System.Windows.Forms.Label label25; + TreelistView.TreeListColumn treeListColumn307 = ((TreelistView.TreeListColumn)(new TreelistView.TreeListColumn("Slot", "Slot"))); + TreelistView.TreeListColumn treeListColumn308 = ((TreelistView.TreeListColumn)(new TreelistView.TreeListColumn("X", "X"))); + TreelistView.TreeListColumn treeListColumn309 = ((TreelistView.TreeListColumn)(new TreelistView.TreeListColumn("Y", "Y"))); + TreelistView.TreeListColumn treeListColumn310 = ((TreelistView.TreeListColumn)(new TreelistView.TreeListColumn("Width", "Width"))); + TreelistView.TreeListColumn treeListColumn311 = ((TreelistView.TreeListColumn)(new TreelistView.TreeListColumn("Height", "Height"))); + TreelistView.TreeListColumn treeListColumn312 = ((TreelistView.TreeListColumn)(new TreelistView.TreeListColumn("MinDepth", "MinDepth"))); + TreelistView.TreeListColumn treeListColumn313 = ((TreelistView.TreeListColumn)(new TreelistView.TreeListColumn("MaxDepth", "MaxDepth"))); + System.Windows.Forms.GroupBox groupBox42; + TreelistView.TreeListColumn treeListColumn314 = ((TreelistView.TreeListColumn)(new TreelistView.TreeListColumn("Slot", "Slot"))); + TreelistView.TreeListColumn treeListColumn315 = ((TreelistView.TreeListColumn)(new TreelistView.TreeListColumn("X", "X"))); + TreelistView.TreeListColumn treeListColumn316 = ((TreelistView.TreeListColumn)(new TreelistView.TreeListColumn("Y", "Y"))); + TreelistView.TreeListColumn treeListColumn317 = ((TreelistView.TreeListColumn)(new TreelistView.TreeListColumn("Width", "Width"))); + TreelistView.TreeListColumn treeListColumn318 = ((TreelistView.TreeListColumn)(new TreelistView.TreeListColumn("Height", "Height"))); + System.Windows.Forms.Label label38; + System.Windows.Forms.Label label39; + System.Windows.Forms.Label label40; + TreelistView.TreeListColumn treeListColumn319 = ((TreelistView.TreeListColumn)(new TreelistView.TreeListColumn("Slot", "Slot"))); + TreelistView.TreeListColumn treeListColumn320 = ((TreelistView.TreeListColumn)(new TreelistView.TreeListColumn("Interface", "Interface"))); + TreelistView.TreeListColumn treeListColumn321 = ((TreelistView.TreeListColumn)(new TreelistView.TreeListColumn("Instance", "Instance"))); + TreelistView.TreeListColumn treeListColumn322 = ((TreelistView.TreeListColumn)(new TreelistView.TreeListColumn("Slot", "Slot"))); + TreelistView.TreeListColumn treeListColumn323 = ((TreelistView.TreeListColumn)(new TreelistView.TreeListColumn("Resource", "Resource"))); + TreelistView.TreeListColumn treeListColumn324 = ((TreelistView.TreeListColumn)(new TreelistView.TreeListColumn("Type", "Type"))); + TreelistView.TreeListColumn treeListColumn325 = ((TreelistView.TreeListColumn)(new TreelistView.TreeListColumn("Width", "Width"))); + TreelistView.TreeListColumn treeListColumn326 = ((TreelistView.TreeListColumn)(new TreelistView.TreeListColumn("Height", "Height"))); + TreelistView.TreeListColumn treeListColumn327 = ((TreelistView.TreeListColumn)(new TreelistView.TreeListColumn("Depth", "Depth"))); + TreelistView.TreeListColumn treeListColumn328 = ((TreelistView.TreeListColumn)(new TreelistView.TreeListColumn("Array Size", "Array Size"))); + TreelistView.TreeListColumn treeListColumn329 = ((TreelistView.TreeListColumn)(new TreelistView.TreeListColumn("Format", "Format"))); + TreelistView.TreeListColumn treeListColumn330 = ((TreelistView.TreeListColumn)(new TreelistView.TreeListColumn("Go", "Go"))); + TreelistView.TreeListColumn treeListColumn331 = ((TreelistView.TreeListColumn)(new TreelistView.TreeListColumn("Slot", "Slot"))); + TreelistView.TreeListColumn treeListColumn332 = ((TreelistView.TreeListColumn)(new TreelistView.TreeListColumn("Addressing", "Addressing"))); + TreelistView.TreeListColumn treeListColumn333 = ((TreelistView.TreeListColumn)(new TreelistView.TreeListColumn("Filter", "Filter"))); + TreelistView.TreeListColumn treeListColumn334 = ((TreelistView.TreeListColumn)(new TreelistView.TreeListColumn("LOD Clamp", "LOD Clamp"))); + TreelistView.TreeListColumn treeListColumn335 = ((TreelistView.TreeListColumn)(new TreelistView.TreeListColumn("Mip Bias", "Mip Bias"))); + TreelistView.TreeListColumn treeListColumn336 = ((TreelistView.TreeListColumn)(new TreelistView.TreeListColumn("Slot", "Slot"))); + TreelistView.TreeListColumn treeListColumn337 = ((TreelistView.TreeListColumn)(new TreelistView.TreeListColumn("Buffer", "Buffer"))); + TreelistView.TreeListColumn treeListColumn338 = ((TreelistView.TreeListColumn)(new TreelistView.TreeListColumn("Vec4 Range", "Vec4 Range"))); + TreelistView.TreeListColumn treeListColumn339 = ((TreelistView.TreeListColumn)(new TreelistView.TreeListColumn("Size", "Size"))); + TreelistView.TreeListColumn treeListColumn340 = ((TreelistView.TreeListColumn)(new TreelistView.TreeListColumn("Go", "Go"))); + TreelistView.TreeListColumn treeListColumn341 = ((TreelistView.TreeListColumn)(new TreelistView.TreeListColumn("Slot", "Slot"))); + TreelistView.TreeListColumn treeListColumn342 = ((TreelistView.TreeListColumn)(new TreelistView.TreeListColumn("Resource", "Resource"))); + TreelistView.TreeListColumn treeListColumn343 = ((TreelistView.TreeListColumn)(new TreelistView.TreeListColumn("Type", "Type"))); + TreelistView.TreeListColumn treeListColumn344 = ((TreelistView.TreeListColumn)(new TreelistView.TreeListColumn("Width", "Width"))); + TreelistView.TreeListColumn treeListColumn345 = ((TreelistView.TreeListColumn)(new TreelistView.TreeListColumn("Height", "Height"))); + TreelistView.TreeListColumn treeListColumn346 = ((TreelistView.TreeListColumn)(new TreelistView.TreeListColumn("Depth", "Depth"))); + TreelistView.TreeListColumn treeListColumn347 = ((TreelistView.TreeListColumn)(new TreelistView.TreeListColumn("Array Size", "Array Size"))); + TreelistView.TreeListColumn treeListColumn348 = ((TreelistView.TreeListColumn)(new TreelistView.TreeListColumn("Format", "Format"))); + TreelistView.TreeListColumn treeListColumn349 = ((TreelistView.TreeListColumn)(new TreelistView.TreeListColumn("Go", "Go"))); + TreelistView.TreeListColumn treeListColumn350 = ((TreelistView.TreeListColumn)(new TreelistView.TreeListColumn("Slot", "Slot"))); + TreelistView.TreeListColumn treeListColumn351 = ((TreelistView.TreeListColumn)(new TreelistView.TreeListColumn("Enabled", "Enabled"))); + TreelistView.TreeListColumn treeListColumn352 = ((TreelistView.TreeListColumn)(new TreelistView.TreeListColumn("Logic", "Logic"))); + TreelistView.TreeListColumn treeListColumn353 = ((TreelistView.TreeListColumn)(new TreelistView.TreeListColumn("Colour Src", "Colour Src"))); + TreelistView.TreeListColumn treeListColumn354 = ((TreelistView.TreeListColumn)(new TreelistView.TreeListColumn("Colour Dst", "Colour Dst"))); + TreelistView.TreeListColumn treeListColumn355 = ((TreelistView.TreeListColumn)(new TreelistView.TreeListColumn("Colour Op", "Colour Op"))); + TreelistView.TreeListColumn treeListColumn356 = ((TreelistView.TreeListColumn)(new TreelistView.TreeListColumn("Alpha Src", "Alpha Src"))); + TreelistView.TreeListColumn treeListColumn357 = ((TreelistView.TreeListColumn)(new TreelistView.TreeListColumn("Alpha Dst", "Alpha Dst"))); + TreelistView.TreeListColumn treeListColumn358 = ((TreelistView.TreeListColumn)(new TreelistView.TreeListColumn("Alpha Op", "Alpha Op"))); + TreelistView.TreeListColumn treeListColumn359 = ((TreelistView.TreeListColumn)(new TreelistView.TreeListColumn("Logic Op", "Logic Op"))); + TreelistView.TreeListColumn treeListColumn360 = ((TreelistView.TreeListColumn)(new TreelistView.TreeListColumn("Write Mask", "Write Mask"))); + TreelistView.TreeListColumn treeListColumn361 = ((TreelistView.TreeListColumn)(new TreelistView.TreeListColumn("Face", "Face"))); + TreelistView.TreeListColumn treeListColumn362 = ((TreelistView.TreeListColumn)(new TreelistView.TreeListColumn("Func", "Func"))); + TreelistView.TreeListColumn treeListColumn363 = ((TreelistView.TreeListColumn)(new TreelistView.TreeListColumn("Fail Op", "Fail Op"))); + TreelistView.TreeListColumn treeListColumn364 = ((TreelistView.TreeListColumn)(new TreelistView.TreeListColumn("Depth Fail Op", "Depth Fail Op"))); + TreelistView.TreeListColumn treeListColumn365 = ((TreelistView.TreeListColumn)(new TreelistView.TreeListColumn("Pass Op", "Pass Op"))); + TreelistView.TreeListColumn treeListColumn366 = ((TreelistView.TreeListColumn)(new TreelistView.TreeListColumn("Slot", "Slot"))); + TreelistView.TreeListColumn treeListColumn367 = ((TreelistView.TreeListColumn)(new TreelistView.TreeListColumn("Resource", "Resource"))); + TreelistView.TreeListColumn treeListColumn368 = ((TreelistView.TreeListColumn)(new TreelistView.TreeListColumn("Type", "Type"))); + TreelistView.TreeListColumn treeListColumn369 = ((TreelistView.TreeListColumn)(new TreelistView.TreeListColumn("Width", "Width"))); + TreelistView.TreeListColumn treeListColumn370 = ((TreelistView.TreeListColumn)(new TreelistView.TreeListColumn("Height", "Height"))); + TreelistView.TreeListColumn treeListColumn371 = ((TreelistView.TreeListColumn)(new TreelistView.TreeListColumn("Depth", "Depth"))); + TreelistView.TreeListColumn treeListColumn372 = ((TreelistView.TreeListColumn)(new TreelistView.TreeListColumn("Array Size", "Array Size"))); + TreelistView.TreeListColumn treeListColumn373 = ((TreelistView.TreeListColumn)(new TreelistView.TreeListColumn("Format", "Format"))); + TreelistView.TreeListColumn treeListColumn374 = ((TreelistView.TreeListColumn)(new TreelistView.TreeListColumn("Go", "Go"))); + TreelistView.TreeListColumn treeListColumn375 = ((TreelistView.TreeListColumn)(new TreelistView.TreeListColumn("Slot", "Slot"))); + TreelistView.TreeListColumn treeListColumn376 = ((TreelistView.TreeListColumn)(new TreelistView.TreeListColumn("Interface", "Interface"))); + TreelistView.TreeListColumn treeListColumn377 = ((TreelistView.TreeListColumn)(new TreelistView.TreeListColumn("Instance", "Instance"))); + System.Windows.Forms.Label label41; + System.Windows.Forms.Label label42; + System.Windows.Forms.Label label43; + TreelistView.TreeListColumn treeListColumn378 = ((TreelistView.TreeListColumn)(new TreelistView.TreeListColumn("Slot", "Slot"))); + TreelistView.TreeListColumn treeListColumn379 = ((TreelistView.TreeListColumn)(new TreelistView.TreeListColumn("Resource", "Resource"))); + TreelistView.TreeListColumn treeListColumn380 = ((TreelistView.TreeListColumn)(new TreelistView.TreeListColumn("Type", "Type"))); + TreelistView.TreeListColumn treeListColumn381 = ((TreelistView.TreeListColumn)(new TreelistView.TreeListColumn("Width", "Width"))); + TreelistView.TreeListColumn treeListColumn382 = ((TreelistView.TreeListColumn)(new TreelistView.TreeListColumn("Height", "Height"))); + TreelistView.TreeListColumn treeListColumn383 = ((TreelistView.TreeListColumn)(new TreelistView.TreeListColumn("Depth", "Depth"))); + TreelistView.TreeListColumn treeListColumn384 = ((TreelistView.TreeListColumn)(new TreelistView.TreeListColumn("Array Size", "Array Size"))); + TreelistView.TreeListColumn treeListColumn385 = ((TreelistView.TreeListColumn)(new TreelistView.TreeListColumn("Format", "Format"))); + TreelistView.TreeListColumn treeListColumn386 = ((TreelistView.TreeListColumn)(new TreelistView.TreeListColumn("Go", "Go"))); + TreelistView.TreeListColumn treeListColumn387 = ((TreelistView.TreeListColumn)(new TreelistView.TreeListColumn("Slot", "Slot"))); + TreelistView.TreeListColumn treeListColumn388 = ((TreelistView.TreeListColumn)(new TreelistView.TreeListColumn("Addressing", "Addressing"))); + TreelistView.TreeListColumn treeListColumn389 = ((TreelistView.TreeListColumn)(new TreelistView.TreeListColumn("Filter", "Filter"))); + TreelistView.TreeListColumn treeListColumn390 = ((TreelistView.TreeListColumn)(new TreelistView.TreeListColumn("LOD Clamp", "LOD Clamp"))); + TreelistView.TreeListColumn treeListColumn391 = ((TreelistView.TreeListColumn)(new TreelistView.TreeListColumn("Mip Bias", "Mip Bias"))); + TreelistView.TreeListColumn treeListColumn392 = ((TreelistView.TreeListColumn)(new TreelistView.TreeListColumn("Slot", "Slot"))); + TreelistView.TreeListColumn treeListColumn393 = ((TreelistView.TreeListColumn)(new TreelistView.TreeListColumn("Buffer", "Buffer"))); + TreelistView.TreeListColumn treeListColumn394 = ((TreelistView.TreeListColumn)(new TreelistView.TreeListColumn("Vec4 Range", "Vec4 Range"))); + TreelistView.TreeListColumn treeListColumn395 = ((TreelistView.TreeListColumn)(new TreelistView.TreeListColumn("Size", "Size"))); + TreelistView.TreeListColumn treeListColumn396 = ((TreelistView.TreeListColumn)(new TreelistView.TreeListColumn("Go", "Go"))); + this.pipeFlow = new renderdocui.Controls.PipelineFlowchart(); + this.flowLayoutPanel6 = new System.Windows.Forms.FlowLayoutPanel(); + this.toolStrip1 = new System.Windows.Forms.ToolStrip(); + this.toolStripSeparator2 = new System.Windows.Forms.ToolStripSeparator(); + this.showDisabledToolitem = new System.Windows.Forms.ToolStripButton(); + this.showEmptyToolitem = new System.Windows.Forms.ToolStripButton(); + this.export = new System.Windows.Forms.ToolStripButton(); + this.stageTabControl = new renderdocui.Controls.TablessControl(); + this.tabIA = new System.Windows.Forms.TabPage(); + this.panel1 = new System.Windows.Forms.Panel(); + this.tableLayoutPanel1 = new System.Windows.Forms.TableLayoutPanel(); + this.groupBox1 = new System.Windows.Forms.GroupBox(); + this.tableLayoutPanel13 = new System.Windows.Forms.TableLayoutPanel(); + this.topologyDiagram = new System.Windows.Forms.PictureBox(); + this.topology = new System.Windows.Forms.Label(); + this.groupBox4 = new System.Windows.Forms.GroupBox(); + this.iabuffers = new TreelistView.TreeListView(); + this.inputLayouts = new TreelistView.TreeListView(); + this.iaBytecode = new System.Windows.Forms.Label(); + this.iaBytecodeCog = new System.Windows.Forms.PictureBox(); + this.iaBytecodeMismatch = new System.Windows.Forms.Label(); + this.meshView = new System.Windows.Forms.PictureBox(); + this.tabVS = new System.Windows.Forms.TabPage(); + this.panel2 = new System.Windows.Forms.Panel(); + this.tableLayoutPanel2 = new System.Windows.Forms.TableLayoutPanel(); + this.groupBox3 = new System.Windows.Forms.GroupBox(); + this.flowLayoutPanel3 = new System.Windows.Forms.FlowLayoutPanel(); + this.vsShader = new System.Windows.Forms.Label(); + this.vsShaderCog = new System.Windows.Forms.PictureBox(); + this.vsShaderEdit = new System.Windows.Forms.PictureBox(); + this.vsShaderSave = new System.Windows.Forms.PictureBox(); + this.groupBox5 = new System.Windows.Forms.GroupBox(); + this.vsClasses = new TreelistView.TreeListView(); + this.groupBox7 = new System.Windows.Forms.GroupBox(); + this.vsResources = new TreelistView.TreeListView(); + this.groupBox8 = new System.Windows.Forms.GroupBox(); + this.vsSamplers = new TreelistView.TreeListView(); + this.groupBox9 = new System.Windows.Forms.GroupBox(); + this.vsCBuffers = new TreelistView.TreeListView(); + this.tabHS = new System.Windows.Forms.TabPage(); + this.panel3 = new System.Windows.Forms.Panel(); + this.tableLayoutPanel3 = new System.Windows.Forms.TableLayoutPanel(); + this.groupBox10 = new System.Windows.Forms.GroupBox(); + this.flowLayoutPanel4 = new System.Windows.Forms.FlowLayoutPanel(); + this.hsShader = new System.Windows.Forms.Label(); + this.hsShaderCog = new System.Windows.Forms.PictureBox(); + this.hsShaderEdit = new System.Windows.Forms.PictureBox(); + this.hsShaderSave = new System.Windows.Forms.PictureBox(); + this.groupBox11 = new System.Windows.Forms.GroupBox(); + this.hsClasses = new TreelistView.TreeListView(); + this.groupBox12 = new System.Windows.Forms.GroupBox(); + this.hsResources = new TreelistView.TreeListView(); + this.groupBox14 = new System.Windows.Forms.GroupBox(); + this.hsSamplers = new TreelistView.TreeListView(); + this.groupBox15 = new System.Windows.Forms.GroupBox(); + this.hsCBuffers = new TreelistView.TreeListView(); + this.tabDS = new System.Windows.Forms.TabPage(); + this.panel4 = new System.Windows.Forms.Panel(); + this.tableLayoutPanel4 = new System.Windows.Forms.TableLayoutPanel(); + this.groupBox16 = new System.Windows.Forms.GroupBox(); + this.flowLayoutPanel5 = new System.Windows.Forms.FlowLayoutPanel(); + this.dsShader = new System.Windows.Forms.Label(); + this.dsShaderCog = new System.Windows.Forms.PictureBox(); + this.dsShaderEdit = new System.Windows.Forms.PictureBox(); + this.dsShaderSave = new System.Windows.Forms.PictureBox(); + this.groupBox17 = new System.Windows.Forms.GroupBox(); + this.dsClasses = new TreelistView.TreeListView(); + this.groupBox18 = new System.Windows.Forms.GroupBox(); + this.dsResources = new TreelistView.TreeListView(); + this.groupBox20 = new System.Windows.Forms.GroupBox(); + this.dsSamplers = new TreelistView.TreeListView(); + this.groupBox21 = new System.Windows.Forms.GroupBox(); + this.dsCBuffers = new TreelistView.TreeListView(); + this.tabGS = new System.Windows.Forms.TabPage(); + this.panel5 = new System.Windows.Forms.Panel(); + this.geomTableLayout = new System.Windows.Forms.TableLayoutPanel(); + this.gsStreams = new TreelistView.TreeListView(); + this.groupBox22 = new System.Windows.Forms.GroupBox(); + this.flowLayoutPanel2 = new System.Windows.Forms.FlowLayoutPanel(); + this.gsShader = new System.Windows.Forms.Label(); + this.gsShaderCog = new System.Windows.Forms.PictureBox(); + this.gsShaderEdit = new System.Windows.Forms.PictureBox(); + this.gsShaderSave = new System.Windows.Forms.PictureBox(); + this.geomClassGroupBox = new System.Windows.Forms.GroupBox(); + this.gsClasses = new TreelistView.TreeListView(); + this.groupBox24 = new System.Windows.Forms.GroupBox(); + this.gsResources = new TreelistView.TreeListView(); + this.groupBox25 = new System.Windows.Forms.GroupBox(); + this.gsSamplers = new TreelistView.TreeListView(); + this.geomCBufGroupBox = new System.Windows.Forms.GroupBox(); + this.gsCBuffers = new TreelistView.TreeListView(); + this.tabRS = new System.Windows.Forms.TabPage(); + this.panel8 = new System.Windows.Forms.Panel(); + this.tableLayoutPanel14 = new System.Windows.Forms.TableLayoutPanel(); + this.groupBox31 = new System.Windows.Forms.GroupBox(); + this.tableLayoutPanel8 = new System.Windows.Forms.TableLayoutPanel(); + this.forcedSampleCount = new System.Windows.Forms.Label(); + this.label14 = new System.Windows.Forms.Label(); + this.frontCCW = new System.Windows.Forms.PictureBox(); + this.cullMode = new System.Windows.Forms.Label(); + this.label2 = new System.Windows.Forms.Label(); + this.label5 = new System.Windows.Forms.Label(); + this.depthBias = new System.Windows.Forms.Label(); + this.depthBiasClamp = new System.Windows.Forms.Label(); + this.slopeScaledBias = new System.Windows.Forms.Label(); + this.label18 = new System.Windows.Forms.Label(); + this.label19 = new System.Windows.Forms.Label(); + this.label20 = new System.Windows.Forms.Label(); + this.depthClip = new System.Windows.Forms.PictureBox(); + this.fillMode = new System.Windows.Forms.Label(); + this.multisampleEnable = new System.Windows.Forms.PictureBox(); + this.scissorEnable = new System.Windows.Forms.PictureBox(); + this.lineAAEnable = new System.Windows.Forms.PictureBox(); + this.label23 = new System.Windows.Forms.Label(); + this.conservativeRaster = new System.Windows.Forms.PictureBox(); + this.groupBox32 = new System.Windows.Forms.GroupBox(); + this.viewports = new TreelistView.TreeListView(); + this.scissors = new TreelistView.TreeListView(); + this.tabPS = new System.Windows.Forms.TabPage(); + this.panel6 = new System.Windows.Forms.Panel(); + this.pixelTableLayout = new System.Windows.Forms.TableLayoutPanel(); + this.groupBox13 = new System.Windows.Forms.GroupBox(); + this.flowLayoutPanel1 = new System.Windows.Forms.FlowLayoutPanel(); + this.psShader = new System.Windows.Forms.Label(); + this.psShaderCog = new System.Windows.Forms.PictureBox(); + this.psShaderEdit = new System.Windows.Forms.PictureBox(); + this.psShaderSave = new System.Windows.Forms.PictureBox(); + this.pixelClassGroupBox = new System.Windows.Forms.GroupBox(); + this.psClasses = new TreelistView.TreeListView(); + this.groupBox28 = new System.Windows.Forms.GroupBox(); + this.psResources = new TreelistView.TreeListView(); + this.groupBox29 = new System.Windows.Forms.GroupBox(); + this.psSamplers = new TreelistView.TreeListView(); + this.pixelCBufGroupBox = new System.Windows.Forms.GroupBox(); + this.psCBuffers = new TreelistView.TreeListView(); + this.tabOM = new System.Windows.Forms.TabPage(); + this.panel9 = new System.Windows.Forms.Panel(); + this.tableLayoutPanel9 = new System.Windows.Forms.TableLayoutPanel(); + this.groupBox33 = new System.Windows.Forms.GroupBox(); + this.targetOutputs = new TreelistView.TreeListView(); + this.groupBox37 = new System.Windows.Forms.GroupBox(); + this.blendOperations = new TreelistView.TreeListView(); + this.tableLayoutPanel10 = new System.Windows.Forms.TableLayoutPanel(); + this.groupBox40 = new System.Windows.Forms.GroupBox(); + this.tableLayoutPanel11 = new System.Windows.Forms.TableLayoutPanel(); + this.sampleMask = new System.Windows.Forms.Label(); + this.independentBlend = new System.Windows.Forms.PictureBox(); + this.label3 = new System.Windows.Forms.Label(); + this.label6 = new System.Windows.Forms.Label(); + this.label7 = new System.Windows.Forms.Label(); + this.alphaToCoverage = new System.Windows.Forms.PictureBox(); + this.blendFactor = new System.Windows.Forms.Label(); + this.label4 = new System.Windows.Forms.Label(); + this.groupBox41 = new System.Windows.Forms.GroupBox(); + this.tableLayoutPanel12 = new System.Windows.Forms.TableLayoutPanel(); + this.depthEnable = new System.Windows.Forms.PictureBox(); + this.label21 = new System.Windows.Forms.Label(); + this.depthWrite = new System.Windows.Forms.PictureBox(); + this.label11 = new System.Windows.Forms.Label(); + this.label13 = new System.Windows.Forms.Label(); + this.depthFunc = new System.Windows.Forms.Label(); + this.groupBox43 = new System.Windows.Forms.GroupBox(); + this.flowLayoutPanel8 = new System.Windows.Forms.FlowLayoutPanel(); + this.tableLayoutPanel15 = new System.Windows.Forms.TableLayoutPanel(); + this.stencilRef = new System.Windows.Forms.Label(); + this.stencilReadMask = new System.Windows.Forms.Label(); + this.stencilEnable = new System.Windows.Forms.PictureBox(); + this.label12 = new System.Windows.Forms.Label(); + this.label22 = new System.Windows.Forms.Label(); + this.stencilWriteMask = new System.Windows.Forms.Label(); + this.label24 = new System.Windows.Forms.Label(); + this.label8 = new System.Windows.Forms.Label(); + this.stencilFuncs = new TreelistView.TreeListView(); + this.tabCS = new System.Windows.Forms.TabPage(); + this.panel7 = new System.Windows.Forms.Panel(); + this.tableLayoutPanel7 = new System.Windows.Forms.TableLayoutPanel(); + this.groupBox38 = new System.Windows.Forms.GroupBox(); + this.csUAVs = new TreelistView.TreeListView(); + this.groupBox27 = new System.Windows.Forms.GroupBox(); + this.csClasses = new TreelistView.TreeListView(); + this.groupBox6 = new System.Windows.Forms.GroupBox(); + this.flowLayoutPanel7 = new System.Windows.Forms.FlowLayoutPanel(); + this.csShader = new System.Windows.Forms.Label(); + this.csShaderCog = new System.Windows.Forms.PictureBox(); + this.csShaderEdit = new System.Windows.Forms.PictureBox(); + this.csShaderSave = new System.Windows.Forms.PictureBox(); + this.computeDebugControls = new System.Windows.Forms.FlowLayoutPanel(); + this.label9 = new System.Windows.Forms.Label(); + this.groupX = new System.Windows.Forms.TextBox(); + this.groupY = new System.Windows.Forms.TextBox(); + this.groupZ = new System.Windows.Forms.TextBox(); + this.label10 = new System.Windows.Forms.Label(); + this.threadX = new System.Windows.Forms.TextBox(); + this.threadY = new System.Windows.Forms.TextBox(); + this.threadZ = new System.Windows.Forms.TextBox(); + this.csDebug = new System.Windows.Forms.Button(); + this.groupBox34 = new System.Windows.Forms.GroupBox(); + this.csResources = new TreelistView.TreeListView(); + this.groupBox35 = new System.Windows.Forms.GroupBox(); + this.csSamplers = new TreelistView.TreeListView(); + this.groupBox36 = new System.Windows.Forms.GroupBox(); + this.csCBuffers = new TreelistView.TreeListView(); + this.rightclickMenu = new System.Windows.Forms.ContextMenuStrip(this.components); + this.showDisabled = new System.Windows.Forms.ToolStripMenuItem(); + this.showEmpty = new System.Windows.Forms.ToolStripMenuItem(); + this.toolTip = new System.Windows.Forms.ToolTip(this.components); + this.pipeExportDialog = new System.Windows.Forms.SaveFileDialog(); + this.shaderSaveDialog = new System.Windows.Forms.SaveFileDialog(); + toolStripLabel1 = new System.Windows.Forms.ToolStripLabel(); + toolstripTable = new System.Windows.Forms.TableLayoutPanel(); + groupBox2 = new System.Windows.Forms.GroupBox(); + groupBox39 = new System.Windows.Forms.GroupBox(); + flowLayoutPanel9 = new System.Windows.Forms.FlowLayoutPanel(); + groupBox44 = new System.Windows.Forms.GroupBox(); + label28 = new System.Windows.Forms.Label(); + label26 = new System.Windows.Forms.Label(); + label27 = new System.Windows.Forms.Label(); + label29 = new System.Windows.Forms.Label(); + label30 = new System.Windows.Forms.Label(); + label31 = new System.Windows.Forms.Label(); + label32 = new System.Windows.Forms.Label(); + label33 = new System.Windows.Forms.Label(); + label34 = new System.Windows.Forms.Label(); + groupBox45 = new System.Windows.Forms.GroupBox(); + label35 = new System.Windows.Forms.Label(); + label36 = new System.Windows.Forms.Label(); + label37 = new System.Windows.Forms.Label(); + label1 = new System.Windows.Forms.Label(); + label15 = new System.Windows.Forms.Label(); + label16 = new System.Windows.Forms.Label(); + label17 = new System.Windows.Forms.Label(); + label25 = new System.Windows.Forms.Label(); + groupBox42 = new System.Windows.Forms.GroupBox(); + label38 = new System.Windows.Forms.Label(); + label39 = new System.Windows.Forms.Label(); + label40 = new System.Windows.Forms.Label(); + label41 = new System.Windows.Forms.Label(); + label42 = new System.Windows.Forms.Label(); + label43 = new System.Windows.Forms.Label(); + toolstripTable.SuspendLayout(); + this.flowLayoutPanel6.SuspendLayout(); + this.toolStrip1.SuspendLayout(); + this.stageTabControl.SuspendLayout(); + this.tabIA.SuspendLayout(); + this.panel1.SuspendLayout(); + this.tableLayoutPanel1.SuspendLayout(); + this.groupBox1.SuspendLayout(); + this.tableLayoutPanel13.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)(this.topologyDiagram)).BeginInit(); + this.groupBox4.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)(this.iabuffers)).BeginInit(); + groupBox2.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)(this.inputLayouts)).BeginInit(); + groupBox39.SuspendLayout(); + flowLayoutPanel9.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)(this.iaBytecodeCog)).BeginInit(); + groupBox44.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)(this.meshView)).BeginInit(); + this.tabVS.SuspendLayout(); + this.panel2.SuspendLayout(); + this.tableLayoutPanel2.SuspendLayout(); + this.groupBox3.SuspendLayout(); + this.flowLayoutPanel3.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)(this.vsShaderCog)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.vsShaderEdit)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.vsShaderSave)).BeginInit(); + this.groupBox5.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)(this.vsClasses)).BeginInit(); + this.groupBox7.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)(this.vsResources)).BeginInit(); + this.groupBox8.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)(this.vsSamplers)).BeginInit(); + this.groupBox9.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)(this.vsCBuffers)).BeginInit(); + this.tabHS.SuspendLayout(); + this.panel3.SuspendLayout(); + this.tableLayoutPanel3.SuspendLayout(); + this.groupBox10.SuspendLayout(); + this.flowLayoutPanel4.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)(this.hsShaderCog)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.hsShaderEdit)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.hsShaderSave)).BeginInit(); + this.groupBox11.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)(this.hsClasses)).BeginInit(); + this.groupBox12.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)(this.hsResources)).BeginInit(); + this.groupBox14.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)(this.hsSamplers)).BeginInit(); + this.groupBox15.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)(this.hsCBuffers)).BeginInit(); + this.tabDS.SuspendLayout(); + this.panel4.SuspendLayout(); + this.tableLayoutPanel4.SuspendLayout(); + this.groupBox16.SuspendLayout(); + this.flowLayoutPanel5.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)(this.dsShaderCog)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.dsShaderEdit)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.dsShaderSave)).BeginInit(); + this.groupBox17.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)(this.dsClasses)).BeginInit(); + this.groupBox18.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)(this.dsResources)).BeginInit(); + this.groupBox20.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)(this.dsSamplers)).BeginInit(); + this.groupBox21.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)(this.dsCBuffers)).BeginInit(); + this.tabGS.SuspendLayout(); + this.panel5.SuspendLayout(); + this.geomTableLayout.SuspendLayout(); + groupBox45.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)(this.gsStreams)).BeginInit(); + this.groupBox22.SuspendLayout(); + this.flowLayoutPanel2.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)(this.gsShaderCog)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.gsShaderEdit)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.gsShaderSave)).BeginInit(); + this.geomClassGroupBox.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)(this.gsClasses)).BeginInit(); + this.groupBox24.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)(this.gsResources)).BeginInit(); + this.groupBox25.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)(this.gsSamplers)).BeginInit(); + this.geomCBufGroupBox.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)(this.gsCBuffers)).BeginInit(); + this.tabRS.SuspendLayout(); + this.panel8.SuspendLayout(); + this.tableLayoutPanel14.SuspendLayout(); + this.groupBox31.SuspendLayout(); + this.tableLayoutPanel8.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)(this.frontCCW)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.depthClip)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.multisampleEnable)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.scissorEnable)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.lineAAEnable)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.conservativeRaster)).BeginInit(); + this.groupBox32.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)(this.viewports)).BeginInit(); + groupBox42.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)(this.scissors)).BeginInit(); + this.tabPS.SuspendLayout(); + this.panel6.SuspendLayout(); + this.pixelTableLayout.SuspendLayout(); + this.groupBox13.SuspendLayout(); + this.flowLayoutPanel1.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)(this.psShaderCog)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.psShaderEdit)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.psShaderSave)).BeginInit(); + this.pixelClassGroupBox.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)(this.psClasses)).BeginInit(); + this.groupBox28.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)(this.psResources)).BeginInit(); + this.groupBox29.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)(this.psSamplers)).BeginInit(); + this.pixelCBufGroupBox.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)(this.psCBuffers)).BeginInit(); + this.tabOM.SuspendLayout(); + this.panel9.SuspendLayout(); + this.tableLayoutPanel9.SuspendLayout(); + this.groupBox33.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)(this.targetOutputs)).BeginInit(); + this.groupBox37.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)(this.blendOperations)).BeginInit(); + this.tableLayoutPanel10.SuspendLayout(); + this.groupBox40.SuspendLayout(); + this.tableLayoutPanel11.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)(this.independentBlend)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.alphaToCoverage)).BeginInit(); + this.groupBox41.SuspendLayout(); + this.tableLayoutPanel12.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)(this.depthEnable)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.depthWrite)).BeginInit(); + this.groupBox43.SuspendLayout(); + this.flowLayoutPanel8.SuspendLayout(); + this.tableLayoutPanel15.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)(this.stencilEnable)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.stencilFuncs)).BeginInit(); + this.tabCS.SuspendLayout(); + this.panel7.SuspendLayout(); + this.tableLayoutPanel7.SuspendLayout(); + this.groupBox38.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)(this.csUAVs)).BeginInit(); + this.groupBox27.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)(this.csClasses)).BeginInit(); + this.groupBox6.SuspendLayout(); + this.flowLayoutPanel7.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)(this.csShaderCog)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.csShaderEdit)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.csShaderSave)).BeginInit(); + this.computeDebugControls.SuspendLayout(); + this.groupBox34.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)(this.csResources)).BeginInit(); + this.groupBox35.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)(this.csSamplers)).BeginInit(); + this.groupBox36.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)(this.csCBuffers)).BeginInit(); + this.rightclickMenu.SuspendLayout(); + this.SuspendLayout(); + // + // toolStripLabel1 + // + toolStripLabel1.Name = "toolStripLabel1"; + toolStripLabel1.Size = new System.Drawing.Size(84, 22); + toolStripLabel1.Text = "Display Controls"; + // + // toolstripTable + // + toolstripTable.ColumnCount = 1; + toolstripTable.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 100F)); + toolstripTable.Controls.Add(this.pipeFlow, 0, 1); + toolstripTable.Controls.Add(this.flowLayoutPanel6, 0, 0); + toolstripTable.Controls.Add(this.stageTabControl, 0, 2); + toolstripTable.Dock = System.Windows.Forms.DockStyle.Fill; + toolstripTable.Location = new System.Drawing.Point(0, 0); + toolstripTable.Name = "toolstripTable"; + toolstripTable.RowCount = 3; + toolstripTable.RowStyles.Add(new System.Windows.Forms.RowStyle()); + toolstripTable.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 10F)); + toolstripTable.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 90F)); + toolstripTable.Size = new System.Drawing.Size(1023, 738); + toolstripTable.TabIndex = 2; + // + // pipeFlow + // + this.pipeFlow.BackColor = System.Drawing.Color.Transparent; + this.pipeFlow.Dock = System.Windows.Forms.DockStyle.Fill; + this.pipeFlow.Font = new System.Drawing.Font("Tahoma", 11.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.pipeFlow.Location = new System.Drawing.Point(4, 35); + this.pipeFlow.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4); + this.pipeFlow.Name = "pipeFlow"; + this.pipeFlow.SelectedStage = 0; + this.pipeFlow.Size = new System.Drawing.Size(1015, 62); + this.pipeFlow.TabIndex = 0; + this.pipeFlow.SelectedStageChanged += new System.EventHandler(this.pipeFlow_SelectedStageChanged); + // + // flowLayoutPanel6 + // + this.flowLayoutPanel6.AutoSize = true; + this.flowLayoutPanel6.Controls.Add(this.toolStrip1); + this.flowLayoutPanel6.Location = new System.Drawing.Point(3, 3); + this.flowLayoutPanel6.Name = "flowLayoutPanel6"; + this.flowLayoutPanel6.Size = new System.Drawing.Size(394, 25); + this.flowLayoutPanel6.TabIndex = 1; + // + // toolStrip1 + // + this.toolStrip1.GripStyle = System.Windows.Forms.ToolStripGripStyle.Hidden; + this.toolStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { + toolStripLabel1, + this.toolStripSeparator2, + this.showDisabledToolitem, + this.showEmptyToolitem, + this.export}); + this.toolStrip1.Location = new System.Drawing.Point(0, 0); + this.toolStrip1.Name = "toolStrip1"; + this.toolStrip1.Size = new System.Drawing.Size(394, 25); + this.toolStrip1.TabIndex = 0; + this.toolStrip1.Text = "toolStrip1"; + // + // toolStripSeparator2 + // + this.toolStripSeparator2.Name = "toolStripSeparator2"; + this.toolStripSeparator2.Size = new System.Drawing.Size(6, 25); + // + // showDisabledToolitem + // + this.showDisabledToolitem.CheckOnClick = true; + this.showDisabledToolitem.Image = global::renderdocui.Properties.Resources.page_white_delete; + this.showDisabledToolitem.ImageTransparentColor = System.Drawing.Color.Magenta; + this.showDisabledToolitem.Name = "showDisabledToolitem"; + this.showDisabledToolitem.Size = new System.Drawing.Size(126, 22); + this.showDisabledToolitem.Text = "Show Disabled Items"; + this.showDisabledToolitem.Click += new System.EventHandler(this.hideDisabled_Click); + // + // showEmptyToolitem + // + this.showEmptyToolitem.CheckOnClick = true; + this.showEmptyToolitem.Image = global::renderdocui.Properties.Resources.page_white_database; + this.showEmptyToolitem.ImageTransparentColor = System.Drawing.Color.Magenta; + this.showEmptyToolitem.Name = "showEmptyToolitem"; + this.showEmptyToolitem.Size = new System.Drawing.Size(116, 22); + this.showEmptyToolitem.Text = "Show Empty Items"; + this.showEmptyToolitem.Click += new System.EventHandler(this.hideEmpty_Click); + // + // export + // + this.export.Image = global::renderdocui.Properties.Resources.save; + this.export.ImageTransparentColor = System.Drawing.Color.Magenta; + this.export.Name = "export"; + this.export.Size = new System.Drawing.Size(59, 22); + this.export.Text = "Export"; + this.export.Click += new System.EventHandler(this.export_Click); + // + // stageTabControl + // + this.stageTabControl.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) + | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.stageTabControl.Controls.Add(this.tabIA); + this.stageTabControl.Controls.Add(this.tabVS); + this.stageTabControl.Controls.Add(this.tabHS); + this.stageTabControl.Controls.Add(this.tabDS); + this.stageTabControl.Controls.Add(this.tabGS); + this.stageTabControl.Controls.Add(this.tabRS); + this.stageTabControl.Controls.Add(this.tabPS); + this.stageTabControl.Controls.Add(this.tabOM); + this.stageTabControl.Controls.Add(this.tabCS); + this.stageTabControl.HotTrack = true; + this.stageTabControl.Location = new System.Drawing.Point(3, 104); + this.stageTabControl.Multiline = true; + this.stageTabControl.Name = "stageTabControl"; + this.stageTabControl.SelectedIndex = 0; + this.stageTabControl.Size = new System.Drawing.Size(1017, 631); + this.stageTabControl.TabIndex = 0; + // + // tabIA + // + this.tabIA.Controls.Add(this.panel1); + this.tabIA.Location = new System.Drawing.Point(4, 22); + this.tabIA.Name = "tabIA"; + this.tabIA.Size = new System.Drawing.Size(1009, 605); + this.tabIA.TabIndex = 0; + this.tabIA.Text = "Input Assembler"; + this.tabIA.UseVisualStyleBackColor = true; + // + // panel1 + // + this.panel1.AutoScroll = true; + this.panel1.AutoScrollMinSize = new System.Drawing.Size(280, 400); + this.panel1.Controls.Add(this.tableLayoutPanel1); + this.panel1.Dock = System.Windows.Forms.DockStyle.Fill; + this.panel1.Location = new System.Drawing.Point(0, 0); + this.panel1.Margin = new System.Windows.Forms.Padding(0); + this.panel1.Name = "panel1"; + this.panel1.Size = new System.Drawing.Size(1009, 605); + this.panel1.TabIndex = 0; + // + // tableLayoutPanel1 + // + this.tableLayoutPanel1.ColumnCount = 3; + this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 50F)); + this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 20F)); + this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 30F)); + this.tableLayoutPanel1.Controls.Add(this.groupBox1, 2, 2); + this.tableLayoutPanel1.Controls.Add(this.groupBox4, 0, 2); + this.tableLayoutPanel1.Controls.Add(groupBox2, 0, 0); + this.tableLayoutPanel1.Controls.Add(groupBox39, 0, 1); + this.tableLayoutPanel1.Controls.Add(groupBox44, 1, 2); + this.tableLayoutPanel1.Dock = System.Windows.Forms.DockStyle.Fill; + this.tableLayoutPanel1.Location = new System.Drawing.Point(0, 0); + this.tableLayoutPanel1.Margin = new System.Windows.Forms.Padding(0); + this.tableLayoutPanel1.Name = "tableLayoutPanel1"; + this.tableLayoutPanel1.RowCount = 3; + this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 50F)); + this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 50F)); + this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 50F)); + this.tableLayoutPanel1.Size = new System.Drawing.Size(1009, 605); + this.tableLayoutPanel1.TabIndex = 9; + // + // groupBox1 + // + this.groupBox1.Controls.Add(this.tableLayoutPanel13); + this.groupBox1.Dock = System.Windows.Forms.DockStyle.Fill; + this.groupBox1.Location = new System.Drawing.Point(708, 330); + this.groupBox1.Name = "groupBox1"; + this.groupBox1.Size = new System.Drawing.Size(298, 272); + this.groupBox1.TabIndex = 6; + this.groupBox1.TabStop = false; + this.groupBox1.Text = "Primitive Topology"; + // + // tableLayoutPanel13 + // + this.tableLayoutPanel13.ColumnCount = 1; + this.tableLayoutPanel13.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 100F)); + this.tableLayoutPanel13.Controls.Add(this.topologyDiagram, 0, 1); + this.tableLayoutPanel13.Controls.Add(this.topology, 0, 0); + this.tableLayoutPanel13.Dock = System.Windows.Forms.DockStyle.Fill; + this.tableLayoutPanel13.Location = new System.Drawing.Point(3, 16); + this.tableLayoutPanel13.Name = "tableLayoutPanel13"; + this.tableLayoutPanel13.RowCount = 2; + this.tableLayoutPanel13.RowStyles.Add(new System.Windows.Forms.RowStyle()); + this.tableLayoutPanel13.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100F)); + this.tableLayoutPanel13.Size = new System.Drawing.Size(292, 253); + this.tableLayoutPanel13.TabIndex = 2; + // + // topologyDiagram + // + this.topologyDiagram.Dock = System.Windows.Forms.DockStyle.Fill; + this.topologyDiagram.Image = global::renderdocui.Properties.Resources.topo_trilist; + this.topologyDiagram.Location = new System.Drawing.Point(3, 26); + this.topologyDiagram.Name = "topologyDiagram"; + this.topologyDiagram.Size = new System.Drawing.Size(286, 224); + this.topologyDiagram.SizeMode = System.Windows.Forms.PictureBoxSizeMode.CenterImage; + this.topologyDiagram.TabIndex = 1; + this.topologyDiagram.TabStop = false; + // + // topology + // + this.topology.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.topology.AutoSize = true; + this.topology.BackColor = System.Drawing.Color.Transparent; + this.topology.Font = new System.Drawing.Font("Tahoma", 14.25F); + this.topology.Location = new System.Drawing.Point(3, 0); + this.topology.Name = "topology"; + this.topology.Size = new System.Drawing.Size(286, 23); + this.topology.TabIndex = 0; + this.topology.Text = "Triangle List"; + this.topology.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // groupBox4 + // + this.groupBox4.Controls.Add(this.iabuffers); + this.groupBox4.Dock = System.Windows.Forms.DockStyle.Fill; + this.groupBox4.Location = new System.Drawing.Point(3, 330); + this.groupBox4.Name = "groupBox4"; + this.groupBox4.Size = new System.Drawing.Size(498, 272); + this.groupBox4.TabIndex = 8; + this.groupBox4.TabStop = false; + this.groupBox4.Text = "Buffers"; + // + // iabuffers + // + treeListColumn199.AutoSizeMinSize = 0; + treeListColumn199.Width = 60; + treeListColumn200.AutoSize = true; + treeListColumn200.AutoSizeMinSize = 100; + treeListColumn200.Width = 50; + treeListColumn201.AutoSizeMinSize = 0; + treeListColumn201.Width = 75; + treeListColumn202.AutoSizeMinSize = 0; + treeListColumn202.Width = 75; + treeListColumn203.AutoSizeMinSize = 0; + treeListColumn203.Width = 80; + treeListColumn204.AutoSizeMinSize = 0; + treeListColumn204.Width = 25; + this.iabuffers.Columns.AddRange(new TreelistView.TreeListColumn[] { + treeListColumn199, + treeListColumn200, + treeListColumn201, + treeListColumn202, + treeListColumn203, + treeListColumn204}); + this.iabuffers.Cursor = System.Windows.Forms.Cursors.VSplit; + this.iabuffers.Dock = System.Windows.Forms.DockStyle.Fill; + this.iabuffers.GridLineColour = System.Drawing.SystemColors.ControlDark; + this.iabuffers.Location = new System.Drawing.Point(3, 16); + this.iabuffers.MultiSelect = false; + this.iabuffers.Name = "iabuffers"; + this.iabuffers.RowOptions.ItemHeight = 20; + this.iabuffers.RowOptions.ShowHeader = false; + this.iabuffers.Size = new System.Drawing.Size(492, 253); + this.iabuffers.TabIndex = 10; + this.iabuffers.Text = "treeListView1"; + this.iabuffers.TreeColumn = 5; + this.iabuffers.ViewOptions.Indent = 0; + this.iabuffers.ViewOptions.ShowLine = false; + this.iabuffers.ViewOptions.ShowPlusMinus = false; + this.iabuffers.NodeDoubleClicked += new TreelistView.TreeListView.NodeDoubleClickedHandler(this.iabuffers_NodeDoubleClicked); + this.iabuffers.NodeClicked += new TreelistView.TreeListView.NodeClickedHandler(this.iabuffers_NodeDoubleClicked); + this.iabuffers.KeyDown += new System.Windows.Forms.KeyEventHandler(this.defaultCopyPaste_KeyDown); + this.iabuffers.Leave += new System.EventHandler(this.disableSelection_Leave); + this.iabuffers.MouseClick += new System.Windows.Forms.MouseEventHandler(this.hideDisabledEmpty_MouseClick); + this.iabuffers.MouseLeave += new System.EventHandler(this.ia_MouseLeave); + this.iabuffers.MouseMove += new System.Windows.Forms.MouseEventHandler(this.iabuffers_MouseMove); + // + // groupBox2 + // + this.tableLayoutPanel1.SetColumnSpan(groupBox2, 3); + groupBox2.Controls.Add(this.inputLayouts); + groupBox2.Dock = System.Windows.Forms.DockStyle.Fill; + groupBox2.Location = new System.Drawing.Point(3, 3); + groupBox2.Name = "groupBox2"; + groupBox2.Size = new System.Drawing.Size(1003, 271); + groupBox2.TabIndex = 9; + groupBox2.TabStop = false; + groupBox2.Text = "Input Layouts"; + // + // inputLayouts + // + treeListColumn205.AutoSizeMinSize = 0; + treeListColumn205.Width = 40; + treeListColumn206.AutoSizeMinSize = 0; + treeListColumn206.Width = 200; + treeListColumn207.AutoSize = true; + treeListColumn207.AutoSizeMinSize = 50; + treeListColumn207.Width = 75; + treeListColumn208.AutoSizeMinSize = 0; + treeListColumn208.Width = 150; + treeListColumn209.AutoSizeMinSize = 0; + treeListColumn209.Width = 80; + treeListColumn210.AutoSizeMinSize = 0; + treeListColumn210.Width = 150; + treeListColumn211.AutoSizeMinSize = 0; + treeListColumn211.Width = 90; + treeListColumn212.AutoSizeMinSize = 0; + treeListColumn212.Width = 75; + treeListColumn213.AutoSizeMinSize = 0; + treeListColumn213.Width = 25; + this.inputLayouts.Columns.AddRange(new TreelistView.TreeListColumn[] { + treeListColumn205, + treeListColumn206, + treeListColumn207, + treeListColumn208, + treeListColumn209, + treeListColumn210, + treeListColumn211, + treeListColumn212, + treeListColumn213}); + this.inputLayouts.Cursor = System.Windows.Forms.Cursors.Arrow; + this.inputLayouts.Dock = System.Windows.Forms.DockStyle.Fill; + this.inputLayouts.GridLineColour = System.Drawing.SystemColors.ControlDark; + this.inputLayouts.Location = new System.Drawing.Point(3, 16); + this.inputLayouts.MultiSelect = false; + this.inputLayouts.Name = "inputLayouts"; + this.inputLayouts.RowOptions.ItemHeight = 20; + this.inputLayouts.RowOptions.ShowHeader = false; + this.inputLayouts.Size = new System.Drawing.Size(997, 252); + this.inputLayouts.TabIndex = 12; + this.inputLayouts.Text = "Input Layouts"; + this.inputLayouts.TreeColumn = 8; + this.inputLayouts.ViewOptions.Indent = 0; + this.inputLayouts.ViewOptions.ShowLine = false; + this.inputLayouts.ViewOptions.ShowPlusMinus = false; + this.inputLayouts.NodeDoubleClicked += new TreelistView.TreeListView.NodeDoubleClickedHandler(this.inputLayouts_NodeDoubleClick); + this.inputLayouts.NodeClicked += new TreelistView.TreeListView.NodeClickedHandler(this.inputLayouts_NodeDoubleClick); + this.inputLayouts.KeyDown += new System.Windows.Forms.KeyEventHandler(this.defaultCopyPaste_KeyDown); + this.inputLayouts.Leave += new System.EventHandler(this.disableSelection_Leave); + this.inputLayouts.MouseClick += new System.Windows.Forms.MouseEventHandler(this.hideDisabledEmpty_MouseClick); + this.inputLayouts.MouseLeave += new System.EventHandler(this.ia_MouseLeave); + this.inputLayouts.MouseMove += new System.Windows.Forms.MouseEventHandler(this.inputLayouts_MouseMove); + // + // groupBox39 + // + groupBox39.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.tableLayoutPanel1.SetColumnSpan(groupBox39, 3); + groupBox39.Controls.Add(flowLayoutPanel9); + groupBox39.Location = new System.Drawing.Point(3, 280); + groupBox39.Name = "groupBox39"; + groupBox39.Size = new System.Drawing.Size(1003, 44); + groupBox39.TabIndex = 10; + groupBox39.TabStop = false; + groupBox39.Text = "Input Layout Bytecode"; + // + // flowLayoutPanel9 + // + flowLayoutPanel9.Controls.Add(this.iaBytecode); + flowLayoutPanel9.Controls.Add(this.iaBytecodeCog); + flowLayoutPanel9.Controls.Add(this.iaBytecodeMismatch); + flowLayoutPanel9.Dock = System.Windows.Forms.DockStyle.Fill; + flowLayoutPanel9.Location = new System.Drawing.Point(3, 16); + flowLayoutPanel9.Name = "flowLayoutPanel9"; + flowLayoutPanel9.Size = new System.Drawing.Size(997, 25); + flowLayoutPanel9.TabIndex = 26; + // + // iaBytecode + // + this.iaBytecode.Anchor = System.Windows.Forms.AnchorStyles.Left; + this.iaBytecode.AutoSize = true; + this.iaBytecode.BackColor = System.Drawing.SystemColors.Info; + this.iaBytecode.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.iaBytecode.Cursor = System.Windows.Forms.Cursors.Hand; + this.iaBytecode.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F); + this.iaBytecode.ForeColor = System.Drawing.SystemColors.InfoText; + this.iaBytecode.Location = new System.Drawing.Point(3, 3); + this.iaBytecode.MinimumSize = new System.Drawing.Size(300, 2); + this.iaBytecode.Name = "iaBytecode"; + this.iaBytecode.Size = new System.Drawing.Size(300, 15); + this.iaBytecode.TabIndex = 24; + this.iaBytecode.TextAlign = System.Drawing.ContentAlignment.MiddleLeft; + this.iaBytecode.Click += new System.EventHandler(this.shader_Click); + this.iaBytecode.MouseEnter += new System.EventHandler(this.shaderCog_MouseEnter); + this.iaBytecode.MouseLeave += new System.EventHandler(this.shaderCog_MouseLeave); + // + // iaBytecodeCog + // + this.iaBytecodeCog.Cursor = System.Windows.Forms.Cursors.Hand; + this.iaBytecodeCog.Image = global::renderdocui.Properties.Resources.action; + this.iaBytecodeCog.Location = new System.Drawing.Point(309, 3); + this.iaBytecodeCog.Name = "iaBytecodeCog"; + this.iaBytecodeCog.Size = new System.Drawing.Size(16, 16); + this.iaBytecodeCog.SizeMode = System.Windows.Forms.PictureBoxSizeMode.AutoSize; + this.iaBytecodeCog.TabIndex = 25; + this.iaBytecodeCog.TabStop = false; + this.iaBytecodeCog.Click += new System.EventHandler(this.shader_Click); + this.iaBytecodeCog.MouseEnter += new System.EventHandler(this.shaderCog_MouseEnter); + this.iaBytecodeCog.MouseLeave += new System.EventHandler(this.shaderCog_MouseLeave); + // + // iaBytecodeMismatch + // + this.iaBytecodeMismatch.Anchor = System.Windows.Forms.AnchorStyles.Left; + this.iaBytecodeMismatch.AutoSize = true; + this.iaBytecodeMismatch.BackColor = System.Drawing.Color.White; + this.iaBytecodeMismatch.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.iaBytecodeMismatch.ForeColor = System.Drawing.Color.Red; + this.iaBytecodeMismatch.Location = new System.Drawing.Point(331, 2); + this.iaBytecodeMismatch.Name = "iaBytecodeMismatch"; + this.iaBytecodeMismatch.Padding = new System.Windows.Forms.Padding(0, 1, 0, 1); + this.iaBytecodeMismatch.Size = new System.Drawing.Size(145, 17); + this.iaBytecodeMismatch.TabIndex = 26; + this.iaBytecodeMismatch.Text = "Warning: Mismatch detected"; + // + // groupBox44 + // + groupBox44.Controls.Add(this.meshView); + groupBox44.Dock = System.Windows.Forms.DockStyle.Fill; + groupBox44.Location = new System.Drawing.Point(507, 330); + groupBox44.Name = "groupBox44"; + groupBox44.Size = new System.Drawing.Size(195, 272); + groupBox44.TabIndex = 11; + groupBox44.TabStop = false; + groupBox44.Text = "Mesh View"; + // + // meshView + // + this.meshView.Cursor = System.Windows.Forms.Cursors.Hand; + this.meshView.Dock = System.Windows.Forms.DockStyle.Fill; + this.meshView.Image = global::renderdocui.Properties.Resources.wireframe_mesh; + this.meshView.Location = new System.Drawing.Point(3, 16); + this.meshView.Name = "meshView"; + this.meshView.Size = new System.Drawing.Size(189, 253); + this.meshView.SizeMode = System.Windows.Forms.PictureBoxSizeMode.CenterImage; + this.meshView.TabIndex = 0; + this.meshView.TabStop = false; + this.toolTip.SetToolTip(this.meshView, "View the mesh"); + this.meshView.Click += new System.EventHandler(this.meshView_Click); + this.meshView.MouseEnter += new System.EventHandler(this.meshView_MouseEnter); + this.meshView.MouseLeave += new System.EventHandler(this.meshView_MouseLeave); + // + // tabVS + // + this.tabVS.Controls.Add(this.panel2); + this.tabVS.Location = new System.Drawing.Point(4, 22); + this.tabVS.Name = "tabVS"; + this.tabVS.Size = new System.Drawing.Size(1009, 605); + this.tabVS.TabIndex = 1; + this.tabVS.Text = "Vertex Shader"; + this.tabVS.UseVisualStyleBackColor = true; + // + // panel2 + // + this.panel2.AutoScroll = true; + this.panel2.AutoScrollMinSize = new System.Drawing.Size(0, 500); + this.panel2.Controls.Add(this.tableLayoutPanel2); + this.panel2.Dock = System.Windows.Forms.DockStyle.Fill; + this.panel2.Location = new System.Drawing.Point(0, 0); + this.panel2.Name = "panel2"; + this.panel2.Size = new System.Drawing.Size(1009, 605); + this.panel2.TabIndex = 4; + // + // tableLayoutPanel2 + // + this.tableLayoutPanel2.ColumnCount = 2; + this.tableLayoutPanel2.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 50F)); + this.tableLayoutPanel2.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 50F)); + this.tableLayoutPanel2.Controls.Add(this.groupBox3, 0, 0); + this.tableLayoutPanel2.Controls.Add(this.groupBox5, 1, 3); + this.tableLayoutPanel2.Controls.Add(this.groupBox7, 0, 1); + this.tableLayoutPanel2.Controls.Add(this.groupBox8, 0, 2); + this.tableLayoutPanel2.Controls.Add(this.groupBox9, 0, 3); + this.tableLayoutPanel2.Dock = System.Windows.Forms.DockStyle.Fill; + this.tableLayoutPanel2.Location = new System.Drawing.Point(0, 0); + this.tableLayoutPanel2.Name = "tableLayoutPanel2"; + this.tableLayoutPanel2.RowCount = 4; + this.tableLayoutPanel2.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 50F)); + this.tableLayoutPanel2.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 25F)); + this.tableLayoutPanel2.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 25F)); + this.tableLayoutPanel2.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 25F)); + this.tableLayoutPanel2.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 25F)); + this.tableLayoutPanel2.Size = new System.Drawing.Size(1009, 605); + this.tableLayoutPanel2.TabIndex = 1; + // + // groupBox3 + // + this.tableLayoutPanel2.SetColumnSpan(this.groupBox3, 2); + this.groupBox3.Controls.Add(this.flowLayoutPanel3); + this.groupBox3.Dock = System.Windows.Forms.DockStyle.Fill; + this.groupBox3.Location = new System.Drawing.Point(3, 3); + this.groupBox3.Name = "groupBox3"; + this.groupBox3.Size = new System.Drawing.Size(1003, 44); + this.groupBox3.TabIndex = 17; + this.groupBox3.TabStop = false; + this.groupBox3.Text = "Shader"; + // + // flowLayoutPanel3 + // + this.flowLayoutPanel3.Controls.Add(this.vsShader); + this.flowLayoutPanel3.Controls.Add(this.vsShaderCog); + this.flowLayoutPanel3.Controls.Add(label28); + this.flowLayoutPanel3.Controls.Add(this.vsShaderEdit); + this.flowLayoutPanel3.Controls.Add(label26); + this.flowLayoutPanel3.Controls.Add(this.vsShaderSave); + this.flowLayoutPanel3.Controls.Add(label27); + this.flowLayoutPanel3.Dock = System.Windows.Forms.DockStyle.Fill; + this.flowLayoutPanel3.Location = new System.Drawing.Point(3, 16); + this.flowLayoutPanel3.Name = "flowLayoutPanel3"; + this.flowLayoutPanel3.Size = new System.Drawing.Size(997, 25); + this.flowLayoutPanel3.TabIndex = 25; + // + // vsShader + // + this.vsShader.Anchor = System.Windows.Forms.AnchorStyles.Left; + this.vsShader.AutoSize = true; + this.vsShader.BackColor = System.Drawing.SystemColors.Info; + this.vsShader.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.vsShader.Cursor = System.Windows.Forms.Cursors.Hand; + this.vsShader.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F); + this.vsShader.ForeColor = System.Drawing.SystemColors.InfoText; + this.vsShader.Location = new System.Drawing.Point(3, 3); + this.vsShader.MinimumSize = new System.Drawing.Size(300, 2); + this.vsShader.Name = "vsShader"; + this.vsShader.Size = new System.Drawing.Size(300, 15); + this.vsShader.TabIndex = 24; + this.vsShader.TextAlign = System.Drawing.ContentAlignment.MiddleLeft; + this.vsShader.Click += new System.EventHandler(this.shader_Click); + this.vsShader.MouseEnter += new System.EventHandler(this.shaderCog_MouseEnter); + this.vsShader.MouseLeave += new System.EventHandler(this.shaderCog_MouseLeave); + // + // vsShaderCog + // + this.vsShaderCog.Cursor = System.Windows.Forms.Cursors.Hand; + this.vsShaderCog.Image = global::renderdocui.Properties.Resources.action; + this.vsShaderCog.Location = new System.Drawing.Point(309, 3); + this.vsShaderCog.Margin = new System.Windows.Forms.Padding(3, 3, 0, 3); + this.vsShaderCog.Name = "vsShaderCog"; + this.vsShaderCog.Size = new System.Drawing.Size(16, 16); + this.vsShaderCog.SizeMode = System.Windows.Forms.PictureBoxSizeMode.AutoSize; + this.vsShaderCog.TabIndex = 25; + this.vsShaderCog.TabStop = false; + this.vsShaderCog.Click += new System.EventHandler(this.shader_Click); + this.vsShaderCog.MouseEnter += new System.EventHandler(this.shaderCog_MouseEnter); + this.vsShaderCog.MouseLeave += new System.EventHandler(this.shaderCog_MouseLeave); + // + // label28 + // + label28.Anchor = System.Windows.Forms.AnchorStyles.Left; + label28.AutoSize = true; + label28.Cursor = System.Windows.Forms.Cursors.Hand; + label28.Location = new System.Drawing.Point(325, 4); + label28.Margin = new System.Windows.Forms.Padding(0, 0, 6, 0); + label28.Name = "label28"; + label28.Size = new System.Drawing.Size(30, 13); + label28.TabIndex = 30; + label28.Text = "View"; + label28.Click += new System.EventHandler(this.shader_Click); + label28.MouseEnter += new System.EventHandler(this.shaderCog_MouseEnter); + label28.MouseLeave += new System.EventHandler(this.shaderCog_MouseLeave); + // + // vsShaderEdit + // + this.vsShaderEdit.Cursor = System.Windows.Forms.Cursors.Hand; + this.vsShaderEdit.Image = global::renderdocui.Properties.Resources.page_white_edit; + this.vsShaderEdit.Location = new System.Drawing.Point(364, 3); + this.vsShaderEdit.Margin = new System.Windows.Forms.Padding(3, 3, 0, 3); + this.vsShaderEdit.Name = "vsShaderEdit"; + this.vsShaderEdit.Size = new System.Drawing.Size(16, 16); + this.vsShaderEdit.SizeMode = System.Windows.Forms.PictureBoxSizeMode.AutoSize; + this.vsShaderEdit.TabIndex = 26; + this.vsShaderEdit.TabStop = false; + this.toolTip.SetToolTip(this.vsShaderEdit, "HLSL edit and replace this shader"); + this.vsShaderEdit.Click += new System.EventHandler(this.shaderedit_Click); + // + // label26 + // + label26.Anchor = System.Windows.Forms.AnchorStyles.Left; + label26.AutoSize = true; + label26.Cursor = System.Windows.Forms.Cursors.Hand; + label26.Location = new System.Drawing.Point(380, 4); + label26.Margin = new System.Windows.Forms.Padding(0, 0, 6, 0); + label26.Name = "label26"; + label26.Size = new System.Drawing.Size(25, 13); + label26.TabIndex = 28; + label26.Text = "Edit"; + this.toolTip.SetToolTip(label26, "HLSL edit and replace this shader"); + label26.Click += new System.EventHandler(this.shaderedit_Click); + // + // vsShaderSave + // + this.vsShaderSave.Cursor = System.Windows.Forms.Cursors.Hand; + this.vsShaderSave.Image = global::renderdocui.Properties.Resources.save; + this.vsShaderSave.Location = new System.Drawing.Point(414, 3); + this.vsShaderSave.Margin = new System.Windows.Forms.Padding(3, 3, 0, 3); + this.vsShaderSave.Name = "vsShaderSave"; + this.vsShaderSave.Size = new System.Drawing.Size(16, 16); + this.vsShaderSave.SizeMode = System.Windows.Forms.PictureBoxSizeMode.AutoSize; + this.vsShaderSave.TabIndex = 27; + this.vsShaderSave.TabStop = false; + this.toolTip.SetToolTip(this.vsShaderSave, "Save the bytecode blob to disk"); + this.vsShaderSave.Click += new System.EventHandler(this.shaderSave_Click); + // + // label27 + // + label27.Anchor = System.Windows.Forms.AnchorStyles.Left; + label27.AutoSize = true; + label27.Cursor = System.Windows.Forms.Cursors.Hand; + label27.Location = new System.Drawing.Point(430, 4); + label27.Margin = new System.Windows.Forms.Padding(0, 0, 6, 0); + label27.Name = "label27"; + label27.Size = new System.Drawing.Size(32, 13); + label27.TabIndex = 29; + label27.Text = "Save"; + this.toolTip.SetToolTip(label27, "Save the bytecode blob to disk"); + label27.Click += new System.EventHandler(this.shaderSave_Click); + // + // groupBox5 + // + this.tableLayoutPanel2.SetColumnSpan(this.groupBox5, 2); + this.groupBox5.Controls.Add(this.vsClasses); + this.groupBox5.Dock = System.Windows.Forms.DockStyle.Fill; + this.groupBox5.Location = new System.Drawing.Point(3, 467); + this.groupBox5.Name = "groupBox5"; + this.groupBox5.Size = new System.Drawing.Size(1003, 135); + this.groupBox5.TabIndex = 16; + this.groupBox5.TabStop = false; + this.groupBox5.Text = "Class Instances"; + // + // vsClasses + // + treeListColumn214.AutoSizeMinSize = 0; + treeListColumn214.Width = 50; + treeListColumn215.AutoSizeMinSize = 0; + treeListColumn215.Width = 200; + treeListColumn216.AutoSize = true; + treeListColumn216.AutoSizeMinSize = 50; + treeListColumn216.Width = 60; + this.vsClasses.Columns.AddRange(new TreelistView.TreeListColumn[] { + treeListColumn214, + treeListColumn215, + treeListColumn216}); + this.vsClasses.Cursor = System.Windows.Forms.Cursors.Arrow; + this.vsClasses.Dock = System.Windows.Forms.DockStyle.Fill; + this.vsClasses.Location = new System.Drawing.Point(3, 16); + this.vsClasses.Name = "vsClasses"; + this.vsClasses.RowOptions.ItemHeight = 20; + this.vsClasses.RowOptions.ShowHeader = false; + this.vsClasses.Size = new System.Drawing.Size(997, 116); + this.vsClasses.TabIndex = 4; + this.vsClasses.Text = "Class Instances"; + this.vsClasses.TreeColumn = -1; + this.vsClasses.ViewOptions.ShowLine = false; + this.vsClasses.ViewOptions.ShowPlusMinus = false; + this.vsClasses.KeyDown += new System.Windows.Forms.KeyEventHandler(this.defaultCopyPaste_KeyDown); + this.vsClasses.Leave += new System.EventHandler(this.disableSelection_Leave); + this.vsClasses.MouseClick += new System.Windows.Forms.MouseEventHandler(this.hideDisabledEmpty_MouseClick); + // + // groupBox7 + // + this.tableLayoutPanel2.SetColumnSpan(this.groupBox7, 2); + this.groupBox7.Controls.Add(this.vsResources); + this.groupBox7.Dock = System.Windows.Forms.DockStyle.Fill; + this.groupBox7.Location = new System.Drawing.Point(3, 53); + this.groupBox7.Name = "groupBox7"; + this.groupBox7.Size = new System.Drawing.Size(1003, 132); + this.groupBox7.TabIndex = 14; + this.groupBox7.TabStop = false; + this.groupBox7.Text = "Resources"; + // + // vsResources + // + treeListColumn217.AutoSizeMinSize = 0; + treeListColumn217.Width = 120; + treeListColumn218.AutoSize = true; + treeListColumn218.AutoSizeMinSize = 150; + treeListColumn218.Width = 50; + treeListColumn219.AutoSizeMinSize = 0; + treeListColumn219.Width = 85; + treeListColumn220.AutoSizeMinSize = 0; + treeListColumn220.Width = 50; + treeListColumn221.AutoSizeMinSize = 0; + treeListColumn221.Width = 50; + treeListColumn222.AutoSizeMinSize = 0; + treeListColumn222.Width = 50; + treeListColumn223.AutoSizeMinSize = 0; + treeListColumn223.Width = 85; + treeListColumn224.AutoSizeMinSize = 0; + treeListColumn224.Width = 200; + treeListColumn225.AutoSizeMinSize = 0; + treeListColumn225.Width = 25; + this.vsResources.Columns.AddRange(new TreelistView.TreeListColumn[] { + treeListColumn217, + treeListColumn218, + treeListColumn219, + treeListColumn220, + treeListColumn221, + treeListColumn222, + treeListColumn223, + treeListColumn224, + treeListColumn225}); + this.vsResources.Cursor = System.Windows.Forms.Cursors.Arrow; + this.vsResources.Dock = System.Windows.Forms.DockStyle.Fill; + this.vsResources.GridLineColour = System.Drawing.SystemColors.ControlDark; + this.vsResources.Location = new System.Drawing.Point(3, 16); + this.vsResources.MultiSelect = false; + this.vsResources.Name = "vsResources"; + this.vsResources.RowOptions.HoverHighlight = true; + this.vsResources.RowOptions.ItemHeight = 20; + this.vsResources.RowOptions.ShowHeader = false; + this.vsResources.Size = new System.Drawing.Size(997, 113); + this.vsResources.TabIndex = 1; + this.vsResources.Text = "Resources"; + this.vsResources.TreeColumn = 8; + this.vsResources.ViewOptions.Indent = 0; + this.vsResources.ViewOptions.ShowLine = false; + this.vsResources.ViewOptions.ShowPlusMinus = false; + this.vsResources.NodeDoubleClicked += new TreelistView.TreeListView.NodeDoubleClickedHandler(this.textureCell_CellDoubleClick); + this.vsResources.NodeClicked += new TreelistView.TreeListView.NodeClickedHandler(this.textureCell_CellDoubleClick); + this.vsResources.KeyDown += new System.Windows.Forms.KeyEventHandler(this.defaultCopyPaste_KeyDown); + this.vsResources.Leave += new System.EventHandler(this.disableSelection_Leave); + this.vsResources.MouseClick += new System.Windows.Forms.MouseEventHandler(this.hideDisabledEmpty_MouseClick); + this.vsResources.MouseLeave += new System.EventHandler(this.textureCell_MouseLeave); + this.vsResources.MouseMove += new System.Windows.Forms.MouseEventHandler(this.textureCell_MouseMove); + // + // groupBox8 + // + this.tableLayoutPanel2.SetColumnSpan(this.groupBox8, 2); + this.groupBox8.Controls.Add(this.vsSamplers); + this.groupBox8.Dock = System.Windows.Forms.DockStyle.Fill; + this.groupBox8.Location = new System.Drawing.Point(3, 191); + this.groupBox8.Name = "groupBox8"; + this.groupBox8.Size = new System.Drawing.Size(1003, 132); + this.groupBox8.TabIndex = 13; + this.groupBox8.TabStop = false; + this.groupBox8.Text = "Samplers"; + // + // vsSamplers + // + treeListColumn226.AutoSizeMinSize = 0; + treeListColumn226.Width = 120; + treeListColumn227.AutoSizeMinSize = 100; + treeListColumn227.Width = 200; + treeListColumn228.AutoSizeMinSize = 0; + treeListColumn228.Width = 250; + treeListColumn229.AutoSizeMinSize = 0; + treeListColumn229.Width = 90; + treeListColumn230.AutoSize = true; + treeListColumn230.AutoSizeMinSize = 50; + treeListColumn230.Width = 50; + this.vsSamplers.Columns.AddRange(new TreelistView.TreeListColumn[] { + treeListColumn226, + treeListColumn227, + treeListColumn228, + treeListColumn229, + treeListColumn230}); + this.vsSamplers.Cursor = System.Windows.Forms.Cursors.Arrow; + this.vsSamplers.Dock = System.Windows.Forms.DockStyle.Fill; + this.vsSamplers.GridLineColour = System.Drawing.SystemColors.ControlDark; + this.vsSamplers.Location = new System.Drawing.Point(3, 16); + this.vsSamplers.MultiSelect = false; + this.vsSamplers.Name = "vsSamplers"; + this.vsSamplers.RowOptions.HoverHighlight = true; + this.vsSamplers.RowOptions.ItemHeight = 20; + this.vsSamplers.RowOptions.ShowHeader = false; + this.vsSamplers.Size = new System.Drawing.Size(997, 113); + this.vsSamplers.TabIndex = 12; + this.vsSamplers.Text = "Samplers"; + this.vsSamplers.TreeColumn = -1; + this.vsSamplers.ViewOptions.Indent = 0; + this.vsSamplers.ViewOptions.ShowLine = false; + this.vsSamplers.ViewOptions.ShowPlusMinus = false; + this.vsSamplers.KeyDown += new System.Windows.Forms.KeyEventHandler(this.defaultCopyPaste_KeyDown); + this.vsSamplers.Leave += new System.EventHandler(this.disableSelection_Leave); + this.vsSamplers.MouseClick += new System.Windows.Forms.MouseEventHandler(this.hideDisabledEmpty_MouseClick); + // + // groupBox9 + // + this.tableLayoutPanel2.SetColumnSpan(this.groupBox9, 2); + this.groupBox9.Controls.Add(this.vsCBuffers); + this.groupBox9.Dock = System.Windows.Forms.DockStyle.Fill; + this.groupBox9.Location = new System.Drawing.Point(3, 329); + this.groupBox9.Name = "groupBox9"; + this.groupBox9.Size = new System.Drawing.Size(1003, 132); + this.groupBox9.TabIndex = 12; + this.groupBox9.TabStop = false; + this.groupBox9.Text = "Constant Buffers"; + // + // vsCBuffers + // + treeListColumn231.AutoSizeMinSize = 0; + treeListColumn231.Width = 120; + treeListColumn232.AutoSize = true; + treeListColumn232.AutoSizeMinSize = 100; + treeListColumn232.Width = 50; + treeListColumn233.AutoSizeMinSize = 0; + treeListColumn233.Width = 85; + treeListColumn234.AutoSizeMinSize = 0; + treeListColumn234.Width = 250; + treeListColumn235.AutoSizeMinSize = 0; + treeListColumn235.Width = 25; + this.vsCBuffers.Columns.AddRange(new TreelistView.TreeListColumn[] { + treeListColumn231, + treeListColumn232, + treeListColumn233, + treeListColumn234, + treeListColumn235}); + this.vsCBuffers.Cursor = System.Windows.Forms.Cursors.Arrow; + this.vsCBuffers.Dock = System.Windows.Forms.DockStyle.Fill; + this.vsCBuffers.GridLineColour = System.Drawing.SystemColors.ControlDark; + this.vsCBuffers.Location = new System.Drawing.Point(3, 16); + this.vsCBuffers.MultiSelect = false; + this.vsCBuffers.Name = "vsCBuffers"; + this.vsCBuffers.RowOptions.HoverHighlight = true; + this.vsCBuffers.RowOptions.ItemHeight = 20; + this.vsCBuffers.RowOptions.ShowHeader = false; + this.vsCBuffers.Size = new System.Drawing.Size(997, 113); + this.vsCBuffers.TabIndex = 11; + this.vsCBuffers.Text = "Constant Buffers"; + this.vsCBuffers.TreeColumn = 4; + this.vsCBuffers.ViewOptions.Indent = 0; + this.vsCBuffers.ViewOptions.ShowLine = false; + this.vsCBuffers.ViewOptions.ShowPlusMinus = false; + this.vsCBuffers.NodeDoubleClicked += new TreelistView.TreeListView.NodeDoubleClickedHandler(this.cbuffers_NodeDoubleClicked); + this.vsCBuffers.NodeClicked += new TreelistView.TreeListView.NodeClickedHandler(this.cbuffers_NodeDoubleClicked); + this.vsCBuffers.KeyDown += new System.Windows.Forms.KeyEventHandler(this.defaultCopyPaste_KeyDown); + this.vsCBuffers.Leave += new System.EventHandler(this.disableSelection_Leave); + this.vsCBuffers.MouseClick += new System.Windows.Forms.MouseEventHandler(this.hideDisabledEmpty_MouseClick); + // + // tabHS + // + this.tabHS.Controls.Add(this.panel3); + this.tabHS.Location = new System.Drawing.Point(4, 22); + this.tabHS.Name = "tabHS"; + this.tabHS.Size = new System.Drawing.Size(1009, 605); + this.tabHS.TabIndex = 2; + this.tabHS.Text = "Hull Shader"; + this.tabHS.UseVisualStyleBackColor = true; + // + // panel3 + // + this.panel3.AutoScroll = true; + this.panel3.AutoScrollMinSize = new System.Drawing.Size(0, 500); + this.panel3.Controls.Add(this.tableLayoutPanel3); + this.panel3.Dock = System.Windows.Forms.DockStyle.Fill; + this.panel3.Location = new System.Drawing.Point(0, 0); + this.panel3.Name = "panel3"; + this.panel3.Size = new System.Drawing.Size(1009, 605); + this.panel3.TabIndex = 4; + // + // tableLayoutPanel3 + // + this.tableLayoutPanel3.ColumnCount = 2; + this.tableLayoutPanel3.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 50F)); + this.tableLayoutPanel3.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 50F)); + this.tableLayoutPanel3.Controls.Add(this.groupBox10, 0, 0); + this.tableLayoutPanel3.Controls.Add(this.groupBox11, 1, 3); + this.tableLayoutPanel3.Controls.Add(this.groupBox12, 0, 1); + this.tableLayoutPanel3.Controls.Add(this.groupBox14, 0, 2); + this.tableLayoutPanel3.Controls.Add(this.groupBox15, 0, 3); + this.tableLayoutPanel3.Dock = System.Windows.Forms.DockStyle.Fill; + this.tableLayoutPanel3.Location = new System.Drawing.Point(0, 0); + this.tableLayoutPanel3.Name = "tableLayoutPanel3"; + this.tableLayoutPanel3.RowCount = 4; + this.tableLayoutPanel3.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 50F)); + this.tableLayoutPanel3.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 25F)); + this.tableLayoutPanel3.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 25F)); + this.tableLayoutPanel3.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 25F)); + this.tableLayoutPanel3.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 25F)); + this.tableLayoutPanel3.Size = new System.Drawing.Size(1009, 605); + this.tableLayoutPanel3.TabIndex = 1; + // + // groupBox10 + // + this.tableLayoutPanel3.SetColumnSpan(this.groupBox10, 2); + this.groupBox10.Controls.Add(this.flowLayoutPanel4); + this.groupBox10.Dock = System.Windows.Forms.DockStyle.Fill; + this.groupBox10.Location = new System.Drawing.Point(3, 3); + this.groupBox10.Name = "groupBox10"; + this.groupBox10.Size = new System.Drawing.Size(1003, 44); + this.groupBox10.TabIndex = 17; + this.groupBox10.TabStop = false; + this.groupBox10.Text = "Shader"; + // + // flowLayoutPanel4 + // + this.flowLayoutPanel4.Controls.Add(this.hsShader); + this.flowLayoutPanel4.Controls.Add(this.hsShaderCog); + this.flowLayoutPanel4.Controls.Add(label29); + this.flowLayoutPanel4.Controls.Add(this.hsShaderEdit); + this.flowLayoutPanel4.Controls.Add(label30); + this.flowLayoutPanel4.Controls.Add(this.hsShaderSave); + this.flowLayoutPanel4.Controls.Add(label31); + this.flowLayoutPanel4.Dock = System.Windows.Forms.DockStyle.Fill; + this.flowLayoutPanel4.Location = new System.Drawing.Point(3, 16); + this.flowLayoutPanel4.Name = "flowLayoutPanel4"; + this.flowLayoutPanel4.Size = new System.Drawing.Size(997, 25); + this.flowLayoutPanel4.TabIndex = 25; + // + // hsShader + // + this.hsShader.Anchor = System.Windows.Forms.AnchorStyles.Left; + this.hsShader.AutoSize = true; + this.hsShader.BackColor = System.Drawing.SystemColors.Info; + this.hsShader.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.hsShader.Cursor = System.Windows.Forms.Cursors.Hand; + this.hsShader.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F); + this.hsShader.ForeColor = System.Drawing.SystemColors.InfoText; + this.hsShader.Location = new System.Drawing.Point(3, 3); + this.hsShader.MinimumSize = new System.Drawing.Size(300, 2); + this.hsShader.Name = "hsShader"; + this.hsShader.Size = new System.Drawing.Size(300, 15); + this.hsShader.TabIndex = 24; + this.hsShader.TextAlign = System.Drawing.ContentAlignment.MiddleLeft; + this.hsShader.Click += new System.EventHandler(this.shader_Click); + this.hsShader.MouseEnter += new System.EventHandler(this.shaderCog_MouseEnter); + this.hsShader.MouseLeave += new System.EventHandler(this.shaderCog_MouseLeave); + // + // hsShaderCog + // + this.hsShaderCog.Cursor = System.Windows.Forms.Cursors.Hand; + this.hsShaderCog.Image = global::renderdocui.Properties.Resources.action; + this.hsShaderCog.Location = new System.Drawing.Point(309, 3); + this.hsShaderCog.Margin = new System.Windows.Forms.Padding(3, 3, 0, 3); + this.hsShaderCog.Name = "hsShaderCog"; + this.hsShaderCog.Size = new System.Drawing.Size(16, 16); + this.hsShaderCog.SizeMode = System.Windows.Forms.PictureBoxSizeMode.AutoSize; + this.hsShaderCog.TabIndex = 25; + this.hsShaderCog.TabStop = false; + this.hsShaderCog.Click += new System.EventHandler(this.shader_Click); + this.hsShaderCog.MouseEnter += new System.EventHandler(this.shaderCog_MouseEnter); + this.hsShaderCog.MouseLeave += new System.EventHandler(this.shaderCog_MouseLeave); + // + // label29 + // + label29.Anchor = System.Windows.Forms.AnchorStyles.Left; + label29.AutoSize = true; + label29.Cursor = System.Windows.Forms.Cursors.Hand; + label29.Location = new System.Drawing.Point(325, 4); + label29.Margin = new System.Windows.Forms.Padding(0, 0, 6, 0); + label29.Name = "label29"; + label29.Size = new System.Drawing.Size(30, 13); + label29.TabIndex = 33; + label29.Text = "View"; + label29.Click += new System.EventHandler(this.shader_Click); + label29.MouseEnter += new System.EventHandler(this.shaderCog_MouseEnter); + label29.MouseLeave += new System.EventHandler(this.shaderCog_MouseLeave); + // + // hsShaderEdit + // + this.hsShaderEdit.Cursor = System.Windows.Forms.Cursors.Hand; + this.hsShaderEdit.Image = global::renderdocui.Properties.Resources.page_white_edit; + this.hsShaderEdit.Location = new System.Drawing.Point(364, 3); + this.hsShaderEdit.Margin = new System.Windows.Forms.Padding(3, 3, 0, 3); + this.hsShaderEdit.Name = "hsShaderEdit"; + this.hsShaderEdit.Size = new System.Drawing.Size(16, 16); + this.hsShaderEdit.SizeMode = System.Windows.Forms.PictureBoxSizeMode.AutoSize; + this.hsShaderEdit.TabIndex = 27; + this.hsShaderEdit.TabStop = false; + this.toolTip.SetToolTip(this.hsShaderEdit, "HLSL edit and replace this shader"); + this.hsShaderEdit.Click += new System.EventHandler(this.shaderedit_Click); + // + // label30 + // + label30.Anchor = System.Windows.Forms.AnchorStyles.Left; + label30.AutoSize = true; + label30.Cursor = System.Windows.Forms.Cursors.Hand; + label30.Location = new System.Drawing.Point(380, 4); + label30.Margin = new System.Windows.Forms.Padding(0, 0, 6, 0); + label30.Name = "label30"; + label30.Size = new System.Drawing.Size(25, 13); + label30.TabIndex = 31; + label30.Text = "Edit"; + this.toolTip.SetToolTip(label30, "HLSL edit and replace this shader"); + label30.Click += new System.EventHandler(this.shaderedit_Click); + // + // hsShaderSave + // + this.hsShaderSave.Cursor = System.Windows.Forms.Cursors.Hand; + this.hsShaderSave.Image = global::renderdocui.Properties.Resources.save; + this.hsShaderSave.Location = new System.Drawing.Point(414, 3); + this.hsShaderSave.Margin = new System.Windows.Forms.Padding(3, 3, 0, 3); + this.hsShaderSave.Name = "hsShaderSave"; + this.hsShaderSave.Size = new System.Drawing.Size(16, 16); + this.hsShaderSave.SizeMode = System.Windows.Forms.PictureBoxSizeMode.AutoSize; + this.hsShaderSave.TabIndex = 34; + this.hsShaderSave.TabStop = false; + this.toolTip.SetToolTip(this.hsShaderSave, "Save the bytecode blob to disk"); + this.hsShaderSave.Click += new System.EventHandler(this.shaderSave_Click); + // + // label31 + // + label31.Anchor = System.Windows.Forms.AnchorStyles.Left; + label31.AutoSize = true; + label31.Cursor = System.Windows.Forms.Cursors.Hand; + label31.Location = new System.Drawing.Point(430, 4); + label31.Margin = new System.Windows.Forms.Padding(0, 0, 6, 0); + label31.Name = "label31"; + label31.Size = new System.Drawing.Size(32, 13); + label31.TabIndex = 32; + label31.Text = "Save"; + this.toolTip.SetToolTip(label31, "Save the bytecode blob to disk"); + label31.Click += new System.EventHandler(this.shaderSave_Click); + // + // groupBox11 + // + this.tableLayoutPanel3.SetColumnSpan(this.groupBox11, 2); + this.groupBox11.Controls.Add(this.hsClasses); + this.groupBox11.Dock = System.Windows.Forms.DockStyle.Fill; + this.groupBox11.Location = new System.Drawing.Point(3, 467); + this.groupBox11.Name = "groupBox11"; + this.groupBox11.Size = new System.Drawing.Size(1003, 135); + this.groupBox11.TabIndex = 16; + this.groupBox11.TabStop = false; + this.groupBox11.Text = "Class Instances"; + // + // hsClasses + // + treeListColumn236.AutoSizeMinSize = 0; + treeListColumn236.Width = 50; + treeListColumn237.AutoSizeMinSize = 0; + treeListColumn237.Width = 200; + treeListColumn238.AutoSize = true; + treeListColumn238.AutoSizeMinSize = 50; + treeListColumn238.Width = 60; + this.hsClasses.Columns.AddRange(new TreelistView.TreeListColumn[] { + treeListColumn236, + treeListColumn237, + treeListColumn238}); + this.hsClasses.Cursor = System.Windows.Forms.Cursors.Arrow; + this.hsClasses.Dock = System.Windows.Forms.DockStyle.Fill; + this.hsClasses.Location = new System.Drawing.Point(3, 16); + this.hsClasses.Name = "hsClasses"; + this.hsClasses.RowOptions.ItemHeight = 20; + this.hsClasses.RowOptions.ShowHeader = false; + this.hsClasses.Size = new System.Drawing.Size(997, 116); + this.hsClasses.TabIndex = 4; + this.hsClasses.Text = "Class Instances"; + this.hsClasses.TreeColumn = -1; + this.hsClasses.ViewOptions.ShowLine = false; + this.hsClasses.ViewOptions.ShowPlusMinus = false; + this.hsClasses.KeyDown += new System.Windows.Forms.KeyEventHandler(this.defaultCopyPaste_KeyDown); + this.hsClasses.Leave += new System.EventHandler(this.disableSelection_Leave); + this.hsClasses.MouseClick += new System.Windows.Forms.MouseEventHandler(this.hideDisabledEmpty_MouseClick); + // + // groupBox12 + // + this.tableLayoutPanel3.SetColumnSpan(this.groupBox12, 2); + this.groupBox12.Controls.Add(this.hsResources); + this.groupBox12.Dock = System.Windows.Forms.DockStyle.Fill; + this.groupBox12.Location = new System.Drawing.Point(3, 53); + this.groupBox12.Name = "groupBox12"; + this.groupBox12.Size = new System.Drawing.Size(1003, 132); + this.groupBox12.TabIndex = 14; + this.groupBox12.TabStop = false; + this.groupBox12.Text = "Resources"; + // + // hsResources + // + treeListColumn239.AutoSizeMinSize = 0; + treeListColumn239.Width = 120; + treeListColumn240.AutoSize = true; + treeListColumn240.AutoSizeMinSize = 150; + treeListColumn240.Width = 50; + treeListColumn241.AutoSizeMinSize = 0; + treeListColumn241.Width = 85; + treeListColumn242.AutoSizeMinSize = 0; + treeListColumn242.Width = 50; + treeListColumn243.AutoSizeMinSize = 0; + treeListColumn243.Width = 50; + treeListColumn244.AutoSizeMinSize = 0; + treeListColumn244.Width = 50; + treeListColumn245.AutoSizeMinSize = 0; + treeListColumn245.Width = 85; + treeListColumn246.AutoSizeMinSize = 0; + treeListColumn246.Width = 200; + treeListColumn247.AutoSizeMinSize = 0; + treeListColumn247.Width = 25; + this.hsResources.Columns.AddRange(new TreelistView.TreeListColumn[] { + treeListColumn239, + treeListColumn240, + treeListColumn241, + treeListColumn242, + treeListColumn243, + treeListColumn244, + treeListColumn245, + treeListColumn246, + treeListColumn247}); + this.hsResources.Cursor = System.Windows.Forms.Cursors.Arrow; + this.hsResources.Dock = System.Windows.Forms.DockStyle.Fill; + this.hsResources.GridLineColour = System.Drawing.SystemColors.ControlDark; + this.hsResources.Location = new System.Drawing.Point(3, 16); + this.hsResources.MultiSelect = false; + this.hsResources.Name = "hsResources"; + this.hsResources.RowOptions.HoverHighlight = true; + this.hsResources.RowOptions.ItemHeight = 20; + this.hsResources.RowOptions.ShowHeader = false; + this.hsResources.Size = new System.Drawing.Size(997, 113); + this.hsResources.TabIndex = 1; + this.hsResources.Text = "Outputs"; + this.hsResources.TreeColumn = 8; + this.hsResources.ViewOptions.Indent = 0; + this.hsResources.ViewOptions.ShowLine = false; + this.hsResources.ViewOptions.ShowPlusMinus = false; + this.hsResources.NodeDoubleClicked += new TreelistView.TreeListView.NodeDoubleClickedHandler(this.textureCell_CellDoubleClick); + this.hsResources.NodeClicked += new TreelistView.TreeListView.NodeClickedHandler(this.textureCell_CellDoubleClick); + this.hsResources.KeyDown += new System.Windows.Forms.KeyEventHandler(this.defaultCopyPaste_KeyDown); + this.hsResources.Leave += new System.EventHandler(this.disableSelection_Leave); + this.hsResources.MouseClick += new System.Windows.Forms.MouseEventHandler(this.hideDisabledEmpty_MouseClick); + this.hsResources.MouseLeave += new System.EventHandler(this.textureCell_MouseLeave); + this.hsResources.MouseMove += new System.Windows.Forms.MouseEventHandler(this.textureCell_MouseMove); + // + // groupBox14 + // + this.tableLayoutPanel3.SetColumnSpan(this.groupBox14, 2); + this.groupBox14.Controls.Add(this.hsSamplers); + this.groupBox14.Dock = System.Windows.Forms.DockStyle.Fill; + this.groupBox14.Location = new System.Drawing.Point(3, 191); + this.groupBox14.Name = "groupBox14"; + this.groupBox14.Size = new System.Drawing.Size(1003, 132); + this.groupBox14.TabIndex = 13; + this.groupBox14.TabStop = false; + this.groupBox14.Text = "Samplers"; + // + // hsSamplers + // + treeListColumn248.AutoSizeMinSize = 0; + treeListColumn248.Width = 120; + treeListColumn249.AutoSizeMinSize = 100; + treeListColumn249.Width = 200; + treeListColumn250.AutoSizeMinSize = 0; + treeListColumn250.Width = 250; + treeListColumn251.AutoSizeMinSize = 0; + treeListColumn251.Width = 90; + treeListColumn252.AutoSize = true; + treeListColumn252.AutoSizeMinSize = 50; + treeListColumn252.Width = 50; + this.hsSamplers.Columns.AddRange(new TreelistView.TreeListColumn[] { + treeListColumn248, + treeListColumn249, + treeListColumn250, + treeListColumn251, + treeListColumn252}); + this.hsSamplers.Cursor = System.Windows.Forms.Cursors.Arrow; + this.hsSamplers.Dock = System.Windows.Forms.DockStyle.Fill; + this.hsSamplers.GridLineColour = System.Drawing.SystemColors.ControlDark; + this.hsSamplers.Location = new System.Drawing.Point(3, 16); + this.hsSamplers.MultiSelect = false; + this.hsSamplers.Name = "hsSamplers"; + this.hsSamplers.RowOptions.HoverHighlight = true; + this.hsSamplers.RowOptions.ItemHeight = 20; + this.hsSamplers.RowOptions.ShowHeader = false; + this.hsSamplers.Size = new System.Drawing.Size(997, 113); + this.hsSamplers.TabIndex = 12; + this.hsSamplers.Text = "Samplers"; + this.hsSamplers.TreeColumn = -1; + this.hsSamplers.ViewOptions.Indent = 0; + this.hsSamplers.ViewOptions.ShowLine = false; + this.hsSamplers.ViewOptions.ShowPlusMinus = false; + this.hsSamplers.KeyDown += new System.Windows.Forms.KeyEventHandler(this.defaultCopyPaste_KeyDown); + this.hsSamplers.Leave += new System.EventHandler(this.disableSelection_Leave); + this.hsSamplers.MouseClick += new System.Windows.Forms.MouseEventHandler(this.hideDisabledEmpty_MouseClick); + // + // groupBox15 + // + this.tableLayoutPanel3.SetColumnSpan(this.groupBox15, 2); + this.groupBox15.Controls.Add(this.hsCBuffers); + this.groupBox15.Dock = System.Windows.Forms.DockStyle.Fill; + this.groupBox15.Location = new System.Drawing.Point(3, 329); + this.groupBox15.Name = "groupBox15"; + this.groupBox15.Size = new System.Drawing.Size(1003, 132); + this.groupBox15.TabIndex = 12; + this.groupBox15.TabStop = false; + this.groupBox15.Text = "Constant Buffers"; + // + // hsCBuffers + // + treeListColumn253.AutoSizeMinSize = 0; + treeListColumn253.Width = 120; + treeListColumn254.AutoSize = true; + treeListColumn254.AutoSizeMinSize = 100; + treeListColumn254.Width = 50; + treeListColumn255.AutoSizeMinSize = 0; + treeListColumn255.Width = 85; + treeListColumn256.AutoSizeMinSize = 0; + treeListColumn256.Width = 250; + treeListColumn257.AutoSizeMinSize = 0; + treeListColumn257.Width = 25; + this.hsCBuffers.Columns.AddRange(new TreelistView.TreeListColumn[] { + treeListColumn253, + treeListColumn254, + treeListColumn255, + treeListColumn256, + treeListColumn257}); + this.hsCBuffers.Cursor = System.Windows.Forms.Cursors.Arrow; + this.hsCBuffers.Dock = System.Windows.Forms.DockStyle.Fill; + this.hsCBuffers.GridLineColour = System.Drawing.SystemColors.ControlDark; + this.hsCBuffers.Location = new System.Drawing.Point(3, 16); + this.hsCBuffers.MultiSelect = false; + this.hsCBuffers.Name = "hsCBuffers"; + this.hsCBuffers.RowOptions.HoverHighlight = true; + this.hsCBuffers.RowOptions.ItemHeight = 20; + this.hsCBuffers.RowOptions.ShowHeader = false; + this.hsCBuffers.Size = new System.Drawing.Size(997, 113); + this.hsCBuffers.TabIndex = 11; + this.hsCBuffers.Text = "Constant Buffers"; + this.hsCBuffers.TreeColumn = 4; + this.hsCBuffers.ViewOptions.Indent = 0; + this.hsCBuffers.ViewOptions.ShowLine = false; + this.hsCBuffers.ViewOptions.ShowPlusMinus = false; + this.hsCBuffers.NodeDoubleClicked += new TreelistView.TreeListView.NodeDoubleClickedHandler(this.cbuffers_NodeDoubleClicked); + this.hsCBuffers.NodeClicked += new TreelistView.TreeListView.NodeClickedHandler(this.cbuffers_NodeDoubleClicked); + this.hsCBuffers.KeyDown += new System.Windows.Forms.KeyEventHandler(this.defaultCopyPaste_KeyDown); + this.hsCBuffers.Leave += new System.EventHandler(this.disableSelection_Leave); + this.hsCBuffers.MouseClick += new System.Windows.Forms.MouseEventHandler(this.hideDisabledEmpty_MouseClick); + // + // tabDS + // + this.tabDS.Controls.Add(this.panel4); + this.tabDS.Location = new System.Drawing.Point(4, 22); + this.tabDS.Name = "tabDS"; + this.tabDS.Size = new System.Drawing.Size(1009, 605); + this.tabDS.TabIndex = 3; + this.tabDS.Text = "Domain Shader"; + this.tabDS.UseVisualStyleBackColor = true; + // + // panel4 + // + this.panel4.AutoScroll = true; + this.panel4.AutoScrollMinSize = new System.Drawing.Size(0, 500); + this.panel4.Controls.Add(this.tableLayoutPanel4); + this.panel4.Dock = System.Windows.Forms.DockStyle.Fill; + this.panel4.Location = new System.Drawing.Point(0, 0); + this.panel4.Name = "panel4"; + this.panel4.Size = new System.Drawing.Size(1009, 605); + this.panel4.TabIndex = 4; + // + // tableLayoutPanel4 + // + this.tableLayoutPanel4.ColumnCount = 2; + this.tableLayoutPanel4.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 50F)); + this.tableLayoutPanel4.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 50F)); + this.tableLayoutPanel4.Controls.Add(this.groupBox16, 0, 0); + this.tableLayoutPanel4.Controls.Add(this.groupBox17, 1, 3); + this.tableLayoutPanel4.Controls.Add(this.groupBox18, 0, 1); + this.tableLayoutPanel4.Controls.Add(this.groupBox20, 0, 2); + this.tableLayoutPanel4.Controls.Add(this.groupBox21, 0, 3); + this.tableLayoutPanel4.Dock = System.Windows.Forms.DockStyle.Fill; + this.tableLayoutPanel4.Location = new System.Drawing.Point(0, 0); + this.tableLayoutPanel4.Name = "tableLayoutPanel4"; + this.tableLayoutPanel4.RowCount = 4; + this.tableLayoutPanel4.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 50F)); + this.tableLayoutPanel4.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 25F)); + this.tableLayoutPanel4.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 25F)); + this.tableLayoutPanel4.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 25F)); + this.tableLayoutPanel4.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 25F)); + this.tableLayoutPanel4.Size = new System.Drawing.Size(1009, 605); + this.tableLayoutPanel4.TabIndex = 1; + // + // groupBox16 + // + this.tableLayoutPanel4.SetColumnSpan(this.groupBox16, 2); + this.groupBox16.Controls.Add(this.flowLayoutPanel5); + this.groupBox16.Dock = System.Windows.Forms.DockStyle.Fill; + this.groupBox16.Location = new System.Drawing.Point(3, 3); + this.groupBox16.Name = "groupBox16"; + this.groupBox16.Size = new System.Drawing.Size(1003, 44); + this.groupBox16.TabIndex = 17; + this.groupBox16.TabStop = false; + this.groupBox16.Text = "Shader"; + // + // flowLayoutPanel5 + // + this.flowLayoutPanel5.Controls.Add(this.dsShader); + this.flowLayoutPanel5.Controls.Add(this.dsShaderCog); + this.flowLayoutPanel5.Controls.Add(label32); + this.flowLayoutPanel5.Controls.Add(this.dsShaderEdit); + this.flowLayoutPanel5.Controls.Add(label33); + this.flowLayoutPanel5.Controls.Add(this.dsShaderSave); + this.flowLayoutPanel5.Controls.Add(label34); + this.flowLayoutPanel5.Dock = System.Windows.Forms.DockStyle.Fill; + this.flowLayoutPanel5.Location = new System.Drawing.Point(3, 16); + this.flowLayoutPanel5.Name = "flowLayoutPanel5"; + this.flowLayoutPanel5.Size = new System.Drawing.Size(997, 25); + this.flowLayoutPanel5.TabIndex = 25; + // + // dsShader + // + this.dsShader.Anchor = System.Windows.Forms.AnchorStyles.Left; + this.dsShader.AutoSize = true; + this.dsShader.BackColor = System.Drawing.SystemColors.Info; + this.dsShader.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.dsShader.Cursor = System.Windows.Forms.Cursors.Hand; + this.dsShader.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F); + this.dsShader.ForeColor = System.Drawing.SystemColors.InfoText; + this.dsShader.Location = new System.Drawing.Point(3, 3); + this.dsShader.MinimumSize = new System.Drawing.Size(300, 2); + this.dsShader.Name = "dsShader"; + this.dsShader.Size = new System.Drawing.Size(300, 15); + this.dsShader.TabIndex = 24; + this.dsShader.TextAlign = System.Drawing.ContentAlignment.MiddleLeft; + this.dsShader.Click += new System.EventHandler(this.shader_Click); + this.dsShader.MouseEnter += new System.EventHandler(this.shaderCog_MouseEnter); + this.dsShader.MouseLeave += new System.EventHandler(this.shaderCog_MouseLeave); + // + // dsShaderCog + // + this.dsShaderCog.Cursor = System.Windows.Forms.Cursors.Hand; + this.dsShaderCog.Image = global::renderdocui.Properties.Resources.action; + this.dsShaderCog.Location = new System.Drawing.Point(309, 3); + this.dsShaderCog.Margin = new System.Windows.Forms.Padding(3, 3, 0, 3); + this.dsShaderCog.Name = "dsShaderCog"; + this.dsShaderCog.Size = new System.Drawing.Size(16, 16); + this.dsShaderCog.SizeMode = System.Windows.Forms.PictureBoxSizeMode.AutoSize; + this.dsShaderCog.TabIndex = 25; + this.dsShaderCog.TabStop = false; + this.dsShaderCog.Click += new System.EventHandler(this.shader_Click); + this.dsShaderCog.MouseEnter += new System.EventHandler(this.shaderCog_MouseEnter); + this.dsShaderCog.MouseLeave += new System.EventHandler(this.shaderCog_MouseLeave); + // + // label32 + // + label32.Anchor = System.Windows.Forms.AnchorStyles.Left; + label32.AutoSize = true; + label32.Cursor = System.Windows.Forms.Cursors.Hand; + label32.Location = new System.Drawing.Point(325, 4); + label32.Margin = new System.Windows.Forms.Padding(0, 0, 6, 0); + label32.Name = "label32"; + label32.Size = new System.Drawing.Size(30, 13); + label32.TabIndex = 33; + label32.Text = "View"; + label32.Click += new System.EventHandler(this.shader_Click); + label32.MouseEnter += new System.EventHandler(this.shaderCog_MouseEnter); + label32.MouseLeave += new System.EventHandler(this.shaderCog_MouseLeave); + // + // dsShaderEdit + // + this.dsShaderEdit.Cursor = System.Windows.Forms.Cursors.Hand; + this.dsShaderEdit.Image = global::renderdocui.Properties.Resources.page_white_edit; + this.dsShaderEdit.Location = new System.Drawing.Point(364, 3); + this.dsShaderEdit.Margin = new System.Windows.Forms.Padding(3, 3, 0, 3); + this.dsShaderEdit.Name = "dsShaderEdit"; + this.dsShaderEdit.Size = new System.Drawing.Size(16, 16); + this.dsShaderEdit.SizeMode = System.Windows.Forms.PictureBoxSizeMode.AutoSize; + this.dsShaderEdit.TabIndex = 28; + this.dsShaderEdit.TabStop = false; + this.toolTip.SetToolTip(this.dsShaderEdit, "HLSL edit and replace this shader"); + this.dsShaderEdit.Click += new System.EventHandler(this.shaderedit_Click); + // + // label33 + // + label33.Anchor = System.Windows.Forms.AnchorStyles.Left; + label33.AutoSize = true; + label33.Cursor = System.Windows.Forms.Cursors.Hand; + label33.Location = new System.Drawing.Point(380, 4); + label33.Margin = new System.Windows.Forms.Padding(0, 0, 6, 0); + label33.Name = "label33"; + label33.Size = new System.Drawing.Size(25, 13); + label33.TabIndex = 31; + label33.Text = "Edit"; + this.toolTip.SetToolTip(label33, "HLSL edit and replace this shader"); + label33.Click += new System.EventHandler(this.shaderedit_Click); + // + // dsShaderSave + // + this.dsShaderSave.Cursor = System.Windows.Forms.Cursors.Hand; + this.dsShaderSave.Image = global::renderdocui.Properties.Resources.save; + this.dsShaderSave.Location = new System.Drawing.Point(414, 3); + this.dsShaderSave.Margin = new System.Windows.Forms.Padding(3, 3, 0, 3); + this.dsShaderSave.Name = "dsShaderSave"; + this.dsShaderSave.Size = new System.Drawing.Size(16, 16); + this.dsShaderSave.SizeMode = System.Windows.Forms.PictureBoxSizeMode.AutoSize; + this.dsShaderSave.TabIndex = 34; + this.dsShaderSave.TabStop = false; + this.toolTip.SetToolTip(this.dsShaderSave, "Save the bytecode blob to disk"); + this.dsShaderSave.Click += new System.EventHandler(this.shaderSave_Click); + // + // label34 + // + label34.Anchor = System.Windows.Forms.AnchorStyles.Left; + label34.AutoSize = true; + label34.Cursor = System.Windows.Forms.Cursors.Hand; + label34.Location = new System.Drawing.Point(430, 4); + label34.Margin = new System.Windows.Forms.Padding(0, 0, 6, 0); + label34.Name = "label34"; + label34.Size = new System.Drawing.Size(32, 13); + label34.TabIndex = 32; + label34.Text = "Save"; + this.toolTip.SetToolTip(label34, "Save the bytecode blob to disk"); + label34.Click += new System.EventHandler(this.shaderSave_Click); + // + // groupBox17 + // + this.tableLayoutPanel4.SetColumnSpan(this.groupBox17, 2); + this.groupBox17.Controls.Add(this.dsClasses); + this.groupBox17.Dock = System.Windows.Forms.DockStyle.Fill; + this.groupBox17.Location = new System.Drawing.Point(3, 467); + this.groupBox17.Name = "groupBox17"; + this.groupBox17.Size = new System.Drawing.Size(1003, 135); + this.groupBox17.TabIndex = 16; + this.groupBox17.TabStop = false; + this.groupBox17.Text = "Class Instances"; + // + // dsClasses + // + treeListColumn258.AutoSizeMinSize = 0; + treeListColumn258.Width = 50; + treeListColumn259.AutoSizeMinSize = 0; + treeListColumn259.Width = 200; + treeListColumn260.AutoSize = true; + treeListColumn260.AutoSizeMinSize = 50; + treeListColumn260.Width = 60; + this.dsClasses.Columns.AddRange(new TreelistView.TreeListColumn[] { + treeListColumn258, + treeListColumn259, + treeListColumn260}); + this.dsClasses.Cursor = System.Windows.Forms.Cursors.Arrow; + this.dsClasses.Dock = System.Windows.Forms.DockStyle.Fill; + this.dsClasses.Location = new System.Drawing.Point(3, 16); + this.dsClasses.Name = "dsClasses"; + this.dsClasses.RowOptions.ItemHeight = 20; + this.dsClasses.RowOptions.ShowHeader = false; + this.dsClasses.Size = new System.Drawing.Size(997, 116); + this.dsClasses.TabIndex = 4; + this.dsClasses.Text = "Class Instances"; + this.dsClasses.TreeColumn = -1; + this.dsClasses.ViewOptions.ShowLine = false; + this.dsClasses.ViewOptions.ShowPlusMinus = false; + this.dsClasses.KeyDown += new System.Windows.Forms.KeyEventHandler(this.defaultCopyPaste_KeyDown); + this.dsClasses.Leave += new System.EventHandler(this.disableSelection_Leave); + this.dsClasses.MouseClick += new System.Windows.Forms.MouseEventHandler(this.hideDisabledEmpty_MouseClick); + // + // groupBox18 + // + this.tableLayoutPanel4.SetColumnSpan(this.groupBox18, 2); + this.groupBox18.Controls.Add(this.dsResources); + this.groupBox18.Dock = System.Windows.Forms.DockStyle.Fill; + this.groupBox18.Location = new System.Drawing.Point(3, 53); + this.groupBox18.Name = "groupBox18"; + this.groupBox18.Size = new System.Drawing.Size(1003, 132); + this.groupBox18.TabIndex = 14; + this.groupBox18.TabStop = false; + this.groupBox18.Text = "Resources"; + // + // dsResources + // + treeListColumn261.AutoSizeMinSize = 0; + treeListColumn261.Width = 120; + treeListColumn262.AutoSize = true; + treeListColumn262.AutoSizeMinSize = 150; + treeListColumn262.Width = 50; + treeListColumn263.AutoSizeMinSize = 0; + treeListColumn263.Width = 85; + treeListColumn264.AutoSizeMinSize = 0; + treeListColumn264.Width = 50; + treeListColumn265.AutoSizeMinSize = 0; + treeListColumn265.Width = 50; + treeListColumn266.AutoSizeMinSize = 0; + treeListColumn266.Width = 50; + treeListColumn267.AutoSizeMinSize = 0; + treeListColumn267.Width = 85; + treeListColumn268.AutoSizeMinSize = 0; + treeListColumn268.Width = 200; + treeListColumn269.AutoSizeMinSize = 0; + treeListColumn269.Width = 25; + this.dsResources.Columns.AddRange(new TreelistView.TreeListColumn[] { + treeListColumn261, + treeListColumn262, + treeListColumn263, + treeListColumn264, + treeListColumn265, + treeListColumn266, + treeListColumn267, + treeListColumn268, + treeListColumn269}); + this.dsResources.Cursor = System.Windows.Forms.Cursors.Arrow; + this.dsResources.Dock = System.Windows.Forms.DockStyle.Fill; + this.dsResources.GridLineColour = System.Drawing.SystemColors.ControlDark; + this.dsResources.Location = new System.Drawing.Point(3, 16); + this.dsResources.MultiSelect = false; + this.dsResources.Name = "dsResources"; + this.dsResources.RowOptions.HoverHighlight = true; + this.dsResources.RowOptions.ItemHeight = 20; + this.dsResources.RowOptions.ShowHeader = false; + this.dsResources.Size = new System.Drawing.Size(997, 113); + this.dsResources.TabIndex = 1; + this.dsResources.Text = "Outputs"; + this.dsResources.TreeColumn = 8; + this.dsResources.ViewOptions.Indent = 0; + this.dsResources.ViewOptions.ShowLine = false; + this.dsResources.ViewOptions.ShowPlusMinus = false; + this.dsResources.NodeDoubleClicked += new TreelistView.TreeListView.NodeDoubleClickedHandler(this.textureCell_CellDoubleClick); + this.dsResources.NodeClicked += new TreelistView.TreeListView.NodeClickedHandler(this.textureCell_CellDoubleClick); + this.dsResources.KeyDown += new System.Windows.Forms.KeyEventHandler(this.defaultCopyPaste_KeyDown); + this.dsResources.Leave += new System.EventHandler(this.disableSelection_Leave); + this.dsResources.MouseClick += new System.Windows.Forms.MouseEventHandler(this.hideDisabledEmpty_MouseClick); + this.dsResources.MouseLeave += new System.EventHandler(this.textureCell_MouseLeave); + this.dsResources.MouseMove += new System.Windows.Forms.MouseEventHandler(this.textureCell_MouseMove); + // + // groupBox20 + // + this.tableLayoutPanel4.SetColumnSpan(this.groupBox20, 2); + this.groupBox20.Controls.Add(this.dsSamplers); + this.groupBox20.Dock = System.Windows.Forms.DockStyle.Fill; + this.groupBox20.Location = new System.Drawing.Point(3, 191); + this.groupBox20.Name = "groupBox20"; + this.groupBox20.Size = new System.Drawing.Size(1003, 132); + this.groupBox20.TabIndex = 13; + this.groupBox20.TabStop = false; + this.groupBox20.Text = "Samplers"; + // + // dsSamplers + // + treeListColumn270.AutoSizeMinSize = 0; + treeListColumn270.Width = 120; + treeListColumn271.AutoSizeMinSize = 100; + treeListColumn271.Width = 200; + treeListColumn272.AutoSizeMinSize = 0; + treeListColumn272.Width = 250; + treeListColumn273.AutoSizeMinSize = 0; + treeListColumn273.Width = 90; + treeListColumn274.AutoSize = true; + treeListColumn274.AutoSizeMinSize = 50; + treeListColumn274.Width = 50; + this.dsSamplers.Columns.AddRange(new TreelistView.TreeListColumn[] { + treeListColumn270, + treeListColumn271, + treeListColumn272, + treeListColumn273, + treeListColumn274}); + this.dsSamplers.Cursor = System.Windows.Forms.Cursors.Arrow; + this.dsSamplers.Dock = System.Windows.Forms.DockStyle.Fill; + this.dsSamplers.GridLineColour = System.Drawing.SystemColors.ControlDark; + this.dsSamplers.Location = new System.Drawing.Point(3, 16); + this.dsSamplers.MultiSelect = false; + this.dsSamplers.Name = "dsSamplers"; + this.dsSamplers.RowOptions.HoverHighlight = true; + this.dsSamplers.RowOptions.ItemHeight = 20; + this.dsSamplers.RowOptions.ShowHeader = false; + this.dsSamplers.Size = new System.Drawing.Size(997, 113); + this.dsSamplers.TabIndex = 12; + this.dsSamplers.Text = "Samplers"; + this.dsSamplers.TreeColumn = -1; + this.dsSamplers.ViewOptions.Indent = 0; + this.dsSamplers.ViewOptions.ShowLine = false; + this.dsSamplers.ViewOptions.ShowPlusMinus = false; + this.dsSamplers.KeyDown += new System.Windows.Forms.KeyEventHandler(this.defaultCopyPaste_KeyDown); + this.dsSamplers.Leave += new System.EventHandler(this.disableSelection_Leave); + this.dsSamplers.MouseClick += new System.Windows.Forms.MouseEventHandler(this.hideDisabledEmpty_MouseClick); + // + // groupBox21 + // + this.tableLayoutPanel4.SetColumnSpan(this.groupBox21, 2); + this.groupBox21.Controls.Add(this.dsCBuffers); + this.groupBox21.Dock = System.Windows.Forms.DockStyle.Fill; + this.groupBox21.Location = new System.Drawing.Point(3, 329); + this.groupBox21.Name = "groupBox21"; + this.groupBox21.Size = new System.Drawing.Size(1003, 132); + this.groupBox21.TabIndex = 12; + this.groupBox21.TabStop = false; + this.groupBox21.Text = "Constant Buffers"; + // + // dsCBuffers + // + treeListColumn275.AutoSizeMinSize = 0; + treeListColumn275.Width = 120; + treeListColumn276.AutoSize = true; + treeListColumn276.AutoSizeMinSize = 100; + treeListColumn276.Width = 50; + treeListColumn277.AutoSizeMinSize = 0; + treeListColumn277.Width = 85; + treeListColumn278.AutoSizeMinSize = 0; + treeListColumn278.Width = 250; + treeListColumn279.AutoSizeMinSize = 0; + treeListColumn279.Width = 25; + this.dsCBuffers.Columns.AddRange(new TreelistView.TreeListColumn[] { + treeListColumn275, + treeListColumn276, + treeListColumn277, + treeListColumn278, + treeListColumn279}); + this.dsCBuffers.Cursor = System.Windows.Forms.Cursors.Arrow; + this.dsCBuffers.Dock = System.Windows.Forms.DockStyle.Fill; + this.dsCBuffers.GridLineColour = System.Drawing.SystemColors.ControlDark; + this.dsCBuffers.Location = new System.Drawing.Point(3, 16); + this.dsCBuffers.MultiSelect = false; + this.dsCBuffers.Name = "dsCBuffers"; + this.dsCBuffers.RowOptions.HoverHighlight = true; + this.dsCBuffers.RowOptions.ItemHeight = 20; + this.dsCBuffers.RowOptions.ShowHeader = false; + this.dsCBuffers.Size = new System.Drawing.Size(997, 113); + this.dsCBuffers.TabIndex = 11; + this.dsCBuffers.Text = "Constant Buffers"; + this.dsCBuffers.TreeColumn = 4; + this.dsCBuffers.ViewOptions.Indent = 0; + this.dsCBuffers.ViewOptions.ShowLine = false; + this.dsCBuffers.ViewOptions.ShowPlusMinus = false; + this.dsCBuffers.NodeDoubleClicked += new TreelistView.TreeListView.NodeDoubleClickedHandler(this.cbuffers_NodeDoubleClicked); + this.dsCBuffers.NodeClicked += new TreelistView.TreeListView.NodeClickedHandler(this.cbuffers_NodeDoubleClicked); + this.dsCBuffers.KeyDown += new System.Windows.Forms.KeyEventHandler(this.defaultCopyPaste_KeyDown); + this.dsCBuffers.Leave += new System.EventHandler(this.disableSelection_Leave); + this.dsCBuffers.MouseClick += new System.Windows.Forms.MouseEventHandler(this.hideDisabledEmpty_MouseClick); + // + // tabGS + // + this.tabGS.Controls.Add(this.panel5); + this.tabGS.Location = new System.Drawing.Point(4, 22); + this.tabGS.Name = "tabGS"; + this.tabGS.Size = new System.Drawing.Size(1009, 605); + this.tabGS.TabIndex = 4; + this.tabGS.Text = "Geometry Shader"; + this.tabGS.UseVisualStyleBackColor = true; + // + // panel5 + // + this.panel5.AutoScroll = true; + this.panel5.AutoScrollMinSize = new System.Drawing.Size(0, 500); + this.panel5.Controls.Add(this.geomTableLayout); + this.panel5.Dock = System.Windows.Forms.DockStyle.Fill; + this.panel5.Location = new System.Drawing.Point(0, 0); + this.panel5.Name = "panel5"; + this.panel5.Size = new System.Drawing.Size(1009, 605); + this.panel5.TabIndex = 4; + // + // geomTableLayout + // + this.geomTableLayout.ColumnCount = 2; + this.geomTableLayout.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 50F)); + this.geomTableLayout.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 50F)); + this.geomTableLayout.Controls.Add(groupBox45, 1, 3); + this.geomTableLayout.Controls.Add(this.groupBox22, 0, 0); + this.geomTableLayout.Controls.Add(this.geomClassGroupBox, 0, 4); + this.geomTableLayout.Controls.Add(this.groupBox24, 0, 1); + this.geomTableLayout.Controls.Add(this.groupBox25, 0, 2); + this.geomTableLayout.Controls.Add(this.geomCBufGroupBox, 0, 3); + this.geomTableLayout.Dock = System.Windows.Forms.DockStyle.Fill; + this.geomTableLayout.Location = new System.Drawing.Point(0, 0); + this.geomTableLayout.Name = "geomTableLayout"; + this.geomTableLayout.RowCount = 4; + this.geomTableLayout.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 50F)); + this.geomTableLayout.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 25F)); + this.geomTableLayout.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 25F)); + this.geomTableLayout.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 25F)); + this.geomTableLayout.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 25F)); + this.geomTableLayout.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 20F)); + this.geomTableLayout.Size = new System.Drawing.Size(1009, 605); + this.geomTableLayout.TabIndex = 1; + // + // groupBox45 + // + groupBox45.Controls.Add(this.gsStreams); + groupBox45.Dock = System.Windows.Forms.DockStyle.Fill; + groupBox45.Location = new System.Drawing.Point(507, 329); + groupBox45.Name = "groupBox45"; + groupBox45.Size = new System.Drawing.Size(499, 132); + groupBox45.TabIndex = 20; + groupBox45.TabStop = false; + groupBox45.Text = "Stream Out"; + // + // gsStreams + // + treeListColumn280.AutoSizeMinSize = 0; + treeListColumn280.Width = 60; + treeListColumn281.AutoSize = true; + treeListColumn281.AutoSizeMinSize = 100; + treeListColumn281.Width = 50; + treeListColumn282.AutoSizeMinSize = 0; + treeListColumn282.Width = 75; + treeListColumn283.AutoSizeMinSize = 0; + treeListColumn283.Width = 75; + treeListColumn284.AutoSizeMinSize = 0; + treeListColumn284.Width = 25; + this.gsStreams.Columns.AddRange(new TreelistView.TreeListColumn[] { + treeListColumn280, + treeListColumn281, + treeListColumn282, + treeListColumn283, + treeListColumn284}); + this.gsStreams.Cursor = System.Windows.Forms.Cursors.Arrow; + this.gsStreams.Dock = System.Windows.Forms.DockStyle.Fill; + this.gsStreams.GridLineColour = System.Drawing.SystemColors.ControlDark; + this.gsStreams.Location = new System.Drawing.Point(3, 16); + this.gsStreams.MultiSelect = false; + this.gsStreams.Name = "gsStreams"; + this.gsStreams.RowOptions.HoverHighlight = true; + this.gsStreams.RowOptions.ItemHeight = 20; + this.gsStreams.RowOptions.ShowHeader = false; + this.gsStreams.Size = new System.Drawing.Size(493, 113); + this.gsStreams.TabIndex = 19; + this.gsStreams.Text = "treeListView1"; + this.gsStreams.TreeColumn = 4; + this.gsStreams.ViewOptions.Indent = 0; + this.gsStreams.ViewOptions.ShowLine = false; + this.gsStreams.ViewOptions.ShowPlusMinus = false; + this.gsStreams.NodeDoubleClicked += new TreelistView.TreeListView.NodeDoubleClickedHandler(this.textureCell_CellDoubleClick); + this.gsStreams.NodeClicked += new TreelistView.TreeListView.NodeClickedHandler(this.textureCell_CellDoubleClick); + this.gsStreams.KeyDown += new System.Windows.Forms.KeyEventHandler(this.defaultCopyPaste_KeyDown); + this.gsStreams.Leave += new System.EventHandler(this.disableSelection_Leave); + this.gsStreams.MouseClick += new System.Windows.Forms.MouseEventHandler(this.hideDisabledEmpty_MouseClick); + this.gsStreams.MouseLeave += new System.EventHandler(this.textureCell_MouseLeave); + this.gsStreams.MouseMove += new System.Windows.Forms.MouseEventHandler(this.textureCell_MouseMove); + // + // groupBox22 + // + this.geomTableLayout.SetColumnSpan(this.groupBox22, 2); + this.groupBox22.Controls.Add(this.flowLayoutPanel2); + this.groupBox22.Dock = System.Windows.Forms.DockStyle.Fill; + this.groupBox22.Location = new System.Drawing.Point(3, 3); + this.groupBox22.Name = "groupBox22"; + this.groupBox22.Size = new System.Drawing.Size(1003, 44); + this.groupBox22.TabIndex = 17; + this.groupBox22.TabStop = false; + this.groupBox22.Text = "Shader"; + // + // flowLayoutPanel2 + // + this.flowLayoutPanel2.Controls.Add(this.gsShader); + this.flowLayoutPanel2.Controls.Add(this.gsShaderCog); + this.flowLayoutPanel2.Controls.Add(label35); + this.flowLayoutPanel2.Controls.Add(this.gsShaderEdit); + this.flowLayoutPanel2.Controls.Add(label36); + this.flowLayoutPanel2.Controls.Add(this.gsShaderSave); + this.flowLayoutPanel2.Controls.Add(label37); + this.flowLayoutPanel2.Dock = System.Windows.Forms.DockStyle.Fill; + this.flowLayoutPanel2.Location = new System.Drawing.Point(3, 16); + this.flowLayoutPanel2.Name = "flowLayoutPanel2"; + this.flowLayoutPanel2.Size = new System.Drawing.Size(997, 25); + this.flowLayoutPanel2.TabIndex = 25; + // + // gsShader + // + this.gsShader.Anchor = System.Windows.Forms.AnchorStyles.Left; + this.gsShader.AutoSize = true; + this.gsShader.BackColor = System.Drawing.SystemColors.Info; + this.gsShader.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.gsShader.Cursor = System.Windows.Forms.Cursors.Hand; + this.gsShader.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F); + this.gsShader.ForeColor = System.Drawing.SystemColors.InfoText; + this.gsShader.Location = new System.Drawing.Point(3, 3); + this.gsShader.MinimumSize = new System.Drawing.Size(300, 2); + this.gsShader.Name = "gsShader"; + this.gsShader.Size = new System.Drawing.Size(300, 15); + this.gsShader.TabIndex = 24; + this.gsShader.TextAlign = System.Drawing.ContentAlignment.MiddleLeft; + this.gsShader.Click += new System.EventHandler(this.shader_Click); + this.gsShader.MouseEnter += new System.EventHandler(this.shaderCog_MouseEnter); + this.gsShader.MouseLeave += new System.EventHandler(this.shaderCog_MouseLeave); + // + // gsShaderCog + // + this.gsShaderCog.Cursor = System.Windows.Forms.Cursors.Hand; + this.gsShaderCog.Image = global::renderdocui.Properties.Resources.action; + this.gsShaderCog.Location = new System.Drawing.Point(309, 3); + this.gsShaderCog.Margin = new System.Windows.Forms.Padding(3, 3, 0, 3); + this.gsShaderCog.Name = "gsShaderCog"; + this.gsShaderCog.Size = new System.Drawing.Size(16, 16); + this.gsShaderCog.SizeMode = System.Windows.Forms.PictureBoxSizeMode.AutoSize; + this.gsShaderCog.TabIndex = 25; + this.gsShaderCog.TabStop = false; + this.gsShaderCog.Click += new System.EventHandler(this.shader_Click); + this.gsShaderCog.MouseEnter += new System.EventHandler(this.shaderCog_MouseEnter); + this.gsShaderCog.MouseLeave += new System.EventHandler(this.shaderCog_MouseLeave); + // + // label35 + // + label35.Anchor = System.Windows.Forms.AnchorStyles.Left; + label35.AutoSize = true; + label35.Cursor = System.Windows.Forms.Cursors.Hand; + label35.Location = new System.Drawing.Point(325, 4); + label35.Margin = new System.Windows.Forms.Padding(0, 0, 6, 0); + label35.Name = "label35"; + label35.Size = new System.Drawing.Size(30, 13); + label35.TabIndex = 33; + label35.Text = "View"; + label35.Click += new System.EventHandler(this.shader_Click); + label35.MouseEnter += new System.EventHandler(this.shaderCog_MouseEnter); + label35.MouseLeave += new System.EventHandler(this.shaderCog_MouseLeave); + // + // gsShaderEdit + // + this.gsShaderEdit.Cursor = System.Windows.Forms.Cursors.Hand; + this.gsShaderEdit.Image = global::renderdocui.Properties.Resources.page_white_edit; + this.gsShaderEdit.Location = new System.Drawing.Point(364, 3); + this.gsShaderEdit.Margin = new System.Windows.Forms.Padding(3, 3, 0, 3); + this.gsShaderEdit.Name = "gsShaderEdit"; + this.gsShaderEdit.Size = new System.Drawing.Size(16, 16); + this.gsShaderEdit.SizeMode = System.Windows.Forms.PictureBoxSizeMode.AutoSize; + this.gsShaderEdit.TabIndex = 28; + this.gsShaderEdit.TabStop = false; + this.toolTip.SetToolTip(this.gsShaderEdit, "HLSL edit and replace this shader"); + this.gsShaderEdit.Click += new System.EventHandler(this.shaderedit_Click); + // + // label36 + // + label36.Anchor = System.Windows.Forms.AnchorStyles.Left; + label36.AutoSize = true; + label36.Cursor = System.Windows.Forms.Cursors.Hand; + label36.Location = new System.Drawing.Point(380, 4); + label36.Margin = new System.Windows.Forms.Padding(0, 0, 6, 0); + label36.Name = "label36"; + label36.Size = new System.Drawing.Size(25, 13); + label36.TabIndex = 31; + label36.Text = "Edit"; + this.toolTip.SetToolTip(label36, "HLSL edit and replace this shader"); + label36.Click += new System.EventHandler(this.shaderedit_Click); + // + // gsShaderSave + // + this.gsShaderSave.Cursor = System.Windows.Forms.Cursors.Hand; + this.gsShaderSave.Image = global::renderdocui.Properties.Resources.save; + this.gsShaderSave.Location = new System.Drawing.Point(414, 3); + this.gsShaderSave.Margin = new System.Windows.Forms.Padding(3, 3, 0, 3); + this.gsShaderSave.Name = "gsShaderSave"; + this.gsShaderSave.Size = new System.Drawing.Size(16, 16); + this.gsShaderSave.SizeMode = System.Windows.Forms.PictureBoxSizeMode.AutoSize; + this.gsShaderSave.TabIndex = 34; + this.gsShaderSave.TabStop = false; + this.toolTip.SetToolTip(this.gsShaderSave, "Save the bytecode blob to disk"); + this.gsShaderSave.Click += new System.EventHandler(this.shaderSave_Click); + // + // label37 + // + label37.Anchor = System.Windows.Forms.AnchorStyles.Left; + label37.AutoSize = true; + label37.Cursor = System.Windows.Forms.Cursors.Hand; + label37.Location = new System.Drawing.Point(430, 4); + label37.Margin = new System.Windows.Forms.Padding(0, 0, 6, 0); + label37.Name = "label37"; + label37.Size = new System.Drawing.Size(32, 13); + label37.TabIndex = 32; + label37.Text = "Save"; + this.toolTip.SetToolTip(label37, "Save the bytecode blob to disk"); + label37.Click += new System.EventHandler(this.shaderSave_Click); + // + // geomClassGroupBox + // + this.geomTableLayout.SetColumnSpan(this.geomClassGroupBox, 2); + this.geomClassGroupBox.Controls.Add(this.gsClasses); + this.geomClassGroupBox.Dock = System.Windows.Forms.DockStyle.Fill; + this.geomClassGroupBox.Location = new System.Drawing.Point(3, 467); + this.geomClassGroupBox.Name = "geomClassGroupBox"; + this.geomClassGroupBox.Size = new System.Drawing.Size(1003, 135); + this.geomClassGroupBox.TabIndex = 16; + this.geomClassGroupBox.TabStop = false; + this.geomClassGroupBox.Text = "Class Instances"; + // + // gsClasses + // + treeListColumn285.AutoSizeMinSize = 0; + treeListColumn285.Width = 50; + treeListColumn286.AutoSizeMinSize = 0; + treeListColumn286.Width = 200; + treeListColumn287.AutoSize = true; + treeListColumn287.AutoSizeMinSize = 50; + treeListColumn287.Width = 60; + this.gsClasses.Columns.AddRange(new TreelistView.TreeListColumn[] { + treeListColumn285, + treeListColumn286, + treeListColumn287}); + this.gsClasses.Cursor = System.Windows.Forms.Cursors.Arrow; + this.gsClasses.Dock = System.Windows.Forms.DockStyle.Fill; + this.gsClasses.Location = new System.Drawing.Point(3, 16); + this.gsClasses.Name = "gsClasses"; + this.gsClasses.RowOptions.ItemHeight = 20; + this.gsClasses.RowOptions.ShowHeader = false; + this.gsClasses.Size = new System.Drawing.Size(997, 116); + this.gsClasses.TabIndex = 4; + this.gsClasses.Text = "Class Instances"; + this.gsClasses.TreeColumn = -1; + this.gsClasses.ViewOptions.ShowLine = false; + this.gsClasses.ViewOptions.ShowPlusMinus = false; + this.gsClasses.KeyDown += new System.Windows.Forms.KeyEventHandler(this.defaultCopyPaste_KeyDown); + this.gsClasses.Leave += new System.EventHandler(this.disableSelection_Leave); + this.gsClasses.MouseClick += new System.Windows.Forms.MouseEventHandler(this.hideDisabledEmpty_MouseClick); + // + // groupBox24 + // + this.geomTableLayout.SetColumnSpan(this.groupBox24, 2); + this.groupBox24.Controls.Add(this.gsResources); + this.groupBox24.Dock = System.Windows.Forms.DockStyle.Fill; + this.groupBox24.Location = new System.Drawing.Point(3, 53); + this.groupBox24.Name = "groupBox24"; + this.groupBox24.Size = new System.Drawing.Size(1003, 132); + this.groupBox24.TabIndex = 14; + this.groupBox24.TabStop = false; + this.groupBox24.Text = "Resources"; + // + // gsResources + // + treeListColumn288.AutoSizeMinSize = 0; + treeListColumn288.Width = 120; + treeListColumn289.AutoSize = true; + treeListColumn289.AutoSizeMinSize = 150; + treeListColumn289.Width = 50; + treeListColumn290.AutoSizeMinSize = 0; + treeListColumn290.Width = 85; + treeListColumn291.AutoSizeMinSize = 0; + treeListColumn291.Width = 50; + treeListColumn292.AutoSizeMinSize = 0; + treeListColumn292.Width = 50; + treeListColumn293.AutoSizeMinSize = 0; + treeListColumn293.Width = 50; + treeListColumn294.AutoSizeMinSize = 0; + treeListColumn294.Width = 85; + treeListColumn295.AutoSizeMinSize = 0; + treeListColumn295.Width = 200; + treeListColumn296.AutoSizeMinSize = 0; + treeListColumn296.Width = 25; + this.gsResources.Columns.AddRange(new TreelistView.TreeListColumn[] { + treeListColumn288, + treeListColumn289, + treeListColumn290, + treeListColumn291, + treeListColumn292, + treeListColumn293, + treeListColumn294, + treeListColumn295, + treeListColumn296}); + this.gsResources.Cursor = System.Windows.Forms.Cursors.Arrow; + this.gsResources.Dock = System.Windows.Forms.DockStyle.Fill; + this.gsResources.GridLineColour = System.Drawing.SystemColors.ControlDark; + this.gsResources.Location = new System.Drawing.Point(3, 16); + this.gsResources.MultiSelect = false; + this.gsResources.Name = "gsResources"; + this.gsResources.RowOptions.HoverHighlight = true; + this.gsResources.RowOptions.ItemHeight = 20; + this.gsResources.RowOptions.ShowHeader = false; + this.gsResources.Size = new System.Drawing.Size(997, 113); + this.gsResources.TabIndex = 1; + this.gsResources.Text = "Outputs"; + this.gsResources.TreeColumn = 8; + this.gsResources.ViewOptions.Indent = 0; + this.gsResources.ViewOptions.ShowLine = false; + this.gsResources.ViewOptions.ShowPlusMinus = false; + this.gsResources.NodeDoubleClicked += new TreelistView.TreeListView.NodeDoubleClickedHandler(this.textureCell_CellDoubleClick); + this.gsResources.NodeClicked += new TreelistView.TreeListView.NodeClickedHandler(this.textureCell_CellDoubleClick); + this.gsResources.KeyDown += new System.Windows.Forms.KeyEventHandler(this.defaultCopyPaste_KeyDown); + this.gsResources.Leave += new System.EventHandler(this.disableSelection_Leave); + this.gsResources.MouseClick += new System.Windows.Forms.MouseEventHandler(this.hideDisabledEmpty_MouseClick); + this.gsResources.MouseLeave += new System.EventHandler(this.textureCell_MouseLeave); + this.gsResources.MouseMove += new System.Windows.Forms.MouseEventHandler(this.textureCell_MouseMove); + // + // groupBox25 + // + this.geomTableLayout.SetColumnSpan(this.groupBox25, 2); + this.groupBox25.Controls.Add(this.gsSamplers); + this.groupBox25.Dock = System.Windows.Forms.DockStyle.Fill; + this.groupBox25.Location = new System.Drawing.Point(3, 191); + this.groupBox25.Name = "groupBox25"; + this.groupBox25.Size = new System.Drawing.Size(1003, 132); + this.groupBox25.TabIndex = 13; + this.groupBox25.TabStop = false; + this.groupBox25.Text = "Samplers"; + // + // gsSamplers + // + treeListColumn297.AutoSizeMinSize = 0; + treeListColumn297.Width = 120; + treeListColumn298.AutoSizeMinSize = 100; + treeListColumn298.Width = 200; + treeListColumn299.AutoSizeMinSize = 0; + treeListColumn299.Width = 250; + treeListColumn300.AutoSizeMinSize = 0; + treeListColumn300.Width = 90; + treeListColumn301.AutoSize = true; + treeListColumn301.AutoSizeMinSize = 50; + treeListColumn301.Width = 50; + this.gsSamplers.Columns.AddRange(new TreelistView.TreeListColumn[] { + treeListColumn297, + treeListColumn298, + treeListColumn299, + treeListColumn300, + treeListColumn301}); + this.gsSamplers.Cursor = System.Windows.Forms.Cursors.Arrow; + this.gsSamplers.Dock = System.Windows.Forms.DockStyle.Fill; + this.gsSamplers.GridLineColour = System.Drawing.SystemColors.ControlDark; + this.gsSamplers.Location = new System.Drawing.Point(3, 16); + this.gsSamplers.MultiSelect = false; + this.gsSamplers.Name = "gsSamplers"; + this.gsSamplers.RowOptions.HoverHighlight = true; + this.gsSamplers.RowOptions.ItemHeight = 20; + this.gsSamplers.RowOptions.ShowHeader = false; + this.gsSamplers.Size = new System.Drawing.Size(997, 113); + this.gsSamplers.TabIndex = 12; + this.gsSamplers.Text = "Samplers"; + this.gsSamplers.TreeColumn = -1; + this.gsSamplers.ViewOptions.Indent = 0; + this.gsSamplers.ViewOptions.ShowLine = false; + this.gsSamplers.ViewOptions.ShowPlusMinus = false; + this.gsSamplers.KeyDown += new System.Windows.Forms.KeyEventHandler(this.defaultCopyPaste_KeyDown); + this.gsSamplers.Leave += new System.EventHandler(this.disableSelection_Leave); + this.gsSamplers.MouseClick += new System.Windows.Forms.MouseEventHandler(this.hideDisabledEmpty_MouseClick); + // + // geomCBufGroupBox + // + this.geomCBufGroupBox.Controls.Add(this.gsCBuffers); + this.geomCBufGroupBox.Dock = System.Windows.Forms.DockStyle.Fill; + this.geomCBufGroupBox.Location = new System.Drawing.Point(3, 329); + this.geomCBufGroupBox.Name = "geomCBufGroupBox"; + this.geomCBufGroupBox.Size = new System.Drawing.Size(498, 132); + this.geomCBufGroupBox.TabIndex = 12; + this.geomCBufGroupBox.TabStop = false; + this.geomCBufGroupBox.Text = "Constant Buffers"; + // + // gsCBuffers + // + treeListColumn302.AutoSizeMinSize = 0; + treeListColumn302.Width = 120; + treeListColumn303.AutoSize = true; + treeListColumn303.AutoSizeMinSize = 100; + treeListColumn303.Width = 50; + treeListColumn304.AutoSizeMinSize = 0; + treeListColumn304.Width = 75; + treeListColumn305.AutoSizeMinSize = 0; + treeListColumn305.Width = 250; + treeListColumn306.AutoSizeMinSize = 0; + treeListColumn306.Width = 25; + this.gsCBuffers.Columns.AddRange(new TreelistView.TreeListColumn[] { + treeListColumn302, + treeListColumn303, + treeListColumn304, + treeListColumn305, + treeListColumn306}); + this.gsCBuffers.Cursor = System.Windows.Forms.Cursors.Arrow; + this.gsCBuffers.Dock = System.Windows.Forms.DockStyle.Fill; + this.gsCBuffers.GridLineColour = System.Drawing.SystemColors.ControlDark; + this.gsCBuffers.Location = new System.Drawing.Point(3, 16); + this.gsCBuffers.MultiSelect = false; + this.gsCBuffers.Name = "gsCBuffers"; + this.gsCBuffers.RowOptions.HoverHighlight = true; + this.gsCBuffers.RowOptions.ItemHeight = 20; + this.gsCBuffers.RowOptions.ShowHeader = false; + this.gsCBuffers.Size = new System.Drawing.Size(492, 113); + this.gsCBuffers.TabIndex = 11; + this.gsCBuffers.Text = "Samplers"; + this.gsCBuffers.TreeColumn = 4; + this.gsCBuffers.ViewOptions.Indent = 0; + this.gsCBuffers.ViewOptions.ShowLine = false; + this.gsCBuffers.ViewOptions.ShowPlusMinus = false; + this.gsCBuffers.NodeDoubleClicked += new TreelistView.TreeListView.NodeDoubleClickedHandler(this.cbuffers_NodeDoubleClicked); + this.gsCBuffers.NodeClicked += new TreelistView.TreeListView.NodeClickedHandler(this.cbuffers_NodeDoubleClicked); + this.gsCBuffers.KeyDown += new System.Windows.Forms.KeyEventHandler(this.defaultCopyPaste_KeyDown); + this.gsCBuffers.Leave += new System.EventHandler(this.disableSelection_Leave); + this.gsCBuffers.MouseClick += new System.Windows.Forms.MouseEventHandler(this.hideDisabledEmpty_MouseClick); + // + // tabRS + // + this.tabRS.Controls.Add(this.panel8); + this.tabRS.Location = new System.Drawing.Point(4, 22); + this.tabRS.Name = "tabRS"; + this.tabRS.Size = new System.Drawing.Size(1009, 605); + this.tabRS.TabIndex = 5; + this.tabRS.Text = "Rasterizer"; + this.tabRS.UseVisualStyleBackColor = true; + // + // panel8 + // + this.panel8.AutoScroll = true; + this.panel8.AutoScrollMinSize = new System.Drawing.Size(500, 220); + this.panel8.Controls.Add(this.tableLayoutPanel14); + this.panel8.Dock = System.Windows.Forms.DockStyle.Fill; + this.panel8.Location = new System.Drawing.Point(0, 0); + this.panel8.Name = "panel8"; + this.panel8.Size = new System.Drawing.Size(1009, 605); + this.panel8.TabIndex = 2; + // + // tableLayoutPanel14 + // + this.tableLayoutPanel14.AutoScroll = true; + this.tableLayoutPanel14.AutoScrollMinSize = new System.Drawing.Size(500, 0); + this.tableLayoutPanel14.ColumnCount = 2; + this.tableLayoutPanel14.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 50F)); + this.tableLayoutPanel14.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 50F)); + this.tableLayoutPanel14.Controls.Add(this.groupBox31, 0, 0); + this.tableLayoutPanel14.Controls.Add(this.groupBox32, 0, 1); + this.tableLayoutPanel14.Controls.Add(groupBox42, 1, 1); + this.tableLayoutPanel14.Dock = System.Windows.Forms.DockStyle.Fill; + this.tableLayoutPanel14.Location = new System.Drawing.Point(0, 0); + this.tableLayoutPanel14.Name = "tableLayoutPanel14"; + this.tableLayoutPanel14.RowCount = 2; + this.tableLayoutPanel14.RowStyles.Add(new System.Windows.Forms.RowStyle()); + this.tableLayoutPanel14.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100F)); + this.tableLayoutPanel14.Size = new System.Drawing.Size(1009, 605); + this.tableLayoutPanel14.TabIndex = 1; + // + // groupBox31 + // + this.groupBox31.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.tableLayoutPanel14.SetColumnSpan(this.groupBox31, 2); + this.groupBox31.Controls.Add(this.tableLayoutPanel8); + this.groupBox31.Location = new System.Drawing.Point(3, 3); + this.groupBox31.MinimumSize = new System.Drawing.Size(500, 0); + this.groupBox31.Name = "groupBox31"; + this.groupBox31.Size = new System.Drawing.Size(1003, 97); + this.groupBox31.TabIndex = 0; + this.groupBox31.TabStop = false; + this.groupBox31.Text = "Rasterizer State"; + // + // tableLayoutPanel8 + // + this.tableLayoutPanel8.CellBorderStyle = System.Windows.Forms.TableLayoutPanelCellBorderStyle.Single; + this.tableLayoutPanel8.ColumnCount = 9; + this.tableLayoutPanel8.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle()); + this.tableLayoutPanel8.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle()); + this.tableLayoutPanel8.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle()); + this.tableLayoutPanel8.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle()); + this.tableLayoutPanel8.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle()); + this.tableLayoutPanel8.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle()); + this.tableLayoutPanel8.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle()); + this.tableLayoutPanel8.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle()); + this.tableLayoutPanel8.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 619F)); + this.tableLayoutPanel8.Controls.Add(this.forcedSampleCount, 7, 1); + this.tableLayoutPanel8.Controls.Add(this.label14, 6, 1); + this.tableLayoutPanel8.Controls.Add(this.frontCCW, 5, 0); + this.tableLayoutPanel8.Controls.Add(this.cullMode, 3, 0); + this.tableLayoutPanel8.Controls.Add(label1, 0, 1); + this.tableLayoutPanel8.Controls.Add(this.label2, 2, 1); + this.tableLayoutPanel8.Controls.Add(this.label5, 4, 1); + this.tableLayoutPanel8.Controls.Add(this.depthBias, 1, 1); + this.tableLayoutPanel8.Controls.Add(this.depthBiasClamp, 3, 1); + this.tableLayoutPanel8.Controls.Add(this.slopeScaledBias, 5, 1); + this.tableLayoutPanel8.Controls.Add(label15, 0, 0); + this.tableLayoutPanel8.Controls.Add(label16, 2, 0); + this.tableLayoutPanel8.Controls.Add(label17, 4, 0); + this.tableLayoutPanel8.Controls.Add(this.label18, 0, 2); + this.tableLayoutPanel8.Controls.Add(this.label19, 2, 2); + this.tableLayoutPanel8.Controls.Add(this.label20, 4, 2); + this.tableLayoutPanel8.Controls.Add(this.depthClip, 1, 2); + this.tableLayoutPanel8.Controls.Add(this.fillMode, 1, 0); + this.tableLayoutPanel8.Controls.Add(this.multisampleEnable, 5, 2); + this.tableLayoutPanel8.Controls.Add(this.scissorEnable, 3, 2); + this.tableLayoutPanel8.Controls.Add(this.lineAAEnable, 7, 2); + this.tableLayoutPanel8.Controls.Add(this.label23, 6, 2); + this.tableLayoutPanel8.Controls.Add(label25, 6, 0); + this.tableLayoutPanel8.Controls.Add(this.conservativeRaster, 7, 0); + this.tableLayoutPanel8.Dock = System.Windows.Forms.DockStyle.Fill; + this.tableLayoutPanel8.Location = new System.Drawing.Point(3, 16); + this.tableLayoutPanel8.Name = "tableLayoutPanel8"; + this.tableLayoutPanel8.RowCount = 3; + this.tableLayoutPanel8.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 33.33333F)); + this.tableLayoutPanel8.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 33.33333F)); + this.tableLayoutPanel8.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 33.33333F)); + this.tableLayoutPanel8.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 20F)); + this.tableLayoutPanel8.Size = new System.Drawing.Size(997, 78); + this.tableLayoutPanel8.TabIndex = 0; + // + // forcedSampleCount + // + this.forcedSampleCount.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Left | System.Windows.Forms.AnchorStyles.Right))); + this.forcedSampleCount.AutoSize = true; + this.forcedSampleCount.BackColor = System.Drawing.Color.Transparent; + this.forcedSampleCount.Font = new System.Drawing.Font("Tahoma", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.forcedSampleCount.Location = new System.Drawing.Point(539, 28); + this.forcedSampleCount.Name = "forcedSampleCount"; + this.forcedSampleCount.Size = new System.Drawing.Size(32, 19); + this.forcedSampleCount.TabIndex = 24; + this.forcedSampleCount.Text = "0"; + this.forcedSampleCount.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // label14 + // + this.label14.Anchor = System.Windows.Forms.AnchorStyles.Right; + this.label14.AutoSize = true; + this.label14.Location = new System.Drawing.Point(420, 31); + this.label14.Name = "label14"; + this.label14.Size = new System.Drawing.Size(112, 13); + this.label14.TabIndex = 23; + this.label14.Text = "Forced Sample Count:"; + // + // frontCCW + // + this.frontCCW.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Left | System.Windows.Forms.AnchorStyles.Right))); + this.frontCCW.Image = ((System.Drawing.Image)(resources.GetObject("frontCCW.Image"))); + this.frontCCW.Location = new System.Drawing.Point(381, 5); + this.frontCCW.Name = "frontCCW"; + this.frontCCW.Size = new System.Drawing.Size(32, 16); + this.frontCCW.SizeMode = System.Windows.Forms.PictureBoxSizeMode.CenterImage; + this.frontCCW.TabIndex = 19; + this.frontCCW.TabStop = false; + // + // cullMode + // + this.cullMode.Anchor = System.Windows.Forms.AnchorStyles.Left; + this.cullMode.AutoSize = true; + this.cullMode.Font = new System.Drawing.Font("Tahoma", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.cullMode.Location = new System.Drawing.Point(225, 3); + this.cullMode.Name = "cullMode"; + this.cullMode.Size = new System.Drawing.Size(46, 19); + this.cullMode.TabIndex = 18; + this.cullMode.Text = "Front"; + // + // label1 + // + label1.Anchor = System.Windows.Forms.AnchorStyles.Right; + label1.AutoSize = true; + label1.Location = new System.Drawing.Point(4, 31); + label1.Name = "label1"; + label1.Size = new System.Drawing.Size(62, 13); + label1.TabIndex = 0; + label1.Text = "Depth Bias:"; + // + // label2 + // + this.label2.Anchor = System.Windows.Forms.AnchorStyles.Right; + this.label2.AutoSize = true; + this.label2.Location = new System.Drawing.Point(124, 31); + this.label2.Name = "label2"; + this.label2.Size = new System.Drawing.Size(94, 13); + this.label2.TabIndex = 1; + this.label2.Text = "Depth Bias Clamp:"; + // + // label5 + // + this.label5.Anchor = System.Windows.Forms.AnchorStyles.Right; + this.label5.AutoSize = true; + this.label5.Location = new System.Drawing.Point(278, 31); + this.label5.Name = "label5"; + this.label5.Size = new System.Drawing.Size(96, 13); + this.label5.TabIndex = 2; + this.label5.Text = "Slope-Scaled Bias:"; + // + // depthBias + // + this.depthBias.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Left | System.Windows.Forms.AnchorStyles.Right))); + this.depthBias.AutoSize = true; + this.depthBias.BackColor = System.Drawing.Color.Transparent; + this.depthBias.Font = new System.Drawing.Font("Tahoma", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.depthBias.Location = new System.Drawing.Point(73, 28); + this.depthBias.Name = "depthBias"; + this.depthBias.Size = new System.Drawing.Size(44, 19); + this.depthBias.TabIndex = 3; + this.depthBias.Text = "0"; + this.depthBias.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // depthBiasClamp + // + this.depthBiasClamp.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Left | System.Windows.Forms.AnchorStyles.Right))); + this.depthBiasClamp.AutoSize = true; + this.depthBiasClamp.BackColor = System.Drawing.Color.Transparent; + this.depthBiasClamp.Font = new System.Drawing.Font("Tahoma", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.depthBiasClamp.Location = new System.Drawing.Point(225, 28); + this.depthBiasClamp.Name = "depthBiasClamp"; + this.depthBiasClamp.Size = new System.Drawing.Size(46, 19); + this.depthBiasClamp.TabIndex = 4; + this.depthBiasClamp.Text = "0.0"; + this.depthBiasClamp.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // slopeScaledBias + // + this.slopeScaledBias.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Left | System.Windows.Forms.AnchorStyles.Right))); + this.slopeScaledBias.AutoSize = true; + this.slopeScaledBias.BackColor = System.Drawing.Color.Transparent; + this.slopeScaledBias.Font = new System.Drawing.Font("Tahoma", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.slopeScaledBias.Location = new System.Drawing.Point(381, 28); + this.slopeScaledBias.Name = "slopeScaledBias"; + this.slopeScaledBias.Size = new System.Drawing.Size(32, 19); + this.slopeScaledBias.TabIndex = 5; + this.slopeScaledBias.Text = "0.0"; + this.slopeScaledBias.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // label15 + // + label15.Anchor = System.Windows.Forms.AnchorStyles.Right; + label15.AutoSize = true; + label15.Location = new System.Drawing.Point(14, 6); + label15.Name = "label15"; + label15.Size = new System.Drawing.Size(52, 13); + label15.TabIndex = 6; + label15.Text = "Fill Mode:"; + // + // label16 + // + label16.Anchor = System.Windows.Forms.AnchorStyles.Right; + label16.AutoSize = true; + label16.Location = new System.Drawing.Point(161, 6); + label16.Name = "label16"; + label16.Size = new System.Drawing.Size(57, 13); + label16.TabIndex = 7; + label16.Text = "Cull Mode:"; + // + // label17 + // + label17.Anchor = System.Windows.Forms.AnchorStyles.Right; + label17.AutoSize = true; + label17.Location = new System.Drawing.Point(312, 6); + label17.Name = "label17"; + label17.Size = new System.Drawing.Size(62, 13); + label17.TabIndex = 8; + label17.Text = "Front CCW:"; + // + // label18 + // + this.label18.Anchor = System.Windows.Forms.AnchorStyles.Right; + this.label18.AutoSize = true; + this.label18.Location = new System.Drawing.Point(7, 57); + this.label18.Name = "label18"; + this.label18.Size = new System.Drawing.Size(59, 13); + this.label18.TabIndex = 9; + this.label18.Text = "Depth Clip:"; + // + // label19 + // + this.label19.Anchor = System.Windows.Forms.AnchorStyles.Right; + this.label19.AutoSize = true; + this.label19.Location = new System.Drawing.Point(174, 57); + this.label19.Name = "label19"; + this.label19.Size = new System.Drawing.Size(44, 13); + this.label19.TabIndex = 10; + this.label19.Text = "Scissor:"; + // + // label20 + // + this.label20.Anchor = System.Windows.Forms.AnchorStyles.Right; + this.label20.AutoSize = true; + this.label20.Location = new System.Drawing.Point(309, 57); + this.label20.Name = "label20"; + this.label20.Size = new System.Drawing.Size(65, 13); + this.label20.TabIndex = 11; + this.label20.Text = "Multisample:"; + // + // depthClip + // + this.depthClip.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Left | System.Windows.Forms.AnchorStyles.Right))); + this.depthClip.Image = ((System.Drawing.Image)(resources.GetObject("depthClip.Image"))); + this.depthClip.Location = new System.Drawing.Point(73, 56); + this.depthClip.Name = "depthClip"; + this.depthClip.Size = new System.Drawing.Size(44, 16); + this.depthClip.SizeMode = System.Windows.Forms.PictureBoxSizeMode.CenterImage; + this.depthClip.TabIndex = 13; + this.depthClip.TabStop = false; + // + // fillMode + // + this.fillMode.Anchor = System.Windows.Forms.AnchorStyles.Left; + this.fillMode.AutoSize = true; + this.fillMode.Font = new System.Drawing.Font("Tahoma", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.fillMode.Location = new System.Drawing.Point(73, 3); + this.fillMode.Name = "fillMode"; + this.fillMode.Size = new System.Drawing.Size(44, 19); + this.fillMode.TabIndex = 17; + this.fillMode.Text = "Solid"; + // + // multisampleEnable + // + this.multisampleEnable.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Left | System.Windows.Forms.AnchorStyles.Right))); + this.multisampleEnable.Image = ((System.Drawing.Image)(resources.GetObject("multisampleEnable.Image"))); + this.multisampleEnable.Location = new System.Drawing.Point(381, 56); + this.multisampleEnable.Name = "multisampleEnable"; + this.multisampleEnable.Size = new System.Drawing.Size(32, 16); + this.multisampleEnable.SizeMode = System.Windows.Forms.PictureBoxSizeMode.CenterImage; + this.multisampleEnable.TabIndex = 21; + this.multisampleEnable.TabStop = false; + // + // scissorEnable + // + this.scissorEnable.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Left | System.Windows.Forms.AnchorStyles.Right))); + this.scissorEnable.Image = ((System.Drawing.Image)(resources.GetObject("scissorEnable.Image"))); + this.scissorEnable.Location = new System.Drawing.Point(225, 56); + this.scissorEnable.Name = "scissorEnable"; + this.scissorEnable.Size = new System.Drawing.Size(46, 16); + this.scissorEnable.SizeMode = System.Windows.Forms.PictureBoxSizeMode.CenterImage; + this.scissorEnable.TabIndex = 22; + this.scissorEnable.TabStop = false; + // + // lineAAEnable + // + this.lineAAEnable.Anchor = System.Windows.Forms.AnchorStyles.Left; + this.lineAAEnable.Image = ((System.Drawing.Image)(resources.GetObject("lineAAEnable.Image"))); + this.lineAAEnable.Location = new System.Drawing.Point(539, 56); + this.lineAAEnable.Name = "lineAAEnable"; + this.lineAAEnable.Size = new System.Drawing.Size(16, 16); + this.lineAAEnable.SizeMode = System.Windows.Forms.PictureBoxSizeMode.AutoSize; + this.lineAAEnable.TabIndex = 20; + this.lineAAEnable.TabStop = false; + // + // label23 + // + this.label23.Anchor = System.Windows.Forms.AnchorStyles.Right; + this.label23.AutoSize = true; + this.label23.Location = new System.Drawing.Point(485, 57); + this.label23.Name = "label23"; + this.label23.Size = new System.Drawing.Size(47, 13); + this.label23.TabIndex = 12; + this.label23.Text = "Line AA:"; + // + // label25 + // + label25.Anchor = System.Windows.Forms.AnchorStyles.Right; + label25.AutoSize = true; + label25.Location = new System.Drawing.Point(426, 6); + label25.Name = "label25"; + label25.Size = new System.Drawing.Size(106, 13); + label25.TabIndex = 25; + label25.Text = "Conservative Raster:"; + // + // conservativeRaster + // + this.conservativeRaster.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Left | System.Windows.Forms.AnchorStyles.Right))); + this.conservativeRaster.Image = ((System.Drawing.Image)(resources.GetObject("conservativeRaster.Image"))); + this.conservativeRaster.Location = new System.Drawing.Point(539, 5); + this.conservativeRaster.Name = "conservativeRaster"; + this.conservativeRaster.Size = new System.Drawing.Size(32, 16); + this.conservativeRaster.SizeMode = System.Windows.Forms.PictureBoxSizeMode.CenterImage; + this.conservativeRaster.TabIndex = 26; + this.conservativeRaster.TabStop = false; + // + // groupBox32 + // + this.groupBox32.Controls.Add(this.viewports); + this.groupBox32.Dock = System.Windows.Forms.DockStyle.Fill; + this.groupBox32.Location = new System.Drawing.Point(3, 106); + this.groupBox32.Name = "groupBox32"; + this.groupBox32.Size = new System.Drawing.Size(498, 496); + this.groupBox32.TabIndex = 1; + this.groupBox32.TabStop = false; + this.groupBox32.Text = "Viewports"; + // + // viewports + // + treeListColumn307.AutoSizeMinSize = 0; + treeListColumn307.Width = 50; + treeListColumn308.AutoSizeMinSize = 0; + treeListColumn308.Width = 50; + treeListColumn309.AutoSizeMinSize = 0; + treeListColumn309.Width = 50; + treeListColumn310.AutoSizeMinSize = 0; + treeListColumn310.Width = 50; + treeListColumn311.AutoSizeMinSize = 0; + treeListColumn311.Width = 50; + treeListColumn312.AutoSizeMinSize = 0; + treeListColumn312.Width = 70; + treeListColumn313.AutoSize = true; + treeListColumn313.AutoSizeMinSize = 60; + treeListColumn313.Width = 60; + this.viewports.Columns.AddRange(new TreelistView.TreeListColumn[] { + treeListColumn307, + treeListColumn308, + treeListColumn309, + treeListColumn310, + treeListColumn311, + treeListColumn312, + treeListColumn313}); + this.viewports.Cursor = System.Windows.Forms.Cursors.Arrow; + this.viewports.Dock = System.Windows.Forms.DockStyle.Fill; + this.viewports.GridLineColour = System.Drawing.SystemColors.ControlDark; + this.viewports.Location = new System.Drawing.Point(3, 16); + this.viewports.MultiSelect = false; + this.viewports.Name = "viewports"; + this.viewports.RowOptions.ItemHeight = 20; + this.viewports.RowOptions.ShowHeader = false; + this.viewports.Size = new System.Drawing.Size(492, 477); + this.viewports.TabIndex = 0; + this.viewports.Text = "Viewports"; + this.viewports.TreeColumn = -1; + this.viewports.ViewOptions.ShowPlusMinus = false; + this.viewports.KeyDown += new System.Windows.Forms.KeyEventHandler(this.defaultCopyPaste_KeyDown); + this.viewports.Leave += new System.EventHandler(this.disableSelection_Leave); + this.viewports.MouseClick += new System.Windows.Forms.MouseEventHandler(this.hideDisabledEmpty_MouseClick); + // + // groupBox42 + // + groupBox42.Controls.Add(this.scissors); + groupBox42.Dock = System.Windows.Forms.DockStyle.Fill; + groupBox42.Location = new System.Drawing.Point(507, 106); + groupBox42.Name = "groupBox42"; + groupBox42.Size = new System.Drawing.Size(499, 496); + groupBox42.TabIndex = 2; + groupBox42.TabStop = false; + groupBox42.Text = "Scissor Regions"; + // + // scissors + // + treeListColumn314.AutoSizeMinSize = 0; + treeListColumn314.Width = 50; + treeListColumn315.AutoSizeMinSize = 0; + treeListColumn315.Width = 50; + treeListColumn316.AutoSizeMinSize = 0; + treeListColumn316.Width = 50; + treeListColumn317.AutoSizeMinSize = 0; + treeListColumn317.Width = 50; + treeListColumn318.AutoSize = true; + treeListColumn318.AutoSizeMinSize = 50; + treeListColumn318.Width = 50; + this.scissors.Columns.AddRange(new TreelistView.TreeListColumn[] { + treeListColumn314, + treeListColumn315, + treeListColumn316, + treeListColumn317, + treeListColumn318}); + this.scissors.Cursor = System.Windows.Forms.Cursors.Arrow; + this.scissors.Dock = System.Windows.Forms.DockStyle.Fill; + this.scissors.GridLineColour = System.Drawing.SystemColors.ControlDark; + this.scissors.Location = new System.Drawing.Point(3, 16); + this.scissors.MultiSelect = false; + this.scissors.Name = "scissors"; + this.scissors.RowOptions.ItemHeight = 20; + this.scissors.RowOptions.ShowHeader = false; + this.scissors.Size = new System.Drawing.Size(493, 477); + this.scissors.TabIndex = 1; + this.scissors.Text = "Scissor Regions"; + this.scissors.TreeColumn = -1; + this.scissors.ViewOptions.ShowPlusMinus = false; + this.scissors.KeyDown += new System.Windows.Forms.KeyEventHandler(this.defaultCopyPaste_KeyDown); + this.scissors.Leave += new System.EventHandler(this.disableSelection_Leave); + this.scissors.MouseClick += new System.Windows.Forms.MouseEventHandler(this.hideDisabledEmpty_MouseClick); + // + // tabPS + // + this.tabPS.Controls.Add(this.panel6); + this.tabPS.Location = new System.Drawing.Point(4, 22); + this.tabPS.Name = "tabPS"; + this.tabPS.Size = new System.Drawing.Size(1009, 605); + this.tabPS.TabIndex = 6; + this.tabPS.Text = "Pixel Shader"; + this.tabPS.UseVisualStyleBackColor = true; + // + // panel6 + // + this.panel6.AutoScroll = true; + this.panel6.AutoScrollMinSize = new System.Drawing.Size(0, 500); + this.panel6.Controls.Add(this.pixelTableLayout); + this.panel6.Dock = System.Windows.Forms.DockStyle.Fill; + this.panel6.Location = new System.Drawing.Point(0, 0); + this.panel6.Name = "panel6"; + this.panel6.Size = new System.Drawing.Size(1009, 605); + this.panel6.TabIndex = 3; + // + // pixelTableLayout + // + this.pixelTableLayout.ColumnCount = 2; + this.pixelTableLayout.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 50F)); + this.pixelTableLayout.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 50F)); + this.pixelTableLayout.Controls.Add(this.groupBox13, 0, 0); + this.pixelTableLayout.Controls.Add(this.pixelClassGroupBox, 1, 3); + this.pixelTableLayout.Controls.Add(this.groupBox28, 0, 1); + this.pixelTableLayout.Controls.Add(this.groupBox29, 0, 2); + this.pixelTableLayout.Controls.Add(this.pixelCBufGroupBox, 0, 3); + this.pixelTableLayout.Dock = System.Windows.Forms.DockStyle.Fill; + this.pixelTableLayout.Location = new System.Drawing.Point(0, 0); + this.pixelTableLayout.Name = "pixelTableLayout"; + this.pixelTableLayout.RowCount = 4; + this.pixelTableLayout.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 50F)); + this.pixelTableLayout.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 25F)); + this.pixelTableLayout.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 25F)); + this.pixelTableLayout.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 25F)); + this.pixelTableLayout.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 25F)); + this.pixelTableLayout.Size = new System.Drawing.Size(1009, 605); + this.pixelTableLayout.TabIndex = 1; + // + // groupBox13 + // + this.pixelTableLayout.SetColumnSpan(this.groupBox13, 2); + this.groupBox13.Controls.Add(this.flowLayoutPanel1); + this.groupBox13.Dock = System.Windows.Forms.DockStyle.Fill; + this.groupBox13.Location = new System.Drawing.Point(3, 3); + this.groupBox13.Name = "groupBox13"; + this.groupBox13.Size = new System.Drawing.Size(1003, 44); + this.groupBox13.TabIndex = 17; + this.groupBox13.TabStop = false; + this.groupBox13.Text = "Shader"; + // + // flowLayoutPanel1 + // + this.flowLayoutPanel1.Controls.Add(this.psShader); + this.flowLayoutPanel1.Controls.Add(this.psShaderCog); + this.flowLayoutPanel1.Controls.Add(label38); + this.flowLayoutPanel1.Controls.Add(this.psShaderEdit); + this.flowLayoutPanel1.Controls.Add(label39); + this.flowLayoutPanel1.Controls.Add(this.psShaderSave); + this.flowLayoutPanel1.Controls.Add(label40); + this.flowLayoutPanel1.Dock = System.Windows.Forms.DockStyle.Fill; + this.flowLayoutPanel1.Location = new System.Drawing.Point(3, 16); + this.flowLayoutPanel1.Name = "flowLayoutPanel1"; + this.flowLayoutPanel1.Size = new System.Drawing.Size(997, 25); + this.flowLayoutPanel1.TabIndex = 25; + // + // psShader + // + this.psShader.Anchor = System.Windows.Forms.AnchorStyles.Left; + this.psShader.AutoSize = true; + this.psShader.BackColor = System.Drawing.SystemColors.Info; + this.psShader.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.psShader.Cursor = System.Windows.Forms.Cursors.Hand; + this.psShader.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F); + this.psShader.ForeColor = System.Drawing.SystemColors.InfoText; + this.psShader.Location = new System.Drawing.Point(3, 3); + this.psShader.MinimumSize = new System.Drawing.Size(300, 2); + this.psShader.Name = "psShader"; + this.psShader.Size = new System.Drawing.Size(300, 15); + this.psShader.TabIndex = 24; + this.psShader.TextAlign = System.Drawing.ContentAlignment.MiddleLeft; + this.psShader.Click += new System.EventHandler(this.shader_Click); + this.psShader.MouseEnter += new System.EventHandler(this.shaderCog_MouseEnter); + this.psShader.MouseLeave += new System.EventHandler(this.shaderCog_MouseLeave); + // + // psShaderCog + // + this.psShaderCog.Cursor = System.Windows.Forms.Cursors.Hand; + this.psShaderCog.Image = global::renderdocui.Properties.Resources.action; + this.psShaderCog.Location = new System.Drawing.Point(309, 3); + this.psShaderCog.Margin = new System.Windows.Forms.Padding(3, 3, 0, 3); + this.psShaderCog.Name = "psShaderCog"; + this.psShaderCog.Size = new System.Drawing.Size(16, 16); + this.psShaderCog.SizeMode = System.Windows.Forms.PictureBoxSizeMode.AutoSize; + this.psShaderCog.TabIndex = 25; + this.psShaderCog.TabStop = false; + this.psShaderCog.Click += new System.EventHandler(this.shader_Click); + this.psShaderCog.MouseEnter += new System.EventHandler(this.shaderCog_MouseEnter); + this.psShaderCog.MouseLeave += new System.EventHandler(this.shaderCog_MouseLeave); + // + // label38 + // + label38.Anchor = System.Windows.Forms.AnchorStyles.Left; + label38.AutoSize = true; + label38.Cursor = System.Windows.Forms.Cursors.Hand; + label38.Location = new System.Drawing.Point(325, 4); + label38.Margin = new System.Windows.Forms.Padding(0, 0, 6, 0); + label38.Name = "label38"; + label38.Size = new System.Drawing.Size(30, 13); + label38.TabIndex = 33; + label38.Text = "View"; + label38.Click += new System.EventHandler(this.shader_Click); + label38.MouseEnter += new System.EventHandler(this.shaderCog_MouseEnter); + label38.MouseLeave += new System.EventHandler(this.shaderCog_MouseLeave); + // + // psShaderEdit + // + this.psShaderEdit.Cursor = System.Windows.Forms.Cursors.Hand; + this.psShaderEdit.Image = global::renderdocui.Properties.Resources.page_white_edit; + this.psShaderEdit.Location = new System.Drawing.Point(364, 3); + this.psShaderEdit.Margin = new System.Windows.Forms.Padding(3, 3, 0, 3); + this.psShaderEdit.Name = "psShaderEdit"; + this.psShaderEdit.Size = new System.Drawing.Size(16, 16); + this.psShaderEdit.SizeMode = System.Windows.Forms.PictureBoxSizeMode.AutoSize; + this.psShaderEdit.TabIndex = 29; + this.psShaderEdit.TabStop = false; + this.toolTip.SetToolTip(this.psShaderEdit, "HLSL edit and replace this shader"); + this.psShaderEdit.Click += new System.EventHandler(this.shaderedit_Click); + // + // label39 + // + label39.Anchor = System.Windows.Forms.AnchorStyles.Left; + label39.AutoSize = true; + label39.Cursor = System.Windows.Forms.Cursors.Hand; + label39.Location = new System.Drawing.Point(380, 4); + label39.Margin = new System.Windows.Forms.Padding(0, 0, 6, 0); + label39.Name = "label39"; + label39.Size = new System.Drawing.Size(25, 13); + label39.TabIndex = 31; + label39.Text = "Edit"; + this.toolTip.SetToolTip(label39, "HLSL edit and replace this shader"); + label39.Click += new System.EventHandler(this.shaderedit_Click); + // + // psShaderSave + // + this.psShaderSave.Cursor = System.Windows.Forms.Cursors.Hand; + this.psShaderSave.Image = global::renderdocui.Properties.Resources.save; + this.psShaderSave.Location = new System.Drawing.Point(414, 3); + this.psShaderSave.Margin = new System.Windows.Forms.Padding(3, 3, 0, 3); + this.psShaderSave.Name = "psShaderSave"; + this.psShaderSave.Size = new System.Drawing.Size(16, 16); + this.psShaderSave.SizeMode = System.Windows.Forms.PictureBoxSizeMode.AutoSize; + this.psShaderSave.TabIndex = 34; + this.psShaderSave.TabStop = false; + this.toolTip.SetToolTip(this.psShaderSave, "Save the bytecode blob to disk"); + this.psShaderSave.Click += new System.EventHandler(this.shaderSave_Click); + // + // label40 + // + label40.Anchor = System.Windows.Forms.AnchorStyles.Left; + label40.AutoSize = true; + label40.Cursor = System.Windows.Forms.Cursors.Hand; + label40.Location = new System.Drawing.Point(430, 4); + label40.Margin = new System.Windows.Forms.Padding(0, 0, 6, 0); + label40.Name = "label40"; + label40.Size = new System.Drawing.Size(32, 13); + label40.TabIndex = 32; + label40.Text = "Save"; + this.toolTip.SetToolTip(label40, "Save the bytecode blob to disk"); + label40.Click += new System.EventHandler(this.shaderSave_Click); + // + // pixelClassGroupBox + // + this.pixelTableLayout.SetColumnSpan(this.pixelClassGroupBox, 2); + this.pixelClassGroupBox.Controls.Add(this.psClasses); + this.pixelClassGroupBox.Dock = System.Windows.Forms.DockStyle.Fill; + this.pixelClassGroupBox.Location = new System.Drawing.Point(3, 467); + this.pixelClassGroupBox.Name = "pixelClassGroupBox"; + this.pixelClassGroupBox.Size = new System.Drawing.Size(1003, 135); + this.pixelClassGroupBox.TabIndex = 16; + this.pixelClassGroupBox.TabStop = false; + this.pixelClassGroupBox.Text = "Class Instances"; + // + // psClasses + // + treeListColumn319.AutoSizeMinSize = 0; + treeListColumn319.Width = 50; + treeListColumn320.AutoSizeMinSize = 0; + treeListColumn320.Width = 200; + treeListColumn321.AutoSize = true; + treeListColumn321.AutoSizeMinSize = 50; + treeListColumn321.Width = 60; + this.psClasses.Columns.AddRange(new TreelistView.TreeListColumn[] { + treeListColumn319, + treeListColumn320, + treeListColumn321}); + this.psClasses.Cursor = System.Windows.Forms.Cursors.Arrow; + this.psClasses.Dock = System.Windows.Forms.DockStyle.Fill; + this.psClasses.Location = new System.Drawing.Point(3, 16); + this.psClasses.Name = "psClasses"; + this.psClasses.RowOptions.ItemHeight = 20; + this.psClasses.RowOptions.ShowHeader = false; + this.psClasses.Size = new System.Drawing.Size(997, 116); + this.psClasses.TabIndex = 4; + this.psClasses.Text = "Class Instances"; + this.psClasses.TreeColumn = -1; + this.psClasses.ViewOptions.ShowLine = false; + this.psClasses.ViewOptions.ShowPlusMinus = false; + this.psClasses.KeyDown += new System.Windows.Forms.KeyEventHandler(this.defaultCopyPaste_KeyDown); + this.psClasses.Leave += new System.EventHandler(this.disableSelection_Leave); + this.psClasses.MouseClick += new System.Windows.Forms.MouseEventHandler(this.hideDisabledEmpty_MouseClick); + // + // groupBox28 + // + this.pixelTableLayout.SetColumnSpan(this.groupBox28, 2); + this.groupBox28.Controls.Add(this.psResources); + this.groupBox28.Dock = System.Windows.Forms.DockStyle.Fill; + this.groupBox28.Location = new System.Drawing.Point(3, 53); + this.groupBox28.Name = "groupBox28"; + this.groupBox28.Size = new System.Drawing.Size(1003, 132); + this.groupBox28.TabIndex = 14; + this.groupBox28.TabStop = false; + this.groupBox28.Text = "Resources"; + // + // psResources + // + treeListColumn322.AutoSizeMinSize = 0; + treeListColumn322.Width = 120; + treeListColumn323.AutoSize = true; + treeListColumn323.AutoSizeMinSize = 150; + treeListColumn323.Width = 50; + treeListColumn324.AutoSizeMinSize = 0; + treeListColumn324.Width = 85; + treeListColumn325.AutoSizeMinSize = 0; + treeListColumn325.Width = 50; + treeListColumn326.AutoSizeMinSize = 0; + treeListColumn326.Width = 50; + treeListColumn327.AutoSizeMinSize = 0; + treeListColumn327.Width = 50; + treeListColumn328.AutoSizeMinSize = 0; + treeListColumn328.Width = 85; + treeListColumn329.AutoSizeMinSize = 0; + treeListColumn329.Width = 200; + treeListColumn330.AutoSizeMinSize = 0; + treeListColumn330.Width = 25; + this.psResources.Columns.AddRange(new TreelistView.TreeListColumn[] { + treeListColumn322, + treeListColumn323, + treeListColumn324, + treeListColumn325, + treeListColumn326, + treeListColumn327, + treeListColumn328, + treeListColumn329, + treeListColumn330}); + this.psResources.Cursor = System.Windows.Forms.Cursors.Arrow; + this.psResources.Dock = System.Windows.Forms.DockStyle.Fill; + this.psResources.GridLineColour = System.Drawing.SystemColors.ControlDark; + this.psResources.Location = new System.Drawing.Point(3, 16); + this.psResources.MultiSelect = false; + this.psResources.Name = "psResources"; + this.psResources.RowOptions.HoverHighlight = true; + this.psResources.RowOptions.ItemHeight = 20; + this.psResources.RowOptions.ShowHeader = false; + this.psResources.Size = new System.Drawing.Size(997, 113); + this.psResources.TabIndex = 1; + this.psResources.Text = "Outputs"; + this.psResources.TreeColumn = 8; + this.psResources.ViewOptions.Indent = 0; + this.psResources.ViewOptions.ShowLine = false; + this.psResources.ViewOptions.ShowPlusMinus = false; + this.psResources.NodeDoubleClicked += new TreelistView.TreeListView.NodeDoubleClickedHandler(this.textureCell_CellDoubleClick); + this.psResources.NodeClicked += new TreelistView.TreeListView.NodeClickedHandler(this.textureCell_CellDoubleClick); + this.psResources.KeyDown += new System.Windows.Forms.KeyEventHandler(this.defaultCopyPaste_KeyDown); + this.psResources.Leave += new System.EventHandler(this.disableSelection_Leave); + this.psResources.MouseClick += new System.Windows.Forms.MouseEventHandler(this.hideDisabledEmpty_MouseClick); + this.psResources.MouseLeave += new System.EventHandler(this.textureCell_MouseLeave); + this.psResources.MouseMove += new System.Windows.Forms.MouseEventHandler(this.textureCell_MouseMove); + // + // groupBox29 + // + this.pixelTableLayout.SetColumnSpan(this.groupBox29, 2); + this.groupBox29.Controls.Add(this.psSamplers); + this.groupBox29.Dock = System.Windows.Forms.DockStyle.Fill; + this.groupBox29.Location = new System.Drawing.Point(3, 191); + this.groupBox29.Name = "groupBox29"; + this.groupBox29.Size = new System.Drawing.Size(1003, 132); + this.groupBox29.TabIndex = 13; + this.groupBox29.TabStop = false; + this.groupBox29.Text = "Samplers"; + // + // psSamplers + // + treeListColumn331.AutoSizeMinSize = 0; + treeListColumn331.Width = 120; + treeListColumn332.AutoSizeMinSize = 100; + treeListColumn332.Width = 200; + treeListColumn333.AutoSizeMinSize = 0; + treeListColumn333.Width = 250; + treeListColumn334.AutoSizeMinSize = 0; + treeListColumn334.Width = 90; + treeListColumn335.AutoSize = true; + treeListColumn335.AutoSizeMinSize = 50; + treeListColumn335.Width = 50; + this.psSamplers.Columns.AddRange(new TreelistView.TreeListColumn[] { + treeListColumn331, + treeListColumn332, + treeListColumn333, + treeListColumn334, + treeListColumn335}); + this.psSamplers.Cursor = System.Windows.Forms.Cursors.Arrow; + this.psSamplers.Dock = System.Windows.Forms.DockStyle.Fill; + this.psSamplers.GridLineColour = System.Drawing.SystemColors.ControlDark; + this.psSamplers.Location = new System.Drawing.Point(3, 16); + this.psSamplers.MultiSelect = false; + this.psSamplers.Name = "psSamplers"; + this.psSamplers.RowOptions.HoverHighlight = true; + this.psSamplers.RowOptions.ItemHeight = 20; + this.psSamplers.RowOptions.ShowHeader = false; + this.psSamplers.Size = new System.Drawing.Size(997, 113); + this.psSamplers.TabIndex = 12; + this.psSamplers.Text = "Samplers"; + this.psSamplers.TreeColumn = -1; + this.psSamplers.ViewOptions.Indent = 0; + this.psSamplers.ViewOptions.ShowLine = false; + this.psSamplers.ViewOptions.ShowPlusMinus = false; + this.psSamplers.KeyDown += new System.Windows.Forms.KeyEventHandler(this.defaultCopyPaste_KeyDown); + this.psSamplers.Leave += new System.EventHandler(this.disableSelection_Leave); + this.psSamplers.MouseClick += new System.Windows.Forms.MouseEventHandler(this.hideDisabledEmpty_MouseClick); + // + // pixelCBufGroupBox + // + this.pixelTableLayout.SetColumnSpan(this.pixelCBufGroupBox, 2); + this.pixelCBufGroupBox.Controls.Add(this.psCBuffers); + this.pixelCBufGroupBox.Dock = System.Windows.Forms.DockStyle.Fill; + this.pixelCBufGroupBox.Location = new System.Drawing.Point(3, 329); + this.pixelCBufGroupBox.Name = "pixelCBufGroupBox"; + this.pixelCBufGroupBox.Size = new System.Drawing.Size(1003, 132); + this.pixelCBufGroupBox.TabIndex = 12; + this.pixelCBufGroupBox.TabStop = false; + this.pixelCBufGroupBox.Text = "Constant Buffers"; + // + // psCBuffers + // + treeListColumn336.AutoSizeMinSize = 0; + treeListColumn336.Width = 120; + treeListColumn337.AutoSize = true; + treeListColumn337.AutoSizeMinSize = 100; + treeListColumn337.Width = 50; + treeListColumn338.AutoSizeMinSize = 0; + treeListColumn338.Width = 85; + treeListColumn339.AutoSizeMinSize = 0; + treeListColumn339.Width = 250; + treeListColumn340.AutoSizeMinSize = 0; + treeListColumn340.Width = 25; + this.psCBuffers.Columns.AddRange(new TreelistView.TreeListColumn[] { + treeListColumn336, + treeListColumn337, + treeListColumn338, + treeListColumn339, + treeListColumn340}); + this.psCBuffers.Cursor = System.Windows.Forms.Cursors.Arrow; + this.psCBuffers.Dock = System.Windows.Forms.DockStyle.Fill; + this.psCBuffers.GridLineColour = System.Drawing.SystemColors.ControlDark; + this.psCBuffers.Location = new System.Drawing.Point(3, 16); + this.psCBuffers.MultiSelect = false; + this.psCBuffers.Name = "psCBuffers"; + this.psCBuffers.RowOptions.HoverHighlight = true; + this.psCBuffers.RowOptions.ItemHeight = 20; + this.psCBuffers.RowOptions.ShowHeader = false; + this.psCBuffers.Size = new System.Drawing.Size(997, 113); + this.psCBuffers.TabIndex = 11; + this.psCBuffers.Text = "Constant Buffers"; + this.psCBuffers.TreeColumn = 4; + this.psCBuffers.ViewOptions.Indent = 0; + this.psCBuffers.ViewOptions.ShowLine = false; + this.psCBuffers.ViewOptions.ShowPlusMinus = false; + this.psCBuffers.NodeDoubleClicked += new TreelistView.TreeListView.NodeDoubleClickedHandler(this.cbuffers_NodeDoubleClicked); + this.psCBuffers.NodeClicked += new TreelistView.TreeListView.NodeClickedHandler(this.cbuffers_NodeDoubleClicked); + this.psCBuffers.KeyDown += new System.Windows.Forms.KeyEventHandler(this.defaultCopyPaste_KeyDown); + this.psCBuffers.Leave += new System.EventHandler(this.disableSelection_Leave); + this.psCBuffers.MouseClick += new System.Windows.Forms.MouseEventHandler(this.hideDisabledEmpty_MouseClick); + // + // tabOM + // + this.tabOM.Controls.Add(this.panel9); + this.tabOM.Location = new System.Drawing.Point(4, 22); + this.tabOM.Name = "tabOM"; + this.tabOM.Size = new System.Drawing.Size(1009, 605); + this.tabOM.TabIndex = 7; + this.tabOM.Text = "Output Merger"; + this.tabOM.UseVisualStyleBackColor = true; + // + // panel9 + // + this.panel9.AutoScroll = true; + this.panel9.AutoScrollMinSize = new System.Drawing.Size(930, 320); + this.panel9.Controls.Add(this.tableLayoutPanel9); + this.panel9.Dock = System.Windows.Forms.DockStyle.Fill; + this.panel9.Location = new System.Drawing.Point(0, 0); + this.panel9.Name = "panel9"; + this.panel9.Size = new System.Drawing.Size(1009, 605); + this.panel9.TabIndex = 1; + // + // tableLayoutPanel9 + // + this.tableLayoutPanel9.AutoScroll = true; + this.tableLayoutPanel9.ColumnCount = 1; + this.tableLayoutPanel9.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 100F)); + this.tableLayoutPanel9.Controls.Add(this.groupBox33, 0, 0); + this.tableLayoutPanel9.Controls.Add(this.groupBox37, 0, 1); + this.tableLayoutPanel9.Controls.Add(this.tableLayoutPanel10, 0, 2); + this.tableLayoutPanel9.Dock = System.Windows.Forms.DockStyle.Fill; + this.tableLayoutPanel9.Location = new System.Drawing.Point(0, 0); + this.tableLayoutPanel9.Name = "tableLayoutPanel9"; + this.tableLayoutPanel9.RowCount = 3; + this.tableLayoutPanel9.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 60F)); + this.tableLayoutPanel9.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 40F)); + this.tableLayoutPanel9.RowStyles.Add(new System.Windows.Forms.RowStyle()); + this.tableLayoutPanel9.Size = new System.Drawing.Size(1009, 605); + this.tableLayoutPanel9.TabIndex = 0; + // + // groupBox33 + // + this.groupBox33.Controls.Add(this.targetOutputs); + this.groupBox33.Dock = System.Windows.Forms.DockStyle.Fill; + this.groupBox33.Location = new System.Drawing.Point(3, 3); + this.groupBox33.Name = "groupBox33"; + this.groupBox33.Size = new System.Drawing.Size(1003, 270); + this.groupBox33.TabIndex = 15; + this.groupBox33.TabStop = false; + this.groupBox33.Text = "Render Targets && UAVs"; + // + // targetOutputs + // + treeListColumn341.AutoSizeMinSize = 0; + treeListColumn341.Width = 50; + treeListColumn342.AutoSize = true; + treeListColumn342.AutoSizeMinSize = 150; + treeListColumn342.Width = 50; + treeListColumn343.AutoSizeMinSize = 0; + treeListColumn343.Width = 75; + treeListColumn344.AutoSizeMinSize = 0; + treeListColumn344.Width = 50; + treeListColumn345.AutoSizeMinSize = 0; + treeListColumn345.Width = 50; + treeListColumn346.AutoSizeMinSize = 0; + treeListColumn346.Width = 50; + treeListColumn347.AutoSizeMinSize = 0; + treeListColumn347.Width = 85; + treeListColumn348.AutoSizeMinSize = 0; + treeListColumn348.Width = 200; + treeListColumn349.AutoSizeMinSize = 0; + treeListColumn349.Width = 25; + this.targetOutputs.Columns.AddRange(new TreelistView.TreeListColumn[] { + treeListColumn341, + treeListColumn342, + treeListColumn343, + treeListColumn344, + treeListColumn345, + treeListColumn346, + treeListColumn347, + treeListColumn348, + treeListColumn349}); + this.targetOutputs.Cursor = System.Windows.Forms.Cursors.Arrow; + this.targetOutputs.Dock = System.Windows.Forms.DockStyle.Fill; + this.targetOutputs.GridLineColour = System.Drawing.SystemColors.ControlDark; + this.targetOutputs.Location = new System.Drawing.Point(3, 16); + this.targetOutputs.MultiSelect = false; + this.targetOutputs.Name = "targetOutputs"; + this.targetOutputs.RowOptions.HoverHighlight = true; + this.targetOutputs.RowOptions.ItemHeight = 20; + this.targetOutputs.RowOptions.ShowHeader = false; + this.targetOutputs.Size = new System.Drawing.Size(997, 251); + this.targetOutputs.TabIndex = 0; + this.targetOutputs.Text = "Outputs"; + this.targetOutputs.TreeColumn = 8; + this.targetOutputs.ViewOptions.Indent = 0; + this.targetOutputs.ViewOptions.ShowLine = false; + this.targetOutputs.ViewOptions.ShowPlusMinus = false; + this.targetOutputs.NodeDoubleClicked += new TreelistView.TreeListView.NodeDoubleClickedHandler(this.textureCell_CellDoubleClick); + this.targetOutputs.NodeClicked += new TreelistView.TreeListView.NodeClickedHandler(this.textureCell_CellDoubleClick); + this.targetOutputs.KeyDown += new System.Windows.Forms.KeyEventHandler(this.defaultCopyPaste_KeyDown); + this.targetOutputs.Leave += new System.EventHandler(this.disableSelection_Leave); + this.targetOutputs.MouseClick += new System.Windows.Forms.MouseEventHandler(this.hideDisabledEmpty_MouseClick); + this.targetOutputs.MouseLeave += new System.EventHandler(this.textureCell_MouseLeave); + this.targetOutputs.MouseMove += new System.Windows.Forms.MouseEventHandler(this.textureCell_MouseMove); + // + // groupBox37 + // + this.groupBox37.Controls.Add(this.blendOperations); + this.groupBox37.Dock = System.Windows.Forms.DockStyle.Fill; + this.groupBox37.Location = new System.Drawing.Point(3, 279); + this.groupBox37.Name = "groupBox37"; + this.groupBox37.Size = new System.Drawing.Size(1003, 178); + this.groupBox37.TabIndex = 16; + this.groupBox37.TabStop = false; + this.groupBox37.Text = "Target Blends"; + // + // blendOperations + // + treeListColumn350.AutoSizeMinSize = 0; + treeListColumn350.Width = 50; + treeListColumn351.AutoSizeMinSize = 0; + treeListColumn351.Width = 60; + treeListColumn352.AutoSizeMinSize = 0; + treeListColumn352.Width = 50; + treeListColumn353.AutoSizeMinSize = 0; + treeListColumn353.Width = 100; + treeListColumn354.AutoSizeMinSize = 0; + treeListColumn354.Width = 100; + treeListColumn355.AutoSizeMinSize = 0; + treeListColumn355.Width = 135; + treeListColumn356.AutoSizeMinSize = 0; + treeListColumn356.Width = 100; + treeListColumn357.AutoSizeMinSize = 0; + treeListColumn357.Width = 100; + treeListColumn358.AutoSizeMinSize = 0; + treeListColumn358.Width = 100; + treeListColumn359.AutoSizeMinSize = 0; + treeListColumn359.Width = 80; + treeListColumn360.AutoSize = true; + treeListColumn360.AutoSizeMinSize = 60; + treeListColumn360.Width = 60; + this.blendOperations.Columns.AddRange(new TreelistView.TreeListColumn[] { + treeListColumn350, + treeListColumn351, + treeListColumn352, + treeListColumn353, + treeListColumn354, + treeListColumn355, + treeListColumn356, + treeListColumn357, + treeListColumn358, + treeListColumn359, + treeListColumn360}); + this.blendOperations.Cursor = System.Windows.Forms.Cursors.Arrow; + this.blendOperations.Dock = System.Windows.Forms.DockStyle.Fill; + this.blendOperations.GridLineColour = System.Drawing.SystemColors.ControlDark; + this.blendOperations.Location = new System.Drawing.Point(3, 16); + this.blendOperations.MultiSelect = false; + this.blendOperations.Name = "blendOperations"; + this.blendOperations.RowOptions.HoverHighlight = true; + this.blendOperations.RowOptions.ItemHeight = 20; + this.blendOperations.RowOptions.ShowHeader = false; + this.blendOperations.Size = new System.Drawing.Size(997, 159); + this.blendOperations.TabIndex = 32; + this.blendOperations.Text = "Outputs"; + this.blendOperations.TreeColumn = 7; + this.blendOperations.ViewOptions.Indent = 0; + this.blendOperations.ViewOptions.ShowLine = false; + this.blendOperations.ViewOptions.ShowPlusMinus = false; + // + // tableLayoutPanel10 + // + this.tableLayoutPanel10.ColumnCount = 3; + this.tableLayoutPanel10.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle()); + this.tableLayoutPanel10.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle()); + this.tableLayoutPanel10.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle()); + this.tableLayoutPanel10.Controls.Add(this.groupBox40, 0, 0); + this.tableLayoutPanel10.Controls.Add(this.groupBox41, 1, 0); + this.tableLayoutPanel10.Controls.Add(this.groupBox43, 2, 0); + this.tableLayoutPanel10.Dock = System.Windows.Forms.DockStyle.Fill; + this.tableLayoutPanel10.Location = new System.Drawing.Point(3, 463); + this.tableLayoutPanel10.MinimumSize = new System.Drawing.Size(0, 130); + this.tableLayoutPanel10.Name = "tableLayoutPanel10"; + this.tableLayoutPanel10.RowCount = 1; + this.tableLayoutPanel10.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100F)); + this.tableLayoutPanel10.Size = new System.Drawing.Size(1003, 139); + this.tableLayoutPanel10.TabIndex = 17; + // + // groupBox40 + // + this.groupBox40.AutoSize = true; + this.groupBox40.Controls.Add(this.tableLayoutPanel11); + this.groupBox40.Dock = System.Windows.Forms.DockStyle.Fill; + this.groupBox40.Location = new System.Drawing.Point(3, 3); + this.groupBox40.MinimumSize = new System.Drawing.Size(270, 0); + this.groupBox40.Name = "groupBox40"; + this.groupBox40.Size = new System.Drawing.Size(339, 133); + this.groupBox40.TabIndex = 0; + this.groupBox40.TabStop = false; + this.groupBox40.Text = "Blend State"; + // + // tableLayoutPanel11 + // + this.tableLayoutPanel11.AutoSize = true; + this.tableLayoutPanel11.CellBorderStyle = System.Windows.Forms.TableLayoutPanelCellBorderStyle.Single; + this.tableLayoutPanel11.ColumnCount = 4; + this.tableLayoutPanel11.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 50F)); + this.tableLayoutPanel11.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle()); + this.tableLayoutPanel11.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 75F)); + this.tableLayoutPanel11.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle()); + this.tableLayoutPanel11.Controls.Add(this.sampleMask, 1, 1); + this.tableLayoutPanel11.Controls.Add(this.independentBlend, 3, 0); + this.tableLayoutPanel11.Controls.Add(this.label3, 0, 0); + this.tableLayoutPanel11.Controls.Add(this.label6, 0, 1); + this.tableLayoutPanel11.Controls.Add(this.label7, 2, 1); + this.tableLayoutPanel11.Controls.Add(this.alphaToCoverage, 3, 1); + this.tableLayoutPanel11.Controls.Add(this.blendFactor, 1, 0); + this.tableLayoutPanel11.Controls.Add(this.label4, 2, 0); + this.tableLayoutPanel11.Location = new System.Drawing.Point(3, 16); + this.tableLayoutPanel11.Name = "tableLayoutPanel11"; + this.tableLayoutPanel11.RowCount = 2; + this.tableLayoutPanel11.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 50F)); + this.tableLayoutPanel11.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 50F)); + this.tableLayoutPanel11.Size = new System.Drawing.Size(330, 106); + this.tableLayoutPanel11.TabIndex = 0; + // + // sampleMask + // + this.sampleMask.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Left | System.Windows.Forms.AnchorStyles.Right))); + this.sampleMask.AutoSize = true; + this.sampleMask.BackColor = System.Drawing.Color.Transparent; + this.sampleMask.Font = new System.Drawing.Font("Tahoma", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.sampleMask.Location = new System.Drawing.Point(55, 69); + this.sampleMask.Name = "sampleMask"; + this.sampleMask.Size = new System.Drawing.Size(167, 19); + this.sampleMask.TabIndex = 23; + this.sampleMask.Text = "FFFFFFFF"; + this.sampleMask.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // independentBlend + // + this.independentBlend.Anchor = System.Windows.Forms.AnchorStyles.Left; + this.independentBlend.Image = ((System.Drawing.Image)(resources.GetObject("independentBlend.Image"))); + this.independentBlend.Location = new System.Drawing.Point(305, 18); + this.independentBlend.Name = "independentBlend"; + this.independentBlend.Size = new System.Drawing.Size(16, 16); + this.independentBlend.SizeMode = System.Windows.Forms.PictureBoxSizeMode.AutoSize; + this.independentBlend.TabIndex = 22; + this.independentBlend.TabStop = false; + // + // label3 + // + this.label3.Anchor = System.Windows.Forms.AnchorStyles.Right; + this.label3.AutoSize = true; + this.label3.Location = new System.Drawing.Point(8, 13); + this.label3.Name = "label3"; + this.label3.Size = new System.Drawing.Size(40, 26); + this.label3.TabIndex = 0; + this.label3.Text = "Blend Factor:"; + this.label3.TextAlign = System.Drawing.ContentAlignment.MiddleRight; + // + // label6 + // + this.label6.Anchor = System.Windows.Forms.AnchorStyles.Right; + this.label6.AutoSize = true; + this.label6.Location = new System.Drawing.Point(6, 66); + this.label6.Name = "label6"; + this.label6.Size = new System.Drawing.Size(42, 26); + this.label6.TabIndex = 2; + this.label6.Text = "Sample Mask:"; + this.label6.TextAlign = System.Drawing.ContentAlignment.MiddleRight; + // + // label7 + // + this.label7.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Left | System.Windows.Forms.AnchorStyles.Right))); + this.label7.AutoSize = true; + this.label7.Location = new System.Drawing.Point(229, 66); + this.label7.Name = "label7"; + this.label7.Size = new System.Drawing.Size(69, 26); + this.label7.TabIndex = 3; + this.label7.Text = "Alpha to Coverage:"; + this.label7.TextAlign = System.Drawing.ContentAlignment.MiddleRight; + // + // alphaToCoverage + // + this.alphaToCoverage.Anchor = System.Windows.Forms.AnchorStyles.Left; + this.alphaToCoverage.Image = ((System.Drawing.Image)(resources.GetObject("alphaToCoverage.Image"))); + this.alphaToCoverage.Location = new System.Drawing.Point(305, 71); + this.alphaToCoverage.Name = "alphaToCoverage"; + this.alphaToCoverage.Size = new System.Drawing.Size(16, 16); + this.alphaToCoverage.SizeMode = System.Windows.Forms.PictureBoxSizeMode.AutoSize; + this.alphaToCoverage.TabIndex = 21; + this.alphaToCoverage.TabStop = false; + // + // blendFactor + // + this.blendFactor.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Left | System.Windows.Forms.AnchorStyles.Right))); + this.blendFactor.AutoSize = true; + this.blendFactor.BackColor = System.Drawing.Color.Transparent; + this.blendFactor.Font = new System.Drawing.Font("Tahoma", 12F); + this.blendFactor.Location = new System.Drawing.Point(55, 17); + this.blendFactor.Name = "blendFactor"; + this.blendFactor.Size = new System.Drawing.Size(167, 19); + this.blendFactor.TabIndex = 24; + this.blendFactor.Text = "0.00, 0.00, 0.00, 0.00"; + this.blendFactor.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // label4 + // + this.label4.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Left | System.Windows.Forms.AnchorStyles.Right))); + this.label4.AutoSize = true; + this.label4.Location = new System.Drawing.Point(229, 13); + this.label4.Name = "label4"; + this.label4.Size = new System.Drawing.Size(69, 26); + this.label4.TabIndex = 1; + this.label4.Text = "Independent Blend:"; + this.label4.TextAlign = System.Drawing.ContentAlignment.MiddleRight; + // + // groupBox41 + // + this.groupBox41.AutoSize = true; + this.groupBox41.Controls.Add(this.tableLayoutPanel12); + this.groupBox41.Dock = System.Windows.Forms.DockStyle.Fill; + this.groupBox41.Location = new System.Drawing.Point(348, 3); + this.groupBox41.MinimumSize = new System.Drawing.Size(165, 0); + this.groupBox41.Name = "groupBox41"; + this.groupBox41.Size = new System.Drawing.Size(217, 133); + this.groupBox41.TabIndex = 1; + this.groupBox41.TabStop = false; + this.groupBox41.Text = "Depth State"; + // + // tableLayoutPanel12 + // + this.tableLayoutPanel12.AutoSize = true; + this.tableLayoutPanel12.CellBorderStyle = System.Windows.Forms.TableLayoutPanelCellBorderStyle.Single; + this.tableLayoutPanel12.ColumnCount = 2; + this.tableLayoutPanel12.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 60F)); + this.tableLayoutPanel12.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle()); + this.tableLayoutPanel12.Controls.Add(this.depthEnable, 1, 0); + this.tableLayoutPanel12.Controls.Add(this.label21, 0, 0); + this.tableLayoutPanel12.Controls.Add(this.depthWrite, 1, 1); + this.tableLayoutPanel12.Controls.Add(this.label11, 0, 1); + this.tableLayoutPanel12.Controls.Add(this.label13, 0, 2); + this.tableLayoutPanel12.Controls.Add(this.depthFunc, 1, 2); + this.tableLayoutPanel12.Location = new System.Drawing.Point(3, 16); + this.tableLayoutPanel12.Name = "tableLayoutPanel12"; + this.tableLayoutPanel12.RowCount = 3; + this.tableLayoutPanel12.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 33.33333F)); + this.tableLayoutPanel12.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 33.33333F)); + this.tableLayoutPanel12.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 33.33333F)); + this.tableLayoutPanel12.Size = new System.Drawing.Size(208, 102); + this.tableLayoutPanel12.TabIndex = 1; + // + // depthEnable + // + this.depthEnable.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Left | System.Windows.Forms.AnchorStyles.Right))); + this.depthEnable.Image = ((System.Drawing.Image)(resources.GetObject("depthEnable.Image"))); + this.depthEnable.Location = new System.Drawing.Point(65, 9); + this.depthEnable.Name = "depthEnable"; + this.depthEnable.Size = new System.Drawing.Size(139, 16); + this.depthEnable.SizeMode = System.Windows.Forms.PictureBoxSizeMode.CenterImage; + this.depthEnable.TabIndex = 22; + this.depthEnable.TabStop = false; + // + // label21 + // + this.label21.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Left | System.Windows.Forms.AnchorStyles.Right))); + this.label21.AutoSize = true; + this.label21.Location = new System.Drawing.Point(4, 10); + this.label21.Name = "label21"; + this.label21.Size = new System.Drawing.Size(54, 13); + this.label21.TabIndex = 1; + this.label21.Text = "Enabled:"; + this.label21.TextAlign = System.Drawing.ContentAlignment.MiddleRight; + // + // depthWrite + // + this.depthWrite.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Left | System.Windows.Forms.AnchorStyles.Right))); + this.depthWrite.Image = ((System.Drawing.Image)(resources.GetObject("depthWrite.Image"))); + this.depthWrite.Location = new System.Drawing.Point(65, 42); + this.depthWrite.Name = "depthWrite"; + this.depthWrite.Size = new System.Drawing.Size(139, 16); + this.depthWrite.SizeMode = System.Windows.Forms.PictureBoxSizeMode.CenterImage; + this.depthWrite.TabIndex = 25; + this.depthWrite.TabStop = false; + // + // label11 + // + this.label11.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Left | System.Windows.Forms.AnchorStyles.Right))); + this.label11.AutoSize = true; + this.label11.Location = new System.Drawing.Point(4, 43); + this.label11.Name = "label11"; + this.label11.Size = new System.Drawing.Size(54, 13); + this.label11.TabIndex = 24; + this.label11.Text = "Write:"; + this.label11.TextAlign = System.Drawing.ContentAlignment.MiddleRight; + // + // label13 + // + this.label13.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Left | System.Windows.Forms.AnchorStyles.Right))); + this.label13.AutoSize = true; + this.label13.Location = new System.Drawing.Point(4, 77); + this.label13.Name = "label13"; + this.label13.Size = new System.Drawing.Size(54, 13); + this.label13.TabIndex = 3; + this.label13.Text = "Func:"; + this.label13.TextAlign = System.Drawing.ContentAlignment.MiddleRight; + // + // depthFunc + // + this.depthFunc.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Left | System.Windows.Forms.AnchorStyles.Right))); + this.depthFunc.AutoSize = true; + this.depthFunc.BackColor = System.Drawing.Color.Transparent; + this.depthFunc.Font = new System.Drawing.Font("Tahoma", 12F); + this.depthFunc.Location = new System.Drawing.Point(65, 74); + this.depthFunc.Name = "depthFunc"; + this.depthFunc.Size = new System.Drawing.Size(139, 19); + this.depthFunc.TabIndex = 23; + this.depthFunc.Text = "GREATER_EQUAL"; + this.depthFunc.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // groupBox43 + // + this.groupBox43.Controls.Add(this.flowLayoutPanel8); + this.groupBox43.Dock = System.Windows.Forms.DockStyle.Fill; + this.groupBox43.Location = new System.Drawing.Point(571, 3); + this.groupBox43.Name = "groupBox43"; + this.groupBox43.Size = new System.Drawing.Size(577, 133); + this.groupBox43.TabIndex = 2; + this.groupBox43.TabStop = false; + this.groupBox43.Text = "Stencil State"; + // + // flowLayoutPanel8 + // + this.flowLayoutPanel8.Controls.Add(this.tableLayoutPanel15); + this.flowLayoutPanel8.Controls.Add(this.stencilFuncs); + this.flowLayoutPanel8.Dock = System.Windows.Forms.DockStyle.Fill; + this.flowLayoutPanel8.FlowDirection = System.Windows.Forms.FlowDirection.TopDown; + this.flowLayoutPanel8.Location = new System.Drawing.Point(3, 16); + this.flowLayoutPanel8.Name = "flowLayoutPanel8"; + this.flowLayoutPanel8.Size = new System.Drawing.Size(571, 114); + this.flowLayoutPanel8.TabIndex = 4; + // + // tableLayoutPanel15 + // + this.tableLayoutPanel15.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.tableLayoutPanel15.AutoSize = true; + this.tableLayoutPanel15.CellBorderStyle = System.Windows.Forms.TableLayoutPanelCellBorderStyle.Single; + this.tableLayoutPanel15.ColumnCount = 8; + this.tableLayoutPanel15.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle()); + this.tableLayoutPanel15.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle()); + this.tableLayoutPanel15.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle()); + this.tableLayoutPanel15.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle()); + this.tableLayoutPanel15.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle()); + this.tableLayoutPanel15.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle()); + this.tableLayoutPanel15.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle()); + this.tableLayoutPanel15.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle()); + this.tableLayoutPanel15.Controls.Add(this.stencilRef, 7, 0); + this.tableLayoutPanel15.Controls.Add(this.stencilReadMask, 5, 0); + this.tableLayoutPanel15.Controls.Add(this.stencilEnable, 1, 0); + this.tableLayoutPanel15.Controls.Add(this.label12, 0, 0); + this.tableLayoutPanel15.Controls.Add(this.label22, 2, 0); + this.tableLayoutPanel15.Controls.Add(this.stencilWriteMask, 3, 0); + this.tableLayoutPanel15.Controls.Add(this.label24, 4, 0); + this.tableLayoutPanel15.Controls.Add(this.label8, 6, 0); + this.tableLayoutPanel15.Location = new System.Drawing.Point(3, 3); + this.tableLayoutPanel15.Name = "tableLayoutPanel15"; + this.tableLayoutPanel15.RowCount = 1; + this.tableLayoutPanel15.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100F)); + this.tableLayoutPanel15.Size = new System.Drawing.Size(347, 24); + this.tableLayoutPanel15.TabIndex = 2; + // + // stencilRef + // + this.stencilRef.Anchor = System.Windows.Forms.AnchorStyles.Left; + this.stencilRef.AutoSize = true; + this.stencilRef.BackColor = System.Drawing.Color.Transparent; + this.stencilRef.Font = new System.Drawing.Font("Tahoma", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.stencilRef.Location = new System.Drawing.Point(318, 2); + this.stencilRef.Name = "stencilRef"; + this.stencilRef.Size = new System.Drawing.Size(25, 19); + this.stencilRef.TabIndex = 28; + this.stencilRef.Text = "FF"; + this.stencilRef.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // stencilReadMask + // + this.stencilReadMask.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Left | System.Windows.Forms.AnchorStyles.Right))); + this.stencilReadMask.AutoSize = true; + this.stencilReadMask.BackColor = System.Drawing.Color.Transparent; + this.stencilReadMask.Font = new System.Drawing.Font("Tahoma", 12F); + this.stencilReadMask.Location = new System.Drawing.Point(252, 2); + this.stencilReadMask.Name = "stencilReadMask"; + this.stencilReadMask.Size = new System.Drawing.Size(25, 19); + this.stencilReadMask.TabIndex = 26; + this.stencilReadMask.Text = "FF"; + this.stencilReadMask.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // stencilEnable + // + this.stencilEnable.Anchor = System.Windows.Forms.AnchorStyles.Left; + this.stencilEnable.Image = ((System.Drawing.Image)(resources.GetObject("stencilEnable.Image"))); + this.stencilEnable.Location = new System.Drawing.Point(54, 4); + this.stencilEnable.Name = "stencilEnable"; + this.stencilEnable.Size = new System.Drawing.Size(16, 16); + this.stencilEnable.SizeMode = System.Windows.Forms.PictureBoxSizeMode.AutoSize; + this.stencilEnable.TabIndex = 22; + this.stencilEnable.TabStop = false; + // + // label12 + // + this.label12.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Left | System.Windows.Forms.AnchorStyles.Right))); + this.label12.AutoSize = true; + this.label12.Location = new System.Drawing.Point(4, 5); + this.label12.Name = "label12"; + this.label12.Size = new System.Drawing.Size(43, 13); + this.label12.TabIndex = 1; + this.label12.Text = "Enable:"; + this.label12.TextAlign = System.Drawing.ContentAlignment.MiddleRight; + // + // label22 + // + this.label22.Anchor = System.Windows.Forms.AnchorStyles.Right; + this.label22.AutoSize = true; + this.label22.Location = new System.Drawing.Point(77, 5); + this.label22.Name = "label22"; + this.label22.Size = new System.Drawing.Size(64, 13); + this.label22.TabIndex = 24; + this.label22.Text = "Write Mask:"; + this.label22.TextAlign = System.Drawing.ContentAlignment.MiddleRight; + // + // stencilWriteMask + // + this.stencilWriteMask.Anchor = System.Windows.Forms.AnchorStyles.Left; + this.stencilWriteMask.AutoSize = true; + this.stencilWriteMask.BackColor = System.Drawing.Color.Transparent; + this.stencilWriteMask.Font = new System.Drawing.Font("Tahoma", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.stencilWriteMask.Location = new System.Drawing.Point(148, 2); + this.stencilWriteMask.Name = "stencilWriteMask"; + this.stencilWriteMask.Size = new System.Drawing.Size(25, 19); + this.stencilWriteMask.TabIndex = 23; + this.stencilWriteMask.Text = "FF"; + this.stencilWriteMask.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // label24 + // + this.label24.Anchor = System.Windows.Forms.AnchorStyles.Right; + this.label24.AutoSize = true; + this.label24.Location = new System.Drawing.Point(180, 5); + this.label24.Name = "label24"; + this.label24.Size = new System.Drawing.Size(65, 13); + this.label24.TabIndex = 25; + this.label24.Text = "Read Mask:"; + this.label24.TextAlign = System.Drawing.ContentAlignment.MiddleRight; + // + // label8 + // + this.label8.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Left | System.Windows.Forms.AnchorStyles.Right))); + this.label8.AutoSize = true; + this.label8.Location = new System.Drawing.Point(284, 5); + this.label8.Name = "label8"; + this.label8.Size = new System.Drawing.Size(27, 13); + this.label8.TabIndex = 27; + this.label8.Text = "Ref:"; + this.label8.TextAlign = System.Drawing.ContentAlignment.MiddleRight; + // + // stencilFuncs + // + treeListColumn361.AutoSizeMinSize = 0; + treeListColumn361.Width = 50; + treeListColumn362.AutoSizeMinSize = 0; + treeListColumn362.Width = 60; + treeListColumn363.AutoSizeMinSize = 0; + treeListColumn363.Width = 75; + treeListColumn364.AutoSizeMinSize = 0; + treeListColumn364.Width = 75; + treeListColumn365.AutoSize = true; + treeListColumn365.AutoSizeMinSize = 50; + treeListColumn365.Width = 75; + this.stencilFuncs.Columns.AddRange(new TreelistView.TreeListColumn[] { + treeListColumn361, + treeListColumn362, + treeListColumn363, + treeListColumn364, + treeListColumn365}); + this.stencilFuncs.Cursor = System.Windows.Forms.Cursors.Arrow; + this.stencilFuncs.Location = new System.Drawing.Point(3, 33); + this.stencilFuncs.Name = "stencilFuncs"; + this.stencilFuncs.RowOptions.ItemHeight = 20; + this.stencilFuncs.RowOptions.ShowHeader = false; + this.stencilFuncs.Size = new System.Drawing.Size(347, 78); + this.stencilFuncs.TabIndex = 3; + this.stencilFuncs.Text = "treeListView1"; + this.stencilFuncs.TreeColumn = -1; + this.stencilFuncs.ViewOptions.ShowLine = false; + this.stencilFuncs.ViewOptions.ShowPlusMinus = false; + // + // tabCS + // + this.tabCS.Controls.Add(this.panel7); + this.tabCS.Location = new System.Drawing.Point(4, 22); + this.tabCS.Name = "tabCS"; + this.tabCS.Size = new System.Drawing.Size(1009, 605); + this.tabCS.TabIndex = 8; + this.tabCS.Text = "Compute Shader"; + this.tabCS.UseVisualStyleBackColor = true; + // + // panel7 + // + this.panel7.AutoScroll = true; + this.panel7.AutoScrollMinSize = new System.Drawing.Size(0, 500); + this.panel7.Controls.Add(this.tableLayoutPanel7); + this.panel7.Dock = System.Windows.Forms.DockStyle.Fill; + this.panel7.Location = new System.Drawing.Point(0, 0); + this.panel7.Name = "panel7"; + this.panel7.Size = new System.Drawing.Size(1009, 605); + this.panel7.TabIndex = 4; + // + // tableLayoutPanel7 + // + this.tableLayoutPanel7.ColumnCount = 1; + this.tableLayoutPanel7.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 100F)); + this.tableLayoutPanel7.Controls.Add(this.groupBox38, 0, 2); + this.tableLayoutPanel7.Controls.Add(this.groupBox27, 0, 5); + this.tableLayoutPanel7.Controls.Add(this.groupBox6, 0, 0); + this.tableLayoutPanel7.Controls.Add(this.groupBox34, 0, 1); + this.tableLayoutPanel7.Controls.Add(this.groupBox35, 0, 3); + this.tableLayoutPanel7.Controls.Add(this.groupBox36, 0, 4); + this.tableLayoutPanel7.Dock = System.Windows.Forms.DockStyle.Fill; + this.tableLayoutPanel7.Location = new System.Drawing.Point(0, 0); + this.tableLayoutPanel7.Name = "tableLayoutPanel7"; + this.tableLayoutPanel7.RowCount = 5; + this.tableLayoutPanel7.RowStyles.Add(new System.Windows.Forms.RowStyle()); + this.tableLayoutPanel7.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 20F)); + this.tableLayoutPanel7.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 20F)); + this.tableLayoutPanel7.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 20F)); + this.tableLayoutPanel7.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 20F)); + this.tableLayoutPanel7.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 20F)); + this.tableLayoutPanel7.Size = new System.Drawing.Size(1009, 605); + this.tableLayoutPanel7.TabIndex = 1; + // + // groupBox38 + // + this.groupBox38.Controls.Add(this.csUAVs); + this.groupBox38.Dock = System.Windows.Forms.DockStyle.Fill; + this.groupBox38.Location = new System.Drawing.Point(3, 182); + this.groupBox38.Name = "groupBox38"; + this.groupBox38.Size = new System.Drawing.Size(1003, 100); + this.groupBox38.TabIndex = 19; + this.groupBox38.TabStop = false; + this.groupBox38.Text = "UAVs"; + // + // csUAVs + // + treeListColumn366.AutoSizeMinSize = 0; + treeListColumn366.Width = 120; + treeListColumn367.AutoSize = true; + treeListColumn367.AutoSizeMinSize = 150; + treeListColumn367.Width = 50; + treeListColumn368.AutoSizeMinSize = 0; + treeListColumn368.Width = 75; + treeListColumn369.AutoSizeMinSize = 0; + treeListColumn369.Width = 50; + treeListColumn370.AutoSizeMinSize = 0; + treeListColumn370.Width = 50; + treeListColumn371.AutoSizeMinSize = 0; + treeListColumn371.Width = 50; + treeListColumn372.AutoSizeMinSize = 0; + treeListColumn372.Width = 85; + treeListColumn373.AutoSizeMinSize = 0; + treeListColumn373.Width = 200; + treeListColumn374.AutoSizeMinSize = 0; + treeListColumn374.Width = 25; + this.csUAVs.Columns.AddRange(new TreelistView.TreeListColumn[] { + treeListColumn366, + treeListColumn367, + treeListColumn368, + treeListColumn369, + treeListColumn370, + treeListColumn371, + treeListColumn372, + treeListColumn373, + treeListColumn374}); + this.csUAVs.Cursor = System.Windows.Forms.Cursors.Arrow; + this.csUAVs.Dock = System.Windows.Forms.DockStyle.Fill; + this.csUAVs.GridLineColour = System.Drawing.SystemColors.ControlDark; + this.csUAVs.Location = new System.Drawing.Point(3, 16); + this.csUAVs.MultiSelect = false; + this.csUAVs.Name = "csUAVs"; + this.csUAVs.RowOptions.HoverHighlight = true; + this.csUAVs.RowOptions.ItemHeight = 20; + this.csUAVs.RowOptions.ShowHeader = false; + this.csUAVs.Size = new System.Drawing.Size(997, 81); + this.csUAVs.TabIndex = 1; + this.csUAVs.Text = "Outputs"; + this.csUAVs.TreeColumn = 8; + this.csUAVs.ViewOptions.Indent = 0; + this.csUAVs.ViewOptions.ShowLine = false; + this.csUAVs.ViewOptions.ShowPlusMinus = false; + this.csUAVs.NodeDoubleClicked += new TreelistView.TreeListView.NodeDoubleClickedHandler(this.textureCell_CellDoubleClick); + this.csUAVs.NodeClicked += new TreelistView.TreeListView.NodeClickedHandler(this.textureCell_CellDoubleClick); + this.csUAVs.KeyDown += new System.Windows.Forms.KeyEventHandler(this.defaultCopyPaste_KeyDown); + this.csUAVs.Leave += new System.EventHandler(this.disableSelection_Leave); + this.csUAVs.MouseClick += new System.Windows.Forms.MouseEventHandler(this.hideDisabledEmpty_MouseClick); + this.csUAVs.MouseLeave += new System.EventHandler(this.textureCell_MouseLeave); + this.csUAVs.MouseMove += new System.Windows.Forms.MouseEventHandler(this.textureCell_MouseMove); + // + // groupBox27 + // + this.tableLayoutPanel7.SetColumnSpan(this.groupBox27, 2); + this.groupBox27.Controls.Add(this.csClasses); + this.groupBox27.Dock = System.Windows.Forms.DockStyle.Fill; + this.groupBox27.Location = new System.Drawing.Point(3, 500); + this.groupBox27.Name = "groupBox27"; + this.groupBox27.Size = new System.Drawing.Size(1003, 102); + this.groupBox27.TabIndex = 18; + this.groupBox27.TabStop = false; + this.groupBox27.Text = "Class Instances"; + // + // csClasses + // + treeListColumn375.AutoSizeMinSize = 0; + treeListColumn375.Width = 50; + treeListColumn376.AutoSizeMinSize = 0; + treeListColumn376.Width = 200; + treeListColumn377.AutoSize = true; + treeListColumn377.AutoSizeMinSize = 50; + treeListColumn377.Width = 60; + this.csClasses.Columns.AddRange(new TreelistView.TreeListColumn[] { + treeListColumn375, + treeListColumn376, + treeListColumn377}); + this.csClasses.Cursor = System.Windows.Forms.Cursors.Arrow; + this.csClasses.Dock = System.Windows.Forms.DockStyle.Fill; + this.csClasses.Location = new System.Drawing.Point(3, 16); + this.csClasses.Name = "csClasses"; + this.csClasses.RowOptions.ItemHeight = 20; + this.csClasses.RowOptions.ShowHeader = false; + this.csClasses.Size = new System.Drawing.Size(997, 83); + this.csClasses.TabIndex = 4; + this.csClasses.Text = "Class Instances"; + this.csClasses.TreeColumn = -1; + this.csClasses.ViewOptions.ShowLine = false; + this.csClasses.ViewOptions.ShowPlusMinus = false; + this.csClasses.KeyDown += new System.Windows.Forms.KeyEventHandler(this.defaultCopyPaste_KeyDown); + this.csClasses.Leave += new System.EventHandler(this.disableSelection_Leave); + this.csClasses.MouseClick += new System.Windows.Forms.MouseEventHandler(this.hideDisabledEmpty_MouseClick); + // + // groupBox6 + // + this.groupBox6.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.groupBox6.AutoSize = true; + this.groupBox6.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink; + this.groupBox6.Controls.Add(this.flowLayoutPanel7); + this.groupBox6.Location = new System.Drawing.Point(3, 3); + this.groupBox6.Name = "groupBox6"; + this.groupBox6.Padding = new System.Windows.Forms.Padding(3, 3, 3, 0); + this.groupBox6.Size = new System.Drawing.Size(1003, 67); + this.groupBox6.TabIndex = 17; + this.groupBox6.TabStop = false; + this.groupBox6.Text = "Shader"; + // + // flowLayoutPanel7 + // + this.flowLayoutPanel7.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.flowLayoutPanel7.AutoSize = true; + this.flowLayoutPanel7.Controls.Add(this.csShader); + this.flowLayoutPanel7.Controls.Add(this.csShaderCog); + this.flowLayoutPanel7.Controls.Add(label41); + this.flowLayoutPanel7.Controls.Add(this.csShaderEdit); + this.flowLayoutPanel7.Controls.Add(label42); + this.flowLayoutPanel7.Controls.Add(this.csShaderSave); + this.flowLayoutPanel7.Controls.Add(label43); + this.flowLayoutPanel7.Controls.Add(this.computeDebugControls); + this.flowLayoutPanel7.Location = new System.Drawing.Point(3, 16); + this.flowLayoutPanel7.Margin = new System.Windows.Forms.Padding(3, 3, 3, 0); + this.flowLayoutPanel7.Name = "flowLayoutPanel7"; + this.flowLayoutPanel7.Size = new System.Drawing.Size(997, 38); + this.flowLayoutPanel7.TabIndex = 25; + // + // csShader + // + this.csShader.Anchor = System.Windows.Forms.AnchorStyles.Left; + this.csShader.AutoSize = true; + this.csShader.BackColor = System.Drawing.SystemColors.Info; + this.csShader.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.csShader.Cursor = System.Windows.Forms.Cursors.Hand; + this.csShader.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F); + this.csShader.ForeColor = System.Drawing.SystemColors.InfoText; + this.csShader.Location = new System.Drawing.Point(3, 11); + this.csShader.MinimumSize = new System.Drawing.Size(300, 2); + this.csShader.Name = "csShader"; + this.csShader.Size = new System.Drawing.Size(300, 15); + this.csShader.TabIndex = 24; + this.csShader.TextAlign = System.Drawing.ContentAlignment.MiddleLeft; + this.csShader.Click += new System.EventHandler(this.shader_Click); + this.csShader.MouseEnter += new System.EventHandler(this.shaderCog_MouseEnter); + this.csShader.MouseLeave += new System.EventHandler(this.shaderCog_MouseLeave); + // + // csShaderCog + // + this.csShaderCog.Anchor = System.Windows.Forms.AnchorStyles.Left; + this.csShaderCog.Cursor = System.Windows.Forms.Cursors.Hand; + this.csShaderCog.Image = global::renderdocui.Properties.Resources.action; + this.csShaderCog.Location = new System.Drawing.Point(309, 11); + this.csShaderCog.Margin = new System.Windows.Forms.Padding(3, 3, 0, 3); + this.csShaderCog.Name = "csShaderCog"; + this.csShaderCog.Size = new System.Drawing.Size(16, 16); + this.csShaderCog.SizeMode = System.Windows.Forms.PictureBoxSizeMode.AutoSize; + this.csShaderCog.TabIndex = 25; + this.csShaderCog.TabStop = false; + this.csShaderCog.Click += new System.EventHandler(this.shader_Click); + this.csShaderCog.MouseEnter += new System.EventHandler(this.shaderCog_MouseEnter); + this.csShaderCog.MouseLeave += new System.EventHandler(this.shaderCog_MouseLeave); + // + // label41 + // + label41.Anchor = System.Windows.Forms.AnchorStyles.Left; + label41.AutoSize = true; + label41.Cursor = System.Windows.Forms.Cursors.Hand; + label41.Location = new System.Drawing.Point(325, 12); + label41.Margin = new System.Windows.Forms.Padding(0, 0, 6, 0); + label41.Name = "label41"; + label41.Size = new System.Drawing.Size(30, 13); + label41.TabIndex = 39; + label41.Text = "View"; + label41.Click += new System.EventHandler(this.shader_Click); + label41.MouseEnter += new System.EventHandler(this.shaderCog_MouseEnter); + label41.MouseLeave += new System.EventHandler(this.shaderCog_MouseLeave); + // + // csShaderEdit + // + this.csShaderEdit.Anchor = System.Windows.Forms.AnchorStyles.Left; + this.csShaderEdit.Cursor = System.Windows.Forms.Cursors.Hand; + this.csShaderEdit.Image = global::renderdocui.Properties.Resources.page_white_edit; + this.csShaderEdit.Location = new System.Drawing.Point(364, 11); + this.csShaderEdit.Margin = new System.Windows.Forms.Padding(3, 3, 0, 3); + this.csShaderEdit.Name = "csShaderEdit"; + this.csShaderEdit.Size = new System.Drawing.Size(16, 16); + this.csShaderEdit.SizeMode = System.Windows.Forms.PictureBoxSizeMode.AutoSize; + this.csShaderEdit.TabIndex = 36; + this.csShaderEdit.TabStop = false; + this.toolTip.SetToolTip(this.csShaderEdit, "HLSL edit and replace this shader"); + this.csShaderEdit.Click += new System.EventHandler(this.shaderedit_Click); + // + // label42 + // + label42.Anchor = System.Windows.Forms.AnchorStyles.Left; + label42.AutoSize = true; + label42.Cursor = System.Windows.Forms.Cursors.Hand; + label42.Location = new System.Drawing.Point(380, 12); + label42.Margin = new System.Windows.Forms.Padding(0, 0, 6, 0); + label42.Name = "label42"; + label42.Size = new System.Drawing.Size(25, 13); + label42.TabIndex = 37; + label42.Text = "Edit"; + this.toolTip.SetToolTip(label42, "HLSL edit and replace this shader"); + label42.Click += new System.EventHandler(this.shaderedit_Click); + // + // csShaderSave + // + this.csShaderSave.Anchor = System.Windows.Forms.AnchorStyles.Left; + this.csShaderSave.Cursor = System.Windows.Forms.Cursors.Hand; + this.csShaderSave.Image = global::renderdocui.Properties.Resources.save; + this.csShaderSave.Location = new System.Drawing.Point(414, 11); + this.csShaderSave.Margin = new System.Windows.Forms.Padding(3, 3, 0, 3); + this.csShaderSave.Name = "csShaderSave"; + this.csShaderSave.Size = new System.Drawing.Size(16, 16); + this.csShaderSave.SizeMode = System.Windows.Forms.PictureBoxSizeMode.AutoSize; + this.csShaderSave.TabIndex = 40; + this.csShaderSave.TabStop = false; + this.toolTip.SetToolTip(this.csShaderSave, "Save the bytecode blob to disk"); + this.csShaderSave.Click += new System.EventHandler(this.shaderSave_Click); + // + // label43 + // + label43.Anchor = System.Windows.Forms.AnchorStyles.Left; + label43.AutoSize = true; + label43.Cursor = System.Windows.Forms.Cursors.Hand; + label43.Location = new System.Drawing.Point(430, 12); + label43.Margin = new System.Windows.Forms.Padding(0, 0, 6, 0); + label43.Name = "label43"; + label43.Size = new System.Drawing.Size(32, 13); + label43.TabIndex = 38; + label43.Text = "Save"; + this.toolTip.SetToolTip(label43, "Save the bytecode blob to disk"); + label43.Click += new System.EventHandler(this.shaderSave_Click); + // + // computeDebugControls + // + this.computeDebugControls.Controls.Add(this.label9); + this.computeDebugControls.Controls.Add(this.groupX); + this.computeDebugControls.Controls.Add(this.groupY); + this.computeDebugControls.Controls.Add(this.groupZ); + this.computeDebugControls.Controls.Add(this.label10); + this.computeDebugControls.Controls.Add(this.threadX); + this.computeDebugControls.Controls.Add(this.threadY); + this.computeDebugControls.Controls.Add(this.threadZ); + this.computeDebugControls.Controls.Add(this.csDebug); + this.computeDebugControls.Location = new System.Drawing.Point(471, 3); + this.computeDebugControls.Name = "computeDebugControls"; + this.computeDebugControls.Size = new System.Drawing.Size(498, 32); + this.computeDebugControls.TabIndex = 35; + // + // label9 + // + this.label9.Anchor = System.Windows.Forms.AnchorStyles.Left; + this.label9.Location = new System.Drawing.Point(3, 4); + this.label9.Name = "label9"; + this.label9.Size = new System.Drawing.Size(78, 23); + this.label9.TabIndex = 30; + this.label9.Text = "Debug Group:"; + this.label9.TextAlign = System.Drawing.ContentAlignment.MiddleRight; + // + // groupX + // + this.groupX.Anchor = System.Windows.Forms.AnchorStyles.Left; + this.groupX.Location = new System.Drawing.Point(87, 5); + this.groupX.Name = "groupX"; + this.groupX.Size = new System.Drawing.Size(46, 20); + this.groupX.TabIndex = 26; + this.groupX.Text = "0"; + // + // groupY + // + this.groupY.Anchor = System.Windows.Forms.AnchorStyles.Left; + this.groupY.Location = new System.Drawing.Point(139, 5); + this.groupY.Name = "groupY"; + this.groupY.Size = new System.Drawing.Size(49, 20); + this.groupY.TabIndex = 27; + this.groupY.Text = "0"; + // + // groupZ + // + this.groupZ.Anchor = System.Windows.Forms.AnchorStyles.Left; + this.groupZ.Location = new System.Drawing.Point(194, 5); + this.groupZ.Name = "groupZ"; + this.groupZ.Size = new System.Drawing.Size(52, 20); + this.groupZ.TabIndex = 28; + this.groupZ.Text = "0"; + // + // label10 + // + this.label10.Anchor = System.Windows.Forms.AnchorStyles.Left; + this.label10.Location = new System.Drawing.Point(252, 4); + this.label10.Name = "label10"; + this.label10.Size = new System.Drawing.Size(47, 23); + this.label10.TabIndex = 34; + this.label10.Text = "Thread:"; + this.label10.TextAlign = System.Drawing.ContentAlignment.MiddleRight; + // + // threadX + // + this.threadX.Anchor = System.Windows.Forms.AnchorStyles.Left; + this.threadX.Location = new System.Drawing.Point(305, 5); + this.threadX.Name = "threadX"; + this.threadX.Size = new System.Drawing.Size(46, 20); + this.threadX.TabIndex = 31; + this.threadX.Text = "0"; + // + // threadY + // + this.threadY.Anchor = System.Windows.Forms.AnchorStyles.Left; + this.threadY.Location = new System.Drawing.Point(357, 5); + this.threadY.Name = "threadY"; + this.threadY.Size = new System.Drawing.Size(49, 20); + this.threadY.TabIndex = 32; + this.threadY.Text = "0"; + // + // threadZ + // + this.threadZ.Anchor = System.Windows.Forms.AnchorStyles.Left; + this.threadZ.Location = new System.Drawing.Point(412, 5); + this.threadZ.Name = "threadZ"; + this.threadZ.Size = new System.Drawing.Size(52, 20); + this.threadZ.TabIndex = 33; + this.threadZ.Text = "0"; + // + // csDebug + // + this.csDebug.FlatStyle = System.Windows.Forms.FlatStyle.Flat; + this.csDebug.Image = global::renderdocui.Properties.Resources.wrench; + this.csDebug.Location = new System.Drawing.Point(470, 3); + this.csDebug.Name = "csDebug"; + this.csDebug.Size = new System.Drawing.Size(25, 25); + this.csDebug.TabIndex = 29; + this.toolTip.SetToolTip(this.csDebug, "Debug Compute Shader"); + this.csDebug.UseVisualStyleBackColor = true; + this.csDebug.Click += new System.EventHandler(this.csDebug_Click); + // + // groupBox34 + // + this.groupBox34.Controls.Add(this.csResources); + this.groupBox34.Dock = System.Windows.Forms.DockStyle.Fill; + this.groupBox34.Location = new System.Drawing.Point(3, 76); + this.groupBox34.Name = "groupBox34"; + this.groupBox34.Size = new System.Drawing.Size(1003, 100); + this.groupBox34.TabIndex = 14; + this.groupBox34.TabStop = false; + this.groupBox34.Text = "Resources"; + // + // csResources + // + treeListColumn378.AutoSizeMinSize = 0; + treeListColumn378.Width = 120; + treeListColumn379.AutoSize = true; + treeListColumn379.AutoSizeMinSize = 150; + treeListColumn379.Width = 50; + treeListColumn380.AutoSizeMinSize = 0; + treeListColumn380.Width = 85; + treeListColumn381.AutoSizeMinSize = 0; + treeListColumn381.Width = 50; + treeListColumn382.AutoSizeMinSize = 0; + treeListColumn382.Width = 50; + treeListColumn383.AutoSizeMinSize = 0; + treeListColumn383.Width = 50; + treeListColumn384.AutoSizeMinSize = 0; + treeListColumn384.Width = 85; + treeListColumn385.AutoSizeMinSize = 0; + treeListColumn385.Width = 200; + treeListColumn386.AutoSizeMinSize = 0; + treeListColumn386.Width = 25; + this.csResources.Columns.AddRange(new TreelistView.TreeListColumn[] { + treeListColumn378, + treeListColumn379, + treeListColumn380, + treeListColumn381, + treeListColumn382, + treeListColumn383, + treeListColumn384, + treeListColumn385, + treeListColumn386}); + this.csResources.Cursor = System.Windows.Forms.Cursors.Arrow; + this.csResources.Dock = System.Windows.Forms.DockStyle.Fill; + this.csResources.GridLineColour = System.Drawing.SystemColors.ControlDark; + this.csResources.Location = new System.Drawing.Point(3, 16); + this.csResources.MultiSelect = false; + this.csResources.Name = "csResources"; + this.csResources.RowOptions.HoverHighlight = true; + this.csResources.RowOptions.ItemHeight = 20; + this.csResources.RowOptions.ShowHeader = false; + this.csResources.Size = new System.Drawing.Size(997, 81); + this.csResources.TabIndex = 1; + this.csResources.Text = "Outputs"; + this.csResources.TreeColumn = 8; + this.csResources.ViewOptions.Indent = 0; + this.csResources.ViewOptions.ShowLine = false; + this.csResources.ViewOptions.ShowPlusMinus = false; + this.csResources.NodeDoubleClicked += new TreelistView.TreeListView.NodeDoubleClickedHandler(this.textureCell_CellDoubleClick); + this.csResources.NodeClicked += new TreelistView.TreeListView.NodeClickedHandler(this.textureCell_CellDoubleClick); + this.csResources.KeyDown += new System.Windows.Forms.KeyEventHandler(this.defaultCopyPaste_KeyDown); + this.csResources.Leave += new System.EventHandler(this.disableSelection_Leave); + this.csResources.MouseClick += new System.Windows.Forms.MouseEventHandler(this.hideDisabledEmpty_MouseClick); + this.csResources.MouseLeave += new System.EventHandler(this.textureCell_MouseLeave); + this.csResources.MouseMove += new System.Windows.Forms.MouseEventHandler(this.textureCell_MouseMove); + // + // groupBox35 + // + this.groupBox35.Controls.Add(this.csSamplers); + this.groupBox35.Dock = System.Windows.Forms.DockStyle.Fill; + this.groupBox35.Location = new System.Drawing.Point(3, 288); + this.groupBox35.Name = "groupBox35"; + this.groupBox35.Size = new System.Drawing.Size(1003, 100); + this.groupBox35.TabIndex = 13; + this.groupBox35.TabStop = false; + this.groupBox35.Text = "Samplers"; + // + // csSamplers + // + treeListColumn387.AutoSizeMinSize = 0; + treeListColumn387.Width = 120; + treeListColumn388.AutoSizeMinSize = 100; + treeListColumn388.Width = 200; + treeListColumn389.AutoSizeMinSize = 0; + treeListColumn389.Width = 250; + treeListColumn390.AutoSizeMinSize = 0; + treeListColumn390.Width = 90; + treeListColumn391.AutoSize = true; + treeListColumn391.AutoSizeMinSize = 50; + treeListColumn391.Width = 50; + this.csSamplers.Columns.AddRange(new TreelistView.TreeListColumn[] { + treeListColumn387, + treeListColumn388, + treeListColumn389, + treeListColumn390, + treeListColumn391}); + this.csSamplers.Cursor = System.Windows.Forms.Cursors.Arrow; + this.csSamplers.Dock = System.Windows.Forms.DockStyle.Fill; + this.csSamplers.GridLineColour = System.Drawing.SystemColors.ControlDark; + this.csSamplers.Location = new System.Drawing.Point(3, 16); + this.csSamplers.MultiSelect = false; + this.csSamplers.Name = "csSamplers"; + this.csSamplers.RowOptions.HoverHighlight = true; + this.csSamplers.RowOptions.ItemHeight = 20; + this.csSamplers.RowOptions.ShowHeader = false; + this.csSamplers.Size = new System.Drawing.Size(997, 81); + this.csSamplers.TabIndex = 12; + this.csSamplers.Text = "Samplers"; + this.csSamplers.TreeColumn = -1; + this.csSamplers.ViewOptions.Indent = 0; + this.csSamplers.ViewOptions.ShowLine = false; + this.csSamplers.ViewOptions.ShowPlusMinus = false; + this.csSamplers.KeyDown += new System.Windows.Forms.KeyEventHandler(this.defaultCopyPaste_KeyDown); + this.csSamplers.Leave += new System.EventHandler(this.disableSelection_Leave); + this.csSamplers.MouseClick += new System.Windows.Forms.MouseEventHandler(this.hideDisabledEmpty_MouseClick); + // + // groupBox36 + // + this.groupBox36.Controls.Add(this.csCBuffers); + this.groupBox36.Dock = System.Windows.Forms.DockStyle.Fill; + this.groupBox36.Location = new System.Drawing.Point(3, 394); + this.groupBox36.Name = "groupBox36"; + this.groupBox36.Size = new System.Drawing.Size(1003, 100); + this.groupBox36.TabIndex = 12; + this.groupBox36.TabStop = false; + this.groupBox36.Text = "Constant Buffers"; + // + // csCBuffers + // + treeListColumn392.AutoSizeMinSize = 0; + treeListColumn392.Width = 120; + treeListColumn393.AutoSize = true; + treeListColumn393.AutoSizeMinSize = 100; + treeListColumn393.Width = 50; + treeListColumn394.AutoSizeMinSize = 0; + treeListColumn394.Width = 85; + treeListColumn395.AutoSizeMinSize = 0; + treeListColumn395.Width = 250; + treeListColumn396.AutoSizeMinSize = 0; + treeListColumn396.Width = 25; + this.csCBuffers.Columns.AddRange(new TreelistView.TreeListColumn[] { + treeListColumn392, + treeListColumn393, + treeListColumn394, + treeListColumn395, + treeListColumn396}); + this.csCBuffers.Cursor = System.Windows.Forms.Cursors.Arrow; + this.csCBuffers.Dock = System.Windows.Forms.DockStyle.Fill; + this.csCBuffers.GridLineColour = System.Drawing.SystemColors.ControlDark; + this.csCBuffers.Location = new System.Drawing.Point(3, 16); + this.csCBuffers.MultiSelect = false; + this.csCBuffers.Name = "csCBuffers"; + this.csCBuffers.RowOptions.HoverHighlight = true; + this.csCBuffers.RowOptions.ItemHeight = 20; + this.csCBuffers.RowOptions.ShowHeader = false; + this.csCBuffers.Size = new System.Drawing.Size(997, 81); + this.csCBuffers.TabIndex = 11; + this.csCBuffers.Text = "Constant Buffers"; + this.csCBuffers.TreeColumn = 4; + this.csCBuffers.ViewOptions.Indent = 0; + this.csCBuffers.ViewOptions.ShowLine = false; + this.csCBuffers.ViewOptions.ShowPlusMinus = false; + this.csCBuffers.NodeDoubleClicked += new TreelistView.TreeListView.NodeDoubleClickedHandler(this.cbuffers_NodeDoubleClicked); + this.csCBuffers.NodeClicked += new TreelistView.TreeListView.NodeClickedHandler(this.cbuffers_NodeDoubleClicked); + this.csCBuffers.KeyDown += new System.Windows.Forms.KeyEventHandler(this.defaultCopyPaste_KeyDown); + this.csCBuffers.Leave += new System.EventHandler(this.disableSelection_Leave); + this.csCBuffers.MouseClick += new System.Windows.Forms.MouseEventHandler(this.hideDisabledEmpty_MouseClick); + // + // rightclickMenu + // + this.rightclickMenu.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.showDisabled, + this.showEmpty}); + this.rightclickMenu.Name = "rightclickMenu"; + this.rightclickMenu.Size = new System.Drawing.Size(144, 48); + // + // showDisabled + // + this.showDisabled.Image = global::renderdocui.Properties.Resources.page_white_delete; + this.showDisabled.Name = "showDisabled"; + this.showDisabled.Size = new System.Drawing.Size(143, 22); + this.showDisabled.Text = "Show Disabled"; + this.showDisabled.Click += new System.EventHandler(this.hideDisabled_Click); + // + // showEmpty + // + this.showEmpty.Image = global::renderdocui.Properties.Resources.page_white_database; + this.showEmpty.Name = "showEmpty"; + this.showEmpty.Size = new System.Drawing.Size(143, 22); + this.showEmpty.Text = "Show Empty"; + this.showEmpty.Click += new System.EventHandler(this.hideEmpty_Click); + // + // toolTip + // + this.toolTip.UseAnimation = false; + this.toolTip.UseFading = false; + // + // pipeExportDialog + // + this.pipeExportDialog.DefaultExt = "html"; + this.pipeExportDialog.Filter = "HTML Files (*.html)|*.html"; + this.pipeExportDialog.Title = "Export pipeline state as HTML"; + // + // shaderSaveDialog + // + this.shaderSaveDialog.DefaultExt = "dxbc"; + this.shaderSaveDialog.Filter = "DXBC Shader Files (*.dxbc)|*.dxbc|Shader Binary Files (*.bin)|*.bin|All Files (*." + + "*)|*.*"; + this.shaderSaveDialog.Title = "Save shader bytecode to file"; + // + // D3D12PipelineStateViewer + // + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.Controls.Add(toolstripTable); + this.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.Name = "D3D12PipelineStateViewer"; + this.Size = new System.Drawing.Size(1023, 738); + toolstripTable.ResumeLayout(false); + toolstripTable.PerformLayout(); + this.flowLayoutPanel6.ResumeLayout(false); + this.flowLayoutPanel6.PerformLayout(); + this.toolStrip1.ResumeLayout(false); + this.toolStrip1.PerformLayout(); + this.stageTabControl.ResumeLayout(false); + this.tabIA.ResumeLayout(false); + this.panel1.ResumeLayout(false); + this.tableLayoutPanel1.ResumeLayout(false); + this.groupBox1.ResumeLayout(false); + this.tableLayoutPanel13.ResumeLayout(false); + this.tableLayoutPanel13.PerformLayout(); + ((System.ComponentModel.ISupportInitialize)(this.topologyDiagram)).EndInit(); + this.groupBox4.ResumeLayout(false); + ((System.ComponentModel.ISupportInitialize)(this.iabuffers)).EndInit(); + groupBox2.ResumeLayout(false); + ((System.ComponentModel.ISupportInitialize)(this.inputLayouts)).EndInit(); + groupBox39.ResumeLayout(false); + flowLayoutPanel9.ResumeLayout(false); + flowLayoutPanel9.PerformLayout(); + ((System.ComponentModel.ISupportInitialize)(this.iaBytecodeCog)).EndInit(); + groupBox44.ResumeLayout(false); + ((System.ComponentModel.ISupportInitialize)(this.meshView)).EndInit(); + this.tabVS.ResumeLayout(false); + this.panel2.ResumeLayout(false); + this.tableLayoutPanel2.ResumeLayout(false); + this.groupBox3.ResumeLayout(false); + this.flowLayoutPanel3.ResumeLayout(false); + this.flowLayoutPanel3.PerformLayout(); + ((System.ComponentModel.ISupportInitialize)(this.vsShaderCog)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.vsShaderEdit)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.vsShaderSave)).EndInit(); + this.groupBox5.ResumeLayout(false); + ((System.ComponentModel.ISupportInitialize)(this.vsClasses)).EndInit(); + this.groupBox7.ResumeLayout(false); + ((System.ComponentModel.ISupportInitialize)(this.vsResources)).EndInit(); + this.groupBox8.ResumeLayout(false); + ((System.ComponentModel.ISupportInitialize)(this.vsSamplers)).EndInit(); + this.groupBox9.ResumeLayout(false); + ((System.ComponentModel.ISupportInitialize)(this.vsCBuffers)).EndInit(); + this.tabHS.ResumeLayout(false); + this.panel3.ResumeLayout(false); + this.tableLayoutPanel3.ResumeLayout(false); + this.groupBox10.ResumeLayout(false); + this.flowLayoutPanel4.ResumeLayout(false); + this.flowLayoutPanel4.PerformLayout(); + ((System.ComponentModel.ISupportInitialize)(this.hsShaderCog)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.hsShaderEdit)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.hsShaderSave)).EndInit(); + this.groupBox11.ResumeLayout(false); + ((System.ComponentModel.ISupportInitialize)(this.hsClasses)).EndInit(); + this.groupBox12.ResumeLayout(false); + ((System.ComponentModel.ISupportInitialize)(this.hsResources)).EndInit(); + this.groupBox14.ResumeLayout(false); + ((System.ComponentModel.ISupportInitialize)(this.hsSamplers)).EndInit(); + this.groupBox15.ResumeLayout(false); + ((System.ComponentModel.ISupportInitialize)(this.hsCBuffers)).EndInit(); + this.tabDS.ResumeLayout(false); + this.panel4.ResumeLayout(false); + this.tableLayoutPanel4.ResumeLayout(false); + this.groupBox16.ResumeLayout(false); + this.flowLayoutPanel5.ResumeLayout(false); + this.flowLayoutPanel5.PerformLayout(); + ((System.ComponentModel.ISupportInitialize)(this.dsShaderCog)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.dsShaderEdit)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.dsShaderSave)).EndInit(); + this.groupBox17.ResumeLayout(false); + ((System.ComponentModel.ISupportInitialize)(this.dsClasses)).EndInit(); + this.groupBox18.ResumeLayout(false); + ((System.ComponentModel.ISupportInitialize)(this.dsResources)).EndInit(); + this.groupBox20.ResumeLayout(false); + ((System.ComponentModel.ISupportInitialize)(this.dsSamplers)).EndInit(); + this.groupBox21.ResumeLayout(false); + ((System.ComponentModel.ISupportInitialize)(this.dsCBuffers)).EndInit(); + this.tabGS.ResumeLayout(false); + this.panel5.ResumeLayout(false); + this.geomTableLayout.ResumeLayout(false); + groupBox45.ResumeLayout(false); + ((System.ComponentModel.ISupportInitialize)(this.gsStreams)).EndInit(); + this.groupBox22.ResumeLayout(false); + this.flowLayoutPanel2.ResumeLayout(false); + this.flowLayoutPanel2.PerformLayout(); + ((System.ComponentModel.ISupportInitialize)(this.gsShaderCog)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.gsShaderEdit)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.gsShaderSave)).EndInit(); + this.geomClassGroupBox.ResumeLayout(false); + ((System.ComponentModel.ISupportInitialize)(this.gsClasses)).EndInit(); + this.groupBox24.ResumeLayout(false); + ((System.ComponentModel.ISupportInitialize)(this.gsResources)).EndInit(); + this.groupBox25.ResumeLayout(false); + ((System.ComponentModel.ISupportInitialize)(this.gsSamplers)).EndInit(); + this.geomCBufGroupBox.ResumeLayout(false); + ((System.ComponentModel.ISupportInitialize)(this.gsCBuffers)).EndInit(); + this.tabRS.ResumeLayout(false); + this.panel8.ResumeLayout(false); + this.tableLayoutPanel14.ResumeLayout(false); + this.groupBox31.ResumeLayout(false); + this.tableLayoutPanel8.ResumeLayout(false); + this.tableLayoutPanel8.PerformLayout(); + ((System.ComponentModel.ISupportInitialize)(this.frontCCW)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.depthClip)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.multisampleEnable)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.scissorEnable)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.lineAAEnable)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.conservativeRaster)).EndInit(); + this.groupBox32.ResumeLayout(false); + ((System.ComponentModel.ISupportInitialize)(this.viewports)).EndInit(); + groupBox42.ResumeLayout(false); + ((System.ComponentModel.ISupportInitialize)(this.scissors)).EndInit(); + this.tabPS.ResumeLayout(false); + this.panel6.ResumeLayout(false); + this.pixelTableLayout.ResumeLayout(false); + this.groupBox13.ResumeLayout(false); + this.flowLayoutPanel1.ResumeLayout(false); + this.flowLayoutPanel1.PerformLayout(); + ((System.ComponentModel.ISupportInitialize)(this.psShaderCog)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.psShaderEdit)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.psShaderSave)).EndInit(); + this.pixelClassGroupBox.ResumeLayout(false); + ((System.ComponentModel.ISupportInitialize)(this.psClasses)).EndInit(); + this.groupBox28.ResumeLayout(false); + ((System.ComponentModel.ISupportInitialize)(this.psResources)).EndInit(); + this.groupBox29.ResumeLayout(false); + ((System.ComponentModel.ISupportInitialize)(this.psSamplers)).EndInit(); + this.pixelCBufGroupBox.ResumeLayout(false); + ((System.ComponentModel.ISupportInitialize)(this.psCBuffers)).EndInit(); + this.tabOM.ResumeLayout(false); + this.panel9.ResumeLayout(false); + this.tableLayoutPanel9.ResumeLayout(false); + this.groupBox33.ResumeLayout(false); + ((System.ComponentModel.ISupportInitialize)(this.targetOutputs)).EndInit(); + this.groupBox37.ResumeLayout(false); + ((System.ComponentModel.ISupportInitialize)(this.blendOperations)).EndInit(); + this.tableLayoutPanel10.ResumeLayout(false); + this.tableLayoutPanel10.PerformLayout(); + this.groupBox40.ResumeLayout(false); + this.groupBox40.PerformLayout(); + this.tableLayoutPanel11.ResumeLayout(false); + this.tableLayoutPanel11.PerformLayout(); + ((System.ComponentModel.ISupportInitialize)(this.independentBlend)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.alphaToCoverage)).EndInit(); + this.groupBox41.ResumeLayout(false); + this.groupBox41.PerformLayout(); + this.tableLayoutPanel12.ResumeLayout(false); + this.tableLayoutPanel12.PerformLayout(); + ((System.ComponentModel.ISupportInitialize)(this.depthEnable)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.depthWrite)).EndInit(); + this.groupBox43.ResumeLayout(false); + this.flowLayoutPanel8.ResumeLayout(false); + this.flowLayoutPanel8.PerformLayout(); + this.tableLayoutPanel15.ResumeLayout(false); + this.tableLayoutPanel15.PerformLayout(); + ((System.ComponentModel.ISupportInitialize)(this.stencilEnable)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.stencilFuncs)).EndInit(); + this.tabCS.ResumeLayout(false); + this.panel7.ResumeLayout(false); + this.tableLayoutPanel7.ResumeLayout(false); + this.tableLayoutPanel7.PerformLayout(); + this.groupBox38.ResumeLayout(false); + ((System.ComponentModel.ISupportInitialize)(this.csUAVs)).EndInit(); + this.groupBox27.ResumeLayout(false); + ((System.ComponentModel.ISupportInitialize)(this.csClasses)).EndInit(); + this.groupBox6.ResumeLayout(false); + this.groupBox6.PerformLayout(); + this.flowLayoutPanel7.ResumeLayout(false); + this.flowLayoutPanel7.PerformLayout(); + ((System.ComponentModel.ISupportInitialize)(this.csShaderCog)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.csShaderEdit)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.csShaderSave)).EndInit(); + this.computeDebugControls.ResumeLayout(false); + this.computeDebugControls.PerformLayout(); + this.groupBox34.ResumeLayout(false); + ((System.ComponentModel.ISupportInitialize)(this.csResources)).EndInit(); + this.groupBox35.ResumeLayout(false); + ((System.ComponentModel.ISupportInitialize)(this.csSamplers)).EndInit(); + this.groupBox36.ResumeLayout(false); + ((System.ComponentModel.ISupportInitialize)(this.csCBuffers)).EndInit(); + this.rightclickMenu.ResumeLayout(false); + this.ResumeLayout(false); + + } + + #endregion + + private renderdocui.Controls.TablessControl stageTabControl; + private System.Windows.Forms.TabPage tabIA; + private System.Windows.Forms.TabPage tabVS; + private System.Windows.Forms.Panel panel1; + private System.Windows.Forms.TableLayoutPanel tableLayoutPanel1; + private System.Windows.Forms.GroupBox groupBox1; + private System.Windows.Forms.Label topology; + private System.Windows.Forms.GroupBox groupBox4; + private System.Windows.Forms.TabPage tabHS; + private System.Windows.Forms.TabPage tabDS; + private System.Windows.Forms.TabPage tabGS; + private System.Windows.Forms.TabPage tabRS; + private System.Windows.Forms.TabPage tabPS; + private System.Windows.Forms.TabPage tabOM; + private System.Windows.Forms.TabPage tabCS; + private System.Windows.Forms.Panel panel6; + private System.Windows.Forms.TableLayoutPanel pixelTableLayout; + private System.Windows.Forms.GroupBox groupBox13; + private System.Windows.Forms.GroupBox pixelClassGroupBox; + private System.Windows.Forms.GroupBox groupBox28; + private System.Windows.Forms.GroupBox groupBox29; + private System.Windows.Forms.GroupBox pixelCBufGroupBox; + private System.Windows.Forms.ContextMenuStrip rightclickMenu; + private System.Windows.Forms.ToolStripMenuItem showDisabled; + private System.Windows.Forms.ToolStripMenuItem showEmpty; + private System.Windows.Forms.TableLayoutPanel tableLayoutPanel9; + private System.Windows.Forms.GroupBox groupBox33; + private System.Windows.Forms.GroupBox groupBox37; + private System.Windows.Forms.PictureBox topologyDiagram; + private System.Windows.Forms.TableLayoutPanel tableLayoutPanel13; + private TreelistView.TreeListView iabuffers; + private TreelistView.TreeListView inputLayouts; + private System.Windows.Forms.GroupBox groupBox31; + private System.Windows.Forms.TableLayoutPanel tableLayoutPanel8; + private System.Windows.Forms.Label label2; + private System.Windows.Forms.Label label5; + private System.Windows.Forms.Label depthBias; + private System.Windows.Forms.Label depthBiasClamp; + private System.Windows.Forms.Label slopeScaledBias; + private System.Windows.Forms.Label label18; + private System.Windows.Forms.Label label19; + private System.Windows.Forms.Label label20; + private System.Windows.Forms.Label label23; + private System.Windows.Forms.PictureBox depthClip; + private System.Windows.Forms.PictureBox frontCCW; + private System.Windows.Forms.Label cullMode; + private System.Windows.Forms.Label fillMode; + private System.Windows.Forms.PictureBox lineAAEnable; + private System.Windows.Forms.PictureBox multisampleEnable; + private System.Windows.Forms.PictureBox scissorEnable; + private System.Windows.Forms.TableLayoutPanel tableLayoutPanel14; + private System.Windows.Forms.GroupBox groupBox32; + private TreelistView.TreeListView viewports; + private System.Windows.Forms.Panel panel8; + private TreelistView.TreeListView scissors; + private TreelistView.TreeListView targetOutputs; + private TreelistView.TreeListView blendOperations; + private System.Windows.Forms.TableLayoutPanel tableLayoutPanel10; + private System.Windows.Forms.GroupBox groupBox40; + private System.Windows.Forms.GroupBox groupBox41; + private System.Windows.Forms.GroupBox groupBox43; + private System.Windows.Forms.TableLayoutPanel tableLayoutPanel11; + private System.Windows.Forms.Label label3; + private System.Windows.Forms.Label label4; + private System.Windows.Forms.Label label6; + private System.Windows.Forms.Label label7; + private System.Windows.Forms.Panel panel9; + private System.Windows.Forms.Label sampleMask; + private System.Windows.Forms.PictureBox independentBlend; + private System.Windows.Forms.PictureBox alphaToCoverage; + private System.Windows.Forms.Label blendFactor; + private System.Windows.Forms.TableLayoutPanel tableLayoutPanel12; + private System.Windows.Forms.PictureBox depthEnable; + private System.Windows.Forms.Label label13; + private System.Windows.Forms.Label label21; + private System.Windows.Forms.Label depthFunc; + private System.Windows.Forms.PictureBox depthWrite; + private System.Windows.Forms.Label label11; + private TreelistView.TreeListView stencilFuncs; + private System.Windows.Forms.TableLayoutPanel tableLayoutPanel15; + private System.Windows.Forms.Label stencilReadMask; + private System.Windows.Forms.PictureBox stencilEnable; + private System.Windows.Forms.Label label12; + private System.Windows.Forms.Label label22; + private System.Windows.Forms.Label stencilWriteMask; + private System.Windows.Forms.Label label24; + private System.Windows.Forms.Label stencilRef; + private System.Windows.Forms.Label label8; + private System.Windows.Forms.FlowLayoutPanel flowLayoutPanel1; + private System.Windows.Forms.Label psShader; + private System.Windows.Forms.PictureBox psShaderCog; + private TreelistView.TreeListView psClasses; + private TreelistView.TreeListView psCBuffers; + private TreelistView.TreeListView psSamplers; + private TreelistView.TreeListView psResources; + private System.Windows.Forms.Panel panel5; + private System.Windows.Forms.TableLayoutPanel geomTableLayout; + private System.Windows.Forms.GroupBox groupBox22; + private System.Windows.Forms.FlowLayoutPanel flowLayoutPanel2; + private System.Windows.Forms.Label gsShader; + private System.Windows.Forms.PictureBox gsShaderCog; + private System.Windows.Forms.GroupBox geomClassGroupBox; + private TreelistView.TreeListView gsClasses; + private System.Windows.Forms.GroupBox groupBox24; + private TreelistView.TreeListView gsResources; + private System.Windows.Forms.GroupBox groupBox25; + private TreelistView.TreeListView gsSamplers; + private System.Windows.Forms.GroupBox geomCBufGroupBox; + private TreelistView.TreeListView gsCBuffers; + private System.Windows.Forms.Panel panel2; + private System.Windows.Forms.TableLayoutPanel tableLayoutPanel2; + private System.Windows.Forms.GroupBox groupBox3; + private System.Windows.Forms.FlowLayoutPanel flowLayoutPanel3; + private System.Windows.Forms.Label vsShader; + private System.Windows.Forms.PictureBox vsShaderCog; + private System.Windows.Forms.GroupBox groupBox5; + private TreelistView.TreeListView vsClasses; + private System.Windows.Forms.GroupBox groupBox7; + private TreelistView.TreeListView vsResources; + private System.Windows.Forms.GroupBox groupBox8; + private TreelistView.TreeListView vsSamplers; + private System.Windows.Forms.GroupBox groupBox9; + private TreelistView.TreeListView vsCBuffers; + private System.Windows.Forms.Panel panel3; + private System.Windows.Forms.TableLayoutPanel tableLayoutPanel3; + private System.Windows.Forms.GroupBox groupBox10; + private System.Windows.Forms.FlowLayoutPanel flowLayoutPanel4; + private System.Windows.Forms.Label hsShader; + private System.Windows.Forms.PictureBox hsShaderCog; + private System.Windows.Forms.GroupBox groupBox11; + private TreelistView.TreeListView hsClasses; + private System.Windows.Forms.GroupBox groupBox12; + private TreelistView.TreeListView hsResources; + private System.Windows.Forms.GroupBox groupBox14; + private TreelistView.TreeListView hsSamplers; + private System.Windows.Forms.GroupBox groupBox15; + private TreelistView.TreeListView hsCBuffers; + private System.Windows.Forms.Panel panel4; + private System.Windows.Forms.TableLayoutPanel tableLayoutPanel4; + private System.Windows.Forms.GroupBox groupBox16; + private System.Windows.Forms.FlowLayoutPanel flowLayoutPanel5; + private System.Windows.Forms.Label dsShader; + private System.Windows.Forms.PictureBox dsShaderCog; + private System.Windows.Forms.GroupBox groupBox17; + private TreelistView.TreeListView dsClasses; + private System.Windows.Forms.GroupBox groupBox18; + private TreelistView.TreeListView dsResources; + private System.Windows.Forms.GroupBox groupBox20; + private TreelistView.TreeListView dsSamplers; + private System.Windows.Forms.GroupBox groupBox21; + private TreelistView.TreeListView dsCBuffers; + private System.Windows.Forms.FlowLayoutPanel flowLayoutPanel6; + private System.Windows.Forms.ToolStrip toolStrip1; + private System.Windows.Forms.ToolStripButton showDisabledToolitem; + private System.Windows.Forms.ToolStripButton showEmptyToolitem; + private System.Windows.Forms.ToolStripSeparator toolStripSeparator2; + private Controls.PipelineFlowchart pipeFlow; + private System.Windows.Forms.Panel panel7; + private System.Windows.Forms.TableLayoutPanel tableLayoutPanel7; + private System.Windows.Forms.GroupBox groupBox27; + private TreelistView.TreeListView csClasses; + private System.Windows.Forms.GroupBox groupBox6; + private System.Windows.Forms.FlowLayoutPanel flowLayoutPanel7; + private System.Windows.Forms.Label csShader; + private System.Windows.Forms.PictureBox csShaderCog; + private System.Windows.Forms.GroupBox groupBox34; + private TreelistView.TreeListView csResources; + private System.Windows.Forms.GroupBox groupBox35; + private TreelistView.TreeListView csSamplers; + private System.Windows.Forms.GroupBox groupBox36; + private TreelistView.TreeListView csCBuffers; + private System.Windows.Forms.GroupBox groupBox38; + private TreelistView.TreeListView csUAVs; + private System.Windows.Forms.ToolTip toolTip; + private System.Windows.Forms.FlowLayoutPanel flowLayoutPanel8; + private System.Windows.Forms.TextBox groupX; + private System.Windows.Forms.TextBox groupY; + private System.Windows.Forms.TextBox groupZ; + private System.Windows.Forms.Button csDebug; + private System.Windows.Forms.Label label9; + private System.Windows.Forms.Label label10; + private System.Windows.Forms.TextBox threadX; + private System.Windows.Forms.TextBox threadY; + private System.Windows.Forms.TextBox threadZ; + private System.Windows.Forms.FlowLayoutPanel computeDebugControls; + private System.Windows.Forms.PictureBox vsShaderEdit; + private System.Windows.Forms.PictureBox hsShaderEdit; + private System.Windows.Forms.PictureBox dsShaderEdit; + private System.Windows.Forms.PictureBox gsShaderEdit; + private System.Windows.Forms.PictureBox psShaderEdit; + private System.Windows.Forms.PictureBox csShaderEdit; + private System.Windows.Forms.Label forcedSampleCount; + private System.Windows.Forms.Label label14; + private System.Windows.Forms.Label iaBytecode; + private System.Windows.Forms.PictureBox iaBytecodeCog; + private System.Windows.Forms.PictureBox meshView; + private System.Windows.Forms.Label iaBytecodeMismatch; + private System.Windows.Forms.ToolStripButton export; + private System.Windows.Forms.SaveFileDialog pipeExportDialog; + private TreelistView.TreeListView gsStreams; + private System.Windows.Forms.PictureBox conservativeRaster; + private System.Windows.Forms.PictureBox vsShaderSave; + private System.Windows.Forms.SaveFileDialog shaderSaveDialog; + private System.Windows.Forms.PictureBox hsShaderSave; + private System.Windows.Forms.PictureBox dsShaderSave; + private System.Windows.Forms.PictureBox gsShaderSave; + private System.Windows.Forms.PictureBox psShaderSave; + private System.Windows.Forms.PictureBox csShaderSave; + } +} \ No newline at end of file diff --git a/renderdocui/Windows/PipelineState/D3D12PipelineStateViewer.cs b/renderdocui/Windows/PipelineState/D3D12PipelineStateViewer.cs new file mode 100644 index 000000000..ccf704df5 --- /dev/null +++ b/renderdocui/Windows/PipelineState/D3D12PipelineStateViewer.cs @@ -0,0 +1,3903 @@ +/****************************************************************************** + * The MIT License (MIT) + * + * Copyright (c) 2016 Baldur Karlsson + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + ******************************************************************************/ + + +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Drawing; +using System.Linq; +using System.Text; +using System.IO; +using System.Xml; +using System.Windows.Forms; +using WeifenLuo.WinFormsUI.Docking; +using renderdocui.Code; +using renderdocui.Controls; +using renderdoc; + +namespace renderdocui.Windows.PipelineState +{ + public partial class D3D12PipelineStateViewer : UserControl, ILogViewerForm + { + private Core m_Core; + private DockContent m_DockContent; + + // keep track of the VB nodes (we want to be able to highlight them easily on hover) + private List m_VBNodes = new List(); + + // keep track of resource nodes that need view details + private List m_ViewDetailNodes = new List(); + + TreelistView.Node m_CurViewDetailNode = null; + + private struct IABufferTag + { + public IABufferTag(ResourceId i, ulong offs) + { + id = i; + offset = offs; + } + + public ResourceId id; + public ulong offset; + }; + + private class ViewTexTag + { + public ViewTexTag(D3D12PipelineState.ShaderStage.ResourceView v, FetchTexture t) + { + view = v; + tex = t; + } + + public D3D12PipelineState.ShaderStage.ResourceView view; + public FetchTexture tex; + }; + + private class ViewBufTag + { + public ViewBufTag(D3D12PipelineState.ShaderStage.ResourceView v, FetchBuffer b) + { + view = v; + buf = b; + } + + public D3D12PipelineState.ShaderStage.ResourceView view; + public FetchBuffer buf; + }; + + public D3D12PipelineStateViewer(Core core, DockContent c) + { + InitializeComponent(); + + if (SystemInformation.HighContrast) + toolStrip1.Renderer = new ToolStripSystemRenderer(); + + m_DockContent = c; + + inputLayouts.Font = core.Config.PreferredFont; + iabuffers.Font = core.Config.PreferredFont; + + csUAVs.Font = core.Config.PreferredFont; + gsStreams.Font = core.Config.PreferredFont; + + groupX.Font = groupY.Font = groupZ.Font = core.Config.PreferredFont; + threadX.Font = threadY.Font = threadZ.Font = core.Config.PreferredFont; + + vsShader.Font = vsResources.Font = vsSamplers.Font = vsCBuffers.Font = vsClasses.Font = core.Config.PreferredFont; + gsShader.Font = gsResources.Font = gsSamplers.Font = gsCBuffers.Font = gsClasses.Font = core.Config.PreferredFont; + hsShader.Font = hsResources.Font = hsSamplers.Font = hsCBuffers.Font = hsClasses.Font = core.Config.PreferredFont; + dsShader.Font = dsResources.Font = dsSamplers.Font = dsCBuffers.Font = dsClasses.Font = core.Config.PreferredFont; + psShader.Font = psResources.Font = psSamplers.Font = psCBuffers.Font = psClasses.Font = core.Config.PreferredFont; + csShader.Font = csResources.Font = csSamplers.Font = csCBuffers.Font = csClasses.Font = core.Config.PreferredFont; + + viewports.Font = core.Config.PreferredFont; + scissors.Font = core.Config.PreferredFont; + + targetOutputs.Font = core.Config.PreferredFont; + blendOperations.Font = core.Config.PreferredFont; + + pipeFlow.Font = new System.Drawing.Font(core.Config.PreferredFont.FontFamily, 11.25F, + System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + + pipeFlow.SetStages(new KeyValuePair[] { + new KeyValuePair("IA", "Input Assembler"), + new KeyValuePair("VS", "Vertex Shader"), + new KeyValuePair("HS", "Hull Shader"), + new KeyValuePair("DS", "Domain Shader"), + new KeyValuePair("GS", "Geometry Shader"), + new KeyValuePair("RS", "Rasterizer"), + new KeyValuePair("PS", "Pixel Shader"), + new KeyValuePair("OM", "Output Merger"), + new KeyValuePair("CS", "Compute Shader"), + }); + + pipeFlow.IsolateStage(8); // compute shader isolated + + pipeFlow.SetStagesEnabled(new bool[] { true, true, true, true, true, true, true, true, true }); + + //Icon = global::renderdocui.Properties.Resources.icon; + + SetStyle(ControlStyles.OptimizedDoubleBuffer, true); + + iaBytecodeMismatch.Text = ""; + iaBytecodeMismatch.Visible = false; + + toolTip.SetToolTip(vsShaderCog, "Open Shader Source"); + toolTip.SetToolTip(dsShaderCog, "Open Shader Source"); + toolTip.SetToolTip(hsShaderCog, "Open Shader Source"); + toolTip.SetToolTip(gsShaderCog, "Open Shader Source"); + toolTip.SetToolTip(psShaderCog, "Open Shader Source"); + toolTip.SetToolTip(csShaderCog, "Open Shader Source"); + + toolTip.SetToolTip(vsShader, "Open Shader Source"); + toolTip.SetToolTip(dsShader, "Open Shader Source"); + toolTip.SetToolTip(hsShader, "Open Shader Source"); + toolTip.SetToolTip(gsShader, "Open Shader Source"); + toolTip.SetToolTip(psShader, "Open Shader Source"); + toolTip.SetToolTip(csShader, "Open Shader Source"); + + OnLogfileClosed(); + + m_Core = core; + } + + public void OnLogfileClosed() + { + HideViewDetailsTooltip(); + m_ViewDetailNodes.Clear(); + + inputLayouts.Nodes.Clear(); + iabuffers.Nodes.Clear(); + topology.Text = ""; + topologyDiagram.Image = null; + + iaBytecodeMismatch.Text = ""; + iaBytecodeMismatch.Visible = false; + iaBytecode.Text = ""; + + ClearShaderState(vsShader, vsResources, vsSamplers, vsCBuffers, vsClasses); + ClearShaderState(gsShader, gsResources, gsSamplers, gsCBuffers, gsClasses); + ClearShaderState(hsShader, hsResources, hsSamplers, hsCBuffers, hsClasses); + ClearShaderState(dsShader, dsResources, dsSamplers, dsCBuffers, dsClasses); + ClearShaderState(psShader, psResources, psSamplers, psCBuffers, psClasses); + ClearShaderState(csShader, csResources, csSamplers, csCBuffers, csClasses); + + csUAVs.Nodes.Clear(); + gsStreams.Nodes.Clear(); + + var tick = global::renderdocui.Properties.Resources.tick; + + fillMode.Text = "Solid"; + cullMode.Text = "Front"; + frontCCW.Image = tick; + + scissorEnable.Image = tick; + lineAAEnable.Image = tick; + multisampleEnable.Image = tick; + + depthClip.Image = tick; + depthBias.Text = "0"; + depthBiasClamp.Text = "0.0"; + slopeScaledBias.Text = "0.0"; + + viewports.Nodes.Clear(); + scissors.Nodes.Clear(); + + targetOutputs.Nodes.Clear(); + blendOperations.Nodes.Clear(); + + alphaToCoverage.Image = tick; + independentBlend.Image = tick; + + blendFactor.Text = "0.00, 0.00, 0.00, 0.00"; + + sampleMask.Text = "FFFFFFFF"; + + depthEnable.Image = tick; + depthFunc.Text = "GREATER_EQUAL"; + depthWrite.Image = tick; + + stencilEnable.Image = tick; + stencilReadMask.Text = "FF"; + stencilWriteMask.Text = "FF"; + stencilRef.Text = "FF"; + + stencilFuncs.Nodes.Clear(); + + pipeFlow.SetStagesEnabled(new bool[] { true, true, true, true, true, true, true, true, true }); + } + + public void OnLogfileLoaded() + { + OnEventSelected(m_Core.CurEvent); + } + + private void EmptyRow(TreelistView.Node node) + { + node.BackColor = Color.FromArgb(255, 70, 70); + node.ForeColor = Color.Black; + } + + private void InactiveRow(TreelistView.Node node) + { + node.Italic = true; + } + + private void ViewDetailsRow(TreelistView.Node node) + { + node.BackColor = Color.Aquamarine; + node.ForeColor = Color.Black; + m_ViewDetailNodes.Add(node); + } + + private bool HasImportantViewParams(D3D12PipelineState.ShaderStage.ResourceView view, FetchTexture tex) + { + // we don't count 'upgrade typeless to typed' as important, we just display the typed format + // in the row since there's no real hidden important information there. The formats can't be + // different for any other reason (if the SRV format differs from the texture format, the + // texture must have been typeless. + if (view.HighestMip > 0 || view.FirstArraySlice > 0 || + (view.NumMipLevels < tex.mips && tex.mips > 1) || + (view.ArraySize < tex.arraysize && tex.arraysize > 1)) + return true; + + // in the case of the swapchain case, types can be different and it won't have shown + // up as taking the view's format because the swapchain already has one. Make sure to mark it + // as important + if (view.Format.compType != FormatComponentType.None && view.Format != tex.format) + return true; + + return false; + } + + private bool HasImportantViewParams(D3D12PipelineState.ShaderStage.ResourceView view, FetchBuffer buf) + { + if (view.FirstElement > 0 || view.NumElements*view.ElementSize < buf.length) + return true; + + return false; + } + + 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(); + } + + // Set a shader stage's resources and values + private void SetShaderState(FetchTexture[] texs, FetchBuffer[] bufs, + D3D12PipelineState.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 = stage.ShaderName; + + if (shaderDetails != null && shaderDetails.DebugInfo.entryFunc.Length > 0 && shaderDetails.DebugInfo.files.Length > 0) + { + string shaderfn = ""; + + int entryFile = shaderDetails.DebugInfo.entryFile; + if (entryFile < 0 || entryFile >= shaderDetails.DebugInfo.files.Length) + entryFile = 0; + + shaderfn = shaderDetails.DebugInfo.files[entryFile].BaseFilename; + + shader.Text = shaderDetails.DebugInfo.entryFunc + "()" + " - " + shaderfn; + } + + int vs = 0; + + vs = resources.VScrollValue(); + resources.BeginUpdate(); + resources.Nodes.Clear(); + if (stage.SRVs != null) + { + int i = 0; + foreach (var r in stage.SRVs) + { + ShaderResource shaderInput = null; + + if (shaderDetails != null) + { + foreach (var bind in shaderDetails.ReadOnlyResources) + { + if (bind.IsSRV && bind.bindPoint == i) + { + shaderInput = bind; + break; + } + } + } + + bool filledSlot = (r.Resource != ResourceId.Null); + bool usedSlot = (shaderInput != null); + + // 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 slotname = i.ToString(); + + if (shaderInput != null && shaderInput.name.Length > 0) + slotname += ": " + shaderInput.name; + + UInt64 w = 1; + UInt32 h = 1, d = 1; + UInt32 a = 1; + string format = "Unknown"; + string name = "Shader Resource " + r.Resource.ToString(); + string typename = "Unknown"; + object tag = null; + bool viewDetails = false; + + if (!filledSlot) + { + name = "Empty"; + format = "-"; + typename = "-"; + w = h = d = a = 0; + } + + // check to see if it's a texture + for (int t = 0; t < texs.Length; t++) + { + if (texs[t].ID == r.Resource) + { + w = texs[t].width; + h = texs[t].height; + d = texs[t].depth; + a = texs[t].arraysize; + format = texs[t].format.ToString(); + name = texs[t].name; + typename = texs[t].resType.Str(); + + if (texs[t].resType == ShaderResourceType.Texture2DMS || + texs[t].resType == ShaderResourceType.Texture2DMSArray) + { + typename += String.Format(" {0}x", texs[t].msSamp); + } + + // if it's a typeless format, show the format of the view + if (texs[t].format != r.Format) + { + format = "Viewed as " + r.Format.ToString(); + } + + tag = new ViewTexTag(r, texs[t]); + + if (HasImportantViewParams(r, texs[t])) + viewDetails = true; + } + } + + // if not a texture, it must be a buffer + for (int t = 0; t < bufs.Length; t++) + { + if (bufs[t].ID == r.Resource) + { + w = bufs[t].length; + h = 0; + d = 0; + a = 0; + format = ""; + name = bufs[t].name; + typename = "Buffer"; + + if (r.Flags.HasFlag(D3DBufferViewFlags.Raw)) + { + typename = "ByteAddressBuffer"; + } + else if (r.ElementSize > 0) + { + // for structured buffers, display how many 'elements' there are in the buffer + typename = "StructuredBuffer[" + (bufs[t].length / r.ElementSize) + "]"; + } + + if (r.Flags.HasFlag(D3DBufferViewFlags.Append) || r.Flags.HasFlag(D3DBufferViewFlags.Counter)) + { + typename += " (Count: " + r.BufferStructCount + ")"; + } + + // get the buffer type, whether it's just a basic type or a complex struct + if (shaderInput != null && !shaderInput.IsTexture) + { + if (r.Format.compType == FormatComponentType.None) + { + if (shaderInput.variableType.members.Length > 0) + format = "struct " + shaderInput.variableType.Name; + else + format = shaderInput.variableType.Name; + } + else + { + format = r.Format.ToString(); + } + } + + tag = new ViewBufTag(r, bufs[t]); + + if (HasImportantViewParams(r, bufs[t])) + viewDetails = true; + } + } + + var node = resources.Nodes.Add(new object[] { slotname, name, typename, w, h, d, a, format }); + + node.Image = global::renderdocui.Properties.Resources.action; + node.HoverImage = global::renderdocui.Properties.Resources.action_hover; + node.Tag = tag; + + if (!filledSlot) + EmptyRow(node); + + if (!usedSlot) + InactiveRow(node); + + if (viewDetails) + ViewDetailsRow(node); + } + i++; + } + } + resources.EndUpdate(); + resources.NodesSelection.Clear(); + resources.SetVScrollValue(vs); + + vs = samplers.VScrollValue(); + samplers.BeginUpdate(); + samplers.Nodes.Clear(); + if (stage.Samplers != null) + { + int i = 0; + foreach (var s in stage.Samplers) + { + ShaderResource shaderInput = null; + + if (shaderDetails != null) + { + foreach (var bind in shaderDetails.ReadOnlyResources) + { + if (bind.IsSampler && bind.bindPoint == i) + { + shaderInput = bind; + break; + } + } + } + + bool filledSlot = (s.AddressU.Length > 0); + bool usedSlot = (shaderInput != null); + + // 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 slotname = i.ToString(); + + if (shaderInput != null && shaderInput.name.Length > 0) + slotname += ": " + shaderInput.name; + + if (s.customSamplerName) + slotname += "(" + s.SamplerName + ")"; + + string borderColor = s.BorderColor[0].ToString() + ", " + + s.BorderColor[1].ToString() + ", " + + s.BorderColor[2].ToString() + ", " + + s.BorderColor[3].ToString(); + + string addressing = ""; + + string addPrefix = ""; + string addVal = ""; + + string[] addr = { s.AddressU, s.AddressV, s.AddressW }; + + // arrange like either UVW: WRAP or UV: WRAP, W: CLAMP + for (int a = 0; a < 3; a++) + { + string prefix = "" + "UVW"[a]; + + if (a == 0 || addr[a] == addr[a - 1]) + { + addPrefix += prefix; + } + else + { + addressing += addPrefix + ": " + addVal + ", "; + + addPrefix = prefix; + } + addVal = addr[a]; + } + + addressing += addPrefix + ": " + addVal; + + if(s.UseBorder) + addressing += String.Format("<{0}>", borderColor); + + string filter = s.Filter; + + if (s.MaxAniso > 0) + filter += String.Format(" {0}x", s.MaxAniso); + + if (s.UseComparison) + filter += String.Format(" ({0})", s.Comparison); + + var node = samplers.Nodes.Add(new object[] { slotname, addressing, + filter, + (s.MinLOD == -float.MaxValue ? "0" : s.MinLOD.ToString()) + " - " + + (s.MaxLOD == float.MaxValue ? "FLT_MAX" : s.MaxLOD.ToString()), + s.MipLODBias.ToString() }); + + if (!filledSlot) + EmptyRow(node); + + if (!usedSlot) + InactiveRow(node); + } + + i++; + } + } + samplers.EndUpdate(); + samplers.NodesSelection.Clear(); + samplers.SetVScrollValue(vs); + + vs = cbuffers.VScrollValue(); + cbuffers.BeginUpdate(); + cbuffers.Nodes.Clear(); + if (stage.ConstantBuffers != null) + { + UInt32 i = 0; + foreach (var b in stage.ConstantBuffers) + { + ConstantBlock shaderCBuf = null; + + if (shaderDetails != null && i < shaderDetails.ConstantBlocks.Length && shaderDetails.ConstantBlocks[i].name.Length > 0) + shaderCBuf = shaderDetails.ConstantBlocks[i]; + + bool filledSlot = (b.Buffer != ResourceId.Null); + bool usedSlot = (shaderCBuf != null); + + // 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 = "Constant Buffer " + b.Buffer.ToString(); + UInt64 length = 1; + int numvars = shaderCBuf != null ? shaderCBuf.variables.Length : 0; + UInt32 byteSize = shaderCBuf != null ? shaderCBuf.byteSize : 0; + + if (!filledSlot) + { + name = "Empty"; + length = 0; + } + + for (int t = 0; t < bufs.Length; t++) + { + if (bufs[t].ID == b.Buffer) + { + name = bufs[t].name; + length = bufs[t].length; + } + } + + string slotname = i.ToString(); + + if (shaderCBuf != null && shaderCBuf.name.Length > 0) + slotname += ": " + shaderCBuf.name; + + string sizestr; + if (byteSize == length) + sizestr = String.Format("{0} Variables, {1} bytes", numvars, length); + else + sizestr = String.Format("{0} Variables, {1} bytes needed, {2} provided", numvars, byteSize, length); + + if (length < byteSize) + filledSlot = false; + + string vecrange = String.Format("{0} - {1}", b.VecOffset, b.VecOffset + b.VecCount); + + var node = cbuffers.Nodes.Add(new object[] { slotname, name, vecrange, sizestr }); + + 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(); + cbuffers.SetVScrollValue(vs); + + vs = classes.VScrollValue(); + classes.BeginUpdate(); + classes.Nodes.Clear(); + { + UInt32 i = 0; + foreach (var inst in stage.ClassInstances) + { + string interfaceName = String.Format("Interface {0}", i); + + if (shaderDetails != null && i < shaderDetails.Interfaces.Length) + interfaceName = shaderDetails.Interfaces[i].Name; + + classes.Nodes.Add(new object[] { i.ToString(), interfaceName, inst }); + + i++; + } + } + classes.EndUpdate(); + classes.NodesSelection.Clear(); + classes.SetVScrollValue(vs); + + classes.Visible = classes.Parent.Visible = (stage.ClassInstances.Length > 0); + } + + // from https://gist.github.com/mjijackson/5311256 + private float CalcHue(float p, float q, float t) + { + if (t < 0) t += 1; + if (t > 1) t -= 1; + + if (t < 1.0f / 6.0f) + return p + (q - p) * 6.0f * t; + + if (t < 0.5f) + return q; + + if (t < 2.0f / 3.0f) + return p + (q - p) * (2.0f / 3.0f - t) * 6.0f; + + return p; + } + + private Color HSLColor(float h, float s, float l) + { + float r, g, b; + + if (s == 0) + { + r = g = b = l; // achromatic + } + else + { + var q = l < 0.5 ? l * (1 + s) : l + s - l * s; + var p = 2 * l - q; + r = CalcHue(p, q, h + 1.0f / 3.0f); + g = CalcHue(p, q, h); + b = CalcHue(p, q, h - 1.0f / 3.0f); + } + + return Color.FromArgb(255, (int)(r * 255), (int)(g * 255), (int)(b * 255)); + } + + private void UpdateState() + { + if (!m_Core.LogLoaded) + return; + + FetchTexture[] texs = m_Core.CurTextures; + FetchBuffer[] bufs = m_Core.CurBuffers; + D3D12PipelineState state = m_Core.CurD3D12PipelineState; + FetchDrawcall draw = m_Core.CurDrawcall; + + HideViewDetailsTooltip(); + m_ViewDetailNodes.Clear(); + + var tick = global::renderdocui.Properties.Resources.tick; + var cross = global::renderdocui.Properties.Resources.cross; + + bool[] usedVBuffers = new bool[128]; + UInt32[] layoutOffs = new UInt32[128]; + + for (int i = 0; i < 128; i++) + { + usedVBuffers[i] = false; + layoutOffs[i] = 0; + } + + //////////////////////////////////////////////// + // Input Assembler + + if(state.m_IA.Bytecode == null) + iaBytecode.Text = "None"; + else + iaBytecode.Text = state.m_IA.LayoutName; + + if (state.m_IA.Bytecode != null && state.m_IA.Bytecode.DebugInfo != null && state.m_IA.Bytecode.DebugInfo.entryFunc.Length > 0) + iaBytecode.Text += " (" + state.m_IA.Bytecode.DebugInfo.entryFunc + ")"; + + iaBytecodeMismatch.Text = ""; + iaBytecodeMismatch.Visible = false; + + // check for IA-VS mismatches here. + // This should be moved to a "Render Doctor" window reporting problems + if (state.m_IA.Bytecode != null && state.m_VS.ShaderDetails != null) + { + string mismatchDetails = ""; + + // VS wants more elements + if (state.m_IA.Bytecode.InputSig.Length < state.m_VS.ShaderDetails.InputSig.Length) + { + int excess = state.m_VS.ShaderDetails.InputSig.Length - state.m_IA.Bytecode.InputSig.Length; + + bool allSystem = true; + + // The VS signature can consume more elements as long as they are all system value types + // (ie. SV_VertexID or SV_InstanceID) + for (int e = 0; e < excess; e++) + { + if(state.m_VS.ShaderDetails.InputSig[state.m_VS.ShaderDetails.InputSig.Length - 1 - e].systemValue == SystemAttribute.None) + { + allSystem = false; + break; + } + } + + if (!allSystem) + mismatchDetails += "IA bytecode provides fewer elements than VS wants.\n"; + } + + { + var IA = state.m_IA.Bytecode.InputSig; + var VS = state.m_VS.ShaderDetails.InputSig; + + int count = Math.Min(IA.Length, VS.Length); + + for (int i = 0; i < count; i++) + { + // misorder or misnamed semantics + if (IA[i].semanticIdxName.ToUpperInvariant() != VS[i].semanticIdxName.ToUpperInvariant()) + mismatchDetails += String.Format("IA bytecode semantic {0}: {1} != VS bytecode semantic {0}: {2}\n", i, + IA[i].semanticIdxName, VS[i].semanticIdxName); + + // VS wants more components + if (IA[i].compCount < VS[i].compCount) + mismatchDetails += String.Format("IA bytecode semantic {0} ({1}) is {3}-wide, VS bytecode semantic {0} ({1}) {2} is {4}-wide\n", i, + IA[i].semanticIdxName, VS[i].semanticIdxName, + IA[i].compCount, VS[i].compCount); + + // VS wants different types + if (IA[i].compType != VS[i].compType) + mismatchDetails += String.Format("IA bytecode semantic {0} ({1}) is {3}, VS bytecode semantic {0} ({2}) is {4}\n", i, + IA[i].semanticIdxName, VS[i].semanticIdxName, + IA[i].compType, VS[i].compType); + } + } + + if (mismatchDetails.Length != 0) + { + iaBytecodeMismatch.Text = "Warning: Mismatch detected between bytecode used to create IA and currently bound VS inputs"; + toolTip.SetToolTip(iaBytecodeMismatch, mismatchDetails.Trim()); + iaBytecodeMismatch.Visible = true; + } + } + + int vs = 0; + + vs = inputLayouts.VScrollValue(); + inputLayouts.Nodes.Clear(); + inputLayouts.BeginUpdate(); + if (state.m_IA.layouts != null) + { + int i = 0; + foreach (var l in state.m_IA.layouts) + { + string byteOffs = l.ByteOffset.ToString(); + + // D3D12 specific value + if (l.ByteOffset == uint.MaxValue) + { + byteOffs = String.Format("APPEND_ALIGNED ({0})", layoutOffs[l.InputSlot]); + } + else + { + layoutOffs[l.InputSlot] = l.ByteOffset; + } + + layoutOffs[l.InputSlot] += l.Format.compByteWidth * l.Format.compCount; + + bool iaUsed = false; + + if (state.m_IA.Bytecode != null) + { + for (int ia = 0; ia < state.m_IA.Bytecode.InputSig.Length; ia++) + { + if (state.m_IA.Bytecode.InputSig[ia].semanticName.ToUpperInvariant() == l.SemanticName.ToUpperInvariant() && + state.m_IA.Bytecode.InputSig[ia].semanticIndex == l.SemanticIndex) + { + iaUsed = true; + break; + } + } + } + + i++; + + if(!iaUsed && !showDisabled.Checked) + continue; + + var node = inputLayouts.Nodes.Add(new object[] { + i, l.SemanticName, l.SemanticIndex.ToString(), l.Format, l.InputSlot.ToString(), byteOffs, + l.PerInstance ? "PER_INSTANCE" : "PER_VERTEX", l.InstanceDataStepRate.ToString() }); + + if (iaUsed) + usedVBuffers[l.InputSlot] = true; + + node.Image = global::renderdocui.Properties.Resources.action; + node.HoverImage = global::renderdocui.Properties.Resources.action_hover; + + if (!iaUsed) + InactiveRow(node); + } + } + inputLayouts.NodesSelection.Clear(); + inputLayouts.EndUpdate(); + inputLayouts.SetVScrollValue(vs); + + PrimitiveTopology topo = draw != null ? draw.topology : PrimitiveTopology.Unknown; + + topology.Text = topo.ToString(); + if (topo > PrimitiveTopology.PatchList) + { + int numCPs = (int)topo - (int)PrimitiveTopology.PatchList + 1; + + topology.Text = string.Format("PatchList ({0} Control Points)", numCPs); + } + + switch (topo) + { + case PrimitiveTopology.PointList: + topologyDiagram.Image = global::renderdocui.Properties.Resources.topo_pointlist; + break; + case PrimitiveTopology.LineList: + topologyDiagram.Image = global::renderdocui.Properties.Resources.topo_linelist; + break; + case PrimitiveTopology.LineStrip: + topologyDiagram.Image = global::renderdocui.Properties.Resources.topo_linestrip; + break; + case PrimitiveTopology.TriangleList: + topologyDiagram.Image = global::renderdocui.Properties.Resources.topo_trilist; + break; + case PrimitiveTopology.TriangleStrip: + topologyDiagram.Image = global::renderdocui.Properties.Resources.topo_tristrip; + break; + case PrimitiveTopology.LineList_Adj: + topologyDiagram.Image = global::renderdocui.Properties.Resources.topo_linelist_adj; + break; + case PrimitiveTopology.LineStrip_Adj: + topologyDiagram.Image = global::renderdocui.Properties.Resources.topo_linestrip_adj; + break; + case PrimitiveTopology.TriangleList_Adj: + topologyDiagram.Image = global::renderdocui.Properties.Resources.topo_trilist_adj; + break; + case PrimitiveTopology.TriangleStrip_Adj: + topologyDiagram.Image = global::renderdocui.Properties.Resources.topo_tristrip_adj; + break; + default: + topologyDiagram.Image = global::renderdocui.Properties.Resources.topo_patch; + break; + } + + vs = iabuffers.VScrollValue(); + iabuffers.Nodes.Clear(); + iabuffers.BeginUpdate(); + + bool ibufferUsed = draw != null && (draw.flags & DrawcallFlags.UseIBuffer) != 0; + + if (state.m_IA.ibuffer != null && state.m_IA.ibuffer.Buffer != ResourceId.Null) + { + if (ibufferUsed || showDisabled.Checked) + { + string ptr = "Buffer " + state.m_IA.ibuffer.Buffer.ToString(); + string name = ptr; + UInt64 length = 1; + + if (!ibufferUsed) + { + length = 0; + } + + for (int t = 0; t < bufs.Length; t++) + { + if (bufs[t].ID == state.m_IA.ibuffer.Buffer) + { + name = bufs[t].name; + length = bufs[t].length; + } + } + + var node = iabuffers.Nodes.Add(new object[] { "Index", name, draw != null ? draw.indexByteWidth : 0, state.m_IA.ibuffer.Offset, length }); + + node.Image = global::renderdocui.Properties.Resources.action; + node.HoverImage = global::renderdocui.Properties.Resources.action_hover; + node.Tag = new IABufferTag(state.m_IA.ibuffer.Buffer, draw != null ? draw.indexOffset : 0); + + if (!ibufferUsed) + InactiveRow(node); + + if (state.m_IA.ibuffer.Buffer == ResourceId.Null) + EmptyRow(node); + } + } + else + { + if (ibufferUsed || showEmpty.Checked) + { + var node = iabuffers.Nodes.Add(new object[] { "Index", "No Buffer Set", "-", "-", "-" }); + + node.Image = global::renderdocui.Properties.Resources.action; + node.HoverImage = global::renderdocui.Properties.Resources.action_hover; + node.Tag = new IABufferTag(state.m_IA.ibuffer.Buffer, draw != null ? draw.indexOffset : 0); + + EmptyRow(node); + + if (!ibufferUsed) + InactiveRow(node); + } + } + + m_VBNodes.Clear(); + + if (state.m_IA.vbuffers != null) + { + int i = 0; + foreach (var v in state.m_IA.vbuffers) + { + bool filledSlot = (v.Buffer != ResourceId.Null); + bool usedSlot = (usedVBuffers[i]); + + // 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 = "Buffer " + v.Buffer.ToString(); + UInt64 length = 1; + + for (int t = 0; t < bufs.Length; t++) + { + if (bufs[t].ID == v.Buffer) + { + name = bufs[t].name; + length = bufs[t].length; + } + } + + TreelistView.Node node = null; + + if(filledSlot) + node = iabuffers.Nodes.Add(new object[] { i, name, v.Stride, v.Offset, length }); + else + node = iabuffers.Nodes.Add(new object[] { i, "No Buffer Set", "-", "-", "-" }); + + node.Image = global::renderdocui.Properties.Resources.action; + node.HoverImage = global::renderdocui.Properties.Resources.action_hover; + node.Tag = new IABufferTag(v.Buffer, v.Offset); + + if (!filledSlot) + EmptyRow(node); + + if (!usedSlot) + InactiveRow(node); + + m_VBNodes.Add(node); + } + + i++; + } + } + iabuffers.NodesSelection.Clear(); + iabuffers.EndUpdate(); + iabuffers.SetVScrollValue(vs); + + SetShaderState(texs, bufs, state.m_VS, vsShader, vsResources, vsSamplers, vsCBuffers, vsClasses); + SetShaderState(texs, bufs, state.m_GS, gsShader, gsResources, gsSamplers, gsCBuffers, gsClasses); + SetShaderState(texs, bufs, state.m_HS, hsShader, hsResources, hsSamplers, hsCBuffers, hsClasses); + SetShaderState(texs, bufs, state.m_DS, dsShader, dsResources, dsSamplers, dsCBuffers, dsClasses); + SetShaderState(texs, bufs, state.m_PS, psShader, psResources, psSamplers, psCBuffers, psClasses); + SetShaderState(texs, bufs, state.m_CS, csShader, csResources, csSamplers, csCBuffers, csClasses); + + vs = csUAVs.VScrollValue(); + csUAVs.Nodes.Clear(); + csUAVs.BeginUpdate(); + + if (state.m_CS.UAVs != null) + { + int i = 0; + foreach (var r in state.m_CS.UAVs) + { + ShaderResource shaderInput = null; + + if (state.m_CS.ShaderDetails != null) + { + foreach (var bind in state.m_CS.ShaderDetails.ReadWriteResources) + { + if (bind.bindPoint == i) + { + shaderInput = bind; + break; + } + } + } + + bool filledSlot = (r.Resource != ResourceId.Null); + bool usedSlot = (shaderInput != null); + + // 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 slotname = i.ToString(); + + if (shaderInput != null && shaderInput.name.Length > 0) + slotname += ": " + shaderInput.name; + + UInt64 w = 1; + UInt32 h = 1, d = 1; + UInt32 a = 1; + string format = "Unknown"; + string name = "UAV " + r.Resource.ToString(); + string typename = "Unknown"; + object tag = null; + bool viewDetails = false; + + if (!filledSlot) + { + name = "Empty"; + format = "-"; + typename = "-"; + w = h = d = a = 0; + } + + for (int t = 0; t < texs.Length; t++) + { + if (texs[t].ID == r.Resource) + { + w = texs[t].width; + h = texs[t].height; + d = texs[t].depth; + a = texs[t].arraysize; + format = texs[t].format.ToString(); + name = texs[t].name; + typename = texs[t].resType.Str(); + + if (texs[t].resType == ShaderResourceType.Texture2DMS || + texs[t].resType == ShaderResourceType.Texture2DMSArray) + { + typename += String.Format(" {0}x", texs[t].msSamp); + } + + // if it's a typeless format, show the format of the view + if (texs[t].format != r.Format) + { + format = "Viewed as " + r.Format.ToString(); + } + + if (HasImportantViewParams(r, texs[t])) + viewDetails = true; + + tag = new ViewTexTag(r, texs[t]); + } + } + + for (int t = 0; t < bufs.Length; t++) + { + if (bufs[t].ID == r.Resource) + { + w = bufs[t].length; + h = 0; + d = 0; + a = 0; + format = ""; + name = bufs[t].name; + typename = "Buffer"; + + if (r.Flags.HasFlag(D3DBufferViewFlags.Raw)) + { + typename = "RWByteAddressBuffer"; + } + else if (r.ElementSize > 0) + { + // for structured buffers, display how many 'elements' there are in the buffer + typename = "RWStructuredBuffer[" + (bufs[t].length / r.ElementSize) + "]"; + } + + if (r.Flags.HasFlag(D3DBufferViewFlags.Append) || r.Flags.HasFlag(D3DBufferViewFlags.Counter)) + { + typename += " (Count: " + r.BufferStructCount + ")"; + } + + if (shaderInput != null && !shaderInput.IsTexture) + { + if (r.Format.compType == FormatComponentType.None) + { + if (shaderInput.variableType.members.Length > 0) + format = "struct " + shaderInput.variableType.Name; + else + format = shaderInput.variableType.Name; + } + else + { + format = r.Format.ToString(); + } + } + + if (HasImportantViewParams(r, bufs[t])) + viewDetails = true; + + tag = new ViewBufTag(r, bufs[t]); + } + } + + var node = csUAVs.Nodes.Add(new object[] { slotname, name, typename, w, h, d, a, format }); + + node.Tag = tag; + + node.Image = global::renderdocui.Properties.Resources.action; + node.HoverImage = global::renderdocui.Properties.Resources.action_hover; + + if (!filledSlot) + EmptyRow(node); + + if (!usedSlot) + InactiveRow(node); + + if (viewDetails) + ViewDetailsRow(node); + } + + i++; + } + } + csUAVs.NodesSelection.Clear(); + csUAVs.EndUpdate(); + csUAVs.SetVScrollValue(vs); + + bool streamoutSet = false; + vs = gsStreams.VScrollValue(); + gsStreams.BeginUpdate(); + gsStreams.Nodes.Clear(); + if (state.m_SO.Outputs != null) + { + int i = 0; + foreach (var s in state.m_SO.Outputs) + { + bool filledSlot = (s.Buffer != ResourceId.Null); + bool usedSlot = (filledSlot); + + streamoutSet |= filledSlot; + + // 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 = "Buffer " + s.Buffer.ToString(); + UInt64 length = 0; + + if (!filledSlot) + { + name = "Empty"; + } + + FetchBuffer fetch = null; + + for (int t = 0; t < bufs.Length; t++) + { + if (bufs[t].ID == s.Buffer) + { + name = bufs[t].name; + length = bufs[t].length; + + fetch = bufs[t]; + } + } + + var node = gsStreams.Nodes.Add(new object[] { i, name, length, s.Offset }); + + node.Image = global::renderdocui.Properties.Resources.action; + node.HoverImage = global::renderdocui.Properties.Resources.action_hover; + node.Tag = fetch; + + if (!filledSlot) + EmptyRow(node); + + if (!usedSlot) + InactiveRow(node); + } + i++; + } + } + gsStreams.EndUpdate(); + gsStreams.NodesSelection.Clear(); + gsStreams.SetVScrollValue(vs); + + gsStreams.Visible = gsStreams.Parent.Visible = streamoutSet; + if (streamoutSet) + geomTableLayout.ColumnStyles[1].Width = 50.0f; + else + geomTableLayout.ColumnStyles[1].Width = 0; + + //////////////////////////////////////////////// + // Rasterizer + + vs = viewports.VScrollValue(); + viewports.BeginUpdate(); + viewports.Nodes.Clear(); + if (state.m_RS.Viewports != null) + { + int i = 0; + foreach (var v in state.m_RS.Viewports) + { + if (v.Enabled || showEmpty.Checked) + { + var node = viewports.Nodes.Add(new object[] { i, v.TopLeft[0], v.TopLeft[1], v.Width, v.Height, v.MinDepth, v.MaxDepth }); + + if (v.Width == 0 || v.Height == 0 || v.MinDepth == v.MaxDepth) + EmptyRow(node); + + if (!v.Enabled) + InactiveRow(node); + } + + i++; + } + } + viewports.NodesSelection.Clear(); + viewports.EndUpdate(); + viewports.SetVScrollValue(vs); + + vs = scissors.VScrollValue(); + scissors.BeginUpdate(); + scissors.Nodes.Clear(); + if (state.m_RS.Scissors != null) + { + int i = 0; + foreach (var s in state.m_RS.Scissors) + { + if (s.Enabled || showEmpty.Checked) + { + var node = scissors.Nodes.Add(new object[] { i, s.left, s.top, s.right - s.left, s.bottom - s.top }); + + if (s.right == s.left || s.bottom == s.top) + EmptyRow(node); + + if (!s.Enabled) + InactiveRow(node); + } + + i++; + } + } + scissors.NodesSelection.Clear(); + scissors.EndUpdate(); + scissors.SetVScrollValue(vs); + + fillMode.Text = state.m_RS.m_State.FillMode.ToString(); + cullMode.Text = state.m_RS.m_State.CullMode.ToString(); + frontCCW.Image = state.m_RS.m_State.FrontCCW ? tick : cross; + + scissorEnable.Image = state.m_RS.m_State.ScissorEnable ? tick : cross; + lineAAEnable.Image = state.m_RS.m_State.AntialiasedLineEnable ? tick : cross; + multisampleEnable.Image = state.m_RS.m_State.MultisampleEnable ? tick : cross; + + depthClip.Image = state.m_RS.m_State.DepthClip ? tick : cross; + depthBias.Text = state.m_RS.m_State.DepthBias.ToString(); + depthBiasClamp.Text = Formatter.Format(state.m_RS.m_State.DepthBiasClamp); + slopeScaledBias.Text = Formatter.Format(state.m_RS.m_State.SlopeScaledDepthBias); + forcedSampleCount.Text = state.m_RS.m_State.ForcedSampleCount.ToString(); + conservativeRaster.Image = state.m_RS.m_State.ConservativeRasterization ? tick : cross; + + //////////////////////////////////////////////// + // Output Merger + + bool[] targets = new bool[8]; + + for (int i = 0; i < 8; i++) + targets[i] = false; + + vs = targetOutputs.VScrollValue(); + targetOutputs.BeginUpdate(); + targetOutputs.Nodes.Clear(); + if (state.m_OM.RenderTargets != null) + { + int i = 0; + foreach (var p in state.m_OM.RenderTargets) + { + if (p.Resource != ResourceId.Null || showEmpty.Checked) + { + UInt32 w = 1, h = 1, d = 1; + UInt32 a = 1; + string format = "Unknown"; + string name = "Texture " + p.ToString(); + string typename = "Unknown"; + object tag = null; + bool viewDetails = false; + + if (p.Resource == ResourceId.Null) + { + name = "Empty"; + format = "-"; + typename = "-"; + w = h = d = a = 0; + } + + for (int t = 0; t < texs.Length; t++) + { + if (texs[t].ID == p.Resource) + { + w = texs[t].width; + h = texs[t].height; + d = texs[t].depth; + a = texs[t].arraysize; + format = texs[t].format.ToString(); + name = texs[t].name; + typename = texs[t].resType.Str(); + + if (texs[t].resType == ShaderResourceType.Texture2DMS || + texs[t].resType == ShaderResourceType.Texture2DMSArray) + { + typename += String.Format(" {0}x", texs[t].msSamp); + } + + // if it's a typeless format, show the format of the view + if (texs[t].format != p.Format) + { + format = "Viewed as " + p.Format.ToString(); + } + + if (HasImportantViewParams(p, texs[t])) + viewDetails = true; + + tag = new ViewTexTag(p, texs[t]); + } + } + + var node = targetOutputs.Nodes.Add(new object[] { i, name, typename, w, h, d, a, format }); + + node.Image = global::renderdocui.Properties.Resources.action; + node.HoverImage = global::renderdocui.Properties.Resources.action_hover; + node.Tag = tag; + + if (p.Resource == ResourceId.Null) + { + EmptyRow(node); + } + else + { + targets[i] = true; + + if (viewDetails) + ViewDetailsRow(node); + } + } + + i++; + } + } + + if (state.m_OM.UAVs != null) + { + int i = 0; + foreach (var r in state.m_OM.UAVs) + { + ShaderResource shaderInput = null; + + if (state.m_PS.ShaderDetails != null) + { + foreach (var bind in state.m_PS.ShaderDetails.ReadWriteResources) + { + if (bind.bindPoint == i + state.m_OM.UAVStartSlot) + { + shaderInput = bind; + break; + } + } + } + + bool filledSlot = (r.Resource != ResourceId.Null); + bool usedSlot = (shaderInput != null); + + // note: we don't show empty UAVs as these "slots" are already showed as empty RTs. + + // 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" + ) + { + UInt64 w = 1; + UInt32 h = 1, d = 1; + UInt32 a = 1; + string format = "Unknown"; + string name = "UAV " + r.Resource.ToString(); + string typename = "Unknown"; + object tag = null; + bool viewDetails = false; + + if (!filledSlot) + { + name = "Empty"; + format = "-"; + typename = "-"; + w = h = d = a = 0; + } + + for (int t = 0; t < texs.Length; t++) + { + if (texs[t].ID == r.Resource) + { + w = texs[t].width; + h = texs[t].height; + d = texs[t].depth; + a = texs[t].arraysize; + format = texs[t].format.ToString(); + name = texs[t].name; + typename = texs[t].resType.Str(); + + if (texs[t].resType == ShaderResourceType.Texture2DMS || + texs[t].resType == ShaderResourceType.Texture2DMSArray) + { + typename += String.Format(" {0}x", texs[t].msSamp); + } + + // if it's a typeless format, show the format of the view + if (texs[t].format != r.Format) + { + format = "Viewed as " + r.Format.ToString(); + } + + if (HasImportantViewParams(r, texs[t])) + viewDetails = true; + + tag = new ViewTexTag(r, texs[t]); + } + } + + for (int t = 0; t < bufs.Length; t++) + { + if (bufs[t].ID == r.Resource) + { + w = bufs[t].length; + h = 0; + d = 0; + a = 0; + format = ""; + name = bufs[t].name; + typename = "Buffer"; + + if (r.Flags.HasFlag(D3DBufferViewFlags.Raw)) + { + typename = "RWByteAddressBuffer"; + } + else if (r.ElementSize > 0) + { + // for structured buffers, display how many 'elements' there are in the buffer + typename = "RWStructuredBuffer[" + (bufs[t].length / r.ElementSize) + "]"; + } + + if (r.Flags.HasFlag(D3DBufferViewFlags.Append) || r.Flags.HasFlag(D3DBufferViewFlags.Counter)) + { + typename += " (Count: " + r.BufferStructCount + ")"; + } + + if (shaderInput != null && !shaderInput.IsTexture) + { + if (r.Format.compType == FormatComponentType.None) + { + if (shaderInput.variableType.members.Length > 0) + format = "struct " + shaderInput.variableType.Name; + else + format = shaderInput.variableType.Name; + } + else + { + format = r.Format.ToString(); + } + } + + if (HasImportantViewParams(r, bufs[t])) + viewDetails = true; + + tag = new ViewBufTag(r, bufs[t]); + } + } + + var node = targetOutputs.Nodes.Add(new object[] { i + state.m_OM.UAVStartSlot, name, typename, w, h, d, a, format }); + + node.Image = global::renderdocui.Properties.Resources.action; + node.HoverImage = global::renderdocui.Properties.Resources.action_hover; + node.Tag = tag; + + if (r.Resource == ResourceId.Null) + EmptyRow(node); + + if (viewDetails) + ViewDetailsRow(node); + } + + i++; + } + } + + if (state.m_OM.DepthTarget.Resource != ResourceId.Null || showEmpty.Checked) + { + UInt32 w = 1, h = 1, d = 1; + UInt32 a = 1; + string format = "Unknown"; + string name = "Depth Target " + state.m_OM.DepthTarget.Resource.ToString(); + string typename = "Unknown"; + object tag = null; + bool viewDetails = false; + + if (state.m_OM.DepthTarget.Resource == ResourceId.Null) + { + name = "Empty"; + format = "-"; + typename = "-"; + w = h = d = a = 0; + } + + for (int t = 0; t < texs.Length; t++) + { + if (texs[t].ID == state.m_OM.DepthTarget.Resource) + { + w = texs[t].width; + h = texs[t].height; + d = texs[t].depth; + a = texs[t].arraysize; + format = texs[t].format.ToString(); + name = texs[t].name; + typename = texs[t].resType.Str(); + + if (texs[t].resType == ShaderResourceType.Texture2DMS || + texs[t].resType == ShaderResourceType.Texture2DMSArray) + { + typename += String.Format(" {0}x", texs[t].msSamp); + } + + // if it's a typeless format, show the format of the view + if (texs[t].format != state.m_OM.DepthTarget.Format) + { + format = "Viewed as " + state.m_OM.DepthTarget.Format.ToString(); + } + + if (HasImportantViewParams(state.m_OM.DepthTarget, texs[t])) + viewDetails = true; + + tag = new ViewTexTag(state.m_OM.DepthTarget, texs[t]); + } + } + + var node = targetOutputs.Nodes.Add(new object[] { "Depth", name, typename, w, h, d, a, format }); + + node.Image = global::renderdocui.Properties.Resources.action; + node.HoverImage = global::renderdocui.Properties.Resources.action_hover; + node.Tag = tag; + + if (viewDetails) + ViewDetailsRow(node); + + if (state.m_OM.DepthTarget.Resource == ResourceId.Null) + EmptyRow(node); + } + targetOutputs.EndUpdate(); + targetOutputs.NodesSelection.Clear(); + targetOutputs.SetVScrollValue(vs); + + vs = blendOperations.VScrollValue(); + blendOperations.BeginUpdate(); + blendOperations.Nodes.Clear(); + { + int i = 0; + foreach(var blend in state.m_OM.m_BlendState.Blends) + { + bool filledSlot = (blend.Enabled == true || targets[i]); + bool usedSlot = (targets[i]); + + // 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" + ) + { + var node = blendOperations.Nodes.Add(new object[] { i, + blend.Enabled, + blend.LogicEnabled, + + blend.m_Blend.Source, + blend.m_Blend.Destination, + blend.m_Blend.Operation, + + blend.m_AlphaBlend.Source, + blend.m_AlphaBlend.Destination, + blend.m_AlphaBlend.Operation, + + blend.LogicOp, + + ((blend.WriteMask & 0x1) == 0 ? "_" : "R") + + ((blend.WriteMask & 0x2) == 0 ? "_" : "G") + + ((blend.WriteMask & 0x4) == 0 ? "_" : "B") + + ((blend.WriteMask & 0x8) == 0 ? "_" : "A") + }); + + + if (!filledSlot) + EmptyRow(node); + + if (!usedSlot) + InactiveRow(node); + } + + i++; + } + } + blendOperations.NodesSelection.Clear(); + blendOperations.EndUpdate(); + blendOperations.SetVScrollValue(vs); + + + alphaToCoverage.Image = state.m_OM.m_BlendState.AlphaToCoverage ? tick : cross; + independentBlend.Image = state.m_OM.m_BlendState.IndependentBlend ? tick : cross; + + blendFactor.Text = state.m_OM.m_BlendState.BlendFactor[0].ToString("F2") + ", " + + state.m_OM.m_BlendState.BlendFactor[1].ToString("F2") + ", " + + state.m_OM.m_BlendState.BlendFactor[2].ToString("F2") + ", " + + state.m_OM.m_BlendState.BlendFactor[3].ToString("F2"); + + sampleMask.Text = state.m_OM.m_BlendState.SampleMask.ToString("X8"); + + depthEnable.Image = state.m_OM.m_State.DepthEnable ? tick : cross; + depthFunc.Text = state.m_OM.m_State.DepthFunc; + depthWrite.Image = state.m_OM.m_State.DepthWrites ? tick : cross; + + stencilEnable.Image = state.m_OM.m_State.StencilEnable ? tick : cross; + stencilReadMask.Text = state.m_OM.m_State.StencilReadMask.ToString("X2"); + stencilWriteMask.Text = state.m_OM.m_State.StencilWriteMask.ToString("X2"); + stencilRef.Text = state.m_OM.m_State.StencilRef.ToString("X2"); + + stencilFuncs.BeginUpdate(); + stencilFuncs.Nodes.Clear(); + stencilFuncs.Nodes.Add(new object[] { "Front", state.m_OM.m_State.m_FrontFace.Func, state.m_OM.m_State.m_FrontFace.FailOp, + state.m_OM.m_State.m_FrontFace.DepthFailOp, state.m_OM.m_State.m_FrontFace.PassOp }); + stencilFuncs.Nodes.Add(new object[] { "Back", state.m_OM.m_State.m_BackFace.Func, state.m_OM.m_State.m_BackFace.FailOp, + state.m_OM.m_State.m_BackFace.DepthFailOp, state.m_OM.m_State.m_BackFace.PassOp }); + stencilFuncs.EndUpdate(); + stencilFuncs.NodesSelection.Clear(); + + // highlight the appropriate stages in the flowchart + if (draw == null) + { + pipeFlow.SetStagesEnabled(new bool[] { true, true, true, true, true, true, true, true, true }); + } + else if ((draw.flags & DrawcallFlags.Dispatch) != 0) + { + pipeFlow.SetStagesEnabled(new bool[] { false, false, false, false, false, false, false, false, true }); + } + else + { + pipeFlow.SetStagesEnabled(new bool[] { + true, + true, + state.m_HS.Shader != ResourceId.Null, + state.m_DS.Shader != ResourceId.Null, + state.m_GS.Shader != ResourceId.Null, + true, + state.m_PS.Shader != ResourceId.Null, + true, + false + }); + + // if(streamout only) + //{ + // pipeFlow.Rasterizer = false; + // pipeFlow.OutputMerger = false; + //} + } + } + + public void OnEventSelected(UInt32 eventID) + { + UpdateState(); + } + + private void hideDisabledEmpty_MouseClick(object sender, MouseEventArgs e) + { + if (e.Button == MouseButtons.Right) + { + rightclickMenu.Show((Control)sender, new Point(e.X, e.Y)); + } + } + + private void hideDisabled_Click(object sender, EventArgs e) + { + showDisabled.Checked = !showDisabled.Checked; + showDisabledToolitem.Checked = showDisabled.Checked; + UpdateState(); + } + + private void hideEmpty_Click(object sender, EventArgs e) + { + showEmpty.Checked = !showEmpty.Checked; + showEmptyToolitem.Checked = showEmpty.Checked; + UpdateState(); + } + + private void HideViewDetailsTooltip() + { + if (m_CurViewDetailNode != null) + toolTip.Hide(m_CurViewDetailNode.OwnerView); + m_CurViewDetailNode = null; + } + + private void textureCell_MouseLeave(object sender, EventArgs e) + { + HideViewDetailsTooltip(); + } + + private void textureCell_MouseMove(object sender, MouseEventArgs e) + { + TreelistView.TreeListView view = sender as TreelistView.TreeListView; + + if (view == null) + { + HideViewDetailsTooltip(); + return; + } + + TreelistView.Node node = view.GetHitNode(); + + if (node == null) + { + HideViewDetailsTooltip(); + return; + } + + if (m_ViewDetailNodes.Contains(node)) + { + if (node != m_CurViewDetailNode) + { + // round y up to the next row + int y = (e.Location.Y - view.Columns.Options.HeaderHeight) / view.RowOptions.ItemHeight; + y = view.Columns.Options.HeaderHeight + (y + 1) * view.RowOptions.ItemHeight; + + string text = ""; + + ViewTexTag tex = (node.Tag as ViewTexTag); + ViewBufTag buf = (node.Tag as ViewBufTag); + + if (tex != null) + { + if (tex.tex.format != tex.view.Format) + text += String.Format("The texture is format {0}, the view treats it as {1}.\n", + tex.tex.format, tex.view.Format); + + if (tex.tex.mips > 1 && (tex.tex.mips != tex.view.NumMipLevels || tex.view.HighestMip > 0)) + { + if (tex.view.NumMipLevels == 1) + text += String.Format("The texture has {0} mips, the view covers mip {1}.\n", + tex.tex.mips, tex.view.HighestMip, tex.view.HighestMip); + else + text += String.Format("The texture has {0} mips, the view covers mips {1}-{2}.\n", + tex.tex.mips, tex.view.HighestMip, tex.view.HighestMip + tex.view.NumMipLevels - 1); + } + + if (tex.tex.arraysize > 1 && (tex.tex.arraysize != tex.view.ArraySize || tex.view.FirstArraySlice > 0)) + { + if (tex.view.ArraySize == 1) + text += String.Format("The texture has {0} array slices, the view covers slice {1}.\n", + tex.tex.arraysize, tex.view.FirstArraySlice, tex.view.FirstArraySlice); + else + text += String.Format("The texture has {0} array slices, the view covers slices {1}-{2}.\n", + tex.tex.arraysize, tex.view.FirstArraySlice, tex.view.FirstArraySlice + tex.view.ArraySize); + } + } + else if (buf != null) + { + text += String.Format("The view covers bytes {0}-{1} ({2} elements).\nThe buffer is {3} bytes in length ({4} elements).", + buf.view.FirstElement * buf.view.ElementSize, + (buf.view.FirstElement + buf.view.NumElements) * buf.view.ElementSize, + buf.view.NumElements, + buf.buf.length, + buf.buf.length / buf.view.ElementSize); + } + + toolTip.Show(text.TrimEnd(), view, e.Location.X + Cursor.Size.Width, y); + + m_CurViewDetailNode = node; + } + } + else + { + HideViewDetailsTooltip(); + } + } + + // launch the appropriate kind of viewer, depending on the type of resource that's in this node + private void textureCell_CellDoubleClick(TreelistView.Node node) + { + object tag = node.Tag; + + D3D12PipelineState.ShaderStage stage = GetStageForSender(node.OwnerView); + + if (stage == null) return; + + D3D12PipelineState.ShaderStage.ResourceView view = null; + + if (tag is ViewTexTag) + { + view = (tag as ViewTexTag).view; + tag = (tag as ViewTexTag).tex; + } + if (tag is ViewBufTag) + { + view = (tag as ViewBufTag).view; + tag = (tag as ViewBufTag).buf; + } + + if (tag is FetchTexture) + { + FetchTexture tex = (FetchTexture)tag; + + if (tex.resType == ShaderResourceType.Buffer) + { + var viewer = new BufferViewer(m_Core, false); + viewer.ViewRawBuffer(false, view.FirstElement, view.NumElements*view.ElementSize, tex.ID); + viewer.Show(m_DockContent.DockPanel); + } + else + { + var viewer = m_Core.GetTextureViewer(); + viewer.Show(m_DockContent.DockPanel); + if (!viewer.IsDisposed) + viewer.ViewTexture(tex.ID, true); + } + } + else if(tag is FetchBuffer) + { + FetchBuffer buf = (FetchBuffer)tag; + + string format = ""; + + var deets = stage.ShaderDetails; + + int bind = -1; + bool uav = false; + + if (view == null) + { + for (int i = 0; i < stage.SRVs.Length; i++) + { + if (stage.SRVs[i].Resource == buf.ID) + { + bind = i; + view = stage.SRVs[i]; + break; + } + } + + for (int i = 0; i < stage.UAVs.Length; i++) + { + if (stage.UAVs[i].Resource == buf.ID) + { + bind = i; + uav = true; + view = stage.UAVs[i]; + break; + } + if (stage == m_Core.CurD3D12PipelineState.m_PS && + m_Core.CurD3D12PipelineState.m_OM.UAVs[i].Resource == buf.ID) + { + bind = i + (int)m_Core.CurD3D12PipelineState.m_OM.UAVStartSlot; + uav = true; + view = m_Core.CurD3D12PipelineState.m_OM.UAVs[i]; + break; + } + } + } + else + { + for (int i = 0; i < stage.SRVs.Length; i++) + { + if (stage.SRVs[i] == view) + { + bind = i; + break; + } + } + + for (int i = 0; i < stage.UAVs.Length; i++) + { + if (stage.UAVs[i] == view) + { + bind = i; + uav = true; + break; + } + if (stage == m_Core.CurD3D12PipelineState.m_PS && + m_Core.CurD3D12PipelineState.m_OM.UAVs[i] == view) + { + bind = i + (int)m_Core.CurD3D12PipelineState.m_OM.UAVStartSlot; + uav = true; + break; + } + } + } + + ulong offs = 0; + ulong size = buf.length; + + if (view != null) + { + offs = view.FirstElement * view.ElementSize; + size = view.NumElements * view.ElementSize; + } + else + { + // last thing, see if it's a streamout buffer + + if (stage == m_Core.CurD3D12PipelineState.m_GS) + { + for(int i=0; i < m_Core.CurD3D12PipelineState.m_SO.Outputs.Length; i++) + { + if(buf.ID == m_Core.CurD3D12PipelineState.m_SO.Outputs[i].Buffer) + { + size -= m_Core.CurD3D12PipelineState.m_SO.Outputs[i].Offset; + offs += m_Core.CurD3D12PipelineState.m_SO.Outputs[i].Offset; + break; + } + } + } + } + + if (deets != null) + { + ShaderResource[] resources = uav ? deets.ReadWriteResources : deets.ReadOnlyResources; + foreach (var r in resources) + { + if (r.IsTexture) + continue; + + if (r.bindPoint == bind) + { + if (r.variableType.members.Length == 0) + { + if (view != null) + { + if (view.Format.special && view.Format.specialFormat == SpecialFormat.R10G10B10A2) + { + if (view.Format.compType == FormatComponentType.UInt) format = "uintten"; + if (view.Format.compType == FormatComponentType.UNorm) format = "unormten"; + } + else if (!view.Format.special) + { + switch (view.Format.compByteWidth) + { + case 1: + { + if (view.Format.compType == FormatComponentType.UNorm) format = "unormb"; + if (view.Format.compType == FormatComponentType.SNorm) format = "snormb"; + if (view.Format.compType == FormatComponentType.UInt) format = "ubyte"; + if (view.Format.compType == FormatComponentType.SInt) format = "byte"; + break; + } + case 2: + { + if (view.Format.compType == FormatComponentType.UNorm) format = "unormh"; + if (view.Format.compType == FormatComponentType.SNorm) format = "snormh"; + if (view.Format.compType == FormatComponentType.UInt) format = "ushort"; + if (view.Format.compType == FormatComponentType.SInt) format = "short"; + if (view.Format.compType == FormatComponentType.Float) format = "half"; + break; + } + case 4: + { + if (view.Format.compType == FormatComponentType.UNorm) format = "unormf"; + if (view.Format.compType == FormatComponentType.SNorm) format = "snormf"; + if (view.Format.compType == FormatComponentType.UInt) format = "uint"; + if (view.Format.compType == FormatComponentType.SInt) format = "int"; + if (view.Format.compType == FormatComponentType.Float) format = "float"; + break; + } + } + + if (view.Flags.HasFlag(D3DBufferViewFlags.Raw)) + format = "xint"; + + format += view.Format.compCount; + } + } + + // if view format is unknown, use the variable type + if (!view.Format.special && view.Format.compCount == 0 && + view.Format.compByteWidth == 0 && r.variableType.Name.Length > 0) + format = r.variableType.Name; + + format += " " + r.name + ";"; + } + else + { + format = "// struct " + r.variableType.Name + Environment.NewLine + + "{" + Environment.NewLine + FormatMembers(1, "", r.variableType.members) + "}"; + } + break; + } + } + } + + if (buf.ID != ResourceId.Null) + { + var viewer = new BufferViewer(m_Core, false); + if (format.Length == 0) + viewer.ViewRawBuffer(true, offs, size, buf.ID); + else + viewer.ViewRawBuffer(true, offs, size, buf.ID, format); + viewer.Show(m_DockContent.DockPanel); + } + } + } + + private void defaultCopyPaste_KeyDown(object sender, KeyEventArgs e) + { + if (!m_Core.LogLoaded) return; + + if (e.KeyCode == Keys.C && e.Control) + { + string text = ""; + + if (sender is DataGridView) + { + foreach (DataGridViewRow row in ((DataGridView)sender).SelectedRows) + { + foreach (var cell in row.Cells) + text += cell.ToString() + " "; + text += Environment.NewLine; + } + } + else if (sender is TreelistView.TreeListView) + { + TreelistView.NodesSelection sel = ((TreelistView.TreeListView)sender).NodesSelection; + + if (sel.Count > 0) + { + for (int i = 0; i < sel.Count; i++) + { + for (int v = 0; v < sel[i].Count; v++) + text += sel[i][v].ToString() + " "; + text += Environment.NewLine; + } + } + else + { + TreelistView.Node n = ((TreelistView.TreeListView)sender).SelectedNode; + if (n != null) + { + for (int v = 0; v < n.Count; v++) + text += n[v].ToString() + " "; + text += Environment.NewLine; + } + } + } + + try + { + if (text.Length > 0) + Clipboard.SetText(text); + } + catch (System.Exception) + { + try + { + if (text.Length > 0) + Clipboard.SetDataObject(text); + } + catch (System.Exception) + { + // give up! + } + } + } + } + + private void disableSelection_Leave(object sender, EventArgs e) + { + if (sender is DataGridView) + ((DataGridView)sender).ClearSelection(); + else if (sender is TreelistView.TreeListView) + { + TreelistView.TreeListView tv = (TreelistView.TreeListView)sender; + + int vs = tv.VScrollValue(); + tv.NodesSelection.Clear(); + tv.FocusedNode = null; + tv.SetVScrollValue(vs); + } + } + + private void disableSelection_VisibleChanged(object sender, EventArgs e) + { + ((DataGridView)sender).ClearSelection(); + ((DataGridView)sender).AutoResizeColumns(DataGridViewAutoSizeColumnsMode.AllCells); + } + + private void iabuffers_NodeDoubleClicked(TreelistView.Node node) + { + if (node.Tag is IABufferTag) + { + IABufferTag tag = (IABufferTag)node.Tag; + + if (tag.id != ResourceId.Null) + { + var viewer = new BufferViewer(m_Core, false); + viewer.ViewRawBuffer(true, tag.offset, ulong.MaxValue, tag.id); + viewer.Show(m_DockContent.DockPanel); + } + } + } + + private void inputLayouts_NodeDoubleClick(TreelistView.Node node) + { + var viewer = m_Core.GetMeshViewer(); + viewer.Show(m_DockContent.DockPanel); + } + + private D3D12PipelineState.ShaderStage GetStageForSender(object sender) + { + D3D12PipelineState.ShaderStage stage = null; + + if (!m_Core.LogLoaded) + return null; + + object cur = sender; + + while (cur is Control) + { + if (cur == tabVS) + stage = m_Core.CurD3D12PipelineState.m_VS; + else if (cur == tabGS) + stage = m_Core.CurD3D12PipelineState.m_GS; + else if (cur == tabHS) + stage = m_Core.CurD3D12PipelineState.m_HS; + else if (cur == tabDS) + stage = m_Core.CurD3D12PipelineState.m_DS; + else if (cur == tabPS) + stage = m_Core.CurD3D12PipelineState.m_PS; + else if (cur == tabCS) + stage = m_Core.CurD3D12PipelineState.m_CS; + else if (cur == tabOM) + stage = m_Core.CurD3D12PipelineState.m_PS; + + if (stage != null) + return stage; + + Control c = (Control)cur; + + if(c.Parent == null) + break; + + cur = ((Control)cur).Parent; + } + + System.Diagnostics.Debug.Fail("Unrecognised control calling event handler"); + + return null; + } + + private void shader_Click(object sender, EventArgs e) + { + if (sender == iaBytecode || sender == iaBytecodeCog) + { + if(m_Core.CurD3D12PipelineState != null && + m_Core.CurD3D12PipelineState.m_IA.Bytecode != null) + { + (new ShaderViewer(m_Core, m_Core.CurD3D12PipelineState.m_IA.Bytecode, ShaderStageType.Vertex, null, "")) + .Show(m_DockContent.DockPanel); + } + + return; + } + + D3D12PipelineState.ShaderStage stage = GetStageForSender(sender); + + if (stage == null) return; + + ShaderReflection shaderDetails = stage.ShaderDetails; + + if (stage.Shader == ResourceId.Null) return; + + ShaderViewer s = new ShaderViewer(m_Core, shaderDetails, stage.stage, null, ""); + + s.Show(m_DockContent.DockPanel); + } + + private void shaderSave_Click(object sender, EventArgs e) + { + D3D12PipelineState.ShaderStage stage = GetStageForSender(sender); + + if (stage == null) return; + + ShaderReflection shaderDetails = stage.ShaderDetails; + + if (stage.Shader == ResourceId.Null) return; + + shaderSaveDialog.FileName = ""; + + DialogResult res = shaderSaveDialog.ShowDialog(); + + if (res == DialogResult.OK) + { + try + { + FileStream writer = File.Create(shaderSaveDialog.FileName); + + writer.Write(shaderDetails.RawBytes, 0, shaderDetails.RawBytes.Length); + + writer.Flush(); + writer.Close(); + } + catch (System.Exception ex) + { + MessageBox.Show("Couldn't save to " + shaderSaveDialog.FileName + Environment.NewLine + ex.ToString(), "Cannot save", + MessageBoxButtons.OK, MessageBoxIcon.Error); + } + } + } + + private void MakeShaderVariablesHLSL(bool cbufferContents, ShaderConstant[] vars, ref string struct_contents, ref string struct_defs) + { + var nl = Environment.NewLine; + var nl2 = Environment.NewLine + Environment.NewLine; + + foreach (var v in vars) + { + if (v.type.members.Length > 0) + { + string def = "struct " + v.type.descriptor.name + " {" + nl; + + if(!struct_defs.Contains(def)) + { + string contents = ""; + MakeShaderVariablesHLSL(false, v.type.members, ref contents, ref struct_defs); + + struct_defs += def + contents + "};" + nl2; + } + } + + struct_contents += "\t" + v.type.descriptor.name + " " + v.name; + + char comp = 'x'; + if (v.reg.comp == 1) comp = 'y'; + if (v.reg.comp == 2) comp = 'z'; + if (v.reg.comp == 3) comp = 'w'; + + if (cbufferContents) struct_contents += String.Format(" : packoffset(c{0}.{1});", v.reg.vec, comp); + else struct_contents += ";"; + + struct_contents += nl; + } + } + + // start a shaderviewer to edit this shader, optionally generating stub HLSL if there isn't + // HLSL source available for this shader. + private void shaderedit_Click(object sender, EventArgs e) + { + D3D12PipelineState.ShaderStage stage = GetStageForSender(sender); + + if (stage == null) return; + + ShaderReflection shaderDetails = stage.ShaderDetails; + + if (stage.Shader == ResourceId.Null || shaderDetails == null) return; + + var entryFunc = String.Format("EditedShader{0}S", stage.stage.ToString()[0]); + + string mainfile = ""; + + var files = new Dictionary(StringComparer.InvariantCultureIgnoreCase); + if (shaderDetails.DebugInfo.entryFunc.Length > 0 && shaderDetails.DebugInfo.files.Length > 0) + { + entryFunc = shaderDetails.DebugInfo.entryFunc; + + foreach (var s in shaderDetails.DebugInfo.files) + { + if (files.ContainsKey(s.FullFilename)) + renderdoc.StaticExports.LogText(String.Format("Duplicate full filename {0}", s.FullFilename)); + else + files.Add(s.FullFilename, s.filetext); + } + + int entryFile = shaderDetails.DebugInfo.entryFile; + if (entryFile < 0 || entryFile >= shaderDetails.DebugInfo.files.Length) + entryFile = 0; + + mainfile = shaderDetails.DebugInfo.files[entryFile].FullFilename; + } + else + { + var nl = Environment.NewLine; + var nl2 = Environment.NewLine + Environment.NewLine; + + string hlsl = "// No HLSL available - function stub generated" + nl2; + + var shType = String.Format("{0}S", stage.stage.ToString()[0]); + + for (int i = 0; i < 2; i++) + { + ShaderResource[] resources = (i == 0 ? shaderDetails.ReadOnlyResources : shaderDetails.ReadWriteResources); + foreach (var res in resources) + { + if (res.IsSampler) + { + hlsl += String.Format("//SamplerComparisonState {0} : register(s{1}); // can't disambiguate", res.name, res.bindPoint) + nl; + hlsl += String.Format("SamplerState {0} : register(s{1}); // can't disambiguate", res.name, res.bindPoint) + nl; + } + else + { + char regChar = 't'; + + if (i == 1) + { + hlsl += "RW"; + regChar = 'u'; + } + + if (res.IsTexture) + { + hlsl += String.Format("{0}<{1}> {2} : register({3}{4});", res.resType.ToString(), res.variableType.descriptor.name, res.name, regChar, res.bindPoint) + nl; + } + else + { + if (res.variableType.descriptor.rows == 1) + hlsl += String.Format("Buffer<{0}> {1} : register({2}{3});", res.variableType.descriptor.name, res.name, regChar, res.bindPoint) + nl; + else + hlsl += String.Format("StructuredBuffer<{0}> {1} : register({2}{3});", res.variableType.descriptor.name, res.name, regChar, res.bindPoint) + nl; + } + } + } + } + + hlsl += nl2; + + string cbuffers = ""; + + int cbufIdx = 0; + foreach (var cbuf in shaderDetails.ConstantBlocks) + { + if (cbuf.name.Length > 0 && cbuf.variables.Length > 0) + { + cbuffers += String.Format("cbuffer {0} : register(b{1}) {{", cbuf.name, cbufIdx) + nl; + MakeShaderVariablesHLSL(true, cbuf.variables, ref cbuffers, ref hlsl); + cbuffers += "};" + nl2; + } + cbufIdx++; + } + + hlsl += cbuffers + nl2; + + hlsl += String.Format("struct {0}Input{1}{{{1}", shType, nl); + foreach(var sig in shaderDetails.InputSig) + hlsl += String.Format("\t{0} {1} : {2};" + nl, sig.TypeString, sig.varName.Length > 0 ? sig.varName : ("param" + sig.regIndex), sig.D3DSemanticString); + hlsl += "};" + nl2; + + hlsl += String.Format("struct {0}Output{1}{{{1}", shType, nl); + foreach (var sig in shaderDetails.OutputSig) + hlsl += String.Format("\t{0} {1} : {2};" + nl, sig.TypeString, sig.varName.Length > 0 ? sig.varName : ("param" + sig.regIndex), sig.D3DSemanticString); + hlsl += "};" + nl2; + + hlsl += String.Format("{0}Output {1}(in {0}Input IN){2}{{{2}\t{0}Output OUT = ({0}Output)0;{2}{2}\t// ...{2}{2}\treturn OUT;{2}}}{2}", shType, entryFunc, nl); + + mainfile = "generated.hlsl"; + + files.Add(mainfile, hlsl); + } + + if (files.Count == 0) + return; + + D3D12PipelineStateViewer pipeviewer = this; + + ShaderViewer sv = new ShaderViewer(m_Core, false, entryFunc, files, + + // Save Callback + (ShaderViewer viewer, Dictionary updatedfiles) => + { + string compileSource = updatedfiles[mainfile]; + + // try and match up #includes against the files that we have. This isn't always + // possible as fxc only seems to include the source for files if something in + // that file was included in the compiled output. So you might end up with + // dangling #includes - we just have to ignore them + int offs = compileSource.IndexOf("#include"); + + while(offs >= 0) + { + // search back to ensure this is a valid #include (ie. not in a comment). + // Must only see whitespace before, then a newline. + int ws = Math.Max(0, offs-1); + while (ws >= 0 && (compileSource[ws] == ' ' || compileSource[ws] == '\t')) + ws--; + + // not valid? jump to next. + if (ws > 0 && compileSource[ws] != '\n') + { + offs = compileSource.IndexOf("#include", offs + 1); + continue; + } + + int start = ws+1; + + bool tail = true; + + int lineEnd = compileSource.IndexOf("\n", start+1); + if(lineEnd == -1) + { + lineEnd = compileSource.Length; + tail = false; + } + + ws = offs + "#include".Length; + while (compileSource[ws] == ' ' || compileSource[ws] == '\t') + ws++; + + string line = compileSource.Substring(offs, lineEnd-offs+1); + + if (compileSource[ws] != '<' && compileSource[ws] != '"') + { + viewer.ShowErrors("Invalid #include directive found:\r\n" + line); + return; + } + + // find matching char, either <> or ""; + int end = compileSource.IndexOf(compileSource[ws] == '"' ? '"' : '>', ws + 1); + + if (end == -1) + { + viewer.ShowErrors("Invalid #include directive found:\r\n" + line); + return; + } + + string fname = compileSource.Substring(ws + 1, end - ws - 1); + + string fileText = ""; + + // look for exact match first + if (updatedfiles.ContainsKey(fname)) + { + fileText = updatedfiles[fname]; + } + else + { + string search = renderdocui.Code.Helpers.SafeGetFileName(fname); + // if not, try and find the same filename (this is not proper include handling!) + foreach (var k in updatedfiles.Keys) + { + if (renderdocui.Code.Helpers.SafeGetFileName(k) == search) + { + fileText = updatedfiles[k]; + break; + } + } + + if(fileText == "") + fileText = "// Can't find file " + fname + "\n"; + } + + compileSource = compileSource.Substring(0, offs) + "\n\n" + fileText + "\n\n" + (tail ? compileSource.Substring(lineEnd + 1) : ""); + + // need to start searching from the beginning - wasteful but allows nested includes to work + offs = compileSource.IndexOf("#include"); + } + + if (updatedfiles.ContainsKey("@cmdline")) + compileSource = updatedfiles["@cmdline"] + "\n\n" + compileSource; + + // invoke off to the ReplayRenderer to replace the log's shader + // with our edited one + m_Core.Renderer.BeginInvoke((ReplayRenderer r) => + { + string errs = ""; + + uint flags = shaderDetails.DebugInfo.compileFlags; + + ResourceId from = stage.Shader; + ResourceId to = r.BuildTargetShader(entryFunc, compileSource, flags, stage.stage, out errs); + + viewer.BeginInvoke((MethodInvoker)delegate { viewer.ShowErrors(errs); }); + if (to == ResourceId.Null) + { + r.RemoveReplacement(from); + pipeviewer.BeginInvoke((MethodInvoker)delegate { m_Core.RefreshStatus(); }); + } + else + { + r.ReplaceResource(from, to); + pipeviewer.BeginInvoke((MethodInvoker)delegate { m_Core.RefreshStatus(); }); + } + }); + }, + + // Close Callback + () => + { + // remove the replacement on close (we could make this more sophisticated if there + // was a place to control replaced resources/shaders). + m_Core.Renderer.BeginInvoke((ReplayRenderer r) => + { + r.RemoveReplacement(stage.Shader); + pipeviewer.BeginInvoke((MethodInvoker)delegate { m_Core.RefreshStatus(); }); + }); + }); + + sv.Show(m_DockContent.DockPanel); + } + + private void ShowCBuffer(D3D12PipelineState.ShaderStage stage, UInt32 slot) + { + if (stage.ShaderDetails != null && + (stage.ShaderDetails.ConstantBlocks.Length <= slot || + stage.ShaderDetails.ConstantBlocks[slot].name.Length == 0) + ) + { + // unused cbuffer, open regular buffer viewer + var viewer = new BufferViewer(m_Core, false); + + if (stage.ConstantBuffers.Length < slot) + return; + + var buf = stage.ConstantBuffers[slot]; + viewer.ViewRawBuffer(true, buf.VecOffset * 4 * sizeof(float), buf.VecCount * 4 * sizeof(float), buf.Buffer); + viewer.Show(m_DockContent.DockPanel); + + return; + } + + var existing = ConstantBufferPreviewer.Has(stage.stage, slot, 0); + if (existing != null) + { + existing.Show(); + return; + } + + var prev = new ConstantBufferPreviewer(m_Core, stage.stage, slot, 0); + + prev.ShowDock(m_DockContent.Pane, DockAlignment.Right, 0.3); + } + + private void cbuffers_NodeDoubleClicked(TreelistView.Node node) + { + D3D12PipelineState.ShaderStage stage = GetStageForSender(node.OwnerView); + + if (stage != null && node.Tag is UInt32) + { + ShowCBuffer(stage, (UInt32)node.Tag); + } + } + + private void CBuffers_CellDoubleClick(object sender, DataGridViewCellEventArgs e) + { + D3D12PipelineState.ShaderStage stage = GetStageForSender(sender); + + object tag = ((DataGridView)sender).Rows[e.RowIndex].Tag; + + if (stage != null && tag is UInt32) + { + ShowCBuffer(stage, (UInt32)tag); + } + } + + private string FormatMembers(int indent, string nameprefix, ShaderConstant[] vars) + { + string indentstr = new string(' ', indent*4); + + string ret = ""; + + int i = 0; + + foreach (var v in vars) + { + if (v.type.members.Length > 0) + { + if (i > 0) + ret += "\n"; + ret += indentstr + "// struct " + v.type.Name + Environment.NewLine; + ret += indentstr + "{" + Environment.NewLine + + FormatMembers(indent + 1, v.name + "_", v.type.members) + + indentstr + "}" + Environment.NewLine; + if (i < vars.Length-1) + ret += Environment.NewLine; + } + else + { + string arr = ""; + if (v.type.descriptor.elements > 1) + arr = String.Format("[{0}]", v.type.descriptor.elements); + ret += indentstr + v.type.Name + " " + nameprefix + v.name + arr + ";" + Environment.NewLine; + } + + i++; + } + + return ret; + } + + private void shaderCog_MouseEnter(object sender, EventArgs e) + { + if (sender == iaBytecode || sender == iaBytecodeCog) + { + if (m_Core.CurD3D12PipelineState != null && + m_Core.CurD3D12PipelineState.m_IA.Bytecode != null) + iaBytecodeCog.Image = global::renderdocui.Properties.Resources.action_hover; + + return; + } + + if (sender is PictureBox) + { + D3D12PipelineState.ShaderStage stage = GetStageForSender(sender); + + if (stage != null && stage.Shader != ResourceId.Null) + (sender as PictureBox).Image = global::renderdocui.Properties.Resources.action_hover; + } + + if (sender is Label) + { + D3D12PipelineState.ShaderStage stage = GetStageForSender(sender); + + if (stage == null) return; + + if (stage.stage == ShaderStageType.Vertex) shaderCog_MouseEnter(vsShaderCog, e); + if (stage.stage == ShaderStageType.Domain) shaderCog_MouseEnter(dsShaderCog, e); + if (stage.stage == ShaderStageType.Hull) shaderCog_MouseEnter(hsShaderCog, e); + if (stage.stage == ShaderStageType.Geometry) shaderCog_MouseEnter(gsShaderCog, e); + if (stage.stage == ShaderStageType.Pixel) shaderCog_MouseEnter(psShaderCog, e); + if (stage.stage == ShaderStageType.Compute) shaderCog_MouseEnter(csShaderCog, e); + } + } + + private void shaderCog_MouseLeave(object sender, EventArgs e) + { + if (sender == iaBytecode || sender == iaBytecodeCog) + { + iaBytecodeCog.Image = global::renderdocui.Properties.Resources.action; + + return; + } + + if (sender is PictureBox) + { + (sender as PictureBox).Image = global::renderdocui.Properties.Resources.action; + } + + if (sender is Label) + { + D3D12PipelineState.ShaderStage stage = GetStageForSender(sender); + + if (stage == null) return; + + if (stage.stage == ShaderStageType.Vertex) shaderCog_MouseLeave(vsShaderCog, e); + if (stage.stage == ShaderStageType.Domain) shaderCog_MouseLeave(dsShaderCog, e); + if (stage.stage == ShaderStageType.Hull) shaderCog_MouseLeave(hsShaderCog, e); + if (stage.stage == ShaderStageType.Geometry) shaderCog_MouseLeave(gsShaderCog, e); + if (stage.stage == ShaderStageType.Pixel) shaderCog_MouseLeave(psShaderCog, e); + if (stage.stage == ShaderStageType.Compute) shaderCog_MouseLeave(csShaderCog, e); + } + } + + private void pipeFlow_SelectedStageChanged(object sender, EventArgs e) + { + stageTabControl.SelectedIndex = pipeFlow.SelectedStage; + } + + private void csDebug_Click(object sender, EventArgs e) + { + uint gx = 0, gy = 0, gz = 0; + uint tx = 0, ty = 0, tz = 0; + + if (m_Core.CurD3D12PipelineState == null || + m_Core.CurD3D12PipelineState.m_CS.Shader == ResourceId.Null || + m_Core.CurD3D12PipelineState.m_CS.ShaderDetails == null) + return; + + if (uint.TryParse(groupX.Text, out gx) && + uint.TryParse(groupY.Text, out gy) && + uint.TryParse(groupZ.Text, out gz) && + uint.TryParse(threadX.Text, out tx) && + uint.TryParse(threadY.Text, out ty) && + uint.TryParse(threadZ.Text, out tz)) + { + uint[] groupdim = m_Core.CurDrawcall.dispatchDimension; + uint[] threadsdim = m_Core.CurDrawcall.dispatchThreadsDimension; + + for (int i = 0; i < 3; i++) + if (threadsdim[i] == 0) + threadsdim[i] = m_Core.CurD3D12PipelineState.m_CS.ShaderDetails.DispatchThreadsDimension[i]; + + string debugContext = String.Format("Group [{0},{1},{2}] Thread [{3},{4},{5}]", gx, gy, gz, tx, ty, tz); + + if (gx >= groupdim[0] || + gy >= groupdim[1] || + gz >= groupdim[2] || + tx >= threadsdim[0] || + ty >= threadsdim[1] || + tz >= threadsdim[2]) + { + string bounds = String.Format("Group Dimensions [{0},{1},{2}] Thread Dimensions [{3},{4},{5}]", + groupdim[0], groupdim[1], groupdim[2], + threadsdim[0], threadsdim[1], threadsdim[2]); + + MessageBox.Show(String.Format("{0} is out of bounds\n{1}", debugContext, bounds), "Couldn't debug compute shader.", + MessageBoxButtons.OK, MessageBoxIcon.Information); + return; + } + + ShaderDebugTrace trace = null; + + ShaderReflection shaderDetails = m_Core.CurD3D12PipelineState.m_CS.ShaderDetails; + + m_Core.Renderer.Invoke((ReplayRenderer r) => + { + trace = r.DebugThread(new uint[] { gx, gy, gz }, new uint[] { tx, ty, tz }); + }); + + if (trace == null || trace.states.Length == 0) + { + MessageBox.Show("Couldn't debug compute shader.", "Uh Oh!", + MessageBoxButtons.OK, MessageBoxIcon.Information); + return; + } + + this.BeginInvoke(new Action(() => + { + ShaderViewer s = new ShaderViewer(m_Core, shaderDetails, ShaderStageType.Compute, trace, debugContext); + + s.Show(m_DockContent.DockPanel); + })); + } + else + { + MessageBox.Show("Enter numbers for group and thread ID.", "Invalid thread", MessageBoxButtons.OK, MessageBoxIcon.Error); + } + } + + private void meshView_MouseEnter(object sender, EventArgs e) + { + meshView.BackColor = SystemColors.ButtonShadow; + } + + private void meshView_MouseLeave(object sender, EventArgs e) + { + meshView.BackColor = SystemColors.Control; + } + + private void meshView_Click(object sender, EventArgs e) + { + var viewer = m_Core.GetMeshViewer(); + viewer.Show(m_DockContent.DockPanel); + } + + private float GetHueForVB(int i) + { + int idx = ((i+1) * 21) % 32; // space neighbouring colours reasonably distinctly + return (float)(idx) / 32.0f; + } + + private void inputLayouts_MouseMove(object sender, MouseEventArgs e) + { + if (m_Core.CurD3D12PipelineState == null) return; + + Point mousePoint = inputLayouts.PointToClient(Cursor.Position); + var hoverNode = inputLayouts.CalcHitNode(mousePoint); + + ia_MouseLeave(sender, e); + + var IA = m_Core.CurD3D12PipelineState.m_IA; + + if (hoverNode != null) + { + int index = inputLayouts.Nodes.GetNodeIndex(hoverNode); + + if (index >= 0 && index < IA.layouts.Length) + { + uint slot = IA.layouts[index].InputSlot; + + HighlightIASlot(slot); + } + } + } + + private void HighlightIASlot(uint slot) + { + var IA = m_Core.CurD3D12PipelineState.m_IA; + + Color c = HSLColor(GetHueForVB((int)slot), 1.0f, 0.95f); + + if (slot < m_VBNodes.Count) + { + m_VBNodes[(int)slot].DefaultBackColor = c; + m_VBNodes[(int)slot].ForeColor = Color.Black; + } + + for (int i = 0; i < inputLayouts.Nodes.Count; i++) + { + var n = inputLayouts.Nodes[i]; + if (IA.layouts[i].InputSlot == slot) + { + n.DefaultBackColor = c; + n.ForeColor = Color.Black; + } + else + { + n.DefaultBackColor = Color.Transparent; + n.ForeColor = Color.Transparent; + } + } + + inputLayouts.Invalidate(); + iabuffers.Invalidate(); + } + + private void ia_MouseLeave(object sender, EventArgs e) + { + foreach (var n in iabuffers.Nodes) + { + n.DefaultBackColor = Color.Transparent; + n.ForeColor = Color.Transparent; + } + + foreach (var n in inputLayouts.Nodes) + { + n.DefaultBackColor = Color.Transparent; + n.ForeColor = Color.Transparent; + } + + inputLayouts.Invalidate(); + iabuffers.Invalidate(); + } + + private void iabuffers_MouseMove(object sender, MouseEventArgs e) + { + if (m_Core.CurD3D12PipelineState == null) return; + + Point mousePoint = iabuffers.PointToClient(Cursor.Position); + var hoverNode = iabuffers.CalcHitNode(mousePoint); + + ia_MouseLeave(sender, e); + + if (hoverNode != null) + { + int idx = m_VBNodes.IndexOf(hoverNode); + if (idx >= 0) + HighlightIASlot((uint)idx); + else + hoverNode.DefaultBackColor = SystemColors.ControlLight; + } + } + + private void ExportHTMLTable(XmlTextWriter writer, string[] cols, object[][] rows) + { + writer.WriteStartElement("table"); + + { + writer.WriteStartElement("thead"); + writer.WriteStartElement("tr"); + + foreach (var col in cols) + { + writer.WriteStartElement("th"); + writer.WriteString(col); + writer.WriteEndElement(); + } + + writer.WriteEndElement(); + writer.WriteEndElement(); + } + + { + writer.WriteStartElement("tbody"); + + if (rows.Length == 0) + { + writer.WriteStartElement("tr"); + + for (int i = 0; i < cols.Length; i++) + { + writer.WriteStartElement("td"); + writer.WriteString("-"); + writer.WriteEndElement(); + } + + writer.WriteEndElement(); + } + else + { + foreach (var row in rows) + { + writer.WriteStartElement("tr"); + + foreach (var el in row) + { + writer.WriteStartElement("td"); + writer.WriteString(el.ToString()); + writer.WriteEndElement(); + } + + writer.WriteEndElement(); + } + } + + writer.WriteEndElement(); + } + + writer.WriteEndElement(); + } + + private void ExportHTMLTable(XmlTextWriter writer, string[] cols, object[] rows) + { + ExportHTMLTable(writer, cols, new object[][] { rows }); + } + + private object[] ExportViewHTML(D3D12PipelineState.ShaderStage.ResourceView view, int i, ShaderReflection refl, string extraParams) + { + FetchTexture[] texs = m_Core.CurTextures; + FetchBuffer[] bufs = m_Core.CurBuffers; + + ShaderResource shaderInput = null; + + bool rw = false; + + if (refl != null) + { + foreach (var bind in refl.ReadOnlyResources) + { + if (bind.bindPoint == i) + { + shaderInput = bind; + break; + } + } + foreach (var bind in refl.ReadWriteResources) + { + if (bind.bindPoint == i) + { + shaderInput = bind; + rw = true; + break; + } + } + } + + string name = "Empty"; + string typename = "Unknown"; + string format = "Unknown"; + UInt64 w = 1; + UInt32 h = 1, d = 1; + UInt32 a = 0; + + string viewFormat = view.Format.ToString(); + + FetchTexture tex = null; + FetchBuffer buf = null; + + // check to see if it's a texture + for (int t = 0; t < texs.Length; t++) + { + if (texs[t].ID == view.Resource) + { + w = texs[t].width; + h = texs[t].height; + d = texs[t].depth; + a = texs[t].arraysize; + format = texs[t].format.ToString(); + name = texs[t].name; + typename = texs[t].resType.ToString(); + + tex = texs[t]; + } + } + + // if not a texture, it must be a buffer + for (int t = 0; t < bufs.Length; t++) + { + if (bufs[t].ID == view.Resource) + { + w = bufs[t].length; + h = 0; + d = 0; + a = 0; + format = view.Format.ToString(); + name = bufs[t].name; + typename = "Buffer"; + + if (view.Flags.HasFlag(D3DBufferViewFlags.Raw)) + { + typename = rw ? "RWByteAddressBuffer" : "ByteAddressBuffer"; + } + else if (view.ElementSize > 0) + { + // for structured buffers, display how many 'elements' there are in the buffer + typename = (rw ? "RWStructuredBuffer" : "StructuredBuffer") + "[" + (bufs[t].length / view.ElementSize) + "]"; + } + + if (view.Flags.HasFlag(D3DBufferViewFlags.Append) || view.Flags.HasFlag(D3DBufferViewFlags.Counter)) + { + typename += " (Count: " + view.BufferStructCount + ")"; + } + + if (shaderInput != null && !shaderInput.IsTexture) + { + if (view.Format.compType == FormatComponentType.None) + { + if (shaderInput.variableType.members.Length > 0) + viewFormat = format = "struct " + shaderInput.variableType.Name; + else + viewFormat = format = shaderInput.variableType.Name; + } + else + { + format = view.Format.ToString(); + } + } + + buf = bufs[t]; + } + } + + string viewParams = ""; + + if(buf != null) + { + viewParams = String.Format("First Element: {0}, Num Elements {1}, Flags {2}", view.FirstElement, view.NumElements, view.Flags); + } + + if (tex != null) + { + if(tex.mips > 1) + viewParams = String.Format("Highest Mip: {0}, Num Mips: {1}", view.HighestMip, view.NumMipLevels); + + if (tex.arraysize > 1) + { + if (viewParams.Length > 0) + viewParams += ", "; + viewParams += String.Format("First Slice: {0}, Array Size: {1}", view.FirstArraySlice, view.ArraySize); + } + } + + if (viewParams == "") + viewParams = extraParams; + else + viewParams += ", " + extraParams; + + return new object[] { + i, name, + view.Type, typename, + w, h, d, a, + viewFormat, format, + viewParams }; + } + + private void ExportHTML(XmlTextWriter writer, D3D12PipelineState.InputAssembler ia) + { + FetchBuffer[] bufs = m_Core.CurBuffers; + + { + writer.WriteStartElement("h3"); + writer.WriteString("Input Layouts"); + writer.WriteEndElement(); + + List rows = new List(); + + int i = 0; + foreach (var l in ia.layouts) + { + rows.Add(new object[] { i, l.SemanticName, l.SemanticIndex, l.Format, l.InputSlot, l.ByteOffset, l.PerInstance, l.InstanceDataStepRate }); + + i++; + } + + ExportHTMLTable(writer, new string[] { "Slot", "Semantic Name", "Semantic Index", "Format", "Input Slot", "Byte Offset", "Per Instance", "Instance Data Step Rate" }, rows.ToArray()); + } + + { + writer.WriteStartElement("h3"); + writer.WriteString("Vertex Buffers"); + writer.WriteEndElement(); + + List rows = new List(); + + int i = 0; + foreach (var vb in ia.vbuffers) + { + string name = "Buffer " + vb.Buffer.ToString(); + UInt64 length = 0; + + if (vb.Buffer == ResourceId.Null) + { + continue; + } + else + { + for (int t = 0; t < bufs.Length; t++) + { + if (bufs[t].ID == vb.Buffer) + { + name = bufs[t].name; + length = bufs[t].length; + } + } + } + + rows.Add(new object[] { i, name, vb.Stride, vb.Offset, length }); + + i++; + } + + ExportHTMLTable(writer, new string[] { "Slot", "Buffer", "Stride", "Offset", "Byte Length" }, rows.ToArray()); + } + + { + writer.WriteStartElement("h3"); + writer.WriteString("Index Buffer"); + writer.WriteEndElement(); + + string name = "Buffer " + ia.ibuffer.Buffer.ToString(); + UInt64 length = 0; + + if (ia.ibuffer.Buffer == ResourceId.Null) + { + name = "Empty"; + } + else + { + for (int t = 0; t < bufs.Length; t++) + { + if (bufs[t].ID == ia.ibuffer.Buffer) + { + name = bufs[t].name; + length = bufs[t].length; + } + } + } + + string ifmt = "UNKNOWN"; + if (m_Core.CurDrawcall.indexByteWidth == 2) + ifmt = "R16_UINT"; + if (m_Core.CurDrawcall.indexByteWidth == 4) + ifmt = "R32_UINT"; + + ExportHTMLTable(writer, new string[] { "Buffer", "Format", "Offset", "Byte Length" }, + new object[] { name, ifmt, ia.ibuffer.Offset.ToString(), length.ToString() }); + } + + writer.WriteStartElement("p"); + writer.WriteEndElement(); + + ExportHTMLTable(writer, new string[] { "Primitive Topology" }, new object[] { m_Core.CurDrawcall.topology.Str() }); + } + + private void ExportHTML(XmlTextWriter writer, D3D12PipelineState.ShaderStage sh) + { + FetchBuffer[] bufs = m_Core.CurBuffers; + + { + writer.WriteStartElement("h3"); + writer.WriteString("Shader"); + writer.WriteEndElement(); + + ShaderReflection shaderDetails = sh.ShaderDetails; + + string shadername = "Unknown"; + + if (sh.Shader == ResourceId.Null) + shadername = "Unbound"; + else + shadername = sh.ShaderName; + + if (shaderDetails != null && shaderDetails.DebugInfo.entryFunc.Length > 0 && shaderDetails.DebugInfo.files.Length > 0) + shadername = shaderDetails.DebugInfo.entryFunc + "()" + " - " + + shaderDetails.DebugInfo.files[0].BaseFilename; + + writer.WriteStartElement("p"); + writer.WriteString(shadername); + writer.WriteEndElement(); + + if (sh.Shader == ResourceId.Null) + return; + } + + { + writer.WriteStartElement("h3"); + writer.WriteString("Resources"); + writer.WriteEndElement(); + + List rows = new List(); + + for (int i = 0; i < sh.SRVs.Length; i++) + { + if (sh.SRVs[i].View == ResourceId.Null) continue; + + rows.Add(ExportViewHTML(sh.SRVs[i], i, sh.ShaderDetails, "")); + } + + ExportHTMLTable(writer, + new string[] { + "Slot", "Name", + "View Type", "Resource Type", + "Width", "Height", "Depth", "Array Size", + "View Format", "Resource Format", + "View Parameters", + }, + rows.ToArray()); + } + + if (sh.stage == ShaderStageType.Compute) + { + writer.WriteStartElement("h3"); + writer.WriteString("Unordered Access Views"); + writer.WriteEndElement(); + + List rows = new List(); + + for (int i = 0; i < sh.UAVs.Length; i++) + { + if (sh.UAVs[i].View == ResourceId.Null) continue; + + rows.Add(ExportViewHTML(sh.UAVs[i], i, sh.ShaderDetails, "")); + } + + ExportHTMLTable(writer, + new string[] { + "Slot", "Name", + "View Type", "Resource Type", + "Width", "Height", "Depth", "Array Size", + "View Format", "Resource Format", + "View Parameters", + }, + rows.ToArray()); + } + + { + writer.WriteStartElement("h3"); + writer.WriteString("Samplers"); + writer.WriteEndElement(); + + List rows = new List(); + + for (int i = 0; i < sh.Samplers.Length; i++) + { + D3D12PipelineState.ShaderStage.Sampler s = sh.Samplers[i]; + + if (s.Samp == ResourceId.Null) continue; + + string borderColor = s.BorderColor[0].ToString() + ", " + + s.BorderColor[1].ToString() + ", " + + s.BorderColor[2].ToString() + ", " + + s.BorderColor[3].ToString(); + + string addressing = ""; + + string addPrefix = ""; + string addVal = ""; + + string[] addr = { s.AddressU, s.AddressV, s.AddressW }; + + // arrange like either UVW: WRAP or UV: WRAP, W: CLAMP + for (int a = 0; a < 3; a++) + { + string prefix = "" + "UVW"[a]; + + if (a == 0 || addr[a] == addr[a - 1]) + { + addPrefix += prefix; + } + else + { + addressing += addPrefix + ": " + addVal + ", "; + + addPrefix = prefix; + } + addVal = addr[a]; + } + + addressing += addPrefix + ": " + addVal; + + rows.Add(new object[] { i, addressing, borderColor, + s.Comparison, s.Filter, s.MaxAniso.ToString(), + s.MinLOD == -float.MaxValue ? "-FLT_MAX" : s.MinLOD.ToString(), + s.MaxLOD == float.MaxValue ? "FLT_MAX" : s.MaxLOD.ToString(), + s.MipLODBias.ToString() }); + } + + ExportHTMLTable(writer, + new string[] { + "Slot", "Addressing", "Border Colour", + "Comparison", "Filter", "Max Anisotropy", + "Min LOD", "Max LOD", "Mip Bias", + }, + rows.ToArray()); + } + + { + writer.WriteStartElement("h3"); + writer.WriteString("Constant Buffers"); + writer.WriteEndElement(); + + List rows = new List(); + + for (int i = 0; i < sh.ConstantBuffers.Length; i++) + { + ConstantBlock shaderCBuf = null; + + if (sh.ConstantBuffers[i].Buffer == ResourceId.Null) continue; + + if (sh.ShaderDetails != null && i < sh.ShaderDetails.ConstantBlocks.Length && + sh.ShaderDetails.ConstantBlocks[i].name.Length > 0) + shaderCBuf = sh.ShaderDetails.ConstantBlocks[i]; + + string name = "Constant Buffer " + sh.ConstantBuffers[i].Buffer.ToString(); + UInt64 length = 1; + int numvars = shaderCBuf != null ? shaderCBuf.variables.Length : 0; + UInt32 byteSize = shaderCBuf != null ? shaderCBuf.byteSize : 0; + + if (sh.ConstantBuffers[i].Buffer == ResourceId.Null) + { + name = "Empty"; + length = 0; + } + + for (int t = 0; t < bufs.Length; t++) + { + if (bufs[t].ID == sh.ConstantBuffers[i].Buffer) + { + name = bufs[t].name; + length = bufs[t].length; + } + } + + rows.Add(new object[] { i, name, sh.ConstantBuffers[i].VecOffset, sh.ConstantBuffers[i].VecCount, numvars, byteSize, length }); + } + + ExportHTMLTable(writer, new string[] { "Slot", "Buffer", "Vector Offset", "Vector Count", "Number of Variables", "Bytes Needed", "Bytes Provided" }, rows.ToArray()); + } + + if (sh.ClassInstances.Length > 0) + { + writer.WriteStartElement("h3"); + writer.WriteString("Class Instances"); + writer.WriteEndElement(); + + List rows = new List(); + + for (int i = 0; i < sh.ClassInstances.Length; i++) + { + string interfaceName = String.Format("Interface {0}", i); + + if (sh.ShaderDetails != null && i < sh.ShaderDetails.Interfaces.Length) + interfaceName = sh.ShaderDetails.Interfaces[i].Name; + + rows.Add(new object[] { i, interfaceName, sh.ClassInstances[i] }); + } + + ExportHTMLTable(writer, new string[] { "Slot", "Interface Name", "Instance Name", }, rows.ToArray()); + } + } + + private void ExportHTML(XmlTextWriter writer, D3D12PipelineState.Streamout so) + { + FetchBuffer[] bufs = m_Core.CurBuffers; + + { + writer.WriteStartElement("h3"); + writer.WriteString("Stream Out Targets"); + writer.WriteEndElement(); + + List rows = new List(); + + int i = 0; + foreach (var o in so.Outputs) + { + string name = "Buffer " + o.Buffer.ToString(); + UInt64 length = 0; + + if (o.Buffer == ResourceId.Null) + { + name = "Empty"; + } + else + { + for (int t = 0; t < bufs.Length; t++) + { + if (bufs[t].ID == o.Buffer) + { + name = bufs[t].name; + length = bufs[t].length; + } + } + } + + rows.Add(new object[] { i, name, o.Offset, length }); + + i++; + } + + ExportHTMLTable(writer, new string[] { "Slot", "Buffer", "Offset", "Byte Length" }, rows.ToArray()); + } + } + + private void ExportHTML(XmlTextWriter writer, D3D12PipelineState.Rasterizer rs) + { + { + writer.WriteStartElement("h3"); + writer.WriteString("States"); + writer.WriteEndElement(); + + ExportHTMLTable(writer, + new string[] { "Fill Mode", "Cull Mode", "Front CCW" }, + new object[] { rs.m_State.FillMode, rs.m_State.CullMode, rs.m_State.FrontCCW ? "Yes" : "No" }); + + writer.WriteStartElement("p"); + writer.WriteEndElement(); + + ExportHTMLTable(writer, + new string[] { "Scissor Enable", "Line AA Enable", "Multisample Enable", "Forced Sample Count", "Conservative Raster" }, + new object[] { rs.m_State.ScissorEnable ? "Yes" : "No", rs.m_State.AntialiasedLineEnable ? "Yes" : "No", + rs.m_State.MultisampleEnable ? "Yes" : "No", rs.m_State.ForcedSampleCount, + rs.m_State.ConservativeRasterization ? "Yes" : "No" }); + + writer.WriteStartElement("p"); + writer.WriteEndElement(); + + ExportHTMLTable(writer, + new string[] { "Depth Clip", "Depth Bias", "Depth Bias Clamp", "Slope Scaled Bias" }, + new object[] { rs.m_State.DepthClip ? "Yes" : "No", rs.m_State.DepthBias, + Formatter.Format(rs.m_State.DepthBiasClamp), Formatter.Format(rs.m_State.SlopeScaledDepthBias)}); + } + + { + writer.WriteStartElement("h3"); + writer.WriteString("Viewports"); + writer.WriteEndElement(); + + List rows = new List(); + + int i = 0; + foreach (var v in rs.Viewports) + { + if (v.Width == v.Height && v.Width == 0 && v.Height == 0) continue; + + rows.Add(new object[] { i, v.TopLeft[0], v.TopLeft[1], v.Width, v.Height, v.MinDepth, v.MaxDepth }); + + i++; + } + + ExportHTMLTable(writer, new string[] { "Slot", "X", "Y", "Width", "Height", "Min Depth", "Max Depth" }, rows.ToArray()); + } + + { + writer.WriteStartElement("h3"); + writer.WriteString("Scissors"); + writer.WriteEndElement(); + + List rows = new List(); + + int i = 0; + foreach (var s in rs.Scissors) + { + if (s.right == 0 && s.bottom == 0) continue; + + rows.Add(new object[] { i, s.left, s.top, s.right - s.left, s.bottom - s.top }); + + i++; + } + + ExportHTMLTable(writer, new string[] { "Slot", "X", "Y", "Width", "Height" }, rows.ToArray()); + } + } + + private void ExportHTML(XmlTextWriter writer, D3D12PipelineState.OutputMerger om) + { + { + writer.WriteStartElement("h3"); + writer.WriteString("Blend State"); + writer.WriteEndElement(); + + var blendFactor = om.m_BlendState.BlendFactor[0].ToString("F2") + ", " + + om.m_BlendState.BlendFactor[1].ToString("F2") + ", " + + om.m_BlendState.BlendFactor[2].ToString("F2") + ", " + + om.m_BlendState.BlendFactor[3].ToString("F2"); + + ExportHTMLTable(writer, + new string[] { "Independent Blend Enable", "Alpha to Coverage", "Sample Mask", "Blend Factor" }, + new object[] { om.m_BlendState.IndependentBlend ? "Yes" : "No", om.m_BlendState.AlphaToCoverage ? "Yes" : "No", + om.m_BlendState.SampleMask.ToString("X8"), blendFactor, }); + + writer.WriteStartElement("h3"); + writer.WriteString("Target Blends"); + writer.WriteEndElement(); + + List rows = new List(); + + int i = 0; + foreach (var b in om.m_BlendState.Blends) + { + if (!b.Enabled) continue; + + rows.Add(new object[] { + i, + b.Enabled ? "Yes" : "No", b.LogicEnabled ? "Yes" : "No", + b.m_Blend.Source, b.m_Blend.Destination, b.m_Blend.Operation, + b.m_AlphaBlend.Source, b.m_AlphaBlend.Destination, b.m_AlphaBlend.Operation, + b.LogicOp, + ((b.WriteMask & 0x1) == 0 ? "_" : "R") + + ((b.WriteMask & 0x2) == 0 ? "_" : "G") + + ((b.WriteMask & 0x4) == 0 ? "_" : "B") + + ((b.WriteMask & 0x8) == 0 ? "_" : "A") }); + + i++; + } + + ExportHTMLTable(writer, + new string[] { + "Slot", + "Blend Enable", "Logic Enable", + "Blend Source", "Blend Destination", "Blend Operation", + "Alpha Blend Source", "Alpha Blend Destination", "Alpha Blend Operation", + "Logic Operation", "Write Mask", + }, + rows.ToArray()); + } + + { + writer.WriteStartElement("h3"); + writer.WriteString("Depth State"); + writer.WriteEndElement(); + + ExportHTMLTable(writer, + new string[] { "Depth Test Enable", "Depth Writes Enable", "Depth Function" }, + new object[] { om.m_State.DepthEnable ? "Yes" : "No", om.m_State.DepthWrites ? "Yes" : "No", om.m_State.DepthFunc }); + } + + { + writer.WriteStartElement("h3"); + writer.WriteString("Stencil State"); + writer.WriteEndElement(); + + ExportHTMLTable(writer, + new string[] { "Stencil Test Enable", "Stencil Read Mask", "Stencil Write Mask" }, + new object[] { om.m_State.StencilEnable ? "Yes" : "No", om.m_State.StencilReadMask.ToString("X2"), om.m_State.StencilWriteMask.ToString("X2") }); + + writer.WriteStartElement("p"); + writer.WriteEndElement(); + + ExportHTMLTable(writer, + new string[] { "Face", "Function", "Pass Operation", "Fail Operation", "Depth Fail Operation" }, + new object[][] { + new object[] { "Front", om.m_State.m_FrontFace.Func, om.m_State.m_FrontFace.PassOp, om.m_State.m_FrontFace.FailOp, om.m_State.m_FrontFace.DepthFailOp }, + new object[] { "Back", om.m_State.m_BackFace.Func, om.m_State.m_BackFace.PassOp, om.m_State.m_BackFace.FailOp, om.m_State.m_BackFace.DepthFailOp }, + }); + } + + { + writer.WriteStartElement("h3"); + writer.WriteString("Render targets"); + writer.WriteEndElement(); + + List rows = new List(); + + for (int i = 0; i < om.RenderTargets.Length; i++) + { + if (om.RenderTargets[i].View == ResourceId.Null) continue; + + rows.Add(ExportViewHTML(om.RenderTargets[i], i, null, "")); + } + + ExportHTMLTable(writer, + new string[] { + "Slot", "Name", + "View Type", "Resource Type", + "Width", "Height", "Depth", "Array Size", + "View Format", "Resource Format", + "View Parameters", + }, + rows.ToArray()); + } + + if(om.UAVs.Length > 0 && om.UAVs[0].View != ResourceId.Null) + { + writer.WriteStartElement("h3"); + writer.WriteString("Unordered Access Views"); + writer.WriteEndElement(); + + List rows = new List(); + + int i = 0; + + for (; i < om.UAVStartSlot; i++) + rows.Add(new object[] { i, "Empty", "", "", "", "", 0, 0, 0, 0, "", "", "" }); + + for (; i < om.RenderTargets.Length; i++) + { + if (om.UAVs[i - om.UAVStartSlot].View == ResourceId.Null) continue; + + rows.Add(ExportViewHTML(om.UAVs[i - om.UAVStartSlot], i, m_Core.CurD3D12PipelineState.m_PS.ShaderDetails, "")); + } + + ExportHTMLTable(writer, + new string[] { + "Slot", "Name", + "View Type", "Resource Type", + "Width", "Height", "Depth", "Array Size", + "View Format", "Resource Format", + "View Parameters", + }, + rows.ToArray()); + } + + { + writer.WriteStartElement("h3"); + writer.WriteString("Depth target"); + writer.WriteEndElement(); + + List rows = new List(); + + string extra = ""; + + if(om.DepthReadOnly && om.StencilReadOnly) + extra = "Depth & Stencil Read-Only"; + else if (om.DepthReadOnly) + extra = "Depth Read-Only"; + else if (om.StencilReadOnly) + extra = "Stencil Read-Only"; + + rows.Add(ExportViewHTML(om.DepthTarget, 0, null, extra)); + + ExportHTMLTable(writer, + new string[] { + "Slot", "Name", + "View Type", "Resource Type", + "Width", "Height", "Depth", "Array Size", + "View Format", "Resource Format", + "View Parameters", + }, + rows.ToArray()); + } + } + + private void ExportHTML(string filename) + { + using (Stream s = new FileStream(filename, FileMode.Create)) + { + StreamWriter sw = new StreamWriter(s); + + sw.WriteLine(""); + + using (XmlTextWriter writer = new XmlTextWriter(sw)) + { + writer.Formatting = Formatting.Indented; + writer.Indentation = 4; + + writer.WriteStartElement("html"); + writer.WriteAttributeString("lang", "en"); + + var title = String.Format("{0} EID {1} - D3D12 Pipeline export", Path.GetFileName(m_Core.LogFileName), m_Core.CurEvent); + + var css = @" +/* If you think this css is ugly/bad, open a pull request! */ +body { margin: 20px; } +div.stage { border: 1px solid #BBBBBB; border-radius: 5px; padding: 16px; margin-bottom: 32px; } +div.stage h1 { text-decoration: underline; margin-top: 0px; } +div.stage table { border: 1px solid #AAAAAA; border-collapse: collapse; } +div.stage table thead tr { border-bottom: 1px solid #AAAAAA; background-color: #EEEEFF; } +div.stage table tr th { border-right: 1px solid #AAAAAA; padding: 6px; } +div.stage table tr td { border-right: 1px solid #AAAAAA; background-color: #EEEEEE; padding: 3px; } +"; + + { + writer.WriteStartElement("head"); + + writer.WriteStartElement("meta"); + writer.WriteAttributeString("charset", "utf-8"); + writer.WriteEndElement(); + + writer.WriteStartElement("meta"); + writer.WriteAttributeString("http-equiv", "X-UA-Compatible"); + writer.WriteAttributeString("content", "IE=edge"); + writer.WriteEndElement(); + + writer.WriteStartElement("meta"); + writer.WriteAttributeString("name", "viewport"); + writer.WriteAttributeString("content", "width=device-width, initial-scale=1"); + writer.WriteEndElement(); + + writer.WriteStartElement("meta"); + writer.WriteAttributeString("name", "description"); + writer.WriteAttributeString("content", ""); + writer.WriteEndElement(); + + writer.WriteStartElement("meta"); + writer.WriteAttributeString("name", "author"); + writer.WriteAttributeString("content", ""); + writer.WriteEndElement(); + + writer.WriteStartElement("meta"); + writer.WriteAttributeString("http-equiv", "Content-Type"); + writer.WriteAttributeString("content", "text/html;charset=utf-8"); + writer.WriteEndElement(); + + writer.WriteStartElement("title"); + writer.WriteString(title); + writer.WriteEndElement(); + + writer.WriteStartElement("style"); + writer.WriteComment(css); + writer.WriteEndElement(); + + writer.WriteEndElement(); // head + } + + { + writer.WriteStartElement("body"); + + writer.WriteStartElement("h1"); + writer.WriteString(title); + writer.WriteEndElement(); + + writer.WriteStartElement("h3"); + { + var context = String.Format("Frame {0}", m_Core.FrameInfo.frameNumber); + + FetchDrawcall draw = m_Core.CurDrawcall; + + var drawstack = new List(); + var parent = draw.parent; + while (parent != null) + { + drawstack.Add(parent); + parent = parent.parent; + } + + drawstack.Reverse(); + + foreach (var d in drawstack) + { + context += String.Format(" > {0}", d.name); + } + + context += String.Format(" => {0}", draw.name); + + writer.WriteString(context); + } + writer.WriteEndElement(); // h2 context + + string[] stageNames = new string[]{ + "Input Assembler", + "Vertex Shader", + "Hull Shader", + "Domain Shader", + "Geometry Shader", + "Stream Out", + "Rasterizer", + "Pixel Shader", + "Output Merger", + "Compute Shader", + }; + + string[] stageAbbrevs = new string[]{ + "IA", "VS", "HS", "DS", "GS", "SO", "RS", "PS", "OM", "CS" + }; + + int stage=0; + foreach(var sn in stageNames) + { + writer.WriteStartElement("div"); + writer.WriteStartElement("a"); + writer.WriteAttributeString("name", stageAbbrevs[stage]); + writer.WriteEndElement(); + writer.WriteEndElement(); + + writer.WriteStartElement("div"); + writer.WriteAttributeString("class", "stage"); + + writer.WriteStartElement("h1"); + writer.WriteString(sn); + writer.WriteEndElement(); + + switch(stage) + { + case 0: ExportHTML(writer, m_Core.CurD3D12PipelineState.m_IA); break; + case 1: ExportHTML(writer, m_Core.CurD3D12PipelineState.m_VS); break; + case 2: ExportHTML(writer, m_Core.CurD3D12PipelineState.m_HS); break; + case 3: ExportHTML(writer, m_Core.CurD3D12PipelineState.m_DS); break; + case 4: ExportHTML(writer, m_Core.CurD3D12PipelineState.m_GS); break; + case 5: ExportHTML(writer, m_Core.CurD3D12PipelineState.m_SO); break; + case 6: ExportHTML(writer, m_Core.CurD3D12PipelineState.m_RS); break; + case 7: ExportHTML(writer, m_Core.CurD3D12PipelineState.m_PS); break; + case 8: ExportHTML(writer, m_Core.CurD3D12PipelineState.m_OM); break; + case 9: ExportHTML(writer, m_Core.CurD3D12PipelineState.m_CS); break; + } + + writer.WriteEndElement(); + + stage++; + } + + writer.WriteEndElement(); // body + } + + writer.WriteEndElement(); // html + + writer.Close(); + } + + sw.Dispose(); + } + } + + private void export_Click(object sender, EventArgs e) + { + if (!m_Core.LogLoaded) return; + + DialogResult res = pipeExportDialog.ShowDialog(); + + if (res == DialogResult.OK) + { + ExportHTML(pipeExportDialog.FileName); + } + } + + private void vsShaderSave_Click(object sender, EventArgs e) + { + + } + } +} \ No newline at end of file diff --git a/renderdocui/Windows/PipelineState/D3D12PipelineStateViewer.resx b/renderdocui/Windows/PipelineState/D3D12PipelineStateViewer.resx new file mode 100644 index 000000000..c47f5c2a1 --- /dev/null +++ b/renderdocui/Windows/PipelineState/D3D12PipelineStateViewer.resx @@ -0,0 +1,476 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + False + + + False + + + 140, 17 + + + 140, 17 + + + False + + + False + + + False + + + False + + + False + + + False + + + False + + + False + + + 239, 17 + + + False + + + False + + + False + + + False + + + False + + + False + + + False + + + False + + + False + + + False + + + False + + + False + + + False + + + False + + + False + + + False + + + False + + + False + + + False + + + False + + + False + + + False + + + False + + + False + + + False + + + False + + + False + + + False + + + False + + + False + + + False + + + False + + + + + iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29m + dHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAHCSURBVDhPpZFZL0NBHMW94X4Xe6vW2BJSa6ql1OWW + Wkvjheptq9VSgliuR7GvkdhiDSLxqJYKn0F8CdVj5oqG9tri4TeZOfM//5k5EwHgX0iKf0FS/A7tUqlQ + PlvofF+HFXxH5WKJYNo3oG2Hg1LI4akmWShFxUKx0LHXgIl7NzyXVujXtMgaSLFJFoeimS8SjLt6jN25 + MHrnRP16FbI9qUhzyKKCRcYzLq/lmG36aKSo54oEeuURnxPDPod4cqZb4U/tTYqi+2/mUy6j+Yh94i9M + 4DYrOt/NJCyhdbsOw7e9GLq1g1utRIYr2Z9iTxTNYoO2k7r85sOax0EvjzFfH3RrKj8Jq1M1oxxt2WIx + eGOH55pH7YoG6X1yv8KWEDSLDZoOdNGG3WqYz9sx+TAAj9cK454epgMD+r0WuK8tYJfVSHPKXpKtn81i + AzqwG2qGnAzToUF859CNDa4rM1xeM3RL5TSsgJyPDzNTghMSFqOaVqJxswbuqx44LrtQvaACCSsgt8RJ + mimfFsqpXKZgPJtcWQPtfBlIWAFZT+yXZkqYQP6XyexXgIT1nGSOjQzdD0VSJGExid0xP5opkuLvQcQr + vqKpPDRN9lYAAAAASUVORK5CYII= + + + + False + + + False + + + False + + + False + + + + iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29m + dHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAHCSURBVDhPpZFZL0NBHMW94X4Xe6vW2BJSa6ql1OWW + Wkvjheptq9VSgliuR7GvkdhiDSLxqJYKn0F8CdVj5oqG9tri4TeZOfM//5k5EwHgX0iKf0FS/A7tUqlQ + PlvofF+HFXxH5WKJYNo3oG2Hg1LI4akmWShFxUKx0LHXgIl7NzyXVujXtMgaSLFJFoeimS8SjLt6jN25 + MHrnRP16FbI9qUhzyKKCRcYzLq/lmG36aKSo54oEeuURnxPDPod4cqZb4U/tTYqi+2/mUy6j+Yh94i9M + 4DYrOt/NJCyhdbsOw7e9GLq1g1utRIYr2Z9iTxTNYoO2k7r85sOax0EvjzFfH3RrKj8Jq1M1oxxt2WIx + eGOH55pH7YoG6X1yv8KWEDSLDZoOdNGG3WqYz9sx+TAAj9cK454epgMD+r0WuK8tYJfVSHPKXpKtn81i + AzqwG2qGnAzToUF859CNDa4rM1xeM3RL5TSsgJyPDzNTghMSFqOaVqJxswbuqx44LrtQvaACCSsgt8RJ + mimfFsqpXKZgPJtcWQPtfBlIWAFZT+yXZkqYQP6XyexXgIT1nGSOjQzdD0VSJGExid0xP5opkuLvQcQr + vqKpPDRN9lYAAAAASUVORK5CYII= + + + + + iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29m + dHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAHCSURBVDhPpZFZL0NBHMW94X4Xe6vW2BJSa6ql1OWW + Wkvjheptq9VSgliuR7GvkdhiDSLxqJYKn0F8CdVj5oqG9tri4TeZOfM//5k5EwHgX0iKf0FS/A7tUqlQ + PlvofF+HFXxH5WKJYNo3oG2Hg1LI4akmWShFxUKx0LHXgIl7NzyXVujXtMgaSLFJFoeimS8SjLt6jN25 + MHrnRP16FbI9qUhzyKKCRcYzLq/lmG36aKSo54oEeuURnxPDPod4cqZb4U/tTYqi+2/mUy6j+Yh94i9M + 4DYrOt/NJCyhdbsOw7e9GLq1g1utRIYr2Z9iTxTNYoO2k7r85sOax0EvjzFfH3RrKj8Jq1M1oxxt2WIx + eGOH55pH7YoG6X1yv8KWEDSLDZoOdNGG3WqYz9sx+TAAj9cK454epgMD+r0WuK8tYJfVSHPKXpKtn81i + AzqwG2qGnAzToUF859CNDa4rM1xeM3RL5TSsgJyPDzNTghMSFqOaVqJxswbuqx44LrtQvaACCSsgt8RJ + mimfFsqpXKZgPJtcWQPtfBlIWAFZT+yXZkqYQP6XyexXgIT1nGSOjQzdD0VSJGExid0xP5opkuLvQcQr + vqKpPDRN9lYAAAAASUVORK5CYII= + + + + + iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29m + dHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAHCSURBVDhPpZFZL0NBHMW94X4Xe6vW2BJSa6ql1OWW + Wkvjheptq9VSgliuR7GvkdhiDSLxqJYKn0F8CdVj5oqG9tri4TeZOfM//5k5EwHgX0iKf0FS/A7tUqlQ + PlvofF+HFXxH5WKJYNo3oG2Hg1LI4akmWShFxUKx0LHXgIl7NzyXVujXtMgaSLFJFoeimS8SjLt6jN25 + MHrnRP16FbI9qUhzyKKCRcYzLq/lmG36aKSo54oEeuURnxPDPod4cqZb4U/tTYqi+2/mUy6j+Yh94i9M + 4DYrOt/NJCyhdbsOw7e9GLq1g1utRIYr2Z9iTxTNYoO2k7r85sOax0EvjzFfH3RrKj8Jq1M1oxxt2WIx + eGOH55pH7YoG6X1yv8KWEDSLDZoOdNGG3WqYz9sx+TAAj9cK454epgMD+r0WuK8tYJfVSHPKXpKtn81i + AzqwG2qGnAzToUF859CNDa4rM1xeM3RL5TSsgJyPDzNTghMSFqOaVqJxswbuqx44LrtQvaACCSsgt8RJ + mimfFsqpXKZgPJtcWQPtfBlIWAFZT+yXZkqYQP6XyexXgIT1nGSOjQzdD0VSJGExid0xP5opkuLvQcQr + vqKpPDRN9lYAAAAASUVORK5CYII= + + + + + iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29m + dHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAHCSURBVDhPpZFZL0NBHMW94X4Xe6vW2BJSa6ql1OWW + Wkvjheptq9VSgliuR7GvkdhiDSLxqJYKn0F8CdVj5oqG9tri4TeZOfM//5k5EwHgX0iKf0FS/A7tUqlQ + PlvofF+HFXxH5WKJYNo3oG2Hg1LI4akmWShFxUKx0LHXgIl7NzyXVujXtMgaSLFJFoeimS8SjLt6jN25 + MHrnRP16FbI9qUhzyKKCRcYzLq/lmG36aKSo54oEeuURnxPDPod4cqZb4U/tTYqi+2/mUy6j+Yh94i9M + 4DYrOt/NJCyhdbsOw7e9GLq1g1utRIYr2Z9iTxTNYoO2k7r85sOax0EvjzFfH3RrKj8Jq1M1oxxt2WIx + eGOH55pH7YoG6X1yv8KWEDSLDZoOdNGG3WqYz9sx+TAAj9cK454epgMD+r0WuK8tYJfVSHPKXpKtn81i + AzqwG2qGnAzToUF859CNDa4rM1xeM3RL5TSsgJyPDzNTghMSFqOaVqJxswbuqx44LrtQvaACCSsgt8RJ + mimfFsqpXKZgPJtcWQPtfBlIWAFZT+yXZkqYQP6XyexXgIT1nGSOjQzdD0VSJGExid0xP5opkuLvQcQr + vqKpPDRN9lYAAAAASUVORK5CYII= + + + + False + + + + iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29m + dHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAHCSURBVDhPpZFZL0NBHMW94X4Xe6vW2BJSa6ql1OWW + Wkvjheptq9VSgliuR7GvkdhiDSLxqJYKn0F8CdVj5oqG9tri4TeZOfM//5k5EwHgX0iKf0FS/A7tUqlQ + PlvofF+HFXxH5WKJYNo3oG2Hg1LI4akmWShFxUKx0LHXgIl7NzyXVujXtMgaSLFJFoeimS8SjLt6jN25 + MHrnRP16FbI9qUhzyKKCRcYzLq/lmG36aKSo54oEeuURnxPDPod4cqZb4U/tTYqi+2/mUy6j+Yh94i9M + 4DYrOt/NJCyhdbsOw7e9GLq1g1utRIYr2Z9iTxTNYoO2k7r85sOax0EvjzFfH3RrKj8Jq1M1oxxt2WIx + eGOH55pH7YoG6X1yv8KWEDSLDZoOdNGG3WqYz9sx+TAAj9cK454epgMD+r0WuK8tYJfVSHPKXpKtn81i + AzqwG2qGnAzToUF859CNDa4rM1xeM3RL5TSsgJyPDzNTghMSFqOaVqJxswbuqx44LrtQvaACCSsgt8RJ + mimfFsqpXKZgPJtcWQPtfBlIWAFZT+yXZkqYQP6XyexXgIT1nGSOjQzdD0VSJGExid0xP5opkuLvQcQr + vqKpPDRN9lYAAAAASUVORK5CYII= + + + + False + + + False + + + False + + + False + + + False + + + False + + + False + + + + iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29m + dHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAHCSURBVDhPpZFZL0NBHMW94X4Xe6vW2BJSa6ql1OWW + Wkvjheptq9VSgliuR7GvkdhiDSLxqJYKn0F8CdVj5oqG9tri4TeZOfM//5k5EwHgX0iKf0FS/A7tUqlQ + PlvofF+HFXxH5WKJYNo3oG2Hg1LI4akmWShFxUKx0LHXgIl7NzyXVujXtMgaSLFJFoeimS8SjLt6jN25 + MHrnRP16FbI9qUhzyKKCRcYzLq/lmG36aKSo54oEeuURnxPDPod4cqZb4U/tTYqi+2/mUy6j+Yh94i9M + 4DYrOt/NJCyhdbsOw7e9GLq1g1utRIYr2Z9iTxTNYoO2k7r85sOax0EvjzFfH3RrKj8Jq1M1oxxt2WIx + eGOH55pH7YoG6X1yv8KWEDSLDZoOdNGG3WqYz9sx+TAAj9cK454epgMD+r0WuK8tYJfVSHPKXpKtn81i + AzqwG2qGnAzToUF859CNDa4rM1xeM3RL5TSsgJyPDzNTghMSFqOaVqJxswbuqx44LrtQvaACCSsgt8RJ + mimfFsqpXKZgPJtcWQPtfBlIWAFZT+yXZkqYQP6XyexXgIT1nGSOjQzdD0VSJGExid0xP5opkuLvQcQr + vqKpPDRN9lYAAAAASUVORK5CYII= + + + + + iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29m + dHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAHCSURBVDhPpZFZL0NBHMW94X4Xe6vW2BJSa6ql1OWW + Wkvjheptq9VSgliuR7GvkdhiDSLxqJYKn0F8CdVj5oqG9tri4TeZOfM//5k5EwHgX0iKf0FS/A7tUqlQ + PlvofF+HFXxH5WKJYNo3oG2Hg1LI4akmWShFxUKx0LHXgIl7NzyXVujXtMgaSLFJFoeimS8SjLt6jN25 + MHrnRP16FbI9qUhzyKKCRcYzLq/lmG36aKSo54oEeuURnxPDPod4cqZb4U/tTYqi+2/mUy6j+Yh94i9M + 4DYrOt/NJCyhdbsOw7e9GLq1g1utRIYr2Z9iTxTNYoO2k7r85sOax0EvjzFfH3RrKj8Jq1M1oxxt2WIx + eGOH55pH7YoG6X1yv8KWEDSLDZoOdNGG3WqYz9sx+TAAj9cK454epgMD+r0WuK8tYJfVSHPKXpKtn81i + AzqwG2qGnAzToUF859CNDa4rM1xeM3RL5TSsgJyPDzNTghMSFqOaVqJxswbuqx44LrtQvaACCSsgt8RJ + mimfFsqpXKZgPJtcWQPtfBlIWAFZT+yXZkqYQP6XyexXgIT1nGSOjQzdD0VSJGExid0xP5opkuLvQcQr + vqKpPDRN9lYAAAAASUVORK5CYII= + + + + + iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29m + dHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAHCSURBVDhPpZFZL0NBHMW94X4Xe6vW2BJSa6ql1OWW + Wkvjheptq9VSgliuR7GvkdhiDSLxqJYKn0F8CdVj5oqG9tri4TeZOfM//5k5EwHgX0iKf0FS/A7tUqlQ + PlvofF+HFXxH5WKJYNo3oG2Hg1LI4akmWShFxUKx0LHXgIl7NzyXVujXtMgaSLFJFoeimS8SjLt6jN25 + MHrnRP16FbI9qUhzyKKCRcYzLq/lmG36aKSo54oEeuURnxPDPod4cqZb4U/tTYqi+2/mUy6j+Yh94i9M + 4DYrOt/NJCyhdbsOw7e9GLq1g1utRIYr2Z9iTxTNYoO2k7r85sOax0EvjzFfH3RrKj8Jq1M1oxxt2WIx + eGOH55pH7YoG6X1yv8KWEDSLDZoOdNGG3WqYz9sx+TAAj9cK454epgMD+r0WuK8tYJfVSHPKXpKtn81i + AzqwG2qGnAzToUF859CNDa4rM1xeM3RL5TSsgJyPDzNTghMSFqOaVqJxswbuqx44LrtQvaACCSsgt8RJ + mimfFsqpXKZgPJtcWQPtfBlIWAFZT+yXZkqYQP6XyexXgIT1nGSOjQzdD0VSJGExid0xP5opkuLvQcQr + vqKpPDRN9lYAAAAASUVORK5CYII= + + + + + iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29m + dHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAHCSURBVDhPpZFZL0NBHMW94X4Xe6vW2BJSa6ql1OWW + Wkvjheptq9VSgliuR7GvkdhiDSLxqJYKn0F8CdVj5oqG9tri4TeZOfM//5k5EwHgX0iKf0FS/A7tUqlQ + PlvofF+HFXxH5WKJYNo3oG2Hg1LI4akmWShFxUKx0LHXgIl7NzyXVujXtMgaSLFJFoeimS8SjLt6jN25 + MHrnRP16FbI9qUhzyKKCRcYzLq/lmG36aKSo54oEeuURnxPDPod4cqZb4U/tTYqi+2/mUy6j+Yh94i9M + 4DYrOt/NJCyhdbsOw7e9GLq1g1utRIYr2Z9iTxTNYoO2k7r85sOax0EvjzFfH3RrKj8Jq1M1oxxt2WIx + eGOH55pH7YoG6X1yv8KWEDSLDZoOdNGG3WqYz9sx+TAAj9cK454epgMD+r0WuK8tYJfVSHPKXpKtn81i + AzqwG2qGnAzToUF859CNDa4rM1xeM3RL5TSsgJyPDzNTghMSFqOaVqJxswbuqx44LrtQvaACCSsgt8RJ + mimfFsqpXKZgPJtcWQPtfBlIWAFZT+yXZkqYQP6XyexXgIT1nGSOjQzdD0VSJGExid0xP5opkuLvQcQr + vqKpPDRN9lYAAAAASUVORK5CYII= + + + + + iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29m + dHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAHCSURBVDhPpZFZL0NBHMW94X4Xe6vW2BJSa6ql1OWW + Wkvjheptq9VSgliuR7GvkdhiDSLxqJYKn0F8CdVj5oqG9tri4TeZOfM//5k5EwHgX0iKf0FS/A7tUqlQ + PlvofF+HFXxH5WKJYNo3oG2Hg1LI4akmWShFxUKx0LHXgIl7NzyXVujXtMgaSLFJFoeimS8SjLt6jN25 + MHrnRP16FbI9qUhzyKKCRcYzLq/lmG36aKSo54oEeuURnxPDPod4cqZb4U/tTYqi+2/mUy6j+Yh94i9M + 4DYrOt/NJCyhdbsOw7e9GLq1g1utRIYr2Z9iTxTNYoO2k7r85sOax0EvjzFfH3RrKj8Jq1M1oxxt2WIx + eGOH55pH7YoG6X1yv8KWEDSLDZoOdNGG3WqYz9sx+TAAj9cK454epgMD+r0WuK8tYJfVSHPKXpKtn81i + AzqwG2qGnAzToUF859CNDa4rM1xeM3RL5TSsgJyPDzNTghMSFqOaVqJxswbuqx44LrtQvaACCSsgt8RJ + mimfFsqpXKZgPJtcWQPtfBlIWAFZT+yXZkqYQP6XyexXgIT1nGSOjQzdD0VSJGExid0xP5opkuLvQcQr + vqKpPDRN9lYAAAAASUVORK5CYII= + + + + False + + + False + + + False + + + False + + + False + + + False + + + 17, 17 + + + 239, 17 + + + 324, 17 + + + 438, 17 + + \ No newline at end of file diff --git a/renderdocui/Windows/PipelineState/PipelineStateViewer.cs b/renderdocui/Windows/PipelineState/PipelineStateViewer.cs index f4788e90e..5e80b77e7 100644 --- a/renderdocui/Windows/PipelineState/PipelineStateViewer.cs +++ b/renderdocui/Windows/PipelineState/PipelineStateViewer.cs @@ -45,6 +45,7 @@ namespace renderdocui.Windows.PipelineState { private Core m_Core; private D3D11PipelineStateViewer m_D3D11 = null; + private D3D12PipelineStateViewer m_D3D12 = null; private GLPipelineStateViewer m_GL = null; private VulkanPipelineStateViewer m_Vulkan = null; private ILogViewerForm m_Current = null; @@ -68,6 +69,8 @@ namespace renderdocui.Windows.PipelineState { if (m_Current == m_D3D11) return GetType().ToString() + "D3D11"; + else if (m_Current == m_D3D12) + return GetType().ToString() + "D3D12"; else if (m_Current == m_GL) return GetType().ToString() + "GL"; else if (m_Current == m_Vulkan) @@ -84,12 +87,15 @@ namespace renderdocui.Windows.PipelineState SetToGL(); else if (type == "D3D11") SetToD3D11(); + else if (type == "D3D12") + SetToD3D12(); else if (type == "Vulkan") SetToVulkan(); } private void SetToD3D11() { + m_D3D12 = null; m_GL = null; m_Vulkan = null; @@ -105,9 +111,28 @@ namespace renderdocui.Windows.PipelineState m_Core.CurPipelineState.DefaultType = GraphicsAPI.D3D11; } + private void SetToD3D12() + { + m_D3D11 = null; + m_GL = null; + m_Vulkan = null; + + if (m_D3D12 == null) + { + Controls.Clear(); + m_D3D12 = new D3D12PipelineStateViewer(m_Core, this); + m_D3D12.Dock = DockStyle.Fill; + Controls.Add(m_D3D12); + } + + m_Current = m_D3D12; + m_Core.CurPipelineState.DefaultType = GraphicsAPI.D3D12; + } + private void SetToGL() { m_D3D11 = null; + m_D3D12 = null; m_Vulkan = null; if (m_GL == null) @@ -125,6 +150,7 @@ namespace renderdocui.Windows.PipelineState private void SetToVulkan() { m_GL = null; + m_D3D12 = null; m_D3D11 = null; if (m_Vulkan == null) @@ -143,6 +169,8 @@ namespace renderdocui.Windows.PipelineState { if (m_Core.APIProps.pipelineType == GraphicsAPI.D3D11) SetToD3D11(); + else if (m_Core.APIProps.pipelineType == GraphicsAPI.D3D12) + SetToD3D12(); else if (m_Core.APIProps.pipelineType == GraphicsAPI.OpenGL) SetToGL(); else if (m_Core.APIProps.pipelineType == GraphicsAPI.Vulkan) diff --git a/renderdocui/renderdocui.csproj b/renderdocui/renderdocui.csproj index 833bce7d6..407564e74 100644 --- a/renderdocui/renderdocui.csproj +++ b/renderdocui/renderdocui.csproj @@ -107,6 +107,7 @@ + @@ -313,6 +314,12 @@ LiveCapture.cs + + UserControl + + + D3D12PipelineStateViewer.cs + UserControl @@ -457,6 +464,10 @@ LiveCapture.cs + + D3D12PipelineStateViewer.cs + Designer + VulkanPipelineStateViewer.cs