第 7 章 · 高级特性与扩展 章节摘要:本章跟着一条主线走——评估并接入三件当代 GPU 的大能力:光线追踪、网格着色、可变速率着色,顺路收编动态渲染之后最常用的几个扩展。每节都按「能力定位、启用手续、核心对象、工程代价」的同一套流程展开,读完你能对任一高级特性做出「值不值得上」的工程判断。 一条主线 主线是一个具体的产品决策:一款场景编辑器想同时具备「光追预览」「超大场景流畅浏览」「续航友好」三项能力,预算与目标硬件却各有限制。三件能力对应三个扩展族,接入方式与代价差异极大——本章沿这条决策线逐一评估,最后交回一张「按需取用」的接入清单。
章节摘要:本章跟着一条主线走——评估并接入三件当代 GPU 的大能力:光线追踪、网格着色、可变速率着色,顺路收编动态渲染之后最常用的几个扩展。每节都按「能力定位、启用手续、核心对象、工程代价」的同一套流程展开,读完你能对任一高级特性做出「值不值得上」的工程判断。
主线是一个具体的产品决策:一款场景编辑器想同时具备「光追预览」「超大场景流畅浏览」「续航友好」三项能力,预算与目标硬件却各有限制。三件能力对应三个扩展族,接入方式与代价差异极大——本章沿这条决策线逐一评估,最后交回一张「按需取用」的接入清单。
高级特性的共性值得先说破:它们不是「核心功能的加强版」,而是新的编程模型——光追换了整条管线(射线生成、命中、求交三族着色器),网格着色换掉了顶点装配(任务与网格两阶段直接产出网格),可变速率着色改写了「片段着色的粒度」。所以每节的篇幅都花在「新模型怎么想」上,API 细节反居其次。
第一站 7.1 光线追踪。加速结构的构建与更新、光追管线与着色器族、回调表(SBT)的装配,以及混合渲染管线里光追段的同步注意事项。
第二站 7.2 网格着色与可变速率着色。任务加网格的两阶段几何管线如何取代顶点装配; meshlet 剔除的收益模型;可变速率着色的四种粒度与内容自适应的分块策略。
第三站 7.3 动态渲染与关键扩展。动态渲染之上的常用配套——附件读写与获取、描述符缓冲、管线库;用一张「扩展体检表」把查询、启用、回退三步流程化。
本章的认知转折出现在 7.1 的回调表:当发现「着色器的调用次序」要靠一张手工装配的表来定义,你会意识到光追不是渲染管线的补丁,而是把可见性计算的控制权整体交还。结论是:高级特性的接入门槛不在 API 长度,而在两点——目标硬件的覆盖率(决定能不能上)与新模型的工程改造成本(决定划不划算)。判断永远先于编码,这是本章以「评估」为主线的用意。
三节的评估结论也提前交付,供你带着问题去读正文:光追的性价比取决于效果档位(预览级通常可行,电影级要重算预算);网格着色的收益取决于几何形态(海量低覆盖才赚);可变速率着色几乎总是值得接(粒度可细到不影响画质)。三个结论都不是普适答案,但足以作为你评估自家项目时的起手参照——用本章各节给出的收益算法代入自己的数据,答案会比任何教程给的更可靠。
阅读顺序的建议也一并给出:三节相互独立,但 7.1 的工程代价最高、决策链条最长,建议先读它建立「评估流程」的手感,再用同样的流程快速过 7.2 与 7.3——先难后易,流程复用。若你的产品与本章主线的场景编辑器定位不同(比如纯移动端工具),可以只读与目标硬件相关的节,评估清单的框架是通用的,填入的数据因产品而异。
说明加速结构两级(底层与顶层)的分工,写出构建与更新的最小代码路径。
组装一个最小光追管线:管线创建、回调表布局与填充、追踪调用的发出。
判断一个场景是否值得把几何管线迁到网格着色,给出可量化的收益模型。
按内容选择可变速率着色的粒度(绘制级、图元级、屏幕分块),并接入管线。
用「查询、启用、回退」三步流程处理任意新扩展,写出可复用的探测代码框架。
为一个跨代硬件并存的用户群设计高级特性的分级接入方案。
能力接上之后是质量的保证:第 8 章把验证层、调试工具、性能分析器请进场,教你把「跑得对、跑得快」变成可测量的事实,并顺带交代版本演进与生态资源——全册在这里收口。