diff --git a/Assets/01.Scenes/01.Tycoon 1.unity b/Assets/01.Scenes/01.Tycoon 1.unity index 62ad5d500..8d3a1021b 100644 --- a/Assets/01.Scenes/01.Tycoon 1.unity +++ b/Assets/01.Scenes/01.Tycoon 1.unity @@ -2338,13 +2338,14 @@ RectTransform: m_LocalScale: {x: 1, y: 1, z: 1} m_ConstrainProportionsScale: 0 m_Children: + - {fileID: 347118453} - {fileID: 737939132} m_Father: {fileID: 1049919592} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0.5, y: 0.5} - m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} m_AnchoredPosition: {x: 0, y: 0} - m_SizeDelta: {x: 100, y: 100} + m_SizeDelta: {x: 0, y: 0} m_Pivot: {x: 0.5, y: 0.5} --- !u!114 &186139409 MonoBehaviour: @@ -3718,6 +3719,81 @@ CanvasRenderer: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 346596724} m_CullTransparentMesh: 1 +--- !u!1 &347118452 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 347118453} + - component: {fileID: 347118455} + - component: {fileID: 347118454} + m_Layer: 5 + m_Name: Image + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 0 +--- !u!224 &347118453 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 347118452} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 186139408} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &347118454 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 347118452} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0, g: 0, b: 0, a: 0.78431374} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 0} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &347118455 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 347118452} + m_CullTransparentMesh: 1 --- !u!114 &350928419 stripped MonoBehaviour: m_CorrespondingSourceObject: {fileID: 529622739828575346, guid: 981817fdc4897a34bafc0040f15656b9, type: 3} @@ -4761,6 +4837,7 @@ MonoBehaviour: m_EditorClassIdentifier: _goldAnimator: {fileID: 1308258170} _goldText: {fileID: 677143483} + _animationTime: 1 --- !u!1 &440736213 GameObject: m_ObjectHideFlags: 0 @@ -8650,8 +8727,8 @@ MonoBehaviour: m_RequiresOpaqueTextureOption: 2 m_CameraType: 0 m_Cameras: - - {fileID: 1355183327} - {fileID: 1985878519} + - {fileID: 1355183327} m_RendererIndex: -1 m_VolumeLayerMask: serializedVersion: 2 @@ -13654,10 +13731,10 @@ MonoBehaviour: m_RendererIndex: -1 m_VolumeLayerMask: serializedVersion: 2 - m_Bits: 1 + m_Bits: 8 m_VolumeTrigger: {fileID: 0} m_VolumeFrameworkUpdateModeOption: 2 - m_RenderPostProcessing: 0 + m_RenderPostProcessing: 1 m_Antialiasing: 0 m_AntialiasingQuality: 2 m_StopNaN: 0 @@ -17482,7 +17559,9 @@ MonoBehaviour: _currentPlayerHealth: 0 _playerMoveSpeedMultiplier: 0 _currentExp: 0 + _expMultiplier: 0 _currentGold: 0 + _goldMultiplier: 0 _currentLiquidAmountA: 0 _currentLiquidAmountB: 0 _currentLiquidAmountC: 0 @@ -18512,7 +18591,7 @@ GameObject: m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 - m_IsActive: 1 + m_IsActive: 0 --- !u!224 &1733369987 RectTransform: m_ObjectHideFlags: 0 diff --git a/Assets/01.Scenes/02.Combat/GlobalVolume.asset b/Assets/01.Scenes/02.Combat/GlobalVolume.asset index 772d0a9ce..0fb726a07 100644 --- a/Assets/01.Scenes/02.Combat/GlobalVolume.asset +++ b/Assets/01.Scenes/02.Combat/GlobalVolume.asset @@ -78,6 +78,7 @@ MonoBehaviour: components: - {fileID: 8563356217564074714} - {fileID: -3848577592826383421} + - {fileID: 4404516855583877853} --- !u!114 &1921075280319716275 MonoBehaviour: m_ObjectHideFlags: 3 @@ -96,6 +97,52 @@ MonoBehaviour: m_OverrideState: 1 m_Value: 0 IsActive: 0 +--- !u!114 &4404516855583877853 +MonoBehaviour: + m_ObjectHideFlags: 3 + 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: c01700fd266d6914ababb731e09af2eb, type: 3} + m_Name: DepthOfField + m_EditorClassIdentifier: + active: 0 + mode: + m_OverrideState: 1 + m_Value: 1 + gaussianStart: + m_OverrideState: 1 + m_Value: 0 + gaussianEnd: + m_OverrideState: 1 + m_Value: 0 + gaussianMaxRadius: + m_OverrideState: 1 + m_Value: 1.5 + highQualitySampling: + m_OverrideState: 1 + m_Value: 0 + focusDistance: + m_OverrideState: 1 + m_Value: 10 + aperture: + m_OverrideState: 1 + m_Value: 5.6 + focalLength: + m_OverrideState: 1 + m_Value: 50 + bladeCount: + m_OverrideState: 1 + m_Value: 5 + bladeCurvature: + m_OverrideState: 1 + m_Value: 1 + bladeRotation: + m_OverrideState: 1 + m_Value: 0 --- !u!114 &8563356217564074714 MonoBehaviour: m_ObjectHideFlags: 3 diff --git a/Assets/02.Scripts/Tycoon/CardDataSo.cs b/Assets/02.Scripts/Tycoon/CardDataSo.cs index 5fa9886a7..89135c0e3 100644 --- a/Assets/02.Scripts/Tycoon/CardDataSo.cs +++ b/Assets/02.Scripts/Tycoon/CardDataSo.cs @@ -1,6 +1,10 @@ +using System; using System.Collections.Generic; using BlueWater.Items; +using BlueWater.Tycoons; +using UnityEditor.Rendering; using UnityEngine; +using Random = UnityEngine.Random; namespace BlueWater @@ -10,6 +14,11 @@ namespace BlueWater public class CardDataSo : DataSo { private Dictionary _selectedCard = new Dictionary(); // 선택된 카드를 저장함. + + public CardData GetCardData(string idxKey) + { + return GetDataByIdx(idxKey); + } public CardData GetRandCardData() { @@ -38,10 +47,47 @@ namespace BlueWater } } + //(임시) 카드 종류를 탐색해서 치환하는 작업 (리퀴드와 가니쉬에 해당함) + //확률적으로 문제가 있기 때문에, 해당 확률를 고려해서 카드를 변경시키는 기능 + //EX -> 10레벨 상태에서 AddLiquidE 가 나왔을 경우 B, C 둘중 하나로 치환함 + //만약에 5레벨보다 작으면 null값 리턴 + public CardData SubstitutionLiquid(CardData cardData, LevelData levelData) + { + if (cardData.Idx.Equals("AddLiquidB") || cardData.Idx.Equals("AddLiquidC") || cardData.Idx.Equals("AddLiquidD") || + cardData.Idx.Equals("AddLiquidE") || cardData.Idx.Equals("AddGarnish1") || cardData.Idx.Equals("AddGarnish2") || cardData.Idx.Equals("AddAllLiquid")) + { + int levelIdx = Int32.Parse(levelData.Idx); + + if (levelIdx <= 5) + { + Debug.Log("<= 5"); + return null; + } + else if (cardData.Idx.Equals("AddAllLiquid")) + { + return cardData; + } + + List activeLiquid = new List(); + + if (levelIdx > 5) activeLiquid.Add(GetCardData("AddLiquidB")); + if (levelIdx > 10) activeLiquid.Add(GetCardData("AddLiquidC")); + if (levelIdx > 15) activeLiquid.Add(GetCardData("AddLiquidD")); + if (levelIdx > 20) activeLiquid.Add(GetCardData("AddLiquidE")); + if (levelIdx > 25) activeLiquid.Add(GetCardData("AddGarnish1")); + if (levelIdx > 30) activeLiquid.Add(GetCardData("AddGarnish2")); + + // 액체 목록에서 랜덤하게 선택하여 반환 + return activeLiquid[Random.Range(0, activeLiquid.Count)]; + } + return cardData; // 해당 사항이 없으면 치환하지 않음 + } + // 카드가 MAX값인지 확인할 때 - MAX값이면 true를 리턴 public bool CardMaxCheck(CardData cardData) { return _selectedCard.TryGetValue(cardData.Idx, out var value) && cardData.Max != 0 && value >= cardData.Max; } + } } \ No newline at end of file diff --git a/Assets/02.Scripts/Tycoon/TycoonIngredientController.cs b/Assets/02.Scripts/Tycoon/TycoonIngredientController.cs index cc25057d5..547e1feca 100644 --- a/Assets/02.Scripts/Tycoon/TycoonIngredientController.cs +++ b/Assets/02.Scripts/Tycoon/TycoonIngredientController.cs @@ -80,5 +80,19 @@ namespace BlueWater.Tycoons return validCocktails; } + + public List GetActivatedBarrels() + { + return _barrels.Where(barrel => barrel.IsActivated).ToList(); + } + + public void AllAddBarrels(int addVal) + { + var activeBarrels = GetActivatedBarrels(); + foreach (var VARIABLE in activeBarrels) + { + VARIABLE.SetCurrentAmount(VARIABLE.CurrentAmount + addVal, true); + } + } } } diff --git a/Assets/02.Scripts/Ui/Tycoon/TycoonCard.cs b/Assets/02.Scripts/Ui/Tycoon/TycoonCard.cs index 5a1d48117..355fb859c 100644 --- a/Assets/02.Scripts/Ui/Tycoon/TycoonCard.cs +++ b/Assets/02.Scripts/Ui/Tycoon/TycoonCard.cs @@ -74,7 +74,6 @@ public class TycoonCard : MonoBehaviour //지정된 IDX값으로 정보값 초기화 public void SetCard(string cardIdx) { - Debug.Log(cardIdx); CardDataForIdx = TycoonManager.Instance.CardDataSo.GetDataByIdx(cardIdx); Transform infoTransform = transform.Find("CardCom/Infomation"); diff --git a/Assets/02.Scripts/Ui/Tycoon/TycoonSelectCard.cs b/Assets/02.Scripts/Ui/Tycoon/TycoonSelectCard.cs index 78b441288..351d8fe7e 100644 --- a/Assets/02.Scripts/Ui/Tycoon/TycoonSelectCard.cs +++ b/Assets/02.Scripts/Ui/Tycoon/TycoonSelectCard.cs @@ -31,6 +31,8 @@ namespace BlueWater.Uis private TycoonCard _tycoonCard02Componet; private TycoonCard _tycoonCard03Componet; + private LevelData _lvData; + private void Awake() { EventManager.OnLevelUp += Test; @@ -94,18 +96,29 @@ namespace BlueWater.Uis do { card = TycoonManager.Instance.CardDataSo.GetRandCardData(); - card01Key = card.Idx; - } while (TycoonManager.Instance.CardDataSo.CardMaxCheck(card)); + card = TycoonManager.Instance.CardDataSo.SubstitutionLiquid(card, _lvData); + + if (card != null) + { + card01Key = card.Idx; + } + + } while (card == null || TycoonManager.Instance.CardDataSo.CardMaxCheck(card)); _tycoonCard01Componet.SetCard(card01Key); + var card02Key = "NULL VAL"; do { card = TycoonManager.Instance.CardDataSo.GetRandCardData(); - card02Key = card.Idx; + card = TycoonManager.Instance.CardDataSo.SubstitutionLiquid(card, _lvData); + if (card != null) + { + card02Key = card.Idx; + } - } while (TycoonManager.Instance.CardDataSo.CardMaxCheck(card) || card02Key.Equals(card01Key)); + } while (card == null || TycoonManager.Instance.CardDataSo.CardMaxCheck(card) || card02Key.Equals(card01Key)); _tycoonCard02Componet.SetCard(card02Key); @@ -113,9 +126,14 @@ namespace BlueWater.Uis do { card = TycoonManager.Instance.CardDataSo.GetRandCardData(); - card03Key = card.Idx; + card = TycoonManager.Instance.CardDataSo.SubstitutionLiquid(card, _lvData); + + if (card != null) + { + card03Key = card.Idx; + } - } while (TycoonManager.Instance.CardDataSo.CardMaxCheck(card) || card03Key.Equals(card01Key) || card03Key.Equals(card02Key)); + } while (card == null || TycoonManager.Instance.CardDataSo.CardMaxCheck(card) || card03Key.Equals(card01Key) || card03Key.Equals(card02Key)); _tycoonCard03Componet.SetCard(card03Key); //------------- @@ -127,7 +145,8 @@ namespace BlueWater.Uis private void Test(LevelData levelData) { - if (levelData.Idx == "1") return; + _lvData = levelData; + if (_lvData.Idx == "1") return; CreateCard(); } @@ -137,9 +156,9 @@ namespace BlueWater.Uis switch (currTycoonCard.CardDataForIdx.Idx) //탐색 후 행동... { case "HeartPlus": - TycoonManager.Instance.TycoonStatus.MaxPlayerHealth += 1 ;break; + TycoonManager.Instance.TycoonStatus.MaxPlayerHealth += 2 ;break; case "HeartHeal": - TycoonManager.Instance.TycoonStatus.CurrentPlayerHealth += 1 ;break; + TycoonManager.Instance.TycoonStatus.CurrentPlayerHealth += 2 ;break; case "HeartAllHeal": TycoonManager.Instance.TycoonStatus.CurrentPlayerHealth = TycoonManager.Instance.TycoonStatus.MaxPlayerHealth ;break; case "AddLiquidB": @@ -154,9 +173,8 @@ namespace BlueWater.Uis TycoonManager.Instance.TycoonStatus.CurrentGarnishAmount1 += 4000;break; case "AddGarnish2": TycoonManager.Instance.TycoonStatus.CurrentGarnishAmount2 += 4000;break; - case "AddAllLiquid": - TycoonManager.Instance.TycoonStatus.CurrentGarnishAmount1 += 1000; - TycoonManager.Instance.TycoonStatus.CurrentGarnishAmount2 += 1000;break; + case "AddAllLiquid": + TycoonManager.Instance.TycoonIngredientController.AllAddBarrels(1000); break; // case "ServerNpc": return; break; // case "CleanerNpc": return; break; // case "ChefNpc": return; break; @@ -229,7 +247,6 @@ namespace BlueWater.Uis endPosition02 = new Vector2(-1500, startPosition02.y); // 목표 위치(좌측) } - float time = 0.0f; // 타이머 초기화 int rotationDirection = Random.Range(0, 2) * 2 - 1; // 결과는 -1 또는 1 diff --git a/Assets/04.Materials/Uis/TycoonUiBlur.mat b/Assets/04.Materials/Uis/TycoonUiBlur.mat new file mode 100644 index 000000000..222218a21 --- /dev/null +++ b/Assets/04.Materials/Uis/TycoonUiBlur.mat @@ -0,0 +1,135 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &-6318621047611177644 +MonoBehaviour: + m_ObjectHideFlags: 11 + 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: d0353a89b1f911e48b9e16bdc9f2e058, type: 3} + m_Name: + m_EditorClassIdentifier: + version: 9 +--- !u!21 &2100000 +Material: + serializedVersion: 8 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: TycoonUiBlur + m_Shader: {fileID: 4800000, guid: 1920eb1aecf76cb4f999dcbcf4c56b19, 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: + - MOTIONVECTORS + m_LockedProperties: + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - _BaseMap: + 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} + - _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} + - _SpecGlossMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_Lightmaps: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_LightmapsInd: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - unity_ShadowMasks: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Ints: [] + m_Floats: + - _AddPrecomputedVelocity: 0 + - _AlphaClip: 0 + - _AlphaToMask: 0 + - _Blend: 0 + - _BlendModePreserveSpecular: 1 + - _BumpScale: 1 + - _ClearCoatMask: 0 + - _ClearCoatSmoothness: 0 + - _Cull: 2 + - _Cutoff: 0.5 + - _DetailAlbedoMapScale: 1 + - _DetailNormalMapScale: 1 + - _DstBlend: 0 + - _DstBlendAlpha: 0 + - _EnvironmentReflections: 1 + - _GlossMapScale: 0 + - _Glossiness: 0 + - _GlossyReflections: 0 + - _Metallic: 0 + - _OcclusionStrength: 1 + - _Parallax: 0.005 + - _QueueOffset: 0 + - _ReceiveShadows: 1 + - _Smoothness: 0.5 + - _SmoothnessTextureChannel: 0 + - _SpecularHighlights: 1 + - _SrcBlend: 1 + - _SrcBlendAlpha: 1 + - _Surface: 0 + - _WorkflowMode: 1 + - _ZWrite: 1 + m_Colors: + - _BaseColor: {r: 1, g: 1, b: 1, a: 1} + - _Color: {r: 1, g: 1, b: 1, a: 1} + - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} + - _SpecColor: {r: 0.19999996, g: 0.19999996, b: 0.19999996, a: 1} + m_BuildTextureStacks: [] + m_AllowLocking: 1 diff --git a/Assets/04.Materials/Uis/TycoonUiBlur.mat.meta b/Assets/04.Materials/Uis/TycoonUiBlur.mat.meta new file mode 100644 index 000000000..b43903029 --- /dev/null +++ b/Assets/04.Materials/Uis/TycoonUiBlur.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 20a20b860dc12774b93b1acd5685d9f7 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 2100000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/09.Shaders/TycoonUiBlur.shader b/Assets/09.Shaders/TycoonUiBlur.shader new file mode 100644 index 000000000..788921fe7 --- /dev/null +++ b/Assets/09.Shaders/TycoonUiBlur.shader @@ -0,0 +1,152 @@ +Shader "Hidden/TycoonUiBlur" +{ + Properties + { + _Radius("Radius", Range(1, 255)) = 1 + } + + Category + { + Tags{ "Queue" = "Transparent" "IgnoreProjector" = "True" "RenderType" = "Opaque" } + + SubShader + { + GrabPass + { + Tags{ "LightMode" = "Always" } + } + + Pass + { + Tags{ "LightMode" = "Always" } + + CGPROGRAM + #pragma vertex vert + #pragma fragment frag + #pragma fragmentoption ARB_precision_hint_fastest + #include "UnityCG.cginc" + + struct appdata_t + { + float4 vertex : POSITION; + float2 texcoord: TEXCOORD0; + }; + + struct v2f + { + float4 vertex : POSITION; + float4 uvgrab : TEXCOORD0; + }; + + v2f vert(appdata_t v) + { + v2f o; + o.vertex = UnityObjectToClipPos(v.vertex); + #if UNITY_UV_STARTS_AT_TOP + float scale = -1.0; + #else + float scale = 1.0; + #endif + o.uvgrab.xy = (float2(o.vertex.x, o.vertex.y*scale) + o.vertex.w) * 0.5; + o.uvgrab.zw = o.vertex.zw; + return o; + } + + sampler2D _GrabTexture; + float4 _GrabTexture_TexelSize; + float _Radius; + + half4 frag(v2f i) : COLOR + { + half4 sum = half4(0,0,0,0); + + #define GRABXYPIXEL(kernelx, kernely) tex2Dproj( _GrabTexture, UNITY_PROJ_COORD(float4(i.uvgrab.x + _GrabTexture_TexelSize.x * kernelx, i.uvgrab.y + _GrabTexture_TexelSize.y * kernely, i.uvgrab.z, i.uvgrab.w))) + + sum += GRABXYPIXEL(0.0, 0.0); + int measurments = 1; + + for (float range = 0.1f; range <= _Radius; range += 0.1f) + { + sum += GRABXYPIXEL(range, range); + sum += GRABXYPIXEL(range, -range); + sum += GRABXYPIXEL(-range, range); + sum += GRABXYPIXEL(-range, -range); + measurments += 4; + } + + return sum / measurments; + } + ENDCG + } + GrabPass + { + Tags{ "LightMode" = "Always" } + } + + Pass + { + Tags{ "LightMode" = "Always" } + + CGPROGRAM + #pragma vertex vert + #pragma fragment frag + #pragma fragmentoption ARB_precision_hint_fastest + #include "UnityCG.cginc" + + struct appdata_t + { + float4 vertex : POSITION; + float2 texcoord: TEXCOORD0; + }; + + struct v2f + { + float4 vertex : POSITION; + float4 uvgrab : TEXCOORD0; + }; + + v2f vert(appdata_t v) + { + v2f o; + o.vertex = UnityObjectToClipPos(v.vertex); + #if UNITY_UV_STARTS_AT_TOP + float scale = -1.0; + #else + float scale = 1.0; + #endif + o.uvgrab.xy = (float2(o.vertex.x, o.vertex.y*scale) + o.vertex.w) * 0.5; + o.uvgrab.zw = o.vertex.zw; + return o; + } + + sampler2D _GrabTexture; + float4 _GrabTexture_TexelSize; + float _Radius; + + half4 frag(v2f i) : COLOR + { + + half4 sum = half4(0,0,0,0); + float radius = 1.41421356237 * _Radius; + + #define GRABXYPIXEL(kernelx, kernely) tex2Dproj( _GrabTexture, UNITY_PROJ_COORD(float4(i.uvgrab.x + _GrabTexture_TexelSize.x * kernelx, i.uvgrab.y + _GrabTexture_TexelSize.y * kernely, i.uvgrab.z, i.uvgrab.w))) + + sum += GRABXYPIXEL(0.0, 0.0); + int measurments = 1; + + for (float range = 1.41421356237f; range <= radius * 1.41; range += 1.41421356237f) + { + sum += GRABXYPIXEL(range, 0); + sum += GRABXYPIXEL(-range, 0); + sum += GRABXYPIXEL(0, range); + sum += GRABXYPIXEL(0, -range); + measurments += 4; + } + + return sum / measurments; + } + ENDCG + } + } + } +} diff --git a/Assets/09.Shaders/TycoonUiBlur.shader.meta b/Assets/09.Shaders/TycoonUiBlur.shader.meta new file mode 100644 index 000000000..13f52414a --- /dev/null +++ b/Assets/09.Shaders/TycoonUiBlur.shader.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 1920eb1aecf76cb4f999dcbcf4c56b19 +ShaderImporter: + externalObjects: {} + defaultTextures: [] + nonModifiableTextures: [] + userData: + assetBundleName: + assetBundleVariant: