From 0d0a335284f15131fa17737616bc85e2f48d5f0e Mon Sep 17 00:00:00 2001 From: bliu96 <544079846@qq.com> Date: Mon, 24 Nov 2025 17:39:40 +0800 Subject: [PATCH] =?UTF-8?q?[FIX]=E4=BF=AE=E6=94=B9softclip=20top=E8=AE=A1?= =?UTF-8?q?=E7=AE=97=E9=94=99=E8=AF=AF=EF=BC=8C=E5=9E=82=E7=9B=B4=E6=BB=9A?= =?UTF-8?q?=E5=8A=A8=E5=88=97=E8=A1=A8=E6=9C=AA=E6=BB=9A=E5=8A=A8=E6=97=B6?= =?UTF-8?q?=EF=BC=8C=E4=B8=8D=E5=BA=94=E8=AE=A1=E7=AE=97top=E7=9A=84softne?= =?UTF-8?q?ss?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Assets/Resources/Shaders/FairyGUI-BMFont.shader | 9 +++++---- Assets/Resources/Shaders/FairyGUI-Image.shader | 9 +++++---- Assets/Resources/Shaders/FairyGUI-Text.shader | 9 +++++---- .../Extensions/TextMeshPro/Shaders/FairyGUI-TMP.shader | 9 +++++---- 4 files changed, 20 insertions(+), 16 deletions(-) diff --git a/Assets/Resources/Shaders/FairyGUI-BMFont.shader b/Assets/Resources/Shaders/FairyGUI-BMFont.shader index 694ccd52..d7b636ef 100644 --- a/Assets/Resources/Shaders/FairyGUI-BMFont.shader +++ b/Assets/Resources/Shaders/FairyGUI-BMFont.shader @@ -127,10 +127,11 @@ Shader "FairyGUI/BMFont" #endif #ifdef SOFT_CLIPPED - float2 factor; - float2 condition = step(i.clipPos.xy, 0); - float4 clip_softness = _ClipSoftness * float4(condition, 1 - condition); - factor.xy = (1.0 - abs(i.clipPos.xy)) * (clip_softness.xw + clip_softness.zy); + float2 cond = step(i.clipPos.xy, 0); + float2 softnessRT = float2(_ClipSoftness.z, _ClipSoftness.y); + float2 softnessLB = float2(_ClipSoftness.x, _ClipSoftness.w); + float2 softness = softnessRT + cond * (softnessLB - softnessRT); + float2 factor = (1.0 - abs(i.clipPos.xy)) * softness; col.a *= clamp(min(factor.x, factor.y), 0.0, 1.0); #endif #ifdef CLIPPED diff --git a/Assets/Resources/Shaders/FairyGUI-Image.shader b/Assets/Resources/Shaders/FairyGUI-Image.shader index f00edb81..aea05dc1 100644 --- a/Assets/Resources/Shaders/FairyGUI-Image.shader +++ b/Assets/Resources/Shaders/FairyGUI-Image.shader @@ -139,10 +139,11 @@ Shader "FairyGUI/Image" #endif #ifdef SOFT_CLIPPED - float2 factor; - float2 condition = step(i.clipPos.xy, 0); - float4 clip_softness = _ClipSoftness * float4(condition, 1 - condition); - factor.xy = (1.0 - abs(i.clipPos.xy)) * (clip_softness.xw + clip_softness.zy); + float2 cond = step(i.clipPos.xy, 0); + float2 softnessRT = float2(_ClipSoftness.z, _ClipSoftness.y); + float2 softnessLB = float2(_ClipSoftness.x, _ClipSoftness.w); + float2 softness = softnessRT + cond * (softnessLB - softnessRT); + float2 factor = (1.0 - abs(i.clipPos.xy)) * softness; col.a *= clamp(min(factor.x, factor.y), 0.0, 1.0); #endif diff --git a/Assets/Resources/Shaders/FairyGUI-Text.shader b/Assets/Resources/Shaders/FairyGUI-Text.shader index 31b58bc8..bfad791e 100644 --- a/Assets/Resources/Shaders/FairyGUI-Text.shader +++ b/Assets/Resources/Shaders/FairyGUI-Text.shader @@ -125,10 +125,11 @@ Shader "FairyGUI/Text" #endif #ifdef SOFT_CLIPPED - float2 factor; - float2 condition = step(i.clipPos.xy, 0); - float4 clip_softness = _ClipSoftness * float4(condition, 1 - condition); - factor.xy = (1.0 - abs(i.clipPos.xy)) * (clip_softness.xw + clip_softness.zy); + float2 cond = step(i.clipPos.xy, 0); + float2 softnessRT = float2(_ClipSoftness.z, _ClipSoftness.y); + float2 softnessLB = float2(_ClipSoftness.x, _ClipSoftness.w); + float2 softness = softnessRT + cond * (softnessLB - softnessRT); + float2 factor = (1.0 - abs(i.clipPos.xy)) * softness; col.a *= clamp(min(factor.x, factor.y), 0.0, 1.0); #endif diff --git a/Assets/Scripts/Extensions/TextMeshPro/Shaders/FairyGUI-TMP.shader b/Assets/Scripts/Extensions/TextMeshPro/Shaders/FairyGUI-TMP.shader index 5a91338e..4dadd0d1 100755 --- a/Assets/Scripts/Extensions/TextMeshPro/Shaders/FairyGUI-TMP.shader +++ b/Assets/Scripts/Extensions/TextMeshPro/Shaders/FairyGUI-TMP.shader @@ -459,10 +459,11 @@ SubShader { #endif #ifdef SOFT_CLIPPED - float2 factor; - float2 condition = step(input.mask.xy, 0); - float4 clip_softness = _ClipSoftness * float4(condition, 1 - condition); - factor.xy = (1.0 - abs(input.mask.xy)) * (clip_softness.xw + clip_softness.zy); + float2 cond = step(i.clipPos.xy, 0); + float2 softnessRT = float2(_ClipSoftness.z, _ClipSoftness.y); + float2 softnessLB = float2(_ClipSoftness.x, _ClipSoftness.w); + float2 softness = softnessRT + cond * (softnessLB - softnessRT); + float2 factor = (1.0 - abs(i.clipPos.xy)) * softness; faceColor.a *= clamp(min(factor.x, factor.y), 0.0, 1.0); clip(faceColor.a - 0.001); #endif