This commit is contained in:
SoulliesOfficial
2026-05-27 15:15:28 -04:00
parent 76f498ae2b
commit 72756712f7
669 changed files with 5361 additions and 12268 deletions

View File

@@ -909,13 +909,13 @@ Material:
- _EmissionBlink: {r: 0, g: 0, b: 3.141593, a: 0}
- _EmissionColor: {r: 0, g: 0, b: 0, a: 1}
- _EmissionMap_ScrollRotate: {r: 0, g: 0, b: 0, a: 0}
- _FaceForward: {r: -0.0665922, g: -0.42889756, b: 0.9008953, a: 0}
- _FaceUp: {r: 0.061814837, g: 0.8993918, b: 0.43275094, a: 0}
- _FaceForward: {r: 0.03887351, g: -0.33023596, b: 0.9430976, a: 0}
- _FaceUp: {r: -0.02244219, g: 0.9432844, b: 0.3312264, a: 0}
- _GlitterAtras: {r: 1, g: 1, b: 0, a: 0}
- _GlitterColor: {r: 1, g: 1, b: 1, a: 1}
- _GlitterParams1: {r: 256, g: 256, b: 0.16, a: 50}
- _GlitterParams2: {r: 0.25, g: 0, b: 0, a: 0}
- _HeadWorldPos: {r: -0.0049033333, g: 1.6045952, b: 0.033351183, a: 0}
- _HeadWorldPos: {r: 0.005572671, g: 1.5960494, b: 0.025174975, a: 0}
- _LightDirectionOverride: {r: 0.001, g: 0.002, b: 0.001, a: 0}
- _Main2ndDissolveColor: {r: 1, g: 1, b: 1, a: 1}
- _Main2ndDissolveNoiseMask_ScrollRotate: {r: 0, g: 0, b: 0, a: 0}

View File

@@ -938,13 +938,13 @@ Material:
- _EmissionBlink: {r: 0, g: 0, b: 3.141593, a: 0}
- _EmissionColor: {r: 0, g: 0, b: 0, a: 1}
- _EmissionMap_ScrollRotate: {r: 0, g: 0, b: 0, a: 0}
- _FaceForward: {r: -0.0665922, g: -0.42889756, b: 0.9008953, a: 0}
- _FaceUp: {r: 0.061814837, g: 0.8993918, b: 0.43275094, a: 0}
- _FaceForward: {r: 0.03887351, g: -0.33023596, b: 0.9430976, a: 0}
- _FaceUp: {r: -0.02244219, g: 0.9432844, b: 0.3312264, a: 0}
- _GlitterAtras: {r: 1, g: 1, b: 0, a: 0}
- _GlitterColor: {r: 1, g: 1, b: 1, a: 1}
- _GlitterParams1: {r: 256, g: 256, b: 0.16, a: 50}
- _GlitterParams2: {r: 0.25, g: 0, b: 0, a: 0}
- _HeadWorldPos: {r: -0.0049033333, g: 1.6045952, b: 0.033351183, a: 0}
- _HeadWorldPos: {r: 0.005572671, g: 1.5960494, b: 0.025174975, a: 0}
- _LightDirectionOverride: {r: 0.001, g: 0.002, b: 0.001, a: 0}
- _Main2ndDissolveColor: {r: 1, g: 1, b: 1, a: 1}
- _Main2ndDissolveNoiseMask_ScrollRotate: {r: 0, g: 0, b: 0, a: 0}

View File

@@ -909,13 +909,13 @@ Material:
- _EmissionBlink: {r: 0, g: 0, b: 3.141593, a: 0}
- _EmissionColor: {r: 0, g: 0, b: 0, a: 1}
- _EmissionMap_ScrollRotate: {r: 0, g: 0, b: 0, a: 0}
- _FaceForward: {r: -0.0665922, g: -0.42889756, b: 0.9008953, a: 0}
- _FaceUp: {r: 0.061814837, g: 0.8993918, b: 0.43275094, a: 0}
- _FaceForward: {r: 0.03887351, g: -0.33023596, b: 0.9430976, a: 0}
- _FaceUp: {r: -0.02244219, g: 0.9432844, b: 0.3312264, a: 0}
- _GlitterAtras: {r: 1, g: 1, b: 0, a: 0}
- _GlitterColor: {r: 1, g: 1, b: 1, a: 1}
- _GlitterParams1: {r: 256, g: 256, b: 0.16, a: 50}
- _GlitterParams2: {r: 0.25, g: 0, b: 0, a: 0}
- _HeadWorldPos: {r: -0.0049033333, g: 1.6045952, b: 0.033351183, a: 0}
- _HeadWorldPos: {r: 0.005572671, g: 1.5960494, b: 0.025174975, a: 0}
- _LightDirectionOverride: {r: 0.001, g: 0.002, b: 0.001, a: 0}
- _Main2ndDissolveColor: {r: 1, g: 1, b: 1, a: 1}
- _Main2ndDissolveNoiseMask_ScrollRotate: {r: 0, g: 0, b: 0, a: 0}

View File

@@ -909,13 +909,13 @@ Material:
- _EmissionBlink: {r: 0, g: 0, b: 3.141593, a: 0}
- _EmissionColor: {r: 0, g: 0, b: 0, a: 1}
- _EmissionMap_ScrollRotate: {r: 0, g: 0, b: 0, a: 0}
- _FaceForward: {r: -0.0665922, g: -0.42889756, b: 0.9008953, a: 0}
- _FaceUp: {r: 0.061814837, g: 0.8993918, b: 0.43275094, a: 0}
- _FaceForward: {r: 0.03887351, g: -0.33023596, b: 0.9430976, a: 0}
- _FaceUp: {r: -0.02244219, g: 0.9432844, b: 0.3312264, a: 0}
- _GlitterAtras: {r: 1, g: 1, b: 0, a: 0}
- _GlitterColor: {r: 1, g: 1, b: 1, a: 1}
- _GlitterParams1: {r: 256, g: 256, b: 0.16, a: 50}
- _GlitterParams2: {r: 0.25, g: 0, b: 0, a: 0}
- _HeadWorldPos: {r: -0.0049033333, g: 1.6045952, b: 0.033351183, a: 0}
- _HeadWorldPos: {r: 0.005572671, g: 1.5960494, b: 0.025174975, a: 0}
- _LightDirectionOverride: {r: 0.001, g: 0.002, b: 0.001, a: 0}
- _Main2ndDissolveColor: {r: 1, g: 1, b: 1, a: 1}
- _Main2ndDissolveNoiseMask_ScrollRotate: {r: 0, g: 0, b: 0, a: 0}

View File

@@ -937,13 +937,13 @@ Material:
- _EmissionBlink: {r: 0, g: 0, b: 3.141593, a: 0}
- _EmissionColor: {r: 0, g: 0, b: 0, a: 1}
- _EmissionMap_ScrollRotate: {r: 0, g: 0, b: 0, a: 0}
- _FaceForward: {r: -0.0665922, g: -0.42889756, b: 0.9008953, a: 0}
- _FaceUp: {r: 0.061814837, g: 0.8993918, b: 0.43275094, a: 0}
- _FaceForward: {r: 0.03887351, g: -0.33023596, b: 0.9430976, a: 0}
- _FaceUp: {r: -0.02244219, g: 0.9432844, b: 0.3312264, a: 0}
- _GlitterAtras: {r: 1, g: 1, b: 0, a: 0}
- _GlitterColor: {r: 1, g: 1, b: 1, a: 1}
- _GlitterParams1: {r: 256, g: 256, b: 0.16, a: 50}
- _GlitterParams2: {r: 0.25, g: 0, b: 0, a: 0}
- _HeadWorldPos: {r: -0.0049033333, g: 1.6045952, b: 0.033351183, a: 0}
- _HeadWorldPos: {r: 0.005572671, g: 1.5960494, b: 0.025174975, a: 0}
- _LightDirectionOverride: {r: 0.001, g: 0.002, b: 0.001, a: 0}
- _Main2ndDissolveColor: {r: 1, g: 1, b: 1, a: 1}
- _Main2ndDissolveNoiseMask_ScrollRotate: {r: 0, g: 0, b: 0, a: 0}

View File

@@ -908,13 +908,13 @@ Material:
- _EmissionBlink: {r: 0, g: 0, b: 3.141593, a: 0}
- _EmissionColor: {r: 0, g: 0, b: 0, a: 1}
- _EmissionMap_ScrollRotate: {r: 0, g: 0, b: 0, a: 0}
- _FaceForward: {r: -0.0665922, g: -0.42889756, b: 0.9008953, a: 0}
- _FaceUp: {r: 0.061814837, g: 0.8993918, b: 0.43275094, a: 0}
- _FaceForward: {r: 0.03887351, g: -0.33023596, b: 0.9430976, a: 0}
- _FaceUp: {r: -0.02244219, g: 0.9432844, b: 0.3312264, a: 0}
- _GlitterAtras: {r: 1, g: 1, b: 0, a: 0}
- _GlitterColor: {r: 1, g: 1, b: 1, a: 1}
- _GlitterParams1: {r: 256, g: 256, b: 0.16, a: 50}
- _GlitterParams2: {r: 0.25, g: 0, b: 0, a: 0}
- _HeadWorldPos: {r: -0.0049033333, g: 1.6045952, b: 0.033351183, a: 0}
- _HeadWorldPos: {r: 0.005572671, g: 1.5960494, b: 0.025174975, a: 0}
- _LightDirectionOverride: {r: 0.001, g: 0.002, b: 0.001, a: 0}
- _Main2ndDissolveColor: {r: 1, g: 1, b: 1, a: 1}
- _Main2ndDissolveNoiseMask_ScrollRotate: {r: 0, g: 0, b: 0, a: 0}

View File

@@ -954,13 +954,13 @@ Material:
- _EmissionBlink: {r: 0, g: 0, b: 3.141593, a: 0}
- _EmissionColor: {r: 0, g: 0, b: 0, a: 1}
- _EmissionMap_ScrollRotate: {r: 0, g: 0, b: 0, a: 0}
- _FaceForward: {r: -0.0665922, g: -0.42889756, b: 0.9008953, a: 0}
- _FaceUp: {r: 0.061814837, g: 0.8993918, b: 0.43275094, a: 0}
- _FaceForward: {r: 0.03887351, g: -0.33023596, b: 0.9430976, a: 0}
- _FaceUp: {r: -0.02244219, g: 0.9432844, b: 0.3312264, a: 0}
- _GlitterAtras: {r: 1, g: 1, b: 0, a: 0}
- _GlitterColor: {r: 1, g: 1, b: 1, a: 1}
- _GlitterParams1: {r: 256, g: 256, b: 0.16, a: 50}
- _GlitterParams2: {r: 0.25, g: 0, b: 0, a: 0}
- _HeadWorldPos: {r: -0.0049033333, g: 1.6045952, b: 0.033351183, a: 0}
- _HeadWorldPos: {r: 0.005572671, g: 1.5960494, b: 0.025174975, a: 0}
- _HiLightColor: {r: 1, g: 1, b: 1, a: 1}
- _LightDirectionOverride: {r: 0.001, g: 0.002, b: 0.001, a: 0}
- _Main2ndDissolveColor: {r: 1, g: 1, b: 1, a: 1}

View File

@@ -909,13 +909,13 @@ Material:
- _EmissionBlink: {r: 0, g: 0, b: 3.141593, a: 0}
- _EmissionColor: {r: 0, g: 0, b: 0, a: 1}
- _EmissionMap_ScrollRotate: {r: 0, g: 0, b: 0, a: 0}
- _FaceForward: {r: -0.0665922, g: -0.42889756, b: 0.9008953, a: 0}
- _FaceUp: {r: 0.061814837, g: 0.8993918, b: 0.43275094, a: 0}
- _FaceForward: {r: 0.03887351, g: -0.33023596, b: 0.9430976, a: 0}
- _FaceUp: {r: -0.02244219, g: 0.9432844, b: 0.3312264, a: 0}
- _GlitterAtras: {r: 1, g: 1, b: 0, a: 0}
- _GlitterColor: {r: 1, g: 1, b: 1, a: 1}
- _GlitterParams1: {r: 256, g: 256, b: 0.16, a: 50}
- _GlitterParams2: {r: 0.25, g: 0, b: 0, a: 0}
- _HeadWorldPos: {r: -0.0049033333, g: 1.6045952, b: 0.033351183, a: 0}
- _HeadWorldPos: {r: 0.005572671, g: 1.5960494, b: 0.025174975, a: 0}
- _LightDirectionOverride: {r: 0.001, g: 0.002, b: 0.001, a: 0}
- _Main2ndDissolveColor: {r: 1, g: 1, b: 1, a: 1}
- _Main2ndDissolveNoiseMask_ScrollRotate: {r: 0, g: 0, b: 0, a: 0}

View File

@@ -19,11 +19,13 @@ Material:
m_LightmapFlags: 0
m_EnableInstancingVariants: 0
m_DoubleSidedGI: 1
m_CustomRenderQueue: -1
m_CustomRenderQueue: 3000
stringTagMap:
RenderType: Opaque
RenderType: Transparent
disabledShaderPasses:
- GRABPASS
- DepthOnly
- SHADOWCASTER
m_LockedProperties:
m_SavedProperties:
serializedVersion: 3
@@ -94,8 +96,8 @@ Material:
- _DistortionEnabled: 0
- _DistortionStrength: 1
- _DistortionStrengthScaled: 0
- _DstBlend: 0
- _DstBlendAlpha: 0
- _DstBlend: 1
- _DstBlendAlpha: 1
- _EmissionEnabled: 0
- _FlipbookBlending: 0
- _FlipbookMode: 0
@@ -115,11 +117,11 @@ Material:
- _SoftParticlesFarFadeDistance: 1
- _SoftParticlesNearFadeDistance: 0
- _SpecularHighlights: 1
- _SrcBlend: 1
- _SrcBlend: 5
- _SrcBlendAlpha: 1
- _Surface: 1
- _UVSec: 0
- _ZWrite: 1
- _ZWrite: 0
- __dirty: 0
m_Colors:
- _BaseColor: {r: 1, g: 1, b: 1, a: 1}

View File

