专题 08 · 13 篇已完结
Android 图形显示系统
前面七个专题讲的是「画面怎么被算出来」,这一个专题换到平台侧:一帧从 App 到屏幕要穿过 Choreographer、RenderThread、BufferQueue、SurfaceFlinger、HWC 与 vsync 这条链,每一环都拿本机的 dumpsys 与 trace 对账。十三篇已完结。
专题 09 · 13 篇已发布
Jolt Physics 3D
本站第一次把镜头转向渲染之外的题域:物理引擎。Jolt 把「多核扩展性」与「确定性」押在最前——本机实测 8 线程 6.44×、1 至 16 线程下终态哈希全同;两处流传很广的说法也在这里被钉死:v5.6 的 GPU Compute 只服务发束头发、不是 GPU 刚体,官方清单里查无 Solver 与 TGS 命名。十三篇规划中,首篇为全景与边界。
专题 10 · 11 篇已发布
Godot 4 引擎架构
本站第一次写「应用框架层的引擎」。前九个专题都在讲画面与物理怎么被算出来,这一个换到引擎内部:把一次 2D 绘制拆成四层落点,逐层给出源码坐标。首篇把这条链走通,并用本机三后端启动读数把「三种渲染方法 × 四种驱动」的矩阵现场演示出来。第二篇把镜头压到场景层,回答一条绘制命令是谁在什么时候下发的。第三篇进服务层,讲 RenderingServer 的接口为什么长成一组 RID 型命令。第四篇讲画布剔除与排序,回答一条绘制命令有没有被画出来、在谁前面。第五篇进画布渲染抽象层,讲那条链交出去之后长什么样、又是怎么变成一次提交的。第六篇进批处理,讲这批是怎么切出来的、容量从哪来、代价又付在哪。第七篇进渲染设备抽象层,讲一批命令怎么变成一张有序的依赖图、屏障又凭什么能变少。第八篇换了个问题:同一批命令落到四张不同的桌子上会怎样,分叉在哪三处、默认值又藏在哪几层。第九篇换到时间轴上问:这套账在什么时刻、被哪个线程算出来,顺带把两个帧率口径分清。第十篇继续往上游走一步:盘上的东西是怎么进到引擎里的,导入那一次又换出去了什么。第十一篇是收官:这条线官方先后给过三种口径,而每一段账都在本机重算了一遍。
专题 11 · 10 篇已发布
ReShade 注入式后处理
本站第一次写「从进程外面挤进来」的那类工具。前十个专题都在讲画面、物理与平台怎么被算出来,这一个换到渲染之外的位置上:注入式后处理不是后处理的一种实现,而是后处理的一种位置——引擎自己的后处理链跑完之后、交换链呈现之前那一段原本没人的缺口。位置一变,能拿到什么、要付什么代价全都跟着变:它手里只有成品帧与条件满足时的深度,没有几何缓冲,所以只能做屏幕空间近似;换来的是不挑引擎、零侵入。本机在自有开源场景上把这句话量了一遍。第二篇往里走一步,回答一次调用是怎么被接过去的:凭什么轮到你被加载,同一批导出函数又有哪三种接法——这两件事都在本机量过,四组实验全部单变量带反向对照。第三篇换到语言这一层:这门着色语言到底是不是 HLSL 的一个子集、它为什么会自带编译器,都在本机编过一遍。第四篇回到运行时的账上:一个 effect 从源码到画面中间过了几道、执行顺序从哪来、那些写在文件里的渲染状态最后落到 API 的哪几个调用上。第五篇换到「差异去哪了」这个问题上:同一行 add-on 代码凭什么在六种图形 API 上都跑——官方的答案不是抹平差异,而是先选一个坐标系(modeled after the Direct3D 12 and Vulkan APIs),其余四个后端是被翻译进来的那一侧;本篇把「抽象住了」「翻译了」「没抽」三件事分开说。第六篇把镜头从「差异去哪了」转到「接口面长什么样」:一个 add-on 凭什么不导出函数、也不用链接任何库,靠的是一张 100 个格子的事件表、18 个跨 DLL 边界的 C 导出,和一个三档取值的构建开关——签名版在编译期就摘掉了其中 30 个事件。第七篇换到「条件」这一层:为什么深度类效果时灵时不灵——关掉它的那一手根本不在深度模块里,而 MSAA 的能力位、界面不在深度里、子矩形判据这三道条件各自独立。第八篇横切一刀,落到「生态与许可」:那些效果能不能转,取决于这份清单有没有托管任何东西——45 个包全部是指针,同一份清单里并存七种许可状态。第九篇第一次真的把它装上去:在自有的极简 D3D11 demo 上布线、注入、逐档抓图,把「开与不开差多少」拆成四档可核的格子——同一台机器上,深度探针与色调映射一眼可见,而景深几乎看不出。第十篇把画面换成了账:把「多花多少」定义成毫秒每帧,三笔钱分开记——注入层常驻约 0.15 毫秒每帧,而八个单效果里五个同口径档全部低于「效果全关」档,叠加的边际也不等于三个单效果之和;顺带自写了一个小 .fx,把从源码到屏幕那条链走通一遍。十一篇规划中,前十篇分别立边界、拆入口、讲清语言本身、摊开运行时、统一坐标系、摊开接口面、拆开深度条件、横切生态与许可、把画面真的跑出来、把账算出来。
专题 12 · 12 篇已发布(完结)
C/C++ 现代语言与底层
同一段 C/C++,编译器和链接器到底对它做了什么、代价落在哪。这一卷不写语法,也不写面试题速查——它把已有几卷里天天出现的 sizeof、对齐、虚表、异常、内存序、编译时间接过来,专讲这些东西是怎么被决定的。取材只有两种:机制引原文(标准条款、Itanium ABI、官方文档快照),代价靠自跑(两套工具链的布局转储与读数;探针源码、编译命令、原始输出随篇入库)。十二篇分四波:布局与内存 → 编译器与链接器 → 运行时代价 → 跨平台专项。
专题 13 · 3 篇已发布
Vulkan 官方最佳实践
「官方最佳实践」这五个字,在 Vulkan 这边找不到对应的那一份文档——它散在四套体系里(Guide 的 74 页、Tutorial 的 18 章加 10 门进阶课、Samples 的 25 个 Performance 样本、以及验证层里一个开关),而其中最关键的那个开关默认是关的。这一系列不写 API 教程,只回答两件事:官方那条建议原本是什么形态、连同它的硬件前提;以及搬到这台机器上,它到底值多少。取材以自写最小用例的自跑读数为主,官方 Samples / Guide / Validation 只作 Do/Don't 的文本来源与对照,十篇按「2026 新范式 → 同步 → 管线缓存 → render pass → 命令缓冲 → 描述符 → layout transition → swapchain → 验证层闭环」推进。