この記事の3行まとめ
ロジカルビートは2024年9月6日(金)、「【Unity】ShaderのWarmupについて」と題した記事を、自社ブログにて公開しました。
技術ブログが更新されました!🖥️
今回はUnityのWarmupについてです🔥
ここをしっかり作っておくと、最適化の観点で品質が上がるかも??
【Unity】ShaderのWarmupについてhttps://t.co/RsM1IfwpWi
— 株式会社ロジカルビート (@logicalbeat_jp) September 6, 2024
技術ブログが更新されました!🖥️
今回はUnityのWarmupについてです🔥
ここをしっかり作っておくと、最適化の観点で品質が上がるかも??
【Unity】ShaderのWarmupについてhttps://t.co/RsM1IfwpWi
— 株式会社ロジカルビート (@logicalbeat_jp) September 6, 2024
同記事では、UnityのURPサンプルシーンをもとに、シーン再生時やオブジェクト描画時にスパイク(カクつき)が発生する理由や、その回避方法を解説しています。
なお、記事内で使用しているUnityのバージョンは「2022.3.44f1」です。
Unityで制作したゲームでは、シーン再生時やオブジェクト描画時の初回に、スパイクが発生する場合があります。発生した際の処理をProfilerで確認すると、初回は描画に必要なシェーダーをリアルタイムでロードしていることがわかります。
これらのスパイクを回避するため、同記事では「ShaderVariant」を利用した回避方法を紹介。ShaderVariantとは、一つのシェーダーをベースに、異なる環境のバリエーションを作成できる機能です。
本機能はパスタイプとキーワードのセットによりバリエーションを識別でき、各ShaderVariantは「ShaderVariantCollection」というクラスで管理できます。
記事では、ShaderVariantの作成方法やShaderVariantCollectionの編集方法を、画像付きで解説しています。自動・手動での作成や編集のほか、Add関数やRemove関数などスクリプト上での編集も可能とのこと。
こうして用意したShaderVariantを、Warmup関数を利用して事前にロードしておくことで、スパイクが防げるとしています。
なお、Warmup関数は同期処理のため、終了するまで画面が固まってしまうことに注意が必要とのこと。そのため、タイトルロゴの表示中など、静止した環境で実行することが推奨されています。
記事本文は、こちらをご確認ください。
【Unity】ShaderのWarmupについて