Skip to content

Commit 5589078

Browse files
authored
Fix: (#246)
The converter ignores custom render queue in Unitychan Toon Shader ver 2 materials.
1 parent e5db267 commit 5589078

File tree

3 files changed

+31
-43
lines changed

3 files changed

+31
-43
lines changed

com.unity.toonshader/CHANGELOG.md

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,11 @@
11
# Changelog
2-
## [0.8.2-preview] - 2022-09-08
2+
## [0.8.2-preview] - 2022-09-09
33
### Updated:
44
* Updated some documents.
55

66
### Fixed:
77
* Deleted some warinings.
8+
* The converter ignores custom render queue in Unitychan Toon Shader ver 2 materials.
89
* The converter sometimes misidentified materials older than 0.7.x in Built-in UTS3 as older materials in Unitychan Toon Shader Ver 2.0.7.
910
* URP shader was not working for WebGL/GLES 3.0.
1011

com.unity.toonshader/Editor/Converter/FromUTS2/BuiltInUTS2toIntegratedConverter.cs

Lines changed: 28 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -381,6 +381,9 @@ void ConvertBuiltInUTS2Materials( string[] guids)
381381

382382
string path = AssetDatabase.GUIDToAssetPath(guid);
383383
Material material = AssetDatabase.LoadAssetAtPath<Material>(path);
384+
string content = File.ReadAllText(path);
385+
string[] lines = content.Split(lineSeparators, StringSplitOptions.None);
386+
int renderQueueInMaterial = GetRenderQueue(path, lines);
384387
var shaderID = GetShaderIDinMaterial(path);
385388
material.shader = Shader.Find(IsTesselationShader(path) ? kIntegratedTessllationUTS3Name : kIntegratedUTS3Name);
386389
var shaderGUID = m_Material2GUID_Dictionary[material];
@@ -394,7 +397,7 @@ void ConvertBuiltInUTS2Materials( string[] guids)
394397
int stencilNo_Setting = UTS3GUI.MaterialGetInt(material, UTS3GUI.ShaderPropStencilNo);
395398

396399
var renderType = UTS2Info.m_renderType;
397-
var renderQueue = UTS2Info.m_renderQueue;
400+
var renderQueueInShader = UTS2Info.m_renderQueue;
398401
material.SetOverrideTag(UTS2INFO.RENDERTYPE, renderType);
399402
UTS3GUI.UTS_Mode technique = (UTS3GUI.UTS_Mode)UTS3GUI.MaterialGetInt(material, UTS3GUI.ShaderPropUtsTechniqe);
400403

@@ -420,8 +423,8 @@ void ConvertBuiltInUTS2Materials( string[] guids)
420423
UTS3GUI.SetupOutline(material);
421424
}
422425
SetCullingMode(material);
423-
424-
SetAutoRenderQueue(material, 1);
426+
int autoRenderQueue = renderQueueInMaterial == -1 ? 1:0;
427+
SetAutoRenderQueue(material, autoRenderQueue);
425428

426429
SetTranparent(material, transparencyEnabled);
427430

@@ -434,9 +437,28 @@ void ConvertBuiltInUTS2Materials( string[] guids)
434437
ApplyAngelRing(material);
435438
ApplyMatCapMode(material);
436439

437-
438-
ApplyQueueAndRenderType(material, technique, renderQueue, transparencyEnabled);
439-
440+
if (renderQueueInMaterial == -1)
441+
{
442+
switch (renderQueueInShader)
443+
{
444+
case UTS2RenderQueue.None:
445+
material.renderQueue = (int)UnityEngine.Rendering.RenderQueue.Geometry;
446+
break;
447+
case UTS2RenderQueue.AlphaTest:
448+
material.renderQueue = (int)UnityEngine.Rendering.RenderQueue.AlphaTest;
449+
break;
450+
case UTS2RenderQueue.AlphaTestMinus1:
451+
material.renderQueue = (int)UnityEngine.Rendering.RenderQueue.AlphaTest - 1;
452+
break;
453+
case UTS2RenderQueue.Transparent:
454+
material.renderQueue = (int)UnityEngine.Rendering.RenderQueue.Transparent;
455+
break;
456+
}
457+
}
458+
else
459+
{
460+
material.renderQueue = renderQueueInMaterial;
461+
}
440462

441463
}
442464
AssetDatabase.SaveAssets();
@@ -482,7 +504,6 @@ void SetCullingMode(Material material)
482504
void SetAutoRenderQueue(Material material, int autoRenderQueue)
483505
{
484506
UTS3GUI.MaterialSetInt(material, UTS3GUI.ShaderPropAutoRenderQueue, autoRenderQueue);
485-
// material.renderQueue
486507
}
487508

488509
void SetTranparent(Material material, UTS3GUI.UTS_TransparentMode transperentSetting)
@@ -549,41 +570,7 @@ private bool IsShadingGrademap(Material material)
549570
return UTS3GUI.MaterialGetInt(material, UTS3GUI.ShaderPropUtsTechniqe) == (int)UTS3GUI.UTS_Mode.ShadingGradeMap;
550571
}
551572

552-
void ApplyQueueAndRenderType(Material material, UTS3GUI.UTS_Mode technique, UTS2RenderQueue renderQueue,UTS3GUI.UTS_TransparentMode transperentSetting )
553-
{
554573

555-
556-
557-
558-
// var ignoreProjection = UTS2INFO.DONT_IGNOREPROJECTION;
559-
560-
if (transperentSetting == UTS3GUI.UTS_TransparentMode.On)
561-
{
562-
563-
// ignoreProjection = UTS2INFO.DO_IGNOREPROJECTION;
564-
}
565-
else
566-
{
567-
568-
}
569-
// material.SetOverrideTag(UTS2INFO.IGNOREPROJECTION, ignoreProjection);
570-
switch (renderQueue)
571-
{
572-
case UTS2RenderQueue.None:
573-
material.renderQueue = (int)UnityEngine.Rendering.RenderQueue.Geometry;
574-
break;
575-
case UTS2RenderQueue.AlphaTest:
576-
material.renderQueue = (int)UnityEngine.Rendering.RenderQueue.AlphaTest;
577-
break;
578-
case UTS2RenderQueue.AlphaTestMinus1:
579-
material.renderQueue = (int)UnityEngine.Rendering.RenderQueue.AlphaTest - 1;
580-
break;
581-
case UTS2RenderQueue.Transparent:
582-
material.renderQueue = (int)UnityEngine.Rendering.RenderQueue.Transparent;
583-
break;
584-
}
585-
586-
}
587574
void ApplyMatCapMode(Material material)
588575
{
589576
if (UTS3GUI.MaterialGetInt(material, UTS3GUI.ShaderPropClippingMode) == 0)

com.unity.toonshader/Editor/Converter/RenderPipelineConverterContainer.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -201,7 +201,7 @@ protected void CommonConvert()
201201
AssetDatabase.Refresh();
202202
}
203203

204-
int GetRenderQueue( string path, string[] lines)
204+
protected int GetRenderQueue( string path, string[] lines)
205205
{
206206
int renderQueue = -1;
207207
var targetLine = Array.Find<string>(lines, line => line.StartsWith(" m_CustomRenderQueue:"));

0 commit comments

Comments
 (0)