eee
This commit is contained in:
parent
0be5ce3ce3
commit
178cac581c
28 changed files with 1695 additions and 2746 deletions
|
|
@ -1,31 +1,41 @@
|
|||
# Mandelbrot WebGPU v24.2.55
|
||||
# Mandelbrot WebGPU
|
||||
|
||||
## 目的
|
||||
v24.2.54で確認された、FAST深部描画の矩形状/穴状の黒欠損と、数値補修を最終表示前に待つことによるレイテンシ増大を修正する。
|
||||
`index.html` をWebGPU対応のEdge/Chromeで開く。外部ライブラリやビルドは不要。
|
||||
|
||||
## 黒穴の原因
|
||||
COLOR passでは数値UNKNOWNを透明としていたが、PRESENT passが履歴補完を `scale <= 1.035 / offset <= 0.022` に制限していた。そのため通常のズームでも履歴補完が無効になり、透明UNKNOWNがcanvasの黒背景へ落ちた。
|
||||
- 描画は高速方式に統一。画素間隔に応じてDirect f32または参照軌道を使うFAST perturbationへ自動で切り替える。旧「正確」の共有URLもこの方式で開く。
|
||||
- パン/ズーム、配色変更、URLによる表示位置の共有、PNG出力に対応。
|
||||
- 数値未確定画素の補修と未脱出画素の継続計算を終えてから、完成画像を履歴へ保存する。
|
||||
- 計算中は現在の視点の暫定画像を表示する。反復上限は「自動」または指定回数を選べる。未脱出を集合内の証明とは扱わない。
|
||||
- 画面と同じ解像度・1 sampleのPNGは、補修済みの完成画像をそのまま保存する。
|
||||
- 色相変化は表示済みの数値結果を使い、計算中も色を更新する。停止ボタンまたは色相位置の手動操作で停止する。
|
||||
- 描画時間は初期描画から精細化・数値補修・最終GPU処理までの合計。計算中は経過時間、完了時は確定した時間を表示する。
|
||||
|
||||
さらに、その不完全front textureを完成historyとしてcommitする経路があった。局所reference補修が予算内で全UNKNOWNを回収できない場合、タイル境界に沿った黒欠損が完成画像へ固定され得た。
|
||||
BLAと比較専用の監査処理は削除済み。[整理内容と検証範囲](CLEANUP.md)を参照。
|
||||
|
||||
## v24.2.55の契約
|
||||
1. 数値UNKNOWNを含むfrontはstable historyへ昇格しない。
|
||||
2. 通常のパン/ズーム範囲では、数値UNKNOWNを直前のstable frameから再投影して埋める。
|
||||
3. FASTの数値補修は一次画像のpublishをブロックせず、同一viewのbackground taskとして継続する。
|
||||
4. background補修が完了して数値UNKNOWNが0になった時点で初めてhistoryを更新する。
|
||||
5. tiled FAST開始時にmeta/smoothをzero sentinelへ初期化し、最終color前にreason=0の未書込pixelだけbaseline FASTで再計算する。
|
||||
[軽量化の実装結果と測定値](IMPLEMENTATION_RESULTS.md)を参照。承認前の[改善案](PERFORMANCE_PLAN.md)と[実装設計](PERFORMANCE_IMPLEMENTATION.md)も残している。
|
||||
|
||||
`REASON_OPERATION_LIMIT` は数値故障ではなく、maxIterまで未脱出だったpixelなので従来どおり黒表示する。今回の矩形状欠損対策は主に数値UNKNOWN/未書込pixelを対象とする。
|
||||
色相・時間表示の修正と描画方式統合については[ビューワー修正](VIEWER_FIXES.md)を参照。
|
||||
|
||||
## FASTレイテンシ
|
||||
production BLAのCPU側64点shadow計算を廃止した。BLA workerはtable構築だけを行い、採用判定は既存の64点GPU probeへ一本化した。
|
||||
## 検証
|
||||
|
||||
classic Seahorse Valley相当 (654x690, span 3.4e-13, 2900 iter) のNode/V8 workerモデル:
|
||||
- 旧 CPU validate 64点: 約446.9 ms
|
||||
- 新 table build only: 約60.0 ms
|
||||
- 同期prep削減: 約386.9 ms
|
||||
Node.js 22以降で実行する。追加パッケージは不要。
|
||||
|
||||
BLAが不利なviewでは本体FAST計算時間そのものは残る。今回の変更では、数値補修Deep/multi-referenceを一次表示のクリティカルパスから外すことで、黒穴を出さずに操作から画像表示までの待ち時間を短縮する。
|
||||
```sh
|
||||
node tests/regression.mjs
|
||||
```
|
||||
|
||||
## 数値コア
|
||||
v24.2.54から変更したproduction WGSLはFAST_PERTURB_WGSLのみ。通常 `unknownOnly=0` の計算式・perturbation recurrenceは変更していない。追加分はcoverage repair用のearly guardである。
|
||||
構文、現行シェーダーのハッシュ、バックエンド選択、フレーム振り分け、Worker、補修対象と処理量上限を確認する。ハッシュファイルを無条件に再生成してテストを通さないこと。
|
||||
|
||||
実GPUのスモークテストは、独立した一時プロファイルのEdge/Chromiumをリモートデバッグポート9333で起動して実行する。
|
||||
|
||||
```sh
|
||||
node tests/browser_smoke.mjs 9333 all
|
||||
```
|
||||
|
||||
`all` は `reset`、`fast`、`mid`、`legacy`、`axis`、`black`、`kernels`、`cancel`、`budget`、`ui` に置き換えて単独実行できる。描画6ケース(旧方式指定の移行を含む)、キューの被覆、独立高精度サンプル、計算中のキャンセル、指定反復予算、PNGの復号、色相変化、時間表示を確認する。
|
||||
|
||||
起動時は拡張機能と同期を無効にし、専用プロファイルのタブを1つだけにする。テストはそのタブを再利用し、最後に `about:blank` へ戻す。終了後は検証用ブラウザーを閉じる。
|
||||
|
||||
測定が必要な場合だけ `node tests/browser_smoke.mjs 9333 bench` を実行する。初期表示・Seahorse FASTを各1回ウォームアップ+3回測定する。通常の回帰確認ではベンチマークを繰り返さない。
|
||||
|
||||
検証APIと詳細計測は `index.html?test` でのみ有効。通常起動では監査計算を自動実行しない。Strict設定も比較テストを起動しない。
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue