古いプロジェクトを2020LTSにバージョンアップした後にWebGLでビルドしようとすると、Post ProcessingのFinalPass関連で以下のような2つのエラーに遭遇しました。
Shader error in 'Hidden/PostProcessing/FinalPass': Input signature parameter (1-based Entry 3) type must be a scalar uint. at line 44 (on gles) Compiling Vertex program with STEREO_INSTANCING_ENABLED 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_COLORSPACE_GAMMA UNITY_LIGHTMAP_FULL_HDR Disabled keywords: FXAA FXAA_LOW FXAA_KEEP_ALPHA FXAA_NO_ALPHA STEREO_DOUBLEWIDE_TARGET UNITY_NO_DXT5nm UNITY_ENABLE_NATIVE_SHADOW_LOOKUPS UNITY_METAL_SHADOWS_USE_POINT_FILTERING UNITY_NO_SCREENSPACE_SHADOWS UNITY_PBS_USE_BRDF2 UNITY_PBS_USE_BRDF3 UNITY_NO_FULL_STANDARD_SHADER UNITY_HARDWARE_TIER1 UNITY_HARDWARE_TIER2 UNITY_HARDWARE_TIER3 UNITY_LIGHT_PROBE_PROXY_VOLUME UNITY_HALF_PRECISION_FRAGMENT_SHADER_REGISTERS UNITY_LIGHTMAP_DLDR_ENCODING UNITY_LIGHTMAP_RGBM_ENCODING UNITY_VIRTUAL_TEXTURING UNITY_PRETRANSFORM_TO_DISPLAY_ORIENTATION UNITY_ASTC_NORMALMAP_ENCODING SHADER_API_GLES30
Error building Player: Shader error in 'Hidden/PostProcessing/FinalPass': Input signature parameter (1-based Entry 3) type must be a scalar uint. at line 44 (on gles) Compiling Vertex program with STEREO_INSTANCING_ENABLED 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_COLORSPACE_GAMMA UNITY_LIGHTMAP_FULL_HDR Disabled keywords: FXAA FXAA_LOW FXAA_KEEP_ALPHA FXAA_NO_ALPHA STEREO_DOUBLEWIDE_TARGET UNITY_NO_DXT5nm UNITY_ENABLE_NATIVE_SHADOW_LOOKUPS UNITY_METAL_SHADOWS_USE_POINT_FILTERING UNITY_NO_SCREENSPACE_SHADOWS UNITY_PBS_USE_BRDF2 UNITY_PBS_USE_BRDF3 UNITY_NO_FULL_STANDARD_SHADER UNITY_HARDWARE_TIER1 UNITY_HARDWARE_TIER2 UNITY_HARDWARE_TIER3 UNITY_LIGHT_PROBE_PROXY_VOLUME UNITY_HALF_PRECISION_FRAGMENT_SHADER_REGISTERS UNITY_LIGHTMAP_DLDR_ENCODING UNITY_LIGHTMAP_RGBM_ENCODING UNITY_VIRTUAL_TEXTURING UNITY_PRETRANSFORM_TO_DISPLAY_ORIENTATION UNITY_ASTC_NORMALMAP_ENCODING SHADER_API_GLES30
シェーダーコードを見るとpragmaのラベルで未定義のがあるような感じでした。
解決法
Player Settings の WebGL の Other Settings 欄にある Auto Graphics API のチェックを外して、WebGL 1.0やWeb2.0を一度削除して、また設定することで直りました。
ざっくり、以下手順の一例です。
- UnityのEditorメニューから Project Settings を開いて Player を選択(Fileメニュー > Build Settings > Player Settingsでも可)
- WebGL の Other Settings を開く
- Auto Graphics APIのチェックを外す
- Graphics APIs 欄にあるWebGLの設定を削除
- Graphics APIs 欄の右下の + をクリックして設定を追加しなおす
以上です。