mirror of
https://github.com/EsotericSoftware/spine-runtimes.git
synced 2026-02-28 20:51:38 +08:00
[unity] Moved common Spine/Blend shader functionality to shared include files. Closes #1721.
This commit is contained in:
parent
2b85114d54
commit
7e440c28ae
@ -43,45 +43,8 @@ Shader "Spine/Blend Modes/Skeleton PMA Additive" {
|
|||||||
|
|
||||||
Pass {
|
Pass {
|
||||||
Name "Normal"
|
Name "Normal"
|
||||||
|
|
||||||
CGPROGRAM
|
CGPROGRAM
|
||||||
#pragma shader_feature _ _STRAIGHT_ALPHA_INPUT
|
#include "../CGIncludes/Spine-BlendModes-NormalPass.cginc"
|
||||||
#pragma vertex vert
|
|
||||||
#pragma fragment frag
|
|
||||||
#include "UnityCG.cginc"
|
|
||||||
#include "../CGIncludes/Spine-Common.cginc"
|
|
||||||
uniform sampler2D _MainTex;
|
|
||||||
uniform float4 _Color;
|
|
||||||
|
|
||||||
struct VertexInput {
|
|
||||||
float4 vertex : 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;
|
|
||||||
o.pos = UnityObjectToClipPos(v.vertex);
|
|
||||||
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);
|
|
||||||
}
|
|
||||||
ENDCG
|
ENDCG
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -94,35 +57,7 @@ Shader "Spine/Blend Modes/Skeleton PMA Additive" {
|
|||||||
ZTest LEqual
|
ZTest LEqual
|
||||||
|
|
||||||
CGPROGRAM
|
CGPROGRAM
|
||||||
#pragma vertex vert
|
#include "../CGIncludes/Spine-BlendModes-ShadowCasterPass.cginc"
|
||||||
#pragma fragment frag
|
|
||||||
#pragma multi_compile_shadowcaster
|
|
||||||
#pragma fragmentoption ARB_precision_hint_fastest
|
|
||||||
#include "UnityCG.cginc"
|
|
||||||
struct v2f {
|
|
||||||
V2F_SHADOW_CASTER;
|
|
||||||
float4 uvAndAlpha : TEXCOORD1;
|
|
||||||
};
|
|
||||||
|
|
||||||
uniform float4 _MainTex_ST;
|
|
||||||
|
|
||||||
v2f vert (appdata_base v, float4 vertexColor : COLOR) {
|
|
||||||
v2f o;
|
|
||||||
TRANSFER_SHADOW_CASTER(o)
|
|
||||||
o.uvAndAlpha.xy = TRANSFORM_TEX(v.texcoord, _MainTex);
|
|
||||||
o.uvAndAlpha.z = 0;
|
|
||||||
o.uvAndAlpha.a = vertexColor.a;
|
|
||||||
return o;
|
|
||||||
}
|
|
||||||
|
|
||||||
uniform sampler2D _MainTex;
|
|
||||||
uniform fixed _Cutoff;
|
|
||||||
|
|
||||||
float4 frag (v2f i) : SV_Target {
|
|
||||||
fixed4 texcol = tex2D(_MainTex, i.uvAndAlpha.xy);
|
|
||||||
clip(texcol.a * i.uvAndAlpha.a - _Cutoff);
|
|
||||||
SHADOW_CASTER_FRAGMENT(i)
|
|
||||||
}
|
|
||||||
ENDCG
|
ENDCG
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -43,86 +43,21 @@ Shader "Spine/Blend Modes/Skeleton PMA Multiply" {
|
|||||||
|
|
||||||
Pass {
|
Pass {
|
||||||
Name "Normal"
|
Name "Normal"
|
||||||
|
|
||||||
CGPROGRAM
|
CGPROGRAM
|
||||||
#pragma shader_feature _ _STRAIGHT_ALPHA_INPUT
|
#include "../CGIncludes/Spine-BlendModes-NormalPass.cginc"
|
||||||
#pragma vertex vert
|
|
||||||
#pragma fragment frag
|
|
||||||
#include "UnityCG.cginc"
|
|
||||||
#include "../CGIncludes/Spine-Common.cginc"
|
|
||||||
uniform sampler2D _MainTex;
|
|
||||||
uniform float4 _Color;
|
|
||||||
|
|
||||||
struct VertexInput {
|
|
||||||
float4 vertex : 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;
|
|
||||||
o.pos = UnityObjectToClipPos(v.vertex);
|
|
||||||
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);
|
|
||||||
}
|
|
||||||
ENDCG
|
ENDCG
|
||||||
}
|
}
|
||||||
|
|
||||||
Pass {
|
Pass {
|
||||||
Name "Caster"
|
Name "Caster"
|
||||||
Tags { "LightMode"="ShadowCaster" }
|
Tags { "LightMode" = "ShadowCaster" }
|
||||||
Offset 1, 1
|
Offset 1, 1
|
||||||
|
|
||||||
ZWrite On
|
ZWrite On
|
||||||
ZTest LEqual
|
ZTest LEqual
|
||||||
|
|
||||||
CGPROGRAM
|
CGPROGRAM
|
||||||
#pragma vertex vert
|
#include "../CGIncludes/Spine-BlendModes-ShadowCasterPass.cginc"
|
||||||
#pragma fragment frag
|
|
||||||
#pragma multi_compile_shadowcaster
|
|
||||||
#pragma fragmentoption ARB_precision_hint_fastest
|
|
||||||
#include "UnityCG.cginc"
|
|
||||||
struct v2f {
|
|
||||||
V2F_SHADOW_CASTER;
|
|
||||||
float4 uvAndAlpha : TEXCOORD1;
|
|
||||||
};
|
|
||||||
|
|
||||||
uniform float4 _MainTex_ST;
|
|
||||||
|
|
||||||
v2f vert (appdata_base v, float4 vertexColor : COLOR) {
|
|
||||||
v2f o;
|
|
||||||
TRANSFER_SHADOW_CASTER(o)
|
|
||||||
o.uvAndAlpha.xy = TRANSFORM_TEX(v.texcoord, _MainTex);
|
|
||||||
o.uvAndAlpha.z = 0;
|
|
||||||
o.uvAndAlpha.a = vertexColor.a;
|
|
||||||
return o;
|
|
||||||
}
|
|
||||||
|
|
||||||
uniform sampler2D _MainTex;
|
|
||||||
uniform fixed _Cutoff;
|
|
||||||
|
|
||||||
float4 frag (v2f i) : SV_Target {
|
|
||||||
fixed4 texcol = tex2D(_MainTex, i.uvAndAlpha.xy);
|
|
||||||
clip(texcol.a * i.uvAndAlpha.a - _Cutoff);
|
|
||||||
SHADOW_CASTER_FRAGMENT(i)
|
|
||||||
}
|
|
||||||
ENDCG
|
ENDCG
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -43,86 +43,21 @@ Shader "Spine/Blend Modes/Skeleton PMA Screen" {
|
|||||||
|
|
||||||
Pass {
|
Pass {
|
||||||
Name "Normal"
|
Name "Normal"
|
||||||
|
|
||||||
CGPROGRAM
|
CGPROGRAM
|
||||||
#pragma shader_feature _ _STRAIGHT_ALPHA_INPUT
|
#include "../CGIncludes/Spine-BlendModes-NormalPass.cginc"
|
||||||
#pragma vertex vert
|
|
||||||
#pragma fragment frag
|
|
||||||
#include "UnityCG.cginc"
|
|
||||||
#include "../CGIncludes/Spine-Common.cginc"
|
|
||||||
uniform sampler2D _MainTex;
|
|
||||||
uniform float4 _Color;
|
|
||||||
|
|
||||||
struct VertexInput {
|
|
||||||
float4 vertex : 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;
|
|
||||||
o.pos = UnityObjectToClipPos(v.vertex);
|
|
||||||
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);
|
|
||||||
}
|
|
||||||
ENDCG
|
ENDCG
|
||||||
}
|
}
|
||||||
|
|
||||||
Pass {
|
Pass {
|
||||||
Name "Caster"
|
Name "Caster"
|
||||||
Tags { "LightMode"="ShadowCaster" }
|
Tags { "LightMode" = "ShadowCaster" }
|
||||||
Offset 1, 1
|
Offset 1, 1
|
||||||
|
|
||||||
ZWrite On
|
ZWrite On
|
||||||
ZTest LEqual
|
ZTest LEqual
|
||||||
|
|
||||||
CGPROGRAM
|
CGPROGRAM
|
||||||
#pragma vertex vert
|
#include "../CGIncludes/Spine-BlendModes-ShadowCasterPass.cginc"
|
||||||
#pragma fragment frag
|
|
||||||
#pragma multi_compile_shadowcaster
|
|
||||||
#pragma fragmentoption ARB_precision_hint_fastest
|
|
||||||
#include "UnityCG.cginc"
|
|
||||||
struct v2f {
|
|
||||||
V2F_SHADOW_CASTER;
|
|
||||||
float4 uvAndAlpha : TEXCOORD1;
|
|
||||||
};
|
|
||||||
|
|
||||||
uniform float4 _MainTex_ST;
|
|
||||||
|
|
||||||
v2f vert (appdata_base v, float4 vertexColor : COLOR) {
|
|
||||||
v2f o;
|
|
||||||
TRANSFER_SHADOW_CASTER(o)
|
|
||||||
o.uvAndAlpha.xy = TRANSFORM_TEX(v.texcoord, _MainTex);
|
|
||||||
o.uvAndAlpha.z = 0;
|
|
||||||
o.uvAndAlpha.a = vertexColor.a;
|
|
||||||
return o;
|
|
||||||
}
|
|
||||||
|
|
||||||
uniform sampler2D _MainTex;
|
|
||||||
uniform fixed _Cutoff;
|
|
||||||
|
|
||||||
float4 frag (v2f i) : SV_Target {
|
|
||||||
fixed4 texcol = tex2D(_MainTex, i.uvAndAlpha.xy);
|
|
||||||
clip(texcol.a * i.uvAndAlpha.a - _Cutoff);
|
|
||||||
SHADOW_CASTER_FRAGMENT(i)
|
|
||||||
}
|
|
||||||
ENDCG
|
ENDCG
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -0,0 +1,42 @@
|
|||||||
|
#ifndef BLENDMODES_NORMAL_PASS_INCLUDED
|
||||||
|
#define BLENDMODES_NORMAL_PASS_INCLUDED
|
||||||
|
|
||||||
|
#pragma shader_feature _ _STRAIGHT_ALPHA_INPUT
|
||||||
|
#pragma vertex vert
|
||||||
|
#pragma fragment frag
|
||||||
|
#include "UnityCG.cginc"
|
||||||
|
#include "../CGIncludes/Spine-Common.cginc"
|
||||||
|
uniform sampler2D _MainTex;
|
||||||
|
uniform float4 _Color;
|
||||||
|
|
||||||
|
struct VertexInput {
|
||||||
|
float4 vertex : 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;
|
||||||
|
o.pos = UnityObjectToClipPos(v.vertex);
|
||||||
|
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
|
||||||
@ -0,0 +1,10 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 6e28a50646b0e9542a1c93c2d9d993d0
|
||||||
|
ShaderImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
defaultTextures: []
|
||||||
|
nonModifiableTextures: []
|
||||||
|
preprocessorOverride: 0
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
@ -0,0 +1,34 @@
|
|||||||
|
#ifndef BLENDMODES_SHADOWCASTER_PASS_INCLUDED
|
||||||
|
#define BLENDMODES_SHADOWCASTER_PASS_INCLUDED
|
||||||
|
|
||||||
|
#pragma vertex vert
|
||||||
|
#pragma fragment frag
|
||||||
|
#pragma multi_compile_shadowcaster
|
||||||
|
#pragma fragmentoption ARB_precision_hint_fastest
|
||||||
|
#include "UnityCG.cginc"
|
||||||
|
struct v2f {
|
||||||
|
V2F_SHADOW_CASTER;
|
||||||
|
float4 uvAndAlpha : TEXCOORD1;
|
||||||
|
};
|
||||||
|
|
||||||
|
uniform float4 _MainTex_ST;
|
||||||
|
|
||||||
|
v2f vert(appdata_base v, float4 vertexColor : COLOR) {
|
||||||
|
v2f o;
|
||||||
|
TRANSFER_SHADOW_CASTER(o)
|
||||||
|
o.uvAndAlpha.xy = TRANSFORM_TEX(v.texcoord, _MainTex);
|
||||||
|
o.uvAndAlpha.z = 0;
|
||||||
|
o.uvAndAlpha.a = vertexColor.a;
|
||||||
|
return o;
|
||||||
|
}
|
||||||
|
|
||||||
|
uniform sampler2D _MainTex;
|
||||||
|
uniform fixed _Cutoff;
|
||||||
|
|
||||||
|
float4 frag(v2f i) : SV_Target{
|
||||||
|
fixed4 texcol = tex2D(_MainTex, i.uvAndAlpha.xy);
|
||||||
|
clip(texcol.a* i.uvAndAlpha.a - _Cutoff);
|
||||||
|
SHADOW_CASTER_FRAGMENT(i)
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif
|
||||||
@ -0,0 +1,10 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 76beace455f83a8488bf044605212b2c
|
||||||
|
ShaderImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
defaultTextures: []
|
||||||
|
nonModifiableTextures: []
|
||||||
|
preprocessorOverride: 0
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
Loading…
x
Reference in New Issue
Block a user