《Shader开发实战》全书导览
沿Practical Shader Development正式目录掌握基础效果、三维光照、性能与精度、引擎落地、附录支持。
从画面开始
先预测顶点、片元、深度和帧时间会如何变化,再只调整一个参数观察变化。原书以OpenGL 4.1、GLSL和openFrameworks做前15章实验,先让画面出现,再逐步引入数学和三维概念;随后用性能捕获与精度案例验收,最后比较Unity、UE4和Godot三种引擎的表达方式。学习路线必须保留这条跨引擎主线,不能把它缩写成HLSL效果列表。 本页用、、、、建立对象、阶段、状态和证据之间的联系。
第一版权威目录定位
本页一一对应Kyle Halladay《Practical Shader Development: Vertex and Fragment Shaders for Game Developers》第一版《Shader开发实战》全书导览。Springer/Apress正式目录确认2019年第一版、18章、附录代码、ISBN 978-1-4842-4456-2和XXI+381页;清华大学出版社官方样章确认2021中文第一版《Shader开发实战》、ISBN 9787302583349及对应中文目录。
原书小节覆盖
- 第1章 初识游戏图形
- 第2章 第一个着色器
- 第3章 使用纹理
- 第4章 半透明与深度
- 第5章 使物体动起来
- 第6章 摄像机和坐标
- 第7章 第一个3D项目
- 第8章 漫反射光照
- 第9章 第一个光照模型
- 第10章 法线贴图
- 第11章 立方体贴图和天空盒
- 第12章 深入光照
- 第13章 剖析着色器性能
- 第14章 优化着色器
- 第15章 精度
- 第16章 在Unity中编写着色器
- 第17章 在UE4中编写着色器
- 第18章 在Godot中编写着色器
- 附录A 重要代码片段
核心对象
- 基础效果:第1至6章从网格、GLSL、纹理、透明、变换和摄像机建立二维到三维基础。
- 三维光照:第7至12章完成3D项目、漫反射、完整光照、法线贴图、天空盒与多光源。
- 性能与精度:第13至15章按剖析、优化和浮点误差形成可靠性能闭环。
- 引擎落地:第16至18章把同一概念分别映射到Unity、UE4与Godot。
- 附录支持:附录A提供切线计算与cubemap辅助代码,支撑正文实验。
数据流与公式
原书以OpenGL 4.1、GLSL和openFrameworks做前15章实验,先让画面出现,再逐步引入数学和三维概念;随后用性能捕获与精度案例验收,最后比较Unity、UE4和Godot三种引擎的表达方式。学习路线必须保留这条跨引擎主线,不能把它缩写成HLSL效果列表。 前15章以OpenGL 4.1、GLSL和openFrameworks为实验环境;第16至18章再映射到Unity、UE4与Godot。所有代码都要把可编程Shader与应用侧资源绑定、Draw状态、深度和混合分开记录。
公式中的位置、方向、颜色、深度和时间必须标注空间、范围与单位。片元输出只是候选颜色,最终结果还经过裁剪、深度、模板、混合与颜色编码。
最小实现
#version 410
// 每章保留baseline与candidate两个路径
uniform int debugMode;实现顺序固定为常量输出、输入可视化、核心公式、应用状态和优化。先验证Shader编译与链接,再检查属性位置、uniform、纹理单元和Framebuffer;只有画面与状态都正确后才比较性能。
应用与引擎侧契约
shader.begin();
shader.setUniform1f("time", elapsedSeconds);
shader.setUniformTexture("mainTex", texture, 0);
mesh.draw();
shader.end();应用侧保存网格布局、索引、纹理格式、采样器、矩阵顺序、混合与深度状态。引擎章节则把同一概念映射到Material、节点图或ShaderMaterial;语法可以变化,输入空间与合成语义不能靠猜。
边界、精度与性能
测试零向量、退化UV、负缩放、近远裁剪面、透明交叉、纹理边缘、大世界坐标、长时间运行和高过度绘制。性能实验固定硬件、分辨率、VSync与场景,先判断CPU还是GPU受限,再用捕获定位具体Draw和Shader阶段。
renderer: OpenGL 4.1 / named engine and version
scene: fixed mesh, camera, lights, textures
state: depth, cull, blend, target
evidence: image diff, frame capture, CPU/GPU ms
counterexample: smallest reproducible failure- 用最小网格与常量颜色验证Shader编译、链接和Draw状态。
- 可视化位置、UV、法线、深度或光照项,确认范围和空间。
- 打开本章核心效果并保存基线与候选画面。
- 构造边界与失败输入,用GPU捕获和计时解释差异。
验收证书
证书包含源码与编译版本、应用绑定、资源哈希、状态、参考图、GPU事件、CPU与GPU帧时间和失败反例。按引擎语法分类学习而没有抽取共同的数据流、空间、混合和性能概念,换引擎后重新迷失。 修复后必须重放同一输入并说明差异来自哪个阶段。
常见误区
本章回顾
本页覆盖基础效果、三维光照、性能与精度、引擎落地、附录支持。掌握标准是能画出数据流,写出最小实现,说明应用或引擎状态,再用边界、精度与性能证据复现结论。