当前位置: 首页 > news >正文

Pass 和 Shader的关系

  • 在渲染管线中,pass 与 shader 是两个紧密关联但概念层级不同的部分:

Shader(着色器)

  • 是运行在 GPU 上的程序代码,使用 HLSL/GLSL 等着色语言编写。
  • 按功能分为不同阶段的着色器,例如顶点着色器(VS)、像素着色器(PS)、计算着色器(CS)等。
    在引擎的 HLSL 文件中,例如 CS_Entry_ ****** _readback 就是一个计算着色器入口函数,它会被编译成 GPU 可执行的着色器对象。

Pass(渲染通道)

  • 是渲染流程中的一个执行单元,定义了在一次绘制调用中使用哪些着色器、渲染状态、输入输出资源等。
  • 一个 pass 会绑定具体的 shader 程序(或多个阶段的 shader),并配置渲染目标、混合模式、深度测试等状态。
    在引擎的 shader 配置中,可以看到类似:
    pass hiz_occlusion_query_meshComputeShader = compile cs_5_0 CS_Entry_hiz_occlusion_query_mesh();

这里的 pass 名称是 hiz_occlusion_query_mesh,它指定了使用 CS_Entry_hiz_occlusion_query_mesh 这个计算着色器入口函数来执行。

两者的关系

Shader 是代码实现,Pass 是调度和配置。
一个 shader 函数(如 CS_Entry_shadow_hzb_culling_width_readback)只有在被某个 pass 引用并编译绑定后,才会在渲染过程中被执行。
一个 pass 可以引用一个或多个 shader 阶段(例如同时指定 VS 和 PS),也可以只引用一个计算着色器(CS)。
同一个 shader 代码可以被多个 pass 复用,不同 pass 可以使用相同的 shader 但配合不同的渲染状态和资源,达到不同的渲染效果。

结论:

在渲染中,shader 是 GPU 执行的具体程序代码,负责处理顶点、像素或计算任务;pass 是渲染流程中的一个配置单元,负责组织和调用 shader,并设置渲染状态与资源。Pass 决定了何时、以何种方式执行某个 shader,shader 则定义了执行时的具体计算逻辑。两者结合,构成了渲染管线的基本执行结构。

http://www.sczhlp.com/news/10682/

相关文章:

  • 二期鸡熏
  • root密码忘记解决办法
  • 【2025牛客暑期多校训练营9】L Ping Pong
  • 禁止废话
  • 2025.8.12总结 - A
  • 如何优化NebulaGraph的查询性能?
  • nim语言配置nimcache编译缓存
  • 20250811 做题记录
  • 20250812 做题记录
  • [PaperReading] RT-1: ROBOTICS TRANSFORMER FOR REAL-WORLD CONTROL AT SCALE
  • 【03】厦门立林科技——立林科技 嵌入式 校招笔试,题目记录及解析 - 指南
  • JAX快速上手:从NumPy到GPU加速的Python高性能计算库入门教程
  • 数组打印的全量显示设置
  • 8.11总结
  • 8.12总结
  • 2025.08.12 NK9
  • 带修主席树模板
  • 《烛之武退秦师》
  • Admin.NET站在巨人肩膀上的 .NET 通用权限开发框架
  • nebulagraph 查询IO下推总结
  • base_test中的task A,在用例中也写上一个task A,但是这个task A在base_test中调用,实际执行的是用例中的task A,还是base test中的task A
  • LeetCode 面试经典 150_数组/字符串_O(1)时间插入、删除和获取随机元素(12_380_C++_中等)(哈希表) - 教程
  • youwiki大佬的博文
  • 数字化转型别再堆工具了!这款项目管理软件才是破局关键
  • 20250812
  • 数据结构复习第一天(2025/8/12)
  • FWT小记
  • 数字孪生技术是如何在智慧园区领域稳步发展的?
  • 软工8.12
  • nim语言配置nimble路径