Skip to content
Back to skills

Hardware 3d

ASecurity

做「照片级真实感」的硬件 / 芯片原理 3D 讲解页(单文件 HTML + WebGL2,零外部依赖)。PBR + 程序化棚拍 IBL + SSAO + 真圆角几何 + 相机静止后累积收敛出真软阴影/真景深;数据流用"按拍走 + 有形状的数据"画芯片内部总线。TRIGGER 当用户说 写实 3D / 真实的芯片效果 / 硬件原理动画 / 芯片内部数据流 / die 内部 / 总线怎么走 / 做成视频那种真实感 / hardware-3d,或要给技术文档配可交互的硬件 3D 图解时使用。DO NOT TRIGGER:2D 页面风格(用 anthropic/apple/glass 等 *-design)、纯图表(用 dataviz)。

  • 2 stars
  • 0 votes
  • 0 copies
  • 2 views
  • Added September 23, 2026
ai-agentsgoswiftshellbashnode

Security analysis

A100/100

Pro scans all 19 files and shows the line behind each finding

Scanned September 29, 2026

npx -y skills add TbusOS/sky-skills --skill hardware-3d --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Hardware 3d?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Hardware 3d
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/tbusos-hardware-3d/badge)](https://www.skillsdirectory.com/skills/tbusos-hardware-3d)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: hardware-3d
description: 做「照片级真实感」的硬件 / 芯片原理 3D 讲解页(单文件 HTML + WebGL2,零外部依赖)。PBR + 程序化棚拍 IBL + SSAO + 真圆角几何 + 相机静止后累积收敛出真软阴影/真景深;数据流用"按拍走 + 有形状的数据"画芯片内部总线。TRIGGER 当用户说 写实 3D / 真实的芯片效果 / 硬件原理动画 / 芯片内部数据流 / die 内部 / 总线怎么走 / 做成视频那种真实感 / hardware-3d,或要给技术文档配可交互的硬件 3D 图解时使用。DO NOT TRIGGER:2D 页面风格(用 anthropic/apple/glass 等 *-design)、纯图表(用 dataviz)。
---

# hardware-3d · 写实硬件 3D 讲解页

## 这套东西分三层,别只抄一层

| 层 | 管什么 | 资产 |
|---|---|---|
| **渲染** | 像不像照片 | `assets/hw3d.js` · `references/materials.md` · `shots.md` |
| **画风** | 页面长什么样、文案怎么写 | `assets/hw3d-ui.css` · `hw3d-ui.js` · `references/visual-language.md` |
| **画法** | 数据流怎么画才看得懂 | `assets/hw3d-flow.js` · `references/flow-craft.md` |

**只做第一层的话,能做出好看的硬件,但做不出"看得懂原理"的页。**
第三层才是这套东西真正值钱的部分 —— 数据要有形状、按拍走、画芯片内部而不是板级。

直接从 `templates/station-page.html` 起步(三层都接好了,开箱能跑,五个检查全过)。
**成品长什么样看 `demos/hardware-3d/index.html`**(本仓 demo 目录):「一条数据从内存颗粒到 CPU 寄存器」,5 站,三层齐用 —— 主板棚拍 · DRAM 颗粒微距 · 颗粒内部的行列寻址 · 板上 64 根数据线 · CPU die 内部一路排队到寄存器。

## 一句话

浏览器里手写 WebGL2,把 PCB / 封装 / die / 显示屏做成**看着像照片**的 3D,再在上面讲原理。
参照物是离线渲染的硬件科普视频;实时渲染够不着的部分靠「相机一停就累积采样」补回来。

## 先读这条:真实感的四个来源,按重要性排

排在前面的没做对,后面做得再好也白搭。**2026-09-06 实测顺序,不是想当然。**

| # | 来源 | 做错的样子 | 做对的做法 |
|---|---|---|---|
| 1 | **光比** | 黑塑封芯片顶面是灰的 | 柔光箱强度 6~7,不是 16。4% 反射率的塑料被强光一打就变灰,**调材质颜色没用** |
| 2 | **美术方向** | 深蓝虚空 + 霓虹描边 = 一眼动画 | 中性灰棚拍 + 真实元件配色 + **几乎零自发光**;发光只留给数据流叠加层 |
| 3 | **抗锯齿的重建核** | 全画面发软,焦点上也软 | 亚像素抖动用**高斯 σ≈0.32px**,不是 ±0.5px 均匀。均匀抖动累积 = 1px 盒式模糊 |
| 4 | **对焦面方向**<!-- bw-ok:对焦=相机对焦,摄影术语 --> | 斜俯视只有中间一条带清晰 | **移轴**:焦平面贴着板面而不是垂直视线(薄透镜 = 平移 + 剪切,焦平面法线可任取) |

其余(材质分金属/非金属、接触阴影、真圆角、表面细节、元件密度)都要,但排在这四条之后。

## 引擎:`assets/hw3d.js`

单文件内联进页面。渲染链:

```
开机一次:程序化烘棚拍 cubemap(3 块矩形柔光箱 + 背景纸渐变)
        → 6 级 GGX 预过滤 + 32² 辐照度 + 128² BRDF LUT
        → Canvas 2D 现画丝印图集
每采样:  阴影深度 → G-buffer(MRT:albedo+metallic / normal+roughness / depth)
        → SSAO(前 6 帧双边模糊,之后靠累积)
        → IBL 光照(GGX split-sum,阴影当方向遮挡,不做解析光避免双重计光)
        → 累积平均(RGBA32F,权重 1/(i+1))
显示帧:  数据流叠加层(单独 HDR 缓冲,复用 G-buffer 深度只测不写)
        → 与累积结果相加 → 泛光 → ACES + 轻锐化 + 颗粒 + 暗角
```

**累积收敛是这套的核心**:相机一停,每帧抖动
亚像素(高斯)· 光圈盘(真景深)· 柔光箱面积(真软阴影)· AO 核旋转,
200 帧后接近离线渲染。动的时候是快速档,停下就变电影档。

页面要自己提供:`cv` · `buildScene()` · `SCENE` · `cam` · `STATE` · `reset()` · `CHK()`。
起步用 `templates/station-page.html`(完整站点页,三层都接好,五个检查全过);
只要引擎不要外壳的话用 `templates/starter.html`。

## 页面外壳:`assets/hw3d-ui.css` + `hw3d-ui.js`

62 / 63 两页共用同一套:标题 + 章节条 + 站点圆点 + 说明卡 + 3D 标签层 + 术语表 + 时钟控件。
DOM 骨架在 `templates/shell-body.html`。**换配色只动 `#5aa0eb` 和面板底色两处。**

说明卡的文案**必须**按三问写,顺序不能换:
**是什么**(本质,不是字面翻译) → **没有它会怎样**(去掉它系统在哪一步失效) → **为什么这么设计**(取舍:替代方案是什么、为什么没选)。
篇幅不够时**砍机制细节,不砍这三问** —— 机制查代码就有,设计意图查不到。

细节见 `references/visual-language.md`。

## 数据流:`assets/hw3d-flow.js`

写实底层照常累积收敛;数据流每个显示帧**单独画**到自己的 HDR 缓冲(深度复用 G-buffer、只测不写),
再与累积结果相加进泛光。不这么分开,流动的东西会被累积平均成一条拖影。

原语一览(照题目组合,不用重新发明):

| 概念 | 原语 |
|---|---|
| 一个 n 位字 | `wordRow` / `wordOnWires` |
| 一条缓存行 / 矩阵 / 帧缓冲片<!-- bw-ok:矩阵=数学矩阵 --> | `gridObj` / `tileAlong` |
| 一条命令 / 指令 | `cardObj` / `tokenAlong` |
| 一条总线 | `wires`(n 根并行导线,**不是一条线**) |
| 包 / 粒子 / 光子 | `orb` / `packets` |
| 逻辑块"在忙" | `blockGlow` |

细节见 `references/flow-craft.md`。

## 画芯片内部原理:三条规矩

用户 2026-09-06 三次反馈打出来的:

1. **数据不能是"点在线上滑"。** 数据要有形状:32 位字 = 一行亮/暗格子;缓存行 = 8×4 位块;
   指令 = 一张卡;像素 = R/G/B 三行 8 位。看得出搬的是什么。
2. **要芯片内部,不是板级。** die 做成一座"城":逻辑块在地面,**互连做成架空的铜轨**立在铜柱上
   ——芯片里晶体管在底层、十几层铜金属层在上面走线,这是真实结构。数据在轨上跑,
   路口有路由节点,每个块有匝道。
   **块的顶面照显微照片画**,不是纯色方块:`tx:6` 存储阵列 · `tx:7` 标准单元逻辑 ·
   `tx:8` / `tx:9` 外围电路条带,空地 `tx:5` 是顶层电源网格加金属填充,各区域带很淡的薄膜干涉色。
   纯色方块放在照片级的板级镜头后面,读者会觉得从实物跳进了示意图。见 `references/materials.md`。
3. **按拍走,可暂停单步。** 全局时钟 `CLK`(拍),说明卡配 ⏸ / ⏭ 一拍 / 速度滑块;
   标签显示实时数字(第几拍、在哪一步、已等待多少拍)。**延迟就是路程**,让人自己数。

颜色纪律:最多三个强调色(命令=琥珀 · 数据=青 · 像素=洋红),**几何本体绝不发光**。

## 四类镜头配方

见 `references/shots.md`。要点:微距用经典对焦(浅景深是有意的),整板/掠射/剖面用移轴。<!-- bw-ok:对焦=相机对焦,摄影术语 -->

## 提交前必须跑

```bash
S=~/.claude/skills/hardware-3d/scripts
$S/check_selfcontained.sh <页面.html>     # 外部引用只允许 Google Fonts
node $S/check_pipeline.mjs <页面.html>     # 管线齐全 / 无 GL 错误 / 能收敛
node $S/check_realism.mjs  <页面.html>     # 防霓虹回潮:高亮高饱和占比 + 饱和度中位数
node $S/check_perf.mjs     <页面.html>     # 单采样帧时间上限
node $S/check_labels.mjs   <页面.html>     # 标签不重叠、不被面板挡、不伸出屏幕
```

**macOS 和 Linux 都能直接跑**,差别只在 WebGL 后端(`scripts/_launch.mjs` 按系统选):

| 系统 | 默认后端 | 说明 |
|---|---|---|
| macOS | ANGLE metal | 用真 GPU,帧时间上限有意义 |
| Linux | ANGLE swiftshader | 软件渲染。慢一个数量级,默认画幅缩到 1280×800、等收敛放长到 240 秒;`check_perf` 照实打印不判失败 |

环境变量:`HW3D_ANGLE`(换后端,有 GPU 的 Linux 用 `gl` / `vulkan`)·
`HW3D_CHROMIUM`(指定浏览器可执行文件)· `HW3D_SETTLE_S`(等收敛的秒数)· `PLAYWRIGHT_PATH`。
**上下文丢失当场报错** —— 以前 Linux 上传 metal,WebGL 开机就丢,四个检查量的全是空画布,还报通过。

做的过程中定机位用这个(不是提交前的检查,是省时间的工具):

```bash
node $S/try_cameras.mjs <页面.html> <站号(0 起)> '[{"tgt":[0,2,0],"az":-1.0,"el":0.8,"dist":260,"fov":28}, ...]'
```

一次出几张对比着挑。**改文件重开来试机位一轮要几分钟,这样一轮几十秒** ——
2026-09-07 做 demo 时取景来回调了八轮,大部分时间花在等页面重开上。
页面要有 `window.__setCam`,模板里已经接好。

五个都过才算完。`check_realism` 专门拦「做着做着又变回深蓝加霓虹」——
实测正常页面霓虹像素 0.42%、饱和度中位数 0.10;把材质染成霓虹青之后是 44.76% / 0.63,当场拦下。
它还先查画布上真有东西(面板藏起来量亮度标准差):纯色画布加一块 UI 面板,
另外三个指标是 0.05% / 0.13 / 0%,全在区间内 —— 不加这一条,空画布会被判写实。
`check_labels` 管另一类:标签按 3D 投影定位,四个渲染检查只看像素统计,标签压成一团它们看不出来。

站点统计一类的有意外链用 `ALLOW_HOSTS=host1,host2` 放行。

**页面要进公开站点的 `demos/`,还要过那边的设计检查链**
(`bin/design-review <页面>`)。2026-09-07 实测它抓到三条真问题,都不是 3D 相关的:
① 页面必须中英双语(公开站点的 `demos/` 下没有例外);
② 术语表面板靠 `translateX` 移出视口时,里面的关闭按钮仍然可点可 Tab —— 要加 `visibility:hidden`;
③ 十九个可聚焦元素没有任何 `:focus-visible` 样式。
这三条现在都在模板里修好了,照模板起步就不会再撞。

**性能要靠视锥剔除。** 几个"世界"(板 / SM 放大模型 / 显示器 / die 内部城)离得很远,
不剔除等于每帧白画几十万三角形。给每个实例组算包围球,用 VP 矩阵取 6 个视锥平面做球体测试:<!-- bw-ok:矩阵=view-projection 矩阵 -->
62 号加上之后最慢帧 45.3ms → 36.1ms,三角形 653K → 446K,大部分站只画 10~20%。
碎元件(焊点 / 贴片 / 锡球)倒角段数用 2 就够,3 段会让三角形数翻倍。

## 参考

- `references/visual-language.md` — **画风**:页面骨架、三问文案模板、配色纪律、叙事结构
- `references/flow-craft.md` — **画法**:数据要有形状、按拍走、"城"的建法、原语速查
- `references/materials.md` — 材质表(目测调的,不是实测光谱)
- `references/shots.md` — 镜头配方 + **定机位的顺序**(先定讲什么 → 再定张角 → 最后避开面板)
- `references/pitfalls.md` — 踩过的坑,每条都带现象和修法(含**取景**:说明卡和状态面板占住哪几块、怎么让主体避开)

Files in this skill

  • SKILL.md9.3 KB
  • assets/hw3d-flow.js9 KB
  • assets/hw3d-ui.css11.1 KB
  • assets/hw3d-ui.js10.9 KB
  • assets/hw3d.js55.6 KB
  • references/flow-craft.md4.4 KB
  • references/materials.md2.4 KB
  • references/pitfalls.md4.8 KB
  • references/shots.md2 KB
  • references/visual-language.md5 KB
  • scripts/.gitignore79 B
  • scripts/_launch.mjs2.4 KB
  • scripts/check_perf.mjs1.6 KB
  • scripts/check_pipeline.mjs1.2 KB
  • scripts/check_realism.mjs2.3 KB
  • scripts/check_selfcontained.sh972 B
  • scripts/try_cameras.mjs2.1 KB
  • templates/shell-body.html4.4 KB
  • templates/starter.html5.1 KB

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.