ノート: これはプレビュー機能であり、変更されることもあります。この機能を使用するシーンは、将来のリリースで更新が必要になる場合があります。この機能がプレビュー版である間は、本格的な制作に使用しないでください。
プログレッシブ GPU ライトマッパーは、プログレッシブライトマッパー のバックエンドで、コンピューターの GPU と Dedicated Video Ram (VRAM) を使用して、ベイクした ライトマップ と ライトプローブ を生成します。
プログレッシブ GPU ライトマッパーを使用するには、コンピューターが以下の最低要件を満たす必要があります。
ベイクするシーンが、指定された GPU で利用可能な VRAM よりも多くを必要とする場合、ベイク時間が大幅に増加することがあります。シーンのベイクにかかる時間を短縮するための情報は、“パフォーマンス” を参照してください。
プログレッシブ GPU ライトマッパーは CPU OpenCL デバイスをサポートしていません。
プログレッシブ GPU ライトマッパーは、ライトマッパータイリングを有効にしない限り、プログレッシブ CPU ライトマッパーよりもベイクが高速です。
ただし、ベイクに使用する GPU の仕様と、その GPU 専用の VRAM 容量の両方が、ライトマッパーのパフォーマンスに影響します。
また、GPU リソースを消費する他のアプリケーションも、ベイクのパフォーマンスに影響を与えます。ハードウェアベンダーによっては、Unity で使用できる VRAM の量が減ると、ベイクが遅くなったり、失敗の原因になったりすることがあり、さらには、GPU が最小メモリ要件を満たせない場合は、ライトマッパーが CPU にフォールバックすることもあります。この機能の使用中は他のアプリケーションを終了しておくことで、安定性とパフォーマンスを向上させることが可能です。
プログレッシブ CPU ライトマッパーと同じ品質の結果を得るために、プログレッシブ GPU ライトマッパーは最大で 4 倍の間接光サンプルを必要とします。プログレッシブ CPU ライトマッパーは、各バウンスでより多くの光線を放射する、分岐パストレーシング (branched path tracing) と呼ばれる方法を用いています。分岐パストレーシングを用いる方法は GPU には適していません。
Unity は、プログレッシブ GPU ライトマッパーがシーンのベイクに必要とするメモリ量を特定するために役立つスプレッドシートを提供しています。詳細は プログレッシブ GPU ライトマッパーメモリスプレッドシート を参照してください。
プログレッシブ GPU ライトマッパーにはライトマッパータイリングと呼ばれる機能があります。ライトマッパータイリングは、Unity が GPU メモリ割り当てを使い切った時にプログレッシブ GPU ライトマッパーがプログレッシブ CPU ライトマッパーにフォールバックするのを防ぎます。フォールバックの代わりに Unity は、CPU に一時的なメモリを割り当て、使用可能な GPU メモリ量に適したサイズのタイルでライティングをベイクします。ライトマッパータイリングは、Unity がライトマップ全体をベイクするのに十分な GPU メモリにアクセスできない場合のみ、アクティブになります。プログレッシブ CPU ライトマッパーにはタイリング機能はありません。
ライトマッパータイリングがアクティブな場合は、シーンビューとベイク処理でプログレッシブな更新が停止します。ただし、Lighting ウィンドウの Progressive updates 設定の表示は見た目には無効化されません。ライトマッパータイリングがアクティブな時にシーンをベイクすると、同じシーンをタイリングなしでベイクするよりも時間がかかります。
タイリングを無効化することはできません。ただし、以下の方法を用いることで、それがアクティベートされる可能性を低くすることができます。
Unity が使用できる GPU メモリの量を増やします。
アンビエントオクルージョン を無効にします。Lighting ウィンドウ (メニュー: Window > Rendering > Lighting) を開き、Lightmapping Settings インターフェース内で Ambient Occlusion を無効にしてください。
間接光のみをベイクします。全ての光源を Realtime または Mixed に設定します。Baked に設定された光源がないことを確認してください。混合 (Mixed) アプローチを使用する場合は、Lighting > Mixed Lighting > Lighting mode を Baked Indirect に設定します。
プロジェクトの アンチエイリアシング のレベルを下げます。Project Settings > Quality を開き、必要なサンプル数がより少ないオプションを選択します (例えば、8x Multi Sampling から 2x Multi Sampling に切り替えるなど)。
Lightmap Parameters アセット 内でライトマップの品質を下げます。Lighting ウィンドウ を開き、Lightmapping settings を展開し、Lightmap parameters で低解像度のオプションを選択します。
ライトマップの解像度を低くします。
CPU ベースのノイズ除去を使用します。ノイズ除去を選択するには、Lighting ウィンドウ を開き、Lightmapping settings を展開し、Filtering を Advanced に設定して、ライトマップターゲットの種類 (Direct と Indirect) ごとにノイズ除去を選択します。CPU ベースなのは OpenImageDenoise のみです。RadeonPro と Optix は GPU ベースですが、RadeonPro はより多くの GPU メモリを使用します。
macOS では、使用可能なメモリ量の特定がより困難です。そのため、このプラットフォームでは CPU にフォールバックする可能性が高く、したがってベイク速度を最適化するための指示に従うことが推奨されます。
ベイク時間を短縮し、ベイク処理の使用メモリが、GPU がベイク用に使用できる指定の VRAM 容量を超えないようにする方法は、いくつかあります。
他の GPU アクセラレーションアプリケーションを終了します。GPU アクセラレーションによる 2D 画像編集ソフトや 3D モデリングソフトは VRAM を使用します。グラフィックスアクセラレーション機能をオフにするか、これらのアプリケーションを終了してください。
CPU ベースのノイズ除去に切り替えます。 GPU ベースのノイズ除去も VRAM の容量を使用します。Intel Open Image などの、代わりにシステム RAM を使用する CPU ベースのオプションに切り替えます。
小さなゲームオブジェクトにはライトプローブを使用します。 がれきや破片、小さなプロップのようなゲームオブジェクトは、ライトマップの容量を大きく使用しますが、シーンの見た目にはあまり貢献しない場合もあります。ベイク速度を最適化するには、そのようなゲームオブジェクトのメッシュレンダラーの Contribute Global Illumination を無効化 し、代わりに ライトプローブ でライティングを行います。
レンダリング用とベイク用に別々の GPU を指定します。 コンピューターに複数の GPU が搭載されている場合は、1 つをレンダリング用に、1 つをベイク用に指定することができます。以下の、GPU の選択に関するセクションを参照してください。
より少ない数の アンチエイリアスサンプル を使用します。 Lightmap Parameters アセット 内の、この設定のデフォルト値は 8 です。これを増加させると Unity はより多くの VRAM を使用します。4096 以上のライトマップサイズを使用している場合は、多くのコンシューマー GPU のメモリはすぐに超えてしまいます。
2 つ以上の GPU がある場合は、1 つの GPU をシーンのレンダリング用に指定し、もう 1 つを GPU をライティングのベイク用に指定することができます。デフォルト GPU の使用できる VRAM 容量が、シーンのレンダリングとプログレッシブ GPU ライトマッパーによるべイクの両方を行うのに十分でない場合には、この方法が適している場合があります。
以下の手順で、Unity が ベイクに使用する GPU を変更できます。
1. Lighting ウィンドウを開きます (メニュー: Window > Rendering > Lighting)。
2. Workflow Settings セクションに移動します。
3. GPU Baking Device ドロップダウンメニューを使用して GPU を選択します。
Did you find this page useful? Please give it a rating:
Thanks for rating this page!
What kind of problem would you like to report?
Thanks for letting us know! This page has been marked for review based on your feedback.
If you have time, you can provide more information to help us fix the problem faster.
Provide more information
You've told us this page needs code samples. If you'd like to help us further, you could provide a code sample, or tell us about what kind of code sample you'd like to see:
You've told us there are code samples on this page which don't work. If you know how to fix it, or have something better we could use instead, please let us know:
You've told us there is information missing from this page. Please tell us more about what's missing:
You've told us there is incorrect information on this page. If you know what we should change to make it correct, please tell us:
You've told us this page has unclear or confusing information. Please tell us more about what you found unclear or confusing, or let us know how we could make it clearer:
You've told us there is a spelling or grammar error on this page. Please tell us what's wrong:
You've told us this page has a problem. Please tell us more about what's wrong:
Thank you for helping to make the Unity documentation better!
Your feedback has been submitted as a ticket for our documentation team to review.
We are not able to reply to every ticket submitted.