mirror of
https://github.com/EsotericSoftware/spine-runtimes.git
synced 2025-12-20 09:16:01 +08:00
[unity] Sprite/Pixel Lit shader: Fixed errors in shader inspector GUI at certain configurations after change to ZWrite always on. See commit 4741279.
This commit is contained in:
parent
698715789f
commit
083ef01160
@ -479,7 +479,7 @@ public class SpineSpriteShaderGUI : ShaderGUI {
|
||||
break;
|
||||
default:
|
||||
{
|
||||
bool zWrite = material.GetFloat("_ZWrite") > 0.0f;
|
||||
bool zWrite = HasZWriteEnabled(material);
|
||||
SetRenderType(material, zWrite ? "TransparentCutout" : "Transparent", useCustomRenderType);
|
||||
}
|
||||
break;
|
||||
@ -807,14 +807,15 @@ public class SpineSpriteShaderGUI : ShaderGUI {
|
||||
//Start with Culling disabled
|
||||
material.SetInt("_Cull", (int)eCulling.Off);
|
||||
//Start with Z writing disabled
|
||||
material.SetInt("_ZWrite", 0);
|
||||
if (material.HasProperty("_ZWrite"))
|
||||
material.SetInt("_ZWrite", 0);
|
||||
}
|
||||
|
||||
//Z write is on then
|
||||
|
||||
static void SetRenderType (Material material, string renderType, bool useCustomRenderQueue) {
|
||||
//Want a check box to say if should use Sprite render queue (for custom writing depth and normals)
|
||||
bool zWrite = material.GetFloat("_ZWrite") > 0.0f;
|
||||
bool zWrite = HasZWriteEnabled(material);
|
||||
|
||||
if (useCustomRenderQueue) {
|
||||
//If sprite has fixed normals then assign custom render type so we can write its correct normal with soft edges
|
||||
@ -848,7 +849,7 @@ public class SpineSpriteShaderGUI : ShaderGUI {
|
||||
eBlendMode blendMode = GetMaterialBlendMode(material);
|
||||
SetBlendMode(material, blendMode);
|
||||
|
||||
bool zWrite = material.GetFloat("_ZWrite") > 0.0f;
|
||||
bool zWrite = HasZWriteEnabled(material);
|
||||
bool clipAlpha = zWrite && blendMode != eBlendMode.Opaque && material.GetFloat("_Cutoff") > 0.0f;
|
||||
SetKeyword(material, "_ALPHA_CLIP", clipAlpha);
|
||||
|
||||
@ -965,7 +966,7 @@ public class SpineSpriteShaderGUI : ShaderGUI {
|
||||
{
|
||||
material.SetInt("_SrcBlend", (int)UnityEngine.Rendering.BlendMode.SrcAlpha);
|
||||
material.SetInt("_DstBlend", (int)UnityEngine.Rendering.BlendMode.One);
|
||||
bool zWrite = material.GetFloat("_ZWrite") > 0.0f;
|
||||
bool zWrite = HasZWriteEnabled(material);
|
||||
SetRenderType(material, zWrite ? "TransparentCutout" : "Transparent", useCustomRenderQueue);
|
||||
renderQueue = zWrite ? kAlphaTestQueue : kTransparentQueue;
|
||||
}
|
||||
@ -974,7 +975,7 @@ public class SpineSpriteShaderGUI : ShaderGUI {
|
||||
{
|
||||
material.SetInt("_SrcBlend", (int)UnityEngine.Rendering.BlendMode.One);
|
||||
material.SetInt("_DstBlend", (int)UnityEngine.Rendering.BlendMode.OneMinusSrcColor);
|
||||
bool zWrite = material.GetFloat("_ZWrite") > 0.0f;
|
||||
bool zWrite = HasZWriteEnabled(material);
|
||||
SetRenderType(material, zWrite ? "TransparentCutout" : "Transparent", useCustomRenderQueue);
|
||||
renderQueue = zWrite ? kAlphaTestQueue : kTransparentQueue;
|
||||
}
|
||||
@ -983,7 +984,7 @@ public class SpineSpriteShaderGUI : ShaderGUI {
|
||||
{
|
||||
material.SetInt("_SrcBlend", (int)UnityEngine.Rendering.BlendMode.Zero);
|
||||
material.SetInt("_DstBlend", (int)UnityEngine.Rendering.BlendMode.SrcColor);
|
||||
bool zWrite = material.GetFloat("_ZWrite") > 0.0f;
|
||||
bool zWrite = HasZWriteEnabled(material);
|
||||
SetRenderType(material, zWrite ? "TransparentCutout" : "Transparent", useCustomRenderQueue);
|
||||
renderQueue = zWrite ? kAlphaTestQueue : kTransparentQueue;
|
||||
}
|
||||
@ -992,7 +993,7 @@ public class SpineSpriteShaderGUI : ShaderGUI {
|
||||
{
|
||||
material.SetInt("_SrcBlend", (int)UnityEngine.Rendering.BlendMode.DstColor);
|
||||
material.SetInt("_DstBlend", (int)UnityEngine.Rendering.BlendMode.SrcColor);
|
||||
bool zWrite = material.GetFloat("_ZWrite") > 0.0f;
|
||||
bool zWrite = HasZWriteEnabled(material);
|
||||
SetRenderType(material, zWrite ? "TransparentCutout" : "Transparent", useCustomRenderQueue);
|
||||
renderQueue = zWrite ? kAlphaTestQueue : kTransparentQueue;
|
||||
}
|
||||
@ -1001,7 +1002,7 @@ public class SpineSpriteShaderGUI : ShaderGUI {
|
||||
{
|
||||
material.SetInt("_SrcBlend", (int)UnityEngine.Rendering.BlendMode.One);
|
||||
material.SetInt("_DstBlend", (int)UnityEngine.Rendering.BlendMode.OneMinusSrcAlpha);
|
||||
bool zWrite = material.GetFloat("_ZWrite") > 0.0f;
|
||||
bool zWrite = HasZWriteEnabled(material);
|
||||
SetRenderType(material, zWrite ? "TransparentCutout" : "Transparent", useCustomRenderQueue);
|
||||
renderQueue = zWrite ? kAlphaTestQueue : kTransparentQueue;
|
||||
}
|
||||
@ -1040,5 +1041,11 @@ public class SpineSpriteShaderGUI : ShaderGUI {
|
||||
return material.IsKeywordEnabled("_FIXED_NORMALS_VIEWSPACE_BACKFACE") || material.IsKeywordEnabled("_FIXED_NORMALS_MODELSPACE_BACKFACE");
|
||||
}
|
||||
|
||||
static bool HasZWriteEnabled (Material material) {
|
||||
if (material.HasProperty("_ZWrite")) {
|
||||
return material.GetFloat("_ZWrite") > 0.0f;
|
||||
}
|
||||
else return true; // Pixel Lit shader always has _ZWrite enabled.
|
||||
}
|
||||
#endregion
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user