threejs进阶
本课程旨在帮助已经具备 Three.js 基础的开发者深入理解渲染机制,掌握复杂的渲染控制、性能优化技巧,并紧跟 Three.js 最前沿的特性(如 WebGPU、TSL 和 BatchedMesh)。课程不再赘述基础 API 的使用,而是聚焦于“底层原理”、“前沿技术特性”以及“如何精确控制渲染结果”。
课程大纲
01. 基础架构与核心概念回顾
- 场景图(Scene Graph)与世界矩阵更新机制
- BufferGeometry 的底层数据结构
- Material 的编译过程与 Shader 注入
- 渲染循环(Render Loop)的最佳实践
- 前沿特性:WebGLRenderer 与现代 WebGPURenderer 的演进对比
02. 渲染顺序与深度测试详解 (重点)
- 深度缓冲(Depth Buffer)的工作原理
depthTest与depthWrite的排列组合renderOrder的真正作用机制- 透明物体(Transparent)的渲染排序问题与解决方案
- 多重纹理与混合模式(Blending)
- 解决 Z-Fighting:
polygonOffset
03. 后期处理 (Post-processing) 艺术 (重点)
- EffectComposer 的工作流
- RenderPass 与 ShaderPass
- 深度图(Depth Texture)的应用
- 编写自定义后处理 Shader
- 常见效果实现:Bloom, SSAO, FXAA
- Gamma 校正与色彩空间管理
- 前沿特性:基于 WebGPU 和 Node 系统的现代后处理工作流
04. 性能优化与工程化
- 几何体合并(Merge Geometries)
- 实例化渲染(InstancedMesh)的应用与限制
- 前沿特性:BatchedMesh 详解与海量物体渲染优化方案比较
- 纹理压缩与资源管理
- Draw Calls 优化策略
- 内存泄漏排查与 Dispose 机制
05. 材质系统深度定制
Material.onBeforeCompile:修改内置 Shader 的黑魔法- 注入自定义 Uniforms 和 Attribute
ShaderChunk的复用与修改customDepthMaterial:解决自定义顶点动画的阴影问题- 前沿特性:Node Material (节点材质) 与 TSL (Three.js Shading Language) 革命
06. 数学工具与空间交互
- 四元数 (Quaternion):解决万向节死锁,平滑姿态插值
- BVH (Bounding Volume Hierarchy):优化复杂场景的射线检测 (Raycasting)
- 屏幕坐标与世界坐标的数学转换优化
07. GPGPU 与离屏计算
- 核心原理:用纹理存储数据 (Position/Velocity)
- Ping-Pong Framebuffer 技术与 WebGL2 支持
- 利用
GPUComputationRenderer实现百万级粒子模拟 - 前沿特性:拥抱 WebGPU Compute Shader 带来的算力质变