Unity Spine 3.8 (URP) 踩坑(Shader报错修改)

7 篇文章 0 订阅
2 篇文章 0 订阅

今天搜索spine优化,看到一篇文章项目导入多个Spine动画 合批 降低DrawCall -- UWA问答 | 游戏开发者互动问答社区 | 侑虎科技

提供了新思路,打算尝试一下URP。但美术使用的spine版本是3.8,项目用的Unity2021.3.11f1c2,直接导入spine URP包,shader报错:half4 不能转成 SurfaceData2D;遂改下并记录:

Spine-SkeletonLit-URP-2D.shader

 #include "Packages/com.unity.render- 
pipelines.universal/Shaders/2D/Include/CombinedShapeLightShared.hlsl"

			half4 CombinedShapeLightFragment(Varyings i) : SV_Target
			{
				half4 tex = SAMPLE_TEXTURE2D(_MainTex, sampler_MainTex, i.uv);

				half4 main;
				#if defined(_STRAIGHT_ALPHA_INPUT)
				main.rgb = tex.rgb * i.color.rgb * tex.a;
				#else
				main.rgb = tex.rgb * i.color.rgb;
				#endif
				main.a = tex.a * i.color.a;

				half4 mask = SAMPLE_TEXTURE2D(_MaskTex, sampler_MaskTex, i.uv);
                return CombinedShapeLightShared(main, mask, i.lightingUV);
			}

修改后:
 

#include "Packages/com.unity.render-pipelines.universal/Shaders/2D/Include/CombinedShapeLightShared.hlsl"

			half4 CombinedShapeLightFragment(Varyings i) : SV_Target
			{
				half4 tex = SAMPLE_TEXTURE2D(_MainTex, sampler_MainTex, i.uv);

				half4 main;
				#if defined(_STRAIGHT_ALPHA_INPUT)
				main.rgb = tex.rgb * i.color.rgb * tex.a;
				#else
				main.rgb = tex.rgb * i.color.rgb;
				#endif
				main.a = tex.a * i.color.a;

				half4 mask = SAMPLE_TEXTURE2D(_MaskTex, sampler_MaskTex, i.uv);
#if UNITY_VERSION  < 202120
				return half4(CombinedShapeLightShared(half4(main.rgb, 1), mask, i.lightingUV).rgb, main.a);
#else
				SurfaceData2D surfaceData;
				InputData2D inputData;
				surfaceData.albedo = main.rgb;
				surfaceData.alpha = 1;
				surfaceData.mask = mask;
				inputData.uv = i.uv;
				inputData.lightingUV = i.lightingUV;
				return half4(CombinedShapeLightShared(surfaceData, inputData).rgb, main.a);
#endif
				//return CombinedShapeLightShared(main, mask, i.lightingUV);
			}

Spine-Sprite-StandardPass-URP-2D.hlsl 也报这个错,也是同样的改法即可

  • 3
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: spine-unity-3.8.99是Spine软件针对Unity引擎开发的一个版本。Spine是一款功能强大的2D骨骼动画编辑器,能够帮助开发者创建流畅、逼真的2D角色动画。而Unity引擎则是一款广泛应用于游戏开发的跨平台开发工具。 spine-unity-3.8.99的发布主要是为了提供更好的兼容性和功能性。这个版本可能修复了一些之前版本中存在的问题,改进了软件的稳定性和性能表现。同时,针对Unity引擎的特性和功能,spine-unity-3.8.99也可能做了一些适配和优化,以便更好地集成和使用Spine动画。 此外,spine-unity-3.8.99可能还增加了一些新的特性和工具,以提供更多的选项和灵活性,方便开发者根据自己的需求定制和优化动画效果。这样,开发者可以更加方便地在Unity引擎中使用Spine来制作高质量、流畅的2D角色动画,为游戏添加更多的细节和魅力。 总的来说,spine-unity-3.8.99的发布是为了进一步提升SpineUnity引擎中的使用体验,使开发者能够更加方便地创建出更加生动、精美的2D角色动画,并为游戏提供更多的互动性和视觉效果。 ### 回答2: spine-unity-3.8.99是Spine软件的一个版本。Spine是一款用于创建2D骨骼动画的软件,它允许用户通过设置骨骼结构和绘制动画关键帧来制作复杂的角色动画。 spine-unity-3.8.99是Spine软件的Unity插件版本。Unity是一种强大的跨平台游戏引擎,它支持2D和3D游戏的开发,并且有广泛的用户和社区支持。通过将Spine插件集成到Unity中,开发者可以使用Spine的骨骼动画功能来制作和控制游戏中的角色动画。 spine-unity-3.8.99可能是SpineUnity之间的一个特定版本兼容性的标识。由于SpineUnity都在不断发展和升级,为了确保Spine插件与Unity引擎的版本相匹配,Spine团队会发布适用于不同Unity版本的Spine插件版本。这样,使用Spine插件在开发过程中可以避免一些潜在的兼容性问题。 总结来说,spine-unity-3.8.99是Spine软件的Unity插件版本,提供了Spine骨骼动画的功能和控制,并且在特定的版次中与Unity引擎兼容。 ### 回答3: spine-unity-3.8.99是一个用于Unity引擎的插件,用于支持Spine骨骼动画。Spine是一个2D骨骼动画编辑器,它允许开发者创建复杂的动态角色动画。 spine-unity-3.8.99提供了Unity引擎与Spine的无缝集成,使开发人员可以在Unity中直接使用Spine创建的骨骼动画。这个插件包含了一系列用于呈现、控制和优化动画的组件和功能。 使用spine-unity-3.8.99,开发者可以在Unity中轻松导入Spine动画文件,并通过Unity的编辑器界面进行编辑和调整。插件提供了一组工具,帮助用户在运行时控制动画的播放、循环、混合、绑定事件和触发动画等。同时,它还提供了优化功能,以保证动画在运行时的性能和效果。 spine-unity-3.8.99还支持与Unity其他功能的无缝集成,如粒子效果、物理引擎、碰撞检测等。这使得开发人员可以创建更加丰富多样的动画效果,并在游戏中实现更高的互动性和流畅度。 总之,spine-unity-3.8.99是一个强大的插件,为开发者提供了在Unity中使用Spine骨骼动画的便利。通过其丰富的组件和功能,开发人员可以更好地实现游戏中的复杂动画效果,提高游戏的视觉吸引力和用户体验。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值