我在使用URP扩展时遇到了shader编译错误:
Shader error in 'Universal Render Pipeline/Spine/Skeleton Lit': 'OUTPUT_SH': Too few arguments to a macro call. at /Users/MyUserName/Desktop/unity packages/com.esotericsoftware.spine.urp-shaders/Shaders/Include/Spine-SkeletonLit-ForwardPass-URP.hlsl(89)
Compiling Subshader: 0, Pass: ForwardLit, Fragment program with _RECEIVE_SHADOWS_OFF
Platform defines: SHADER_API_DESKTOP UNITY_ENABLE_DETAIL_NORMALMAP UNITY_ENABLE_REFLECTION_BUFFERS UNITY_LIGHTMAP_FULL_HDR UNITY_LIGHT_PROBE_PROXY_VOLUME UNITY_PBS_USE_BRDF1 UNITY_SPECCUBE_BLENDING UNITY_SPECCUBE_BOX_PROJECTION UNITY_USE_DITHER_MASK_FOR_ALPHABLENDED_SHADOWS
Disabled keywords: FOG_EXP FOG_EXP2 FOG_LINEAR INSTANCING_ON SHADER_API_GLES30 UNITY_ASTC_NORMALMAP_ENCODING UNITY_COLORSPACE_GAMMA UNITY_FRAMEBUFFER_FETCH_AVAILABLE UNITY_HARDWARE_TIER1 UNITY_HARDWARE_TIER2 UNITY_HARDWARE_TIER3 UNITY_LIGHTMAP_DLDR_ENCODING UNITY_LIGHTMAP_RGBM_ENCODING UNITY_METAL_SHADOWS_USE_POINT_FILTERING UNITY_NO_DXT5nm UNITY_NO_SCREENSPACE_SHADOWS UNITY_PBS_USE_BRDF2 UNITY_PBS_USE_BRDF3 UNITY_PRETRANSFORM_TO_DISPLAY_ORIENTATION UNITY_UNIFIED_SHADER_PRECISION_MODEL UNITY_VIRTUAL_TEXTURING _ADDITIONAL_LIGHTS _ADDITIONAL_LIGHTS_VERTEX _ADDITIONAL_LIGHT_SHADOWS _DOUBLE_SIDED_LIGHTING _MAIN_LIGHT_SHADOWS _MAIN_LIGHT_SHADOWS_CASCADE _MIXED_LIGHTING_SUBTRACTIVE _RECEIVE_SHADOWS _SHADOWS_SOFT _STRAIGHT_ALPHA_INPUT
Spine-Sprite-ForwardPass-URP.hlsl(215)也有同样的问题出现
我使用的unity版本:2023.1.6.f1c1
spine runtime和URP UMP版本:3.8
Universal RP版本:15.0.6
我并不懂得Shader的编写语法,但还是进行了一定的理解和修复尝试。这个错误的描述看起来像是宏“OUTPUT_SH”调用时赋予的参数过少,我简单检查了Lighting.hlsl中该宏的定义:OUTPUT_SH(absolutePositionWS, normalWS, viewDir, OUT) OUT.xyz = SampleProbeSHVertex(absolutePositionWS, normalWS, viewDir)
而出现问题的两个hlsl当中对OUTPUT_SH的调用是这样的:
OUTPUT_SH(normalWS.xyz, output.vertexSH);
看起来确实是缺少一些参数?但URP UMP似乎在4.2版本依旧保持了这样的状态。
好吧,比起讲述我的摸索和猜测过程,也许我只该问我要如何解决这两个错误?是升级我的spine runtime版本,回退URP版本还是进行某些修改?