Skip to content
阅读量:加载中...

光照知识库·写作规范

本规范适用于团队光照知识库(OpenGL 2D/3D 光照)的所有文档撰写,
目标:让任何团队成员都能读懂概念、拿来即用代码。


一、文档类型

每篇文档属于且只属于其中一种类型,禁止混写。

类型目的标志性问题
概念理解型搞懂"是什么"和"为什么"为什么漫反射会均匀散射?
实现参考型搞定"怎么做"如何在 OpenGL 里配置点光源?

同一个主题(如"漫反射")可以有两篇文档,分属两种类型。


二、思维导师分配

每篇文档由对应导师的方法论驱动写作风格,导师名字不出现在标题和正文中

主题导师核心方法
颜色原理、色彩空间、线性工作流费曼第一性原理——从光的物理本质推导
光照模型(环境光/漫反射/镜面)福尔摩斯观察真实光行为,归纳出公式规律
Phong / Blinn-Phong 着色狄仁杰层层递进,拆解三个分量如何叠加
阴影(Shadow Map、PCF)包青天深度测试即判案,通过/不通过
法线贴图、切线空间柯南真相只有一个——变换矩阵消去表象
PBR / 微表面理论费曼能量守恒、物理第一原理
2D 光照(精灵法线图)狄仁杰层层递进:精灵→法线→光源叠加
OpenGL API / 光照管线配置包青天规则严明,配错即黑屏

三、每篇文档的固定结构

1. 导师引入    —— 用类比或场景建立直觉,不超过 100 字
2. 原理推导    —— 概念 + 公式(可视化优先,公式辅助)
3. 实现示例    —— 完整可运行的 OpenGL/GLSL 代码 + 关键行注释
4. 验证检查    —— "应该看到 X;若没有,检查 Y"
5. 延伸思考    —— 1~2 个开放问题,供团队讨论,不要求写答案

概念理解型文档:重点在 1、2,3 作为辅助示意。
实现参考型文档:重点在 3、4,1 只需一句话交代背景。


四、写作前置流程(大纲先行)

适用条件:话题宽泛、用户用"等""相关知识""全面介绍"等词时,必须先出大纲。

步骤 1 · 生成完整话题树
  列出该主题下所有应该覆盖的子话题,不只是用户明确提到的。
  格式:二级树形结构,每项一行。

步骤 2 · 等待用户确认
  说明:「以下是完整话题树,请确认要写哪些,或补充遗漏的。」
  用户可以删减、合并、新增。

步骤 3 · 按确认后的范围写内容
  不得遗漏已确认的任何子话题。

话题树示例(颜色相关知识)

颜色
├── 物理本质(电磁波、视锥细胞)
├── 颜色格式
│   ├── RGB(整数 / 浮点)
│   ├── RGBA 与 Alpha 通道
│   ├── HSV / HSL
│   ├── Lab / XYZ(感知均匀色彩空间)
│   └── YUV(视频领域)
├── 色彩空间与 Gamma
│   ├── sRGB vs 线性空间
│   ├── Gamma 校正原理
│   ├── 色域(sRGB / P3 / Rec.2020)
│   └── 颜色深度与色带(banding)
├── 亮度与感知
│   ├── 感知亮度公式(BT.709)
│   ├── 亮度 vs 明度 vs 辉度
│   └── 人眼对颜色的敏感度差异
├── 光对颜色的影响
│   ├── 光与物体颜色的乘法关系
│   ├── 色温(暖光 / 冷光 / 开尔文)
│   └── 白平衡与色适应
├── GLSL 中的颜色操作
│   ├── 变亮 / 变暗
│   ├── 饱和度调整
│   ├── 颜色插值(线性空间 vs sRGB 的陷阱)
│   ├── 曝光(Exposure)
│   ├── HDR 与 Tone Mapping(Reinhard / 指数 / ACES)
│   ├── 混合模式(正片叠底、滤色、叠加等)
│   └── LUT 颜色分级
└── 其他
    ├── Premultiplied Alpha vs Straight Alpha
    └── 颜色对比度与可访问性

五、核心约束

约束 1 · 主动扩展,不只写用户提到的
用户的提示是起点,不是终点。
生成大纲时,必须主动识别该主题下所有相关子话题,
包括用户未明确提及但属于该知识域的内容。
禁止"用户没说到就不写"的被动姿态。

约束 2 · 代码必须完整可运行
每段代码要么自含完整上下文,要么明确标注:

glsl
// 需配合:顶点着色器传入 fragPos、normal 变量

不确定能否运行的代码,标注 // 待验证,禁止静默省略。

约束 3 · 概念先于代码
即使是实现参考型,第一段也必须用一句话说清楚"这段代码在做什么",
禁止文档以代码块开头。

约束 4 · 是什么 vs 怎么做 不混写
单篇文档只回答一个问题。需要两个答案时,拆成两篇,互相链接。

约束 5 · 不写推测性内容
文档生成后自检:删除任何"可能""也许""一般来说"开头的推测性表述。
不确定的内容标注 [待确认] 并指定负责人。

约束 6 · 面向零前置知识的团队成员
每篇文档假设读者不熟悉该主题。专业术语首次出现时用括号给出一句话解释。


六、语言风格规范

  • 句子:短句优先,单句不超过 30 字
  • 类比:每个抽象概念至少配一个生活类比(费曼技巧)
  • 代码注释:只注释"为什么",不注释"是什么"(变量名已经说明)
  • 标题:用动词或疑问句,如"漫反射为什么不随视角变化?"而非"漫反射介绍"
  • 禁止:大段背景铺垫、"首先……其次……最后……"套话、未经验证的最佳实践

七、快速模板

概念理解型

# 理解:[概念]

> [用导师方法论建立直觉的引入句,不提导师名]

## 原理

[公式/图示/推导]

## 用代码看懂它

[辅助理解的最小代码示例]

## 验证你理解了

[1~2 个延伸思考问题]

实现参考型

# 如何实现:[功能]

> 本文完成 [具体功能],读完你将得到可运行的 [X] 代码。

## 完整实现

[代码 + 关键行注释]

## 验证结果

你应该看到:[预期现象]  
如果没有,检查:[常见问题清单]

## 延伸

[相关文档链接]

评论