T.TAO
返回博客
Graphics Engine/22 篇

Metal

用 Apple 的 Metal API 一步步搭出一个渲染器:从第一个 MTKView,到延迟渲染、曲面细分与硬件光线追踪。

  1. 01Metal #0 Swift 回顾画出第一个三角形之前需要的 Swift:声明、可选值、闭包、协议,以及值类型与引用类型的分野。2024-04-29 · 4 min read
  2. 02Metal #1 初始化最小的完整 Metal 应用:MTKView、device、command queue,以及每一帧 Metal 都要走的四个步骤。2024-04-30 · 9 min read
  3. 03Metal #2 渲染管线Pipeline state、vertex descriptor 与 render command encoder —— 在 Metal 里几何数据究竟是怎么走到屏幕上的。2024-05-11 · 14 min read
  4. 04Metal #3 顶点函数顶点函数:顶点描述符、属性绑定、uniform 的三种传递方式,以及为什么 MVP 变换要放在这里做。2024-05-18 · 8 min read
  5. 05Metal #4 片元函数片元函数:插值限定符、深度与混合、多渲染目标,以及为什么 quad 是 GPU 上真正的调度单位。2024-05-25 · 8 min read
  6. 06Metal #5 纹理纹理:加载与像素格式、采样器与寻址模式、mipmap 与各向异性过滤,以及 sRGB 为什么必须交给硬件处理。2024-06-01 · 7 min read
  7. 07Metal #6 摄像机与交互摄像机与交互:视图矩阵是什么、透视与正交投影、Metal 的 [0,1] 深度约定,以及一个能用的轨道摄像机。2024-06-15 · 7 min read
  8. 08Metal #7 光照光照:Phong 与 Blinn-Phong、三种光源类型、衰减模型,以及多光源该放在哪里循环。2024-06-29 · 7 min read
  9. 09Metal #8 材质材质:从 Phong 参数走到 PBR 的 metallic-roughness 工作流,法线贴图与 TBN,以及 Cook-Torrance 各项在算什么。2024-07-13 · 8 min read
  10. 10Metal #9 渲染通道渲染通道:load / store action 为什么是 TBDR 架构上最重要的开关,离屏渲染、MTLHeap,以及帧的组织方式。2024-07-27 · 7 min read
  11. 11Metal #10 阴影阴影贴图:深度 pass、阴影矩阵、痤疮与彼得潘现象的成因和解法,PCF 与级联。2024-08-10 · 9 min read
  12. 12Metal #11 延迟渲染延迟渲染:G-Buffer 的组织与压缩、光照 pass,以及 Apple Silicon 上用 tile memory 做单 pass 延迟渲染。2024-08-24 · 8 min read
  13. 13Metal #12 粒子系统粒子系统:用 compute shader 做模拟、GPU 上的发射与回收、实例化渲染,以及排序问题。2024-09-07 · 8 min read
  14. 14Metal #13 曲面细分曲面细分:Metal 用 compute 算细分因子的独特设计、置换贴图与地形 LOD,以及接缝裂开的原因。2024-09-21 · 7 min read
  15. 15Metal #14 后处理后处理:HDR 与色调映射、泛光、SSAO 的采样策略,以及为什么后处理链应该用 compute 而不是全屏三角形。2024-10-12 · 8 min read
  16. 16Metal #15 反射与折射反射与折射:立方体贴图与 IBL、平面反射、屏幕空间反射的原理与它必然的失效情形,以及折射与色散。2024-10-26 · 8 min read
  17. 17Metal #16 动画动画:变换的插值与四元数、骨骼蒙皮的矩阵调色板、GPU 蒙皮的两种做法,以及为什么关键帧要放在 compute 里求值。2024-11-09 · 8 min read
  18. 18Metal #17 光线追踪(一)渲染算法光线追踪(一):渲染方程、蒙特卡洛估计与重要性采样,以及 Metal 的加速结构和 intersector API。2024-11-23 · 7 min read
  19. 19Metal #18 光线追踪(二)阴影与光照光线追踪(二):阴影射线与软阴影、下一事件估计、路径追踪循环与俄罗斯轮盘赌,以及混合渲染管线。2024-12-07 · 8 min read
  20. 20Metal #19 光线追踪(三)性能优化光线追踪(三):射线发散与波前重排、加速结构的构建策略、采样序列的选择,以及怎么用 GPU 帧捕获定位瓶颈。2024-12-21 · 9 min read
  21. 21Metal #21 [附录] 计算着色器把 GPU 用在绘制之外的地方:kernel 函数、线程组,以及如何正确地划分一次 dispatch。2024-09-14 · 6 min read
  22. 22Metal #22 [附录] SwiftUI 中的 MetalSwiftUI 的 shader 修饰符让 Metal Shading Language 能作用在普通视图上。这座桥怎么搭起来,又止步于何处。2024-09-30 · 13 min read