@@ -0,0 +1,682 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!21 &2100000
Material:
serializedVersion: 8
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_Name: ZQK Font SDF Glow
m_Shader: {fileID: 4800000, guid: bb134d7d4389e3a45a6c49e898a344a4, type: 3}
m_Parent: {fileID: 0}
m_ModifiedSerializedProperties: 0
m_ValidKeywords:
- _ISTEXTMESHPRO_ON
- _ISTEXT_ON
- _SHADERFADING_NONE
- _SHADERSPACE_UV
- _TEXTURELAYER1SHEETTOGGLE_ON
- _TEXTURELAYER2SHEETTOGGLE_ON
m_InvalidKeywords: []
m_LightmapFlags: 4
m_EnableInstancingVariants: 0
m_DoubleSidedGI: 0
m_CustomRenderQueue: -1
stringTagMap: {}
disabledShaderPasses: []
m_LockedProperties:
m_SavedProperties:
serializedVersion: 3
m_TexEnvs:
- _AddColorMask:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _AddHueMask:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _BumpMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _Cube:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _CustomFadeFadeMask:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _FaceTex:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _FadingMask:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _InnerOutlineTintTexture:
m_Texture: {fileID: 2800000, guid: 5af9a397a8643994c829e696a24a7845, type: 3}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _MainTex:
m_Texture: {fileID: -478184148220021899, guid: 21262bfde877c70478b3fcaf0d725c46, type: 2}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _MetalMask:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _OuterOutlineTintTexture:
m_Texture: {fileID: 2800000, guid: 5af9a397a8643994c829e696a24a7845, type: 3}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _OutlineTex:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _PixelOutlineTintTexture:
m_Texture: {fileID: 2800000, guid: 5af9a397a8643994c829e696a24a7845, type: 3}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _RecolorRGBTexture:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _RecolorRGBYCPTexture:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _ShineMask:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _SineGlowMask:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _StrongTintMask:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _TextureLayer1Texture:
m_Texture: {fileID: 2800000, guid: 9685c3a024e22a946a7e8c2ce3542300, type: 3}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _TextureLayer2Texture:
m_Texture: {fileID: 2800000, guid: 9685c3a024e22a946a7e8c2ce3542300, type: 3}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _UVDistortMask:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _UberNoiseTexture:
m_Texture: {fileID: 2800000, guid: b8d18cd117976254d94a812a0bfc336e, type: 3}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _texcoord:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
m_Ints: []
m_Floats:
- _AddColorContrast: 0.5
- _AddColorContrastToggle: 0
- _AddColorFade: 1
- _AddColorMaskToggle: 0
- _AddHueBrightness: 2
- _AddHueContrast: 0.5
- _AddHueFade: 1
- _AddHueMaskToggle: 0
- _AddHueSaturation: 1
- _AddHueSpeed: 1
- _AlphaTintFade: 1
- _AlphaTintMinAlpha: 0.02
- _Ambient: 0.5
- _BakedMaterial: 0
- _Bevel: 0.5
- _BevelClamp: 0
- _BevelOffset: 0
- _BevelRoundness: 0
- _BevelWidth: 0
- _BlackTintFade: 1
- _BlackTintPower: 4
- _Brightness: 1
- _BumpFace: 0
- _BumpOutline: 0
- _BurnEdgeNoiseFactor: 0.5
- _BurnFade: 1
- _BurnInsideContrast: 2
- _BurnInsideNoiseFactor: 0.2
- _BurnRadius: 5
- _BurnSwirlFactor: 1
- _BurnWidth: 0.1
- _CamouflageAnimationToggle: 0
- _CamouflageContrast: 1
- _CamouflageDensityA: 0.4
- _CamouflageDensityB: 0.4
- _CamouflageFade: 1
- _CamouflageSmoothnessA: 0.2
- _CamouflageSmoothnessB: 0.2
- _CheckerboardDarken: 0.5
- _CheckerboardTiling: 1
- _ColorMask: 15
- _ColorReplaceContrast: 1
- _ColorReplaceFade: 1
- _ColorReplaceRange: 0.05
- _ColorReplaceSmoothness: 0.1
- _Contrast: 1
- _CullMode: 0
- _CustomFadeAlpha: 1
- _CustomFadeNoiseFactor: 0
- _CustomFadeSmoothness: 2
- _Diffuse: 0.5
- _DirectionalAlphaFadeFade: 0
- _DirectionalAlphaFadeInvert: 0
- _DirectionalAlphaFadeNoiseFactor: 0.2
- _DirectionalAlphaFadeRotation: 0
- _DirectionalAlphaFadeWidth: 0.2
- _DirectionalDistortionFade: 0
- _DirectionalDistortionInvert: 0
- _DirectionalDistortionNoiseFactor: 0.2
- _DirectionalDistortionRandomDirection: 0.1
- _DirectionalDistortionRotation: 0
- _DirectionalDistortionWidth: 0.5
- _DirectionalGlowFadeFade: 0
- _DirectionalGlowFadeInvert: 0
- _DirectionalGlowFadeNoiseFactor: 0.2
- _DirectionalGlowFadeRotation: 0
- _DirectionalGlowFadeWidth: 0.1
- _EnableAddColor: 0
- _EnableAddHue: 0
- _EnableAlphaTint: 0
- _EnableBlackTint: 0
- _EnableBrightness: 0
- _EnableBurn: 0
- _EnableCamouflage: 0
- _EnableCheckerboard: 0
- _EnableColorReplace: 0
- _EnableContrast: 0
- _EnableCustomFade: 0
- _EnableDirectionalAlphaFade: 0
- _EnableDirectionalDistortion: 0
- _EnableDirectionalGlowFade: 0
- _EnableEnchanted: 0
- _EnableFlame: 0
- _EnableFrozen: 0
- _EnableFullAlphaDissolve: 0
- _EnableFullDistortion: 0
- _EnableFullGlowDissolve: 0
- _EnableGaussianBlur: 0
- _EnableGlitch: 0
- _EnableHalftone: 0
- _EnableHologram: 0
- _EnableHue: 0
- _EnableInkSpread: 0
- _EnableInnerOutline: 0
- _EnableMetal: 0
- _EnableNegative: 0
- _EnableOuterOutline: 0
- _EnablePingPongGlow: 0
- _EnablePixelOutline: 0
- _EnablePixelate: 0
- _EnablePoison: 0
- _EnableRainbow: 0
- _EnableRecolorRGB: 0
- _EnableRecolorRGBYCP: 0
- _EnableSaturation: 0
- _EnableScreenTiling: 0
- _EnableShadow: 0
- _EnableSharpen: 0
- _EnableShiftHue: 0
- _EnableShifting: 0
- _EnableShine: 0
- _EnableSineGlow: 0
- _EnableSineMove: 0
- _EnableSineRotate: 0
- _EnableSineScale: 0
- _EnableSmoke: 0
- _EnableSmoothPixelArt: 0
- _EnableSourceAlphaDissolve: 0
- _EnableSourceGlowDissolve: 0
- _EnableSplitToning: 0
- _EnableSqueeze: 0
- _EnableSquish: 0
- _EnableStrongTint: 0
- _EnableTextureLayer1: 0
- _EnableTextureLayer2: 0
- _EnableUVDistort: 0
- _EnableUVRotate: 0
- _EnableUVScale: 0
- _EnableUVScroll: 0
- _EnableVibrate: 0
- _EnableWiggle: 0
- _EnableWind: 0
- _EnableWorldTiling: 0
- _EnchantedBrightness: 1
- _EnchantedContrast: 0.5
- _EnchantedFade: 1
- _EnchantedLerpToggle: 0
- _EnchantedRainbowDensity: 0.5
- _EnchantedRainbowSaturation: 0.8
- _EnchantedRainbowSpeed: 0.5
- _EnchantedRainbowToggle: 0
- _EnchantedReduce: 0
- _FaceDilate: 0
- _FaceUVSpeedX: 0
- _FaceUVSpeedY: 0
- _FadingFade: 1
- _FadingNoiseFactor: 0.2
- _FadingWidth: 0.3
- _FlameBrightness: 10
- _FlameNoiseFactor: 2.5
- _FlameNoiseHeightFactor: 1.5
- _FlameRadius: 0.2
- _FlameSmooth: 2
- _FrozenContrast: 2
- _FrozenFade: 1
- _FrozenHighlightContrast: 2
- _FrozenHighlightDensity: 1
- _FrozenSnowContrast: 1
- _FrozenSnowDensity: 0.25
- _FullAlphaDissolveFade: 0.5
- _FullAlphaDissolveWidth: 0.5
- _FullDistortionFade: 1
- _FullGlowDissolveFade: 0.5
- _FullGlowDissolveWidth: 0.5
- _GaussianBlurFade: 1
- _GaussianBlurOffset: 0.5
- _GlitchBrightness: 4
- _GlitchFade: 1
- _GlitchHueSpeed: 1
- _GlitchMaskMin: 0.4
- _GlowInner: 0.05
- _GlowOffset: 0
- _GlowOuter: 0.05
- _GlowPower: 0.75
- _GradientScale: 9
- _HalftoneFade: 1
- _HalftoneFadeWidth: 1.5
- _HalftoneInvert: 0
- _HalftoneTiling: 4
- _HologramContrast: 1
- _HologramDistortionDensity: 0.5
- _HologramDistortionOffset: 0.5
- _HologramDistortionScale: 10
- _HologramDistortionSpeed: 2
- _HologramFade: 1
- _HologramLineFrequency: 500
- _HologramLineGap: 3
- _HologramLineSpeed: 0.01
- _HologramMinAlpha: 0.2
- _Hue: 0
- _InkSpreadContrast: 2
- _InkSpreadDistance: 3
- _InkSpreadFade: 1
- _InkSpreadNoiseFactor: 0.5
- _InkSpreadWidth: 0.2
- _InnerOutlineDistortionToggle: 0
- _InnerOutlineFade: 1
- _InnerOutlineOutlineOnlyToggle: 0
- _InnerOutlineTextureToggle: 0
- _InnerOutlineWidth: 0.02
- _IsText: 1
- _IsTextMeshPro: 1
- _LightAngle: 3.1416
- _MaskSoftnessX: 0
- _MaskSoftnessY: 0
- _MetalContrast: 2
- _MetalFade: 1
- _MetalHighlightContrast: 2
- _MetalHighlightDensity: 1
- _MetalMaskToggle: 0
- _NegativeFade: 1
- _OuterOutlineDistortionToggle: 0
- _OuterOutlineFade: 1
- _OuterOutlineOutlineOnlyToggle: 0
- _OuterOutlineTextureToggle: 0
- _OuterOutlineWidth: 0.04
- _OutlineSoftness: 0
- _OutlineUVSpeedX: 0
- _OutlineUVSpeedY: 0
- _OutlineWidth: 0
- _PerspectiveFilter: 0.875
- _PingPongGlowContrast: 1
- _PingPongGlowFade: 1
- _PingPongGlowFrequency: 3
- _PixelOutlineAlphaLimit: 0.5
- _PixelOutlineFade: 1
- _PixelOutlineOutlineOnlyToggle: 0
- _PixelOutlineTextureToggle: 0
- _PixelOutlineWidth: 1
- _PixelPerfectSpace: 0
- _PixelPerfectUV: 0
- _PixelateFade: 1
- _PixelatePixelDensity: 16
- _PixelatePixelsPerUnit: 100
- _PixelsPerUnit: 100
- _PoisonDensity: 3
- _PoisonFade: 1
- _PoisonNoiseBrightness: 2
- _PoisonRecolorFactor: 0.5
- _PoisonShiftSpeed: 0.2
- _RainbowBrightness: 2
- _RainbowContrast: 1
- _RainbowDensity: 0.5
- _RainbowFade: 1
- _RainbowNoiseFactor: 0.2
- _RainbowSaturation: 1
- _RainbowSpeed: 1
- _RecolorRGBFade: 1
- _RecolorRGBTextureToggle: 0
- _RecolorRGBYCPFade: 1
- _RecolorRGBYCPTextureToggle: 0
- _RectHeight: 100
- _RectWidth: 100
- _Reflectivity: 10
- _Saturation: 1
- _ScaleRatioA: 0.8888889
- _ScaleRatioB: 0.7222222
- _ScaleRatioC: 0.7222222
- _ScaleX: 1
- _ScaleY: 1
- _ScreenTilingPixelsPerUnit: 100
- _ScreenWidthUnits: 10
- _ShaderFading: 0
- _ShaderFlags: 0
- _ShaderSpace: 0
- _ShadowFade: 1
- _SharpenFactor: 4
- _SharpenFade: 1
- _SharpenOffset: 2
- _Sharpness: 0
- _ShiftHueSpeed: 0.5
- _ShiftingBrightness: 1
- _ShiftingContrast: 0.5
- _ShiftingDensity: 1.5
- _ShiftingFade: 1
- _ShiftingRainbowToggle: 0
- _ShiftingSaturation: 0.8
- _ShiftingSpeed: 0.5
- _ShineContrast: 2
- _ShineFade: 1
- _ShineFrequency: 0.3
- _ShineMaskToggle: 0
- _ShineRotation: 30
- _ShineSaturation: 0.5
- _ShineSmooth: 1
- _ShineSpeed: 5
- _ShineWidth: 0.1
- _SineGlowContrast: 1
- _SineGlowFade: 1
- _SineGlowFrequency: 4
- _SineGlowMaskToggle: 0
- _SineGlowMax: 1
- _SineGlowMin: 0
- _SineMoveFade: 1
- _SineRotateAngle: 15
- _SineRotateFade: 1
- _SineRotateFrequency: 1
- _SineScaleFrequency: 2
- _SmokeAlpha: 1
- _SmokeDarkEdge: 1
- _SmokeNoiseFactor: 0.4
- _SmokeNoiseScale: 0.5
- _SmokeSmoothness: 1
- _SmokeVertexSeed: 0
- _SourceAlphaDissolveFade: 1
- _SourceAlphaDissolveInvert: 0
- _SourceAlphaDissolveNoiseFactor: 0.2
- _SourceAlphaDissolveWidth: 0.2
- _SourceGlowDissolveFade: 1
- _SourceGlowDissolveInvert: 0
- _SourceGlowDissolveNoiseFactor: 0.2
- _SourceGlowDissolveWidth: 0.1
- _SpecularPower: 2
- _SplitToningBalance: 1
- _SplitToningContrast: 1
- _SplitToningFade: 1
- _SplitToningShift: 0
- _SpriteSheetFix: 0
- _SqueezeFade: 1
- _SqueezePower: 1
- _SquishFade: 1
- _SquishFlip: 0
- _SquishSquish: 0.1
- _SquishStretch: 0.1
- _Stencil: 0
- _StencilComp: 8
- _StencilOp: 0
- _StencilReadMask: 255
- _StencilWriteMask: 255
- _StrongTintContrast: 0
- _StrongTintContrastToggle: 0
- _StrongTintFade: 1
- _StrongTintMaskToggle: 0
- _TMPSmoothness: 5
- _TMPThickness: -0.45
- _TextureHeight: 1024
- _TextureLayer1Columns: 3
- _TextureLayer1Contrast: 1
- _TextureLayer1ContrastToggle: 0
- _TextureLayer1EdgeClip: 0.005
- _TextureLayer1Fade: 1
- _TextureLayer1Rows: 3
- _TextureLayer1ScrollToggle: 0
- _TextureLayer1SheetToggle: 1
- _TextureLayer1Speed: 20
- _TextureLayer1StartFrame: 0
- _TextureLayer2Columns: 3
- _TextureLayer2Contrast: 1
- _TextureLayer2ContrastToggle: 0
- _TextureLayer2EdgeClip: 0.005
- _TextureLayer2Fade: 1
- _TextureLayer2Rows: 3
- _TextureLayer2ScrollToggle: 0
- _TextureLayer2SheetToggle: 1
- _TextureLayer2Speed: 20
- _TextureLayer2StartFrame: 0
- _TextureWidth: 1024
- _TilingFix: 0
- _TimeFPS: 5
- _TimeFrequency: 2
- _TimeRange: 0.5
- _TimeSpeed: 1
- _TimeValue: 0
- _ToggleCustomTime: 0
- _ToggleTimeFPS: 0
- _ToggleTimeFrequency: 0
- _ToggleTimeSpeed: 0
- _ToggleUnscaledTime: 0
- _UIVertexColorAlwaysGammaSpace: 0
- _UVDistortFade: 1
- _UVDistortMaskToggle: 0
- _UVRotateSpeed: 1
- _UnderlayDilate: 0
- _UnderlayOffsetX: 0
- _UnderlayOffsetY: 0
- _UnderlaySoftness: 0
- _UseUIAlphaClip: 0
- _VertexOffsetX: 0
- _VertexOffsetY: 0
- _VertexTintFirst: 0
- _VibrateFade: 1
- _VibrateFrequency: 100
- _VibrateOffset: 0.04
- _VibrateRotation: 4
- _WeightBold: 0.75
- _WeightNormal: 0
- _WiggleFade: 1
- _WiggleFixedGroundToggle: 0
- _WiggleFrequency: 2
- _WiggleOffset: 0.02
- _WiggleSpeed: 2
- _WindFlip: 0
- _WindHighQualityNoise: 0
- _WindIsParallax: 0
- _WindLocalWind: 0
- _WindMaxIntensity: 0.4
- _WindMaxRotation: 2
- _WindMinIntensity: -0.4
- _WindNoiseScale: 0.1
- _WindNoiseSpeed: 1
- _WindRotation: 0
- _WindRotationWindFactor: 1
- _WindSquishFactor: 0.3
- _WindSquishWindFactor: 0
- _WindXPosition: 0
- _WorldTilingPixelsPerUnit: 100
m_Colors:
- _AddColorColor: {r: 2.996078, g: 0, b: 0, a: 0}
- _AlphaTintColor: {r: 95.87451, g: 5.019608, b: 95.87451, a: 0}
- _BlackTintColor: {r: 0, g: 0, b: 1, a: 0}
- _BurnEdgeColor: {r: 11.98431, g: 1.129412, b: 0.1254902, a: 0}
- _BurnEdgeNoiseScale: {r: 0.3, g: 0.3, b: 0, a: 0}
- _BurnInsideColor: {r: 0.75, g: 0.5625, b: 0.525, a: 0}
- _BurnInsideNoiseColor: {r: 3084.047, g: 257.0039, b: 0, a: 0}
- _BurnInsideNoiseScale: {r: 0.5, g: 0.5, b: 0, a: 0}
- _BurnPosition: {r: 0, g: 5, b: 0, a: 0}
- _BurnSwirlNoiseScale: {r: 0.1, g: 0.1, b: 0, a: 0}
- _CamouflageBaseColor: {r: 0.7450981, g: 0.7254902, b: 0.5686274, a: 0}
- _CamouflageColorA: {r: 0.62745106, g: 0.5882353, b: 0.43137258, a: 0}
- _CamouflageColorB: {r: 0.47058815, g: 0.43137258, b: 0.31372547, a: 0}
- _CamouflageDistortionIntensity: {r: 0.1, g: 0.1, b: 0, a: 0}
- _CamouflageDistortionScale: {r: 0.5, g: 0.5, b: 0, a: 0}
- _CamouflageDistortionSpeed: {r: 0.1, g: 0.1, b: 0, a: 0}
- _CamouflageNoiseScaleA: {r: 0.25, g: 0.25, b: 0, a: 0}
- _CamouflageNoiseScaleB: {r: 0.25, g: 0.25, b: 0, a: 0}
- _ClipRect: {r: -32767, g: -32767, b: 32767, a: 32767}
- _Color: {r: 1, g: 1, b: 1, a: 1}
- _ColorReplaceFromColor: {r: 0, g: 0, b: 0, a: 0}
- _ColorReplaceToColor: {r: 0, g: 0, b: 0.2, a: 0}
- _CustomFadeNoiseScale: {r: 1, g: 1, b: 0, a: 0}
- _DirectionalAlphaFadeNoiseScale: {r: 0.3, g: 0.3, b: 0, a: 0}
- _DirectionalDistortionDistortion: {r: 0, g: 0.1, b: 0, a: 0}
- _DirectionalDistortionDistortionScale: {r: 1, g: 1, b: 0, a: 0}
- _DirectionalDistortionNoiseScale: {r: 0.4, g: 0.4, b: 0, a: 0}
- _DirectionalGlowFadeEdgeColor: {r: 11.98431, g: 0.6901961, b: 0.6901961, a: 0}
- _DirectionalGlowFadeNoiseScale: {r: 0.4, g: 0.4, b: 0, a: 0}
- _EnchantedHighColor: {r: 0, g: 0.7098798, b: 4.237095, a: 0}
- _EnchantedLowColor: {r: 2.996078, g: 0, b: 0, a: 0}
- _EnchantedScale: {r: 0.1, g: 0.1, b: 0, a: 0}
- _EnchantedSpeed: {r: 0, g: 1, b: 0, a: 0}
- _EnvMatrixRotation: {r: 0, g: 0, b: 0, a: 0}
- _FaceColor: {r: 1, g: 1, b: 1, a: 1}
- _FadingNoiseScale: {r: 0.2, g: 0.2, b: 0, a: 0}
- _FadingPosition: {r: 0, g: 0, b: 0, a: 0}
- _FlameNoiseScale: {r: 1.2, g: 0.8, b: 0, a: 0}
- _FlameSpeed: {r: 0, g: -0.5, b: 0, a: 0}
- _FrozenHighlightColor: {r: 1.797647, g: 4.604501, b: 5.992157, a: 1}
- _FrozenHighlightDistortion: {r: 0.5, g: 0.5, b: 0, a: 0}
- _FrozenHighlightDistortionScale: {r: 0.2, g: 0.2, b: 0, a: 0}
- _FrozenHighlightDistortionSpeed: {r: -0.05, g: -0.05, b: 0, a: 0}
- _FrozenHighlightScale: {r: 0.2, g: 0.2, b: 0, a: 0}
- _FrozenHighlightSpeed: {r: 0.1, g: 0.1, b: 0, a: 0}
- _FrozenSnowColor: {r: 1.123529, g: 1.373203, b: 1.498039, a: 0}
- _FrozenSnowScale: {r: 0.1, g: 0.1, b: 0, a: 0}
- _FrozenTint: {r: 1.819608, g: 4.611765, b: 5.992157, a: 0}
- _FullAlphaDissolveNoiseScale: {r: 0.1, g: 0.1, b: 0, a: 0}
- _FullDistortionDistortion: {r: 0.2, g: 0.2, b: 0, a: 0}
- _FullDistortionNoiseScale: {r: 0.5, g: 0.5, b: 0, a: 0}
- _FullGlowDissolveEdgeColor: {r: 11.98431, g: 0.627451, b: 0.627451, a: 0}
- _FullGlowDissolveNoiseScale: {r: 0.1, g: 0.1, b: 0, a: 0}
- _GlitchDistortion: {r: 0.1, g: 0, b: 0, a: 0}
- _GlitchDistortionScale: {r: 0, g: 3, b: 0, a: 0}
- _GlitchDistortionSpeed: {r: 0, g: 1, b: 0, a: 0}
- _GlitchMaskScale: {r: 0, g: 0.2, b: 0, a: 0}
- _GlitchMaskSpeed: {r: 0, g: 4, b: 0, a: 0}
- _GlitchNoiseScale: {r: 0, g: 3, b: 0, a: 0}
- _GlitchNoiseSpeed: {r: 0, g: 1, b: 0, a: 0}
- _GlowColor: {r: 0, g: 1, b: 0, a: 0.5}
- _HalftonePosition: {r: 0, g: 0, b: 0, a: 0}
- _HologramTint: {r: 0.3137255, g: 1.662745, b: 2.996078, a: 1}
- _InkSpreadColor: {r: 8.47419, g: 5.013525, b: 0.08873497, a: 0}
- _InkSpreadNoiseScale: {r: 0.4, g: 0.4, b: 0, a: 0}
- _InkSpreadPosition: {r: 0.5, g: -1, b: 0, a: 0}
- _InnerOutlineColor: {r: 11.98431, g: 1.254902, b: 1.254902, a: 1}
- _InnerOutlineDistortionIntensity: {r: 0.01, g: 0.01, b: 0, a: 0}
- _InnerOutlineNoiseScale: {r: 4, g: 4, b: 0, a: 0}
- _InnerOutlineNoiseSpeed: {r: 0, g: 0.1, b: 0, a: 0}
- _InnerOutlineTextureSpeed: {r: 0.5, g: 0, b: 0, a: 0}
- _MaskCoord: {r: 0, g: 0, b: 32767, a: 32767}
- _MetalColor: {r: 5.992157, g: 3.639216, b: 0.3137255, a: 1}
- _MetalHighlightColor: {r: 5.992157, g: 3.796078, b: 0.6588235, a: 1}
- _MetalNoiseDistortion: {r: 0.5, g: 0.5, b: 0, a: 0}
- _MetalNoiseDistortionScale: {r: 0.2, g: 0.2, b: 0, a: 0}
- _MetalNoiseDistortionSpeed: {r: -0.05, g: -0.05, b: 0, a: 0}
- _MetalNoiseScale: {r: 0.25, g: 0.25, b: 0, a: 0}
- _MetalNoiseSpeed: {r: 0.05, g: 0.05, b: 0, a: 0}
- _OuterOutlineColor: {r: 0, g: 0, b: 0, a: 1}
- _OuterOutlineDistortionIntensity: {r: 0.01, g: 0.01, b: 0, a: 0}
- _OuterOutlineNoiseScale: {r: 4, g: 4, b: 0, a: 0}
- _OuterOutlineNoiseSpeed: {r: 0, g: 0.1, b: 0, a: 0}
- _OuterOutlineTextureSpeed: {r: 0.5, g: 0, b: 0, a: 0}
- _OutlineColor: {r: 0, g: 0, b: 0, a: 1}
- _PingPongGlowFrom: {r: 5.992157, g: 0.1882353, b: 0.1882353, a: 0}
- _PingPongGlowTo: {r: 0.1882353, g: 0.1882353, b: 5.992157, a: 0}
- _PixelOutlineColor: {r: 0, g: 0, b: 0, a: 1}
- _PixelOutlineTextureSpeed: {r: 0.5, g: 0, b: 0, a: 0}
- _PoisonColor: {r: 0.3137255, g: 2.996078, b: 0.3137255, a: 0}
- _PoisonNoiseScale: {r: 0.2, g: 0.2, b: 0, a: 0}
- _PoisonNoiseSpeed: {r: 0, g: -0.2, b: 0, a: 0}
- _RainbowCenter: {r: 0, g: 0, b: 0, a: 0}
- _RainbowNoiseScale: {r: 0.2, g: 0.2, b: 0, a: 0}
- _RecolorRGBBlueTint: {r: 1, g: 1, b: 1, a: 0.5019608}
- _RecolorRGBGreenTint: {r: 1, g: 1, b: 1, a: 0.5019608}
- _RecolorRGBRedTint: {r: 1, g: 1, b: 1, a: 0.5019608}
- _RecolorRGBYCPBlueTint: {r: 1, g: 1, b: 1, a: 0.5019608}
- _RecolorRGBYCPCyanTint: {r: 1, g: 1, b: 1, a: 0.5019608}
- _RecolorRGBYCPGreenTint: {r: 1, g: 1, b: 1, a: 0.5019608}
- _RecolorRGBYCPPurpleTint: {r: 1, g: 1, b: 1, a: 0.5019608}
- _RecolorRGBYCPRedTint: {r: 1, g: 1, b: 1, a: 0.5019608}
- _RecolorRGBYCPYellowTint: {r: 1, g: 1, b: 1, a: 0.5019608}
- _ReflectFaceColor: {r: 0, g: 0, b: 0, a: 1}
- _ReflectOutlineColor: {r: 0, g: 0, b: 0, a: 1}
- _ScreenTilingOffset: {r: 0, g: 0, b: 0, a: 0}
- _ScreenTilingScale: {r: 1, g: 1, b: 0, a: 0}
- _ShadowColor: {r: 0, g: 0, b: 0, a: 0}
- _ShadowOffset: {r: 0.05, g: -0.05, b: 0, a: 0}
- _ShiftingColorA: {r: 1.498039, g: 0, b: 0, a: 0}
- _ShiftingColorB: {r: 1.498039, g: 0.7490196, b: 0, a: 0}
- _ShineColor: {r: 11.98431, g: 11.98431, b: 11.98431, a: 0}
- _SineGlowColor: {r: 0, g: 2.007843, b: 2.996078, a: 0}
- _SineMoveFrequency: {r: 1, g: 1, b: 0, a: 0}
- _SineMoveOffset: {r: 0, g: 0.5, b: 0, a: 0}
- _SineRotatePivot: {r: 0.5, g: 0.5, b: 0, a: 0}
- _SineScaleFactor: {r: 0.2, g: 0.2, b: 0, a: 0}
- _SourceAlphaDissolveNoiseScale: {r: 0.3, g: 0.3, b: 0, a: 0}
- _SourceAlphaDissolvePosition: {r: 0, g: 0, b: 0, a: 0}
- _SourceGlowDissolveEdgeColor: {r: 11.98431, g: 0.627451, b: 0.627451, a: 0}
- _SourceGlowDissolveNoiseScale: {r: 0.3, g: 0.3, b: 0, a: 0}
- _SourceGlowDissolvePosition: {r: 0, g: 0, b: 0, a: 0}
- _SpecularColor: {r: 1, g: 1, b: 1, a: 1}
- _SplitToningHighlightsColor: {r: 1, g: 0.1, b: 0.1, a: 0}
- _SplitToningShadowsColor: {r: 0.1, g: 0.4000002, b: 1, a: 0}
- _SpriteSheetRect: {r: 0, g: 0, b: 1, a: 1}
- _SqueezeCenter: {r: 0.5, g: 0.5, b: 0, a: 0}
- _SqueezeScale: {r: 2, g: 0, b: 0, a: 0}
- _StrongTintTint: {r: 1, g: 1, b: 1, a: 1}
- _TextureLayer1Color: {r: 0.4494117, g: 1.298301, b: 2.996079, a: 1}
- _TextureLayer1Offset: {r: 0, g: 0, b: 0, a: 0}
- _TextureLayer1Scale: {r: 1, g: 1, b: 0, a: 0}
- _TextureLayer1ScrollSpeed: {r: 0, g: 1, b: 0, a: 0}
- _TextureLayer2Color: {r: 0.4494117, g: 1.298301, b: 2.996079, a: 1}
- _TextureLayer2Offset: {r: 0, g: 0, b: 0, a: 0}
- _TextureLayer2Scale: {r: 1, g: 1, b: 0, a: 0}
- _TextureLayer2ScrollSpeed: {r: 0, g: 1, b: 0, a: 0}
- _UVDistortFrom: {r: -0.02, g: -0.02, b: 0, a: 0}
- _UVDistortNoiseScale: {r: 0.1, g: 0.1, b: 0, a: 0}
- _UVDistortSpeed: {r: 2, g: 2, b: 0, a: 0}
- _UVDistortTo: {r: 0.02, g: 0.02, b: 0, a: 0}
- _UVRotatePivot: {r: 0.5, g: 0.5, b: 0, a: 0}
- _UVScalePivot: {r: 0.5, g: 0.5, b: 0, a: 0}
- _UVScaleScale: {r: 1, g: 1, b: 0, a: 0}
- _UVScrollSpeed: {r: 0.2, g: 0, b: 0, a: 0}
- _UnderlayColor: {r: 0, g: 0, b: 0, a: 0.5}
- _WorldTilingOffset: {r: 0, g: 0, b: 0, a: 0}
- _WorldTilingScale: {r: 1, g: 1, b: 0, a: 0}
m_BuildTextureStacks: []
m_AllowLocking: 1

