以下の内容はhttps://kxn4t.hatenablog.com/entry/2025/05/25/190626より取得しました。


【Unity】急にGPUでのライトベイクができなくなったとき

Unityで突如GPUでのライトベイクができなくなってしまったので、備忘録として残しておきます。

状況

前日までできていたGPUでのライトベイクが突如できなくなり、CPUでのベイクにフォールバックしてしまう。

その際、OpenCL Error. Falling back to CPU lightmapper. Error callback from context: CL_INVALID_KERNELのようなエラーがでる。

ベイクの設定を極端に軽くすると、まれに通ることもあり、使用可能なGPUデバイスとしてグラボが2つ表示されるようになる。 「(0)」とついていない方を選択してUnityを再起動したとしても結局「(0)」のほうが使われてしまう。

環境

  • Unity2022.3.22f1
  • RTX4080

原因

「OpenCL™、OpenGL®、および Vulkan® 互換機能パック」が、いつの間にかインストールされていたことが原因のようです。

これをアンインストールしたところ再びGPUでベイクできるようになりました!

NVIDIAのドライバをDDUで入れ直したり、Unityを再インストールしなおしてみたりしてみても直らなかったため、UnityのEditor.logをみてみると、

GPU memory max allocation size (1.00 GB) is too small to fit the BVH stack buffer

のエラーがあり、OpenCLのプラットフォームとして、

* OpenCL platform 0 - NVIDIA CUDA
* OpenCL platform 1 - Microsoft OpenCLOn12

が登録されており、Microsoft OpenCLOn12が勝手に追加されてしまっているようでした。

これにより、Microsoft OpenCLOn12が使用されてしまい、GPUのメモリ割り当て制限によって必要なバッファが確保できず、ベイクに失敗していたと考えられます。

起動時の引数に-OpenCL-PlatformAndDeviceIndices 0 0を追加すれば回避できるケースもあるようですが、自分の環境では安定せず、互換機能パック自体をアンインストールするのが一番確実でした。

急にベイクできなくなったので困り果ててしまいましたが、原因はMicrosoftの“おせっかい”のせいでした…。

役に立てば幸いです!




以上の内容はhttps://kxn4t.hatenablog.com/entry/2025/05/25/190626より取得しました。
このページはhttp://font.textar.tv/のウェブフォントを使用してます

不具合報告/要望等はこちらへお願いします。
モバイルやる夫Viewer Ver0.14