diff --git a/CHANGELOG.md b/CHANGELOG.md index 8212b464d..47fd19045 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -114,6 +114,7 @@ * Timeline extension package: Added static `EditorEvent` callback to allow editor scripts to react to animation events outside of play-mode. Register to the events via `Spine.Unity.Playables.SpineAnimationStateMixerBehaviour.EditorEvent += YourCallback;`. * URP Shaders: Added `Depth Write` property to shaders `Universal Render Pipeline/Spine/Skeleton` and `Universal Render Pipeline/Spine/Skeleton Lit`. Defaults to false to maintain existing behaviour. * Added `Animation Update` mode (called `UpdateTiming` in code) `In Late Update` for `SkeletonAnimation`, `SkeletonMecanim` and `SkeletonGraphic`. This allows you to update the `SkeletonMecanim` skeleton in the same frame that the Mecanim Animator updated its state, which happens between `Update` and `LateUpdate`. + * URP Shaders: Added URP "Blend Mode" shader variants for both URP 3D and URP 2D renderers. They are listed under shader name "Universal Render Pipeline/Spine/Blend Modes/" and "Universal Render Pipeline/2D/Spine/Blend Modes/" respectively. * **Breaking changes** * Made `SkeletonGraphic.unscaledTime` parameter protected, use the new property `UnscaledTime` instead. diff --git a/spine-unity/Modules/com.esotericsoftware.spine.urp-shaders/Shaders/2D/BlendModes.meta b/spine-unity/Modules/com.esotericsoftware.spine.urp-shaders/Shaders/2D/BlendModes.meta new file mode 100644 index 000000000..ef1a513d7 --- /dev/null +++ b/spine-unity/Modules/com.esotericsoftware.spine.urp-shaders/Shaders/2D/BlendModes.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 13578f887a568d846ab60366a57df135 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/spine-unity/Modules/com.esotericsoftware.spine.urp-shaders/Shaders/2D/BlendModes/Spine-Skeleton-Additive-URP-2D.shader b/spine-unity/Modules/com.esotericsoftware.spine.urp-shaders/Shaders/2D/BlendModes/Spine-Skeleton-Additive-URP-2D.shader new file mode 100644 index 000000000..2ad68fa20 --- /dev/null +++ b/spine-unity/Modules/com.esotericsoftware.spine.urp-shaders/Shaders/2D/BlendModes/Spine-Skeleton-Additive-URP-2D.shader @@ -0,0 +1,57 @@ +Shader "Universal Render Pipeline/2D/Spine/Blend Modes/Skeleton Additive" { + Properties { + _Color ("Tint Color", Color) = (1,1,1,1) + [NoScaleOffset] _MainTex ("MainTex", 2D) = "black" {} + [Toggle(_STRAIGHT_ALPHA_INPUT)] _StraightAlphaInput("Straight Alpha Texture", Int) = 0 + _Cutoff ("Shadow alpha cutoff", Range(0,1)) = 0.1 + [HideInInspector] _StencilRef("Stencil Reference", Float) = 1.0 + [HideInInspector][Enum(UnityEngine.Rendering.CompareFunction)] _StencilComp("Stencil Comparison", Float) = 8 // Set to Always as default + + // Outline properties are drawn via custom editor. + [HideInInspector] _OutlineWidth("Outline Width", Range(0,8)) = 3.0 + [HideInInspector] _OutlineColor("Outline Color", Color) = (1,1,0,1) + [HideInInspector] _OutlineReferenceTexWidth("Reference Texture Width", Int) = 1024 + [HideInInspector] _ThresholdEnd("Outline Threshold", Range(0,1)) = 0.25 + [HideInInspector] _OutlineSmoothness("Outline Smoothness", Range(0,1)) = 1.0 + [HideInInspector][MaterialToggle(_USE8NEIGHBOURHOOD_ON)] _Use8Neighbourhood("Sample 8 Neighbours", Float) = 1 + [HideInInspector] _OutlineOpaqueAlpha("Opaque Alpha", Range(0,1)) = 1.0 + [HideInInspector] _OutlineMipLevel("Outline Mip Level", Range(0,3)) = 0 + } + + SubShader { + Tags { "RenderPipeline" = "UniversalPipeline" "Queue"="Transparent" "IgnoreProjector"="True" "RenderType"="Transparent" } + LOD 100 + + Fog { Mode Off } + Cull Off + ZWrite Off + Blend One One + Lighting Off + + Stencil { + Ref[_StencilRef] + Comp[_StencilComp] + Pass Keep + } + + Pass { + Tags { "LightMode" = "Universal2D" } + + HLSLPROGRAM + #pragma vertex vert + #pragma fragment frag + #pragma shader_feature _ _STRAIGHT_ALPHA_INPUT + + #undef LIGHTMAP_ON + + #define USE_URP + #define fixed4 half4 + #define fixed3 half3 + #define fixed half + #include "../../Include/Spine-Input-BlendModes-URP.hlsl" + #include "../../Include/Spine-BlendModes-NormalPass-URP.hlsl" + ENDHLSL + } + } + CustomEditor "SpineShaderWithOutlineGUI" +} diff --git a/spine-unity/Modules/com.esotericsoftware.spine.urp-shaders/Shaders/2D/BlendModes/Spine-Skeleton-Additive-URP-2D.shader.meta b/spine-unity/Modules/com.esotericsoftware.spine.urp-shaders/Shaders/2D/BlendModes/Spine-Skeleton-Additive-URP-2D.shader.meta new file mode 100644 index 000000000..e5566eaff --- /dev/null +++ b/spine-unity/Modules/com.esotericsoftware.spine.urp-shaders/Shaders/2D/BlendModes/Spine-Skeleton-Additive-URP-2D.shader.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: 89db47a797aee6e41a98c42d53175ee0 +ShaderImporter: + externalObjects: {} + defaultTextures: [] + nonModifiableTextures: [] + preprocessorOverride: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/spine-unity/Modules/com.esotericsoftware.spine.urp-shaders/Shaders/2D/BlendModes/Spine-Skeleton-Multiply-URP-2D.shader b/spine-unity/Modules/com.esotericsoftware.spine.urp-shaders/Shaders/2D/BlendModes/Spine-Skeleton-Multiply-URP-2D.shader new file mode 100644 index 000000000..fb9dcb59d --- /dev/null +++ b/spine-unity/Modules/com.esotericsoftware.spine.urp-shaders/Shaders/2D/BlendModes/Spine-Skeleton-Multiply-URP-2D.shader @@ -0,0 +1,57 @@ +Shader "Universal Render Pipeline/2D/Spine/Blend Modes/Skeleton Multiply" { + Properties { + _Color ("Tint Color", Color) = (1,1,1,1) + [NoScaleOffset] _MainTex ("MainTex", 2D) = "black" {} + [Toggle(_STRAIGHT_ALPHA_INPUT)] _StraightAlphaInput("Straight Alpha Texture", Int) = 0 + _Cutoff ("Shadow alpha cutoff", Range(0,1)) = 0.1 + [HideInInspector] _StencilRef("Stencil Reference", Float) = 1.0 + [HideInInspector][Enum(UnityEngine.Rendering.CompareFunction)] _StencilComp("Stencil Comparison", Float) = 8 // Set to Always as default + + // Outline properties are drawn via custom editor. + [HideInInspector] _OutlineWidth("Outline Width", Range(0,8)) = 3.0 + [HideInInspector] _OutlineColor("Outline Color", Color) = (1,1,0,1) + [HideInInspector] _OutlineReferenceTexWidth("Reference Texture Width", Int) = 1024 + [HideInInspector] _ThresholdEnd("Outline Threshold", Range(0,1)) = 0.25 + [HideInInspector] _OutlineSmoothness("Outline Smoothness", Range(0,1)) = 1.0 + [HideInInspector][MaterialToggle(_USE8NEIGHBOURHOOD_ON)] _Use8Neighbourhood("Sample 8 Neighbours", Float) = 1 + [HideInInspector] _OutlineOpaqueAlpha("Opaque Alpha", Range(0,1)) = 1.0 + [HideInInspector] _OutlineMipLevel("Outline Mip Level", Range(0,3)) = 0 + } + + SubShader { + Tags { "RenderPipeline" = "UniversalPipeline" "Queue"="Transparent" "IgnoreProjector"="True" "RenderType"="Transparent" } + LOD 100 + + Fog { Mode Off } + Cull Off + ZWrite Off + Blend DstColor OneMinusSrcAlpha + Lighting Off + + Stencil { + Ref[_StencilRef] + Comp[_StencilComp] + Pass Keep + } + + Pass { + Tags { "LightMode" = "Universal2D" } + + HLSLPROGRAM + #pragma vertex vert + #pragma fragment frag + #pragma shader_feature _ _STRAIGHT_ALPHA_INPUT + + #undef LIGHTMAP_ON + + #define USE_URP + #define fixed4 half4 + #define fixed3 half3 + #define fixed half + #include "../../Include/Spine-Input-BlendModes-URP.hlsl" + #include "../../Include/Spine-BlendModes-NormalPass-URP.hlsl" + ENDHLSL + } + } + CustomEditor "SpineShaderWithOutlineGUI" +} diff --git a/spine-unity/Modules/com.esotericsoftware.spine.urp-shaders/Shaders/2D/BlendModes/Spine-Skeleton-Multiply-URP-2D.shader.meta b/spine-unity/Modules/com.esotericsoftware.spine.urp-shaders/Shaders/2D/BlendModes/Spine-Skeleton-Multiply-URP-2D.shader.meta new file mode 100644 index 000000000..fd972cc7f --- /dev/null +++ b/spine-unity/Modules/com.esotericsoftware.spine.urp-shaders/Shaders/2D/BlendModes/Spine-Skeleton-Multiply-URP-2D.shader.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: 9f560912e0cd8804db3fa22dc95d50b3 +ShaderImporter: + externalObjects: {} + defaultTextures: [] + nonModifiableTextures: [] + preprocessorOverride: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/spine-unity/Modules/com.esotericsoftware.spine.urp-shaders/Shaders/2D/BlendModes/Spine-Skeleton-Screen-URP-2D.shader b/spine-unity/Modules/com.esotericsoftware.spine.urp-shaders/Shaders/2D/BlendModes/Spine-Skeleton-Screen-URP-2D.shader new file mode 100644 index 000000000..b649c540e --- /dev/null +++ b/spine-unity/Modules/com.esotericsoftware.spine.urp-shaders/Shaders/2D/BlendModes/Spine-Skeleton-Screen-URP-2D.shader @@ -0,0 +1,57 @@ +Shader "Universal Render Pipeline/2D/Spine/Blend Modes/Skeleton Screen" { + Properties { + _Color ("Tint Color", Color) = (1,1,1,1) + [NoScaleOffset] _MainTex ("MainTex", 2D) = "black" {} + [Toggle(_STRAIGHT_ALPHA_INPUT)] _StraightAlphaInput("Straight Alpha Texture", Int) = 0 + _Cutoff ("Shadow alpha cutoff", Range(0,1)) = 0.1 + [HideInInspector] _StencilRef("Stencil Reference", Float) = 1.0 + [HideInInspector][Enum(UnityEngine.Rendering.CompareFunction)] _StencilComp("Stencil Comparison", Float) = 8 // Set to Always as default + + // Outline properties are drawn via custom editor. + [HideInInspector] _OutlineWidth("Outline Width", Range(0,8)) = 3.0 + [HideInInspector] _OutlineColor("Outline Color", Color) = (1,1,0,1) + [HideInInspector] _OutlineReferenceTexWidth("Reference Texture Width", Int) = 1024 + [HideInInspector] _ThresholdEnd("Outline Threshold", Range(0,1)) = 0.25 + [HideInInspector] _OutlineSmoothness("Outline Smoothness", Range(0,1)) = 1.0 + [HideInInspector][MaterialToggle(_USE8NEIGHBOURHOOD_ON)] _Use8Neighbourhood("Sample 8 Neighbours", Float) = 1 + [HideInInspector] _OutlineOpaqueAlpha("Opaque Alpha", Range(0,1)) = 1.0 + [HideInInspector] _OutlineMipLevel("Outline Mip Level", Range(0,3)) = 0 + } + + SubShader { + Tags { "RenderPipeline" = "UniversalPipeline" "Queue"="Transparent" "IgnoreProjector"="True" "RenderType"="Transparent" } + LOD 100 + + Fog { Mode Off } + Cull Off + ZWrite Off + Blend One OneMinusSrcColor + Lighting Off + + Stencil { + Ref[_StencilRef] + Comp[_StencilComp] + Pass Keep + } + + Pass { + Tags { "LightMode" = "Universal2D" } + + HLSLPROGRAM + #pragma vertex vert + #pragma fragment frag + #pragma shader_feature _ _STRAIGHT_ALPHA_INPUT + + #undef LIGHTMAP_ON + + #define USE_URP + #define fixed4 half4 + #define fixed3 half3 + #define fixed half + #include "../../Include/Spine-Input-BlendModes-URP.hlsl" + #include "../../Include/Spine-BlendModes-NormalPass-URP.hlsl" + ENDHLSL + } + } + CustomEditor "SpineShaderWithOutlineGUI" +} diff --git a/spine-unity/Modules/com.esotericsoftware.spine.urp-shaders/Shaders/2D/BlendModes/Spine-Skeleton-Screen-URP-2D.shader.meta b/spine-unity/Modules/com.esotericsoftware.spine.urp-shaders/Shaders/2D/BlendModes/Spine-Skeleton-Screen-URP-2D.shader.meta new file mode 100644 index 000000000..b189e896f --- /dev/null +++ b/spine-unity/Modules/com.esotericsoftware.spine.urp-shaders/Shaders/2D/BlendModes/Spine-Skeleton-Screen-URP-2D.shader.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: 34092fc5b4942fc419d3366436419178 +ShaderImporter: + externalObjects: {} + defaultTextures: [] + nonModifiableTextures: [] + preprocessorOverride: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/spine-unity/Modules/com.esotericsoftware.spine.urp-shaders/Shaders/BlendModes.meta b/spine-unity/Modules/com.esotericsoftware.spine.urp-shaders/Shaders/BlendModes.meta new file mode 100644 index 000000000..5d0ab5d7f --- /dev/null +++ b/spine-unity/Modules/com.esotericsoftware.spine.urp-shaders/Shaders/BlendModes.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 52b9745cd8748764fbfb71adf0188a58 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/spine-unity/Modules/com.esotericsoftware.spine.urp-shaders/Shaders/BlendModes/Spine-Skeleton-Additive-URP.shader b/spine-unity/Modules/com.esotericsoftware.spine.urp-shaders/Shaders/BlendModes/Spine-Skeleton-Additive-URP.shader new file mode 100644 index 000000000..e3522a414 --- /dev/null +++ b/spine-unity/Modules/com.esotericsoftware.spine.urp-shaders/Shaders/BlendModes/Spine-Skeleton-Additive-URP.shader @@ -0,0 +1,95 @@ +Shader "Universal Render Pipeline/Spine/Blend Modes/Skeleton Additive" { + Properties { + _Color ("Tint Color", Color) = (1,1,1,1) + [NoScaleOffset] _MainTex ("MainTex", 2D) = "black" {} + [Toggle(_STRAIGHT_ALPHA_INPUT)] _StraightAlphaInput("Straight Alpha Texture", Int) = 0 + _Cutoff ("Shadow alpha cutoff", Range(0,1)) = 0.1 + [HideInInspector] _StencilRef("Stencil Reference", Float) = 1.0 + [HideInInspector][Enum(UnityEngine.Rendering.CompareFunction)] _StencilComp("Stencil Comparison", Float) = 8 // Set to Always as default + + // Outline properties are drawn via custom editor. + [HideInInspector] _OutlineWidth("Outline Width", Range(0,8)) = 3.0 + [HideInInspector] _OutlineColor("Outline Color", Color) = (1,1,0,1) + [HideInInspector] _OutlineReferenceTexWidth("Reference Texture Width", Int) = 1024 + [HideInInspector] _ThresholdEnd("Outline Threshold", Range(0,1)) = 0.25 + [HideInInspector] _OutlineSmoothness("Outline Smoothness", Range(0,1)) = 1.0 + [HideInInspector][MaterialToggle(_USE8NEIGHBOURHOOD_ON)] _Use8Neighbourhood("Sample 8 Neighbours", Float) = 1 + [HideInInspector] _OutlineOpaqueAlpha("Opaque Alpha", Range(0,1)) = 1.0 + [HideInInspector] _OutlineMipLevel("Outline Mip Level", Range(0,3)) = 0 + } + + SubShader { + Tags { "RenderPipeline" = "UniversalPipeline" "Queue"="Transparent" "IgnoreProjector"="True" "RenderType"="Transparent" } + LOD 100 + + Fog { Mode Off } + Cull Off + ZWrite Off + Blend One One + Lighting Off + + Stencil { + Ref[_StencilRef] + Comp[_StencilComp] + Pass Keep + } + + Pass { + Name "Forward" + Tags{"LightMode" = "UniversalForward"} + HLSLPROGRAM + #pragma vertex vert + #pragma fragment frag + #pragma shader_feature _ _STRAIGHT_ALPHA_INPUT + + #undef LIGHTMAP_ON + + #define USE_URP + #define fixed4 half4 + #define fixed3 half3 + #define fixed half + #include "../Include/Spine-Input-BlendModes-URP.hlsl" + #include "../Include/Spine-BlendModes-NormalPass-URP.hlsl" + ENDHLSL + } + + Pass + { + Name "ShadowCaster" + Tags{"LightMode" = "ShadowCaster"} + + ZWrite On + ColorMask 0 + ZTest LEqual + Cull Off + + HLSLPROGRAM + // Required to compile gles 2.0 with standard srp library + #pragma prefer_hlslcc gles + #pragma exclude_renderers d3d11_9x + #pragma target 2.0 + + // ------------------------------------- + // Material Keywords + #pragma shader_feature _ALPHATEST_ON + + //-------------------------------------- + // GPU Instancing + #pragma multi_compile_instancing + #pragma shader_feature _SMOOTHNESS_TEXTURE_ALBEDO_CHANNEL_A + + #pragma vertex ShadowPassVertexSkeletonLit + #pragma fragment ShadowPassFragmentSkeletonLit + + #define USE_URP + #define fixed4 half4 + #define fixed3 half3 + #define fixed half + #include "../Include/Spine-Input-BlendModes-URP.hlsl" + #include "../Include/Spine-SkeletonLit-ShadowCasterPass-URP.hlsl" + + ENDHLSL + } + } + CustomEditor "SpineShaderWithOutlineGUI" +} diff --git a/spine-unity/Modules/com.esotericsoftware.spine.urp-shaders/Shaders/BlendModes/Spine-Skeleton-Additive-URP.shader.meta b/spine-unity/Modules/com.esotericsoftware.spine.urp-shaders/Shaders/BlendModes/Spine-Skeleton-Additive-URP.shader.meta new file mode 100644 index 000000000..567d12f41 --- /dev/null +++ b/spine-unity/Modules/com.esotericsoftware.spine.urp-shaders/Shaders/BlendModes/Spine-Skeleton-Additive-URP.shader.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: f7dbcf8ef3270e04898af42843a4def2 +ShaderImporter: + externalObjects: {} + defaultTextures: [] + nonModifiableTextures: [] + preprocessorOverride: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/spine-unity/Modules/com.esotericsoftware.spine.urp-shaders/Shaders/BlendModes/Spine-Skeleton-Multiply-URP.shader b/spine-unity/Modules/com.esotericsoftware.spine.urp-shaders/Shaders/BlendModes/Spine-Skeleton-Multiply-URP.shader new file mode 100644 index 000000000..782a76791 --- /dev/null +++ b/spine-unity/Modules/com.esotericsoftware.spine.urp-shaders/Shaders/BlendModes/Spine-Skeleton-Multiply-URP.shader @@ -0,0 +1,59 @@ +Shader "Universal Render Pipeline/Spine/Blend Modes/Skeleton Multiply" { + Properties { + _Color ("Tint Color", Color) = (1,1,1,1) + [NoScaleOffset] _MainTex ("MainTex", 2D) = "black" {} + [Toggle(_STRAIGHT_ALPHA_INPUT)] _StraightAlphaInput("Straight Alpha Texture", Int) = 0 + _Cutoff ("Shadow alpha cutoff", Range(0,1)) = 0.1 + [HideInInspector] _StencilRef("Stencil Reference", Float) = 1.0 + [HideInInspector][Enum(UnityEngine.Rendering.CompareFunction)] _StencilComp("Stencil Comparison", Float) = 8 // Set to Always as default + + // Outline properties are drawn via custom editor. + [HideInInspector] _OutlineWidth("Outline Width", Range(0,8)) = 3.0 + [HideInInspector] _OutlineColor("Outline Color", Color) = (1,1,0,1) + [HideInInspector] _OutlineReferenceTexWidth("Reference Texture Width", Int) = 1024 + [HideInInspector] _ThresholdEnd("Outline Threshold", Range(0,1)) = 0.25 + [HideInInspector] _OutlineSmoothness("Outline Smoothness", Range(0,1)) = 1.0 + [HideInInspector][MaterialToggle(_USE8NEIGHBOURHOOD_ON)] _Use8Neighbourhood("Sample 8 Neighbours", Float) = 1 + [HideInInspector] _OutlineOpaqueAlpha("Opaque Alpha", Range(0,1)) = 1.0 + [HideInInspector] _OutlineMipLevel("Outline Mip Level", Range(0,3)) = 0 + } + + SubShader { + Tags { "RenderPipeline" = "UniversalPipeline" "Queue"="Transparent" "IgnoreProjector"="True" "RenderType"="Transparent" } + LOD 100 + + Fog { Mode Off } + Cull Off + ZWrite Off + Blend DstColor OneMinusSrcAlpha + Lighting Off + + Stencil { + Ref[_StencilRef] + Comp[_StencilComp] + Pass Keep + } + + Pass { + Name "Forward" + Tags{"LightMode" = "UniversalForward"} + HLSLPROGRAM + #pragma vertex vert + #pragma fragment frag + #pragma shader_feature _ _STRAIGHT_ALPHA_INPUT + + #undef LIGHTMAP_ON + + #define USE_URP + #define fixed4 half4 + #define fixed3 half3 + #define fixed half + #include "../Include/Spine-Input-BlendModes-URP.hlsl" + #include "../Include/Spine-BlendModes-NormalPass-URP.hlsl" + ENDHLSL + } + + UsePass "Universal Render Pipeline/Spine/Blend Modes/Skeleton Additive/SHADOWCASTER" + } + CustomEditor "SpineShaderWithOutlineGUI" +} diff --git a/spine-unity/Modules/com.esotericsoftware.spine.urp-shaders/Shaders/BlendModes/Spine-Skeleton-Multiply-URP.shader.meta b/spine-unity/Modules/com.esotericsoftware.spine.urp-shaders/Shaders/BlendModes/Spine-Skeleton-Multiply-URP.shader.meta new file mode 100644 index 000000000..074af5761 --- /dev/null +++ b/spine-unity/Modules/com.esotericsoftware.spine.urp-shaders/Shaders/BlendModes/Spine-Skeleton-Multiply-URP.shader.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: 352b460172201914b860515eb4524dbc +ShaderImporter: + externalObjects: {} + defaultTextures: [] + nonModifiableTextures: [] + preprocessorOverride: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/spine-unity/Modules/com.esotericsoftware.spine.urp-shaders/Shaders/BlendModes/Spine-Skeleton-Screen-URP.shader b/spine-unity/Modules/com.esotericsoftware.spine.urp-shaders/Shaders/BlendModes/Spine-Skeleton-Screen-URP.shader new file mode 100644 index 000000000..86166f4b9 --- /dev/null +++ b/spine-unity/Modules/com.esotericsoftware.spine.urp-shaders/Shaders/BlendModes/Spine-Skeleton-Screen-URP.shader @@ -0,0 +1,59 @@ +Shader "Universal Render Pipeline/Spine/Blend Modes/Skeleton Screen" { + Properties { + _Color ("Tint Color", Color) = (1,1,1,1) + [NoScaleOffset] _MainTex ("MainTex", 2D) = "black" {} + [Toggle(_STRAIGHT_ALPHA_INPUT)] _StraightAlphaInput("Straight Alpha Texture", Int) = 0 + _Cutoff ("Shadow alpha cutoff", Range(0,1)) = 0.1 + [HideInInspector] _StencilRef("Stencil Reference", Float) = 1.0 + [HideInInspector][Enum(UnityEngine.Rendering.CompareFunction)] _StencilComp("Stencil Comparison", Float) = 8 // Set to Always as default + + // Outline properties are drawn via custom editor. + [HideInInspector] _OutlineWidth("Outline Width", Range(0,8)) = 3.0 + [HideInInspector] _OutlineColor("Outline Color", Color) = (1,1,0,1) + [HideInInspector] _OutlineReferenceTexWidth("Reference Texture Width", Int) = 1024 + [HideInInspector] _ThresholdEnd("Outline Threshold", Range(0,1)) = 0.25 + [HideInInspector] _OutlineSmoothness("Outline Smoothness", Range(0,1)) = 1.0 + [HideInInspector][MaterialToggle(_USE8NEIGHBOURHOOD_ON)] _Use8Neighbourhood("Sample 8 Neighbours", Float) = 1 + [HideInInspector] _OutlineOpaqueAlpha("Opaque Alpha", Range(0,1)) = 1.0 + [HideInInspector] _OutlineMipLevel("Outline Mip Level", Range(0,3)) = 0 + } + + SubShader { + Tags { "RenderPipeline" = "UniversalPipeline" "Queue"="Transparent" "IgnoreProjector"="True" "RenderType"="Transparent" } + LOD 100 + + Fog { Mode Off } + Cull Off + ZWrite Off + Blend One OneMinusSrcColor + Lighting Off + + Stencil { + Ref[_StencilRef] + Comp[_StencilComp] + Pass Keep + } + + Pass { + Name "Forward" + Tags{"LightMode" = "UniversalForward"} + HLSLPROGRAM + #pragma vertex vert + #pragma fragment frag + #pragma shader_feature _ _STRAIGHT_ALPHA_INPUT + + #undef LIGHTMAP_ON + + #define USE_URP + #define fixed4 half4 + #define fixed3 half3 + #define fixed half + #include "../Include/Spine-Input-BlendModes-URP.hlsl" + #include "../Include/Spine-BlendModes-NormalPass-URP.hlsl" + ENDHLSL + } + + UsePass "Universal Render Pipeline/Spine/Blend Modes/Skeleton Additive/SHADOWCASTER" + } + CustomEditor "SpineShaderWithOutlineGUI" +} diff --git a/spine-unity/Modules/com.esotericsoftware.spine.urp-shaders/Shaders/BlendModes/Spine-Skeleton-Screen-URP.shader.meta b/spine-unity/Modules/com.esotericsoftware.spine.urp-shaders/Shaders/BlendModes/Spine-Skeleton-Screen-URP.shader.meta new file mode 100644 index 000000000..276ef6363 --- /dev/null +++ b/spine-unity/Modules/com.esotericsoftware.spine.urp-shaders/Shaders/BlendModes/Spine-Skeleton-Screen-URP.shader.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: 6627ec7a6b4481249bc314b0ccf78268 +ShaderImporter: + externalObjects: {} + defaultTextures: [] + nonModifiableTextures: [] + preprocessorOverride: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/spine-unity/Modules/com.esotericsoftware.spine.urp-shaders/Shaders/Include/Spine-BlendModes-NormalPass-URP.hlsl b/spine-unity/Modules/com.esotericsoftware.spine.urp-shaders/Shaders/Include/Spine-BlendModes-NormalPass-URP.hlsl new file mode 100644 index 000000000..eeffc7166 --- /dev/null +++ b/spine-unity/Modules/com.esotericsoftware.spine.urp-shaders/Shaders/Include/Spine-BlendModes-NormalPass-URP.hlsl @@ -0,0 +1,40 @@ +#ifndef BLENDMODES_NORMAL_PASS_URP_INCLUDED +#define BLENDMODES_NORMAL_PASS_URP_INCLUDED + +#include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/Core.hlsl" +#include "Packages/com.unity.render-pipelines.core/ShaderLibrary/CommonMaterial.hlsl" +#include "SpineCoreShaders/Spine-Common.cginc" +#include "SpineCoreShaders/Spine-Skeleton-Tint-Common.cginc" + +struct VertexInput { + float3 pos : POSITION; + float2 uv : TEXCOORD0; + float4 vertexColor : COLOR; +}; + +struct VertexOutput { + float4 pos : SV_POSITION; + float2 uv : TEXCOORD0; + float4 vertexColor : COLOR; +}; + +VertexOutput vert(VertexInput v) { + VertexOutput o; + float3 positionWS = TransformObjectToWorld(v.pos); + o.pos = TransformWorldToHClip(positionWS); + o.uv = v.uv; + o.vertexColor = PMAGammaToTargetSpace(v.vertexColor) * float4(_Color.rgb * _Color.a, _Color.a); // Combine a PMA version of _Color with vertexColor. + return o; +} + +float4 frag(VertexOutput i) : SV_Target{ + float4 texColor = tex2D(_MainTex, i.uv); + + #if defined(_STRAIGHT_ALPHA_INPUT) + texColor.rgb *= texColor.a; + #endif + + return (texColor * i.vertexColor); +} + +#endif diff --git a/spine-unity/Modules/com.esotericsoftware.spine.urp-shaders/Shaders/Include/Spine-BlendModes-NormalPass-URP.hlsl.meta b/spine-unity/Modules/com.esotericsoftware.spine.urp-shaders/Shaders/Include/Spine-BlendModes-NormalPass-URP.hlsl.meta new file mode 100644 index 000000000..13c7872cf --- /dev/null +++ b/spine-unity/Modules/com.esotericsoftware.spine.urp-shaders/Shaders/Include/Spine-BlendModes-NormalPass-URP.hlsl.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: 444419be824cb1d4482a06b558b0892a +ShaderImporter: + externalObjects: {} + defaultTextures: [] + nonModifiableTextures: [] + preprocessorOverride: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/spine-unity/Modules/com.esotericsoftware.spine.urp-shaders/Shaders/Include/Spine-Input-BlendModes-URP.hlsl b/spine-unity/Modules/com.esotericsoftware.spine.urp-shaders/Shaders/Include/Spine-Input-BlendModes-URP.hlsl new file mode 100644 index 000000000..5cf781a1f --- /dev/null +++ b/spine-unity/Modules/com.esotericsoftware.spine.urp-shaders/Shaders/Include/Spine-Input-BlendModes-URP.hlsl @@ -0,0 +1,21 @@ +#ifndef URP_INPUT_BLEND_MODES_INCLUDED +#define URP_INPUT_BLEND_MODES_INCLUDED + +#include "Packages/com.unity.render-pipelines.core/ShaderLibrary/Common.hlsl" + +//////////////////////////////////////// +// Defines +// +#undef LIGHTMAP_ON + +CBUFFER_START(UnityPerMaterial) + +float4 _MainTex_ST; +half _Cutoff; +half4 _Color; + +CBUFFER_END + +sampler2D _MainTex; + +#endif diff --git a/spine-unity/Modules/com.esotericsoftware.spine.urp-shaders/Shaders/Include/Spine-Input-BlendModes-URP.hlsl.meta b/spine-unity/Modules/com.esotericsoftware.spine.urp-shaders/Shaders/Include/Spine-Input-BlendModes-URP.hlsl.meta new file mode 100644 index 000000000..c697bd74f --- /dev/null +++ b/spine-unity/Modules/com.esotericsoftware.spine.urp-shaders/Shaders/Include/Spine-Input-BlendModes-URP.hlsl.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: 7fbcfe81149b96e458243062a65e31b4 +ShaderImporter: + externalObjects: {} + defaultTextures: [] + nonModifiableTextures: [] + preprocessorOverride: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/spine-unity/Modules/com.esotericsoftware.spine.urp-shaders/package.json b/spine-unity/Modules/com.esotericsoftware.spine.urp-shaders/package.json index 38fa175df..d42db0f0a 100644 --- a/spine-unity/Modules/com.esotericsoftware.spine.urp-shaders/package.json +++ b/spine-unity/Modules/com.esotericsoftware.spine.urp-shaders/package.json @@ -2,7 +2,7 @@ "name": "com.esotericsoftware.spine.urp-shaders", "displayName": "Spine Universal RP Shaders", "description": "This plugin provides universal render pipeline (URP) shaders for the spine-unity runtime.\n\nPrerequisites:\nIt requires a working installation of the spine-unity runtime, version 4.1.\n(See http://esotericsoftware.com/git/spine-runtimes/spine-unity)", - "version": "4.1.23", + "version": "4.1.24", "unity": "2019.3", "author": { "name": "Esoteric Software",