【Unity】ShaderでWaterMarkを任意位置に合成する

画面の任意の位置にメインのテクスチャの上に半透明でサブテクスチャを合成する方法.

Table of Contents

Env.

Windows 10
Unity2019.3.3f1

Source

以下のShaderを作成.マテリアルを作成して,CustomRenderTextureにアタッチして使う.
CustomRenderTextureをRawImageなどに貼り付けると合成した結果が得られる.

MainTexにRenderTextureなどで画面の映像を入力し,
SubTexにWaterMarkなどの合成した画像を入力する.

UVPositionとSizeの値を変化させることでSubTexの位置と大きさを変化させ,
ThresholdとAlphaの値を変化させることで透明度と表示するピクセルを調整できる.

CRTUpdate.shader

また,CustomRenderTextureにスクリプトからアタッチするときは
以下のように初期化しないと更新されなかった.

合成するとこのような感じになる.

今回の執筆時にRenderTexuterをNDIで送出する必要があったので,CustomRenderTexutureを使ったが,直接RawImageにマテリアルでセットしてもよい.

以下はマテリアルの設定.

Reference

コメントする

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です