# RHIEnums **命名空间**: `XCEngine::RHI` **类型**: `enum class` **头文件**: `XCEngine/RHI/RHIEnums.h` **描述**: RHI 模块中使用的所有枚举类型汇总。 ## 概述 本模块汇总了 RHI 模块中定义的所有枚举类型,用于配置渲染管线的各种状态和参数。 ## 着色器类型 ### ShaderType 着色器类型枚举。 | 枚举值 | 描述 | |--------|------| | `Vertex` | 顶点着色器 | | `Fragment` | 片元着色器 (像素着色器) | | `Geometry` | 几何着色器 | | `Compute` | 计算着色器 | | `TessControl` | 曲面细分控制着色器 | | `TessEvaluation` | 曲面细分评估着色器 | | `Hull` | 外壳着色器 (Hull shader) | | `Domain` | 域着色器 (Domain shader) | | `Amplification` | 放大着色器 (Mesh Shader) | | `Mesh` | 网格着色器 | | `Library` | 着色器库 | ### ShaderVisibility 着色器可见性,控制根签名参数对哪些着色器可见。 | 枚举值 | 描述 | |--------|------| | `All` | 对所有着色器可见 | | `Vertex` | 仅对顶点着色器可见 | | `Hull` | 仅对外壳着色器可见 | | `Domain` | 仅对域着色器可见 | | `Geometry` | 仅对几何着色器可见 | | `Pixel` | 仅对像素着色器可见 | | `Amplification` | 仅对放大着色器可见 | | `Mesh` | 仅对网格着色器可见 | ## 图元设置 ### CullMode 背面剔除模式。 | 枚举值 | 描述 | |--------|------| | `None` | 不剔除 | | `Front` | 剔除正面 | | `Back` | 剔除背面 | ### FillMode 填充模式。 | 枚举值 | 描述 | |--------|------| | `Wireframe` | 线框模式 | | `Solid` | 实体模式 | ### PrimitiveTopology 图元拓扑类型。 | 枚举值 | 描述 | |--------|------| | `Undefined` | 未定义 | | `PointList` | 点列表 | | `LineList` | 线段列表 | | `LineStrip` | 线段条带 | | `TriangleList` | 三角形列表 | | `TriangleStrip` | 三角形条带 | | `LineListAdj` | 带邻接的线段列表 | | `LineStripAdj` | 带邻接的线段条带 | | `TriangleListAdj` | 带邻接的三角形列表 | | `TriangleStripAdj` | 带邻接的三角形条带 | | `PatchList` | 补丁列表 (用于曲面细分) | ## 混合操作 ### BlendOp 混合操作。 | 枚举值 | 描述 | |--------|------| | `Add` | 加法 | | `Subtract` | 减法 (Src - Dst) | | `ReverseSubtract` | 反向减法 (Dst - Src) | | `Min` | 最小值 | | `Max` | 最大值 | ### BlendFactor 混合因子。 | 枚举值 | 描述 | |--------|------| | `Zero` | 0 | | `One` | 1 | | `SrcColor` | 源颜色 | | `InvSrcColor` | 源颜色的逆 | | `SrcAlpha` | 源透明度 | | `InvSrcAlpha` | 源透明度的逆 | | `DstAlpha` | 目标透明度 | | `InvDstAlpha` | 目标透明度的逆 | | `DstColor` | 目标颜色 | | `InvDstColor` | 目标颜色的逆 | | `SrcAlphaSat` | 源透明度饱和值 | | `BlendFactor` | 混合因子 | | `InvBlendFactor` | 混合因子的逆 | | `Src1Color` | 源颜色 1 | | `InvSrc1Color` | 源颜色 1 的逆 | | `Src1Alpha` | 源透明度 1 | | `InvSrc1Alpha` | 源透明度 1 的逆 | ### LogicOp 逻辑操作。 | 枚举值 | 描述 | |--------|------| | `Clear` | 清除 | | `Set` | 设置 | | `Copy` | 复制 | | `CopyInverted` | 反转复制 | | `Noop` | 无操作 | | `Invert` | 反转 | | `And` | 与 | | `Nand` | 与非 | | `Or` | 或 | | `Nor` | 或非 | | `Xor` | 异或 | | `Equiv` | 等价 | | `AndReverse` | 反向与 | | `AndInverted` | 反向与 (输入反转) | | `OrReverse` | 反向或 | | `OrInverted` | 反向或 (输入反转) | ### ColorWriteMask 颜色写入掩码,控制颜色通道写入。 | 枚举值 | 值 | 描述 | |--------|---|------| | `Red` | 1 | 红色通道 | | `Green` | 2 | 绿色通道 | | `Blue` | 4 | 蓝色通道 | | `Alpha` | 8 | 透明度通道 | | `All` | 15 | 所有通道 | **使用示例**: ```cpp // 组合多个通道 ColorWriteMask mask = ColorWriteMask::Red | ColorWriteMask::Green | ColorWriteMask::Blue; // 或者使用 All ColorWriteMask mask = ColorWriteMask::All; ``` ## 深度和模板 ### ComparisonFunc 比较函数,用于深度/模板测试。 | 枚举值 | 描述 | |--------|------| | `Never` | 从不通过 | | `Less` | 小于 | | `Equal` | 等于 | | `LessEqual` | 小于等于 | | `Greater` | 大于 | | `NotEqual` | 不等于 | | `GreaterEqual` | 大于等于 | | `Always` | 永远通过 | ### StencilOp 模板操作。 | 枚举值 | 描述 | |--------|------| | `Keep` | 保持当前值 | | `Zero` | 设为 0 | | `Replace` | 替换为参考值 | | `IncrSat` | 增加并饱和 | | `DecrSat` | 减少并饱和 | | `Invert` | 反转位 | | `Incr` | 增加 (溢出回绕) | | `Decr` | 减少 (溢出回绕) | ## 纹理采样 ### FilterMode 采样器过滤模式。 | 枚举值 | 描述 | |--------|------| | `Point` | 点采样 | | `Linear` | 线性采样 | | `Anisotropic` | 各向异性采样 | | `ComparisonPoint` | 比较点采样 | | `ComparisonLinear` | 比较线性采样 | | `ComparisonAnisotropic` | 比较各向异性采样 | | `MinimumPoint` | 最小值点采样 | | `MinimumLinear` | 最小值线性采样 | | `MinimumAnisotropic` | 最小值各向异性采样 | | `MaximumPoint` | 最大值点采样 | | `MaximumLinear` | 最大值线性采样 | | `MaximumAnisotropic` | 最大值各向异性采样 | ### TextureAddressMode 纹理寻址模式。 | 枚举值 | 描述 | |--------|------| | `Wrap` | 重复寻址 | | `Mirror` | 镜像寻址 | | `Clamp` | 钳制寻址 | | `Border` | 边框颜色寻址 | | `MirrorOnce` | 单次镜像寻址 | ### BorderColor 边框颜色。 | 枚举值 | 描述 | |--------|------| | `TransparentBlack` | 透明黑色 (0,0,0,0) | | `OpaqueBlack` | 不透明黑色 (0,0,0,1) | | `OpaqueWhite` | 不透明白色 (1,1,1,1) | ## 纹理和缓冲区类型 ### TextureType 纹理类型。 | 枚举值 | 描述 | |--------|------| | `Texture1D` | 1D 纹理 | | `Texture2D` | 2D 纹理 | | `Texture2DArray` | 2D 纹理数组 | | `Texture3D` | 3D 纹理 | | `TextureCube` | 立方体纹理 | | `TextureCubeArray` | 立方体纹理数组 | ### BufferType 缓冲区类型。 | 枚举值 | 描述 | |--------|------| | `Vertex` | 顶点缓冲区 | | `Index` | 索引缓冲区 | | `Constant` | 常量缓冲区 (CBV) | | `ReadBack` | 回读缓冲区 | | `Indirect` | 间接执行缓冲区 | | `RaytracingAccelerationStructure` | 光线追踪加速结构 | | `ShaderBindingTable` | 着色器绑定表 | ### Format 纹理和缓冲区格式。 | 枚举值 | 描述 | |--------|------| | `Unknown` | 未知格式 | | `R8_UNorm` | 单通道 8 位归一化 | | `R8G8_UNorm` | 双通道 8 位归一化 | | `R8G8B8A8_UNorm` | 四通道 8 位归一化 | | `R16G16B16A16_Float` | 四通道 16 位浮点 | | `R32G32B32A32_Float` | 四通道 32 位浮点 | | `R16_Float` | 单通道 16 位浮点 | | `R32_Float` | 单通道 32 位浮点 | | `D16_UNorm` | 16 位深度 | | `D24_UNorm_S8_UInt` | 24 位深度 + 8 位模板 | | `D32_Float` | 32 位深度 | | `BC1_UNorm` | BC1 压缩格式 | | `BC2_UNorm` | BC2 压缩格式 | | `BC3_UNorm` | BC3 压缩格式 | | `BC4_UNorm` | BC4 压缩格式 | | `BC5_UNorm` | BC5 压缩格式 | | `BC6H_UF16` | BC6H 压缩格式 (无符号) | | `BC7_UNorm` | BC7 压缩格式 | | `R32G32B32A32_UInt` | 四通道 32 位无符号整数 | | `R32_UInt` | 单通道 32 位无符号整数 | ## 资源和内存 ### ResourceStates 资源状态,描述资源当前的使用方式。 | 枚举值 | 描述 | |--------|------| | `Common` | 通用状态 | | `VertexAndConstantBuffer` | 顶点缓冲/常量缓冲 | | `IndexBuffer` | 索引缓冲 | | `RenderTarget` | 渲染目标 | | `UnorderedAccess` | 无序访问 | | `DepthWrite` | 深度写入 | | `DepthRead` | 深度读取 | | `NonPixelShaderResource` | 非像素着色器资源 | | `PixelShaderResource` | 像素着色器资源 | | `CopySrc` | 复制源 | | `CopyDst` | 复制目标 | | `Present` | 显示呈现 | | `GenericRead` | 通用读取 | ### HeapType 内存堆类型。 | 枚举值 | 描述 | |--------|------| | `Default` | 默认堆 (GPU 直接访问) | | `Upload` | 上传堆 (CPU 写入 GPU 读取) | | `Readback` | 回读堆 (GPU 写入 CPU 读取) | | `Custom` | 自定义堆 | ## 描述符类型 ### DescriptorType 描述符类型。 | 枚举值 | 描述 | |--------|------| | `CBV` | 常量缓冲区视图 | | `SRV` | 着色器资源视图 | | `UAV` | 无序访问视图 | | `Sampler` | 采样器 | | `RTV` | 渲染目标视图 | | `DSV` | 深度模板视图 | ### DescriptorHeapType 描述符堆类型。 | 枚举值 | 描述 | |--------|------| | `CBV_SRV_UAV` | CBV/SRV/UAV 混合堆 | | `Sampler` | 采样器堆 | | `RTV` | 渲染目标视图堆 | | `DSV` | 深度模板视图堆 | ### RootParameterType 根参数类型。 | 枚举值 | 描述 | |--------|------| | `DescriptorTable` | 描述符表 | | `Constants` | 常量 (32-bit 常量) | | `CBV` | 常量缓冲区视图 | | `SRV` | 着色器资源视图 | | `UAV` | 无序访问视图 | ## 命令相关 ### CommandQueueType 命令队列类型。 | 枚举值 | 描述 | |--------|------| | `Direct` | 直接命令队列 (图形/计算) | | `Compute` | 计算命令队列 | | `Copy` | 复制命令队列 | ### PipelineType 管线类型。 | 枚举值 | 描述 | |--------|------| | `Graphics` | 图形管线 | | `Compute` | 计算管线 | | `Raytracing` | 光线追踪管线 | ### LoadAction 加载操作,渲染通道开始时的加载行为。 | 枚举值 | 描述 | |--------|------| | `Undefined` | 未定义 | | `Load` | 加载现有内容 | | `Clear` | 清除为指定值 | ### StoreAction 存储操作,渲染通道结束时的存储行为。 | 枚举值 | 描述 | |--------|------| | `Undefined` | 未定义 | | `Store` | 存储结果 | | `Resolve` | 解析 (多重采样) | | `StoreAndResolve` | 存储并解析 | | `Discard` | 丢弃 | ### PresentFlags 呈现标志。 | 枚举值 | 描述 | |--------|------| | `None` | 无标志 | | `AllowTearing` | 允许垂直同步撕裂 | | `StrictlyTimedFrame` | 严格计时帧 | | `AllowDisplayLatencyWaitableObject` | 允许显示延迟等待对象 | ### QueryType 查询类型。 | 枚举值 | 描述 | |--------|------| | `Occlusion` | 遮挡查询 | | `Timestamp` | 时间戳查询 | | `PipelineStatistics` | 管线统计查询 | ## RHI 后端 ### RHIType RHI 后端类型。 | 枚举值 | 描述 | |--------|------| | `D3D12` | DirectX 12 | | `OpenGL` | OpenGL | | `Vulkan` | Vulkan (预留) | | `Metal` | Metal (预留) | ## 相关文档 - [../rhi.md](../rhi.md) - RHI 模块总览 - [RHITypes](../types/types.md) - 结构体类型汇总