mirror of
https://github.com/baldurk/renderdoc.git
synced 2026-05-04 17:10:47 +00:00
Add vulkan pipeline state viewer based on D3D11 viewer
This commit is contained in:
@@ -34,7 +34,7 @@ namespace renderdocui.Code
|
||||
{
|
||||
private D3D11PipelineState m_D3D11 = null;
|
||||
private GLPipelineState m_GL = null;
|
||||
private VulkanPipelineState m_VK = null;
|
||||
private VulkanPipelineState m_Vulkan = null;
|
||||
private APIProperties m_APIProps = null;
|
||||
|
||||
public CommonPipelineState()
|
||||
@@ -46,14 +46,14 @@ namespace renderdocui.Code
|
||||
m_APIProps = props;
|
||||
m_D3D11 = d3d11;
|
||||
m_GL = gl;
|
||||
m_VK = vk;
|
||||
m_Vulkan = vk;
|
||||
}
|
||||
|
||||
private bool LogLoaded
|
||||
{
|
||||
get
|
||||
{
|
||||
return m_D3D11 != null || m_GL != null || m_VK != null;
|
||||
return m_D3D11 != null || m_GL != null || m_Vulkan != null;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -77,7 +77,7 @@ namespace renderdocui.Code
|
||||
{
|
||||
get
|
||||
{
|
||||
return LogLoaded && m_APIProps.pipelineType == APIPipelineStateType.Vulkan && m_VK != null;
|
||||
return LogLoaded && m_APIProps.pipelineType == APIPipelineStateType.Vulkan && m_Vulkan != null;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -96,7 +96,7 @@ namespace renderdocui.Code
|
||||
return m_GL != null && m_GL.m_TES.Shader != ResourceId.Null;
|
||||
|
||||
if (IsLogVK)
|
||||
return m_VK != null && m_VK.TES.Shader != ResourceId.Null;
|
||||
return m_Vulkan != null && m_Vulkan.TES.Shader != ResourceId.Null;
|
||||
}
|
||||
|
||||
return false;
|
||||
@@ -137,12 +137,12 @@ namespace renderdocui.Code
|
||||
{
|
||||
switch (stage)
|
||||
{
|
||||
case ShaderStageType.Vertex: return m_VK.VS.BindpointMapping;
|
||||
case ShaderStageType.Tess_Control: return m_VK.TCS.BindpointMapping;
|
||||
case ShaderStageType.Tess_Eval: return m_VK.TES.BindpointMapping;
|
||||
case ShaderStageType.Geometry: return m_VK.GS.BindpointMapping;
|
||||
case ShaderStageType.Fragment: return m_VK.FS.BindpointMapping;
|
||||
case ShaderStageType.Compute: return m_VK.CS.BindpointMapping;
|
||||
case ShaderStageType.Vertex: return m_Vulkan.VS.BindpointMapping;
|
||||
case ShaderStageType.Tess_Control: return m_Vulkan.TCS.BindpointMapping;
|
||||
case ShaderStageType.Tess_Eval: return m_Vulkan.TES.BindpointMapping;
|
||||
case ShaderStageType.Geometry: return m_Vulkan.GS.BindpointMapping;
|
||||
case ShaderStageType.Fragment: return m_Vulkan.FS.BindpointMapping;
|
||||
case ShaderStageType.Compute: return m_Vulkan.CS.BindpointMapping;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -182,12 +182,12 @@ namespace renderdocui.Code
|
||||
{
|
||||
switch (stage)
|
||||
{
|
||||
case ShaderStageType.Vertex: return m_VK.VS.ShaderDetails;
|
||||
case ShaderStageType.Tess_Control: return m_VK.TCS.ShaderDetails;
|
||||
case ShaderStageType.Tess_Eval: return m_VK.TES.ShaderDetails;
|
||||
case ShaderStageType.Geometry: return m_VK.GS.ShaderDetails;
|
||||
case ShaderStageType.Fragment: return m_VK.FS.ShaderDetails;
|
||||
case ShaderStageType.Compute: return m_VK.CS.ShaderDetails;
|
||||
case ShaderStageType.Vertex: return m_Vulkan.VS.ShaderDetails;
|
||||
case ShaderStageType.Tess_Control: return m_Vulkan.TCS.ShaderDetails;
|
||||
case ShaderStageType.Tess_Eval: return m_Vulkan.TES.ShaderDetails;
|
||||
case ShaderStageType.Geometry: return m_Vulkan.GS.ShaderDetails;
|
||||
case ShaderStageType.Fragment: return m_Vulkan.FS.ShaderDetails;
|
||||
case ShaderStageType.Compute: return m_Vulkan.CS.ShaderDetails;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -227,12 +227,12 @@ namespace renderdocui.Code
|
||||
{
|
||||
switch (stage)
|
||||
{
|
||||
case ShaderStageType.Vertex: return m_VK.VS.Shader;
|
||||
case ShaderStageType.Tess_Control: return m_VK.TCS.Shader;
|
||||
case ShaderStageType.Tess_Eval: return m_VK.TES.Shader;
|
||||
case ShaderStageType.Geometry: return m_VK.GS.Shader;
|
||||
case ShaderStageType.Fragment: return m_VK.FS.Shader;
|
||||
case ShaderStageType.Compute: return m_VK.CS.Shader;
|
||||
case ShaderStageType.Vertex: return m_Vulkan.VS.Shader;
|
||||
case ShaderStageType.Tess_Control: return m_Vulkan.TCS.Shader;
|
||||
case ShaderStageType.Tess_Eval: return m_Vulkan.TES.Shader;
|
||||
case ShaderStageType.Geometry: return m_Vulkan.GS.Shader;
|
||||
case ShaderStageType.Fragment: return m_Vulkan.FS.Shader;
|
||||
case ShaderStageType.Compute: return m_Vulkan.CS.Shader;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -272,12 +272,12 @@ namespace renderdocui.Code
|
||||
{
|
||||
switch (stage)
|
||||
{
|
||||
case ShaderStageType.Vertex: return m_VK.VS.ShaderName;
|
||||
case ShaderStageType.Domain: return m_VK.TCS.ShaderName;
|
||||
case ShaderStageType.Hull: return m_VK.TES.ShaderName;
|
||||
case ShaderStageType.Geometry: return m_VK.GS.ShaderName;
|
||||
case ShaderStageType.Pixel: return m_VK.FS.ShaderName;
|
||||
case ShaderStageType.Compute: return m_VK.CS.ShaderName;
|
||||
case ShaderStageType.Vertex: return m_Vulkan.VS.ShaderName;
|
||||
case ShaderStageType.Domain: return m_Vulkan.TCS.ShaderName;
|
||||
case ShaderStageType.Hull: return m_Vulkan.TES.ShaderName;
|
||||
case ShaderStageType.Geometry: return m_Vulkan.GS.ShaderName;
|
||||
case ShaderStageType.Pixel: return m_Vulkan.FS.ShaderName;
|
||||
case ShaderStageType.Compute: return m_Vulkan.CS.ShaderName;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -305,9 +305,9 @@ namespace renderdocui.Code
|
||||
}
|
||||
else if (IsLogVK)
|
||||
{
|
||||
buf = m_VK.IA.ibuffer.buf;
|
||||
buf = m_Vulkan.IA.ibuffer.buf;
|
||||
// VKTODOLOW maybe increase parameter to ulong and upcast others?
|
||||
ByteOffset = (uint)m_VK.IA.ibuffer.offs;
|
||||
ByteOffset = (uint)m_Vulkan.IA.ibuffer.offs;
|
||||
|
||||
return;
|
||||
}
|
||||
@@ -332,7 +332,7 @@ namespace renderdocui.Code
|
||||
}
|
||||
else if (IsLogVK)
|
||||
{
|
||||
return m_VK.IA.primitiveRestartEnable;
|
||||
return m_Vulkan.IA.primitiveRestartEnable;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -399,13 +399,13 @@ namespace renderdocui.Code
|
||||
}
|
||||
else if (IsLogVK)
|
||||
{
|
||||
VBuffer[] ret = new VBuffer[m_VK.VI.binds.Length];
|
||||
for (int i = 0; i < m_VK.VI.binds.Length; i++)
|
||||
VBuffer[] ret = new VBuffer[m_Vulkan.VI.binds.Length];
|
||||
for (int i = 0; i < m_Vulkan.VI.binds.Length; i++)
|
||||
{
|
||||
ret[i].Buffer = m_VK.VI.vbuffers[i].buffer;
|
||||
ret[i].Buffer = m_Vulkan.VI.vbuffers[i].buffer;
|
||||
// VKTODOLOW maybe increase parameter to ulong and upcast others?
|
||||
ret[i].ByteOffset = (uint)m_VK.VI.vbuffers[i].offset;
|
||||
ret[i].ByteStride = m_VK.VI.binds[i].bytestride;
|
||||
ret[i].ByteOffset = (uint)m_Vulkan.VI.vbuffers[i].offset;
|
||||
ret[i].ByteStride = m_Vulkan.VI.binds[i].bytestride;
|
||||
}
|
||||
|
||||
return ret;
|
||||
@@ -558,14 +558,14 @@ namespace renderdocui.Code
|
||||
}
|
||||
else if (IsLogVK)
|
||||
{
|
||||
var attrs = m_VK.VI.attrs;
|
||||
var attrs = m_Vulkan.VI.attrs;
|
||||
|
||||
int num = 0;
|
||||
for (int i = 0; i < attrs.Length; i++)
|
||||
{
|
||||
int attrib = -1;
|
||||
if (m_VK.VS.BindpointMapping != null && m_VK.VS.ShaderDetails != null)
|
||||
attrib = m_VK.VS.BindpointMapping.InputAttributes[i];
|
||||
if (m_Vulkan.VS.BindpointMapping != null && m_Vulkan.VS.ShaderDetails != null)
|
||||
attrib = m_Vulkan.VS.BindpointMapping.InputAttributes[i];
|
||||
else
|
||||
attrib = i;
|
||||
|
||||
@@ -581,7 +581,7 @@ namespace renderdocui.Code
|
||||
ret[a].GenericValue = null;
|
||||
ret[a].VertexBuffer = (int)attrs[i].binding;
|
||||
ret[a].RelativeByteOffset = attrs[i].byteoffset;
|
||||
ret[a].PerInstance = m_VK.VI.binds[attrs[i].binding].perInstance;
|
||||
ret[a].PerInstance = m_Vulkan.VI.binds[attrs[i].binding].perInstance;
|
||||
ret[a].InstanceRate = 1;
|
||||
ret[a].Format = attrs[i].format;
|
||||
ret[a].Used = true;
|
||||
@@ -745,8 +745,8 @@ namespace renderdocui.Code
|
||||
else if (IsLogGL)
|
||||
return m_GL.m_FB.m_DrawFBO.Depth.Obj;
|
||||
else if (IsLogVK)
|
||||
return m_VK.Pass.renderpass.depthstencilAttachment >= 0
|
||||
? m_VK.Pass.framebuffer.attachments[m_VK.Pass.renderpass.depthstencilAttachment].img
|
||||
return m_Vulkan.Pass.renderpass.depthstencilAttachment >= 0
|
||||
? m_Vulkan.Pass.framebuffer.attachments[m_Vulkan.Pass.renderpass.depthstencilAttachment].img
|
||||
: ResourceId.Null;
|
||||
}
|
||||
|
||||
@@ -762,8 +762,8 @@ namespace renderdocui.Code
|
||||
else if (IsLogGL)
|
||||
return m_GL.m_FB.m_DrawFBO.Stencil.Obj;
|
||||
else if (IsLogVK)
|
||||
return m_VK.Pass.renderpass.depthstencilAttachment >= 0
|
||||
? m_VK.Pass.framebuffer.attachments[m_VK.Pass.renderpass.depthstencilAttachment].img
|
||||
return m_Vulkan.Pass.renderpass.depthstencilAttachment >= 0
|
||||
? m_Vulkan.Pass.framebuffer.attachments[m_Vulkan.Pass.renderpass.depthstencilAttachment].img
|
||||
: ResourceId.Null;
|
||||
}
|
||||
|
||||
@@ -796,9 +796,9 @@ namespace renderdocui.Code
|
||||
}
|
||||
else if (IsLogVK)
|
||||
{
|
||||
ResourceId[] ret = new ResourceId[m_VK.Pass.renderpass.colorAttachments.Length];
|
||||
for (int i = 0; i < m_VK.Pass.renderpass.colorAttachments.Length; i++)
|
||||
ret[i] = m_VK.Pass.framebuffer.attachments[m_VK.Pass.renderpass.colorAttachments[i]].img;
|
||||
ResourceId[] ret = new ResourceId[m_Vulkan.Pass.renderpass.colorAttachments.Length];
|
||||
for (int i = 0; i < m_Vulkan.Pass.renderpass.colorAttachments.Length; i++)
|
||||
ret[i] = m_Vulkan.Pass.framebuffer.attachments[m_Vulkan.Pass.renderpass.colorAttachments[i]].img;
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
@@ -2175,7 +2175,7 @@ namespace renderdocui.Windows
|
||||
|
||||
private void render_Paint(object sender, PaintEventArgs e)
|
||||
{
|
||||
if (m_Output == null || m_Core.Renderer == null)
|
||||
if (m_Core.CurVulkanPipelineState != null || m_Output == null || m_Core.Renderer == null)
|
||||
{
|
||||
e.Graphics.Clear(Color.Black);
|
||||
return;
|
||||
|
||||
@@ -45,6 +45,7 @@ namespace renderdocui.Windows.PipelineState
|
||||
private Core m_Core;
|
||||
private D3D11PipelineStateViewer m_D3D11 = null;
|
||||
private GLPipelineStateViewer m_GL = null;
|
||||
private VulkanPipelineStateViewer m_Vulkan = null;
|
||||
private ILogViewerForm m_Current = null;
|
||||
|
||||
public PipelineStateViewer(Core core)
|
||||
@@ -68,6 +69,8 @@ namespace renderdocui.Windows.PipelineState
|
||||
return GetType().ToString() + "D3D11";
|
||||
else if (m_Current == m_GL)
|
||||
return GetType().ToString() + "GL";
|
||||
else if (m_Current == m_Vulkan)
|
||||
return GetType().ToString() + "Vulkan";
|
||||
|
||||
return GetType().ToString();
|
||||
}
|
||||
@@ -80,11 +83,14 @@ namespace renderdocui.Windows.PipelineState
|
||||
SetToGL();
|
||||
else if (type == "D3D11")
|
||||
SetToD3D11();
|
||||
else if (type == "Vulkan")
|
||||
SetToVulkan();
|
||||
}
|
||||
|
||||
private void SetToD3D11()
|
||||
{
|
||||
m_GL = null;
|
||||
m_Vulkan = null;
|
||||
|
||||
if (m_D3D11 == null)
|
||||
{
|
||||
@@ -100,6 +106,7 @@ namespace renderdocui.Windows.PipelineState
|
||||
private void SetToGL()
|
||||
{
|
||||
m_D3D11 = null;
|
||||
m_Vulkan = null;
|
||||
|
||||
if (m_GL == null)
|
||||
{
|
||||
@@ -112,12 +119,30 @@ namespace renderdocui.Windows.PipelineState
|
||||
m_Current = m_GL;
|
||||
}
|
||||
|
||||
private void SetToVulkan()
|
||||
{
|
||||
m_GL = null;
|
||||
m_D3D11 = null;
|
||||
|
||||
if (m_Vulkan == null)
|
||||
{
|
||||
Controls.Clear();
|
||||
m_Vulkan = new VulkanPipelineStateViewer(m_Core, this);
|
||||
m_Vulkan.Dock = DockStyle.Fill;
|
||||
Controls.Add(m_Vulkan);
|
||||
}
|
||||
|
||||
m_Current = m_Vulkan;
|
||||
}
|
||||
|
||||
public void OnLogfileLoaded()
|
||||
{
|
||||
if (m_Core.APIProps.pipelineType == APIPipelineStateType.D3D11)
|
||||
SetToD3D11();
|
||||
else if (m_Core.APIProps.pipelineType == APIPipelineStateType.OpenGL)
|
||||
SetToGL();
|
||||
else if (m_Core.APIProps.pipelineType == APIPipelineStateType.Vulkan)
|
||||
SetToVulkan();
|
||||
|
||||
m_Current.OnLogfileLoaded();
|
||||
}
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,306 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
|
||||
Version 2.0
|
||||
|
||||
The primary goals of this format is to allow a simple XML format
|
||||
that is mostly human readable. The generation and parsing of the
|
||||
various data types are done through the TypeConverter classes
|
||||
associated with the data types.
|
||||
|
||||
Example:
|
||||
|
||||
... ado.net/XML headers & schema ...
|
||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||
<resheader name="version">2.0</resheader>
|
||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||
</data>
|
||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||
<comment>This is a comment</comment>
|
||||
</data>
|
||||
|
||||
There are any number of "resheader" rows that contain simple
|
||||
name/value pairs.
|
||||
|
||||
Each data row contains a name, and value. The row also contains a
|
||||
type or mimetype. Type corresponds to a .NET class that support
|
||||
text/value conversion through the TypeConverter architecture.
|
||||
Classes that don't support this are serialized and stored with the
|
||||
mimetype set.
|
||||
|
||||
The mimetype is used for serialized objects, and tells the
|
||||
ResXResourceReader how to depersist the object. This is currently not
|
||||
extensible. For a given mimetype the value must be set accordingly:
|
||||
|
||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||
that the ResXResourceWriter will generate, however the reader can
|
||||
read any of the formats listed below.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.binary.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.soap.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||
value : The object must be serialized into a byte array
|
||||
: using a System.ComponentModel.TypeConverter
|
||||
: and then encoded with base64 encoding.
|
||||
-->
|
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="metadata">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="assembly">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="alias" type="xsd:string" />
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="version">
|
||||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<metadata name="toolStripLabel1.GenerateMember" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>False</value>
|
||||
</metadata>
|
||||
<metadata name="toolstripTable.GenerateMember" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>False</value>
|
||||
</metadata>
|
||||
<metadata name="toolStrip1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||
<value>140, 17</value>
|
||||
</metadata>
|
||||
<metadata name="groupBox2.GenerateMember" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>False</value>
|
||||
</metadata>
|
||||
<metadata name="groupBox44.GenerateMember" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>False</value>
|
||||
</metadata>
|
||||
<metadata name="toolTip.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||
<value>239, 17</value>
|
||||
</metadata>
|
||||
<metadata name="groupBox45.GenerateMember" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>False</value>
|
||||
</metadata>
|
||||
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
|
||||
<data name="frontCCW.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29m
|
||||
dHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAHCSURBVDhPpZFZL0NBHMW94X4Xe6vW2BJSa6ql1OWW
|
||||
Wkvjheptq9VSgliuR7GvkdhiDSLxqJYKn0F8CdVj5oqG9tri4TeZOfM//5k5EwHgX0iKf0FS/A7tUqlQ
|
||||
PlvofF+HFXxH5WKJYNo3oG2Hg1LI4akmWShFxUKx0LHXgIl7NzyXVujXtMgaSLFJFoeimS8SjLt6jN25
|
||||
MHrnRP16FbI9qUhzyKKCRcYzLq/lmG36aKSo54oEeuURnxPDPod4cqZb4U/tTYqi+2/mUy6j+Yh94i9M
|
||||
4DYrOt/NJCyhdbsOw7e9GLq1g1utRIYr2Z9iTxTNYoO2k7r85sOax0EvjzFfH3RrKj8Jq1M1oxxt2WIx
|
||||
eGOH55pH7YoG6X1yv8KWEDSLDZoOdNGG3WqYz9sx+TAAj9cK454epgMD+r0WuK8tYJfVSHPKXpKtn81i
|
||||
AzqwG2qGnAzToUF859CNDa4rM1xeM3RL5TSsgJyPDzNTghMSFqOaVqJxswbuqx44LrtQvaACCSsgt8RJ
|
||||
mimfFsqpXKZgPJtcWQPtfBlIWAFZT+yXZkqYQP6XyexXgIT1nGSOjQzdD0VSJGExid0xP5opkuLvQcQr
|
||||
vqKpPDRN9lYAAAAASUVORK5CYII=
|
||||
</value>
|
||||
</data>
|
||||
<metadata name="label1.GenerateMember" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>False</value>
|
||||
</metadata>
|
||||
<metadata name="label15.GenerateMember" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>False</value>
|
||||
</metadata>
|
||||
<metadata name="label16.GenerateMember" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>False</value>
|
||||
</metadata>
|
||||
<metadata name="label17.GenerateMember" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>False</value>
|
||||
</metadata>
|
||||
<data name="depthClip.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29m
|
||||
dHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAHCSURBVDhPpZFZL0NBHMW94X4Xe6vW2BJSa6ql1OWW
|
||||
Wkvjheptq9VSgliuR7GvkdhiDSLxqJYKn0F8CdVj5oqG9tri4TeZOfM//5k5EwHgX0iKf0FS/A7tUqlQ
|
||||
PlvofF+HFXxH5WKJYNo3oG2Hg1LI4akmWShFxUKx0LHXgIl7NzyXVujXtMgaSLFJFoeimS8SjLt6jN25
|
||||
MHrnRP16FbI9qUhzyKKCRcYzLq/lmG36aKSo54oEeuURnxPDPod4cqZb4U/tTYqi+2/mUy6j+Yh94i9M
|
||||
4DYrOt/NJCyhdbsOw7e9GLq1g1utRIYr2Z9iTxTNYoO2k7r85sOax0EvjzFfH3RrKj8Jq1M1oxxt2WIx
|
||||
eGOH55pH7YoG6X1yv8KWEDSLDZoOdNGG3WqYz9sx+TAAj9cK454epgMD+r0WuK8tYJfVSHPKXpKtn81i
|
||||
AzqwG2qGnAzToUF859CNDa4rM1xeM3RL5TSsgJyPDzNTghMSFqOaVqJxswbuqx44LrtQvaACCSsgt8RJ
|
||||
mimfFsqpXKZgPJtcWQPtfBlIWAFZT+yXZkqYQP6XyexXgIT1nGSOjQzdD0VSJGExid0xP5opkuLvQcQr
|
||||
vqKpPDRN9lYAAAAASUVORK5CYII=
|
||||
</value>
|
||||
</data>
|
||||
<data name="multisampleEnable.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29m
|
||||
dHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAHCSURBVDhPpZFZL0NBHMW94X4Xe6vW2BJSa6ql1OWW
|
||||
Wkvjheptq9VSgliuR7GvkdhiDSLxqJYKn0F8CdVj5oqG9tri4TeZOfM//5k5EwHgX0iKf0FS/A7tUqlQ
|
||||
PlvofF+HFXxH5WKJYNo3oG2Hg1LI4akmWShFxUKx0LHXgIl7NzyXVujXtMgaSLFJFoeimS8SjLt6jN25
|
||||
MHrnRP16FbI9qUhzyKKCRcYzLq/lmG36aKSo54oEeuURnxPDPod4cqZb4U/tTYqi+2/mUy6j+Yh94i9M
|
||||
4DYrOt/NJCyhdbsOw7e9GLq1g1utRIYr2Z9iTxTNYoO2k7r85sOax0EvjzFfH3RrKj8Jq1M1oxxt2WIx
|
||||
eGOH55pH7YoG6X1yv8KWEDSLDZoOdNGG3WqYz9sx+TAAj9cK454epgMD+r0WuK8tYJfVSHPKXpKtn81i
|
||||
AzqwG2qGnAzToUF859CNDa4rM1xeM3RL5TSsgJyPDzNTghMSFqOaVqJxswbuqx44LrtQvaACCSsgt8RJ
|
||||
mimfFsqpXKZgPJtcWQPtfBlIWAFZT+yXZkqYQP6XyexXgIT1nGSOjQzdD0VSJGExid0xP5opkuLvQcQr
|
||||
vqKpPDRN9lYAAAAASUVORK5CYII=
|
||||
</value>
|
||||
</data>
|
||||
<data name="scissorEnable.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29m
|
||||
dHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAHCSURBVDhPpZFZL0NBHMW94X4Xe6vW2BJSa6ql1OWW
|
||||
Wkvjheptq9VSgliuR7GvkdhiDSLxqJYKn0F8CdVj5oqG9tri4TeZOfM//5k5EwHgX0iKf0FS/A7tUqlQ
|
||||
PlvofF+HFXxH5WKJYNo3oG2Hg1LI4akmWShFxUKx0LHXgIl7NzyXVujXtMgaSLFJFoeimS8SjLt6jN25
|
||||
MHrnRP16FbI9qUhzyKKCRcYzLq/lmG36aKSo54oEeuURnxPDPod4cqZb4U/tTYqi+2/mUy6j+Yh94i9M
|
||||
4DYrOt/NJCyhdbsOw7e9GLq1g1utRIYr2Z9iTxTNYoO2k7r85sOax0EvjzFfH3RrKj8Jq1M1oxxt2WIx
|
||||
eGOH55pH7YoG6X1yv8KWEDSLDZoOdNGG3WqYz9sx+TAAj9cK454epgMD+r0WuK8tYJfVSHPKXpKtn81i
|
||||
AzqwG2qGnAzToUF859CNDa4rM1xeM3RL5TSsgJyPDzNTghMSFqOaVqJxswbuqx44LrtQvaACCSsgt8RJ
|
||||
mimfFsqpXKZgPJtcWQPtfBlIWAFZT+yXZkqYQP6XyexXgIT1nGSOjQzdD0VSJGExid0xP5opkuLvQcQr
|
||||
vqKpPDRN9lYAAAAASUVORK5CYII=
|
||||
</value>
|
||||
</data>
|
||||
<data name="lineAAEnable.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29m
|
||||
dHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAHCSURBVDhPpZFZL0NBHMW94X4Xe6vW2BJSa6ql1OWW
|
||||
Wkvjheptq9VSgliuR7GvkdhiDSLxqJYKn0F8CdVj5oqG9tri4TeZOfM//5k5EwHgX0iKf0FS/A7tUqlQ
|
||||
PlvofF+HFXxH5WKJYNo3oG2Hg1LI4akmWShFxUKx0LHXgIl7NzyXVujXtMgaSLFJFoeimS8SjLt6jN25
|
||||
MHrnRP16FbI9qUhzyKKCRcYzLq/lmG36aKSo54oEeuURnxPDPod4cqZb4U/tTYqi+2/mUy6j+Yh94i9M
|
||||
4DYrOt/NJCyhdbsOw7e9GLq1g1utRIYr2Z9iTxTNYoO2k7r85sOax0EvjzFfH3RrKj8Jq1M1oxxt2WIx
|
||||
eGOH55pH7YoG6X1yv8KWEDSLDZoOdNGG3WqYz9sx+TAAj9cK454epgMD+r0WuK8tYJfVSHPKXpKtn81i
|
||||
AzqwG2qGnAzToUF859CNDa4rM1xeM3RL5TSsgJyPDzNTghMSFqOaVqJxswbuqx44LrtQvaACCSsgt8RJ
|
||||
mimfFsqpXKZgPJtcWQPtfBlIWAFZT+yXZkqYQP6XyexXgIT1nGSOjQzdD0VSJGExid0xP5opkuLvQcQr
|
||||
vqKpPDRN9lYAAAAASUVORK5CYII=
|
||||
</value>
|
||||
</data>
|
||||
<metadata name="groupBox42.GenerateMember" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>False</value>
|
||||
</metadata>
|
||||
<data name="independentBlend.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29m
|
||||
dHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAHCSURBVDhPpZFZL0NBHMW94X4Xe6vW2BJSa6ql1OWW
|
||||
Wkvjheptq9VSgliuR7GvkdhiDSLxqJYKn0F8CdVj5oqG9tri4TeZOfM//5k5EwHgX0iKf0FS/A7tUqlQ
|
||||
PlvofF+HFXxH5WKJYNo3oG2Hg1LI4akmWShFxUKx0LHXgIl7NzyXVujXtMgaSLFJFoeimS8SjLt6jN25
|
||||
MHrnRP16FbI9qUhzyKKCRcYzLq/lmG36aKSo54oEeuURnxPDPod4cqZb4U/tTYqi+2/mUy6j+Yh94i9M
|
||||
4DYrOt/NJCyhdbsOw7e9GLq1g1utRIYr2Z9iTxTNYoO2k7r85sOax0EvjzFfH3RrKj8Jq1M1oxxt2WIx
|
||||
eGOH55pH7YoG6X1yv8KWEDSLDZoOdNGG3WqYz9sx+TAAj9cK454epgMD+r0WuK8tYJfVSHPKXpKtn81i
|
||||
AzqwG2qGnAzToUF859CNDa4rM1xeM3RL5TSsgJyPDzNTghMSFqOaVqJxswbuqx44LrtQvaACCSsgt8RJ
|
||||
mimfFsqpXKZgPJtcWQPtfBlIWAFZT+yXZkqYQP6XyexXgIT1nGSOjQzdD0VSJGExid0xP5opkuLvQcQr
|
||||
vqKpPDRN9lYAAAAASUVORK5CYII=
|
||||
</value>
|
||||
</data>
|
||||
<data name="alphaToCoverage.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29m
|
||||
dHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAHCSURBVDhPpZFZL0NBHMW94X4Xe6vW2BJSa6ql1OWW
|
||||
Wkvjheptq9VSgliuR7GvkdhiDSLxqJYKn0F8CdVj5oqG9tri4TeZOfM//5k5EwHgX0iKf0FS/A7tUqlQ
|
||||
PlvofF+HFXxH5WKJYNo3oG2Hg1LI4akmWShFxUKx0LHXgIl7NzyXVujXtMgaSLFJFoeimS8SjLt6jN25
|
||||
MHrnRP16FbI9qUhzyKKCRcYzLq/lmG36aKSo54oEeuURnxPDPod4cqZb4U/tTYqi+2/mUy6j+Yh94i9M
|
||||
4DYrOt/NJCyhdbsOw7e9GLq1g1utRIYr2Z9iTxTNYoO2k7r85sOax0EvjzFfH3RrKj8Jq1M1oxxt2WIx
|
||||
eGOH55pH7YoG6X1yv8KWEDSLDZoOdNGG3WqYz9sx+TAAj9cK454epgMD+r0WuK8tYJfVSHPKXpKtn81i
|
||||
AzqwG2qGnAzToUF859CNDa4rM1xeM3RL5TSsgJyPDzNTghMSFqOaVqJxswbuqx44LrtQvaACCSsgt8RJ
|
||||
mimfFsqpXKZgPJtcWQPtfBlIWAFZT+yXZkqYQP6XyexXgIT1nGSOjQzdD0VSJGExid0xP5opkuLvQcQr
|
||||
vqKpPDRN9lYAAAAASUVORK5CYII=
|
||||
</value>
|
||||
</data>
|
||||
<data name="depthEnable.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29m
|
||||
dHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAHCSURBVDhPpZFZL0NBHMW94X4Xe6vW2BJSa6ql1OWW
|
||||
Wkvjheptq9VSgliuR7GvkdhiDSLxqJYKn0F8CdVj5oqG9tri4TeZOfM//5k5EwHgX0iKf0FS/A7tUqlQ
|
||||
PlvofF+HFXxH5WKJYNo3oG2Hg1LI4akmWShFxUKx0LHXgIl7NzyXVujXtMgaSLFJFoeimS8SjLt6jN25
|
||||
MHrnRP16FbI9qUhzyKKCRcYzLq/lmG36aKSo54oEeuURnxPDPod4cqZb4U/tTYqi+2/mUy6j+Yh94i9M
|
||||
4DYrOt/NJCyhdbsOw7e9GLq1g1utRIYr2Z9iTxTNYoO2k7r85sOax0EvjzFfH3RrKj8Jq1M1oxxt2WIx
|
||||
eGOH55pH7YoG6X1yv8KWEDSLDZoOdNGG3WqYz9sx+TAAj9cK454epgMD+r0WuK8tYJfVSHPKXpKtn81i
|
||||
AzqwG2qGnAzToUF859CNDa4rM1xeM3RL5TSsgJyPDzNTghMSFqOaVqJxswbuqx44LrtQvaACCSsgt8RJ
|
||||
mimfFsqpXKZgPJtcWQPtfBlIWAFZT+yXZkqYQP6XyexXgIT1nGSOjQzdD0VSJGExid0xP5opkuLvQcQr
|
||||
vqKpPDRN9lYAAAAASUVORK5CYII=
|
||||
</value>
|
||||
</data>
|
||||
<data name="depthWrite.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29m
|
||||
dHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAHCSURBVDhPpZFZL0NBHMW94X4Xe6vW2BJSa6ql1OWW
|
||||
Wkvjheptq9VSgliuR7GvkdhiDSLxqJYKn0F8CdVj5oqG9tri4TeZOfM//5k5EwHgX0iKf0FS/A7tUqlQ
|
||||
PlvofF+HFXxH5WKJYNo3oG2Hg1LI4akmWShFxUKx0LHXgIl7NzyXVujXtMgaSLFJFoeimS8SjLt6jN25
|
||||
MHrnRP16FbI9qUhzyKKCRcYzLq/lmG36aKSo54oEeuURnxPDPod4cqZb4U/tTYqi+2/mUy6j+Yh94i9M
|
||||
4DYrOt/NJCyhdbsOw7e9GLq1g1utRIYr2Z9iTxTNYoO2k7r85sOax0EvjzFfH3RrKj8Jq1M1oxxt2WIx
|
||||
eGOH55pH7YoG6X1yv8KWEDSLDZoOdNGG3WqYz9sx+TAAj9cK454epgMD+r0WuK8tYJfVSHPKXpKtn81i
|
||||
AzqwG2qGnAzToUF859CNDa4rM1xeM3RL5TSsgJyPDzNTghMSFqOaVqJxswbuqx44LrtQvaACCSsgt8RJ
|
||||
mimfFsqpXKZgPJtcWQPtfBlIWAFZT+yXZkqYQP6XyexXgIT1nGSOjQzdD0VSJGExid0xP5opkuLvQcQr
|
||||
vqKpPDRN9lYAAAAASUVORK5CYII=
|
||||
</value>
|
||||
</data>
|
||||
<data name="stencilEnable.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29m
|
||||
dHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAHCSURBVDhPpZFZL0NBHMW94X4Xe6vW2BJSa6ql1OWW
|
||||
Wkvjheptq9VSgliuR7GvkdhiDSLxqJYKn0F8CdVj5oqG9tri4TeZOfM//5k5EwHgX0iKf0FS/A7tUqlQ
|
||||
PlvofF+HFXxH5WKJYNo3oG2Hg1LI4akmWShFxUKx0LHXgIl7NzyXVujXtMgaSLFJFoeimS8SjLt6jN25
|
||||
MHrnRP16FbI9qUhzyKKCRcYzLq/lmG36aKSo54oEeuURnxPDPod4cqZb4U/tTYqi+2/mUy6j+Yh94i9M
|
||||
4DYrOt/NJCyhdbsOw7e9GLq1g1utRIYr2Z9iTxTNYoO2k7r85sOax0EvjzFfH3RrKj8Jq1M1oxxt2WIx
|
||||
eGOH55pH7YoG6X1yv8KWEDSLDZoOdNGG3WqYz9sx+TAAj9cK454epgMD+r0WuK8tYJfVSHPKXpKtn81i
|
||||
AzqwG2qGnAzToUF859CNDa4rM1xeM3RL5TSsgJyPDzNTghMSFqOaVqJxswbuqx44LrtQvaACCSsgt8RJ
|
||||
mimfFsqpXKZgPJtcWQPtfBlIWAFZT+yXZkqYQP6XyexXgIT1nGSOjQzdD0VSJGExid0xP5opkuLvQcQr
|
||||
vqKpPDRN9lYAAAAASUVORK5CYII=
|
||||
</value>
|
||||
</data>
|
||||
<metadata name="rightclickMenu.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||
<value>17, 17</value>
|
||||
</metadata>
|
||||
<metadata name="exportDialog.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||
<value>324, 17</value>
|
||||
</metadata>
|
||||
<metadata name="$this.TrayHeight" type="System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>82</value>
|
||||
</metadata>
|
||||
</root>
|
||||
@@ -289,6 +289,12 @@
|
||||
<Compile Include="Windows\Dialogs\LiveCapture.Designer.cs">
|
||||
<DependentUpon>LiveCapture.cs</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="Windows\PipelineState\VulkanPipelineStateViewer.cs">
|
||||
<SubType>UserControl</SubType>
|
||||
</Compile>
|
||||
<Compile Include="Windows\PipelineState\VulkanPipelineStateViewer.Designer.cs">
|
||||
<DependentUpon>VulkanPipelineStateViewer.cs</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="Windows\PipelineState\GLPipelineStateViewer.cs">
|
||||
<SubType>UserControl</SubType>
|
||||
</Compile>
|
||||
@@ -409,6 +415,9 @@
|
||||
<EmbeddedResource Include="Windows\Dialogs\LiveCapture.resx">
|
||||
<DependentUpon>LiveCapture.cs</DependentUpon>
|
||||
</EmbeddedResource>
|
||||
<EmbeddedResource Include="Windows\PipelineState\VulkanPipelineStateViewer.resx">
|
||||
<DependentUpon>VulkanPipelineStateViewer.cs</DependentUpon>
|
||||
</EmbeddedResource>
|
||||
<EmbeddedResource Include="Windows\PipelineState\GLPipelineStateViewer.resx">
|
||||
<DependentUpon>GLPipelineStateViewer.cs</DependentUpon>
|
||||
</EmbeddedResource>
|
||||
|
||||
Reference in New Issue
Block a user