Files
XCEngine/docs/api/rhi/shader/shader.md
ssdfasd d83ed56177 fix(rhi): Fix RHI abstraction layer API docs per api-skill.md template
- Rename texture/dtor.md to destructor.md per template spec
- Remove duplicate non-hyphenated fence docs (getnativehandle.md, issignaled.md, getcompletedvalue.md)
- Fix template field issues:
  - swap-chain, command-queue: 类型 now uses 'class (abstract)'
  - sampler: 头文件 now uses full path 'XCEngine/RHI/RHISampler.h'
  - types: 类型 fixed from 'structs' to 'struct'
  - enums: 类型 fixed from 'enums' to 'enum class'
- Fix include paths in command-queue and pipeline-layout code examples
- Create missing constructor/destructor docs for 11 classes:
  buffer, texture, shader, device, command-list, command-queue,
  fence, sampler, swap-chain, pipeline-state, pipeline-layout
- Update class overview pages to include constructor/destructor entries
2026-03-22 03:07:41 +08:00

3.0 KiB
Raw Blame History

RHIShader

命名空间: XCEngine::RHI

类型: class (abstract)

头文件: XCEngine/RHI/RHIShader.h

描述: 着色器接口,管理 GPU 着色器程序

概述

RHIShader 是 XCEngine RHI 模块中的抽象着色器接口类,定义了 GPU 着色器程序的标准 API。该类是所有具体着色器实现如 D3D12Shader、VulkanShader 等)的基类,提供了统一的着色器编译、绑定和参数设置接口。

设计目的:

  • 提供跨平台的着色器抽象
  • 统一着色器资源管理和绑定流程
  • 简化渲染管线中着色器的使用

公共方法

方法 描述
RHIShader 默认构造函数
~RHIShader 虚析构函数
CompileFromFile 从文件编译着色器
Compile 从内存数据编译着色器
GetType 获取着色器类型
IsValid 检查着色器是否有效
Bind 绑定着色器到渲染管线
Unbind 解绑着色器
GetNativeHandle 获取原生句柄
SetInt 设置整数 uniform
SetFloat 设置浮点数 uniform
SetVec3 设置三维向量 uniform
SetVec4 设置四维向量 uniform
SetMat4 设置 4x4 矩阵 uniform
Shutdown 释放着色器资源

公共属性

属性 类型 描述
ShaderType enum 着色器类型枚举

ShaderType 枚举值

枚举值 描述
ShaderType::Vertex 顶点着色器
ShaderType::Fragment 片元着色器
ShaderType::Geometry 几何着色器
ShaderType::Compute 计算着色器
ShaderType::TessControl 曲面细分控制着色器
ShaderType::TessEvaluation 曲面细分评估着色器
ShaderType::Hull Hull 着色器 (D3D12)
ShaderType::Domain Domain 着色器 (D3D12)
ShaderType::Amplification 放大着色器 (Mesh Shader)
ShaderType::Mesh Mesh 着色器
ShaderType::Library 着色器库

使用示例

#include "XCEngine/RHI/RHIShader.h"
#include "XCEngine/RHI/RHIDevice.h"

using namespace XCEngine::RHI;

// 通过 RHIDevice 编译着色器
ShaderCompileDesc vsDesc;
vsDesc.fileName = L"shaders/vertex.cso";
vsDesc.entryPoint = "VSMain";
vsDesc.profile = "vs_5_0";
RHIShader* vertexShader = device->CompileShader(vsDesc);
if (vertexShader && vertexShader->IsValid()) {
    vertexShader->Bind();
    
    // 设置 uniform 参数
    float modelMatrix[16] = { /* 4x4 模型矩阵数据 */ };
    vertexShader->SetMat4("u_modelMatrix", modelMatrix);
    
    // 渲染...
    
    vertexShader->Unbind();
}

if (vertexShader) {
    vertexShader->Shutdown();
    delete vertexShader;
}

相关文档