View File

@@ -1,8 +1,8 @@
fileFormatVersion: 2
guid: f51589a19ab9f8f46834348da6cf70d0
folderAsset: yes
DefaultImporter:
guid: d1840e4d5c5355a438fd745078e16187
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 2100000
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,111 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!21 &2100000
Material:
serializedVersion: 8
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_Name: ZQK Font SDF Outline
m_Shader: {fileID: 4800000, guid: 68e6db2ebdc24f95958faec2be5558d6, type: 3}
m_Parent: {fileID: 0}
m_ModifiedSerializedProperties: 0
m_ValidKeywords: []
m_InvalidKeywords: []
m_LightmapFlags: 4
m_EnableInstancingVariants: 0
m_DoubleSidedGI: 0
m_CustomRenderQueue: -1
stringTagMap: {}
disabledShaderPasses: []
m_LockedProperties:
m_SavedProperties:
serializedVersion: 3
m_TexEnvs:
- _BumpMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _Cube:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _FaceTex:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _MainTex:
m_Texture: {fileID: -478184148220021899, guid: 21262bfde877c70478b3fcaf0d725c46, type: 2}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _OutlineTex:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
m_Ints: []
m_Floats:
- _Ambient: 0.5
- _Bevel: 0.5
- _BevelClamp: 0
- _BevelOffset: 0
- _BevelRoundness: 0
- _BevelWidth: 0
- _BumpFace: 0
- _BumpOutline: 0
- _ColorMask: 15
- _CullMode: 0
- _Diffuse: 0.5
- _FaceDilate: 0
- _FaceUVSpeedX: 0
- _FaceUVSpeedY: 0
- _GlowInner: 0.05
- _GlowOffset: 0
- _GlowOuter: 0.05
- _GlowPower: 0.75
- _GradientScale: 9
- _LightAngle: 3.1416
- _MaskSoftnessX: 0
- _MaskSoftnessY: 0
- _OutlineSoftness: 0
- _OutlineUVSpeedX: 0
- _OutlineUVSpeedY: 0
- _OutlineWidth: 0.25
- _PerspectiveFilter: 0.875
- _Reflectivity: 10
- _ScaleRatioA: 0.8888889
- _ScaleRatioB: 0.7222222
- _ScaleRatioC: 0.7222222
- _ScaleX: 1
- _ScaleY: 1
- _ShaderFlags: 0
- _Sharpness: 0
- _SpecularPower: 2
- _Stencil: 0
- _StencilComp: 8
- _StencilOp: 0
- _StencilReadMask: 255
- _StencilWriteMask: 255
- _TextureHeight: 1024
- _TextureWidth: 1024
- _UnderlayDilate: 0
- _UnderlayOffsetX: 0
- _UnderlayOffsetY: 0
- _UnderlaySoftness: 0
- _VertexOffsetX: 0
- _VertexOffsetY: 0
- _WeightBold: 0.75
- _WeightNormal: 0
m_Colors:
- _ClipRect: {r: -32767, g: -32767, b: 32767, a: 32767}
- _EnvMatrixRotation: {r: 0, g: 0, b: 0, a: 0}
- _FaceColor: {r: 1, g: 1, b: 1, a: 1}
- _GlowColor: {r: 0, g: 1, b: 0, a: 0.5}
- _MaskCoord: {r: 0, g: 0, b: 32767, a: 32767}
- _OutlineColor: {r: 0, g: 0, b: 0, a: 1}
- _ReflectFaceColor: {r: 0, g: 0, b: 0, a: 1}
- _ReflectOutlineColor: {r: 0, g: 0, b: 0, a: 1}
- _SpecularColor: {r: 1, g: 1, b: 1, a: 1}
- _UnderlayColor: {r: 0, g: 0, b: 0, a: 0.5}
m_BuildTextureStacks: []
m_AllowLocking: 1

View File

@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 538d28bfaad57dc47b726847ab356ae6
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 2100000
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -15,7 +15,7 @@ namespace Cielonos.MainGame.Characters.AI
public override TaskStatus OnUpdate()
{
CooldownTimer cooldownTimer = self.selfTimeSm.coolDownTimers[timerName.Value];
bool conditionMet = checkIfCompleted ? cooldownTimer.IsCompleted : !cooldownTimer.IsCompleted;
bool conditionMet = checkIfCompleted ? cooldownTimer.isCompleted : !cooldownTimer.isCompleted;
return conditionMet ? TaskStatus.Success : TaskStatus.Failure;
}
}

View File

@@ -1,9 +0,0 @@
fileFormatVersion: 2
guid: 762edfd7b07d0234683a7363f84f98c8
folderAsset: yes
timeCreated: 1489330932
licenseType: Store
DefaultImporter:
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -1,3 +0,0 @@
fileFormatVersion: 2
guid: 9e0a8b8cb3a94310a4032b06bb85bc40
timeCreated: 1751091994

View File

@@ -1,24 +0,0 @@
// Copyright (c) Le Loc Tai <leloctai.com> . All rights reserved. Do not redistribute.
using UnityEditor;
using UnityEngine;
namespace LeTai.Common.Editor
{
public static class Assets
{
public static T Find<T>(string assetName, string label = "TranslucentImageEditorResources") where T : Object
{
var guids = AssetDatabase.FindAssets($"l:{label} {assetName}");
if (guids.Length == 0)
{
Debug.LogError($"Asset \"{assetName}\" not found. " +
$"Make sure it have the label \"TranslucentImageEditorResources\"");
return null;
}
var path = AssetDatabase.GUIDToAssetPath(guids[0]);
return AssetDatabase.LoadAssetAtPath<T>(path);
}
}
}

View File

@@ -1,10 +0,0 @@
fileFormatVersion: 2
guid: 62f3490712e742dbafd854da4b66319c
timeCreated: 1751092491
AssetOrigin:
serializedVersion: 1
productId: 78464
packageName: Translucent Image - Fast UI Background Blur
packageVersion: 6.5.0
assetPath: Assets/Le Tai's Asset/Common/Editor/Assets.cs
uploadId: 824068

View File

@@ -1,73 +0,0 @@
// Copyright (c) Le Loc Tai <leloctai.com> . All rights reserved. Do not redistribute.
using System;
using UnityEditor;
using UnityEngine;
namespace LeTai.Common.Editor
{
public static class EditorCustom
{
static readonly GUIContent LABEL = new GUIContent();
public class LabelWidthScope : GUI.Scope
{
readonly float oldLabelWidth;
public LabelWidthScope(float labelWidth)
{
oldLabelWidth = EditorGUIUtility.labelWidth;
EditorGUIUtility.labelWidth = labelWidth;
}
protected override void CloseScope()
{
EditorGUIUtility.labelWidth = oldLabelWidth;
}
}
public static (Rect labelRect, Rect fieldRect) PrefixLabel(Rect rect, int id, GUIContent label)
{
var fieldRect = EditorGUI.PrefixLabel(rect, id, label);
var labelRect = new Rect(rect.x, rect.y, rect.width - fieldRect.width, rect.height);
return (labelRect, fieldRect);
}
public static float LabelFloatField(Rect rectControl, Rect rectLabel, GUIContent label, float value, GUIStyle styleLabel = null, GUIStyle styleField = null)
{
var controlId = GUIUtility.GetControlID(FocusType.Keyboard, rectControl);
EditorGUI.HandlePrefixLabel(rectControl, rectLabel, label, controlId, styleLabel);
return EditorInternal.DoFloatFieldInternal(rectControl, rectLabel, controlId, value, style: styleField);
}
public static void ComputedPropertyField(SerializedProperty property, Func<SerializedProperty, string> compute)
{
using var _ = new EditorGUILayout.HorizontalScope();
EditorGUILayout.PropertyField(property);
EditorGUILayout.LabelField(compute(property), GUILayout.ExpandWidth(false));
}
public static bool LinkButton(string label, params GUILayoutOption[] options)
{
LABEL.text = label;
return LinkButton(LABEL, options);
}
public static bool LinkButton(GUIContent label, params GUILayoutOption[] options)
{
var rect = GUILayoutUtility.GetRect(label, EditorStyles.linkLabel, options);
rect = EditorGUI.IndentedRect(rect);
// var prevHandleColor = Handles.color;
// Handles.color = EditorStyles.linkLabel.normal.textColor;
// Handles.DrawLine(new Vector3(position.xMin + EditorStyles.linkLabel.padding.left, position.yMax),
// new Vector3(position.xMax - EditorStyles.linkLabel.padding.right, position.yMax));
// Handles.color = prevHandleColor;
EditorGUIUtility.AddCursorRect(rect, MouseCursor.Link);
return GUI.Button(rect, label, EditorStyles.linkLabel);
}
}
}

View File

@@ -1,10 +0,0 @@
fileFormatVersion: 2
guid: a42329183e3c49b9a43603047c1a7e92
timeCreated: 1751092578
AssetOrigin:
serializedVersion: 1
productId: 78464
packageName: Translucent Image - Fast UI Background Blur
packageVersion: 6.5.0
assetPath: Assets/Le Tai's Asset/Common/Editor/EditorCustom.cs
uploadId: 824068

View File

@@ -1,69 +0,0 @@
using System;
using System.Reflection;
using UnityEditor;
using UnityEngine;
namespace LeTai.Common.Editor
{
static class EditorInternal
{
static readonly MethodInfo DO_FLOAT_FIELD_METHOD;
#if UNITY_6000_0_OR_NEWER
static readonly PropertyInfo RECYCLED_EDITOR_PROPERTY;
#else
static readonly FieldInfo RECYCLED_EDITOR_PROPERTY;
#endif
static readonly FieldInfo FLOAT_FIELD_FORMAT_STRING_CONST;
static EditorInternal()
{
var editorGUIType = typeof(EditorGUI);
const BindingFlags flags = BindingFlags.NonPublic | BindingFlags.Static;
Type[] argumentTypes = {
Assembly.GetAssembly(editorGUIType).GetType("UnityEditor.EditorGUI+RecycledTextEditor"),
typeof(Rect),
typeof(Rect),
typeof(int),
typeof(float),
typeof(string),
typeof(GUIStyle),
typeof(bool)
};
DO_FLOAT_FIELD_METHOD = editorGUIType.GetMethod("DoFloatField", flags, null, argumentTypes, null);
#if UNITY_6000_0_OR_NEWER
RECYCLED_EDITOR_PROPERTY = editorGUIType.GetProperty("s_RecycledEditor", flags);
#else
RECYCLED_EDITOR_PROPERTY = editorGUIType.GetField("s_RecycledEditor", flags);
#endif
FLOAT_FIELD_FORMAT_STRING_CONST = editorGUIType.GetField("kFloatFieldFormatString", flags);
}
internal static float DoFloatFieldInternal(
Rect position,
Rect dragHotZone,
int id,
float value,
string formatString = null,
GUIStyle style = null,
bool draggable = true
)
{
style = style ?? EditorStyles.numberField;
formatString = formatString ?? (string)FLOAT_FIELD_FORMAT_STRING_CONST.GetValue(null);
var editor = RECYCLED_EDITOR_PROPERTY.GetValue(null);
return (float)DO_FLOAT_FIELD_METHOD.Invoke(null, new[] {
editor,
position,
dragHotZone,
id,
value,
formatString,
style,
draggable
});
}
}
}

View File

@@ -1,10 +0,0 @@
fileFormatVersion: 2
guid: c8c94534f87244218d95b02d343eabf2
timeCreated: 1695375609
AssetOrigin:
serializedVersion: 1
productId: 78464
packageName: Translucent Image - Fast UI Background Blur
packageVersion: 6.5.0
assetPath: Assets/Le Tai's Asset/Common/Editor/EditorInternal.cs
uploadId: 824068

View File

@@ -1,57 +0,0 @@
// Copyright (c) Le Loc Tai <leloctai.com> . All rights reserved. Do not redistribute.
using System;
using UnityEditor;
namespace LeTai.Common.Editor
{
public class EditorPrefValue<T>
{
readonly string key;
readonly T initialValue;
public T Value
{
get
{
if (!EditorPrefs.HasKey(key))
{
Value = initialValue;
return initialValue;
}
return typeof(T) switch {
{ } t when t == typeof(bool) => (T)(object)EditorPrefs.GetBool(key),
{ } t when t == typeof(float) => (T)(object)EditorPrefs.GetFloat(key),
_ => throw new ArgumentException("Type " + typeof(T) + " is not supported.")
};
}
set
{
switch (value)
{
case bool v:
EditorPrefs.SetBool(key, v);
break;
case float v:
EditorPrefs.SetFloat(key, v);
break;
default:
throw new ArgumentException("Type " + typeof(T) + " is not supported.");
}
}
}
public EditorPrefValue(string key, T initialValue = default)
{
this.key = key;
this.initialValue = initialValue;
}
public static implicit operator T(EditorPrefValue<T> value)
{
return value.Value;
}
}
}

View File

@@ -1,10 +0,0 @@
fileFormatVersion: 2
guid: 6654bb5e80e849c999172d15fba0797d
timeCreated: 1751272512
AssetOrigin:
serializedVersion: 1
productId: 78464
packageName: Translucent Image - Fast UI Background Blur
packageVersion: 6.5.0
assetPath: Assets/Le Tai's Asset/Common/Editor/EditorPrefValue.cs
uploadId: 824068

View File

