Skip to content

Commit b372c14

Browse files
committed
- Made the shader compatible with 2022.2.
1 parent b01d7b3 commit b372c14

File tree

5 files changed

+43
-31
lines changed

5 files changed

+43
-31
lines changed

CHANGELOG.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,9 @@
11
# Changelog
22
**Universal Toon Shader [a.k.a. Unity-Chan Toon Shader]**
3+
## [2.5.1] - 2022/07/11
4+
### Fixed.
5+
- Made the shader compatible with Unity 2022.2.
6+
- Applied Outline Blending fix in Unity-Chan Toon Shader 2.0.9.
37
## [2.5.0] - 2022/02/17
48
### Added.
59
- Versions later than URP 10.0.x require the DepthNormals pass. (Thanks to riina)

Editor/UniversalToonGUI.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ public class UniversalToonGUI : UnityEditor.ShaderGUI
77
{
88
protected const float kVersionX = 2.0f;
99
protected const float kVersionY = 5.0f;
10-
protected const float kVersionZ = 0.0f;
10+
protected const float kVersionZ = 1.0f;
1111

1212
const string ShaderDefineSHADINGGRADEMAP = "_SHADINGGRADEMAP";
1313
const string ShaderDefineANGELRING_ON = "_IS_ANGELRING_ON";

Runtime/Shaders/UniversalToon.shader

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ Shader "Universal Render Pipeline/Toon" {
1111
// Versioning of material to help for upgrading
1212
[HideInInspector] _utsVersionX("VersionX", Float) = 2
1313
[HideInInspector] _utsVersionY("VersionY", Float) = 5
14-
[HideInInspector] _utsVersionZ("VersionZ", Float) = 0
14+
[HideInInspector] _utsVersionZ("VersionZ", Float) = 1
1515

1616
[HideInInspector] _utsTechnique("Technique", int) = 0 //DWF
1717
[HideInInspector] _AutoRenderQueue("Automatic Render Queue ", int) = 1

Runtime/Shaders/UniversalToonBody.hlsl

Lines changed: 32 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -97,12 +97,12 @@
9797

9898

9999
#ifdef _IS_ANGELRING_OFF
100-
float2 lightmapUV : TEXCOORD1;
100+
float2 lightmapUV : TEXCOORD1;
101101
#elif _IS_ANGELRING_ON
102102
float2 texcoord1 : TEXCOORD1;
103-
float2 lightmapUV : TEXCOORD2;
103+
float2 lightmapUV : TEXCOORD2;
104104
#endif
105-
UNITY_VERTEX_INPUT_INSTANCE_ID
105+
UNITY_VERTEX_INPUT_INSTANCE_ID
106106
};
107107
struct VertexOutput {
108108
float4 pos : SV_POSITION;
@@ -116,23 +116,23 @@
116116
//v.2.0.7
117117
float mirrorFlag : TEXCOORD5;
118118

119-
DECLARE_LIGHTMAP_OR_SH(lightmapUV, vertexSH, 6);
119+
DECLARE_LIGHTMAP_OR_SH(lightmapUV, vertexSH, 6);
120120
#if defined(_ADDITIONAL_LIGHTS_VERTEX) || (VERSION_LOWER(12, 0))
121-
half4 fogFactorAndVertexLight : TEXCOORD7; // x: fogFactor, yzw: vertex light
121+
half4 fogFactorAndVertexLight : TEXCOORD7; // x: fogFactor, yzw: vertex light
122122
#else
123-
half fogFactor : TEXCOORD7;
123+
half fogFactor : TEXCOORD7;
124124
#endif
125125

126126
# ifndef _MAIN_LIGHT_SHADOWS
127-
float4 positionCS : TEXCOORD8;
127+
float4 positionCS : TEXCOORD8;
128128
int mainLightID : TEXCOORD9;
129129
# else
130-
float4 shadowCoord : TEXCOORD8;
131-
float4 positionCS : TEXCOORD9;
130+
float4 shadowCoord : TEXCOORD8;
131+
float4 positionCS : TEXCOORD9;
132132
int mainLightID : TEXCOORD10;
133133
# endif
134-
UNITY_VERTEX_INPUT_INSTANCE_ID
135-
UNITY_VERTEX_OUTPUT_STEREO
134+
UNITY_VERTEX_INPUT_INSTANCE_ID
135+
UNITY_VERTEX_OUTPUT_STEREO
136136

137137
//
138138
#elif _IS_ANGELRING_ON
@@ -148,7 +148,7 @@
148148
#if defined(_ADDITIONAL_LIGHTS_VERTEX) || (VERSION_LOWER(12, 0))
149149
half4 fogFactorAndVertexLight : TEXCOORD8; // x: fogFactor, yzw: vertex light
150150
#else
151-
half fogFactor : TEXCOORD8; // x: fogFactor, yzw: vertex light
151+
half fogFactor : TEXCOORD8; // x: fogFactor, yzw: vertex light
152152
#endif
153153
# ifndef _MAIN_LIGHT_SHADOWS
154154
float4 positionCS : TEXCOORD9;
@@ -174,30 +174,31 @@
174174
float3 direction;
175175
float3 color;
176176
float distanceAttenuation;
177-
real shadowAttenuation;
178-
int type;
177+
float shadowAttenuation;
178+
int type;
179179
};
180180

181181
///////////////////////////////////////////////////////////////////////////////
182182
// Light Abstraction //
183183
/////////////////////////////////////////////////////////////////////////////
184-
real MainLightRealtimeShadowUTS(float4 shadowCoord, float4 positionCS)
184+
half MainLightRealtimeShadowUTS(float4 shadowCoord, float4 positionCS)
185185
{
186186
#if !defined(MAIN_LIGHT_CALCULATE_SHADOWS)
187-
return 1.0h;
187+
return 1.0;
188188
#endif
189189
ShadowSamplingData shadowSamplingData = GetMainLightShadowSamplingData();
190190
half4 shadowParams = GetMainLightShadowParams();
191191
#if defined(UTS_USE_RAYTRACING_SHADOW)
192192
float w = (positionCS.w == 0) ? 0.00001 : positionCS.w;
193-
float4 screenPos = ComputeScreenPos(positionCS/ w);
193+
float4 screenPos = ComputeScreenPos(positionCS / w);
194194
return SAMPLE_TEXTURE2D(_RaytracedHardShadow, sampler_RaytracedHardShadow, screenPos);
195-
#endif
196-
195+
#elif defined(_MAIN_LIGHT_SHADOWS_SCREEN)
196+
return SampleScreenSpaceShadowmap(shadowCoord);
197+
#endif
197198
return SampleShadowmap(TEXTURE2D_ARGS(_MainLightShadowmapTexture, sampler_MainLightShadowmapTexture), shadowCoord, shadowSamplingData, shadowParams, false);
198199
}
199200

200-
real AdditionalLightRealtimeShadowUTS(int lightIndex, float3 positionWS, float4 positionCS)
201+
half AdditionalLightRealtimeShadowUTS(int lightIndex, float3 positionWS, float4 positionCS)
201202
{
202203
#if defined(UTS_USE_RAYTRACING_SHADOW)
203204
float w = (positionCS.w == 0) ? 0.00001 : positionCS.w;
@@ -208,8 +209,11 @@
208209
#if !defined(ADDITIONAL_LIGHT_CALCULATE_SHADOWS)
209210
return 1.0h;
210211
#endif
211-
212+
# if (SHADER_LIBRARY_VERSION_MAJOR >= 13 && UNITY_VERSION >= 202220 )
213+
ShadowSamplingData shadowSamplingData = GetAdditionalLightShadowSamplingData(lightIndex);
214+
# else
212215
ShadowSamplingData shadowSamplingData = GetAdditionalLightShadowSamplingData();
216+
# endif
213217

214218
#if USE_STRUCTURED_BUFFER_FOR_LIGHT_DATA
215219
lightIndex = _AdditionalShadowsIndices[lightIndex];
@@ -402,23 +406,23 @@
402406
OUTPUT_LIGHTMAP_UV(v.lightmapUV, unity_LightmapST, o.lightmapUV);
403407
OUTPUT_SH(o.normalDir.xyz, o.vertexSH);
404408

405-
# if defined(_ADDITIONAL_LIGHTS_VERTEX) || (VERSION_LOWER(12, 0))
406-
o.fogFactorAndVertexLight = half4(fogFactor, vertexLight);
409+
#if defined(_ADDITIONAL_LIGHTS_VERTEX) || (VERSION_LOWER(12, 0))
410+
o.fogFactorAndVertexLight = half4(fogFactor, vertexLight);
407411
#else
408-
o.fogFactor = fogFactor;
412+
o.fogFactor = fogFactor;
409413
#endif
410414

411415
o.positionCS = positionCS;
412-
#if defined(_MAIN_LIGHT_SHADOWS) && !defined(_RECEIVE_SHADOWS_OFF)
416+
#if defined(_MAIN_LIGHT_SHADOWS) && !defined(_RECEIVE_SHADOWS_OFF)
413417
#if SHADOWS_SCREEN
414418
o.shadowCoord = ComputeScreenPos(positionCS);
415419
#else
416420
o.shadowCoord = TransformWorldToShadowCoord(o.posWorld.xyz);
417421
#endif
418422
o.mainLightID = DetermineUTS_MainLightIndex(o.posWorld.xyz, o.shadowCoord, positionCS);
419-
#else
423+
#else
420424
o.mainLightID = DetermineUTS_MainLightIndex(o.posWorld.xyz, 0, positionCS);
421-
#endif
425+
#endif
422426

423427

424428
return o;
@@ -443,4 +447,5 @@
443447
#else
444448
return fragDoubleShadeFeather(i, facing);
445449
#endif
450+
446451
}

Runtime/Shaders/UniversalToonOutline.hlsl

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -74,8 +74,11 @@
7474
}
7575
_Color = _BaseColor;
7676
float4 objPos = mul ( unity_ObjectToWorld, float4(0,0,0,1) );
77-
//v.2.0.7.5
78-
half3 ambientSkyColor = unity_AmbientSky.rgb>0.05 ? unity_AmbientSky.rgb*_Unlit_Intensity : half3(0.05,0.05,0.05)*_Unlit_Intensity;
77+
//v.2.0.9
78+
float3 envLightSource_GradientEquator = unity_AmbientEquator.rgb >0.05 ? unity_AmbientEquator.rgb : half3(0.05,0.05,0.05);
79+
float3 envLightSource_SkyboxIntensity = max(ShadeSH9(half4(0.0,0.0,0.0,1.0)),ShadeSH9(half4(0.0,-1.0,0.0,1.0))).rgb;
80+
float3 ambientSkyColor = envLightSource_SkyboxIntensity.rgb>0.0 ? envLightSource_SkyboxIntensity*_Unlit_Intensity : envLightSource_GradientEquator*_Unlit_Intensity;
81+
//
7982
float3 lightColor = _LightColor0.rgb >0.05 ? _LightColor0.rgb : ambientSkyColor.rgb;
8083
float lightColorIntensity = (0.299*lightColor.r + 0.587*lightColor.g + 0.114*lightColor.b);
8184
lightColor = lightColorIntensity<1 ? lightColor : lightColor/lightColorIntensity;

0 commit comments

Comments
 (0)