Unityでシェーダを使ってサクッとスクリーン合成する

作ったシェーダ

ScreenBlendingShader.zip

目的

  • Unityでスクリーン合成(スクリーンブレンディング)する
  • Adobe AfterEffectで作った効果ムービーをVideoPlayerコンポーネントで再生してる時に、スクリーン合成したくなったので

環境

  • OS: Windows 10 Pro
  • Unity: 2018.1.1f1

参考にさせてもらったサイト

スクリーン合成シェーダの作り方

  1. Unity公式からビルトインシェーダをダウンロードする
  2. [builtin_shaders-*\DefaultResourcesExtra\Unlit\Unlit-Alpha.shader]の中身をコピペして、新規シェーダを作る
  3. 新規に作ったシェーダをいじる
Shader "Unlit/ScreenBlending" {// ← UnityEditor上から見えるシェーダのカテゴリと名前を変更しておく
//<中略>
}

SubShader {
    Tags {"Queue"="Transparent" "IgnoreProjector"="True" "RenderType"="Transparent"}
    LOD 100

    ZWrite Off
    Blend SrcAlpha One //OneMinusSrcAlpha // ← ここをいじる
//<中略>
}

上記のシェーダの、"ここをいじる"行をいじる。変更の仕方は以下の通り(だと思う)

合成の種類第一引数第二引数
アルファブレンドSrcAlphaOneMinusSrcAlpha
反転OneMinusDstColorZero
加算OneOne
加算+アルファ(Ps的スクリーン)※今回SrcAlphaOne
スクリーン(Ps的比較(明))OneMinusDstColorOne
乗算ZeroSrcColor
  1. 新規マテリアルに、作ったシェーダを割り当てる
  2. 新規Quadに、作ったマテリアルを割り当てて、マテリアルにテクスチャを割り当てる
  3. カメラ、前景、背景をいい感じに並べて完成!

おわりに

ヒカテクにコーヒーをおごってみませんか!(投げ銭|Donation

投稿者: hikatech