@@ -1,96 +0,0 @@
using System;
using System.Reflection;
using System.Text;
using UnityEditor;
using UnityEngine;
namespace LeTai.Common.Editor
{
public class EditorProperty
{
public readonly SerializedProperty serializedProperty;
readonly SerializedObject serializedObject;
readonly MethodInfo propertySetter;
readonly SerializedProperty dirtyFlag;
public EditorProperty(SerializedObject obj, string name, string serializedName = null)
{
serializedObject = obj;
serializedProperty = FindPropertyByName(serializedObject, name);
propertySetter = serializedObject.targetObject.GetType().GetProperty(name).SetMethod;
dirtyFlag = serializedObject.FindProperty("modifiedFromInspector");
}
static SerializedProperty FindPropertyByName(SerializedObject obj, string name)
{
var sb = new StringBuilder(name.Length + 1);
var lower = sb.Append(char.ToLowerInvariant(name[0])).Append(name[1..]).ToString();
var property = obj.FindProperty(lower);
if (property != null)
return property;
sb.Clear();
property = obj.FindProperty(sb.Append('_').Append(lower).ToString());
if (property != null)
return property;
throw new ArgumentException($"Can't automatically find serialized name for property {name} in {obj.targetObject.GetType()}");
}
public void Draw(params GUILayoutOption[] options)
{
using (var scope = new EditorGUI.ChangeCheckScope())
{
EditorGUILayout.PropertyField(serializedProperty, options);
if (!scope.changed)
return;
if (dirtyFlag != null)
dirtyFlag.boolValue = true;
serializedObject.ApplyModifiedProperties();
if (serializedProperty.propertyType != SerializedPropertyType.Generic) // Not needed for now
{
var propertyValue = GetPropertyValue();
CallSetters(propertyValue);
}
// In case the setter changes any serialized data
serializedObject.Update();
}
}
public void CallSetters(object value)
{
foreach (var target in serializedObject.targetObjects)
propertySetter.Invoke(target, new[] { value });
}
object GetPropertyValue()
{
switch (serializedProperty.propertyType)
{
case SerializedPropertyType.ObjectReference:
return serializedProperty.objectReferenceValue;
case SerializedPropertyType.Float:
return serializedProperty.floatValue;
case SerializedPropertyType.Integer:
return serializedProperty.intValue;
case SerializedPropertyType.Rect:
return serializedProperty.rectValue;
case SerializedPropertyType.Enum:
return serializedProperty.enumValueIndex;
case SerializedPropertyType.Boolean:
return serializedProperty.boolValue;
case SerializedPropertyType.Color:
return serializedProperty.colorValue;
case SerializedPropertyType.Vector2:
return serializedProperty.vector2Value;
default: throw new NotImplementedException($"Type {serializedProperty.propertyType} is not implemented");
}
}
}
}

View File

@@ -1,67 +0,0 @@
// Copyright (c) Le Loc Tai <leloctai.com> . All rights reserved. Do not redistribute.
using System.Collections.Generic;
using System.Linq;
using UnityEditor;
using UnityEditor.Build;
namespace LeTai.Common.Editor
{
public static class EditorUtils
{
public static List<string> GetDefines(BuildTarget buildTarget = BuildTarget.NoTarget)
{
if (buildTarget == BuildTarget.NoTarget)
buildTarget = EditorUserBuildSettings.activeBuildTarget;
var currentGroup = BuildPipeline.GetBuildTargetGroup(buildTarget);
string definesStr;
#if UNITY_2021_2_OR_NEWER
var namedBuildTarget = NamedBuildTarget.FromBuildTargetGroup(currentGroup);
definesStr = PlayerSettings.GetScriptingDefineSymbols(namedBuildTarget);
#else
definesStr = PlayerSettings.GetScriptingDefineSymbolsForGroup(currentGroup);
#endif
return definesStr.Split(';').ToList();
}
public static void SetDefines(IEnumerable<string> defines, BuildTarget buildTarget = BuildTarget.NoTarget)
{
if (buildTarget == BuildTarget.NoTarget)
buildTarget = EditorUserBuildSettings.activeBuildTarget;
var newDefinesStr = string.Join(";", defines);
var currentGroup = BuildPipeline.GetBuildTargetGroup(buildTarget);
#if UNITY_2021_2_OR_NEWER
var namedBuildTarget = NamedBuildTarget.FromBuildTargetGroup(currentGroup);
PlayerSettings.SetScriptingDefineSymbols(namedBuildTarget, newDefinesStr);
#else
PlayerSettings.SetScriptingDefineSymbolsForGroup(currentGroup, newDefinesStr);
#endif
}
public static void AddDefines(HashSet<string> toAdd, BuildTarget buildTarget = BuildTarget.NoTarget)
{
if (buildTarget == BuildTarget.NoTarget)
buildTarget = EditorUserBuildSettings.activeBuildTarget;
var defines = GetDefines(buildTarget);
var missing = toAdd.Except(defines).ToList();
defines.AddRange(missing);
if (missing.Count > 0)
SetDefines(defines, buildTarget);
}
public static void RemoveDefines(HashSet<string> toRemove, BuildTarget buildTarget = BuildTarget.NoTarget)
{
if (buildTarget == BuildTarget.NoTarget)
buildTarget = EditorUserBuildSettings.activeBuildTarget;
var defines = GetDefines(buildTarget);
var removed = defines.Except(toRemove).ToList();
if (removed.Count < defines.Count)
SetDefines(removed, buildTarget);
}
}
}

View File

@@ -1,10 +0,0 @@
fileFormatVersion: 2
guid: cead91eb2ca046498697087e0c426513
timeCreated: 1751099123
AssetOrigin:
serializedVersion: 1
productId: 78464
packageName: Translucent Image - Fast UI Background Blur
packageVersion: 6.5.0
assetPath: Assets/Le Tai's Asset/Common/Editor/EditorUtils.cs
uploadId: 824068

View File

@@ -1,114 +0,0 @@
using UnityEditor;
using UnityEngine;
using EGU = UnityEditor.EditorGUIUtility;
namespace LeTai.Common.Editor
{
public static class EditorGUICustom
{
static readonly Texture2D KNOB_BG_TEXTURE = Assets.Find<Texture2D>("Knob_BG");
static readonly Texture2D KNOB_FG_TEXTURE = Assets.Find<Texture2D>("Knob_FG");
static readonly Color KNOB_BG_COLOR;
static readonly Color KNOB_FG_COLOR;
static readonly Color KNOB_FG_COLOR_ACTIVE;
static EditorGUICustom()
{
if (EGU.isProSkin)
{
KNOB_BG_COLOR = new Color(.164f, .164f, .164f);
KNOB_FG_COLOR = new Color(.701f, .701f, .701f);
KNOB_FG_COLOR_ACTIVE = new Color(.49f, .67f, .94f);
}
else
{
KNOB_BG_COLOR = new Color(.941f, .941f, .941f);
KNOB_FG_COLOR = new Color(.239f, .239f, .239f);
KNOB_FG_COLOR_ACTIVE = new Color(.054f, .274f, .549f);
}
}
public static float KnobField(GUIContent label, float angle, Vector2 zeroVector, float height = 0)
{
if (height <= 0)
height = EGU.singleLineHeight * 1.3f;
float knobSize = height + EGU.standardVerticalSpacing * (4 - 1);
float knobYOffset = (height - knobSize) / 2;
Rect rect = EditorGUILayout.GetControlRect(true, height);
var labelRect = new Rect(rect) {
y = rect.y + (height - EGU.singleLineHeight) / 2,
height = EGU.singleLineHeight
};
var oldLabelWidth = EGU.labelWidth;
EGU.labelWidth -= height;
int fieldId = GUIUtility.GetControlID(FocusType.Keyboard, labelRect);
var fieldRect = EditorGUI.PrefixLabel(labelRect, fieldId, label);
labelRect.xMax = fieldRect.x;
fieldRect.x += height;
fieldRect.width -= height;
Rect knobRect = new Rect(rect.x + EGU.labelWidth + knobYOffset,
rect.y + knobYOffset,
knobSize, knobSize);
angle = Knob(knobRect, angle, zeroVector);
angle = EditorInternal.DoFloatFieldInternal(fieldRect, labelRect, fieldId, angle);
EGU.labelWidth = oldLabelWidth;
return angle;
}
public static float Knob(Rect position, float angle, Vector2 zeroVector)
{
int controlID = GUIUtility.GetControlID(FocusType.Passive, position);
if (Event.current != null)
{
if (Event.current.type == EventType.MouseDown && position.Contains(Event.current.mousePosition))
{
GUIUtility.hotControl = controlID;
var dir = (Event.current.mousePosition - position.center).normalized;
angle = MathCustom.VecToAngle360(zeroVector, dir);
GUI.changed = true;
}
else if (Event.current.type == EventType.MouseUp && GUIUtility.hotControl == controlID)
{
GUIUtility.hotControl = 0;
}
else if (Event.current.type == EventType.MouseDrag && GUIUtility.hotControl == controlID)
{
var dir = (Event.current.mousePosition - position.center).normalized;
angle = MathCustom.VecToAngle360(zeroVector, dir);
GUI.changed = true;
}
else if (Event.current.type == EventType.Repaint)
{
var notRotated = GUI.matrix;
var oldColor = GUI.color;
var highlighted = GUIUtility.hotControl == controlID;
GUIUtility.RotateAroundPivot(angle, position.center);
GUI.color = KNOB_BG_COLOR;
GUI.DrawTexture(position, KNOB_BG_TEXTURE, ScaleMode.ScaleToFit, true, 1);
GUI.color = highlighted ? KNOB_FG_COLOR_ACTIVE : KNOB_FG_COLOR;
GUI.DrawTexture(position, KNOB_FG_TEXTURE, ScaleMode.ScaleToFit, true, 1);
GUI.matrix = notRotated;
GUI.color = oldColor;
}
}
return angle;
}
}
}

View File

@@ -1,16 +0,0 @@
{
"name": "LeTai.Common.Editor",
"rootNamespace": "LeTai.Common.Editor",
"references": ["GUID:07cd4d3e8f0583542ab74e7b8b032f7e"],
"includePlatforms": [
"Editor"
],
"excludePlatforms": [],
"allowUnsafeCode": false,
"overrideReferences": false,
"precompiledReferences": [],
"autoReferenced": true,
"defineConstraints": [],
"versionDefines": [],
"noEngineReferences": false
}

View File

@@ -1,14 +0,0 @@
fileFormatVersion: 2
guid: 6329229812871a6488deb623f659955b
AssemblyDefinitionImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
AssetOrigin:
serializedVersion: 1
productId: 78464
packageName: Translucent Image - Fast UI Background Blur
packageVersion: 6.5.0
assetPath: Assets/Le Tai's Asset/Common/Editor/LeTai.Common.Editor.asmdef
uploadId: 824068

View File

@@ -1,24 +0,0 @@
using UnityEngine;
namespace LeTai.Common.Editor
{
public static class MathCustom
{
public static float VecToAngle360(Vector2 from, Vector2 to)
{
float angle = Vector2.SignedAngle(from, to);
return angle < 0 ? 360 + angle : angle;
}
public static Vector2 Angle360ToVec(float angle, Vector2 zeroVector)
{
float sin = Mathf.Sin(angle * Mathf.Deg2Rad);
float cos = Mathf.Cos(angle * Mathf.Deg2Rad);
return new Vector2(
zeroVector.x * cos - zeroVector.y * sin,
zeroVector.x * sin + zeroVector.y * cos
);
}
}
}

View File

@@ -1,10 +0,0 @@
fileFormatVersion: 2
guid: cd2f496da54e4254ac9c1b0ca2e76fb1
timeCreated: 1695714616
AssetOrigin:
serializedVersion: 1
productId: 78464
packageName: Translucent Image - Fast UI Background Blur
packageVersion: 6.5.0
assetPath: Assets/Le Tai's Asset/Common/Editor/MathCustom.cs
uploadId: 824068

View File

@@ -1,52 +0,0 @@
// Copyright (c) Le Loc Tai <leloctai.com> . All rights reserved. Do not redistribute.
using UnityEditor;
using UnityEngine;
namespace LeTai.Common.Editor
{
[CustomPropertyDrawer(typeof(TinyTween.Spring))]
public class SpringDrawer : PropertyDrawer
{
public override float GetPropertyHeight(SerializedProperty property, GUIContent label)
{
return EditorGUIUtility.singleLineHeight * 2 + EditorGUIUtility.standardVerticalSpacing;
}
public override void OnGUI(Rect position, SerializedProperty property, GUIContent label)
{
EditorGUI.BeginProperty(position, label, property);
SerializedProperty approxDurationProp = property.FindPropertyRelative(nameof(TinyTween.Spring.approxDuration));
SerializedProperty overshootProp = property.FindPropertyRelative(nameof(TinyTween.Spring.overshoot));
SerializedProperty stiffnessProp = property.FindPropertyRelative(nameof(TinyTween.Spring.stiffness));
SerializedProperty dampingProp = property.FindPropertyRelative(nameof(TinyTween.Spring.damping));
position = EditorGUI.PrefixLabel(position, label);
using var _ = new EditorCustom.LabelWidthScope(64f);
using var changes = new EditorGUI.ChangeCheckScope();
float lineHeight = EditorGUIUtility.singleLineHeight;
Rect durationRect = new Rect(position.x, position.y,
position.width, lineHeight);
Rect overshootRect = new Rect(position.x, position.y + lineHeight + EditorGUIUtility.standardVerticalSpacing,
position.width, lineHeight);
float approxDuration = EditorGUI.FloatField(durationRect, "Duration", approxDurationProp.floatValue);
float overshoot = EditorGUI.Slider(overshootRect, "Overshoot", overshootProp.floatValue, 0, .5f);
if (changes.changed)
{
TinyTween.Spring s = TinyTween.Spring.DurationOvershoot(approxDuration, overshoot);
approxDurationProp.floatValue = s.approxDuration;
overshootProp.floatValue = s.overshoot;
stiffnessProp.floatValue = s.stiffness;
dampingProp.floatValue = s.damping;
}
EditorGUI.EndProperty();
}
}
}

View File

@@ -1,10 +0,0 @@
fileFormatVersion: 2
guid: 03b5046c644a48e8a2078a44033e85d0
timeCreated: 1754471011
AssetOrigin:
serializedVersion: 1
productId: 78464
packageName: Translucent Image - Fast UI Background Blur
packageVersion: 6.5.0
assetPath: Assets/Le Tai's Asset/Common/Editor/SpringPropertyDrawer.cs
uploadId: 824068

View File

@@ -1,14 +0,0 @@
{
"name": "LeTai.Common",
"rootNamespace": "LeTai.Common",
"references": [],
"includePlatforms": [],
"excludePlatforms": [],
"allowUnsafeCode": false,
"overrideReferences": false,
"precompiledReferences": [],
"autoReferenced": true,
"defineConstraints": [],
"versionDefines": [],
"noEngineReferences": false
}

View File

@@ -1,14 +0,0 @@
fileFormatVersion: 2
guid: 07cd4d3e8f0583542ab74e7b8b032f7e
AssemblyDefinitionImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
AssetOrigin:
serializedVersion: 1
productId: 78464
packageName: Translucent Image - Fast UI Background Blur
packageVersion: 6.5.0
assetPath: Assets/Le Tai's Asset/Common/Runtime/LeTai.Common.asmdef
uploadId: 824068

View File

@@ -1,37 +0,0 @@
// Copyright (c) Le Loc Tai <leloctai.com> . All rights reserved. Do not redistribute.
using System.Runtime.CompilerServices;
using UnityEngine;
namespace LeTai.Common
{
public static class MaterialUtils
{
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static void SetKeyword(Material mat, string keyword, bool isOn)
{
if (isOn)
mat.EnableKeyword(keyword);
else
mat.DisableKeyword(keyword);
}
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static void CopyKeyword(Material src, Material dst, string keyword)
{
SetKeyword(dst, keyword, src.IsKeywordEnabled(keyword));
}
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static void CopyFloat(Material src, Material dst, int id)
{
dst.SetFloat(id, src.GetFloat(id));
}
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static void CopyVector(Material src, Material dst, int id)
{
dst.SetVector(id, src.GetVector(id));
}
}
}

View File

@@ -1,10 +0,0 @@
fileFormatVersion: 2
guid: 7a120429bba141f3be27a147bcf46023
timeCreated: 1752050295
AssetOrigin:
serializedVersion: 1
productId: 78464
packageName: Translucent Image - Fast UI Background Blur
packageVersion: 6.5.0
assetPath: Assets/Le Tai's Asset/Common/Runtime/MaterialUtils.cs
uploadId: 824068

View File

@@ -1,111 +0,0 @@
// Copyright (c) Le Loc Tai <leloctai.com> . All rights reserved. Do not redistribute.
using System;
using System.Runtime.CompilerServices;
using UnityEngine;
namespace LeTai.Common
{
public static class Packing
{
/// <summary>
/// Packs floats into a single float, using up to 30 bits.
/// The mapping guarantees the resulting float is not NaN, Inf, or subnormal.
/// </summary>
public readonly struct FloatPacker
{
private readonly int _bitsPerFloat;
private readonly uint _payload;
private readonly int _nBitsUsed;
private FloatPacker(uint payload, int nBitsUsed, int bitsPerFloat)
{
_payload = payload;
_nBitsUsed = nBitsUsed;
_bitsPerFloat = bitsPerFloat;
}
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static FloatPacker Varying() => new FloatPacker(0u, 0, 0);
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static FloatPacker Uniform(int bitsPerFloat) => new FloatPacker(0u, 0, bitsPerFloat);
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public FloatPacker Enqueue(float value, float min, float max, int nBits)
{
if (nBits == 0)
throw new ArgumentException($"Use {nameof(Uniform)} or specify {nameof(nBits)}");
uint q = Quantize(value, min, max, nBits);
return new FloatPacker((q << _nBitsUsed) | _payload, _nBitsUsed + nBits, _bitsPerFloat);
}
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public FloatPacker Enqueue(float value, float min, float max) => Enqueue(value, min, max, _bitsPerFloat);
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public FloatPacker Enqueue(float value, float max) => Enqueue(value, 0, max, _bitsPerFloat);
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public float Finish()
{
if (_nBitsUsed > 30)
throw new ArgumentOutOfRangeException(nameof(_nBitsUsed), $"Must use <= 30 bits. Requesting {_nBitsUsed} bits");
uint bits = EnsureNormalFloatExponent(_payload);
return UintToFloatBits(bits);
}
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static implicit operator float(FloatPacker packer) => packer.Finish();
}
/// <summary>
/// Packs floats into a single float, using up to 30 bits.
/// The mapping guarantees the resulting float is not NaN, Inf, or subnormal.
/// </summary>
public static float PackFloatsSafe(
float a, float minA, float maxA, int nBitsA,
float b, float minB, float maxB, int nBitsB
)
{
if (nBitsA + nBitsB > 30)
throw new ArgumentOutOfRangeException(nameof(nBitsA), $"{nameof(nBitsA)} + {nameof(nBitsB)} must be <= 30");
uint aQuantized = Quantize(a, minA, maxA, nBitsA);
uint bQuantized = Quantize(b, minB, maxB, nBitsB);
uint payload = (aQuantized << nBitsB) | bQuantized; // [0, (1u << 30) - 1]
uint bits = EnsureNormalFloatExponent(payload);
return UintToFloatBits(bits);
}
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static uint Quantize(float x, float min, float max, int nBits)
{
// Not checking positive range for speed.
float normalized = Mathf.Clamp((x - min) / (max - min), 0f, 1f);
uint maxQuantized = (1u << nBits) - 1u;
return (uint)(normalized * maxQuantized + 0.5f);
}
[MethodImpl(MethodImplOptions.AggressiveInlining)]
private static uint EnsureNormalFloatExponent(uint bits)
{
uint exponent = (bits >> 23) + 1;
uint mantissa = bits & 0x7FFFFFu;
return (exponent << 23) | mantissa;
}
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static float UintToFloatBits(uint bits)
{
byte[] bytes = BitConverter.GetBytes(bits);
return BitConverter.ToSingle(bytes, 0);
}
}
}

View File

@@ -1,10 +0,0 @@
fileFormatVersion: 2
guid: 0f7cb69b8d944a1b9553e8795472f6e1
timeCreated: 1750649405
AssetOrigin:
serializedVersion: 1
productId: 78464
packageName: Translucent Image - Fast UI Background Blur
packageVersion: 6.5.0
assetPath: Assets/Le Tai's Asset/Common/Runtime/Packing.cs
uploadId: 824068

View File

