mirror of
https://github.com/baldurk/renderdoc.git
synced 2026-05-06 01:50:38 +00:00
409 lines
15 KiB
C#
409 lines
15 KiB
C#
/******************************************************************************
|
|
* 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 GLPipelineState
|
|
{
|
|
[StructLayout(LayoutKind.Sequential)]
|
|
public class VertexInputs
|
|
{
|
|
[StructLayout(LayoutKind.Sequential)]
|
|
public class VertexAttribute
|
|
{
|
|
public bool Enabled;
|
|
[CustomMarshalAs(CustomUnmanagedType.CustomClass)]
|
|
public ResourceFormat Format;
|
|
|
|
[StructLayout(LayoutKind.Sequential)]
|
|
public struct GenericValueUnion
|
|
{
|
|
[CustomMarshalAs(CustomUnmanagedType.FixedArray, FixedLength = 4, FixedType = CustomFixedType.Float)]
|
|
public float[] f;
|
|
|
|
[CustomMarshalAs(CustomUnmanagedType.FixedArray, FixedLength = 4, FixedType = CustomFixedType.UInt32)]
|
|
public UInt32[] u;
|
|
|
|
[CustomMarshalAs(CustomUnmanagedType.FixedArray, FixedLength = 4, FixedType = CustomFixedType.Int32)]
|
|
public Int32[] i;
|
|
};
|
|
|
|
[CustomMarshalAs(CustomUnmanagedType.Union)]
|
|
public GenericValueUnion GenericValue;
|
|
|
|
public UInt32 BufferSlot;
|
|
public UInt32 RelativeOffset;
|
|
};
|
|
[CustomMarshalAs(CustomUnmanagedType.TemplatedArray)]
|
|
public VertexAttribute[] attributes;
|
|
|
|
[StructLayout(LayoutKind.Sequential)]
|
|
public class VertexBuffer
|
|
{
|
|
public ResourceId Buffer;
|
|
public UInt32 Stride;
|
|
public UInt32 Offset;
|
|
public UInt32 Divisor;
|
|
};
|
|
[CustomMarshalAs(CustomUnmanagedType.TemplatedArray)]
|
|
public VertexBuffer[] vbuffers;
|
|
|
|
public ResourceId ibuffer;
|
|
public bool primitiveRestart;
|
|
public UInt32 restartIndex;
|
|
|
|
public bool provokingVertexLast;
|
|
};
|
|
[CustomMarshalAs(CustomUnmanagedType.CustomClass)]
|
|
public VertexInputs m_VtxIn;
|
|
|
|
[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 customShaderName;
|
|
|
|
[CustomMarshalAs(CustomUnmanagedType.UTF8TemplatedString)]
|
|
public string ProgramName;
|
|
public bool customProgramName;
|
|
|
|
public bool PipelineActive;
|
|
[CustomMarshalAs(CustomUnmanagedType.UTF8TemplatedString)]
|
|
public string PipelineName;
|
|
public bool customPipelineName;
|
|
|
|
private IntPtr _ptr_ShaderDetails;
|
|
[CustomMarshalAs(CustomUnmanagedType.Skip)]
|
|
public ShaderReflection ShaderDetails;
|
|
[CustomMarshalAs(CustomUnmanagedType.CustomClass)]
|
|
public ShaderBindpointMapping BindpointMapping;
|
|
|
|
public ShaderStageType stage;
|
|
|
|
[CustomMarshalAs(CustomUnmanagedType.TemplatedArray)]
|
|
public UInt32[] Subroutines;
|
|
};
|
|
[CustomMarshalAs(CustomUnmanagedType.CustomClass)]
|
|
public ShaderStage m_VS, m_TCS, m_TES, m_GS, m_FS, m_CS;
|
|
|
|
[StructLayout(LayoutKind.Sequential)]
|
|
public class FixedVertexProcessing
|
|
{
|
|
[CustomMarshalAs(CustomUnmanagedType.FixedArray, FixedLength = 2)]
|
|
public float[] defaultInnerLevel;
|
|
[CustomMarshalAs(CustomUnmanagedType.FixedArray, FixedLength = 4)]
|
|
public float[] defaultOuterLevel;
|
|
public bool discard;
|
|
|
|
[CustomMarshalAs(CustomUnmanagedType.FixedArray, FixedLength = 8)]
|
|
public bool[] clipPlanes;
|
|
public bool clipOriginLowerLeft;
|
|
public bool clipNegativeOneToOne;
|
|
};
|
|
[CustomMarshalAs(CustomUnmanagedType.CustomClass)]
|
|
public FixedVertexProcessing m_VtxProcess;
|
|
|
|
[StructLayout(LayoutKind.Sequential)]
|
|
public class Texture
|
|
{
|
|
public ResourceId Resource;
|
|
public UInt32 FirstSlice;
|
|
public UInt32 HighestMip;
|
|
public ShaderResourceType ResType;
|
|
[CustomMarshalAs(CustomUnmanagedType.FixedArray, FixedLength = 4)]
|
|
public TextureSwizzle[] Swizzle;
|
|
public Int32 DepthReadChannel;
|
|
};
|
|
[CustomMarshalAs(CustomUnmanagedType.TemplatedArray)]
|
|
public Texture[] Textures;
|
|
|
|
[StructLayout(LayoutKind.Sequential)]
|
|
public class Sampler
|
|
{
|
|
public ResourceId Samp;
|
|
[CustomMarshalAs(CustomUnmanagedType.UTF8TemplatedString)]
|
|
public string AddressS, AddressT, AddressR;
|
|
[CustomMarshalAs(CustomUnmanagedType.FixedArray, FixedLength = 4)]
|
|
public float[] BorderColor;
|
|
[CustomMarshalAs(CustomUnmanagedType.UTF8TemplatedString)]
|
|
public string Comparison;
|
|
[CustomMarshalAs(CustomUnmanagedType.UTF8TemplatedString)]
|
|
public string MinFilter;
|
|
[CustomMarshalAs(CustomUnmanagedType.UTF8TemplatedString)]
|
|
public string MagFilter;
|
|
public bool UseBorder;
|
|
public bool UseComparison;
|
|
public bool SeamlessCube;
|
|
public float MaxAniso;
|
|
public float MaxLOD;
|
|
public float MinLOD;
|
|
public float MipLODBias;
|
|
};
|
|
[CustomMarshalAs(CustomUnmanagedType.TemplatedArray)]
|
|
public Sampler[] Samplers;
|
|
|
|
[StructLayout(LayoutKind.Sequential)]
|
|
public class Buffer
|
|
{
|
|
public ResourceId Resource;
|
|
|
|
public UInt64 Offset;
|
|
public UInt64 Size;
|
|
};
|
|
[CustomMarshalAs(CustomUnmanagedType.TemplatedArray)]
|
|
public Buffer[] AtomicBuffers;
|
|
[CustomMarshalAs(CustomUnmanagedType.TemplatedArray)]
|
|
public Buffer[] UniformBuffers;
|
|
[CustomMarshalAs(CustomUnmanagedType.TemplatedArray)]
|
|
public Buffer[] ShaderStorageBuffers;
|
|
|
|
[StructLayout(LayoutKind.Sequential)]
|
|
public class ImageLoadStore
|
|
{
|
|
public ResourceId Resource;
|
|
public UInt32 Level;
|
|
public bool Layered;
|
|
public UInt32 Layer;
|
|
public ShaderResourceType ResType;
|
|
public bool readAllowed;
|
|
public bool writeAllowed;
|
|
public ResourceFormat Format;
|
|
};
|
|
[CustomMarshalAs(CustomUnmanagedType.TemplatedArray)]
|
|
public ImageLoadStore[] Images;
|
|
|
|
[StructLayout(LayoutKind.Sequential)]
|
|
public class Feedback
|
|
{
|
|
public ResourceId Obj;
|
|
[CustomMarshalAs(CustomUnmanagedType.FixedArray, FixedLength = 4)]
|
|
public ResourceId[] BufferBinding;
|
|
[CustomMarshalAs(CustomUnmanagedType.FixedArray, FixedLength = 4)]
|
|
public UInt64[] Offset;
|
|
[CustomMarshalAs(CustomUnmanagedType.FixedArray, FixedLength = 4)]
|
|
public UInt64[] Size;
|
|
public bool Active;
|
|
public bool Paused;
|
|
};
|
|
[CustomMarshalAs(CustomUnmanagedType.CustomClass)]
|
|
public Feedback m_Feedback;
|
|
|
|
[StructLayout(LayoutKind.Sequential)]
|
|
public class Rasterizer
|
|
{
|
|
[StructLayout(LayoutKind.Sequential)]
|
|
public class Viewport
|
|
{
|
|
public float Left, Bottom;
|
|
public float Width, Height;
|
|
public double MinDepth, MaxDepth;
|
|
public bool Enabled;
|
|
};
|
|
[CustomMarshalAs(CustomUnmanagedType.TemplatedArray)]
|
|
public Viewport[] Viewports;
|
|
|
|
[StructLayout(LayoutKind.Sequential)]
|
|
public class Scissor
|
|
{
|
|
public Int32 Left, Bottom;
|
|
public Int32 Width, Height;
|
|
public bool Enabled;
|
|
};
|
|
[CustomMarshalAs(CustomUnmanagedType.TemplatedArray)]
|
|
public Scissor[] Scissors;
|
|
|
|
[StructLayout(LayoutKind.Sequential)]
|
|
public class RasterizerState
|
|
{
|
|
public TriangleFillMode FillMode;
|
|
public TriangleCullMode CullMode;
|
|
public bool FrontCCW;
|
|
public float DepthBias;
|
|
public float SlopeScaledDepthBias;
|
|
public float OffsetClamp;
|
|
public bool DepthClamp;
|
|
|
|
public bool MultisampleEnable;
|
|
public bool SampleShading;
|
|
public bool SampleMask;
|
|
public UInt32 SampleMaskValue;
|
|
public bool SampleCoverage;
|
|
public bool SampleCoverageInvert;
|
|
public float SampleCoverageValue;
|
|
public bool SampleAlphaToCoverage;
|
|
public bool SampleAlphaToOne;
|
|
public float MinSampleShadingRate;
|
|
|
|
public bool ProgrammablePointSize;
|
|
public float PointSize;
|
|
public float LineWidth;
|
|
public float PointFadeThreshold;
|
|
public bool PointOriginUpperLeft;
|
|
};
|
|
[CustomMarshalAs(CustomUnmanagedType.CustomClass)]
|
|
public RasterizerState m_State;
|
|
};
|
|
[CustomMarshalAs(CustomUnmanagedType.CustomClass)]
|
|
public Rasterizer m_RS;
|
|
|
|
[StructLayout(LayoutKind.Sequential)]
|
|
public class DepthState
|
|
{
|
|
public bool DepthEnable;
|
|
[CustomMarshalAs(CustomUnmanagedType.UTF8TemplatedString)]
|
|
public string DepthFunc;
|
|
public bool DepthWrites;
|
|
public bool DepthBounds;
|
|
public double NearBound;
|
|
public double FarBound;
|
|
};
|
|
[CustomMarshalAs(CustomUnmanagedType.CustomClass)]
|
|
public DepthState m_DepthState;
|
|
|
|
[StructLayout(LayoutKind.Sequential)]
|
|
public class StencilState
|
|
{
|
|
public bool StencilEnable;
|
|
|
|
[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;
|
|
public UInt32 Ref;
|
|
public UInt32 ValueMask;
|
|
public UInt32 WriteMask;
|
|
};
|
|
[CustomMarshalAs(CustomUnmanagedType.CustomClass)]
|
|
public StencilOp m_FrontFace, m_BackFace;
|
|
};
|
|
[CustomMarshalAs(CustomUnmanagedType.CustomClass)]
|
|
public StencilState m_StencilState;
|
|
|
|
[StructLayout(LayoutKind.Sequential)]
|
|
public class FrameBuffer
|
|
{
|
|
public bool FramebufferSRGB;
|
|
|
|
[StructLayout(LayoutKind.Sequential)]
|
|
public class Attachment
|
|
{
|
|
public ResourceId Obj;
|
|
public UInt32 Layer;
|
|
public UInt32 Mip;
|
|
};
|
|
|
|
[StructLayout(LayoutKind.Sequential)]
|
|
public class FBO
|
|
{
|
|
public ResourceId Obj;
|
|
|
|
[CustomMarshalAs(CustomUnmanagedType.TemplatedArray)]
|
|
public Attachment[] Color;
|
|
public Attachment Depth;
|
|
public Attachment Stencil;
|
|
|
|
[CustomMarshalAs(CustomUnmanagedType.TemplatedArray)]
|
|
public Int32[] DrawBuffers;
|
|
public Int32 ReadBuffer;
|
|
};
|
|
[CustomMarshalAs(CustomUnmanagedType.CustomClass)]
|
|
public FBO m_DrawFBO, m_ReadFBO;
|
|
|
|
[StructLayout(LayoutKind.Sequential)]
|
|
public class BlendState
|
|
{
|
|
[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 byte WriteMask;
|
|
};
|
|
[CustomMarshalAs(CustomUnmanagedType.TemplatedArray)]
|
|
public RTBlend[] Blends;
|
|
|
|
[CustomMarshalAs(CustomUnmanagedType.FixedArray, FixedLength = 4)]
|
|
public float[] BlendFactor;
|
|
};
|
|
[CustomMarshalAs(CustomUnmanagedType.CustomClass)]
|
|
public BlendState m_BlendState;
|
|
};
|
|
[CustomMarshalAs(CustomUnmanagedType.CustomClass)]
|
|
public FrameBuffer m_FB;
|
|
|
|
[StructLayout(LayoutKind.Sequential)]
|
|
public class Hints
|
|
{
|
|
public QualityHint Derivatives;
|
|
public QualityHint LineSmooth;
|
|
public QualityHint PolySmooth;
|
|
public QualityHint TexCompression;
|
|
public bool LineSmoothEnabled;
|
|
public bool PolySmoothEnabled;
|
|
};
|
|
[CustomMarshalAs(CustomUnmanagedType.CustomClass)]
|
|
public Hints m_Hints;
|
|
}
|
|
}
|