Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
URP の 2D Renderer と たわむれる
Search
ruccho
July 11, 2025
0
10
URP の 2D Renderer と たわむれる
https://unity-fully-understood.connpass.com/event/358068/
ruccho
July 11, 2025
Tweet
Share
More Decks by ruccho
See All by ruccho
WebAssemblyインタプリタを書く ~Component Modelを添えて~
ruccho
1
950
Colonies
ruccho
0
640
タイルマップ拡張のススメ / Recommendation of Unity Tilemap Gotanda.unity #14
ruccho
0
3.5k
Featured
See All Featured
Improving Core Web Vitals using Speculation Rules API
sergeychernyshev
18
1.1k
Building a Modern Day E-commerce SEO Strategy
aleyda
43
7.5k
Building Flexible Design Systems
yeseniaperezcruz
328
39k
Unsuck your backbone
ammeep
671
58k
The Cost Of JavaScript in 2023
addyosmani
53
8.9k
Bootstrapping a Software Product
garrettdimon
PRO
307
110k
4 Signs Your Business is Dying
shpigford
184
22k
Testing 201, or: Great Expectations
jmmastey
45
7.6k
What's in a price? How to price your products and services
michaelherold
246
12k
Understanding Cognitive Biases in Performance Measurement
bluesmoon
29
1.9k
StorybookのUI Testing Handbookを読んだ
zakiyama
30
6.1k
The Pragmatic Product Professional
lauravandoore
36
6.8k
Transcript
URP の 2D Renderer と たわむれる るっちょ @ruccho_vector
およそ1年前…… • 『5年モノの個人開発2Dゲーム、そろそろURPに移行したいな~』 ◦ VFX Graphを使いたい ◦ BiRP廃止の影がちらつき始めた
やってみた URP 17.0.3 BiRP
URP移行でやったことを 紹介していきます
① 2Dライト
2Dライト • BiRPの頃のライト手法 ◦ スプライトにSurface Shaderを適用し、ノーマルマップを描いて3Dライトを当てていた ◦ 3Dのライティングを2Dに応用した形 • URPでは
◦ 2Dライトが標準サポートされている ◦ 専用の 2D Rendererを使う必要がある
2D Rendererのパイプライン • 先に画面全体のNormalと陰影を計算してから合成する手法 ◦ Deferred Rendering的ともいえる ◦ BiRPではForward Renderingのライト数制限がきつかったが、それも緩和された
② GrabPassがなくなった
GrabPassとは • 任意のシェーダー内で描画直前の画面をテクスチャとして 取得するBiRPの機能 • 画面をぼかしたり、歪ませるのに便利 • URPでは非対応だが、2D Renderer限定で Camera
Sorting Layer Texture という代替機能がある
Camera Sorting Layer Texture • URPで特定のSorting Layerの直後の画面をシェーダーから参照できる機能 • GrabPassのようにRenderer単位のキャプチャはできない レイヤーA
レイヤーB レイヤーC レイヤーD キャプチャ 参照 描画順
URP改造でGrabPassを再現する? • 残念ながら、SRPでは任意のRendererの直前や直後でバッチを切れない • 結論 SRPでGrabPassは(たぶん)無理 • 詳細が気になる人はこれを読んでください ◦ 各バッチに含めるRendererはRenderQueue,
LayerMask, SortingLayerなどで フィルタできるが、「特定のRendererの前後」ではフィルタする方法がない ◦ 作成したバッチにRendererListというデータが含まれているが、内容はC++側にあって C#からはアクセスできない
対応策 • URPを改造してこうする レイヤーA レイヤーB レイヤーC レイヤーD キャプチャ キャプチャ キャプチャ
キャプチャ 描画順
対応策 • GrabPassよりは単位が荒いが、概ね事足りた • Sorting Layerごとにバッチが切れるので性能は多少下がる • Sorting Layer数を増やしすぎないように レイヤーA
レイヤーB レイヤーC レイヤーD キャプチャ キャプチャ キャプチャ キャプチャ 描画順
③ Bloomの見た目が変わった
URPのBloom • BiRP (PostProcessing Stack v2) から実装が刷新されてルックも 変わり、パラメータをいじっても元のルックが再現できず BiRP (PPSv2)
URP標準
対応 • 旧実装をカスタムポストプロセッシングとしてURPに移植した BiRP (PPSv2) 移植後
④ RenderGraph対応
RenderGraph • URP 17 (Unity 6) で導入された新機能 ◦ ざっくりいうと、レンダリングパスの依存関係をもとに高度な最適化を行う機能 •
カスタムパス(Renderer Feature)の作り方が大きく変わっている • まだあまり情報がなく、手探りで対応 • (2D特有の事情は特になし)
まとめ
まとめ • GrabPassなど一部機能に不足はあるが、概ね問題なく移行できた • ライティングはむしろ進化した ◦ ライト数制限が緩和されてうれしい • URP改造するとURPに詳しくなれます