この記事の3行まとめ
- UnityでUIと3Dシーンを異なる解像度で描画できるオープンソースライブラリ、サイバーエージェントのコア技術本部チームがリリース
- 3Dシーン描画用にRender Textureを作成することで、Render Scaleを使用せずに解像度を下げる
- 複数のカメラで描画するシーンにおいて、カメラごとに解像度を設定することも可能
サイバーエージェント ゲーム・エンターテイメント事業部 コア技術本部(以下、コアテク)は2025年11月28日(金)、Unity上で3DシーンとUIの解像度を個別に変更できるオープンソースのライブラリ「Reso Dynamix」をリリースしました。
ソースコードはMITライセンスのもと、GitHubで公開されています。
◤#コアテクブログ 更新◢
╭━━━━━━━━━━━━╮
3DとUIのハイブリッド解像度を
実現できるOSSを公開🎉
╰━━━━━v━━━━━━╯
「3Dの描画解像度は落としたいけど、UIの解像度は下げたくない」
こんなときに使えるライブラリです!是非ご一読ください。https://t.co/9x5UuJaGUA
— サイバーエージェント 技術広報(ゲーム・エンタメ) (@ca_ge_tech) November 28, 2025
◤#コアテクブログ 更新◢
╭━━━━━━━━━━━━╮
3DとUIのハイブリッド解像度を
実現できるOSSを公開🎉
╰━━━━━v━━━━━━╯
「3Dの描画解像度は落としたいけど、UIの解像度は下げたくない」
こんなときに使えるライブラリです!是非ご一読ください。https://t.co/9x5UuJaGUA
— サイバーエージェント 技術広報(ゲーム・エンタメ) (@ca_ge_tech) November 28, 2025
UnityのUI作成機能「Unity UI(uGUI)」では、CanvasのRender Modeを「Screen Space – Overlay」に設定した場合、3DシーンとUIにそれぞれ異なる描画解像度を適用できます。
一方、「Screen Space – Camera」または「World Space」ではUI単体のRender Scaleを調整できないため、UIの解像度を下げるためには画面全体の解像度を下げなければなりません。
「Screen Space – Overlay」でUIを画面の最前面で描画する場合、3Dシーンのみ解像度を落とす調整が可能(画像はブログ記事より引用)
「Screen Space – Camera」でUIを描画した様子。カメラごとにRender Scaleを別途指定できないため、UIと3Dシーン含め画面全体の解像度を下げることしかできない(画像はブログ記事より引用)
こうした問題を解決するため、コアテクはオープンソースのライブラリ「Reso Dynamix」をリリース。
「Screen Space – Camera」採用プロジェクトにおいて、3Dカメラ描画用に低解像度のRender Textureを作成することで、UIと3Dシーンを独立した解像度で描画可能としています。
Render Scaleを使用せずに解像度を下げる仕組み上、設定に不備があるとForward+におけるライトカリングに不具合が発生するといい、これに対処するべくシェーダーのグローバルパラメーターの「_ScaledScreenParams」へ解像度に適した値を入れています。
また、複数のカメラで描画されているシーンでもカメラごとに解像度を設定できるほか、UIと3Dシーンを含めた最終出力先の解像度を変更できる機能が搭載されています。
あるカメラでは解像度を落として(画像左)、別のカメラでは解像度を維持する(画像右)といった設定も可能(画像はブログ記事より引用)
3DシーンのRender Scaleが0.1、最終的な描画結果のRender Scaleが0.4に設定されている(画像はブログ記事より引用)
ライブラリの詳細はコアテクの技術ブログで紹介されています。併せてご確認ください。
3DとUIのハイブリッド解像度を実現する「Reso Dynamix」を公開しました | CORETECH ENGINEER BLOG