《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. 第1章 初识游戏图形
  2. 第2章 第一个着色器
  3. 第3章 使用纹理
  4. 第4章 半透明与深度
  5. 第5章 使物体动起来
  6. 第6章 摄像机和坐标
  7. 第7章 第一个3D项目
  8. 第8章 漫反射光照
  9. 第9章 第一个光照模型
  10. 第10章 法线贴图
  11. 第11章 立方体贴图和天空盒
  12. 第12章 深入光照
  13. 第13章 剖析着色器性能
  14. 第14章 优化着色器
  15. 第15章 精度
  16. 第16章 在Unity中编写着色器
  17. 第17章 在UE4中编写着色器
  18. 第18章 在Godot中编写着色器
  19. 附录A 重要代码片段

核心对象

  1. 基础效果:第1至6章从网格、GLSL、纹理、透明、变换和摄像机建立二维到三维基础。
  2. 三维光照:第7至12章完成3D项目、漫反射、完整光照、法线贴图、天空盒与多光源。
  3. 性能与精度:第13至15章按剖析、优化和浮点误差形成可靠性能闭环。
  4. 引擎落地:第16至18章把同一概念分别映射到Unity、UE4与Godot。
  5. 附录支持:附录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状态、深度和混合分开记录。

path=GLSLlightingprofilingenginespath=GLSL\rightarrow lighting\rightarrow profiling\rightarrow engines evidence=code+image+captureevidence=code+image+capture conceptsyntaxconcept\neq syntax coverage=18 chapters+Appendix Acoverage=18\ chapters+Appendix\ A

公式中的位置、方向、颜色、深度和时间必须标注空间、范围与单位。片元输出只是候选颜色,最终结果还经过裁剪、深度、模板、混合与颜色编码。

最小实现

#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
  1. 用最小网格与常量颜色验证Shader编译、链接和Draw状态。
  2. 可视化位置、UV、法线、深度或光照项,确认范围和空间。
  3. 打开本章核心效果并保存基线与候选画面。
  4. 构造边界与失败输入,用GPU捕获和计时解释差异。

验收证书

证书包含源码与编译版本、应用绑定、资源哈希、状态、参考图、GPU事件、CPU与GPU帧时间和失败反例。按引擎语法分类学习而没有抽取共同的数据流、空间、混合和性能概念,换引擎后重新迷失。 修复后必须重放同一输入并说明差异来自哪个阶段。

常见误区

本章回顾

本页覆盖基础效果、三维光照、性能与精度、引擎落地、附录支持。掌握标准是能画出数据流,写出最小实现,说明应用或引擎状态,再用边界、精度与性能证据复现结论。

术语表

讨论

评论区加载中…