- Add ShaderLanguage enum (HLSL, GLSL, SPIRV) - Extend ShaderCompileDesc with source/sourceLanguage fields - D3D12Device::CompileShader supports both file and embedded source - OpenGLDevice::CompileShader supports embedded GLSL source - Refactor test_shader.cpp to use embedded source for both backends This enables consistent shader compilation across D3D12 and OpenGL backends while maintaining backend-specific shader language support.
350 lines
5.0 KiB
C++
350 lines
5.0 KiB
C++
#pragma once
|
|
|
|
#include <cstdint>
|
|
|
|
namespace XCEngine {
|
|
namespace RHI {
|
|
|
|
enum class ShaderType : uint8_t {
|
|
Vertex,
|
|
Fragment,
|
|
Geometry,
|
|
Compute,
|
|
TessControl,
|
|
TessEvaluation,
|
|
Hull,
|
|
Domain,
|
|
Amplification,
|
|
Mesh,
|
|
Library
|
|
};
|
|
|
|
enum class ShaderLanguage : uint8_t {
|
|
Unknown,
|
|
HLSL,
|
|
GLSL,
|
|
SPIRV
|
|
};
|
|
|
|
enum class CullMode : uint8_t {
|
|
None,
|
|
Front,
|
|
Back
|
|
};
|
|
|
|
enum class FillMode : uint8_t {
|
|
Wireframe,
|
|
Solid
|
|
};
|
|
|
|
enum class FrontFace : uint8_t {
|
|
Clockwise,
|
|
CounterClockwise
|
|
};
|
|
|
|
enum class BlendOp : uint8_t {
|
|
Add,
|
|
Subtract,
|
|
ReverseSubtract,
|
|
Min,
|
|
Max
|
|
};
|
|
|
|
enum class BlendFactor : uint8_t {
|
|
Zero,
|
|
One,
|
|
SrcColor,
|
|
InvSrcColor,
|
|
SrcAlpha,
|
|
InvSrcAlpha,
|
|
DstAlpha,
|
|
InvDstAlpha,
|
|
DstColor,
|
|
InvDstColor,
|
|
SrcAlphaSat,
|
|
BlendFactor,
|
|
InvBlendFactor,
|
|
Src1Color,
|
|
InvSrc1Color,
|
|
Src1Alpha,
|
|
InvSrc1Alpha
|
|
};
|
|
|
|
enum class ComparisonFunc : uint8_t {
|
|
Never,
|
|
Less,
|
|
Equal,
|
|
LessEqual,
|
|
Greater,
|
|
NotEqual,
|
|
GreaterEqual,
|
|
Always
|
|
};
|
|
|
|
enum class StencilOp : uint8_t {
|
|
Keep,
|
|
Zero,
|
|
Replace,
|
|
IncrSat,
|
|
DecrSat,
|
|
Invert,
|
|
Incr,
|
|
Decr
|
|
};
|
|
|
|
enum class TextureType : uint8_t {
|
|
Texture1D,
|
|
Texture2D,
|
|
Texture2DArray,
|
|
Texture3D,
|
|
TextureCube,
|
|
TextureCubeArray
|
|
};
|
|
|
|
enum class BufferType : uint8_t {
|
|
Vertex,
|
|
Index,
|
|
Constant,
|
|
ReadBack,
|
|
Indirect,
|
|
RaytracingAccelerationStructure,
|
|
ShaderBindingTable
|
|
};
|
|
|
|
enum class DescriptorType : uint8_t {
|
|
CBV,
|
|
SRV,
|
|
UAV,
|
|
Sampler,
|
|
RTV,
|
|
DSV
|
|
};
|
|
|
|
enum class PipelineType : uint8_t {
|
|
Graphics,
|
|
Compute,
|
|
Raytracing
|
|
};
|
|
|
|
enum class CommandQueueType : uint8_t {
|
|
Direct,
|
|
Compute,
|
|
Copy
|
|
};
|
|
|
|
enum class LoadAction : uint8_t {
|
|
Undefined,
|
|
Load,
|
|
Clear
|
|
};
|
|
|
|
enum class StoreAction : uint8_t {
|
|
Undefined,
|
|
Store,
|
|
Resolve,
|
|
StoreAndResolve,
|
|
Discard
|
|
};
|
|
|
|
enum class PresentFlags : uint8_t {
|
|
None,
|
|
AllowTearing,
|
|
StrictlyTimedFrame,
|
|
AllowDisplayLatencyWaitableObject
|
|
};
|
|
|
|
enum class PrimitiveTopology : uint8_t {
|
|
Undefined,
|
|
PointList,
|
|
LineList,
|
|
LineStrip,
|
|
TriangleList,
|
|
TriangleStrip,
|
|
LineListAdj,
|
|
LineStripAdj,
|
|
TriangleListAdj,
|
|
TriangleStripAdj,
|
|
PatchList
|
|
};
|
|
|
|
enum class PrimitiveTopologyType : uint8_t {
|
|
Undefined,
|
|
Point,
|
|
Line,
|
|
Triangle,
|
|
Patch
|
|
};
|
|
|
|
enum class FilterMode : uint8_t {
|
|
Point,
|
|
Linear,
|
|
Anisotropic,
|
|
ComparisonPoint,
|
|
ComparisonLinear,
|
|
ComparisonAnisotropic,
|
|
MinimumPoint,
|
|
MinimumLinear,
|
|
MinimumAnisotropic,
|
|
MaximumPoint,
|
|
MaximumLinear,
|
|
MaximumAnisotropic
|
|
};
|
|
|
|
enum class TextureAddressMode : uint8_t {
|
|
Wrap,
|
|
Mirror,
|
|
Clamp,
|
|
Border,
|
|
MirrorOnce
|
|
};
|
|
|
|
enum class BorderColor : uint8_t {
|
|
TransparentBlack,
|
|
OpaqueBlack,
|
|
OpaqueWhite
|
|
};
|
|
|
|
enum class LogicOp : uint8_t {
|
|
Clear,
|
|
Set,
|
|
Copy,
|
|
CopyInverted,
|
|
Noop,
|
|
Invert,
|
|
And,
|
|
Nand,
|
|
Or,
|
|
Nor,
|
|
Xor,
|
|
Equiv,
|
|
AndReverse,
|
|
AndInverted,
|
|
OrReverse,
|
|
OrInverted
|
|
};
|
|
|
|
enum class ColorWriteMask : uint8_t {
|
|
Red = 1,
|
|
Green = 2,
|
|
Blue = 4,
|
|
Alpha = 8,
|
|
All = 15
|
|
};
|
|
|
|
inline ColorWriteMask operator|(ColorWriteMask a, ColorWriteMask b) {
|
|
return static_cast<ColorWriteMask>(static_cast<uint8_t>(a) | static_cast<uint8_t>(b));
|
|
}
|
|
|
|
enum class ShaderVisibility : uint8_t {
|
|
All,
|
|
Vertex,
|
|
Hull,
|
|
Domain,
|
|
Geometry,
|
|
Pixel,
|
|
Amplification,
|
|
Mesh
|
|
};
|
|
|
|
enum class RootParameterType : uint8_t {
|
|
DescriptorTable,
|
|
Constants,
|
|
CBV,
|
|
SRV,
|
|
UAV
|
|
};
|
|
|
|
enum class DescriptorHeapType : uint8_t {
|
|
CBV_SRV_UAV,
|
|
Sampler,
|
|
RTV,
|
|
DSV
|
|
};
|
|
|
|
enum class ResourceViewDimension : uint8_t {
|
|
Unknown,
|
|
Texture1D,
|
|
Texture1DArray,
|
|
Texture2D,
|
|
Texture2DArray,
|
|
Texture2DMS,
|
|
Texture2DMSArray,
|
|
Texture3D,
|
|
TextureCube,
|
|
TextureCubeArray,
|
|
Buffer,
|
|
StructuredBuffer,
|
|
RawBuffer
|
|
};
|
|
|
|
enum class ResourceViewType : uint8_t {
|
|
RenderTarget,
|
|
DepthStencil,
|
|
ShaderResource,
|
|
UnorderedAccess,
|
|
ConstantBuffer,
|
|
Sampler
|
|
};
|
|
|
|
enum class QueryType : uint8_t {
|
|
Occlusion,
|
|
Timestamp,
|
|
PipelineStatistics
|
|
};
|
|
|
|
enum class Format : uint32_t {
|
|
Unknown,
|
|
R8_UNorm,
|
|
R8G8_UNorm,
|
|
R8G8B8A8_UNorm,
|
|
R16G16B16A16_Float,
|
|
R32G32B32A32_Float,
|
|
R16_Float,
|
|
R32_Float,
|
|
D16_UNorm,
|
|
D24_UNorm_S8_UInt,
|
|
D32_Float,
|
|
BC1_UNorm,
|
|
BC2_UNorm,
|
|
BC3_UNorm,
|
|
BC4_UNorm,
|
|
BC5_UNorm,
|
|
BC6H_UF16,
|
|
BC7_UNorm,
|
|
R32G32B32A32_UInt,
|
|
R32_UInt
|
|
};
|
|
|
|
enum class ResourceStates : uint32_t {
|
|
Common,
|
|
VertexAndConstantBuffer,
|
|
IndexBuffer,
|
|
RenderTarget,
|
|
UnorderedAccess,
|
|
DepthWrite,
|
|
DepthRead,
|
|
NonPixelShaderResource,
|
|
PixelShaderResource,
|
|
CopySrc,
|
|
CopyDst,
|
|
Present,
|
|
GenericRead
|
|
};
|
|
|
|
enum class HeapType : uint8_t {
|
|
Default,
|
|
Upload,
|
|
Readback,
|
|
Custom
|
|
};
|
|
|
|
enum class RHIType : uint8_t {
|
|
D3D12,
|
|
OpenGL,
|
|
Vulkan,
|
|
Metal
|
|
};
|
|
|
|
} // namespace RHI
|
|
} // namespace XCEngine
|