这里是全站文章的归档入口,下面是按时间倒序排列的全部文章。若想按主题浏览,请从首页的专题分类进入。
7.3 X:笔触质量
前两节把厚涂里能写成数据的部分写完了:笔刷参数、色域、分层与复用。剩下的那一半——笔触质量——本机根本做不了。本节整节标 X,逐条说明它为什么不可复现,并把「不许给不可复现的东西编一个数字」写成一条会失败的门禁:声明表里只要出现一个测量值字段,测试立刻报错。
posts
这里是全站文章的归档入口,下面是按时间倒序排列的全部文章。若想按主题浏览,请从首页的专题分类进入。
前两节把厚涂里能写成数据的部分写完了:笔刷参数、色域、分层与复用。剩下的那一半——笔触质量——本机根本做不了。本节整节标 X,逐条说明它为什么不可复现,并把「不许给不可复现的东西编一个数字」写成一条会失败的门禁:声明表里只要出现一个测量值字段,测试立刻报错。
厚涂最贵的不是笔刷,是「每个资产都从头画一遍」。本节把手绘贴图拆成图层角色与贴图页,落成一份 D 层清单与一段可跑的 TypeScript 校验器:图层角色序列必须与模板逐位一致,每个资产用到的贴图页数有上限,两级复用率是整数千分比——地板除,跨语言逐位一致。
风格化厚涂既没有可导出的模型,也没有可渲染的着色器,能写进规范的只有两样:笔刷参数与色域。本节把两者落成一份 D 层 JSON 规范与一段可跑的 TypeScript 校验器——笔刷的尺寸、间距与图层不透明度带,色域的饱和度上限、明度下限与色相带,全部是整数,并说清为什么这一章只走 D+P+X 而不硬凑一个 S 层。
前两节把贴图和材质都算成了字节,本节把「写实」相对扁平着色的代价算成一张整数账:常驻贴图数、显存字节、每像素采样数、着色器变体数、材质槽数五条可数轴,各算写实/基线的整数比值再加权成代价指数,并给出从朴素写实到逐项缓解的阶梯。真实帧时间与 GPU 占用属 X,命令行不可复现,本节只划界不伪造。
上一节把五张贴图压成三张,本节解决另一半问题:一个道具组到底该切几张材质。把「物理材质分区 × 细节层级」写成 D 层规格,再按每 slot 的分辨率与贴图集算出整链字节,逐位对账:细节密度均值、高细节层字节集中度、按分区合并后的槽位与字节降幅,并让超预算的槽位在账上直接报 OVER。
写实 PBR 一个材质动辄五张贴图,通道打包是把它压回来的第一招。本节把「三张单通道贴图塞进一张 ORM」算成整数字节账,结论反直觉:未压缩时打包反而更大,压缩后打包省到三分之一;再用 PIL 真生成一张通道打包示意 PNG 并回读验证三通道与原图逐点相等。
本章前两节算的都是参数与整数账,但 NPR 里有一整块本机算不了:真渲染一帧。本节专门做划界——把 NPR 相关主题分成「本书讲参数与账」「站内别处讲原理(外链)」「本机根本做不了(X)」三类,写成一张可校验的归属表,并把真渲染、真调参逐处标 X 与显式注明「需真实环境,命令行不可复现」。
上一节把光照量化成色阶带,本节把光照拆成一层层:基础色、阴影、主光、边缘光、高光。每层一个整数参数,档位越高层越多。光照模型与后处理实现外链站内渲染原理专题,本节只做参数表与整数账——每层着色结果怎么算、为什么「阴影最暗、高光最亮」必须写成一条会失败的判据。真实渲染观感标 X。
NPR 卡通渲染把连续光照量化成几段色阶带、把轮廓画成一条描边。本节只做这两个参数的规范与整数账:四组色阶带变体的边界怎么定、为什么四组宽度都恰好和为 1000,描边宽度的千分比在四个高度下如何用整数上取整算出像素数,并用 PIL 依同一份参数真生成色阶带样本图。真实渲染观感标 X。
低多边形要进引擎,先过三道约束:顶点属性步长、材质槽数与顶点色。本节把《星屑旅店》一屏 12 件家具的四种顶点布局算成字节账,用顶点色把材质槽从 19 降到 12、清掉 counter 与 bed 两个超槽资产,并给出每顶点 4 字节的代价与跨语言 digest。
平面着色给每个面一个平色,色块划分就是决定这个面该归哪一档亮度。本节把一块 12 面 lowpoly 宝石按整数 shadeLevel 分成 4 个色块,算出每档面数与最大色块占比 416‰,用 PIL 按同一份 palette 真生成平面色样本 PNG,并给出跨语言 digest 与色块超预算的负例。
低多边形的面数预算好算,顶点预算却常被算错:平面着色要求每个面独立顶点,上传顶点数不是共享顶点数,而是面数的 3 倍。本节把《星屑旅店》lowpoly 主题的一屏 12 件家具算成两套账——面数 1200 过线、平面着色顶点 3600 爆线、索引共享 633 过线,并给出字节倍数与跨语言 digest。
「画得好不好」没有可跑的数字,硬凑一个笔触指标比不写更危险。本节整节标 X:把 2D 手绘的画质与笔触显式划出可命令行复现的范围,只保留能静态校验的东西——笔刷参数声明表的结构、范围与诚实性。真实笔触质量需真实画师与真实环境,命令行不可复现;本节给出的是「不许过度承诺」的门禁,不是画质评分。
手绘资产该拆成几个切分件、拆完有没有人复用,是两笔能算清的账。本节把「切分件数、复用率、单件重绘成本」写成整数模型:用 Python 算复用率与节省成本,用 TypeScript 复算并对拍,再用「只被用一次的件」这个信号抓出切分过度——拆了一堆没人复用的件,账面上看得见。
2D 手绘最容易失控的不是画得漂不漂亮,而是线宽、圆角与色块数各画各的。本节把这三样写成可校验的整数规范:线宽阶梯、圆角上限、每类资产的色块数上限,并用同一份规范真生成色卡与线宽样本 PNG;再用 TypeScript 校验器与 Python 落盘的 JSON 对拍,证明两侧的整数类违例集合与摘要逐位一致。
像素 tile 的预算也是整数账:场景 tile 网格 cols×rows、逻辑屏能铺几整格与边缘半格、tileset 字节 = 唯一 tile 数 × tileW × tileH × bpp、图集占用千分比。附可跑的 S 层脚本与 TS 校验器,跨语言逐位一致。
像素风用整数色差账回答「量化亏多少」:16 级色阶条映射到最近调色板色记总误差,再找最优两色对做有序抖动,抖动把误差从 381 降到 141;抗锯齿会造出 36 色而抖动新色数为 0。附可跑的 S 层脚本与 TS 校验器,跨语言逐位一致,测试六条全绿。
像素风的显示档位与调色板上限全是整数账:逻辑分辨率 320×180 配整数缩放倍率与黑边余量、8 个色彩 token 加明暗 ramp 的调色板用量、5 对 WCAG 对比度 ×10。本节给出可跑的 S 层脚本与 TS 校验器,跨语言逐位一致。
三卷的交付物收尾:12 项分三类(spec-text / schema / runnable-artifact),本套三卷即全部,故状态必须全部 done。S 层校验完整性、P 层与 Python 逐位一致,W 层用一张可切主题的单文件看板把清单、矩阵与交付物总览画出来;再给出四条延伸阅读。
三卷总收官:把卷一 ch16 的规范装配、卷二 ch16 的四道闸门、卷三 ch16 的 8 项验收清单串成一条链,在 6 个主题包上各跑一遍,6×(2+4+8)=84 项判定全过。再独立复算 6×6 距离矩阵,摘要命中跨卷锚点 fa04e9418d9f3c2c;B 层扫阈值证明下限 800 不能松。