土屋つかさの技術ブログは今か無しか

土屋つかさが主にプログラミングについて語るブログです。

#unity URP12.0からForwardRendererクラスがUniversalRendererクラスにリネームされた(マジか)

 いろんなことを同時並行していてなかなかまとまった記事を書けないんですが、今日調べ物してて驚かされたことを共有しておきます。

 URPにおけるデフォルトのレンダラー実装であるForwardRendererという重要なクラスがあるんですが、これがURP12.0からUniversalRendererにクラス名が変わりました(マジかよ)。

 どうもDeferredレンダリングパスを実装する際に、Forwardレンダリングパスとの切り替えを(レンダラー自体を切り替えるのでなく)レンダラーの中で選択する形式にしたため、「ForwardRenderer」という名前がふさわしくないため変更したようです。

 理屈としてはわかるものの、「レンダラー自体を切り替える設計だったんじゃないんかい」「今更こんな重要なクラスの名称変えるの?」など疑問が尽きません。まあ、前者については、そのコンセプトが上手くいかないことがわかったから止めたということなのでしょうが、なんとか頑張って欲しかったな……。

というわけで、各URPのバージョンとクラス名の対応は以下になります。

URP10.6(2020.3.13f1+)
ForwardRenderer

URP11.0(2021.1.9f1+)
ForwardRenderer

URP12.0.0(2021.2.0b14+)
UniversalRenderer

下記は、URP12.0のチェンジログの該当箇所です。

The Forward Renderer asset is renamed to the Universal Renderer asset. The Universal Renderer asset contains the property Rendering Path that lets you select the Forward or the Deferred Rendering Path.

ちなみに、クラス名が(もちろんファイル名も含めて)変わったならUnityのアップグレード時に困りそうですが、UniversalRendererDataとForwardRendererDataとでmetaファイルのGUIDを交換したので問題ないようです(マジかよその2)。以下同じくURP12.0チェンジログより。

UniversalRendererData and ForwardRendererData GUIDs have been reversed so that users coming from 2019LTS, 2020LTS and 2021.1 have a smooth upgrade path, you may encounter issues coming from 2021.2 Alpha/Beta versions and are recommended to start with a fresh library if initial upgrade fails.