slim
This commit is contained in:
parent
8a2b1f6d4b
commit
0e1c1f04fd
158 changed files with 2578 additions and 15117 deletions
15
docs/CHANGELOG.md
Normal file
15
docs/CHANGELOG.md
Normal file
|
|
@ -0,0 +1,15 @@
|
|||
# CHANGELOG
|
||||
|
||||
## v24.2.26
|
||||
|
||||
- v24.2.23〜v24.2.24 のLOD / frontier全画面再計算系を撤回。
|
||||
- v24.2.18 の Direct / Fast / Deep / Color WGSL を完全復元。
|
||||
- v24.2.18 の `maxIter` と fallback を復元。
|
||||
- 一次描画後だけ起動する GPU-only `INTERIOR_LIKELY` queue を追加。
|
||||
- 補足精密化は高速モードでも guarded Deep で実行。
|
||||
- 精密化シェーダーは一次表示後に遅延コンパイル。
|
||||
- queue候補は境界近傍 + 疎なscreen-space seedに限定。
|
||||
- CPUへ戻す精密化情報は16 byte統計のみ。全meta readbackなし。
|
||||
- 標準精密化batchを最大1.8M sample-iterationsに制限。
|
||||
- 自動色変化速度を v24.2.18 の1/10へ変更。
|
||||
- baseline一致・batch予算・品質単調性の専用テストを追加。
|
||||
117
docs/README.md
Normal file
117
docs/README.md
Normal file
|
|
@ -0,0 +1,117 @@
|
|||
# Mandelbrot Deep Zoom v24.2.26
|
||||
|
||||
## 目的
|
||||
|
||||
v24.2.23〜v24.2.24 系で発生した「品質低下・速度低下」を撤回し、**v24.2.18 の一次描画を基準線として復元**した版です。
|
||||
|
||||
この版の合格条件は次の4点です。
|
||||
|
||||
1. 一次表示は v24.2.18 より遅くしない。
|
||||
2. 補足精密化を停止しても v24.2.18 より品質を下げない。
|
||||
3. 通常描画ループで fieldMeta 全体を GPU→CPU readback しない。
|
||||
4. 黒い `INTERIOR_LIKELY` の追加判定は一次表示後・アイドル時だけ行う。
|
||||
|
||||
## 一次描画
|
||||
|
||||
一次描画の以下のWGSLは v24.2.18 と **SHA-256まで一致**しています。
|
||||
|
||||
- `DIRECT_F32_WGSL`
|
||||
- `FAST_PERTURB_WGSL`
|
||||
- `DEEP_PERTURB_WGSL`
|
||||
- `COLOR_WGSL`
|
||||
|
||||
`maxIter()` も v24.2.18 と同じです。
|
||||
|
||||
```text
|
||||
baseIter + floor(70*sqrt(zoomExp) + 15*zoomExp)
|
||||
```
|
||||
|
||||
1920×1080 / 標準負荷の代表条件では内部描画は約 1672×941 = 1,573,352 px です。
|
||||
|
||||
| zoom | 一次 iter | 一次描画の最悪 sample-iterations |
|
||||
|---:|---:|---:|
|
||||
| 10^6 | 611 | 0.961 B |
|
||||
| 10^8 | 667 | 1.049 B |
|
||||
| 10^12 | 772 | 1.215 B |
|
||||
| 10^20 | 963 | 1.515 B |
|
||||
|
||||
これは v24.2.18 と同じ計算量です。補足精密化用WGSLも起動時にはコンパイルせず、一次描画完了から320ms後に初めて遅延コンパイルします。
|
||||
|
||||
## アイドル補足精密化
|
||||
|
||||
一次描画後にだけ `FIELD_INTERIOR_LIKELY` を追加判定します。
|
||||
|
||||
### GPU-only queue
|
||||
|
||||
全 `fieldMeta` をCPUへ戻しません。GPU上で候補インデックスqueueを作り、CPUへ戻すのは **16 byte のqueue統計だけ**です。
|
||||
|
||||
候補は次のように絞ります。
|
||||
|
||||
- stage 1: 境界近傍 + 4px間隔 seed
|
||||
- stage 2: 境界近傍 + 8px間隔 seed
|
||||
- stage 3: 境界近傍 + 16px間隔 seed
|
||||
|
||||
境界判定は各候補につき最大8点だけ参照します。広い真内部を毎回全面再計算する方式にはしていません。1920×1080/標準の代表内部解像度では、純粋な疎seedだけなら stage 1/2/3 はそれぞれ約98,648 / 24,662 / 6,195画素です。10^8 の場合、疎seed部分の合計は約0.220B sample-iterationsで、一次描画最悪値約1.049Bの約21%です。境界画素はこれに追加されますが、batch上限と休止でGPU占有を制限します。
|
||||
|
||||
### 数値エンジン
|
||||
|
||||
高速モードの一次表示は従来のFast経路ですが、**アイドル精密化は高速モードでも guarded Deep を使用**します。精密化用reference bufferは通常描画の `deepCtx / fastCtx` と分離しているため、精密化後もv24.2.18のpan reference再利用を壊しません。
|
||||
|
||||
これにより、一次描画で `INTERIOR_LIKELY` だった点だけを保守的に再評価します。精密化シェーダーは実行直前にも対象がまだ `INTERIOR_LIKELY` か確認するため、既存の `ESCAPED` / `INTERIOR_PROVEN` を上書きしません。
|
||||
|
||||
### 反復ターゲット
|
||||
|
||||
標準モードでは概ね次の3段階です。
|
||||
|
||||
| zoom | 一次 | stage 1 | stage 2 | stage 3 |
|
||||
|---:|---:|---:|---:|---:|
|
||||
| 10^6 | 611 | 1222 | 2444 | 3000 |
|
||||
| 10^8 | 667 | 1334 | 2668 | 3600 |
|
||||
| 10^12 | 772 | 1544 | 3088 | 4800 |
|
||||
| 10^20 | 963 | 1926 | 3852 | 7200 |
|
||||
|
||||
### 1 GPU batch の上限
|
||||
|
||||
標準モードの補足精密化は **1.8 million sample-iterations / batch 以下**に丸めます。
|
||||
|
||||
例: `10^8`
|
||||
|
||||
- 1334 iter: 1344 pixels / batch → 1,792,896 sample-iterations
|
||||
- 2668 iter: 640 pixels / batch → 1,707,520
|
||||
- 3600 iter: 448 pixels / batch → 1,612,800
|
||||
|
||||
ユーザー操作が入ると `state.token` が変わり、次batchへ進む前に中断します。また一定時間ごとにGPUを休ませます。
|
||||
|
||||
## 品質の単調性
|
||||
|
||||
補足精密化前の画像は v24.2.18 と同じです。
|
||||
|
||||
精密化は `FIELD_INTERIOR_LIKELY` のみを対象とし、既に確定した画素には触れません。さらに再着色時も一次描画の `baseIter` を色周期正規化に使うため、精密化によって既存の外部色が一斉に変化することを避けています。
|
||||
|
||||
## 色操作
|
||||
|
||||
v24.2.18 のズーム相対色周期と対数スライダーを維持しています。`色を自動変化` の速度のみ、要求どおり v24.2.18 の **1/10** にしています。
|
||||
|
||||
## fallback
|
||||
|
||||
JavaScript fallback は v24.2.18 と SHA-256一致です。疑似等高線・縞模様は追加していません。
|
||||
|
||||
## 検査
|
||||
|
||||
```bash
|
||||
npm test
|
||||
npm run build
|
||||
```
|
||||
|
||||
`tests/v24-baseline-idle-refinement-model.mjs` が以下を検査します。
|
||||
|
||||
- 一次WGSL 4本の v24.2.18 SHA-256一致
|
||||
- fallback の v24.2.18 SHA-256一致
|
||||
- `maxIter()` の基準線維持
|
||||
- 精密化WGSLの遅延コンパイル
|
||||
- 全meta readback不使用
|
||||
- 16 byte queue統計readback
|
||||
- 既存確定画素を上書きしない契約
|
||||
- 各倍率で1batchが予算を超えないこと
|
||||
|
||||
実GPUのfpsやdevice-lost有無は、このコンテナでWebGPUが初期化できない場合は保証できません。静的・CPUモデル結果と実機測定は区別します。
|
||||
101
docs/VALIDATION_REPORT.md
Normal file
101
docs/VALIDATION_REPORT.md
Normal file
|
|
@ -0,0 +1,101 @@
|
|||
# v24.2.26 検査報告
|
||||
|
||||
## 結論
|
||||
|
||||
v24.2.26 は v24.2.18 を一次描画の基準線として復元し、黒い `INTERIOR_LIKELY` の追加判定だけを一次表示後のアイドルGPU処理として分離した。
|
||||
|
||||
一次描画の品質・数値計算量を変えないことを、ソースハッシュ・式・静的契約で確認した。実GPU上のfps/device-lostは、この実行環境でWebGPU/EGLを初期化できなかったため未測定である。
|
||||
|
||||
## 一次描画の同一性
|
||||
|
||||
v24.2.18 と SHA-256 が一致する本番WGSL:
|
||||
|
||||
| Shader | SHA-256 |
|
||||
|---|---|
|
||||
| DIRECT_F32_WGSL | `59301bf0c5ba3dda4a4055335b32d4a3f84a21991be30f8efc74deb5a5f11ccf` |
|
||||
| FAST_PERTURB_WGSL | `03b45713b1bbb7b56e18bd8fdf0f2d8161d7ed25adf02482b41c1038dc16e3b8` |
|
||||
| DEEP_PERTURB_WGSL | `2865a015d5c1a9b459085b7044e23563fcc5f0eec5362634249b6604a47e660a` |
|
||||
| COLOR_WGSL | `cccac7bfb69c64093c46c3468ff9d685d680ba3a88de0d1ea57168d91a067acf` |
|
||||
|
||||
JavaScript fallback も v24.2.18 と一致:
|
||||
|
||||
`689a6f56aedd416b5e512b17ab6a3ddebcf7c73494e0a8a600ce74a06d8073a2`
|
||||
|
||||
`maxIter()` は v24.2.18 と同じ:
|
||||
|
||||
`baseIter + floor(70*sqrt(zoomExp) + 15*zoomExp)`
|
||||
|
||||
補足精密化用WGSLは本番pipeline初期化ではコンパイルしない。一次表示完了後、320msのアイドル遅延後に必要な場合だけ遅延コンパイルする。
|
||||
|
||||
## 代表計算量
|
||||
|
||||
1920×1080 CSS / 標準負荷では内部描画を約1672×941 = 1,573,352画素とする。
|
||||
|
||||
| zoom | 一次iter | 一次最悪 sample-iterations |
|
||||
|---:|---:|---:|
|
||||
| 10^6 | 611 | 961,318,072 |
|
||||
| 10^8 | 667 | 1,049,425,784 |
|
||||
| 10^12 | 772 | 1,214,627,744 |
|
||||
| 10^20 | 963 | 1,515,137,976 |
|
||||
|
||||
これはv24.2.18と同一。
|
||||
|
||||
標準モードのアイドル補足精密化は1バッチ1,800,000 sample-iterations以下に制限する。
|
||||
|
||||
| zoom | refine iter | pixels/batch | 最悪 sample-iterations |
|
||||
|---:|---:|---:|---:|
|
||||
| 10^6 | 1222 | 1472 | 1,798,784 |
|
||||
| 10^6 | 2444 | 704 | 1,720,576 |
|
||||
| 10^6 | 3000 | 576 | 1,728,000 |
|
||||
| 10^8 | 1334 | 1344 | 1,792,896 |
|
||||
| 10^8 | 2668 | 640 | 1,707,520 |
|
||||
| 10^8 | 3600 | 448 | 1,612,800 |
|
||||
| 10^12 | 1544 | 1152 | 1,778,688 |
|
||||
| 10^12 | 3088 | 576 | 1,778,688 |
|
||||
| 10^12 | 4800 | 320 | 1,536,000 |
|
||||
| 10^20 | 1926 | 896 | 1,725,696 |
|
||||
| 10^20 | 3852 | 448 | 1,725,696 |
|
||||
| 10^20 | 7200 | 192 | 1,382,400 |
|
||||
|
||||
10^8 の最初のrefine batchは一次描画最悪値の約0.171%。1バッチを巨大dispatchにしないことを優先している。
|
||||
|
||||
## 候補量モデル
|
||||
|
||||
代表解像度で境界判定以外の疎seedだけを数えると:
|
||||
|
||||
- stride 4: 約98,648画素
|
||||
- stride 8: 約24,662画素
|
||||
- stride 16: 約6,195画素
|
||||
|
||||
10^8 でこの疎seed全部を3段階処理した場合は約0.220B sample-iterationsで、一次描画最悪値1.049Bの約20.9%。実際には境界候補も加わるが、処理は小batchに分割し、一定時間ごとに休止し、ユーザー操作で中止する。
|
||||
|
||||
## 品質契約
|
||||
|
||||
- 一次画像はv24.2.18と同じ本番シェーダーで生成する。
|
||||
- refinement対象は `FIELD_INTERIOR_LIKELY` のみ。
|
||||
- refinement shaderは実行時にも対象classを再確認する。
|
||||
- `FIELD_ESCAPED` / `FIELD_INTERIOR_PROVEN` は上書きしない。
|
||||
- 高速モードのidle refinementもguarded Deepを使う。
|
||||
- refinement用reference bufferを通常描画の `deepCtx / fastCtx` と分離し、pan reference reuseを壊さない。
|
||||
- 再着色は一次描画の色周期スケールを維持し、既存の外部色を一斉に動かさない。
|
||||
- JavaScript fallbackに疑似等高線を追加しない。
|
||||
|
||||
## 自動テスト
|
||||
|
||||
最終ソースに対して以下を実行し、すべてPASS:
|
||||
|
||||
```text
|
||||
npm test -> RC=0
|
||||
npm run build -> RC=0
|
||||
npm test -> RC=0 (build後再検査)
|
||||
node --check script.js -> PASS
|
||||
node --check gpu-kernels.js -> PASS
|
||||
```
|
||||
|
||||
専用モデル `tests/v24-baseline-idle-refinement-model.mjs` もPASSし、上記ハッシュ、batch上限、readback契約、品質単調性を検査した。
|
||||
|
||||
## 実WebGPU検査の制約
|
||||
|
||||
このコンテナのChromiumではGPUプロセスがEGL/ANGLE初期化に失敗したため、実WebGPUのfps・device lost試験は完了できなかった。観測した主な失敗は `EGL_NOT_INITIALIZED` / `SwANGLE failed` 系である。
|
||||
|
||||
したがって「実機でv24.2.18より何%速い」という主張はしない。保証しているのは一次描画経路の構造的な基準線復元と、idle refinementのbatch仕事量上限である。
|
||||
Loading…
Add table
Add a link
Reference in a new issue