こんにちはっ🌟八ツ橋まろんです
UnityのライトにはCookieという項目があり、ここに透過画像を入れるとライトに模様を付けることができます。
(例)スポットライト
※ポイントライトの場合は、普通の透過画像ではなくCubeマップを入れないといけないので、難易度が高い
今回は、このCookieに動画を入れたいということで、Compute Shader(コンピュートシェーダー)とスクリプトを使って、スポットライト/ポイントライトのCookieに動画を充てられるシェーダーとスクリプトをそれぞれ作りました。
利用規約はこちら
配布はこちら(支援者限定)
スポットライトの使用例↓↓
ポイントライトの使用例↓↓
(ポイントライトは、同じ動画を6方向に使うことでCubeマップを作成しています)
Compute Shaderとは、GPUをレンダリング以外の用途に使うために書くシェーダーで、今回はVideo Playerで動画を反映したRender Textureをサンプリングし、その後Render Textureを上書きする処理を実行しています。具体的には、動画の黒い部分を透明(alpha = 0)という扱いにしてRender Textureを上書きしています。
これをC#スクリプトでサンプリング処理を書いたらCPUを使ってしまい、重い処理になってしまうので、Compute ShaderでGPUで実行しているのです。
ぜひ使ってみてください。
それではっ🌟