🎮 纹理采样·缓存调优
📚 30章 实战目录
1
GPU架构基础
管线
现代GPU渲染管线概述、纹理单元(TMU)工作原理、缓存层级结构(L1/L2 Cache)
2
纹理数据格式
压缩
压缩纹理(BC/DXT/ETC/ASTC)原理、Mipmap链与各向异性过滤、纹理尺寸与对齐规则
3
采样器状态
寻址
寻址模式(Wrap/Clamp/Mirror/Border)、过滤模式(Point/Bilinear/Trilinear/Anisotropic)、LOD偏置与Clamp
4
缓存命中率基础
性能
什么是纹理缓存命中率、命中率对性能的影响(带宽/延迟/功耗)、Profiling工具(RenderDoc/NSight/PIX)
5
空间局部性优化
图集
纹理图集(Texture Atlas)原理与实现、数组纹理(Texture Array)替代方案、Tile-Based渲染的缓存友好布局
6
时间局部性优化
复用
帧间缓存复用策略、动态纹理更新与Invalidation、Double/Triple Buffering对缓存的影响
7
Mipmap最佳实践
LOD
Mipmap层级选择算法、Trilinear vs Anisotropic性能权衡、自定义LOD偏置的坑
8
纹理压缩调优
带宽
不同压缩格式的带宽对比、BC1-7的适用场景、ASTC在移动端的调优经验
9
采样器性能陷阱
陷阱
Anisotropic过度使用、LOD Clamp导致闪烁、寻址模式对缓存行的影响
10
带宽优化
流分析
纹理数据流分析、减少纹理读取次数的方法、利用硬件纹理压缩减少带宽
11
GPU缓存架构深入
Bank
L1纹理缓存与L2统一缓存、缓存行大小与对齐、Bank Conflict与Channel Stride
12
纹理布局优化
Swizzle
Swizzle/Tiling/Morton Order原理、线性布局 vs 优化布局性能对比、自定义纹理布局工具
13
多纹理采样策略
GBuffer
多纹理混合的缓存压力、延迟着色中的GBuffer采样优化、Forward+与Clustered的纹理访问模式
14
动态纹理处理
Streaming
动态纹理更新策略(Map/Unmap vs Staging)、UpdateSubresource的缓存影响、纹理Streaming技术
15
虚拟纹理
Megatexture
Megatexture原理、Page Table管理、缓存友好Page请求调度
16
纹理采样与Shader协同
Gather
Shader中纹理采样指令(Sample/Gather/Load)差异、Gather4的缓存效率、Derivative指令对LOD的影响
17
移动端GPU优化
Tile
Tile-Based架构的纹理缓存特点、带宽敏感度分析、PowerVR/Adreno/Mali的差异
18
控制流与纹理采样
Divergent
动态分支对纹理请求的影响、Coherent vs Divergent采样、Wave/Warp内纹理请求合并
19
纹理预取
Prefetch
硬件纹理Prefetch机制、手动Prefetch技巧(如TextureGather)、Prefetch与延迟隐藏
20
缓存抖动诊断
Thrashing
缓存抖动原因分析、诊断工具与方法、减少抖动的纹理调度策略
21
纹理内存池管理
Allocator
纹理分配策略(Buddy/Block Allocator)、内存碎片化处理、纹理生命周期管理
22
跨API纹理优化
Vulkan
DirectX 12 vs Vulkan纹理管理差异、Bindless纹理与Descriptor Heap、跨平台纹理布局兼容性
23
纹理采样与后处理
Bloom
Bloom/SSAO/SSR中的采样模式、Temporal AA的纹理缓存利用、降采样与升采样策略
24
纹理压缩与质量权衡
PSNR
PSNR/SSIM评估方法、压缩伪影类型与避免、自动压缩质量检测工具
25
GPU计时与性能分析
Timer
GPU Timer/Query使用、纹理采样耗时拆解、带宽与延迟的量化分析
26
纹理缓存模拟器
模拟
使用GPU PerfStudio/NSight进行缓存模拟、命中率热力图分析、基于模拟的优化迭代
27
项目案例1:开放世界地形
地形
开放世界地形纹理优化(Mipmap层级、虚拟纹理、Streaming)
28
项目案例2:角色皮肤渲染
皮肤
角色皮肤渲染纹理优化(次表面散射纹理、法线贴图压缩、各向异性过滤调优)
29
项目案例3:UI渲染优化
UI
UI渲染纹理优化(图集打包、缓存行对齐、Overdraw与纹理读取)
30
综合调优流程
自动化
性能预算制定、Profiling驱动优化、A/B测试与回归验证、持续监控与自动化工具链