Notifications
Article
Githubから ScriptableRenderPipeline(SRP)を落としてきてハマった話…
Updated a month ago
355
0
ハマった話

まず初めに…

この話は Unityのgithub上のScriptableRenderPipeline(SRP)を落としてきて実行するまでにハマったポイントをまとめた記事です

ブランチ指定してなかった…

SRPにはいくつかバージョンがあります。1.x系と2.x系等です
SRP 1.x系は 2018.1で動作しますが、SRP 2.x系は 2018.2からの新機能 Stripping Scriptable Shader Variant に対応した等の影響により 2018.2では動作しません。 2018.1なら SRP 1.x系(1.1.8-preview等)、2018.2なら SRP2.X系(2.0.4-preview)を指定しましょう

Github submodule忘れてハマる…

LWRPは Postprocessingにも依存しています。PostProcessing自体は gitのsubmoduleで落としてくる形になっています。 素直にマニュアルにあるように git submodule update --init しましょう > git checkout 1.1.8-preview (or the latest tag) > git submodule update --init (This command fetches the Postprocessing module, which is needed to use SRP)

Shaderエラーにハマる…

無事配置が完了したかと思いきや…、Shaderエラーが出ました…
Shader error in 'LightweightPipeline/Standard (Physically Based)': failed to open source file: 'LWRP/ShaderLibrary/InputSurfacePBR.hlsl' at line 117 (on d3d11)
このようなエラーが大量に出てきます…。Shaderのソースを見に行くと…
#include "LWRP/ShaderLibrary/InputSurfacePBR.hlsl" #include "LWRP/ShaderLibrary/LightweightPassLit.hlsl"

のような場所で軒並みエラーになっています…。 これを解決するには ShaderのIncludeを通すためにパスを認識させる必要があります。
それをするためには、2018.1から新機能で追加された ShaderIncludePath 属性で指定すれば行けます https://docs.unity3d.com/ScriptReference/ShaderIncludePathAttribute.html
internal static class DefaultShaderIncludes { [ShaderIncludePath] public static string[] GetPaths() { return new[] { "Assets/SRP/ScriptableRenderPipeline/LightweightPipeline/" }; } }
このようなコードを Editorフォルダ以下に仕込んで置けば、これでパスが通るようになります。 いちいち inlucludeを置き換えていく必要はありません!! (最初わからなくて、いちいち置き換えてました…)
2018/12/13 追記 2019.1より ShaderIncludePathは廃止になってしまいました。 includeを全て置き換える必要があります。

YusukeKurokawa (黒河 優介)
Developer Relation Manager/Engineer - Programmer
6
Comments