Skip to content

URP用UTSシェーダー利用時、「Contribute Global Illumination」がオンになったオブジェクトが一つでも存在すると、invalid subscript 'vertexSH' が発生する #64

@darsh-amaotolog

Description

@darsh-amaotolog

いつもは、Oculus Quest 2(Oculus Link、Windowsビルド)でUnityを使っております。
以下の記事のようにUTSを使わせて頂いていたのですが、10日ほど前にビルド時にエラーが発生していることに気づきました。
https://amaotolog.com/vr/63

検証のため、新規プロジェクトで試したところ、その際はエラーは発生しませんでした。

これまで作ってきたプロジェクト(1年ほど前に作成)の何かがおかしいと考え、新たなプロジェクトにすべてのアセットやスクリプトを移行することにしました。
その移行作業の途中で、「Contribute Global Illumination」にチェックが入ったオブジェクトが一つでも存在していると、エラーになることが分かり、今回の質問をさせて頂きました。

以下に、再現方法を記載しておりますので、ご確認いただけると幸いです。

■開発環境
・Unity 2019.4.15f1
・CPU:AMD Ryzen 7 3700X
・グラボ:ASUS ROG-STRIX-RTX2060S-O8G-GAMING
・UTS/UniversalToon Ver.2.2.0
[ビルド設定]
・ビルドのPlatform(PC,Mac & Linux Standalone)
・Scripting Backend:IL2CPP
・API Compatibility Level:.NET 4.x ※.NET Standard 2.0でも試しましたが結果は同じでした
[その他]
・「Other Settings -> Rendering -> Auto Graphics API for Windows」のチェックを外し、「Direct3D11」を明示的に指定したり、他の項目(VulkanやOpenGLES3などを選択してみましたが、結果は同じでした。

■検証1
(1) 新しいプロジェクトを「Universal Render Pipeline」で作成する。
(2) 「UnityChanToonShaderVer2_Project-urp-2.2.0」をインポートする。
(3) hierarchyで「Main Camera」と「Directional Light」を残し、サンプルの「Post-process Volume」と「Example Assets」は削除する。
(4) Materialを新規作成し、シェーダーをUTSに変更する。設定はそのまま。
(5) hierarchyでオブジェクト(Cube)を新規作成し、(4)のMaterialを設定する。
(6) CubeのInspectorで「Mesh Renderer -> Lighting -> Contribute Global Illumination」にチェックを入れる。
(7) 「Lighting」タブで、「Auto Generate」にチェックが入っているため、自動的に「Generate Lighting」が実行される。
 ※手動で実行してもエラーは発生しました。

 すると、UTSでエラー発生する。

al010819

Shader error in 'Universal Render Pipeline/Toon': invalid subscript 'vertexSH' at /Unity/UnityChanToonShaderVer2_Project-urp-2.2.0/Runtime/Shaders/UniversalToonBodyDoubleShadeWithFeather.hlsl(41) (on d3d11)

Compiling Fragment program with LIGHTMAP_ON FOG_EXP2 _MAIN_LIGHT_SHADOWS _SHADOWS_SOFT _MAIN_LIGHT_SHADOWS_CASCADE _ENVIRONMENTREFLECTIONS_OFF _IS_PASS_FWDBASE _IS_TRANSCLIPPING_OFF _IS_ANGELRING_OFF _IS_CLIPPING_OFF _EMISSIVE_SIMPLE
Platform defines: UNITY_ENABLE_REFLECTION_BUFFERS UNITY_USE_DITHER_MASK_FOR_ALPHABLENDED_SHADOWS UNITY_PBS_USE_BRDF1 UNITY_SPECCUBE_BOX_PROJECTION UNITY_SPECCUBE_BLENDING UNITY_ENABLE_DETAIL_NORMALMAP SHADER_API_DESKTOP UNITY_LIGHT_PROBE_PROXY_VOLUME UNITY_LIGHTMAP_RGBM_ENCODING

■検証2
(1) 検証1の(1)と同じ。
(2) 検証1の(2)と同じ。
(3) hierarchy内で「Post-process Volume」のみを削除する。
(4) 検証1の(4)と同じ。
(5) 検証1の(5)と同じ。
 この時、Cubeの「 Contribute Global Illumination」はチェックなしです。
(6) 「Lighting」タブで、「Auto Generate」にチェックが入っているため、自動的に「Generate Lighting」が実行される。
 ※手動で実行してもエラーは発生しました。
(7) 「Build Settings -> Build」ボタンをクリックして、ビルドする。

 すると、UTSでエラーが発生する。
al010820

 Shader error in 'Universal Render Pipeline/Toon': invalid subscript 'vertexSH' at /Unity/UnityChanToonShaderVer2_Project-urp-2.2.0/Runtime/Shaders/UniversalToonBodyDoubleShadeWithFeather.hlsl(41) (on d3d11)

Compiling Fragment program with LIGHTMAP_ON FOG_EXP2 _MAIN_LIGHT_SHADOWS _SHADOWS_SOFT _MAIN_LIGHT_SHADOWS_CASCADE _ADDITIONAL_LIGHTS _ADDITIONAL_LIGHT_SHADOWS _ENVIRONMENTREFLECTIONS_OFF _IS_PASS_FWDBASE _IS_TRANSCLIPPING_OFF _IS_ANGELRING_OFF _IS_CLIPPING_OFF _EMISSIVE_SIMPLE
Platform defines: UNITY_ENABLE_REFLECTION_BUFFERS UNITY_USE_DITHER_MASK_FOR_ALPHABLENDED_SHADOWS UNITY_PBS_USE_BRDF1 UNITY_SPECCUBE_BOX_PROJECTION UNITY_SPECCUBE_BLENDING UNITY_ENABLE_DETAIL_NORMALMAP SHADER_API_DESKTOP UNITY_LIGHT_PROBE_PROXY_VOLUME UNITY_LIGHTMAP_RGBM_ENCODING

[補足]
・サンプルアセットの「Example Assets -> Workshop Set -> Drywall Panel」などで、「 Contribute Global Illumination」のチェックが入っているようです。

■補足
・#62で「Invalid subscript 'vertexSH'」が投稿されておりますが、状況が異なる可能性を考え、新たに投稿させて頂きました。
・シェーダーでReimportするとエラーは無くなりますが、ビルドするとエラーが再発します。
・「Oculus Integration」アセットなどが影響していると思いましたが、インポートしていない状態でも発生しました。(今回の検証内容)
・最終目的はVR環境(※)で使う事が目的ですが、現象切り分けのため、今回の検証内容とさせて頂きました。
 ※「Virtual Reality Supported(非推奨設定)」か「XR Plug-in Management(+Oculus)」
・UTSエラーが発生した場合でも、Unityエディター上では正しく表示されているようです。ただ、ビルド時にエラーとなるため、exe起動した際には正しく動作しませんでした。
・今回のエラーが発生した「いつも使っているUnityプロジェクト」では、自分で作成したキャラクターでは「Contribute Global Illumination」はチェックオフですが、Terrainや購入した建物アセットでは「Contribute Global Illumination」のチェックがオンとなっておりました。

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions