🎮 Shader 编译器优化实战
📘 30 章 · 从入门到精通
GPU
01
Shader编译器概述
GPU渲染管线简介
编译器作用与地位
HLSL/GLSL/MSL概览
02
编译器前端基础
词法&语法分析入门
抽象语法树AST构建
符号表与作用域
03
中间表示(IR)设计
为什么需要IR
SSA / CFG形式
AST到IR转换
04
类型系统与语义分析
float/int/sampler
类型检查与隐式转换
语义错误处理
05
控制流分析
分支与循环
控制流图CFG构建
不可达代码消除
06
数据流分析
到达定值分析
活跃变量分析
常量传播与折叠
07
死代码消除
基于数据流检测
死代码消除算法
Shader特殊场景
08
常量折叠与传播
编译期常量计算
常量传播优化
Shader实际应用
09
公共子表达式消除CSE
局部CSE与全局CSE
值编号技术
Shader收益分析
10
循环优化
循环不变代码外提
循环展开
循环向量化
11
函数内联
内联收益与代价
启发式策略
Shader特殊考量
12
寄存器分配
寄存器压力分析
图着色分配
线性扫描分配
13
指令调度
指令延迟与吞吐量
列表调度算法
VLIW指令打包
14
纹理与采样器优化
纹理坐标计算优化
采样器状态合并
纹理LOD优化
15
数学运算优化
强度削弱(mul→add)
倒数/平方根近似
三角函数优化
16
精度管理
float/half/fixed选择
精度推导与降级
精度优化陷阱
17
条件执行优化
谓词化技术
分支避免策略
Select指令利用
18
向量化优化
标量到向量转换
向量打包/解包
SIMD利用
19
内存访问优化
统一内存访问
本地数据共享LDS
带宽优化策略
20
编译器后端概述
指令选择
指令调度
寄存器分配·代码发射
21
目标代码生成
IR到目标指令映射
指令编码
二进制生成
22
HLSL编译器优化实践
dxc编译器架构
HLSL特有优化pass
Shader Model 6.x
23
GLSL编译器优化实践
glslangValidator
spirv-opt
SPIR-V·Vulkan优化
24
MSL编译器优化实践
Metal Shader编译器
Metal性能调优
GPU Family优化
25
调试与性能分析工具
Shader调试器
GPU性能计数器
Shader反汇编分析
26
编译器测试与验证
正确性测试
性能回归测试
模糊测试Fuzzing
27
高级优化技术
自动微分在Shader
机器学习优化决策
多阶段编译
28
跨平台Shader编译
SPIR-V通用中间格式
HLSL→GLSL转换
MSL桥接方案
29
Shader编译器未来趋势
JIT与AOT
可微分渲染&编译器
AI辅助Shader生成
30
综合实战
源码到优化二进制
完整优化pass管道
性能对比与调优