你可以把现代图形渲染想成一家巨忙的后厨。
你在屏幕上看到“画面动了”,背后其实是:厨师(CPU)不停给后厨(GPU)下单。
而PSO / Pipeline State就像“这道菜的完整菜单+做法+火候+装盘方式”被提前写成了一张“标准工艺卡”。
以前(老 API)你可以边做边说:“火大点、盐少点、盘换一个、再来个酱……”
现在(DX12/Vulkan/Metal)不行了:
你得先把“这道菜要怎么做”的组合一次性确定下来,封装成PSO,后厨才能高效复用。
于是就出现了很多项目的名场面:
- “第一次进副本就卡一下,以后就不卡了。”
- “第一次放某个特效卡到掉帧。”
- “GPU 明明很强,但就是时不时 stutter。”
- “我 shader 都预编译了,怎么还卡?”
答案往往就是:
你 shader 可能编译了,但PSO 还没创建。
或者创建了,但创建时机太烂,卡在了玩家最敏感的一帧。
这篇文章就用大白话,把PSO / Pipeline State 到底怎么创建、创建时到底做了啥“手续”、为什么这么贵、你怎么在引擎里避免它卡人,讲个明明白白。