@@ -1,44 +0,0 @@
// Copyright (c) Le Loc Tai <leloctai.com> . All rights reserved. Do not redistribute.
using UnityEngine;
namespace LeTai.Common
{
public static class RectTransformUtilityPatch
{
public static Ray ScreenPointToRay(Camera cam, Vector2 screenPos)
{
if (cam != null)
return cam.ScreenPointToRay(screenPos);
Vector3 pos = screenPos;
pos.z -= 1e4f; // Larger offset to account for rotation
return new Ray(pos, Vector3.forward);
}
public static bool ScreenPointToWorldPointInRectangle(RectTransform rect, Vector2 screenPoint, Camera cam, out Vector3 worldPoint)
{
worldPoint = Vector2.zero;
Ray ray = ScreenPointToRay(cam, screenPoint);
var plane = new Plane(rect.rotation * Vector3.back, rect.position);
// Remove unnecessary parallel check
if (!plane.Raycast(ray, out var dist))
return false;
worldPoint = ray.GetPoint(dist);
return true;
}
public static bool ScreenPointToLocalPointInRectangle(RectTransform rect, Vector2 screenPoint, Camera cam, out Vector2 localPoint)
{
localPoint = Vector2.zero;
if (ScreenPointToWorldPointInRectangle(rect, screenPoint, cam, out Vector3 worldPoint))
{
localPoint = rect.InverseTransformPoint(worldPoint);
return true;
}
return false;
}
}
}

View File

@@ -1,10 +0,0 @@
fileFormatVersion: 2
guid: f995fa15a6db4214a82ce742668df43c
timeCreated: 1752649074
AssetOrigin:
serializedVersion: 1
productId: 78464
packageName: Translucent Image - Fast UI Background Blur
packageVersion: 6.5.0
assetPath: Assets/Le Tai's Asset/Common/Runtime/RectTransformUtility.cs
uploadId: 824068

View File

@@ -1,45 +0,0 @@
// Copyright (c) Le Loc Tai <leloctai.com> . All rights reserved. Do not redistribute.
using System;
using UnityEngine;
namespace LeTai.Common
{
public static class SpanUtils
{
public static Vector4 ToVector4(ReadOnlySpan<float> span)
{
return new Vector4(span[0], span[1], span[2], span[3]);
}
public static SpanWriter<T> WriterFor<T>(Span<T> span) => new(span);
}
public ref struct SpanWriter<T>
{
readonly Span<T> _span;
int _nextIndex;
public SpanWriter(Span<T> span)
{
_span = span;
_nextIndex = 0;
}
public void Reset() => _nextIndex = 0;
public void Write(T value)
{
_span[_nextIndex++] = value;
}
public void FillRest(T value = default)
{
if (_nextIndex == _span.Length)
return;
_span[_nextIndex..].Fill(value);
_nextIndex = _span.Length;
}
}
}

View File

@@ -1,10 +0,0 @@
fileFormatVersion: 2
guid: f5ce123a774b475b90b9794e77ef7e20
timeCreated: 1758619324
AssetOrigin:
serializedVersion: 1
productId: 78464
packageName: Translucent Image - Fast UI Background Blur
packageVersion: 6.5.0
assetPath: Assets/Le Tai's Asset/Common/Runtime/SpanUtils.cs
uploadId: 824068

View File

@@ -1,245 +0,0 @@
// Copyright (c) Le Loc Tai <leloctai.com> . All rights reserved. Do not redistribute.
using System;
using System.Collections.Generic;
using UnityEngine;
namespace LeTai.Common
{
public class TinyTween : MonoBehaviour
{
[Serializable]
public struct Spring
{
public float stiffness;
public float damping;
public float approxDuration;
public float overshoot;
public static readonly Spring DEFAULT = DurationOvershoot(.5f, .1f);
private Spring(float stiffness, float damping, float approxDuration, float overshoot)
{
this.stiffness = stiffness;
this.damping = damping;
this.approxDuration = approxDuration;
this.overshoot = overshoot;
}
public static Spring DurationOvershoot(float approxDuration, float overshoot)
{
approxDuration = Mathf.Max(0.001f, approxDuration);
overshoot = Mathf.Clamp(overshoot, 0f, 0.999f);
float z;
if (overshoot < 1e-3f)
{
z = 1f;
}
else
{
float lnOvershoot = Mathf.Log(overshoot);
z = -lnOvershoot / Mathf.Sqrt(Mathf.PI * Mathf.PI + lnOvershoot * lnOvershoot);
}
float wn = 2f * Mathf.PI / approxDuration;
wn = -Mathf.Log(2e-3f) / (z * approxDuration);
float k = wn * wn;
float c = 2f * z * wn;
return new Spring(k, c, approxDuration, overshoot);
}
}
private static class Ops<TValue>
{
public static readonly Func<TValue, TValue, TValue> ADD;
public static readonly Func<TValue, TValue, TValue> SUB;
public static readonly Func<TValue, float, TValue> MUL;
public static readonly Func<TValue, bool> IS_NEAR_ZERO;
static Ops()
{
const float threshold = 2e-3f;
Ops<float>.ADD = (a, b) => a + b;
Ops<float>.SUB = (a, b) => a - b;
Ops<float>.MUL = (a, s) => a * s;
Ops<float>.IS_NEAR_ZERO = v => Mathf.Abs(v) < threshold;
Ops<Vector2>.ADD = (a, b) => a + b;
Ops<Vector2>.SUB = (a, b) => a - b;
Ops<Vector2>.MUL = (a, s) => a * s;
Ops<Vector2>.IS_NEAR_ZERO = v => v.sqrMagnitude < (threshold * threshold);
Ops<Vector3>.ADD = (a, b) => a + b;
Ops<Vector3>.SUB = (a, b) => a - b;
Ops<Vector3>.MUL = (a, s) => a * s;
Ops<Vector3>.IS_NEAR_ZERO = v => v.sqrMagnitude < (threshold * threshold);
Ops<Color>.ADD = (a, b) => a + b;
Ops<Color>.SUB = (a, b) => a - b;
Ops<Color>.MUL = (a, s) => a * s;
Ops<Color>.IS_NEAR_ZERO = c => (c.r * c.r + c.g * c.g + c.b * c.b + c.a * c.a) < (threshold * threshold);
}
}
private static class Ops
{
public static T Add<T>(T a, T b) => Ops<T>.ADD(a, b);
public static T Sub<T>(T a, T b) => Ops<T>.SUB(a, b);
public static T Mul<T>(T a, float s) => Ops<T>.MUL(a, s);
public static bool IsNearZero<T>(T v) => Ops<T>.IS_NEAR_ZERO(v);
}
private abstract class Tween
{
protected Spring spring;
public abstract bool MaybeRetarget(object newContext, Delegate newOnUpdate, object newTarget);
public abstract bool Tick(float dt);
public abstract void Reset();
}
private static readonly Dictionary<Type, Stack<Tween>> TWEEN_POOLS = new(16);
private static TinyTween instance;
private readonly List<Tween> _activeTweens = new();
private class Tween<TCtx, TVal> : Tween where TCtx : class
{
private TCtx _context;
private Action<TCtx, TVal> _onUpdate;
private TVal _target;
private TVal _current;
private TVal _velocity;
public void Setup(TCtx ctx, TVal from, TVal to, Spring spring, Action<TCtx, TVal> update)
{
_context = ctx;
_onUpdate = update;
_target = to;
_current = from;
_velocity = default;
this.spring = spring;
}
public override bool MaybeRetarget(object newContext, Delegate newOnUpdate, object newTarget)
{
if (newTarget is TVal val
&& ReferenceEquals(_context, newContext)
&& ReferenceEquals(_onUpdate, newOnUpdate))
{
_target = val;
return true;
}
return false;
}
public override bool Tick(float dt)
{
if (_context is UnityEngine.Object uc && !uc)
return true;
if (_context == null)
return true;
TVal force = Ops.Mul(Ops.Sub(_target, _current), spring.stiffness);
TVal dampingForce = Ops.Mul(_velocity, spring.damping);
TVal acceleration = Ops.Sub(force, dampingForce);
_velocity = Ops.Add(_velocity, Ops.Mul(acceleration, dt));
_current = Ops.Add(_current, Ops.Mul(_velocity, dt));
var shouldStop = Ops.IsNearZero(Ops.Sub(_target, _current))
&& Ops.IsNearZero(_velocity);
if (shouldStop)
_current = _target;
try
{
_onUpdate?.Invoke(_context, _current);
}
catch (Exception e)
{
Debug.LogException(e);
return true;
}
return shouldStop;
}
public override void Reset()
{
_context = null;
_onUpdate = null;
}
}
public static void Animate<TCtx, TVal>(TCtx context, TVal from, TVal to, Action<TCtx, TVal> onUpdate, Spring? spring = null) where TCtx : class
{
if (!instance)
{
// ReSharper disable once Unity.PerformanceCriticalCodeInvocation
instance = new GameObject("[TinyTween]").AddComponent<TinyTween>();
DontDestroyOnLoad(instance.gameObject);
}
for (int i = 0; i < instance._activeTweens.Count; i++)
{
// ReSharper disable once Unity.PerformanceCriticalCodeInvocation
if (instance._activeTweens[i].MaybeRetarget(context, onUpdate, to))
return;
}
Tween<TCtx, TVal> newTween = null;
Type tweenType = typeof(Tween<TCtx, TVal>);
if (TWEEN_POOLS.TryGetValue(tweenType, out var pool) && pool.Count > 0)
{
newTween = (Tween<TCtx, TVal>)pool.Pop();
}
newTween ??= new Tween<TCtx, TVal>();
newTween.Setup(context, from, to, spring ?? Spring.DEFAULT, onUpdate);
instance._activeTweens.Add(newTween);
}
private void Update()
{
if (_activeTweens.Count == 0) return;
for (int i = _activeTweens.Count - 1; i >= 0; i--)
{
var tween = _activeTweens[i];
if (tween.Tick(Time.deltaTime))
{
SwapAndPop(_activeTweens, i);
tween.Reset();
Type tweenType = tween.GetType();
if (!TWEEN_POOLS.TryGetValue(tweenType, out var pool))
{
pool = new Stack<Tween>();
TWEEN_POOLS[tweenType] = pool;
}
pool.Push(tween);
}
}
}
static void SwapAndPop<T>(List<T> list, int index)
{
int last = list.Count - 1;
list[index] = list[last];
list.RemoveAt(last);
}
public static void Move(RectTransform rt, Vector2 to, Spring? spring = null)
{
Animate(rt, rt.anchoredPosition, to, MOVE, spring);
}
static readonly Action<RectTransform, Vector3> MOVE = static (rt, pos) => rt.anchoredPosition = pos;
}
}

View File

@@ -1,10 +0,0 @@
fileFormatVersion: 2
guid: ab81ce18ae98496393c4e9021cd90940
timeCreated: 1752827241
AssetOrigin:
serializedVersion: 1
productId: 78464
packageName: Translucent Image - Fast UI Background Blur
packageVersion: 6.5.0
assetPath: Assets/Le Tai's Asset/Common/Runtime/TinyTween.cs
uploadId: 824068

View File

@@ -1,9 +0,0 @@
fileFormatVersion: 2
guid: f7d17cc01badd084cb6b9f7806e16fc6
folderAsset: yes
timeCreated: 1474981563
licenseType: Store
DefaultImporter:
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -1,346 +0,0 @@
Changelog:
v6.5.0:
- Add selector to swap between multiple Sources on the same Camera
- Fix multiple sources not working in URP
- Fix editor error when using Source without Config
- Improve URP compatibility in certain configurations
- Fix demo looking incorrect
v6.4.1:
- Fix compilation error in URP
- Fix brightness control not working correctly in gamma space
v6.4.0:
- Finer brightness control at low brightness. You may need to adjust your brightness value to compensate.
- Fix dithering artifacts at high blur level
- Fix dithering being too visible at low brightness
- Fix blur Strength overwriting settings in Advanced mode when not interacted with
v6.3.0:
- Add a shortcut to edit blur strength from Translucent Image
- Small bug fixes
v6.2.2:
- Fix True Shadow integration
v6.2.1:
- Fix culling not taking Ring Thickness into account
v6.2.0:
- Paraform: Ring Thickness feature lets you create ring-shaped UIs.
v6.1.0:
- Smoother blur
- New blur Modes:
- Performance mode costs the same as before while being a little bit smoother.
- Balanced mode is extra smooth and costs a bit more.
- Balanced is the new default. If you're targeting low-end hardware, consider setting it back to Performance.
- Fix blur quality being unstable at different resolution
- Fix blur strength not staying constant at different screen density and aspects.
This behavior is now configurable, but should not need to be configured in most cases
- Fix heap allocation when using Render Graph
- Fix minor editor issues
v6.0.0:
!! This is a major release indicating breaking changes !!
- The minimum supported Unity version is now 2021.3
- New Colorful Background Mode that maintains both background colors and foreground contrasts
- Move appearance properties out of material, improving scripting ergonomic, performance, and batching efficiency
- Fix dark background being slightly brighter than expected
- Improve URP performance. No longer requires CameraColorTexture
- No longer dispatch an empty render pass if no Translucent Images are visible
- Other minors under the hood fixes and improvements
*Migration*
- Use Tools > Translucent Image > Migrate to 6.0 to migrate all material settings in the opened scene
to the corresponding component. Make sure to have a backup.
- Optional: refactor spriteBlending -> foregroundOpacity
- Optional: try the new Colorful Background Mode. Appearance properties will need to be adjusted.
v5.5.0:
- Display Source's strength in Translucent Image's inspector Source picker to easier distinguish multiple Sources on the same Camera
- Fix some inspector values not updating immediately when changing blur config
- Fix nullref when destroying Translucent Images at runtime
- Fix Skip Culling not working in certain situations
- Fix background not working in certain situations
v5.4.1:
- Fix Translucent Images temporarily stop working after undoing material settings
- Fix erroneous error logging
v5.4.0:
- Fix demo scene colors
v5.3.0:
- Fix vertex color, such as from mesh effect shadow and outline, not being applied correctly
v5.2.0:
- Reduce banding
- Improve default settings
- Improve documentation
v5.1.0:
- Increase the minimum supported Unity version to 2020.3 or BiRP and 2021.3 for URP
- New Cull Padding setting to account for UI movement while using limited Update Rate
- Culling now take into account the Camera's viewport
- Support Rect Mask Softness
- Support Canvas feature: Vertex Color Always In Gamma Color Space
- Fix artifact with certain sprites on hdr background
v5.0.2:
- Fix exception in certain cases
v5.0.1:
- Fix exception in certain cases
v5.0.0:
!! This is a major release indicating breaking changes !!
- Culling system minimize GPU usage by only blur part of the screen covered by Translucent Images
- Significant improvement to CPU usage for scenes with a large number of Translucent Images
- Fix Flatten property not working correctly on dark Images
- Update the demo scenes for the Builtin Render Pipeline to be the same as URP
- Simpler API for controlling blur strength
- Improve compatibility with Unity 6
- Other minor fixes and improvements
Breaking changes:
- Appearance properties on Translucent Image is deprecated. Instead, set these values on the material directly
- TranslucentImageSource.Request() is replaced by (Un)RegisterActivePointsProvider() . This is only needed if
you access the blurred texture directly.
- Extensions methods are moved into helper classes to avoid name collision
v4.4.2:
- Fix blank background in the first frame
v4.4.1:
- Improve compatibility with 2D renderer in Unity 2022
- Improve compatibility with Unity 6
- Improve editor performance when using URP
v4.4.0:
- More stable blur Strength calculation
- Fix compilation error in very old 2021.3 patch releases
- Fix error when using extremely large blur
- Remove Max Depth property
- Under the hood changes to prepare for 2023.3 URP
v4.3.0:
This is a re-release of the 4.1.0 release with hopefully less bugs.
- Preparation to support Unity 2023.3 URP
- Bug fixes
v4.2.0:
- Temporarily rollback 4.1.0 due to bugs
v4.1.0:
- Preparation to support Unity 2023.3 URP
- Fix spurious warning
v4.0.1:
- Fix issue in build
v4.0.0:
This is a major version bump signifying breaking changes.
Make sure you have your project committed to version control before upgrading
- Automatically pause blurring when there are no Translucent Images active
- Allow filling the black void when using VR Passthrough and Underlay with a custom color
- Improves prefab support
- Other under-the-hood improvements
v3.18.0:
- Improve support for newer versions of 2D Renderer
- Add workaround for buggy URP versions
- Blit mode selection is now completely automatic
v3.17.0:
- Restore support for the URP 2D Renderer in newer Unity versions
v3.16.2:
- Fix incorrect warning when used with True Shadow
v3.16.1:
- Improve compatibility with Unity 2023
v3.16.0:
- Fix incorrect rendering when using non default viewport in URP.
As a result of this change, Blur Region is now relative to the actual viewport, instead of the one show in the Camera inspector. You may need to re-tune your Blur Region.
v3.15.0:
- Fix color space mixed up. Your UIs appearance may change after this update.
v3.14.6:
- Fix compatibility with 2021.3.13 URP
v3.14.5:
- Fix editor script being included in build
- Reorder create asset menu
v3.14.4:
- Fix phantom windows again
v3.14.3:
- Fix phantom windows in some Unity versions
v3.14.2:
- Warn if Renderer Feature is missing in URP project
v3.14.1:
- Fix some gizmo icons not showing in newer Unity versions
v3.14.0:
- Improve compatibility with URP 13
v3.13.0:
- Drop support for URP's 2D Renderer. It is too locked down and buggy at the moment
v3.12.0:
- Improve compatibility with URP 12.1.7
v3.11.0:
- Allow rendering before post-processing to work-around URP 2D renderer issue.
v3.10.3:
- Fix shader compilation on GLES 2.0
v3.10.2:
- Fix sprite blending property not applied correctly
v3.10.1:
- Improve allocation behaviour
v3.10.0:
- Fix Single Pass Instanced Stereo rendering
v3.9.0:
- Improve error logging to be more relevant
- Assigning Source property on Translucent Image is now easier with automatic suggestions
- Fix compatibility with webgl in less capable browsers
- Improve compatibility with URP 12.1.2
v3.8.3:
- Workflow improvements on URP 12
v3.8.2:
- Fix some bugs on URP 12
v3.8.1:
- Fix some bugs on URP 12
v3.8.0:
- Support URP 12
- Fix prefab mode warning
v3.7.0:
- Support latest True Shadow release
- Fix spurious error messages
- Improve PlayStation compatibility
v3.6.0:
- Support Single Pass Instanced Stereo Render Mode
- Reduce log level
v3.5.1:
- Reduce error logging.
- Improve compatibility with Addressable.
v3.5.0:
- Changing Sprite Blending from script is now applied immediately.
TranslucentImage.spriteBlending is now a property instead of a field.
- You can now move the asset to a different path
v3.4.2:
- Fix blur config not saved
- Fix prefab instance not marked dirty
v3.4.1:
- Improve documentation
v3.4.0:
URP:
- Remove slow workaround for Unity bugs #1196219. Please update your URP package to 7.2.0 or newer.
- Downsampling and Blur Region now work with URP.
- Various fixes and optimizations.
v3.3.1:
- True Shadow integration: Fix shadow color not react correctly to Translucent Image color
v3.3.0:
Breaking changes:
- Upgraded to Unity 2019.4
- Remove deprecated LWRP package. URP continue to be supported.
- Translucent Image is now compatible with True Shadow.
v3.2.4:
- Fix memory leak when Translucent Image Source are destroyed.
v3.2.3:
- Example scene for blurring UI in URP
v3.2.2:
- Fix preview features sometime not work in URP
- Fix persistent black UI when not in play mode
- Hide some harmless errors in demo scene
- Fix RegisterSource() throw exception
- Some other small changes
v3.2.1:
- Convert Image to Translucent Image with context menu item
- Some small fixes and enhancements
v3.2.0:
Breaking changes: existing projects with Editor/Runtime version lower than these should not install this update.
- Upgraded to Unity 2018.4 to follow new Asset Store requirements
- Upgraded to .NET 4.x Equivalent Runtime, as .NET 3.5 is deprecated in Unity 2018
- Blur Region now can be controlled using on-screen GUI in the Game View when in Preview mode
- Help button on components now open appropriated documentation page
- Fix an issue with non fullscreen Camera Viewport Rect
- Fix missing namespace in some demo scripts
v3.1.1:
- Fix issue with URP Post Processing
v3.1.0:
*** Breaking change for LWRP project ***
- If you're using the asset in an existing LWRP project, please delete its folder first and import it again to avoid issue.
- If you're using the "Demo Forward Renderer" and "Demo LightweightRenderPipelineAsset", you'll have to replace them with the new one located in "Universal RP/'Configs" folder. I recommend creating your own, specific to your project.
***
- Added Universal RP support. LWRP support package is included for compatibility with older Unity version, but will not be updated anymore.
- Fix some small bugs.
v3.0.5:
- Added demo and documentation for setting up Translucent Images in world space.
- Disable scene gizmos.
v3.0.4:
- Better default file name when creating Blur Config from Translucent Image Source.
- Some improvement to error messages
v3.0.3:
- Fixed some bugs in demo scene
v3.0.2:
- Fixed some bugs on LWRP
- Added new demo for LWRP
v3.0.1:
- Fix compatibility issue with Post Processing Stack on LWRP
v3.0:
!!!Warning!!! Breaking changes:
- Blur Config now stored as asset file, allows for sharing of configuration between different Cameras/Scenes/Projects. You will need to re-config your all of your Translucent Image Sources. Settings on Translucent Images will be fine.
- Blur Size now called Radius to align with other software.
Added:
- Initial LWRP support. Please visit the documentation for setup guide.
- Bug fixes and performance improvements.
- A lot of ground work for additional blur algorithms (none added yet).
- Probably bugs. 😩
Changed:
- Minimum supported Unity version is now 2017.4
- Clearer preview box.

