posts

《计算机图形学》卷二《着色、光照与纹理》· 全书目录与章节索引(50 篇)

《计算机图形学》卷二《着色、光照与纹理》全 50 篇。卷一已经把装配、深度与覆盖封版成一组可复现的整数,本卷只替换着色环节:第一部分(第 1–4 章)从经验模型推到可断言的着色——Lambert 与漫反射、Phong 与高光、着色频率与插值,BRDF 与能量守恒、常见 BRDF 的定点化、材质的组合与混合,法线的变换、切线空间、法线贴图的解压与重建,阴影贴图的原理、分辨率偏差与走样、软阴影与 PCF;第二部分(第 5–8 章)处理间接与纹理——环境光遮蔽、SSAO 的采样与噪声、环境贴图与球谐,微表面理论、金属度-粗糙度工作流、能量守恒的验证,线性空间与 sRGB、色调映射、色彩管理的整数化,纹理坐标与寻址模式、过滤与 mipmap 的构造、各向异性过滤;第三部分(第 9–12 章)做程序化纹理与数值一致——值噪声与 Perlin、分形噪声与 fBm、程序化纹理的整数化,卷积与模糊、Bloom 与泛光、色调与调色,时间抗锯齿、抖动与蓝噪声、抗锯齿的度量,最后把浮点的容差口径、图像 digest 与误差度量、CPU 与 GPU 的比对做成可验证的判据;第四部分(第 13–16 章)把材质与光照工程化并装配成完整着色链路,做三种消费的联调并交付卷三。按章节提供仿真、逻辑内核与原型;完整项目的配置组装与交付验收仍在补齐。全书围绕程序化场景《烛影山谷》与工具链 lantern 展开。

《计算机图形学》卷二《着色、光照与纹理》全 50 篇。它回答一个问题:颜色从哪来,能不能写成一组可逐像素断言、可被证伪的量?

卷一把渲染的骨架封版了:装配、深度、覆盖全部落成整数,Python 与 TypeScript 产出逐字节相同的像素缓冲。本卷不碰骨架,只换着色环节——片元的颜色从「逐顶点算完 Lambert 再插值」改为「插值法线后逐像素求值」。这个替换是可度量的:同一份场景规格、同一套几何,两条路径的覆盖掩码差异是 0.0‰,而着色频率差异是 41261 像素(537.2526‰)、MAE 3.5764、PSNR 37.06 dB。骨架没动,差的就只是着色,这正是把规格与实现分离的收益。

做法仍然是那一句话:一份场景规格,三种宿主消费。config/scene_spec.json 是唯一真源,它同时驱动 S 层 Python + numpy 的 CPU 逐像素着色器、P 层 TypeScript 定点着色内核、W 层浏览器 WebGL2 片元着色器。本卷新增的两条纪律与卷一一致:整数与定点逐位一致(逐像素路径的 sha256 是 0d997343ca547ed5…,两侧必须相同),以及浮点按声明容差(GPU 的插值与精度规则与 CPU 不同,一律用不一致像素占比、MAE、PSNR 断言,正文禁写「逐位相等」)。

贯穿全书的仍是程序化生成的虚构场景 《烛影山谷》(lantern-hollow)与工程 lantern:起伏地形 + 三个材质球 + 一盏方向光与环境光,全部几何与纹理由整数噪声生成,不引入任何第三方素材。本页是《着色、光照与纹理》的全书目录:按章节顺序列出全部 50 篇,点击标题直达正文,也可以从各节末尾的「阅读导航」按顺序通读,或先看目录篇 里的分工说明与可运行性口径。

全书概览

项目内容
书稿《计算机图形学》卷二《着色、光照与纹理》
篇数50 篇(正文 16 章 48 节 + 目录篇 + 附录 A)
贯穿案例程序化场景《烛影山谷》(lantern-hollow,工程 lantern)
核心主张一份场景规格,三种宿主消费;两条一致性纪律
可运行性六档 S / P / W / D / X / B
前置卷一《几何、变换与光栅化》 (16 章 48 节)
后继卷三《光线追踪与全局光照》 (16 章 48 节)

三卷怎么分

卷书名回答的问题
卷一几何、变换与光栅化一次渲染能不能被还原成一组可复现的整数
卷二着色、光照与纹理颜色从哪来,能不能写成可逐像素断言的量
卷三光线追踪与全局光照光能不能被还原成一个可估计的积分

与站内既有内容的分工

本卷 16 章

第一部分 · 从经验模型到可断言的着色(第 1–4 章)

第二部分 · 间接光、材质与纹理(第 5–8 章)

第三部分 · 程序化纹理与数值一致(第 9–12 章)

第四部分 · 材质、光照与装配(第 13–16 章)

可运行性

本卷沿用六档口径:S 是 Python + numpy 的 CPU 逐像素着色器(向量化插值法线,实跑 156 ms/帧 @ 320×240),P 是 TypeScript 定点着色内核(node --test,含与 S 层 sha256 逐字节相同的断言与负例),W 是浏览器 WebGL2 片元着色器真渲染(Playwright 无头读像素,与 S 层按声明容差比对),D 是规格文本、schema 与清单,X 是需真实 GPU 环境、命令行不可复现的部分(正文逐处标注),B 是参数扰动与相变扫描(软告警不硬失败)。每一节至少有一个 S / P / W 档的代码块,且正文里的每个数字都来自本机实跑。

「着色正确」在本卷是代理指标,不是「画得好看」:图像误差(MAE、PSNR、最大通道差)、不一致像素占比(千分比)、能量守恒残差(半球积分的估计值减 1,必须 ≤ 0)、量化误差(传递函数往返的灰度级残差)、走样阈值(参数扰动下首次出现可见走样的参数值)。这些只用于相对比较,不做绝对化表述。

怎么读

想先看主张,从目录篇 开始,那里有三卷定位、两条纪律与六档口径。想直接看本卷的入口实验,读第 1.3 节 ——它用一组数字证明「骨架封版、只换着色」这件事是可度量的。只关心「颜色为什么必须在线性空间算」,看第 7.1 节 。只关心「怎么证明一个 BRDF 是守恒的」,看第 6.3 节 。需要查公式与参数,直接翻附录 A 。

全部文章 game golang 客户端开发 Minigame Saas rust Python Java cg Typescript
cg

12.2 图像 digest 与误差度量

sha256 是「全等判据」,只在「全等是合理期望」时成立——浮点实现的 sha256 与基线不同,而它的 MAE 只有 0.4963。本节给出 MAE / RMSE / PSNR / 最大通道差四个标量的定义与各自盲区:整幅 +1 与 4 像素 +64 的 MAE 完全相同,只有 RMSE 与最大通道差分得开;覆盖归属差异与颜色误差是两条独立判据,必须分两栏报告。

8 分钟阅读
计算机图形学 着色器 光栅化