posts

《计算机图形学》卷一《几何、变换与光栅化》· 全书目录与章节索引(50 篇)

《计算机图形学》卷一《几何、变换与光栅化》全 50 篇。第一部分(第 1–4 章)把渲染还原成整数:渲染的最小模型与场景规格字段、最小渲染器骨架,向量运算的定点化与齐次坐标,模型/视图/投影矩阵与 MVP 合成,旋转矩阵、四元数与朝向插值;第二部分(第 5–8 章)处理从世界到屏幕的每一步:针孔相机与透视正交投影、视锥与近远平面,整数边函数与覆盖判定、重心坐标插值、深度插值与 z-buffer,DDA 与 Bresenham 及直线光栅化的误差界,视锥裁剪与近平面多边形重建;第三部分(第 9–13 章)做可见性与数值一致:背面剔除与朝向的精确判定、深度缓冲的精度分布与逆转 z、采样定理与 MSAA 的 CPU 实现、UV 与透视校正插值及 mipmap,最后把定点与浮点的分歧、边函数规则的整数化、跨语言逐位一致做成可验证的判据;第四部分(第 14–16 章)把中间缓冲可视化并装配成完整管线,做三种消费的联调并交付卷二。按章节提供仿真、逻辑内核与原型;完整项目的配置组装与交付验收仍在补齐。全书围绕程序化场景《烛影山谷》与工具链 lantern 展开。

《计算机图形学》卷一《几何、变换与光栅化》全 50 篇。它回答一个问题:一次渲染,能不能被还原成一组可复现的整数,并且这件事可以被证伪?

站内的图形学内容基本落在两端:一端是现代图形 API 的实时渲染工程(graphics/ 专题 45 篇与《渲染引擎》55 篇,C++ / GLSL / WGSL / TypeScript,跑在 GPU 上,产出帧率与 draw call),一端是资产管线与预算闸门(《技术美术与管线工程》50 篇)。中间那一段——渲染算法本身的可算性与可证明性——没有人占。 而这一段恰恰是可以写成整数、逐字节比对、跑在 CPU 上、用命令行复现的一段。

做法只有一句话:一份场景规格,三种宿主消费。config/scene_spec.json 是唯一真源(71 个字段,全部是整数,浮点数为 0),它同时驱动三处——S 层 Python + numpy 的 CPU 软件光栅化器、P 层 TypeScript 定点光栅化内核、W 层浏览器 WebGL2 着色器。三处读的是同一个文件。

两条一致性纪律贯穿全卷:整数与定点逐位一致(Python 与 TypeScript 产出逐字节相同的像素缓冲,sha256 比对,这条是可证伪的——一旦某个运算顺序或舍入不同,摘要立刻不同),以及浮点按声明容差(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–13 章)

第四部分 · 调试、几何与装配(第 14–16 章)

可运行性

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

「渲染正确」在本卷是代理指标,不是「画得好看」:覆盖率一致性(CPU 与 GPU 不一致像素占比,千分比)、图像误差(MAE、PSNR、最大通道差)、定点不变量残差(重心坐标三权重之和 − 面积,恒为 0)、走样阈值(参数扰动下首次出现可见走样的参数值)。这些只用于相对比较,不做绝对化表述。

怎么读

想先看主张,从目录篇 开始,那里有三卷定位、两条纪律与六档口径。想直接动手,从第 1 章 把场景规格跑起来,再依次走 S / P / W 三层。只关心「为什么必须用整数」,看第 13 章 的定点与浮点分歧与第 13.3 节 的跨语言逐位一致验证。需要查字段与量纲,直接翻附录 A 。

全部文章 Golang Game Minigame Saas Rust Python Java 游戏开发 客户端开发 GameDev