CGBoxの一部の記事にはアフィリエイト広告が含まれております。
【Unity】レンダリングパイプラインとは?導入方法解説
こんにちは!Unityでゲームを作っていると「レンダリング」
「レンダリングパイプライン」のような言葉を聞くことがあるかと思います。
レンダリングは特に設定しなくてもゲーム作りは進められるのですが、後から設定を変更しようとすると手間がかかってしまいます。
そこで本記事ではレンダリングを設定する方法や、設定変更方法について解説していきます!
レンダリングとは
レンダリングとは、3Dモデルのポリゴンやテクスチャのデータを処理し、画像や映像として表示させること。
また、モデルデータの入力から出力までの加工手順のことを、レンダリングパイプラインと呼びます。
このレンダリングパイプラインはUnity内でいくつか種類が用意されています。
- ビルトインレンダリングパイプライン – Unityの昔ながらのレンダリングパイプライン
- SRP(スクリプタブルレンダーパイプライン)- スクリプトで制御可能。下2つのテンプレートがある
- URP -モバイルでも動く、シェーダーのような新機能が使えて処理が軽い
- HDRP – 最もリッチな表現ができるが重い。デスクトップPCのようなハイエンド機対象
上のようにいくつか種類がありますが、本記事では特にURPについて導入方法を解説していきます。
レンダリングパイプラインの導入方法
URP(Universal Render Pipeline)について導入方法を解説していきます。
レンダリングパイプラインのテンプレートを選択
プロジェクトの新規作成時にテンプレートを選択することで、簡単にURPを導入することができます。
UnityHubを起動し、新しいプロジェクトを選択すると以下のようにテンプレート選択画面が出てきます。
ここで3D(URP)を選択しプロジェクトを作成すると、URPを導入することができます。
レンダリングパイプラインに変更するやり方
すでに作ってあるプロジェクトのレンダリングパイプラインをURPに変更することもできます。
まずは、Window→PackageManagerを開きます。
PackageManagerが開けたら、Universal RPをインストールします。
下のように、PackagesをUnity Registryに変更し、Univesal RPで検索します。
Universal RPが候補に出てきますので、Installボタンを押してインストールしましょう。
続いて、URPアセットを作成します。
Assetフォルダ内で右クリック→Create→Rendering→URP Asset(with Universal Renderer)を選択します。
下のように、二つ新しいファイルが作成されます。
作成したURPアセットをプロジェクト設定に反映していきます。
Edit→Project Settings→Graphicsを開きます。
下のように、Graphics内にScriptable Render Pipeline Settingsの項目があるので
そこに先ほど作成したURPアセットを設定します。
確認画面が出てきますが、Continueを選択します。
続いてQuality設定を開きます。
Render Pipeline Assetの項目があるので、そこにも同様に先ほど作成したURPアセットを設定します。
ここまで設定できると、予め配置していたオブジェクトがピンク色になってしまいます。
このマテリアルをURP用に設定する必要があります。
ピンクになっているマテリアルを選択し、Edit→Rendering→Materials→
Convert Selected Built-in Materials to URPを選択します。
下のような確認画面が表示されますが、Proceedを押しましょう。
ピンクになっていたオブジェクトに元の色が反映されました。
新たにマテリアルを作成してオブジェクトにセットすることでも、ピンク色を解消することができます。
これで無事、レンダリングパイプラインをURPに変更することができました。
レンダリングを軽量化する方法
ここでは、レンダリングを軽量化する方法について解説します。
今回はレンダリングを軽量化してみる環境として、下の無料アセットを利用させていただきます。
まず最初に、現在のゲーム画面の描画処理がどれくらい重いのかを確認してみましょう。
ゲームビューのStatsからSetPass calls:64という数値が確認できます。
このSet Pass CallというのはCPUからGPUに描画処理を指示する回数のことで、
簡単に言えば数値が高いほど描画処理が重いということになります。
64という数値はそこまで重くないですが、設定でさらに軽量化していきましょう。
軽量化方法:ライトをベイクする
今回は、ライトをベイクする方法で軽量化していきます。
ライトをベイクすることにより、オブジェクトへの光の当たり方をあらかじめ計算しておくことで、
リアルタイムで描画する負荷を軽減することができます。
下のように、ライトオブジェクトのインスペクターからModeをBakedに変更します。
これでライトの設定は完了です。
次に、ベイクを適用させたいオブジェクトにStaticのチェックを入れていきます。
このStaticのチェックをつけてあげることで、このオブジェクトは「動かない」オブジェクトだとUnityに伝えることができます。
Staticなオブジェクトは一度の描画処理で描画できるので、負荷を軽減させることができます。
ただこの時点ではまだライトがベイクされていません。
最後に、オブジェクトに変更を加えると自動でライトの計算もしてくれるように設定しましょう。
Window→Rendering→Lightingを選択します。
Lighting内にあるAuto Generateにチェックを入れましょう。
すると自動的にライトの計算が始まるので終了するまで待ちます。
ライトの計算が終わりましたが、ワールドの見た目は変わっていません。
Set Pass Callの値をもう一度確認してみましょう。
Set Pass Callの値は36となっており、ライトをベイクすることでさきほどの64から大幅に軽量化することができました。
オブジェクトが多くなり動作が重い時には、ライトのベイクによる軽量化を一度試してみましょう。
シェーダーのレンダリングモードの違い
Unityのマテリアルのシェーダーにはいくつかのレンダリングモードがあります。
このレンダリングモードを変更することにより、透明度についての表現が変わります。
ここではそれぞれの違いについて簡単に解説していきます。
Opaque
デフォルトの設定です。透明な部分のないオブジェクトに適しています。
Cutout
透明な部分と不透明な部分がハッキリ分かれる設定です。
半透明な部分がないオブジェクトに適しています。
Fade
半透明な部分があるが、反射やハイライトの表現を消したいオブジェクトに適します。
Transparent
半透明な部分があり、反射の表現もさせたい、ガラスやプラスチックなどのオブジェクトに適します。
それぞれのレンダリングモードについて、画像も合わせて参照したい場合は下の記事が参考になります。
おすすめアセット
水や波の高度なレンダリングを実現するアセット
SUIMONO Water Systemという水、波のレンダリングに特化した有料アセットです。
水の見た目や動作について自分でカスタマイズすることができ、
水の動きを細かく制御したい方にオススメのアセットです。
レンダリング結果を動画・画像で保存するアセット
レンダリング結果を画像や動画で保存できる、AVPro Movie Captureという有料アセットです。
このアセットを使えばUnity Editor上でも、アプリケーション上でも簡単な操作でゲーム画面を録画することができます。
本格的な映像を録画したい方にオススメのアセットです。
まとめ
以上、レンダリングパイプラインの導入方法について解説してきました!
レンダリングは意味が分かりにくくて避けがちですが、設定自体は簡単です。
後に設定を変更しようとすると苦労するので、最初に設定しておきたいですね!