章节摘要:前七章的算法要跑起来,最终都要落到一块具体的芯片和一套具体的接口上。本章下到管线底座:8.1 拆解专用光追硬件的设计逻辑——RT Core 为什么把 BVH 遍历铸成固定功能电路、它赢在哪、又在什么情况下失灵;8.2 盘点图形 API 与软件生态——DXR、Vulkan、Metal 三套接口如何把加速结构、射线查询、着色器分发这些概念标准化,OptiX、Embree 等软件库又各自卡位在哪一层。本章反复出现的主线是"契约"二字:硬件承诺以什么粒度加速,软件就以什么模式组织数据;接口暴露什么语义,引擎就要接受什么约束。读完本章,你应当能看懂任何一份光追技术栈图,并为自己的项目选对接口与库。
完成本章后,你应当能够:
金句先行:硬件加速的本质是一纸契约——芯片按"大多数场景的公共部分"固化电路,软件则必须把自己的场景组织成芯片喜欢的形状。
8.1 RT Core 与专用硬件——从"为什么要固化"讲起:BVH 遍历是内存延迟问题而非算术问题,通用计算单元在指针跳转面前束手无策,固定功能电路配上专用缓存才能把它驯服。本节拆解遍历单元、求交单元与着色器回扣的三级协作,直面相干性问题——同一块芯片,相邻像素的反射射线飞快、随机方向的遮挡射线极慢——并讨论节点压缩、射线排序等软件侧的配合手段。
8.2 图形 API 与软件生态——把 4.3 的加速结构、第 7 章的射线查询放到接口层面重新点名。管线式与内联式两种编程模型的取舍、着色器绑定表的内存布局、加速结构构建与更新的标志位、递归治理的两级约束,逐项过完再上溯一层:OptiX 的驱动内管线、Embree 的 CPU 求交内核、各家渲染器与引擎的集成方式,最终拼出一张完整的技术栈地图。
两节是"芯片逻辑"与"接口翻译"的配对:8.1 讲清硬件为什么长成这样(遍历固定功能化、求交专用化、着色器回扣通用化),8.2 讲清接口如何把这套硬件现实翻译成可移植的语义(构建标志、绑定表、递归上限都是硬件约束的语法化)。次序不能颠倒——不懂 SBT 背后的"寻址替代分发",就会把它当成莫名其妙的样板代码;不懂相干性,就理解不了为什么接口要提供射线排序的钩子。
8.1 芯片逻辑 8.2 接口与生态 ┌────────────┐ ┌────────────┐ │ 固定功能遍历 │ 翻译成 │ 管线式/内联式│ │ 相干性问题 │ ────→ │ SBT绑定表 │ │ 专用缓存 │ │ 构建标志位 │ └────────────┘ └─────┬──────┘ ▼ 第 9 章 工程架构:把栈串成可维护的系统
需要的前章知识:4.2 的 BVH 遍历(本章它被铸进硬件)、4.3 的 TLAS/BLAS(接口直接暴露这两层)、第 7 章的射线查询概念(本章给出编程模型)。不要求 GPU 编程经验,但读过任意一套 compute shader 教程会让 8.2 的理解快一倍。
往后的挂靠点:第 9 章的工程架构与性能剖析在技术栈之上展开;第 10 章的实时应用案例里,"支持哪个 API、哪代硬件"直接决定方案货架的上下限。