HDRenderPipelineを使わずにVisualEffectGraphをインストールする

本記事の内容

VisualEffectGraphがPreviewに入ったみたいですね。 これをプロジェクトに使いたいなーと思っていたのですが、デフォルトだとHDRenderPipelineを入れないと動かないです。 ただHDRenderPipelineを入れちゃうと、それに対応しているシェーダーしか使えなくなります。 流石にそれは嫌だ!ということで、HDRenderPipelineを設定せずにVisualEffectGraphの機能を使う方法を見つけたので、それについて書きたいと思います。

また、VisualEffectGraphはPreviewなので、本記事に書かれている内容は情報が古い可能性がありますので注意してください。

あと普通に動かすだけなら、のたぐす氏が丁寧なインストール方法を解説されているので、そっち見たほうがいいかも。

環境

* Unity 2018.3.0b7
* ScriptableRenderPipeline - [release/2018.3](fde2b7099496fd5ad4467c3e12fbcd95c3505469)

前準備

  1. Githubから必要なパッケージを取得しておきます
git clone https://github.com/Unity-Technologies/ScriptableRenderPipeline.git --branch release/2018.3
  1. プロジェクトを新規作成、または既存のものをUnity 2018.3で開けるようにしておきます

インストール

Packageをインストールする

CloneしたScriptableRenderPipelineから、プロジェクトのPackagesへ以下の項目をコピペします

* com.unity.render-pipelines.core
* com.unity.render-pipelines.high-definition
* com.unity.shadergraph
* com.unity.visualeffectgraph

f:id:fortysan:20181028234918p:plain f:id:fortysan:20181029012011p:plain

HDRenderPipeline思い切り入れとるやん…って感じなんですが、 VisualEffectGraph側からHDRenderPipelineヘ依存してしまってるようなので、基本機能は使いませんが、入れます。 開発が進んだら、依存外れてくれるって信じてます(大声)

Unity側の設定

ProjectSettings/VFXを開きます。

f:id:fortysan:20181028235621p:plain

Packages/com.unity.visualeffectgraph/Shaders/RenderPipeline/HDRPHDRPLegacyに書き換えます。

書き換えたら保存してプロジェクトを開き直します。

シェーダーの修正

Packages\com.unity.visualeffectgraph\Shaders\RenderPipeline\Legacy\VFXCommon.cginc

がバグってるので、以下のように修正します

float VFXSampleDepth(float4 posSS)
{
    //return _CameraDepthTexture.Load(int3(posSS.xd, 0)).r;
    return SAMPLE_DEPTH_TEXTURE(_CameraDepthTexture, int4(posSS.xy, 0,0)).r;
}

多分これであってるとおもうけど、違ったら教えてください。

修正したら、プロジェクトを開き直します。

Visual Effectsの作成

Create/Visual Effects/Visual Effect Graphを作成して、動いたら成功です!

f:id:fortysan:20181029005324p:plain