View File

@@ -1,14 +0,0 @@
fileFormatVersion: 2
guid: c5a3f80713b8e364e883263b67113edf
TextScriptImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
AssetOrigin:
serializedVersion: 1
productId: 78464
packageName: Translucent Image - Fast UI Background Blur
packageVersion: 6.5.0
assetPath: Assets/Le Tai's Asset/TranslucentImage/CHANGELOG.txt
uploadId: 824068

View File

@@ -1,21 +0,0 @@
{
"name": "LeTai.Asset.TranslucentImage",
"rootNamespace": "",
"references": [
"GUID:7ab3663edede26740845931880bf22af",
"GUID:e0cd26848372d4e5c891c569017e11f1",
"GUID:2665a8d13d1b3f18800f46e256720795",
"GUID:07cd4d3e8f0583542ab74e7b8b032f7e",
"GUID:c131f8808d09e154c956e66d97dd723c",
"GUID:f063c9eabb2dec74ca53a0523cc14584"
],
"includePlatforms": [],
"excludePlatforms": [],
"allowUnsafeCode": true,
"overrideReferences": false,
"precompiledReferences": [],
"autoReferenced": true,
"defineConstraints": [],
"versionDefines": [],
"noEngineReferences": false
}

View File

@@ -1,14 +0,0 @@
fileFormatVersion: 2
guid: ff218ee40fe2b8648ab3234d56415557
AssemblyDefinitionImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
AssetOrigin:
serializedVersion: 1
productId: 78464
packageName: Translucent Image - Fast UI Background Blur
packageVersion: 6.5.0
assetPath: Assets/Le Tai's Asset/TranslucentImage/LeTai.TranslucentImage.asmdef
uploadId: 824068

View File

@@ -1,125 +0,0 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!21 &2100000
Material:
serializedVersion: 8
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_Name: Default-Translucent
m_Shader: {fileID: 4800000, guid: b1115addd36579a429d5e6b4ffae668d, type: 3}
m_Parent: {fileID: 0}
m_ModifiedSerializedProperties: 0
m_ValidKeywords:
- _BACKGROUND_MODE_COLORFUL
m_InvalidKeywords:
- _EMISSION
- _FOREGROUND_MODE_COLORFUL
- _REFRACTION_MODE_ON
m_LightmapFlags: 1
m_EnableInstancingVariants: 0
m_DoubleSidedGI: 0
m_CustomRenderQueue: -1
stringTagMap: {}
disabledShaderPasses: []
m_LockedProperties:
m_SavedProperties:
serializedVersion: 3
m_TexEnvs:
- _BlurTex:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _BumpMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _DetailAlbedoMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _DetailMask:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _DetailNormalMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _EmissionMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _MainTex:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _Mask:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _MetallicGlossMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _OcclusionMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _ParallaxMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
m_Ints: []
m_Floats:
- _BACKGROUND_MODE: 1
- _Brightness: 0.8
- _BumpScale: 1
- _ChromaticDispersion: 0.5
- _ColorMask: 15
- _Constrast: 0.1
- _Cutoff: 0.5
- _DetailNormalMapScale: 1
- _DstBlend: 0
- _EDGE_LIGHT_MODE: 0
- _EdgeGlint1Strength: 0.25
- _EdgeGlint2Strength: 0.1
- _EdgeGlintSharpness: 512
- _EdgeGlintWrap: 1
- _EdgeLight1Strength: 0.65
- _EdgeLight2Strength: 0.25
- _FOREGROUND_MODE: 1
- _Flatten: 0
- _ForegroundOpacity: 0.5
- _GlossMapScale: 1
- _Glossiness: 0.5
- _GlossyReflections: 1
- _Lightness: 1
- _Metallic: 0
- _Mode: 0
- _OcclusionStrength: 1
- _Parallax: 0.02
- _REFRACTION_MODE: 1
- _RefractiveIndex: 1.5
- _SmoothnessTextureChannel: 0
- _SpecularHighlights: 1
- _SrcBlend: 1
- _Stencil: 0
- _StencilComp: 8
- _StencilOp: 0
- _StencilReadMask: 255
- _StencilWriteMask: 255
- _USE_EDGE_GLINT: 0
- _UVSec: 0
- _UseUIAlphaClip: 0
- _Vibrancy: 1.25
- _ZWrite: 1
m_Colors:
- _Color: {r: 1, g: 1, b: 1, a: 1}
- _EdgeGlintDirections: {r: -0.258819, g: 0.9659259, b: 0.2588191, a: -0.9659258}
- _EdgeLightDirections: {r: -1, g: 1, b: 1, a: -1}
- _EmissionColor: {r: 0, g: 0, b: 0, a: 1}
- _RefractiveIndexRatios: {r: 0.666666, g: 0.666666, b: 0.666666, a: 0}
m_BuildTextureStacks: []
m_AllowLocking: 1

View File

@@ -1,17 +0,0 @@
fileFormatVersion: 2
guid: 96c5704d0681e35408630c488fc0c234
labels:
- TranslucentImageResource
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 0
userData:
assetBundleName:
assetBundleVariant:
AssetOrigin:
serializedVersion: 1
productId: 78464
packageName: Translucent Image - Fast UI Background Blur
packageVersion: 6.5.0
assetPath: Assets/Le Tai's Asset/TranslucentImage/Material/Default-Translucent.mat
uploadId: 824068

View File

@@ -1,15 +0,0 @@
fileFormatVersion: 2
guid: 92a39630ef232a9459d20d55dd312799
timeCreated: 1541066439
licenseType: Store
DefaultImporter:
userData:
assetBundleName:
assetBundleVariant:
AssetOrigin:
serializedVersion: 1
productId: 78464
packageName: Translucent Image - Fast UI Background Blur
packageVersion: 6.5.0
assetPath: Assets/Le Tai's Asset/TranslucentImage/Offline Documentation.pdf
uploadId: 824068

View File

@@ -1 +0,0 @@
https://leloctai.com/asset/translucentimage/docs/

View File

@@ -1,14 +0,0 @@
fileFormatVersion: 2
guid: 54274fce3b51a88468a41e332f5de0a5
TextScriptImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
AssetOrigin:
serializedVersion: 1
productId: 78464
packageName: Translucent Image - Fast UI Background Blur
packageVersion: 6.5.0
assetPath: Assets/Le Tai's Asset/TranslucentImage/Online Documentation (recommended).txt
uploadId: 824068

View File

@@ -1,9 +0,0 @@
fileFormatVersion: 2
guid: 3c261078fb1a4da458b96776e33f88b1
folderAsset: yes
timeCreated: 1474981572
licenseType: Store
DefaultImporter:
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -1,75 +0,0 @@
// Copyright (c) Le Loc Tai <leloctai.com> . All rights reserved. Do not redistribute.
#include "./common.hlsl"
#include "./fullscreen.hlsl"
float2 _Offset;
float2 _TargetSize;
float4 _CropRegion;
half3 _BackgroundColor;
int _IsLast;
// int _IsUp;
#define BlurVertexInput FullScreenVertexInput
struct BlurVertexOutput
{
float4 position : SV_POSITION;
float2 texcoord : TEXCOORD0;
UNITY_VERTEX_OUTPUT_STEREO
};
BlurVertexOutput VertBlur(BlurVertexInput v)
{
BlurVertexOutput o;
UNITY_SETUP_INSTANCE_ID(v);
UNITY_INITIALIZE_VERTEX_OUTPUT_STEREO(o);
float4 posCS;
float2 screenUV;
GetFullScreenVertexData(v, posCS, screenUV);
o.position = half4(posCS.xy, 0.0, 1.0);
o.texcoord = UnCropUV(screenUV, _CropRegion);
return o;
}
half4 FragBlur(BlurVertexOutput i) : SV_Target
{
UNITY_SETUP_STEREO_EYE_INDEX_POST_VERTEX(i);
half2 dirs[] = {
half2(-1, -1),
half2(1, -1),
half2(1, 1),
half2(-1, 1),
};
#if !USE_EXTRA_SAMPLE
half weight0 = 1.0h / 4.0h;
#else
half weight1 = 1.0h / 5.0h;
half weight0 = (1.0h - weight1) / 4.0h;
#endif
half4 o = 0;
for (int j = 0; j < 4; ++j)
o += SAMPLE_SCREEN_TEX(_MainTex, i.texcoord + dirs[j] * _Offset) * weight0;
#if USE_EXTRA_SAMPLE
o += SAMPLE_SCREEN_TEX(_MainTex, i.texcoord) * weight1;
#endif
#if BACKGROUND_FILL_COLOR
o.rgb = lerp(_BackgroundColor, o.rgb, o.a);
o.a = 1.0h;
#endif
// dithering every pass is more correct, but combined with the low sample rate and cheap pattern introduces too much error
if (_IsLast)
o = dither(o, i.texcoord * _TargetSize);
return o;
}

View File

@@ -1,10 +0,0 @@
fileFormatVersion: 2
guid: 9ba876e9f43e4360a9d4ee63c412ce07
timeCreated: 1729669244
AssetOrigin:
serializedVersion: 1
productId: 78464
packageName: Translucent Image - Fast UI Background Blur
packageVersion: 6.5.0
assetPath: Assets/Le Tai's Asset/TranslucentImage/Resources/Shaders/EfficientBlur.hlsl
uploadId: 824068

View File

@@ -1,28 +0,0 @@
// Copyright (c) Le Loc Tai <leloctai.com> . All rights reserved. Do not redistribute.
Shader "Hidden/EfficientBlur"
{
SubShader
{
Cull Off ZWrite Off ZTest Always Blend Off
Pass
{
CGPROGRAM
// #pragma enable_d3d11_debug_symbols
#pragma vertex VertBlur
#pragma fragment FragBlur
#pragma multi_compile_local BACKGROUND_FILL_NONE BACKGROUND_FILL_COLOR
#pragma multi_compile_local _ USE_EXTRA_SAMPLE
#include "interop_birp.cginc"
UNITY_DECLARE_SCREENSPACE_TEXTURE(_MainTex);
#include "EfficientBlur.hlsl"
ENDCG
}
}
FallBack Off
}

View File

@@ -1,16 +0,0 @@
fileFormatVersion: 2
guid: 12e87e7c7fde8e74db9f75172456c5c3
ShaderImporter:
externalObjects: {}
defaultTextures: []
nonModifiableTextures: []
userData:
assetBundleName:
assetBundleVariant:
AssetOrigin:
serializedVersion: 1
productId: 78464
packageName: Translucent Image - Fast UI Background Blur
packageVersion: 6.5.0
assetPath: Assets/Le Tai's Asset/TranslucentImage/Resources/Shaders/EfficientBlur.shader
uploadId: 824068

View File

@@ -1,60 +0,0 @@
// Copyright (c) Le Loc Tai <leloctai.com> . All rights reserved. Do not redistribute.
Shader "Hidden/FillCrop"
{
Properties
{
_MainTex ("Texture", 2D) = "white" {}
}
SubShader
{
// No culling or depth
Cull Off ZWrite Off ZTest Always
Pass
{
CGPROGRAM
#pragma vertex vert
#pragma fragment frag
#include "interop_birp.cginc"
#include "common.hlsl"
struct VertexInput
{
float4 vertex : POSITION;
float2 uv : TEXCOORD0;
UNITY_VERTEX_INPUT_INSTANCE_ID
};
struct VertexOutput
{
float2 uv : TEXCOORD0;
float4 vertex : SV_POSITION;
UNITY_VERTEX_OUTPUT_STEREO
};
VertexOutput vert(VertexInput v)
{
VertexOutput o;
UNITY_SETUP_INSTANCE_ID(v);
UNITY_INITIALIZE_VERTEX_OUTPUT_STEREO(o);
o.vertex = UnityObjectToClipPos(v.vertex);
o.uv = v.uv;
return o;
}
UNITY_DECLARE_SCREENSPACE_TEXTURE(_MainTex);
float4 _CropRegion;
half4 frag(VertexOutput i) : SV_Target
{
UNITY_SETUP_STEREO_EYE_INDEX_POST_VERTEX(i)
float2 uv = CropUV(i.uv, _CropRegion);
return all(uv == saturate(uv)) ? SAMPLE_SCREEN_TEX(_MainTex, uv) : half4(0, 0, 0, 1);
}
ENDCG
}
}
}

View File

@@ -1,16 +0,0 @@
fileFormatVersion: 2
guid: d996ab4381100014d99e25e68e9aac84
timeCreated: 1540802700
licenseType: Store
ShaderImporter:
defaultTextures: []
userData:
assetBundleName:
assetBundleVariant:
AssetOrigin:
serializedVersion: 1
productId: 78464
packageName: Translucent Image - Fast UI Background Blur
packageVersion: 6.5.0
assetPath: Assets/Le Tai's Asset/TranslucentImage/Resources/Shaders/FillCrop.shader
uploadId: 824068

View File

@@ -1,199 +0,0 @@
#pragma once
#include "UnityUI.cginc"
// UI shaders still use birp texture convention
#include "interop_birp.cginc"
#include "common.hlsl"
#include "packing.hlsl"
#include "blending.hlsl"
uniform sampler2D _MainTex;
uniform fixed4 _TextureSampleAdd;
uniform float4 _ClipRect;
uniform float4 _MainTex_ST;
uniform float _UIMaskSoftnessX;
uniform float _UIMaskSoftnessY;
uniform int _UIVertexColorAlwaysGammaSpace;
UNITY_DECLARE_SCREENSPACE_TEXTURE(_BlurTex);
uniform float4 _CropRegion; //xMin, yMin, xMax, yMax
uniform half4 _Debug;
struct VertexInput
{
float4 vertex : POSITION;
half4 color : COLOR;
float2 texcoord : TEXCOORD0;
float4 packedData1 : TEXCOORD1;
#ifdef _USE_PARAFORM
float4 packedData2 : TEXCOORD2;
float4 packedData3 : TEXCOORD3;
#endif
UNITY_VERTEX_INPUT_INSTANCE_ID
};
struct VertexOutput
{
float4 vertex : SV_POSITION;
half4 color : COLOR;
float4 mask : TEXCOORD0;
float2 texcoord : TEXCOORD1;
float4 worldPosition : TEXCOORD2;
float4 screenPos : TEXCOORD3;
float4 transfer1 : TEXCOORD4;
#ifdef _USE_PARAFORM
float4 transfer2 : TEXCOORD5; // need float for hq derivative on some opengl driver
half4 transfer3 : TEXCOORD6;
half4 transfer4 : TEXCOORD7;
half transfer5 : TEXCOORD8;
#endif
UNITY_VERTEX_OUTPUT_STEREO
};
struct Appearance
{
half foregroundOpacity;
half vibrancy;
half brightness;
half flatten;
};
void unpackVertexData(VertexInput i, inout VertexOutput o)
{
FloatUnpacker upk0 = CreateUnpacker(i.packedData1[0], 8);
FloatUnpacker upk1 = CreateUnpacker(i.packedData1[1], 10);
o.transfer1 = float4(
DequeueNonNegative(upk0, 1),
Dequeue(upk1, -1, 2),
Dequeue(upk1, -1, 1),
DequeueNonNegative(upk0, 1)
);
}
Appearance createAppearance(float4 transfer1)
{
Appearance appearance;
appearance.foregroundOpacity = transfer1[0];
appearance.vibrancy = transfer1[1];
appearance.brightness = transfer1[2];
appearance.flatten = transfer1[3];
return appearance;
}
VertexOutput vert(VertexInput IN)
{
VertexOutput OUT = (VertexOutput)0;
UNITY_SETUP_INSTANCE_ID(IN);
UNITY_INITIALIZE_VERTEX_OUTPUT_STEREO(OUT);
OUT.worldPosition = IN.vertex;
float4 clipPos = UnityObjectToClipPos(IN.vertex);
OUT.vertex = clipPos;
float2 pixelSize = clipPos.w;
pixelSize /= float2(1, 1) * abs(mul((float2x2)UNITY_MATRIX_P, _ScreenParams.xy));
float4 clampedRect = clamp(_ClipRect, -2e10, 2e10);
OUT.mask = float4(IN.vertex.xy * 2 - clampedRect.xy - clampedRect.zw, 0.25 / (0.25 * half2(_UIMaskSoftnessX, _UIMaskSoftnessY) + abs(pixelSize.xy)));
if (_UIVertexColorAlwaysGammaSpace && !IsGammaSpace())
{
IN.color.rgb = UIGammaToLinearShim(IN.color.rgb);
}
OUT.color = IN.color;
OUT.texcoord = IN.texcoord;
OUT.screenPos = ComputeNonStereoScreenPos(OUT.vertex);
#if UNITY_VERSION >= 202120 && UNITY_UV_STARTS_AT_TOP
if (_ProjectionParams.x > 0 && unity_MatrixVP[1][1] < 0)
OUT.screenPos.y = OUT.screenPos.w - OUT.screenPos.y;
#endif
unpackVertexData(IN, OUT);
return OUT;
}
void fragSetup(inout VertexOutput IN, out half2 screenPos, out half4 foregroundColor, out Appearance appearance)
{
//Round up the alpha color coming from the interpolator (to 1.0/256.0 steps)
//The incoming alpha could have numerical instability, which makes it very sensible to
//HDR color transparency blend, when it blends with the world's texture.
const half alphaPrecision = half(0xff);
const half invAlphaPrecision = half(1.0 / alphaPrecision);
IN.color.a = round(IN.color.a * alphaPrecision) * invAlphaPrecision;
UNITY_SETUP_STEREO_EYE_INDEX_POST_VERTEX(IN);
screenPos = IN.screenPos.xy / IN.screenPos.w;
foregroundColor = tex2D(_MainTex, IN.texcoord.xy) + _TextureSampleAdd;
foregroundColor *= IN.color;
appearance = createAppearance(IN.transfer1);
}
void fragFinish(VertexOutput IN, half2 screenPos, inout half4 color)
{
// TODO: fix Shadow and Outline tinting somehow
// Multiplying last so glints work
// color *= IN.color;
#ifdef UNITY_UI_CLIP_RECT
half2 m = saturate((_ClipRect.zw - _ClipRect.xy - abs(IN.mask.xy)) * IN.mask.zw);
color.a *= m.x * m.y;
#endif
#ifdef UNITY_UI_ALPHACLIP
clip(color.a - 0.001);
#endif
color.rgb *= color.a;
color = dither(color, (screenPos.xy + 0) * _ScreenParams.xy);
}
half3 sampleBackground(float2 screenPos)
{
half2 blurTexcoord = CropUV(screenPos, _CropRegion);
half3 backgroundColor = SAMPLE_SCREEN_TEX(_BlurTex, blurTexcoord).rgb;
return backgroundColor;
}
half4 blendBackground(half4 foregroundColor, half3 backgroundColor, Appearance appearance)
{
half4 color;
color.a = foregroundColor.a;
#if _BACKGROUND_MODE_NORMAL
backgroundColor = saturate(backgroundColor + (.5 - backgroundColor) * appearance.flatten);
backgroundColor = saturate(lerp(LinearRgbToLuminance(backgroundColor), backgroundColor, appearance.vibrancy));
half brightness = isGammaShim()
? appearance.brightness
: appearance.brightness * appearance.brightness * sign(appearance.brightness);
backgroundColor = saturate(backgroundColor + brightness);
color.rgb = lerp(backgroundColor, foregroundColor.rgb, appearance.foregroundOpacity);
#else //#elif _BACKGROUND_MODE_COLORFUL
half targetL = appearance.brightness / 2. + .5;
if (!isGammaShim())
targetL = targetL * targetL;
backgroundColor = /*saturate*/(lerp(LinearRgbToLuminance(backgroundColor), backgroundColor, appearance.vibrancy));
backgroundColor = /*saturate*/(backgroundColor + (targetL - backgroundColor) * appearance.flatten);
backgroundColor = lerp(
backgroundColor,
setL(backgroundColor, LinearRgbToLuminance(backgroundColor), targetL),
appearance.foregroundOpacity
);
color.rgb = gamutClip(backgroundColor * foregroundColor.rgb);
#endif
return color;
}

