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の“おせっかい”のせいでした…。
役に立てば幸いです!