うにてぃブログ

主にUnityとC#に関する記事を書いていきます

【Unity】URPにおける背景画像の取得方法:Shader GraphのSceneColorノードの活用

以前は背景画像を描画する際にGrabtextureを使用していましたが、

URP(Universal Render Pipeline)ではその機能が削除されたため、代替手段が必要です。

今回は、その代替手段の1つであるShader GraphのSceneColorノードを使用した方法を説明します。

SceneColor Node

「SceneColorノードは、画面上の指定された位置に対応する色情報を取得するために、UV座標(正規化されたスクリーン座標)を利用します。このノードを使用することで、現在のカメラのカラーバッファにアクセスできます。」

SceneColorノードは、Shader Graphで背景画像を利用する際に重要な役割を果たします。このノードを使うことで、画面上の特定の位置に対応する色情報を取得し、それを利用してさまざまなエフェクトや処理を行うことができます。 と説明があるとおり、現在のカラーを取得することができます

ただし、次の条件を満たしていないと正しく動作しません:

SurfaceTypeがTransparent

UniversalRenderPiplineAsset のOpaqueTextureが有効

もし有効でない場合は以下のように灰色で表示されるのみです

条件を満たした場合、描画前の画像を取得できます。以下の画像は、グレースケールに変換する処理を行っています。

今回は以下のようにグレースケールに変換する処理のため灰色に表示されています