このディレクトリは、Unity 向け OpenCV 5 ネイティブ統合 OSS OpenCV Unity Native(仮称)の調査・設計資料をまとめる場所です。
- ロードマップ
- 確定事項(backend 言語、package ID、対象 Unity、OpenCV 入手方法、CI 方針、Windows のランタイムライブラリ linkage)
- M0〜M7(2026-08-29 に足した M3.5 を含む)の各マイルストーンの目的・ゴール・完了条件・非ゴール
- 差別化の穴(2026-08-29 の再調査。競合が全員 OpenCV 4 系のままであること、差別化の穴 10 件(掲げている差別化のうち達成していないものと、競合が持っていて本案が持たないものの合算)と、その担当。解消・部分達成の別は roadmap の表が持つ —— 判定は今後も動くので、件数をここに写さない)
- M7 の上流調査(2026-08-30。OpenCV 5.1 に向けて
dnnがどう動いているかを一次情報で確かめ、dnnを足す前に native bridge を module 単位に分ける決定を入れた) - ローカルループと CI の役割分担、GitHub Actions のワークフロー構成(M3 の後に
ci-lint/codeql/nightlyと Dependabot を追加。nightlyは 2026-08-29 から schedule で毎日走っている —— 「まだ 1 度も走っていない」と書いてあったのは逆向きの陳腐化で、動いている検査を存在しないことにしていた。実績は roadmap のワークフロー表) - 実装計画: M0 自動 TDD ハーネス(完了)、M1 OpenCV ビルド(完了)、M2 Windows vertical slice(完了。8 件中 8 件。条件 7 は game-ci + Linux で満たした — 詳細は roadmap の M2 節)、M3 Desktop 3 platform と配布の再現性(6 件すべて達成。v0.1.0 と v0.1.1 を公開済み——詳細は roadmap の M3 節)、M3.5 配布の形と最小の穴(全部入り tarball /
imgcodecs/ Unity 6.3。6 件すべて達成。v0.2.0 を公開し OpenUPM にも登録済み——詳細は roadmap の M3.5 節)、M4 Mobile(Android / iOS のクロスビルドとWebCamTexture対応。9 件中 6 件を満たし、3 件は閉じていない —— iOS 実機 / lifecycle / macOS 上の Unity(Windows IL2CPP は「結論を出す」ことが条件だったので満たしている)。実機が要る 2 件は 実機検証の手順 に落としてある)、M5 binding specification と generator(spec を正本にして C ヘッダ・C# の P/Invoke・到達性テスト・API 対応表 を生成する。5 件中 4 件を満たし、条件 2 は計画の側で意図的に外してある —— 詳細は roadmap の M5 節)、M5 条件 2 の前半 objdetect / features(QR コードの符号化・復号と ORB の特徴点検出を出し、条件 2 を「部分的に満たした」にした。続けてgeometry(射影変換の推定)も出した)、M5 条件 2 の最後 カメラの歪み補正(ocvu_undistort/ocvu_find_chessboard_cornersをcalibmodule を足さずに出した。この時点では係数を求めるcv::calibrateCameraが無く、条件 2 は「部分的に満たした」のままだった)、M5 条件 2 の完了 カメラ校正(calibmodule を足し、cv::calibrateCameraを出して校正の輪を閉じた。構成ハッシュが変わり 5 platform 分の OpenCV を作り直した(4785d98e9aad→09fcbe260d87)—— 詳細は roadmap の M5 節)、M6 Web / Wasm(6 つ目の platform。クロスビルドかつ静的ライブラリで、ブラウザで実際に走らせて初めて出る欠陥を 7 件捕まえた —— そのうち「例外バリアが wasm で成立していなかった」が最も重い。完了条件 5 件すべてを満たした —— 詳細は roadmap の M6 節)、API 拡張(A〜F)—— 実測で覆った前提と、その決定(下の 5 本すべてに優先する。実装前に 12 観点 x 2 段で計画の前提を実測し、ブロッカー 11 件・要修正 22 件・見落とし 53 件を潰した記録。反証段が調査段の修正案そのものを 2 件否定している)、API 拡張(A〜F)の全体設計(マイルストーンではない。M6 と M7 の間に挟む API 拡張で、既にリンク済みの module から 26 本を出す。OpenCV の再ビルドは 1 度も起こさない。下の 4 つの計画がこれを分担する)、Phase 1 姿勢と ArUco、Phase 2 imgproc の実用関数、Phase 3 core の基本演算、Phase 4 マッチングとステレオ(stereoを 8 つ目のリンク済み module にする唯一の計画)、**M7 Optional profiles と性能の設計(**仕様であって計画ではない。下の 3 本が共有する正本で、完了条件の担当・Global Constraints・7 つの決定を持つ。3 本とも実行済みなので、着手前の記録として読むこと)、M7 (a) 低コピー経路と benchmark(**実行済み(be5615f)。完了条件 2・3 を満たした。決定的な量は assert し、時間は公開するだけにする。**RenderTexture / AsyncGPUReadback を出し、native texture pointer は「やらないと決めた」として評価だけを記録する。公開 ABI を 1 本も増やさない)、M7 (b) module 分離(実行済み(be5615f)。完了条件 4 を満たした。native の CMake と C# の assembly を module 単位に割る。先に安全網を作る —— 配布 binary のエクスポートが spec と完全一致することを要求する検査を足してから作り替える。公開 ABI を 1 本も増やさない)、M7 (c) dnn profile(実行済み(2026-09-08〜10、e1b0930)。完了条件 1 を満たした。dnnの C ABI 4 本とCvUnity.Dnnを opt-in profile として出した。「着手してよいという合図ではない」という但し書きは 2026-09-08 の gate lift で失効した —— 経緯は roadmap の「この決定は解除された」)
- API リファレンス
- allowlist に載っている C ABI 関数(M2 の
Matのライフサイクルと buffer 転送 +cvtColor/resize/GaussianBlur、M3.5 のimencode/imdecode、2026-09 の API 拡張で姿勢 / ArUco / imgproc の実用関数 / core の基本演算 / 記述子マッチング / ステレオ視差の 26 本、M5 のqr_encode/qr_decode/orb_detect/find_homography/undistort/find_chessboard_corners/calibrate_camera)と、その上に立つ C# の公開 API - allowlist の本数は公開 ABI の総数ではありません。 残りは M0 / M1 由来の診断用 API(ABI version の取得、last-error の取得、status 表の照会、OpenCV version / build information)と
ocvu_debug_throw/ocvu_debug_crashです(一覧の正本は API リファレンス の「この allowlist に含まれないもの」です —— ここに写すと 1 本増えた日にこの行だけが嘘になります。実際ocvu_debug_throwが抜けていました)。どちらの数も API 対応表 の冒頭と 所有権と versioning §3 が持ちます —— ここには写しません。 - まだ無い機能は書きません。 範囲は M2 で確定し、M3.5 の
imgcodecs、M5 の module 拡張、2026-09 の API 拡張(姿勢 / ArUco / imgproc / core / マッチング / ステレオ)、M7a のRenderTexture、**M7c のdnn(opt-in profile)**が加わった allowlist に一致します
- allowlist に載っている C ABI 関数(M2 の
- API 対応表
- 生成物です。
bindings/spec/*.jsonが正本で、./tools/dev.ps1 generateが書き出します。手で編集するとverify-generatedが赤くなります - spec に載っている entry を 1 行ずつ並べます。本数は表の冒頭が数えます —— C ABI と C# の P/Invoke 宣言は別に数えており、差は同じ C の entry point へ別の引数の形で入る C# 側の入口です(C ABI を増やしません)。ここに数字を書かないのは、ABI が 1 本増えるとこの行だけが静かに嘘になるからです
- 「OpenCV 全対応」とは書きません。 ここに無い関数はまだ無いのであって、隠れているのではありません。上の API リファレンス との違いは、あちらが使い方を書く手書きの文書であるのに対し、こちらは何が在るかを spec から機械的に出す一覧であることです(関数を足したときに古くなりようがない側)
- 生成物です。
- C ABI の所有権と versioning
- 確定(M2 着手前)。 借用 handle を作らない決定と、その理由・受け入れたコスト(M3 で §1.5 のスレッド規約、M3.5 で §1.6 の blob の規約を追記)
OCVU_ABI_VERSIONを bump する変更としない変更- API allowlist(M2 で確定し、M3.5 の
imencode/imdecodeと M5 の module 拡張が加わった。本数は同文書 §3 の冒頭が数えます)と、まだ作らないもの - roadmap の M2 完了条件を書き換えた経緯(
wrapを廃し copy に置き換えた件)
- 性能
- M7a(2026-09-06)。
Texture2D/RenderTextureとCvMatの間の低コピー経路の評価と、./tools/dev.ps1 benchmark/test-unity-graphicsが測った実測値 - 時間は公開するが assert しない。
RenderTextureの同期・非同期 2 経路は run をまたぐと大小が入れ替わることを実例で示す - native texture pointer は評価のみで実装しない決定と、その理由・再評価の条件
RenderTextureの経路が-nographicsで読めない実測と、Editor 側は 2026-09-11 に CI へ配線され、Player 側は依然として配線できないこと(game-ci が Player を-nographicsで起動する)
- M7a(2026-09-06)。
- Unity 向け OpenCV 統合の競合調査と初期計画
- OpenCV 5.x / 4.x の状況(2026-08-25 時点。§3 と §4.6 は 2026-08-29 に取り直し、§4.6 の配布と OpenUPM、§8.3 の
imgcodecsは M3.5(2026-08-30)で更新した —— 5.0 の目玉が DNN エンジンの書き直しであること、競合の現況、OpenUPM という配布経路) - OpenCV for Unity、OpenCV-plus-Unity、OpenCvSharp、Emgu CV の比較
- 自作 Apache-2.0 OSS の価値、ライセンス上の注意、推奨アーキテクチャ
- native bridge を C++ / Rust のどちらで実装するかの比較と Phase 0 判断基準
- 差別化、初期ロードマップ、想定ディレクトリ構成、命名方針
- OpenCV 5.x / 4.x の状況(2026-08-25 時点。§3 と §4.6 は 2026-08-29 に取り直し、§4.6 の配布と OpenUPM、§8.3 の
- Native backend 実装言語の評価(TDD・エージェント自動イテレーション観点)
- 「実装はすべて Claude Code、TDD、自動イテレーション」を前提にした C++ / Rust の再評価
- sanitizer の入手条件、Miri の FFI 制約、
opencvcrate の安定性表明とビルド要件 - Unity を経由しないテスト層(素の .NET での P/Invoke 検証)を核にしたテストピラミッド案
- C++ 開始の推奨と、判断を安価に覆すための条件
- OpenUPM への登録
- 提出し、受理されました(openupm/openupm PR #6843、2026-08-30 に自動マージ)。提出できる条件(新しい名前の asset が付いた公開済みリリースが 1 つあること)と、提出したものの中身。「準備済み。まだ提出していません」と書いていた記述は 2026-08-30 の時点で古くなっており、この一覧だけが M3.5 の完了時に直し漏れていました(同じファイルの下の Status 節は当時から「受理された」と書いています)
- 受理されるかどうかは第三者の判断なので、こちらの完了条件には含めていません
設計資料ではありませんが、読む順序としてはここから辿れる必要があります。
- README — 導入手順、対応 platform、開発コマンド、CI が何を見ているか(英語)
- CONTRIBUTING — 貢献の手順と、CI が見ないもの(文書の陳腐化・スコープ超過・完了の過大申告)(英語。M3 の後に追加)
- SECURITY — 非公開の脆弱性報告先と、この境界で何が範囲内か(buffer の長さ・stride、handle の寿命、例外の漏出)(英語。M3 の後に追加)
- CLAUDE.md — AI エージェント向けの正本。リポジトリの現状・不変条件・ファイル配置・ワークフロー構成
- THIRD_PARTY_NOTICES — OpenCV が bundle する third-party のライセンス全文
M0〜M3.5 は完了しました(M3.5 は完了条件 6 件すべてを 2026-08-30 に満たしました。判定は roadmap の M3.5 節が正本)。M2(Windows vertical slice)は 8 件、M3(Desktop 3 platform と配布の再現性)は 6 件の完了条件をすべて実測で満たし、v0.1.0(2026-08-28)と v0.1.1(2026-08-29)を公開しました(その後 v0.2.0 / v0.3.0 / v0.4.0 と重ね、現在の最新は v0.4.0(2026-09-12、6 platform)です)。M3.5 の成果は v0.2.0 で、M4 / M5 / M6 の成果は v0.3.0 で、M7(dnn の opt-in profile ほか)と 2026-09 の API 拡張の成果は v0.4.0 で配りました。
M2 の最後に残っていた条件 7(CI 上で L4/L5 を実行)は、game-ci でランナーへの Unity 導入とライセンスのアクティベーションを行い、Linux で走らせることで満たしました。その過程で、公開済み v0.1.0 の Linux 版が古い環境で読み込めない欠陥が判明しました —— ubuntu-24.04 でビルドした .so が GLIBC_2.38 を要求していたためで、Unity を CI で実際に動かすまで誰も気づけませんでした。Linux のビルドを ubuntu:22.04 コンテナへ移し、要求を 2.34 に下げたうえで、ビルド時点で上限を検査するようにしています。
M3(Desktop 3 platform と配布の再現性)は、roadmap の完了条件 6 件をすべて満たしました。3 platform で native plugin がビルドされ、L1 / L3 と slow tools テストが CI で green になり、Linux の LeakSanitizer レーンがリークを検出し、成果物の linkage・有効言語・リンク済み依存が実物の archive から検証されています。UPM tarball は使い捨ての Unity プロジェクトに実際に導入して 10/10 pass を確認しました(M3 時点のこれは platform ごとの tarball です。全部入りに対する実測は下の M3.5 の段落にあります)。配布まで踏んでいます —— v0.1.0(2026-08-28)と、上記の Linux の欠陥を直した v0.1.1(2026-08-29)。どちらも 3 platform 分の tarball と配布物 4 点 + SHA256SUMS.txt で、asset は 16 件でした(M3.5 で 18 件、M4 で 5 platform になってから 28 件です。現在の数は roadmap の「配布」の節が持ちます)。v0.1.0 は中身を差し替えず、リリースノートの冒頭に「この版の Linux 版は動かない」と明記して v0.1.1 へ誘導しています(一度配ったものを黙って差し替えると、同じ版名で違う物が 2 つ存在することになるため)。また、Git URL 経由では binary が git の追跡外にあるため導入できません(完了条件は「Git URL または tarball」なので tarball 側で満たしています)。macOS の Plugin Import Settings は M3 時点では「その platform の binary が置かれた状態で Unity に読ませたことがない」状態でした(Linux 分は M2 の条件 7 で実測に変わりました)。M3.5 で何がどこまで実測に変わったかは下の段落にあります。PR #8 を CI に通した時点で、ローカルでは緑だった欠陥が 3 件出ています——handle table の use-after-free、UPM が導入できない tarball、Release asset 名の衝突で、いずれも修正済みです。詳細は roadmap の M3 節にあります。
M3.5(配布の形と、実用に必要な最小の穴)は、roadmap の完了条件 6 件すべてを満たしました(2026-08-30)。**v0.2.0 を公開し、OpenUPM にも登録されています。**CI は green で main に入りました(PR #34、41cda19、2026-08-29。チェックの内訳と Unity レーンの実測は roadmap の M3.5 節にあります)。
最後に閉じたのは条件 3 と、条件 4 の (c)(OpenUPM の登録申請)です。 条件 3 について: M3.5 の時点では「満たすが未実証」で、自動で走る唯一の場所(ci-unity.yml)に Linux の plugin 1 つしか無く、6 件が要素 1 個の集合を検査して緑になっていました。PR #37 で ci-unity が windows / macOS の plugin も自分でビルドして重ねる形にし、CI が 3 platform 同居の状態で native plugins present: 3 と gating 4 件の個別 Passed を出しました(run 33290375806)。条件 4 の (c) は v0.2.0 を公開し、openupm/openupm へ提出して受理されました(PR #6843。https://package.openupm.com/com.ayutaz.opencv-unity-native が当時 0.2.0 を配信していました)。
以下のローカルの数字はこのマシン(Windows)での 2026-08-30 の実測です。
配る正は 全 platform 分の binary が 1 つに入った com.ayutaz.opencv-unity-native.tgz になりました(M3.5 の時点では 3 platform、M4 で 5 platform、M6 以降は 6 platform)(版番号を含まない名前。OpenUPM の githubReleaseAssetName が安定した接頭辞で asset を選ぶためです)。platform ごとの tarball も補助として引き続き出します。その全部入りを使い捨ての Unity プロジェクトに導入して 16/16 pass(EditMode が 10 件から 16 件に増えたのは PluginGatingTests を足したためです)。この tarball のレーンはどの CI workflow でも走りません —— ローカルだけです。
PluginGatingTests は PluginImporter に問う形で「自分の platform 向けがちょうど 1 つ」「Any が立っていない」「他 platform の Standalone で有効になっていない」を見ます。macOS の .meta を「Windows でも有効」に壊すと 3 件落ちます(M3.5 時点の実測) —— 壊しても 10/10 で素通りしていた M3 までの状態から変わりました。もう 1 つ記録に値するのは、GetCompatibleWithEditor() がどのプラグインでも true を返すことです。.meta は Editor を 3 platform とも有効にしたうえで、その下の settings: OS: で振り分けているので、そのフラグだけを見る検査は常に true で無感です。振り分けを見るには GetEditorData("OS") を読む必要があります(最初にそう書かずに落とし、直しました)。
macOS 上で動く Unity は依然として未実測です。 M3.5 はこの穴を緩めるのではなく鋭くしました —— macOS の binary と .meta が、Windows と Linux の利用者も導入する正の package の中に同居するようになったからです。実測できたのは「Windows 上の Unity が、全 platform 分が同居した中から Windows 向けの 1 つだけを有効にする」ところまでで、macOS 上の Unity が実際にその .dylib を読み込むことは確かめていません(M4 の担当)。
imgcodecs は M3.5 で初めてリンクされました。それまで cmake/FindOpenCvUnityDeps.cmake は COMPONENTS core imgproc だけで、リポジトリ内の複数箇所にあった「モジュールはリンク済み」という記述は誤りでした。誤解の出どころも記録しておきます: tools/opencv-config.psd1 の Modules には imgcodecs が入っているので OpenCV 自体はそれを含めてビルドされており、ocvu_get_build_information() も To be built: … imgcodecs … と報告します。「OpenCV に入っている」と「このプラグインがリンクしている」は別です。 気づいたのは CMake を読んだからではなく、実装を書いた時点で cv::imencode / cv::imdecode が未解決の外部シンボルになったからです。C ABI に ocvu_imencode / ocvu_imdecode が加わり、公開 ABI は 18 本から 20 本、allowlist は 9 本から 11 本になりました。扱うのはメモリ上の byte 列だけで、ファイルパスは受けません(理由は 所有権と versioning §1.6)。
検証する Unity は 6000.0 から 6000.3 LTS(6000.3.16f1) へ載せ替えました(6000.0 の通常サポートが 2026-10 に終わるためです)。6.3 で EditMode と IL2CPP Player が通っています(件数はここに書きません —— 正本は CLAUDE.md のテストレーンの表で、写すと検査を 1 件足した日にこの行だけが嘘になります。実際 M3.5 / M4 / M5 / 2026-09 の API 拡張で 4 度動きました) —— IL2CPP モジュールは Hub の CLI で先に入れる必要がありました(入っていない状態では Player のビルドが「Currently selected scripting backend (IL2CPP) is not installed」で落ちます)。OpenUPM への登録は提出し、受理されました(openupm/openupm PR #6843、2026-08-30 に自動マージ。https://package.openupm.com/com.ayutaz.opencv-unity-native が当時 0.2.0 を配信していました。詳細は OpenUPM への登録)。詳細は roadmap の M3.5 節にあります。
M5(binding specification と generator)は完了条件 5 件すべてを満たしました(2026-09-02。判定表は roadmap の M5 節が正本)。境界の宣言を手で書く経路が無くなり、bindings/spec/*.json の entry から C ABI 宣言 / C# の P/Invoke / 全 entry point を呼ぶ到達性テスト / API 対応表 が ./tools/dev.ps1 generate で出るようになりました(本数は上に書いたとおり対応表の冒頭が数えます)。手書きの [DllImport] は 0 個です。 一致は ./tools/dev.ps1 verify-generated が見て、これは dev.ps1 test に入っているので 3 platform の CI が走らせます。条件 2(geometry / calib / features / objdetect の追加)は当初は次へ送りましたが、続く 3 つの計画で閉じました —— objdetect(QR の符号化・復号)と features(ORB 検出)、geometry(射影変換の推定。リンクは無料でした —— 既に推移的に引かれていました)、カメラの歪み補正、そして calib module と cv::calibrateCamera(2026-09-02)。最後の 1 つだけが高く、構成ハッシュが変わって 5 platform 分の OpenCV を作り直しました。これでカメラ校正の 3 段(格子点を見つける / 係数を解く / 係数で補正する)が揃っています。 詳細は roadmap の M5 節。M4(Mobile)は依然として完了していません(9 件中 6 件。詳細は roadmap の M4 節)。
M6(Web / Wasm)は完了条件 5 件すべてを満たしました(2026-09-03。判定表は
roadmap の M6 節が正本)。Web は 6 つ目の platform で、クロスビルドかつ静的
ライブラリ(iOS の 2 つの性質を同時に持ちます)。このマイルストーンの価値は、
Web でしか出ない欠陥を 7 件捕まえたことにあります —— うち 1 件は
「例外を ABI の外へ伝播させない」という中核の不変条件が、Web でだけ黙って
成立していなかったもので、ブラウザで OpenCV が実際に投げるまで誰も
知りませんでした(Emscripten は既定で C++ 例外を無効にするので、throw は
残るのに catch が 1 つも組み込まれません)。Web にだけ在る制限が 1 つ
あります: 画像の encode / decode は JPEG のみで、PNG を持ちません(Unity の
WebGL 支援が自前の libpng を同梱しているためです。他の 5 platform は両方
持ちます)。CI は Linux の headless Chromium で実物の Player を起動し、共有の検証本体が
1 件残らず走ったことと、spec が載せる宣言に全部到達できたことを確かめます
(数はここに写しません —— ABI が 1 本増えるたびに動くので、roadmap の
M6 節が持ちます)。ただし動かしているブラウザはそれ 1 つだけです。
利用者に届いているのは v0.4.0 です(2026-09-12 公開)。 その 1 つ前が v0.3.0(2026-09-04 公開)で、 M4(5 platform)・M5(生成器と校正 API)・M6(Web)の成果が、これで初めて 届きました —— v0.2.0 以来です。版番号は当初「v0.3.0 を飛ばして v0.4.0」と 決めていましたが覆しました —— v0.3.0 という名前で世に出た物が 1 つも無いことを 実測したためで、2026-08-31 の下書き(生成物が 1 つも入っていない)と tag は 破棄して打ち直しました。配布の記録は ロードマップ の「配布 その 5」に、v0.4.0 のそれは「配布 その 6」にあります。
v0.4.0 で初めて届いたのは、M7(dnn の opt-in profile / RenderTexture の低コピー経路 / native と C# の module 分離)と 2026-09 の API 拡張です。 退行が 1 つ入っています —— PNG の encode / decode が Android・iOS・macOS arm64 で ARM 加速を失いました(上流 OpenCV 5.0.0 の vendoring の欠陥を避けるための取引で、JPEG と core / imgproc の SIMD には触れていません)。実機で一度も動かしていないことは、この版でも変わりません。
M7(Optional profiles と性能)は完了条件 5 件すべてを満たしました(2026-09-10)。
M7 が最後のマイルストーンで、後続はありません —— roadmap の ## M 見出しは
M0 から M7 までです。判定が 1 節にまとまっていないのは M7 だけで、5 件が
M7a の判定 / M7b の判定 / CUDA / cuDNN 同梱の判定 / M7c の判定 の 4 節に
分かれています(索引は roadmap の M7 の判定)。出したのは、低コピー経路の実測と
benchmark の公開(RenderTexture / AsyncGPUReadback)、C ABI と C# の module 分離、
CUDA / cuDNN を同梱しないという決定、そして dnn を opt-in profile として出すこと
(OCVU_PROFILE_DNN を立てたときだけコンパイルされる C# の CvUnity.Dnn。
native binary には既定で入っています)です。
満たしたことと、実証したことは同じではありません。 M7 が残した穴を、
利用者に関わるものだけ挙げます —— dnn は実機で 1 度も動かしておらず、推論の
速さも測っていません。ocvu_dnn_net_forward の .clone() が要ることを示す
再現テストがなく、確定させる経路がこのリポジトリの構成上ありません。
dnn が引き込む MLAS / ONNX Runtime は libopencv_dnn.a に静的に取り込まれるため
依存 allowlist からは見えません。WITH_CAROTENE / WITH_KLEIDICV は既定 ON の
まま監査していません。third-party のライセンス集合は platform ごとに実際に違う
のに、THIRD_PARTY_NOTICES.md は 1 通で全 platform を代表しています。
RenderTexture の画素を運ぶ経路は、Editor 側は 2026-09-11 から CI が
実行します(ci-unity.yml の Graphics レーン。経緯は roadmap の
「GPU 経路を CI に載せる」)。Player(IL2CPP)側は依然として実行されません
—— game-ci が Standalone Player を -nographics で起動しており、その指定は
action の中にあって外せないためです。詳細は roadmap の M7 の判定 と、
各判定節の「穴を隠さず書く」にあります。
本文中の「推奨」「目標」「案」のうち、まだ実装されていない部分は依然として設計提案であり、実装済み機能や動作確認結果ではありません。両者の区別は各文書内の記述を見て判断してください。競合製品のバージョンや対応状況は変わるため、実装開始時と公開前に再確認します。