11# NOVA Shader プロジェクト引き継ぎ資料
22
3- ## 目次
4-
5- 1 . [ プロジェクト概要] ( #1-プロジェクト概要 )
6- 2 . [ アーキテクチャ] ( #2-アーキテクチャ )
7- 3 . [ 開発ワークフロー] ( #3-開発ワークフロー )
8- 4 . [ AI開発戦略] ( #4-ai開発戦略 )
9- 5 . [ 技術詳細] ( #5-技術詳細 )
10- 6 . [ 運用・保守] ( #6-運用保守 )
11- 7 . [ 連絡先とリソース] ( #7-連絡先とリソース )
12- 8 . [ 既知の課題と今後の展望] ( #8-既知の課題と今後の展望 )
13- 9 . [ FAQ] ( #9-faq )
14-
153---
164
175## 1. プロジェクト概要
@@ -29,7 +17,7 @@ MIT LicenseでOSSとして公開することで不具合など品質改善が図
2917- ** レンダーパイプライン** : Universal Render Pipeline (URP)
3018- ** Shader Model** : 3.5以上
3119 - Mesh GPU Instancing使用時はShader Model 4.5以上が必要
32- - Mirror Sampling使用時はInline Sampler States対応が必要
20+ - Mirror Sampling使用時はInline Sampler States対応が必要(PowerVR等一部環境で非対応)
3321
3422** 配布方法:**
3523- ** GitHub** : https://github.com/CyberAgentGameEntertainment/NovaShader
@@ -48,7 +36,7 @@ MIT LicenseでOSSとして公開することで不具合など品質改善が図
4836以降コアテクのGFX班が管理し、清原さん、チャンさん、畳が開発・保守を行っています(矢野さんは開発には関与せず窓口的な立ち位置に)。
49372025年10月時点では畳が管理人をしており、後述するチャンネルで相談対応やリリースの発信を行っています。
5038
51- - CGWORLD記事「 サイバーエージェントがOSSで公開した多機能シェーダ「NOVA Shader」はいかにして開発されたのか? 開発者とエフェクトアーティストらが語る」: https://cgworld.jp/article/202206-nova-shader.html
39+ - [ サイバーエージェントがOSSで公開した多機能シェーダ「NOVA Shader」はいかにして開発されたのか? 開発者とエフェクトアーティストらが語る] ( https://cgworld.jp/article/202206-nova-shader.html )
5240
5341---
5442
@@ -89,32 +77,24 @@ uGUI上でパーティクルを表示するためのシェーダー。Custom Coo
8977- ** ParticlesUber.hlsl** : Uber共通のプロパティ定義とマクロ
9078- ** ParticlesInstancing.hlsl** : GPU Instancing対応(DefaultParticleInstanceData構造体)
9179
92- ** 階層構造** : .shader → ParticlesUber.hlsl(共通定義)→ Particles.hlsl(共通関数)→ ParticlesInstancing.hlsl(GPU Instancing)→ 各Pass用HLSL
93-
94- ### 2.3 エディターシステム
95-
96- - ** Material GUI** : マテリアルインスペクターUI(ParticlesUberCommonGUI、各種GUI継承構造)
97- - ** Material Post Processor** : マテリアル保存時にシェーダーキーワード自動設定(RenderQueue、ZWrite等)
98- - ** Renderer Error Handler** : Custom Vertex Streams検証と自動修正(Fix Nowボタン)
99- - ** Optimized Shader Generator** : メモリ使用量削減のための最適化シェーダー生成
80+ ### 2.3 主要機能システム
10081
101- ### 2.4 主要機能システム
102-
103- #### 2.4.1 Custom Coord System
82+ #### 2.3.1 Custom Coord
10483統一的にパラメータをアニメーション可能にするシステム。GPU Instancing対応。詳細は [ 5.2 Custom Coord System詳細] ( #52-custom-coord-system詳細 ) を参照。
10584
106- #### 2.4.2 Random Row Selection
107- Unity標準のTexture Sheet Animation Row Mode > Random機能の代替実装。Custom Coordシステムを活用し、任意のCustom Coordチャンネルで使用可能。詳細は` documentation/RandomRowSelection_Specification.md ` を参照。
108-
109- #### 2.4.3 GPU Instancing
110- Shader Model 4.5以上でMesh GPU Instancingを使用可能。DefaultParticleInstanceData構造体でtransform、color、customCoord1/2を効率的に転送。
85+ #### 2.3.2 Optimized Shader Generator
86+ メモリ使用量削減のため、不要な機能を除外した最適化シェーダーを生成。
11187
112- #### 2.4.4 UIParticles制約システム
113- Unity UIのUIVertex構造の制限により、Custom Coord z/wコンポーネントが使用不可。UICustomCoord enumでCoord1.x/y、Coord2.x/yのみ対応。詳細は` documentation/UIParticles_Limitations.md ` を参照。
88+ その他技術的な特徴や実装背景については以下の記事を参照してください。
89+ - [ Unity用エフェクトシェーダ「NOVA Shader」のOSS化事例と技術的特徴] ( https://developers.cyberagent.co.jp/blog/archives/35148/ )
90+ - [ 【Nova Shader 2.4.0】 uGUIでの再生に対応] ( https://blog.sge-coretech.com/entry/2024/10/18/155432 )
91+ - [ エディタバージョンの互換性を保ちつつRenderGraphに対応する【NOVA Shader】] ( https://blog.sge-coretech.com/entry/2024/10/18/155432 )
92+ - [ Adaptive Probe Volumesを自作シェーダーに対応させる【NOVA Shader】] ( https://blog.sge-coretech.com/entry/2025/05/12/113927 )
93+ - [ マテリアルから不要なパラメータを削除する【Nova Shader】] ( https://blog.sge-coretech.com/entry/2025/05/26/113157 )
11494
115- ### 2.5 ドキュメント体系
95+ ### 2.4 ドキュメント体系
11696
117- #### 2.5 .1 ユーザー向けドキュメント
97+ #### 2.4 .1 ユーザー向けドキュメント
11898| ファイル | 言語 | 内容 |
11999| ---------| ------| ------|
120100| ` README.md ` | 英語 | プロジェクト概要、インストール、使い方 |
@@ -123,7 +103,7 @@ Unity UIのUIVertex構造の制限により、Custom Coord z/wコンポーネン
123103| ` Assets/Samples/README_JA.md ` | 日本語 | 同上(日本語版) |
124104| ` Assets/Demo/README.md ` | 英語 | デモの説明 |
125105
126- #### 2.5 .2 AI開発支援
106+ #### 2.4 .2 AI開発支援
127107AI(Claude Code)による開発支援を最大限受けられるよう、NOVAでは技術仕様書を用意しています。
128108Custom CoordやTEXCOORDの割り当てといった複雑な設計についてAIに理解させるのに手間がかかるという背景が理由です。
129109現状効果があるように感じていますが、まだ満足のいく状態ではないため模索していくのがよいでしょう。
@@ -158,7 +138,7 @@ Custom CoordやTEXCOORDの割り当てといった複雑な設計についてAI
158138` README.md ` (英語)と` README_JA.md ` (日本語)それぞれに対し、常に最新状態にする。目次はGitHub Actions(` toc.yml ` )で自動生成。
159139
160140### 3.3 ビルド・テストプロセス
161- 必ずUnity Test Runnerを回してからPRを出す。
141+ 必ずUnity Test Runnerを回してからPRを出す。Optimized Shader Generatorへの対応作業が漏れがちなので注意。
162142- ** Edit Mode** (` Assets/Tests/Editor/ ` ): マテリアル内の不要パラメータ削除機能
163143- ** Play Mode** (` Assets/Tests/Runtime/ ` ): Average Test(画像比較)、最適化シェーダー機能
164144
@@ -181,96 +161,3 @@ Semantic Versioning(`major.minor.patch`): major=破壊的変更、minor=新
181161
182162---
183163
184- ## 8. 既知の課題と今後の展望
185-
186- ### 8.1 既知の制限事項
187-
188- #### 8.1.1 UIParticles制約
189- UIParticlesではCustom Coord z/wコンポーネントが使用不可(Unity UIのUIVertex構造の制限)。回避策として.xyコンポーネントのみ使用するか、標準Particlesシェーダーへ切り替え。
190-
191- ** 詳細** : ` documentation/UIParticles_Limitations.md `
192-
193- #### 8.1.2 GPU Instancing使用時のエディタープレビュー問題
194- Unity Editorでプレビュー表示時、GPU Instancing有効で正常に描画されない(Unity側のバグ)。Play Mode では正常動作。Unity Issue Tracker に該当Issue存在。
195-
196- #### 8.1.3 TEXCOORD制限
197- Forward PassでTEXCOORD14まで使用(上限15)。新機能追加時のスロット不足の可能性あり。対応策としてデータパッキング、GPU Instancing活用、Pass別最適化を検討。
198-
199- ** 詳細** : ` documentation/TEXCOORD_Usage_Strategy.md `
200-
201- #### 8.1.4 Shader Variant管理
202- 機能追加でバリアント数増加傾向。` shader_feature_local ` の積極使用、Optimized Shader Generator活用、未使用機能削除で対応。
203-
204- ### 8.2 技術的負債
205-
206- #### 8.2.1 コードベース
207- - ** Material Post Processor** : 機能追加で肥大化、条件分岐複雑化 → 機能別モジュール化、リファクタリングが必要
208- - ** エディターGUI** : Unlit/Lit/UIParticlesで類似コード重複 → 共通基底クラス抽出が必要
209-
210- #### 8.2.2 ドキュメント
211- - ** 日英同期** : README.md/README_JA.mdの内容差異 → 更新チェックリスト化、CI/CD自動チェック
212- - ** サンプル不足** : 全機能網羅するサンプルが不足 → 機能別・ユースケース別サンプル追加
213-
214- ### 8.3 パフォーマンス改善余地
215-
216- - ** シェーダーコンパイル時間** : 初回インポート時に長時間(特にLit版) → ` shader_feature_local ` 活用、バリアント削減
217- - ** エディターGUI** : Material Inspector描画が重い → 遅延描画、キャッシング強化
218- - ** モバイル** : 最適化余地あり → 軽量版検討、条件分岐削減
219-
220- ### 8.4 機能追加の検討
221-
222- ** 優先度: 高**
223- - ** Tone Mapping拡張** : カスタムカーブ、LUT対応(課題: TEXCOORD使用量、パフォーマンス)
224- - ** Shader Graph対応** : Custom Functionノード、テンプレート提供(課題: Shader Graph制約、メンテナンスコスト)
225-
226- ** 優先度: 中**
227- - ** Mesh Deformation強化** : Vertex Animation Texture、Skinning対応
228- - ** カスタムLighting Model** : トゥーンシェーディング等
229-
230- ### 8.5 Unity最新バージョン対応
231-
232- ** Unity 6対応(2025年10月時点):**
233- - ✅ RenderGraph対応済み(v2.7以降)
234- - ✅ 基本機能動作確認済み
235- - ⚠️ 一部警告表示(機能影響なし) → 今後解消予定
236-
237- ** 将来対応:**
238- - Unity 2023 LTS固有最適化、新API活用
239- - URP 17.x以降の新機能対応
240- - 条件付きコンパイルで互換性維持
241-
242- ### 8.6 長期的ビジョン
243-
244- ** アーキテクチャ進化:**
245- - ** モジュール化推進** : 機能を独立モジュール化、必要な機能のみ使用可能に
246- - ** プラグインシステム** : サードパーティ機能拡張対応(課題: API設計、互換性管理)
247-
248- ** ツールチェーン強化:**
249- - ** ビジュアルエディター** : GUI上でエフェクトプレビュー、リアルタイム調整
250- - ** プリセットライブラリ** : よく使用される設定をワンクリック適用
251-
252- ** コミュニティ協働:**
253- - Good First Issue整備、コントリビューションガイド充実
254- - GitHub Discussions、ユーザーアンケート活用
255-
256- ### 8.7 リスク管理
257-
258- ** Unity依存リスク:**
259- UnityのAPI変更、URPの大幅な仕様変更 → Unity Roadmap定期確認、Beta版事前検証、複数バージョン対応維持
260-
261- ** 技術的負債蓄積:**
262- コードベース複雑化、保守困難化 → 定期的リファクタリング、コードレビュー徹底、技術的負債可視化
263-
264- ** コミュニティ対応負荷:**
265- Issue/PR対応遅延 → 対応プロセス明確化、定期的Issue整理、FAQ充実
266-
267- ### 8.8 まとめ
268-
269- ** 短期的課題(3-6ヶ月):** UIParticles制約対応、ドキュメント同期、パフォーマンス改善
270-
271- ** 中期的課題(6-12ヶ月):** 新機能追加(Tone Mapping拡張等)、Unity 6完全対応、コードリファクタリング
272-
273- ** 長期的ビジョン(1年以上):** モジュール化、ビジュアルエディター、コミュニティ拡大
274-
275- ---
276-
0 commit comments