View File

@@ -1,10 +0,0 @@
fileFormatVersion: 2
guid: b01fb1ca47c849279f7a0d19d1f20e7a
timeCreated: 1752043759
AssetOrigin:
serializedVersion: 1
productId: 78464
packageName: Translucent Image - Fast UI Background Blur
packageVersion: 6.5.0
assetPath: Assets/Le Tai's Asset/TranslucentImage/Resources/Shaders/TranslucentImage.hlsl
uploadId: 824068

View File

@@ -1,106 +0,0 @@
// Copyright (c) Le Loc Tai <leloctai.com> . All rights reserved. Do not redistribute.
Shader "UI/TranslucentImage"
{
Properties
{
[PerRendererData] _MainTex("Sprite Texture", 2D) = "white" {}
[Header(Appearance)][Space]
[KeywordEnum(Normal, Colorful)] _BACKGROUND_MODE("Background Mode", int) = 0
[Header(Refraction)][Space]
[KeywordEnum(Off,On,Chromatic)] _REFRACTION_MODE("Refraction Mode", int) = 1
// Singularity prevent reconstructions of control properties from _RefractiveIndexRatios
// so they need to be stored in the material
[PowerSlider(20)] _RefractiveIndex("Refractive Index", Range(1, 4.5)) = 1.5
[PowerSlider(2)] _ChromaticDispersion("Chromatic Dispersion", Range(0, 2)) = 0.5
_RefractiveIndexRatios("Refractive Index Ratio", Vector) = (0.666666, 0.666666, 0.666666, 0)
[Header(Edge Glint)][Space]
[Toggle(_USE_EDGE_GLINT)] _USE_EDGE_GLINT("Enable Edge Glint", Float) = 0
_EdgeGlintDirections("Edge Glint Directions", Vector) = (-0.258819, 0.9659259, 0.2588191, -0.9659258)
_EdgeGlint1Strength("Edge Glint 1 Strength", Range(0, 1)) = .25
_EdgeGlint2Strength("Edge Glint 2 Strength", Range(0, 1)) = .1
_EdgeGlintWrap("Edge Glint Wrap", Float) = 1
_EdgeGlintSharpness("Edge Glint Sharpness", Float) = 512
//_Debug("Debug", Vector) = (0,0,0,0)
[Header(Other)][Space]
_StencilComp("Stencil Comparison", Float) = 8
_Stencil("Stencil ID", Float) = 0
_StencilOp("Stencil Operation", Float) = 0
_StencilWriteMask("Stencil Write Mask", Float) = 255
_StencilReadMask("Stencil Read Mask", Float) = 255
_ColorMask("Color Mask", Float) = 15
[HideInInspector]_Color ("Dummy Color", Color) = (1,1,1,1)
[Toggle(UNITY_UI_ALPHACLIP)] _UseUIAlphaClip("Use Alpha Clip", Float) = 0
}
SubShader
{
Tags
{
"Queue"= "Transparent"
"IgnoreProjector"= "True"
"RenderType"= "Transparent"
"PreviewType"= "Plane"
"CanUseSpriteAtlas"= "True"
}
Stencil
{
Ref[_Stencil]
Comp[_StencilComp]
Pass[_StencilOp]
ReadMask[_StencilReadMask]
WriteMask[_StencilWriteMask]
}
Cull Off
Lighting Off
ZWrite Off
ZTest[unity_GUIZTestMode]
Blend One OneMinusSrcAlpha
ColorMask[_ColorMask]
Pass
{
CGPROGRAM
// #pragma enable_d3d11_debug_symbols
#pragma target 3.0
#pragma exclude_renderers d3d11_9x gles
#pragma vertex vert
#pragma fragment frag
#include "TranslucentImage.hlsl"
#pragma multi_compile_local _ UNITY_UI_CLIP_RECT
#pragma multi_compile_local _ UNITY_UI_ALPHACLIP
#pragma shader_feature_local_fragment _BACKGROUND_MODE_NORMAL _BACKGROUND_MODE_COLORFUL
half4 frag(VertexOutput IN) : SV_Target
{
half2 screenPos;
half4 foregroundColor;
Appearance appearance;
fragSetup(IN, screenPos, foregroundColor, appearance);
half3 backgroundColor = sampleBackground(screenPos);
half4 color = blendBackground(foregroundColor, backgroundColor, appearance);
fragFinish(IN, screenPos, color);
return color;
}
ENDCG
}
}
CustomEditor "LeTai.Asset.TranslucentImage.Editor.TranslucentImageShaderGUI"
}

View File

@@ -1,16 +0,0 @@
fileFormatVersion: 2
guid: b1115addd36579a429d5e6b4ffae668d
timeCreated: 1539852404
licenseType: Store
ShaderImporter:
defaultTextures: []
userData:
assetBundleName:
assetBundleVariant:
AssetOrigin:
serializedVersion: 1
productId: 78464
packageName: Translucent Image - Fast UI Background Blur
packageVersion: 6.5.0
assetPath: Assets/Le Tai's Asset/TranslucentImage/Resources/Shaders/TranslucentImage.shader
uploadId: 824068

View File

@@ -1,50 +0,0 @@
// Copyright (c) Le Loc Tai <leloctai.com> . All rights reserved. Do not redistribute.
#include <UnityCG.cginc>
half3 blendOverlay(half3 a, half3 b)
{
return a < .5 ? 2 * a * b : 1 - 2 * (1 - a) * (1 - b);
}
half3 blendScreen(half3 a, half3 b)
{
return 1 - (1 - a) * (1 - b);
}
half3 setL(half3 a, half lumA, half lumB)
{
return a + (lumB - lumA);
}
half3 gamutClip(half3 color)
{
half L = LinearRgbToLuminance(color);
half minComp = min(min(color.r, color.g), color.b);
half maxComp = max(max(color.r, color.g), color.b);
// branches are never entered when the denom is 0
// if (minComp < 0)
// // color = L + (color - L) * L / (L - minComp);
// result = L * (result - minComp) / (L - minComp);
// if (maxComp > 1)
// result = L + (result - L) * (1 - L) / (maxComp - L);
// Assumption: under blurring, branches are more likely to be coherence than not
// fully scalar
half scale = 1;
if (minComp < 0)
scale = L / (L - minComp);
if (maxComp > 1)
scale = min(scale, (1 - L) / (maxComp - L));
// skipping the vector path should be worth the branch
// if (scale < 1)
if (scale < 1)
color = L + (color - L) * scale;
return color;
}

View File

@@ -1,10 +0,0 @@
fileFormatVersion: 2
guid: 15df69990d05474f9845874424d84acf
timeCreated: 1750414240
AssetOrigin:
serializedVersion: 1
productId: 78464
packageName: Translucent Image - Fast UI Background Blur
packageVersion: 6.5.0
assetPath: Assets/Le Tai's Asset/TranslucentImage/Resources/Shaders/blending.hlsl
uploadId: 824068

View File

@@ -1,99 +0,0 @@
// Copyright (c) Le Loc Tai <leloctai.com> . All rights reserved. Do not redistribute.
#ifndef _TRANSLUCENTIMAGE_COMMON
#define _TRANSLUCENTIMAGE_COMMON
float2 UnCropUV(float2 uvRelativeToCropped, float4 cropRegion)
{
return lerp(cropRegion.xy, cropRegion.zw, uvRelativeToCropped);
}
float2 CropUV(float2 uvRelativeToUnCropped, float4 cropRegion)
{
return (uvRelativeToUnCropped - cropRegion.xy) / (cropRegion.zw - cropRegion.xy);
}
// https://github.com/michaldrobot/ShaderFastLibs/blob/master/ShaderFastMathLib.h
float sqrtApprox01(float inX)
{
int x = asint(inX);
x = 0x1FBD1DF5 + (x >> 1);
return asfloat(x);
}
// https://github.com/michaldrobot/ShaderFastLibs/blob/master/ShaderFastMathLib.h
float rsqrtApprox01(float inX)
{
int x = asint(inX);
x = 0x5F341A43 - (x >> 1);
return asfloat(x);
}
// https://en.wikibooks.org/wiki/Algorithms/Distance_approximations
float lengthApproxOctagon(float2 v)
{
float ax = abs(v.x);
float ay = abs(v.y);
float l = max(ax, ay);
float s = min(ax, ay);
return .41 * s + .941246 * l;
}
// https://extremelearning.com.au/unreasonable-effectiveness-of-quasirandom-sequences/
inline float ggr21(float2 n)
{
static const float g = 1.32471795724474602596;
static const float a1 = 1.0 / g;
static const float a2 = 1.0 / (g * g);
return frac(a1 * n.x + a2 * n.y);
}
// https://www.shadertoy.com/view/4djSRW
float hash12(float2 p)
{
float3 p3 = frac(float3(p.xyx) * .1031);
p3 += dot(p3, p3.yzx + 33.33);
return frac((p3.x + p3.y) * p3.z);
}
half3 sdfViz(float d)
{
half3 col = (d > 0.0) ? half3(0.9, 0.6, 0.3) : half3(0.65, 0.85, 1.0);
col *= 1.0 - exp(-12.0 * abs(d));
col *= 0.8 + 0.2 * cos(150.0 * d);
return lerp(col, 1.0, 1.0 - smoothstep(0.0, 0.01, abs(d)));
}
bool isGammaShim()
{
#ifdef UNITY_COLORSPACE_GAMMA
return true;
#else
return false;
#endif
}
half3 toPerceptual(half3 color)
{
return isGammaShim() ? color : sqrt(color);
}
half3 fromPerceptual(half3 color)
{
return isGammaShim() ? color : color * color;
}
half4 dither(half4 color, float2 coord)
{
half noise = ggr21(coord) * 1. / 255. - .5 / 255.;
half4 result = color;
result.rgb = toPerceptual(result);
result += noise;
result.rgb = fromPerceptual(result);
return result;
}
#endif

View File

@@ -1,16 +0,0 @@
fileFormatVersion: 2
guid: a0f93ce7a1dcd4341947566d67947b0d
ShaderImporter:
externalObjects: {}
defaultTextures: []
nonModifiableTextures: []
userData:
assetBundleName:
assetBundleVariant:
AssetOrigin:
serializedVersion: 1
productId: 78464
packageName: Translucent Image - Fast UI Background Blur
packageVersion: 6.5.0
assetPath: Assets/Le Tai's Asset/TranslucentImage/Resources/Shaders/common.hlsl
uploadId: 824068

View File

@@ -1,61 +0,0 @@
// Copyright (c) Le Loc Tai <leloctai.com> . All rights reserved. Do not redistribute.
struct FullScreenVertexInput
{
#if !SHADER_API_GLES
uint vertexID : SV_VertexID;
#else
float4 position : POSITION;
#endif
UNITY_VERTEX_INPUT_INSTANCE_ID
};
struct FullScreenVertexOutput
{
float2 uv : TEXCOORD0;
float4 vertex : SV_POSITION;
UNITY_VERTEX_OUTPUT_STEREO
};
float2 VertexToUV(float2 vertex)
{
float2 texcoord = (vertex + 1.0) * 0.5; // triangle vert to uv
#if UNITY_UV_STARTS_AT_TOP
texcoord = texcoord * float2(1.0, -1.0) + float2(0.0, 1.0);
#endif
return texcoord;
}
// BiRP do not have these methods, so copy here and namespaced to avoid collision in URP
// Generates a triangle in homogeneous clip space, s.t.
// v0 = (-1, -1, 1), v1 = (3, -1, 1), v2 = (-1, 3, 1).
float2 tai_GetFullScreenTriangleTexCoord(uint vertexID)
{
#if UNITY_UV_STARTS_AT_TOP
return float2((vertexID << 1) & 2, 1.0 - (vertexID & 2));
#else
return float2((vertexID << 1) & 2, vertexID & 2);
#endif
}
float4 tai_GetFullScreenTriangleVertexPosition(uint vertexID, float z)
{
// note: the triangle vertex position coordinates are x2 so the returned UV coordinates are in range -1, 1 on the screen.
float2 uv = float2((vertexID << 1) & 2, vertexID & 2);
float4 pos = float4(uv * 2.0 - 1.0, z, 1.0);
return pos;
}
void GetFullScreenVertexData(FullScreenVertexInput v, out float4 posCS, out float2 screenUV)
{
#if !SHADER_API_GLES
posCS = tai_GetFullScreenTriangleVertexPosition(v.vertexID, UNITY_NEAR_CLIP_VALUE);
screenUV = tai_GetFullScreenTriangleTexCoord(v.vertexID);
#else
posCS = v.position;
screenUV = VertexToUV(v.position.xy);
#endif
}

View File

@@ -1,10 +0,0 @@
fileFormatVersion: 2
guid: b1a79371c15c4beab2c91aa6e7f4c13e
timeCreated: 1729673279
AssetOrigin:
serializedVersion: 1
productId: 78464
packageName: Translucent Image - Fast UI Background Blur
packageVersion: 6.5.0
assetPath: Assets/Le Tai's Asset/TranslucentImage/Resources/Shaders/fullscreen.hlsl
uploadId: 824068

View File

@@ -1,19 +0,0 @@
// Copyright (c) Le Loc Tai <leloctai.com> . All rights reserved. Do not redistribute.
#include <UnityCG.cginc>
// This need to be a macro since the type of tex can change :(
#define SAMPLE_SCREEN_TEX(tex, uv) UNITY_SAMPLE_SCREENSPACE_TEXTURE(tex, UnityStereoTransformScreenSpaceTex(uv))
// This piecewise approximation has a precision better than 0.5 / 255 in gamma space over the [0..255] range
// i.e. abs(l2g_exact(g2l_approx(value)) - value) < 0.5 / 255
// It is much more precise than GammaToLinearSpace but remains relatively cheap
half3 UIGammaToLinearShim(half3 value)
{
half3 low = 0.0849710 * value - 0.000163029;
half3 high = value * (value * (value * 0.265885 + 0.736584) - 0.00980184) + 0.00319697;
// We should be 0.5 away from any actual gamma value stored in an 8 bit channel
const half3 split = (half3)0.0725490; // Equals 18.5 / 255
return (value < split) ? low : high;
}

View File

@@ -1,18 +0,0 @@
fileFormatVersion: 2
guid: a8c68a14f2a58eb4eb95978229e5db5e
labels:
- TranslucentImageEditorResources
ShaderImporter:
externalObjects: {}
defaultTextures: []
nonModifiableTextures: []
userData:
assetBundleName:
assetBundleVariant:
AssetOrigin:
serializedVersion: 1
productId: 78464
packageName: Translucent Image - Fast UI Background Blur
packageVersion: 6.5.0
assetPath: Assets/Le Tai's Asset/TranslucentImage/Resources/Shaders/interop_birp.cginc
uploadId: 824068

View File

@@ -1,71 +0,0 @@
// Copyright (c) Le Loc Tai <leloctai.com> . All rights reserved. Do not redistribute.
#ifndef LETAI_PACKING
#define LETAI_PACKING
struct FloatUnpacker
{
uint payload;
uint nBitsConsumed;
uint bitsPerFloat;
};
FloatUnpacker CreateUnpacker(float packed, int bitsPerFloat = 0)
{
uint bits = asuint(packed);
uint exponent = (bits >> 23) & 0xFFu;
uint mantissa = bits & 0x7FFFFFu;
FloatUnpacker u;
u.payload = ((exponent - 1u) << 23) | mantissa;
u.nBitsConsumed = 0;
u.bitsPerFloat = bitsPerFloat;
return u;
}
float Dequeue(inout FloatUnpacker u, float minVal, float maxVal, uint nBits = 0)
{
if (nBits == 0) nBits = u.bitsPerFloat;
uint mask = (1u << nBits) - 1u;
uint value = (u.payload >> u.nBitsConsumed) & mask;
u.nBitsConsumed += nBits;
float norm = value * (1.0 / mask);
return norm * (maxVal - minVal) + minVal;
}
float DequeueNonNegative(inout FloatUnpacker u, float maxVal, uint nBits = 0)
{
return Dequeue(u, 0, maxVal, nBits);
}
void UnpackTwoFloatsSafe(
float packed,
float minA, float maxA, uint nBitsA,
float minB, float maxB, uint nBitsB,
out float a, out float b)
{
uint bits = asuint(packed);
uint exponent = (bits >> 23) & 0xFFu;
uint mantissa = bits & 0x7FFFFFu;
uint payload = ((exponent - 1u) << 23) | mantissa;
uint maskB = (1u << nBitsB) - 1u;
float aQuantized = payload >> nBitsB;
float bQuantized = payload & maskB;
float maxAQuantized = (1u << nBitsA) - 1u;
float maxBQuantized = maskB;
float aNormalized = aQuantized * (1. / maxAQuantized);
float bNormalized = bQuantized * (1. / maxBQuantized);
a = aNormalized * (maxA - minA) + minA;
b = bNormalized * (maxB - minB) + minB;
}
#endif

View File

@@ -1,10 +0,0 @@
fileFormatVersion: 2
guid: 1513fde2dd7f474a803858cd7ae75356
timeCreated: 1750650448
AssetOrigin:
serializedVersion: 1
productId: 78464
packageName: Translucent Image - Fast UI Background Blur
packageVersion: 6.5.0
assetPath: Assets/Le Tai's Asset/TranslucentImage/Resources/Shaders/packing.hlsl
uploadId: 824068

View File

@@ -1,16 +0,0 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!114 &11400000
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 0}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: c98b4a46667547b294b1c048ab4fc355, type: 3}
m_Name: Translucent Image Default Resources
m_EditorClassIdentifier:
material: {fileID: 2100000, guid: 96c5704d0681e35408630c488fc0c234, type: 2}
paraformMaterial: {fileID: 2100000, guid: c2c99768271516e4b8f434b56fc1cea0, type: 2}

View File

@@ -1,16 +0,0 @@
fileFormatVersion: 2
guid: 06adab3c1d7cfaf4e8386d06623484fa
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 11400000
userData:
assetBundleName:
assetBundleVariant:
AssetOrigin:
serializedVersion: 1
productId: 78464
packageName: Translucent Image - Fast UI Background Blur
packageVersion: 6.5.0
assetPath: Assets/Le Tai's Asset/TranslucentImage/Resources/Translucent Image Default
Resources.asset
uploadId: 824068

