Files
XCEngine/engine/include/XCEngine/RHI/RHIEnums.h
ssdfasd 32c04b86b7 RHI: Add embedded shader source support via ShaderCompileDesc
- 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.
2026-03-25 12:00:26 +08:00

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