View File

@@ -1,8 +0,0 @@
fileFormatVersion: 2
guid: bf78a7acb2cf96c468f81fe121a3301f
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -1,34 +0,0 @@
Shader "Hidden/EfficientBlur_UniversalRP"
{
SubShader
{
Cull Off ZWrite Off ZTest Always Blend Off
Pass
{
HLSLPROGRAM
// #pragma enable_d3d11_debug_symbols
#pragma target 3.0
//HLSLcc is not used by default on gles
#pragma prefer_hlslcc gles
//SRP don't support dx9
#pragma exclude_renderers d3d11_9x
#pragma vertex VertBlur
#pragma fragment FragBlur
#pragma multi_compile_local BACKGROUND_FILL_NONE BACKGROUND_FILL_COLOR
#pragma multi_compile_local _ USE_EXTRA_SAMPLE
#include "interop_urp.hlsl"
TEXTURE2D_X(_MainTex);
SAMPLER(sampler_MainTex);
#include "../Shaders/EfficientBlur.hlsl"
ENDHLSL
}
}
FallBack Off
}

View File

@@ -1,9 +0,0 @@
fileFormatVersion: 2
guid: 4a1d960bb7429ed49a23391385e9ca1b
ShaderImporter:
externalObjects: {}
defaultTextures: []
nonModifiableTextures: []
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -1,58 +0,0 @@
Shader "Hidden/FillCrop_UniversalRP"
{
SubShader
{
// No culling or depth
Cull Off ZWrite Off ZTest Always
Pass
{
HLSLPROGRAM
#pragma target 3.0
//HLSLcc is not used by default on gles
#pragma prefer_hlslcc gles
//SRP don't support dx9
#pragma exclude_renderers d3d11_9x
#pragma vertex vert
#pragma fragment frag
#include "./interop_urp.hlsl"
#include "../Shaders/fullscreen.hlsl"
#include "../Shaders/common.hlsl"
struct v2f
{
float2 uv : TEXCOORD0;
float4 vertex : SV_POSITION;
UNITY_VERTEX_OUTPUT_STEREO
};
v2f vert(FullScreenVertexInput v)
{
v2f o;
UNITY_SETUP_INSTANCE_ID(v);
UNITY_INITIALIZE_VERTEX_OUTPUT_STEREO(o);
float4 posCS;
float2 screenUV;
GetFullScreenVertexData(v, posCS, screenUV);
o.vertex = half4(posCS.xy, 0.0, 1.0);
o.uv = screenUV;
return o;
}
TEXTURE2D_X(_MainTex);
float4 _CropRegion;
half4 frag(v2f i) : SV_Target
{
UNITY_SETUP_STEREO_EYE_INDEX_POST_VERTEX(i)
float2 uv = CropUV(i.uv, _CropRegion);
return all(uv == saturate(uv)) ? SAMPLE_SCREEN_TEX(_MainTex, uv) : half4(0, 0, 0, 1);
}
ENDHLSL
}
}
}

View File

@@ -1,9 +0,0 @@
fileFormatVersion: 2
guid: be9460e8089353c42b6ec727f6fc3140
ShaderImporter:
externalObjects: {}
defaultTextures: []
nonModifiableTextures: []
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -1,6 +0,0 @@
#include "Packages/com.unity.render-pipelines.universal/ShaderLibrary/Core.hlsl"
#if UNITY_VERSION < 600000
SAMPLER(sampler_LinearClamp);
#endif
#define SAMPLE_SCREEN_TEX(tex, uv) SAMPLE_TEXTURE2D_X(tex, sampler_LinearClamp, UnityStereoTransformScreenSpaceTex(uv))

View File

@@ -1,3 +0,0 @@
fileFormatVersion: 2
guid: 005bb204b9b54cb7868e1aa065f00838
timeCreated: 1562251098

View File

@@ -1,9 +0,0 @@
fileFormatVersion: 2
guid: f086af857f26faa4ea62ddf64d9f44ec
folderAsset: yes
timeCreated: 1474981551
licenseType: Store
DefaultImporter:
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -1,31 +0,0 @@
using UnityEngine;
namespace LeTai.Asset.TranslucentImage
{
public readonly struct ActiveRegion
{
public static readonly ActiveRegion INACTIVE = new ActiveRegion(Rect.zero,
Matrix4x4.zero,
VPMatrixCache.Index.INVALID);
public readonly Rect rect;
public readonly Matrix4x4 localToWorld;
public readonly VPMatrixCache.Index vpMatrixCacheIndex;
public bool IsWorldSpace => vpMatrixCacheIndex.IsValid();
/// <param name="vpMatrixCacheIndex">Use VPMatrixCache.Index.INVALID For Screen Space - Overlay Canvas. Otherwise, see <see cref="VPMatrixCache"/></param>
public ActiveRegion(Rect rect, Matrix4x4 localToWorld, VPMatrixCache.Index vpMatrixCacheIndex)
{
this.rect = rect;
this.localToWorld = localToWorld;
this.vpMatrixCacheIndex = vpMatrixCacheIndex;
}
}
public interface IActiveRegionProvider
{
bool HaveActiveRegion();
// out params to avoid double allocation of the fat struct
void GetActiveRegion(VPMatrixCache vpMatrixCache, out ActiveRegion activeRegion);
}
}

View File

@@ -1,10 +0,0 @@
fileFormatVersion: 2
guid: 4adf6e4aab6f4d09ad8edf1d91e8fd9c
timeCreated: 1728639282
AssetOrigin:
serializedVersion: 1
productId: 78464
packageName: Translucent Image - Fast UI Background Blur
packageVersion: 6.5.0
assetPath: Assets/Le Tai's Asset/TranslucentImage/Script/ActiveRegion.cs
uploadId: 824068

View File

@@ -1,66 +0,0 @@
using Unity.Burst;
using Unity.Collections;
using Unity.Jobs;
using UnityEngine;
namespace LeTai.Asset.TranslucentImage
{
[BurstCompile(FloatMode = FloatMode.Fast)]
unsafe struct ActiveRegionMergeJob : IJob
{
[ReadOnly]
public NativeList<ActiveRegion> activeRegions;
[ReadOnly]
public NativeList<Matrix4x4> vpMatrices;
public Vector2 screenSize;
public Rect viewport;
public NativeArray<Rect> merged;
public void Execute()
{
var xMin = 1f;
var yMin = 1f;
var xMax = 0f;
var yMax = 0f;
var screenSizeInv = new Vector2(1f / screenSize.x, 1f / screenSize.y);
for (int i = 0; i < activeRegions.Length; i++)
{
var quad = activeRegions[i];
var rect = quad.rect;
var corners = stackalloc[] {
new Vector2(rect.x, rect.y),
new Vector2(rect.x, rect.yMax),
new Vector2(rect.xMax, rect.yMax),
new Vector2(rect.xMax, rect.y),
};
for (int j = 0; j < 4; j++)
{
Vector3 pointWorld = quad.localToWorld.MultiplyPoint3x4(corners[j]);
Vector2 pointScreen;
if (quad.IsWorldSpace)
{
Vector4 pointWorldHomo = pointWorld;
pointWorldHomo.w = 1;
Vector4 pointClip = vpMatrices[quad.vpMatrixCacheIndex.index] * pointWorldHomo;
pointScreen = new Vector2(pointClip.x, pointClip.y) / pointClip.w * .5f + new Vector2(.5f, .5f);
}
else
{
pointScreen = pointWorld * screenSizeInv;
pointScreen = (pointScreen - viewport.min) / viewport.size;
}
xMin = Mathf.Min(xMin, pointScreen.x);
yMin = Mathf.Min(yMin, pointScreen.y);
xMax = Mathf.Max(xMax, pointScreen.x);
yMax = Mathf.Max(yMax, pointScreen.y);
}
}
merged[0] = new Rect(xMin, yMin, xMax - xMin, yMax - yMin);
}
}
}

View File

@@ -1,10 +0,0 @@
fileFormatVersion: 2
guid: 998034a9a75347a4ad7404daa830d415
timeCreated: 1728556086
AssetOrigin:
serializedVersion: 1
productId: 78464
packageName: Translucent Image - Fast UI Background Blur
packageVersion: 6.5.0
assetPath: Assets/Le Tai's Asset/TranslucentImage/Script/ActiveRegionMergeJob.cs
uploadId: 824068

View File

@@ -1,4 +0,0 @@
using System.Runtime.CompilerServices;
[assembly: InternalsVisibleTo("LeTai.Asset.TranslucentImage.Editor")]
[assembly: InternalsVisibleTo("LeTai.Asset.TranslucentImage.Editor.Paraform")]

View File

@@ -1,10 +0,0 @@
fileFormatVersion: 2
guid: f5aa23395e6d4397a46bd5b2a1fb4f44
timeCreated: 1694419168
AssetOrigin:
serializedVersion: 1
productId: 78464
packageName: Translucent Image - Fast UI Background Blur
packageVersion: 6.5.0
assetPath: Assets/Le Tai's Asset/TranslucentImage/Script/AssemblyInfo.cs
uploadId: 824068

View File

@@ -1,3 +0,0 @@
fileFormatVersion: 2
guid: f164c4c349ef428f8c7537ba4218516d
timeCreated: 1560157255

View File

@@ -1,9 +0,0 @@
using UnityEngine;
namespace LeTai.Asset.TranslucentImage
{
public abstract class BlurConfig : ScriptableObject
{
public abstract float Strength { get; set; }
}
}

View File

@@ -1,18 +0,0 @@
fileFormatVersion: 2
guid: 5a1c97a4c20d4c698acd8a00210f69fe
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {fileID: 2800000, guid: c2fc80b7e20a4104db1297bcddfd83b5, type: 3}
userData:
assetBundleName:
assetBundleVariant:
AssetOrigin:
serializedVersion: 1
productId: 78464
packageName: Translucent Image - Fast UI Background Blur
packageVersion: 6.5.0
assetPath: Assets/Le Tai's Asset/TranslucentImage/Script/BlurAlgorithm/BlurConfig.cs
uploadId: 824068

View File

@@ -1,44 +0,0 @@
using System;
using UnityEngine;
using UnityEngine.Rendering;
namespace LeTai.Asset.TranslucentImage
{
public enum BlurAlgorithmType
{
ScalableBlur
}
public enum BackgroundFillMode
{
None,
Color
}
[Serializable]
public class BackgroundFill
{
public BackgroundFillMode mode = BackgroundFillMode.None;
public Color color = Color.white;
}
public interface IBlurAlgorithm
{
void Init(BlurConfig config, bool isBirp);
void Blur(
CommandBuffer cmd,
RenderTargetIdentifier src,
Rect srcCropRegion,
Rect activeRegion,
BackgroundFill backgroundFill,
RenderTexture target
);
int GetScratchesCount(float targetWidth, float targetHeight);
void GetNextScratchDescriptor(ref RenderTextureDescriptor prevDescriptor);
void SetScratch(int index, RenderTargetIdentifier value);
}
}

View File

@@ -1,10 +0,0 @@
fileFormatVersion: 2
guid: 6cf12665875748ef9dd9416b900b5143
timeCreated: 1558514104
AssetOrigin:
serializedVersion: 1
productId: 78464
packageName: Translucent Image - Fast UI Background Blur
packageVersion: 6.5.0
assetPath: Assets/Le Tai's Asset/TranslucentImage/Script/BlurAlgorithm/IBlurAlgorithm.cs
uploadId: 824068

View File

@@ -1,227 +0,0 @@
using System;
using UnityEngine;
using UnityEngine.Rendering;
namespace LeTai.Asset.TranslucentImage
{
public class ScalableBlur : IBlurAlgorithm
{
readonly RenderTargetIdentifier[] scratches = new RenderTargetIdentifier[14];
bool isBirp;
Material material;
ScalableBlurConfig config;
MaterialPropertyBlock propertyBlock;
LocalKeyword kwBackgroundFillNone;
LocalKeyword kwBackgroundFillColor;
LocalKeyword kwUseExtraSample;
Material Material
{
get
{
if (material == null)
{
Material = new Material(Shader.Find(isBirp
? "Hidden/EfficientBlur"
: "Hidden/EfficientBlur_UniversalRP"));
}
return material;
}
set => material = value;
}
public void Init(BlurConfig config, bool isBirp)
{
this.isBirp = isBirp;
this.config = (ScalableBlurConfig)config;
propertyBlock = propertyBlock ?? new MaterialPropertyBlock();
}
public void Blur(
CommandBuffer cmd,
RenderTargetIdentifier src,
Rect srcCropRegion,
Rect activeRegion,
BackgroundFill backgroundFill,
RenderTexture target
)
{
(float strength, float radius, int iterations) = GetEffectiveConfig(target.width / srcCropRegion.width,
target.height / srcCropRegion.height);
var offsetDistanceDown = (radius / 2f) * Vector2.one;
var offsetDistanceUp = (radius / 2f /*- .5f*/) * Vector2.one;
int stepCount = Mathf.Clamp(iterations * 2, 1, scratches.Length * 2 - 1);
float extent = strength;
var activeRegionRelative = RectUtils.Intersect(activeRegion, srcCropRegion);
activeRegionRelative.x = (activeRegionRelative.x - srcCropRegion.x) / srcCropRegion.width;
activeRegionRelative.y = (activeRegionRelative.y - srcCropRegion.y) / srcCropRegion.height;
activeRegionRelative.width = activeRegionRelative.width / srcCropRegion.width;
activeRegionRelative.height = activeRegionRelative.height / srcCropRegion.height;
if (activeRegionRelative.width == 0 || activeRegionRelative.height == 0)
return;
ConfigMaterial(backgroundFill);
propertyBlock.Clear();
propertyBlock.SetInteger("_IsLast", 0);
if (stepCount > 1)
{
CropViewport(target.width >> 1, target.height >> 1, extent, out var viewportFirst, out var activeRegionFirst);
propertyBlock.SetVector(ShaderID.CROP_REGION, RectUtils.ToMinMaxVector(RectUtils.Crop(srcCropRegion, activeRegionFirst)));
var targetSize1 = new Vector2(target.width >> 1, target.height >> 1);
propertyBlock.SetVector(ShaderID.TARGET_SIZE, targetSize1);
propertyBlock.SetVector(ShaderID.OFFSET, offsetDistanceDown / targetSize1);
Blitter.Blit(cmd, src, scratches[0], Material, 0, propertyBlock, viewportFirst);
}
var maxDepth = Mathf.Min(iterations - 1, scratches.Length - 1);
for (var i = 1; i < stepCount - 1; i++)
{
var fromIdx = SimplePingPong(i - 1, maxDepth);
var toIdx = SimplePingPong(i, maxDepth);
var targetDepth = toIdx + 1;
CropViewport(target.width >> targetDepth, target.height >> targetDepth, extent, out var viewportStep, out var activeRegionStep);
propertyBlock.SetVector(ShaderID.CROP_REGION, RectUtils.ToMinMaxVector(activeRegionStep));
var targetSizeStep = new Vector2(target.width >> targetDepth, target.height >> targetDepth);
propertyBlock.SetVector(ShaderID.TARGET_SIZE, targetSizeStep);
propertyBlock.SetVector(ShaderID.OFFSET, i < maxDepth
? offsetDistanceDown / targetSizeStep
: offsetDistanceUp / targetSizeStep);
Blitter.Blit(cmd, scratches[fromIdx], scratches[toIdx], Material, 0, propertyBlock, viewportStep);
}
CropViewport(target.width, target.height, 0, out var viewportLast, out var activeRegionLast);
activeRegionLast = stepCount > 1 ? activeRegionLast : RectUtils.Crop(srcCropRegion, activeRegionLast);
propertyBlock.SetVector(ShaderID.CROP_REGION, RectUtils.ToMinMaxVector(activeRegionLast));
var targetSizeFinal = new Vector2(target.width, target.height);
propertyBlock.SetVector(ShaderID.TARGET_SIZE, targetSizeFinal);
propertyBlock.SetVector(ShaderID.OFFSET, stepCount == 1
? offsetDistanceDown / targetSizeFinal
: offsetDistanceUp / targetSizeFinal);
propertyBlock.SetInteger(ShaderID.IS_LAST, 1);
Blitter.Blit(cmd,
stepCount > 1 ? scratches[0] : src,
target,
Material,
0,
propertyBlock,
viewportLast);
return;
void CropViewport(int targetWidth, int targetHeight, float padding, out Rect viewport, out Rect activeRegionSnapped)
{
var x = activeRegionRelative.x * targetWidth;
var y = activeRegionRelative.y * targetHeight;
var xf = Mathf.Floor(x - padding);
var yf = Mathf.Floor(y - padding);
viewport = new Rect(xf,
yf,
Mathf.Ceil(x + activeRegionRelative.width * targetWidth + padding) - xf,
Mathf.Ceil(y + activeRegionRelative.height * targetHeight + padding) - yf);
viewport.x = Mathf.Max(viewport.x, 0);
viewport.y = Mathf.Max(viewport.y, 0);
viewport.width = Mathf.Min(viewport.width, targetWidth);
viewport.height = Mathf.Min(viewport.height, targetHeight);
activeRegionSnapped = new Rect(
viewport.x / targetWidth,
viewport.y / targetHeight,
viewport.width / targetWidth,
viewport.height / targetHeight
);
}
}
public int GetScratchesCount(float targetWidth, float targetHeight)
{
var (_, _, iterations) = GetEffectiveConfig(targetWidth, targetHeight);
return Mathf.Min(iterations, scratches.Length);
}
public void GetNextScratchDescriptor(ref RenderTextureDescriptor prevDescriptor)
{
prevDescriptor.width >>= 1;
prevDescriptor.height >>= 1;
if (prevDescriptor.width <= 0) prevDescriptor.width = 1;
if (prevDescriptor.height <= 0) prevDescriptor.height = 1;
}
public void SetScratch(int index, RenderTargetIdentifier value)
{
scratches[index] = value;
}
protected void ConfigMaterial(BackgroundFill backgroundFill)
{
var mat = Material;
if (kwUseExtraSample == default || !kwUseExtraSample.isValid)
InitKeywords();
switch (backgroundFill.mode)
{
case BackgroundFillMode.None:
mat.SetKeyword(kwBackgroundFillNone, true);
mat.SetKeyword(kwBackgroundFillNone, true);
mat.SetKeyword(kwBackgroundFillColor, false);
break;
case BackgroundFillMode.Color:
mat.SetKeyword(kwBackgroundFillColor, true);
mat.SetKeyword(kwBackgroundFillNone, false);
mat.SetColor(ShaderID.BACKGROUND_COLOR, backgroundFill.color);
break;
}
mat.SetKeyword(kwUseExtraSample, config.Mode == ScalableBlurConfig.BlurMode.Balanced);
}
(float strength, float radius, int iteration) GetEffectiveConfig(float targetWidth, float targetHeight)
{
float scaleFactor = config.GetResolutionScaleFactor(targetWidth, targetHeight);
float strength = config.Strength * scaleFactor;
float radius;
int iteration;
if (!config.UseStrength)
{
radius = config.Radius * scaleFactor;
iteration = config.Iteration;
}
else
{
(radius, iteration) = ScalableBlurConfig.FromStrength(strength);
}
return (strength, radius, iteration);
}
static int SimplePingPong(int t, int max)
{
if (t > max)
return 2 * max - t;
return t;
}
void InitKeywords()
{
var materialShader = Material.shader;
kwBackgroundFillNone = new LocalKeyword(materialShader, "BACKGROUND_FILL_NONE");
kwBackgroundFillColor = new LocalKeyword(materialShader, "BACKGROUND_FILL_COLOR");
kwUseExtraSample = new LocalKeyword(materialShader, "USE_EXTRA_SAMPLE");
}
}
}

Some files were not shown because too many files have changed in this diff Show More