From 17abe064bb4e6d2c3c5bbdd38245ed8f34999124 Mon Sep 17 00:00:00 2001 From: ntr Date: Thu, 26 May 2022 13:29:30 +1000 Subject: [PATCH] ether shader modified to work with spectrum --- Assets/Audio/ThemeShaderBinder.cs | 4 +- .../Global Volume Profile.asset | 49 +- .../{MNML_Orbital.meta => MXML_Orbital.meta} | 0 ...{MNML_Orbital.unity => MXML_Orbital.unity} | 0 ...tal.unity.meta => MXML_Orbital.unity.meta} | 0 .../Global Volume Profile.asset | 0 .../Global Volume Profile.asset.meta | 0 .../VFXOrbital 1.vfx | 0 .../VFXOrbital 1.vfx.meta | 0 .../VFXOrbital 2.vfx | 0 .../VFXOrbital 2.vfx.meta | 0 .../VFXOrbital.vfx | 338 ++++--- .../VFXOrbital.vfx.meta | 0 Assets/Scenes/_Shader.meta | 8 + Assets/Scenes/_Shader.unity | 848 ++++++++++++++++++ Assets/Scenes/_Shader.unity.meta | 7 + Assets/Scenes/_Shader/Bubbles.mat | 263 ++++++ Assets/Scenes/_Shader/Bubbles.mat.meta | 8 + Assets/Scenes/_Shader/BubblesFS.shader | 102 +++ Assets/Scenes/_Shader/BubblesFS.shader.meta | 10 + Assets/Scenes/_Shader/Ether.mat | 279 ++++++ Assets/Scenes/_Shader/Ether.mat.meta | 8 + Assets/Scenes/_Shader/Ether.shader | 105 +++ Assets/Scenes/_Shader/Ether.shader.meta | 10 + Assets/Scenes/_Shader/EtherOrigish.shader | 101 +++ .../Scenes/_Shader/EtherOrigish.shader.meta | 10 + Assets/Scenes/_Shader/Pulsar.mat | 272 ++++++ Assets/Scenes/_Shader/Pulsar.mat.meta | 8 + Assets/Scenes/_Shader/PulsarFS.shader | 148 +++ Assets/Scenes/_Shader/PulsarFS.shader.meta | 10 + Assets/Shaders/TIPS.cs | 133 +++ Assets/Shaders/TIPS.cs.meta | 11 + Assets/Shaders/TIPS.shader | 194 ++++ Assets/Shaders/TIPS.shader.meta | 10 + Assets/Textures/stars.jpg | Bin 0 -> 17800 bytes Assets/Textures/stars.jpg.meta | 122 +++ Assets/Util.meta | 8 + ProjectSettings/EditorBuildSettings.asset | 27 +- UserSettings/EditorUserSettings.asset | 20 +- .../Layouts/CurrentMaximizeLayout.dwlt | 109 ++- beta-keys.txt | 20 + 41 files changed, 2982 insertions(+), 260 deletions(-) rename Assets/Scenes/{MNML_Orbital.meta => MXML_Orbital.meta} (100%) rename Assets/Scenes/{MNML_Orbital.unity => MXML_Orbital.unity} (100%) rename Assets/Scenes/{MNML_Orbital.unity.meta => MXML_Orbital.unity.meta} (100%) rename Assets/Scenes/{MNML_Orbital => MXML_Orbital}/Global Volume Profile.asset (100%) rename Assets/Scenes/{MNML_Orbital => MXML_Orbital}/Global Volume Profile.asset.meta (100%) rename Assets/Scenes/{MNML_Orbital => MXML_Orbital}/VFXOrbital 1.vfx (100%) rename Assets/Scenes/{MNML_Orbital => MXML_Orbital}/VFXOrbital 1.vfx.meta (100%) rename Assets/Scenes/{MNML_Orbital => MXML_Orbital}/VFXOrbital 2.vfx (100%) rename Assets/Scenes/{MNML_Orbital => MXML_Orbital}/VFXOrbital 2.vfx.meta (100%) rename Assets/Scenes/{MNML_Orbital => MXML_Orbital}/VFXOrbital.vfx (98%) rename Assets/Scenes/{MNML_Orbital => MXML_Orbital}/VFXOrbital.vfx.meta (100%) create mode 100644 Assets/Scenes/_Shader.meta create mode 100644 Assets/Scenes/_Shader.unity create mode 100644 Assets/Scenes/_Shader.unity.meta create mode 100644 Assets/Scenes/_Shader/Bubbles.mat create mode 100644 Assets/Scenes/_Shader/Bubbles.mat.meta create mode 100644 Assets/Scenes/_Shader/BubblesFS.shader create mode 100644 Assets/Scenes/_Shader/BubblesFS.shader.meta create mode 100644 Assets/Scenes/_Shader/Ether.mat create mode 100644 Assets/Scenes/_Shader/Ether.mat.meta create mode 100644 Assets/Scenes/_Shader/Ether.shader create mode 100644 Assets/Scenes/_Shader/Ether.shader.meta create mode 100644 Assets/Scenes/_Shader/EtherOrigish.shader create mode 100644 Assets/Scenes/_Shader/EtherOrigish.shader.meta create mode 100644 Assets/Scenes/_Shader/Pulsar.mat create mode 100644 Assets/Scenes/_Shader/Pulsar.mat.meta create mode 100644 Assets/Scenes/_Shader/PulsarFS.shader create mode 100644 Assets/Scenes/_Shader/PulsarFS.shader.meta create mode 100644 Assets/Shaders/TIPS.cs create mode 100644 Assets/Shaders/TIPS.cs.meta create mode 100644 Assets/Shaders/TIPS.shader create mode 100644 Assets/Shaders/TIPS.shader.meta create mode 100644 Assets/Textures/stars.jpg create mode 100644 Assets/Textures/stars.jpg.meta create mode 100644 Assets/Util.meta create mode 100644 beta-keys.txt diff --git a/Assets/Audio/ThemeShaderBinder.cs b/Assets/Audio/ThemeShaderBinder.cs index f7d9c0c..f84cd89 100644 --- a/Assets/Audio/ThemeShaderBinder.cs +++ b/Assets/Audio/ThemeShaderBinder.cs @@ -53,9 +53,9 @@ public class ThemeShaderBinder : MonoBehaviour _texture.wrapMode = TextureWrapMode.Clamp; for (int i = 0; i < textureSize; i++) { - // Color decomposed = DecomposeHdrColor(_theme.Evaluate((float)i / (float)textureSize)); if (_theme == null) return; - Color color = _theme.Evaluate((float)i / (float)textureSize); + Color color = DecomposeHdrColor(_theme.Evaluate((float)i / (float)textureSize)); + // Color color = _theme.Evaluate((float)i / (float)textureSize); _colorCache[i] = color; } diff --git a/Assets/Scenes/GFLPC_OrganicMandelbrot/Global Volume Profile.asset b/Assets/Scenes/GFLPC_OrganicMandelbrot/Global Volume Profile.asset index c39b6f3..e1ded1f 100644 --- a/Assets/Scenes/GFLPC_OrganicMandelbrot/Global Volume Profile.asset +++ b/Assets/Scenes/GFLPC_OrganicMandelbrot/Global Volume Profile.asset @@ -1,51 +1,5 @@ %YAML 1.1 %TAG !u! tag:unity3d.com,2011: ---- !u!114 &-6103144385684529463 -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: 24f077503be6ae942a1e1245dbd53ea9, type: 3} - m_Name: Bloom - m_EditorClassIdentifier: - active: 1 - quality: - m_OverrideState: 1 - m_Value: 1 - threshold: - m_OverrideState: 1 - m_Value: 37.34 - intensity: - m_OverrideState: 1 - m_Value: 0.633 - scatter: - m_OverrideState: 0 - m_Value: 0.7 - tint: - m_OverrideState: 1 - m_Value: {r: 0.8773585, g: 0, b: 0, a: 1} - dirtTexture: - m_OverrideState: 0 - m_Value: {fileID: 0} - dirtIntensity: - m_OverrideState: 0 - m_Value: 0 - anamorphic: - m_OverrideState: 0 - m_Value: 1 - m_Resolution: - m_OverrideState: 1 - m_Value: 2 - m_HighQualityPrefiltering: - m_OverrideState: 1 - m_Value: 0 - m_HighQualityFiltering: - m_OverrideState: 1 - m_Value: 1 --- !u!114 &-2506743561836662026 MonoBehaviour: m_ObjectHideFlags: 3 @@ -58,7 +12,7 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: 2c1be1b6c95cd2e41b27903b9270817f, type: 3} m_Name: Vignette m_EditorClassIdentifier: - active: 1 + active: 0 mode: m_OverrideState: 1 m_Value: 0 @@ -99,5 +53,4 @@ MonoBehaviour: m_Name: Global Volume Profile m_EditorClassIdentifier: components: - - {fileID: -6103144385684529463} - {fileID: -2506743561836662026} diff --git a/Assets/Scenes/MNML_Orbital.meta b/Assets/Scenes/MXML_Orbital.meta similarity index 100% rename from Assets/Scenes/MNML_Orbital.meta rename to Assets/Scenes/MXML_Orbital.meta diff --git a/Assets/Scenes/MNML_Orbital.unity b/Assets/Scenes/MXML_Orbital.unity similarity index 100% rename from Assets/Scenes/MNML_Orbital.unity rename to Assets/Scenes/MXML_Orbital.unity diff --git a/Assets/Scenes/MNML_Orbital.unity.meta b/Assets/Scenes/MXML_Orbital.unity.meta similarity index 100% rename from Assets/Scenes/MNML_Orbital.unity.meta rename to Assets/Scenes/MXML_Orbital.unity.meta diff --git a/Assets/Scenes/MNML_Orbital/Global Volume Profile.asset b/Assets/Scenes/MXML_Orbital/Global Volume Profile.asset similarity index 100% rename from Assets/Scenes/MNML_Orbital/Global Volume Profile.asset rename to Assets/Scenes/MXML_Orbital/Global Volume Profile.asset diff --git a/Assets/Scenes/MNML_Orbital/Global Volume Profile.asset.meta b/Assets/Scenes/MXML_Orbital/Global Volume Profile.asset.meta similarity index 100% rename from Assets/Scenes/MNML_Orbital/Global Volume Profile.asset.meta rename to Assets/Scenes/MXML_Orbital/Global Volume Profile.asset.meta diff --git a/Assets/Scenes/MNML_Orbital/VFXOrbital 1.vfx b/Assets/Scenes/MXML_Orbital/VFXOrbital 1.vfx similarity index 100% rename from Assets/Scenes/MNML_Orbital/VFXOrbital 1.vfx rename to Assets/Scenes/MXML_Orbital/VFXOrbital 1.vfx diff --git a/Assets/Scenes/MNML_Orbital/VFXOrbital 1.vfx.meta b/Assets/Scenes/MXML_Orbital/VFXOrbital 1.vfx.meta similarity index 100% rename from Assets/Scenes/MNML_Orbital/VFXOrbital 1.vfx.meta rename to Assets/Scenes/MXML_Orbital/VFXOrbital 1.vfx.meta diff --git a/Assets/Scenes/MNML_Orbital/VFXOrbital 2.vfx b/Assets/Scenes/MXML_Orbital/VFXOrbital 2.vfx similarity index 100% rename from Assets/Scenes/MNML_Orbital/VFXOrbital 2.vfx rename to Assets/Scenes/MXML_Orbital/VFXOrbital 2.vfx diff --git a/Assets/Scenes/MNML_Orbital/VFXOrbital 2.vfx.meta b/Assets/Scenes/MXML_Orbital/VFXOrbital 2.vfx.meta similarity index 100% rename from Assets/Scenes/MNML_Orbital/VFXOrbital 2.vfx.meta rename to Assets/Scenes/MXML_Orbital/VFXOrbital 2.vfx.meta diff --git a/Assets/Scenes/MNML_Orbital/VFXOrbital.vfx b/Assets/Scenes/MXML_Orbital/VFXOrbital.vfx similarity index 98% rename from Assets/Scenes/MNML_Orbital/VFXOrbital.vfx rename to Assets/Scenes/MXML_Orbital/VFXOrbital.vfx index 8ae3087..820cc56 100644 --- a/Assets/Scenes/MNML_Orbital/VFXOrbital.vfx +++ b/Assets/Scenes/MXML_Orbital/VFXOrbital.vfx @@ -20,7 +20,7 @@ MonoBehaviour: x: -3147 y: -1364 width: 2555 - height: 3332 + height: 3410 --- !u!114 &114350483966674976 MonoBehaviour: m_ObjectHideFlags: 1 @@ -60,7 +60,6 @@ MonoBehaviour: - {fileID: 8926484042661617330} - {fileID: 8926484042661617355} - {fileID: 8926484042661617632} - - {fileID: 8926484042661617656} - {fileID: 8926484042661617636} - {fileID: 8926484042661617640} - {fileID: 8926484042661617473} @@ -637,6 +636,7 @@ MonoBehaviour: - {fileID: 8926484042661616016} - {fileID: 8926484042661616040} - {fileID: 8926484042661617328} + - {fileID: 8926484042661617745} m_UIPosition: {x: -1016.4813, y: -318.1848} m_UICollapsed: 0 m_UISuperCollapsed: 0 @@ -1252,6 +1252,7 @@ MonoBehaviour: m_UICollapsed: 0 m_UISuperCollapsed: 0 m_InputSlots: + - {fileID: 8926484042661617742} - {fileID: 8926484042661616022} m_OutputSlots: [] m_Label: @@ -1273,7 +1274,7 @@ MonoBehaviour: zWriteMode: 0 zTestMode: 0 colorMapping: 0 - uvMode: 0 + uvMode: 1 useSoftParticle: 0 vfxSystemSortPriority: 0 sort: 0 @@ -1314,7 +1315,7 @@ MonoBehaviour: m_Type: m_SerializableType: UnityEngine.Texture2D, UnityEngine.CoreModule, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null - m_SerializableObject: '{"obj":{"fileID":10300,"guid":"0000000000000000f000000000000000","type":0}}' + m_SerializableObject: '{"obj":{"fileID":2800000,"guid":"bae070238e2a46d4b9ef80e6301c6710","type":3}}' m_Space: 2147483647 m_Property: name: mainTexture @@ -3983,7 +3984,7 @@ MonoBehaviour: m_Type: m_SerializableType: System.Single, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - m_SerializableObject: 0.75 + m_SerializableObject: 1.5 m_Space: 2147483647 m_Property: name: newRangeMin @@ -4017,7 +4018,7 @@ MonoBehaviour: m_Type: m_SerializableType: System.Single, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - m_SerializableObject: 3 + m_SerializableObject: 4 m_Space: 2147483647 m_Property: name: newRangeMax @@ -7876,133 +7877,6 @@ MonoBehaviour: m_Direction: 1 m_LinkedSlots: - {fileID: 8926484042661617637} ---- !u!114 &8926484042661617656 -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: c42128e17c583714a909b4997c80c916, type: 3} - m_Name: - m_EditorClassIdentifier: - m_UIIgnoredErrors: [] - m_Parent: {fileID: 114350483966674976} - m_Children: [] - m_UIPosition: {x: -3084, y: -304} - m_UICollapsed: 0 - m_UISuperCollapsed: 0 - m_InputSlots: - - {fileID: 8926484042661617657} - - {fileID: 8926484042661617658} - m_OutputSlots: - - {fileID: 8926484042661617659} - seed: 0 - constant: 0 ---- !u!114 &8926484042661617657 -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: f780aa281814f9842a7c076d436932e7, type: 3} - m_Name: - m_EditorClassIdentifier: - m_UIIgnoredErrors: [] - m_Parent: {fileID: 0} - m_Children: [] - m_UIPosition: {x: 0, y: 0} - m_UICollapsed: 1 - m_UISuperCollapsed: 0 - m_MasterSlot: {fileID: 8926484042661617657} - m_MasterData: - m_Owner: {fileID: 8926484042661617656} - m_Value: - m_Type: - m_SerializableType: System.Single, mscorlib, Version=4.0.0.0, Culture=neutral, - PublicKeyToken=b77a5c561934e089 - m_SerializableObject: 0 - m_Space: 2147483647 - m_Property: - name: min - m_serializedType: - m_SerializableType: System.Single, mscorlib, Version=4.0.0.0, Culture=neutral, - PublicKeyToken=b77a5c561934e089 - m_Direction: 0 - m_LinkedSlots: [] ---- !u!114 &8926484042661617658 -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: f780aa281814f9842a7c076d436932e7, type: 3} - m_Name: - m_EditorClassIdentifier: - m_UIIgnoredErrors: [] - m_Parent: {fileID: 0} - m_Children: [] - m_UIPosition: {x: 0, y: 0} - m_UICollapsed: 1 - m_UISuperCollapsed: 0 - m_MasterSlot: {fileID: 8926484042661617658} - m_MasterData: - m_Owner: {fileID: 8926484042661617656} - m_Value: - m_Type: - m_SerializableType: System.Single, mscorlib, Version=4.0.0.0, Culture=neutral, - PublicKeyToken=b77a5c561934e089 - m_SerializableObject: 1 - m_Space: 2147483647 - m_Property: - name: max - m_serializedType: - m_SerializableType: System.Single, mscorlib, Version=4.0.0.0, Culture=neutral, - PublicKeyToken=b77a5c561934e089 - m_Direction: 0 - m_LinkedSlots: [] ---- !u!114 &8926484042661617659 -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: f780aa281814f9842a7c076d436932e7, type: 3} - m_Name: - m_EditorClassIdentifier: - m_UIIgnoredErrors: [] - m_Parent: {fileID: 0} - m_Children: [] - m_UIPosition: {x: 0, y: 0} - m_UICollapsed: 1 - m_UISuperCollapsed: 0 - m_MasterSlot: {fileID: 8926484042661617659} - m_MasterData: - m_Owner: {fileID: 8926484042661617656} - m_Value: - m_Type: - m_SerializableType: System.Single, mscorlib, Version=4.0.0.0, Culture=neutral, - PublicKeyToken=b77a5c561934e089 - m_SerializableObject: 0 - m_Space: 2147483647 - m_Property: - name: r - m_serializedType: - m_SerializableType: System.Single, mscorlib, Version=4.0.0.0, Culture=neutral, - PublicKeyToken=b77a5c561934e089 - m_Direction: 1 - m_LinkedSlots: [] --- !u!114 &8926484042661617664 MonoBehaviour: m_ObjectHideFlags: 0 @@ -9154,3 +9028,201 @@ MonoBehaviour: m_LinkedSlots: - {fileID: 8926484042661617012} - {fileID: 8926484042661617014} +--- !u!114 &8926484042661617742 +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: 1b2b751071c7fc14f9fa503163991826, type: 3} + m_Name: + m_EditorClassIdentifier: + m_UIIgnoredErrors: [] + m_Parent: {fileID: 0} + m_Children: + - {fileID: 8926484042661617743} + - {fileID: 8926484042661617744} + m_UIPosition: {x: 0, y: 0} + m_UICollapsed: 0 + m_UISuperCollapsed: 0 + m_MasterSlot: {fileID: 8926484042661617742} + m_MasterData: + m_Owner: {fileID: 8926484042661616021} + m_Value: + m_Type: + m_SerializableType: UnityEngine.Vector2, UnityEngine.CoreModule, Version=0.0.0.0, + Culture=neutral, PublicKeyToken=null + m_SerializableObject: '{"x":4.0,"y":4.0}' + m_Space: 2147483647 + m_Property: + name: flipBookSize + m_serializedType: + m_SerializableType: UnityEngine.Vector2, UnityEngine.CoreModule, Version=0.0.0.0, + Culture=neutral, PublicKeyToken=null + m_Direction: 0 + m_LinkedSlots: [] +--- !u!114 &8926484042661617743 +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: f780aa281814f9842a7c076d436932e7, type: 3} + m_Name: + m_EditorClassIdentifier: + m_UIIgnoredErrors: [] + m_Parent: {fileID: 8926484042661617742} + m_Children: [] + m_UIPosition: {x: 0, y: 0} + m_UICollapsed: 1 + m_UISuperCollapsed: 0 + m_MasterSlot: {fileID: 8926484042661617742} + m_MasterData: + m_Owner: {fileID: 0} + m_Value: + m_Type: + m_SerializableType: + m_SerializableObject: + m_Space: 2147483647 + m_Property: + name: x + m_serializedType: + m_SerializableType: System.Single, mscorlib, Version=4.0.0.0, Culture=neutral, + PublicKeyToken=b77a5c561934e089 + m_Direction: 0 + m_LinkedSlots: [] +--- !u!114 &8926484042661617744 +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: f780aa281814f9842a7c076d436932e7, type: 3} + m_Name: + m_EditorClassIdentifier: + m_UIIgnoredErrors: [] + m_Parent: {fileID: 8926484042661617742} + m_Children: [] + m_UIPosition: {x: 0, y: 0} + m_UICollapsed: 1 + m_UISuperCollapsed: 0 + m_MasterSlot: {fileID: 8926484042661617742} + m_MasterData: + m_Owner: {fileID: 0} + m_Value: + m_Type: + m_SerializableType: + m_SerializableObject: + m_Space: 2147483647 + m_Property: + name: y + m_serializedType: + m_SerializableType: System.Single, mscorlib, Version=4.0.0.0, Culture=neutral, + PublicKeyToken=b77a5c561934e089 + m_Direction: 0 + m_LinkedSlots: [] +--- !u!114 &8926484042661617745 +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: a971fa2e110a0ac42ac1d8dae408704b, type: 3} + m_Name: + m_EditorClassIdentifier: + m_UIIgnoredErrors: [] + m_Parent: {fileID: 8926484042661615990} + m_Children: [] + m_UIPosition: {x: 0, y: 0} + m_UICollapsed: 0 + m_UISuperCollapsed: 0 + m_InputSlots: + - {fileID: 8926484042661617746} + - {fileID: 8926484042661617747} + m_OutputSlots: [] + m_Disabled: 0 + attribute: texIndex + Composition: 0 + Source: 0 + Random: 2 + channels: 6 +--- !u!114 &8926484042661617746 +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: f780aa281814f9842a7c076d436932e7, type: 3} + m_Name: + m_EditorClassIdentifier: + m_UIIgnoredErrors: [] + m_Parent: {fileID: 0} + m_Children: [] + m_UIPosition: {x: 0, y: 0} + m_UICollapsed: 1 + m_UISuperCollapsed: 0 + m_MasterSlot: {fileID: 8926484042661617746} + m_MasterData: + m_Owner: {fileID: 8926484042661617745} + m_Value: + m_Type: + m_SerializableType: System.Single, mscorlib, Version=4.0.0.0, Culture=neutral, + PublicKeyToken=b77a5c561934e089 + m_SerializableObject: 0 + m_Space: 2147483647 + m_Property: + name: A + m_serializedType: + m_SerializableType: System.Single, mscorlib, Version=4.0.0.0, Culture=neutral, + PublicKeyToken=b77a5c561934e089 + m_Direction: 0 + m_LinkedSlots: [] +--- !u!114 &8926484042661617747 +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: f780aa281814f9842a7c076d436932e7, type: 3} + m_Name: + m_EditorClassIdentifier: + m_UIIgnoredErrors: [] + m_Parent: {fileID: 0} + m_Children: [] + m_UIPosition: {x: 0, y: 0} + m_UICollapsed: 1 + m_UISuperCollapsed: 0 + m_MasterSlot: {fileID: 8926484042661617747} + m_MasterData: + m_Owner: {fileID: 8926484042661617745} + m_Value: + m_Type: + m_SerializableType: System.Single, mscorlib, Version=4.0.0.0, Culture=neutral, + PublicKeyToken=b77a5c561934e089 + m_SerializableObject: 15 + m_Space: 2147483647 + m_Property: + name: B + m_serializedType: + m_SerializableType: System.Single, mscorlib, Version=4.0.0.0, Culture=neutral, + PublicKeyToken=b77a5c561934e089 + m_Direction: 0 + m_LinkedSlots: [] diff --git a/Assets/Scenes/MNML_Orbital/VFXOrbital.vfx.meta b/Assets/Scenes/MXML_Orbital/VFXOrbital.vfx.meta similarity index 100% rename from Assets/Scenes/MNML_Orbital/VFXOrbital.vfx.meta rename to Assets/Scenes/MXML_Orbital/VFXOrbital.vfx.meta diff --git a/Assets/Scenes/_Shader.meta b/Assets/Scenes/_Shader.meta new file mode 100644 index 0000000..29fe7db --- /dev/null +++ b/Assets/Scenes/_Shader.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 09eb21b90fc45e3488833a03f79fc1ad +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scenes/_Shader.unity b/Assets/Scenes/_Shader.unity new file mode 100644 index 0000000..440e400 --- /dev/null +++ b/Assets/Scenes/_Shader.unity @@ -0,0 +1,848 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!29 &1 +OcclusionCullingSettings: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_OcclusionBakeSettings: + smallestOccluder: 5 + smallestHole: 0.25 + backfaceThreshold: 100 + m_SceneGUID: 00000000000000000000000000000000 + m_OcclusionCullingData: {fileID: 0} +--- !u!104 &2 +RenderSettings: + m_ObjectHideFlags: 0 + serializedVersion: 9 + m_Fog: 0 + m_FogColor: {r: 0.5, g: 0.5, b: 0.5, a: 1} + m_FogMode: 3 + m_FogDensity: 0.01 + m_LinearFogStart: 0 + m_LinearFogEnd: 300 + m_AmbientSkyColor: {r: 0.212, g: 0.227, b: 0.259, a: 1} + m_AmbientEquatorColor: {r: 0.114, g: 0.125, b: 0.133, a: 1} + m_AmbientGroundColor: {r: 0.047, g: 0.043, b: 0.035, a: 1} + m_AmbientIntensity: 1 + m_AmbientMode: 0 + m_SubtractiveShadowColor: {r: 0.42, g: 0.478, b: 0.627, a: 1} + m_SkyboxMaterial: {fileID: 0} + m_HaloStrength: 0.5 + m_FlareStrength: 1 + m_FlareFadeSpeed: 3 + m_HaloTexture: {fileID: 0} + m_SpotCookie: {fileID: 10001, guid: 0000000000000000e000000000000000, type: 0} + m_DefaultReflectionMode: 0 + m_DefaultReflectionResolution: 128 + m_ReflectionBounces: 1 + m_ReflectionIntensity: 1 + m_CustomReflection: {fileID: 0} + m_Sun: {fileID: 0} + m_IndirectSpecularColor: {r: 0.35961914, g: 0.35961914, b: 0.35961914, a: 1} + m_UseRadianceAmbientProbe: 0 +--- !u!157 &3 +LightmapSettings: + m_ObjectHideFlags: 0 + serializedVersion: 12 + m_GIWorkflowMode: 1 + m_GISettings: + serializedVersion: 2 + m_BounceScale: 1 + m_IndirectOutputScale: 1 + m_AlbedoBoost: 1 + m_EnvironmentLightingMode: 0 + m_EnableBakedLightmaps: 1 + m_EnableRealtimeLightmaps: 0 + m_LightmapEditorSettings: + serializedVersion: 12 + m_Resolution: 2 + m_BakeResolution: 40 + m_AtlasSize: 1024 + m_AO: 0 + m_AOMaxDistance: 1 + m_CompAOExponent: 1 + m_CompAOExponentDirect: 0 + m_ExtractAmbientOcclusion: 0 + m_Padding: 2 + m_LightmapParameters: {fileID: 0} + m_LightmapsBakeMode: 1 + m_TextureCompression: 1 + m_FinalGather: 0 + m_FinalGatherFiltering: 1 + m_FinalGatherRayCount: 256 + m_ReflectionCompression: 2 + m_MixedBakeMode: 2 + m_BakeBackend: 1 + m_PVRSampling: 1 + m_PVRDirectSampleCount: 32 + m_PVRSampleCount: 512 + m_PVRBounces: 2 + m_PVREnvironmentSampleCount: 256 + m_PVREnvironmentReferencePointCount: 2048 + m_PVRFilteringMode: 1 + m_PVRDenoiserTypeDirect: 1 + m_PVRDenoiserTypeIndirect: 1 + m_PVRDenoiserTypeAO: 1 + m_PVRFilterTypeDirect: 0 + m_PVRFilterTypeIndirect: 0 + m_PVRFilterTypeAO: 0 + m_PVREnvironmentMIS: 1 + m_PVRCulling: 1 + m_PVRFilteringGaussRadiusDirect: 1 + m_PVRFilteringGaussRadiusIndirect: 5 + m_PVRFilteringGaussRadiusAO: 2 + m_PVRFilteringAtrousPositionSigmaDirect: 0.5 + m_PVRFilteringAtrousPositionSigmaIndirect: 2 + m_PVRFilteringAtrousPositionSigmaAO: 1 + m_ExportTrainingData: 0 + m_TrainingDataDestination: TrainingData + m_LightProbeSampleCountMultiplier: 4 + m_LightingDataAsset: {fileID: 0} + m_LightingSettings: {fileID: 0} +--- !u!196 &4 +NavMeshSettings: + serializedVersion: 2 + m_ObjectHideFlags: 0 + m_BuildSettings: + serializedVersion: 2 + agentTypeID: 0 + agentRadius: 0.5 + agentHeight: 2 + agentSlope: 45 + agentClimb: 0.4 + ledgeDropHeight: 0 + maxJumpAcrossDistance: 0 + minRegionArea: 2 + manualCellSize: 0 + cellSize: 0.16666667 + manualTileSize: 0 + tileSize: 256 + accuratePlacement: 0 + maxJobWorkers: 0 + preserveTilesOutsideBounds: 0 + debug: + m_Flags: 0 + m_NavMeshData: {fileID: 0} +--- !u!1 &272997333 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 272997336} + - component: {fileID: 272997335} + - component: {fileID: 272997334} + m_Layer: 0 + m_Name: EventSystem + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &272997334 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 272997333} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4f231c4fb786f3946a6b90b886c48677, type: 3} + m_Name: + m_EditorClassIdentifier: + m_HorizontalAxis: Horizontal + m_VerticalAxis: Vertical + m_SubmitButton: Submit + m_CancelButton: Cancel + m_InputActionsPerSecond: 10 + m_RepeatDelay: 0.5 + m_ForceModuleActive: 0 +--- !u!114 &272997335 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 272997333} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 76c392e42b5098c458856cdf6ecaaaa1, type: 3} + m_Name: + m_EditorClassIdentifier: + m_FirstSelected: {fileID: 0} + m_sendNavigationEvents: 1 + m_DragThreshold: 10 +--- !u!4 &272997336 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 272997333} + 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: 0} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &293362774 +GameObject: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 293362776} + - component: {fileID: 293362775} + m_Layer: 0 + m_Name: StaticLightingSky + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &293362775 +MonoBehaviour: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 293362774} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 441482e8936e35048a1dffac814e3ef8, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Profile: {fileID: 11400000, guid: 077f001198f6d0d44aa6a5ce6453a2e7, type: 2} + m_StaticLightingSkyUniqueID: 0 + m_StaticLightingCloudsUniqueID: 0 + m_StaticLightingVolumetricClouds: 0 +--- !u!4 &293362776 +Transform: + m_ObjectHideFlags: 1 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 293362774} + 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: 0} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &422322493 stripped +MonoBehaviour: + m_CorrespondingSourceObject: {fileID: 8681115429733332136, guid: 31660dba95ae9a9408051002a1e4c382, type: 3} + m_PrefabInstance: {fileID: 657072714} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 26b88d85e12af85469a5e3e4cfc3586b, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!1 &523739710 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 523739712} + - component: {fileID: 523739711} + m_Layer: 0 + m_Name: WasapiLoopback + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 4294967295 + m_IsActive: 1 +--- !u!114 &523739711 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 523739710} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 120ca4c4f9442e14db8c72acac5da136, type: 3} + m_Name: + m_EditorClassIdentifier: + CaptureType: 0 + SpectrumSize: 4 + ScalingStrategy: 0 + MinFrequency: 80 + MaxFrequency: 20000 + Filters: [] +--- !u!4 &523739712 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 523739710} + 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: 667181311} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1001 &657072714 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 0} + m_Modifications: + - target: {fileID: 1835927830994874992, guid: 31660dba95ae9a9408051002a1e4c382, type: 3} + propertyPath: PrevButton + value: 8 + objectReference: {fileID: 0} + - target: {fileID: 5305278010342315827, guid: 31660dba95ae9a9408051002a1e4c382, type: 3} + propertyPath: m_Pivot.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5305278010342315827, guid: 31660dba95ae9a9408051002a1e4c382, type: 3} + propertyPath: m_Pivot.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5305278010342315827, guid: 31660dba95ae9a9408051002a1e4c382, type: 3} + propertyPath: m_RootOrder + value: 3 + objectReference: {fileID: 0} + - target: {fileID: 5305278010342315827, guid: 31660dba95ae9a9408051002a1e4c382, type: 3} + propertyPath: m_AnchorMax.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5305278010342315827, guid: 31660dba95ae9a9408051002a1e4c382, type: 3} + propertyPath: m_AnchorMax.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5305278010342315827, guid: 31660dba95ae9a9408051002a1e4c382, type: 3} + propertyPath: m_AnchorMin.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5305278010342315827, guid: 31660dba95ae9a9408051002a1e4c382, type: 3} + propertyPath: m_AnchorMin.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5305278010342315827, guid: 31660dba95ae9a9408051002a1e4c382, type: 3} + propertyPath: m_SizeDelta.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5305278010342315827, guid: 31660dba95ae9a9408051002a1e4c382, type: 3} + propertyPath: m_SizeDelta.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5305278010342315827, guid: 31660dba95ae9a9408051002a1e4c382, type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5305278010342315827, guid: 31660dba95ae9a9408051002a1e4c382, type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5305278010342315827, guid: 31660dba95ae9a9408051002a1e4c382, type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5305278010342315827, guid: 31660dba95ae9a9408051002a1e4c382, type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 5305278010342315827, guid: 31660dba95ae9a9408051002a1e4c382, type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5305278010342315827, guid: 31660dba95ae9a9408051002a1e4c382, type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5305278010342315827, guid: 31660dba95ae9a9408051002a1e4c382, type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5305278010342315827, guid: 31660dba95ae9a9408051002a1e4c382, type: 3} + propertyPath: m_AnchoredPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5305278010342315827, guid: 31660dba95ae9a9408051002a1e4c382, type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5305278010342315827, guid: 31660dba95ae9a9408051002a1e4c382, type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5305278010342315827, guid: 31660dba95ae9a9408051002a1e4c382, type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5305278010342315827, guid: 31660dba95ae9a9408051002a1e4c382, type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 5305278010342315831, guid: 31660dba95ae9a9408051002a1e4c382, type: 3} + propertyPath: m_Name + value: Menu + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 31660dba95ae9a9408051002a1e4c382, type: 3} +--- !u!1 &667181310 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 667181311} + m_Layer: 0 + m_Name: ----- Audio ------ + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &667181311 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 667181310} + 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: + - {fileID: 523739712} + - {fileID: 820074938} + m_Father: {fileID: 0} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &820074937 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 820074938} + - component: {fileID: 820074939} + m_Layer: 0 + m_Name: Microphone + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 4294967295 + m_IsActive: 1 +--- !u!4 &820074938 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 820074937} + 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: 667181311} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &820074939 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 820074937} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 120ca4c4f9442e14db8c72acac5da136, type: 3} + m_Name: + m_EditorClassIdentifier: + CaptureType: 1 + SpectrumSize: 128 + ScalingStrategy: 2 + MinFrequency: 80 + MaxFrequency: 20000 + Filters: [] +--- !u!1 &903644251 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 903644255} + - component: {fileID: 903644254} + - component: {fileID: 903644253} + - component: {fileID: 903644252} + m_Layer: 0 + m_Name: Camera + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &903644252 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 903644251} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 23c1ce4fb46143f46bc5cb5224c934f6, type: 3} + m_Name: + m_EditorClassIdentifier: + clearColorMode: 1 + backgroundColorHDR: {r: 0, g: 0, b: 0, a: 0} + clearDepth: 1 + volumeLayerMask: + serializedVersion: 2 + m_Bits: 1 + volumeAnchorOverride: {fileID: 0} + antialiasing: 1 + SMAAQuality: 2 + dithering: 0 + stopNaNs: 0 + taaSharpenStrength: 0.5 + TAAQuality: 1 + taaHistorySharpening: 0.35 + taaAntiFlicker: 0.5 + taaMotionVectorRejection: 0 + taaAntiHistoryRinging: 0 + taaBaseBlendFactor: 0.875 + physicalParameters: + m_Iso: 200 + m_ShutterSpeed: 0.005 + m_Aperture: 16 + m_FocusDistance: 10 + m_BladeCount: 5 + m_Curvature: {x: 2, y: 11} + m_BarrelClipping: 0.25 + m_Anamorphism: 0 + flipYMode: 0 + xrRendering: 1 + fullscreenPassthrough: 0 + allowDynamicResolution: 0 + customRenderingSettings: 0 + invertFaceCulling: 0 + probeLayerMask: + serializedVersion: 2 + m_Bits: 4294967295 + hasPersistentHistory: 0 + allowDeepLearningSuperSampling: 1 + deepLearningSuperSamplingUseCustomQualitySettings: 0 + deepLearningSuperSamplingQuality: 0 + deepLearningSuperSamplingUseCustomAttributes: 0 + deepLearningSuperSamplingUseOptimalSettings: 1 + deepLearningSuperSamplingSharpening: 0 + exposureTarget: {fileID: 0} + materialMipBias: 0 + m_RenderingPathCustomFrameSettings: + bitDatas: + data1: 72198260625768269 + data2: 13763000477350330392 + lodBias: 1 + lodBiasMode: 0 + lodBiasQualityLevel: 0 + maximumLODLevel: 0 + maximumLODLevelMode: 0 + maximumLODLevelQualityLevel: 0 + sssQualityMode: 0 + sssQualityLevel: 0 + sssCustomSampleBudget: 20 + msaaMode: 1 + materialQuality: 0 + renderingPathCustomFrameSettingsOverrideMask: + mask: + data1: 0 + data2: 0 + defaultFrameSettings: 0 + m_Version: 8 + m_ObsoleteRenderingPath: 0 + m_ObsoleteFrameSettings: + overrides: 0 + enableShadow: 0 + enableContactShadows: 0 + enableShadowMask: 0 + enableSSR: 0 + enableSSAO: 0 + enableSubsurfaceScattering: 0 + enableTransmission: 0 + enableAtmosphericScattering: 0 + enableVolumetrics: 0 + enableReprojectionForVolumetrics: 0 + enableLightLayers: 0 + enableExposureControl: 1 + diffuseGlobalDimmer: 0 + specularGlobalDimmer: 0 + shaderLitMode: 0 + enableDepthPrepassWithDeferredRendering: 0 + enableTransparentPrepass: 0 + enableMotionVectors: 0 + enableObjectMotionVectors: 0 + enableDecals: 0 + enableRoughRefraction: 0 + enableTransparentPostpass: 0 + enableDistortion: 0 + enablePostprocess: 0 + enableOpaqueObjects: 0 + enableTransparentObjects: 0 + enableRealtimePlanarReflection: 0 + enableMSAA: 0 + enableAsyncCompute: 0 + runLightListAsync: 0 + runSSRAsync: 0 + runSSAOAsync: 0 + runContactShadowsAsync: 0 + runVolumeVoxelizationAsync: 0 + lightLoopSettings: + overrides: 0 + enableDeferredTileAndCluster: 0 + enableComputeLightEvaluation: 0 + enableComputeLightVariants: 0 + enableComputeMaterialVariants: 0 + enableFptlForForwardOpaque: 0 + enableBigTilePrepass: 0 + isFptlEnabled: 0 +--- !u!81 &903644253 +AudioListener: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 903644251} + m_Enabled: 1 +--- !u!20 &903644254 +Camera: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 903644251} + m_Enabled: 1 + serializedVersion: 2 + m_ClearFlags: 1 + m_BackGroundColor: {r: 0.19215687, g: 0.3019608, b: 0.4745098, a: 0} + m_projectionMatrixMode: 1 + m_GateFitMode: 2 + m_FOVAxisMode: 0 + m_SensorSize: {x: 36, y: 24} + m_LensShift: {x: 0, y: 0} + m_FocalLength: 50 + m_NormalizedViewPortRect: + serializedVersion: 2 + x: 0 + y: 0 + width: 1 + height: 1 + near clip plane: 0.3 + far clip plane: 1000 + field of view: 60 + orthographic: 1 + orthographic size: 10 + m_Depth: 0 + m_CullingMask: + serializedVersion: 2 + m_Bits: 4294967295 + m_RenderingPath: -1 + m_TargetTexture: {fileID: 0} + m_TargetDisplay: 0 + m_TargetEye: 3 + m_HDR: 0 + m_AllowMSAA: 0 + m_AllowDynamicResolution: 0 + m_ForceIntoRT: 0 + m_OcclusionCulling: 1 + m_StereoConvergence: 10 + m_StereoSeparation: 0.022 +--- !u!4 &903644255 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 903644251} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: -10} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 4 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1919966691 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1919966693} + - component: {fileID: 1919966692} + m_Layer: 0 + m_Name: Global Volume + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 0 +--- !u!114 &1919966692 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1919966691} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 172515602e62fb746b5d573b38a5fe58, type: 3} + m_Name: + m_EditorClassIdentifier: + m_IsGlobal: 1 + priority: 0 + blendDistance: 0 + weight: 1 + sharedProfile: {fileID: 11400000, guid: c4f2a74607ecb1242bcb520877df1bee, type: 2} +--- !u!4 &1919966693 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1919966691} + 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: 0} + m_RootOrder: 5 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &2035115414 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2035115416} + - component: {fileID: 2035115415} + - component: {fileID: 2035115417} + - component: {fileID: 2035115418} + m_Layer: 0 + m_Name: ShaderPass + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &2035115415 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2035115414} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 26d6499a6bd256e47b859377446493a1, type: 3} + m_Name: + m_EditorClassIdentifier: + m_IsGlobal: 1 + fadeRadius: 0 + priority: 0 + customPasses: + - rid: 2533213763830546433 + injectionPoint: 1 + m_TargetCamera: {fileID: 0} + useTargetCamera: 0 + references: + version: 2 + RefIds: + - rid: 2533213763830546433 + type: {class: FullScreenCustomPass, ns: UnityEngine.Rendering.HighDefinition, asm: Unity.RenderPipelines.HighDefinition.Runtime} + data: + m_Name: ShaderToyTest + enabled: 1 + targetColorBuffer: 0 + targetDepthBuffer: 0 + clearFlags: 0 + passFoldout: 0 + m_Version: 0 + fullscreenPassMaterial: {fileID: 2100000, guid: 9fcc8d607974bb04caf93063084ba52f, type: 2} + materialPassIndex: 0 + materialPassName: Custom Pass 0 + fetchColorBuffer: 0 +--- !u!4 &2035115416 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2035115414} + 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: 0} + m_RootOrder: 6 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &2035115417 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2035115414} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 957c1af5e7f10154487ed1389b1086e2, type: 3} + m_Name: + m_EditorClassIdentifier: + source: {fileID: 523739711} + material: {fileID: 2100000, guid: 9fcc8d607974bb04caf93063084ba52f, type: 2} + Transformers: [] + Preview: + Values: [] + references: + version: 2 + RefIds: [] +--- !u!114 &2035115418 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2035115414} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: ae68405d5c7c9594ebcd0922c0389f8f, type: 3} + m_Name: + m_EditorClassIdentifier: + material: {fileID: 2100000, guid: 9fcc8d607974bb04caf93063084ba52f, type: 2} + preferences: {fileID: 422322493} diff --git a/Assets/Scenes/_Shader.unity.meta b/Assets/Scenes/_Shader.unity.meta new file mode 100644 index 0000000..f4941ba --- /dev/null +++ b/Assets/Scenes/_Shader.unity.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: f72d2b36e2e935f44b15d0622ec4f3c5 +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scenes/_Shader/Bubbles.mat b/Assets/Scenes/_Shader/Bubbles.mat new file mode 100644 index 0000000..99f0fa5 --- /dev/null +++ b/Assets/Scenes/_Shader/Bubbles.mat @@ -0,0 +1,263 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!21 &2100000 +Material: + serializedVersion: 6 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: Bubbles + m_Shader: {fileID: 4800000, guid: e0849fcaa86caca4dbb74fbcd71dc592, type: 3} + m_ShaderKeywords: _DISABLE_SSR_TRANSPARENT _NORMALMAP_TANGENT_SPACE + m_LightmapFlags: 4 + m_EnableInstancingVariants: 0 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: -1 + stringTagMap: {} + disabledShaderPasses: + - TransparentDepthPrepass + - TransparentDepthPostpass + - TransparentBackface + - RayTracingPrepass + - MOTIONVECTORS + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - _AnisotropyMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BaseColorMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BentNormalMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BentNormalMapOS: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _CoatMaskMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DetailMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _EmissiveColorMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _HeightMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _IridescenceMaskMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _IridescenceThicknessMap: + 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} + - _MaskMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _NormalMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _NormalMapOS: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _SpecularColorMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _SubsurfaceMaskMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _TangentMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _TangentMapOS: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _ThicknessMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _TransmittanceColorMap: + 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: + - _AORemapMax: 1 + - _AORemapMin: 0 + - _ATDistance: 1 + - _AddPrecomputedVelocity: 0 + - _AlbedoAffectEmissive: 0 + - _AlphaCutoff: 0.5 + - _AlphaCutoffEnable: 0 + - _AlphaCutoffPostpass: 0.5 + - _AlphaCutoffPrepass: 0.5 + - _AlphaCutoffShadow: 0.5 + - _AlphaDstBlend: 0 + - _AlphaSrcBlend: 1 + - _AlphaToMask: 0 + - _AlphaToMaskInspectorValue: 0 + - _Anisotropy: 0 + - _BlendMode: 0 + - _CoatMask: 0 + - _CullMode: 2 + - _CullModeForward: 2 + - _Cutoff: 0.5 + - _DepthOffsetEnable: 0 + - _DetailAlbedoScale: 1 + - _DetailNormalScale: 1 + - _DetailSmoothnessScale: 1 + - _DiffusionProfile: 0 + - _DiffusionProfileHash: 0 + - _DisplacementLockObjectScale: 1 + - _DisplacementLockTilingScale: 1 + - _DisplacementMode: 0 + - _DoubleSidedEnable: 0 + - _DoubleSidedGIMode: 0 + - _DoubleSidedNormalMode: 1 + - _DstBlend: 0 + - _EmissiveColorMode: 1 + - _EmissiveExposureWeight: 1 + - _EmissiveIntensity: 1 + - _EmissiveIntensityUnit: 0 + - _EnableBlendModePreserveSpecularLighting: 1 + - _EnableFogOnTransparent: 1 + - _EnableGeometricSpecularAA: 0 + - _EnergyConservingSpecularColor: 1 + - _HeightAmplitude: 0.02 + - _HeightCenter: 0.5 + - _HeightMapParametrization: 0 + - _HeightMax: 1 + - _HeightMin: -1 + - _HeightOffset: 0 + - _HeightPoMAmplitude: 2 + - _HeightTessAmplitude: 2 + - _HeightTessCenter: 0.5 + - _InvTilingScale: 1 + - _Ior: 1.5 + - _IridescenceMask: 1 + - _IridescenceThickness: 1 + - _LinkDetailsWithBase: 1 + - _MaterialID: 1 + - _Metallic: 0 + - _MetallicRemapMax: 1 + - _MetallicRemapMin: 0 + - _NormalMapSpace: 0 + - _NormalScale: 1 + - _OpaqueCullMode: 2 + - _PPDLodThreshold: 5 + - _PPDMaxSamples: 15 + - _PPDMinSamples: 5 + - _PPDPrimitiveLength: 1 + - _PPDPrimitiveWidth: 1 + - _RayTracing: 0 + - _ReceivesSSR: 1 + - _ReceivesSSRTransparent: 0 + - _RefractionModel: 0 + - _Smoothness: 0.5 + - _SmoothnessRemapMax: 1 + - _SmoothnessRemapMin: 0 + - _SpecularAAScreenSpaceVariance: 0.1 + - _SpecularAAThreshold: 0.2 + - _SpecularOcclusionMode: 1 + - _SrcBlend: 1 + - _StencilRef: 0 + - _StencilRefDepth: 8 + - _StencilRefGBuffer: 10 + - _StencilRefMV: 40 + - _StencilWriteMask: 6 + - _StencilWriteMaskDepth: 8 + - _StencilWriteMaskGBuffer: 14 + - _StencilWriteMaskMV: 40 + - _SubsurfaceMask: 1 + - _SupportDecals: 1 + - _SurfaceType: 0 + - _TexWorldScale: 1 + - _TexWorldScaleEmissive: 1 + - _Thickness: 1 + - _TransmissionEnable: 1 + - _TransparentBackfaceEnable: 0 + - _TransparentCullMode: 2 + - _TransparentDepthPostpassEnable: 0 + - _TransparentDepthPrepassEnable: 0 + - _TransparentSortPriority: 0 + - _TransparentWritingMotionVec: 0 + - _TransparentZWrite: 0 + - _UVBase: 0 + - _UVDetail: 0 + - _UVEmissive: 0 + - _UseEmissiveIntensity: 0 + - _UseShadowThreshold: 0 + - _ZTestDepthEqualForOpaque: 3 + - _ZTestGBuffer: 4 + - _ZTestTransparent: 4 + - _ZWrite: 1 + m_Colors: + - _BaseColor: {r: 1, g: 1, b: 1, a: 1} + - _BaseColorMap_MipInfo: {r: 0, g: 0, b: 0, a: 0} + - _Color: {r: 1, g: 1, b: 1, a: 1} + - _DiffusionProfileAsset: {r: 0, g: 0, b: 0, a: 0} + - _DoubleSidedConstants: {r: 1, g: 1, b: -1, a: 0} + - _EmissionColor: {r: 1, g: 1, b: 1, a: 1} + - _EmissiveColor: {r: 0, g: 0, b: 0, a: 1} + - _EmissiveColorLDR: {r: 0, g: 0, b: 0, a: 1} + - _InvPrimScale: {r: 1, g: 1, b: 0, a: 0} + - _IridescenceThicknessRemap: {r: 0, g: 1, b: 0, a: 0} + - _SpecularColor: {r: 1, g: 1, b: 1, a: 1} + - _ThicknessRemap: {r: 0, g: 1, b: 0, a: 0} + - _TransmittanceColor: {r: 1, g: 1, b: 1, a: 1} + - _UVDetailsMappingMask: {r: 1, g: 0, b: 0, a: 0} + - _UVMappingMask: {r: 1, g: 0, b: 0, a: 0} + - _UVMappingMaskEmissive: {r: 1, g: 0, b: 0, a: 0} + m_BuildTextureStacks: [] +--- !u!114 &8642687853890746339 +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: da692e001514ec24dbc4cca1949ff7e8, type: 3} + m_Name: + m_EditorClassIdentifier: + version: 12 + hdPluginSubTargetMaterialVersions: + m_Keys: [] + m_Values: diff --git a/Assets/Scenes/_Shader/Bubbles.mat.meta b/Assets/Scenes/_Shader/Bubbles.mat.meta new file mode 100644 index 0000000..eb89b9e --- /dev/null +++ b/Assets/Scenes/_Shader/Bubbles.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 299029e20bc4e4d4ea794ac529b479fa +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 2100000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scenes/_Shader/BubblesFS.shader b/Assets/Scenes/_Shader/BubblesFS.shader new file mode 100644 index 0000000..7b2e408 --- /dev/null +++ b/Assets/Scenes/_Shader/BubblesFS.shader @@ -0,0 +1,102 @@ +Shader "Kaiju/Bubbles" +{ + HLSLINCLUDE + + #pragma vertex Vert + + #pragma target 4.5 + #pragma only_renderers d3d11 playstation xboxone xboxseries vulkan metal switch + + #include "Packages/com.unity.render-pipelines.high-definition/Runtime/RenderPipeline/RenderPass/CustomPass/CustomPassCommon.hlsl" + + // The PositionInputs struct allow you to retrieve a lot of useful information for your fullScreenShader: + // struct PositionInputs + // { + // float3 positionWS; // World space position (could be camera-relative) + // float2 positionNDC; // Normalized screen coordinates within the viewport : [0, 1) (with the half-pixel offset) + // uint2 positionSS; // Screen space pixel coordinates : [0, NumPixels) + // uint2 tileCoord; // Screen tile coordinates : [0, NumTiles) + // float deviceDepth; // Depth from the depth buffer : [0, 1] (typically reversed) + // float linearDepth; // View space Z coordinate : [Near, Far] + // }; + + // To sample custom buffers, you have access to these functions: + // But be careful, on most platforms you can't sample to the bound color buffer. It means that you + // can't use the SampleCustomColor when the pass color buffer is set to custom (and same for camera the buffer). + // float4 SampleCustomColor(float2 uv); + // float4 LoadCustomColor(uint2 pixelCoords); + // float LoadCustomDepth(uint2 pixelCoords); + // float SampleCustomDepth(float2 uv); + + // There are also a lot of utility function you can use inside Common.hlsl and Color.hlsl, + // you can check them out in the source code of the core SRP package. + + float4 FullScreenPass(Varyings varyings) : SV_Target + { + UNITY_SETUP_STEREO_EYE_INDEX_POST_VERTEX(varyings); + float depth = LoadCameraDepth(varyings.positionCS.xy); + PositionInputs posInput = GetPositionInput(varyings.positionCS.xy, _ScreenSize.zw, depth, UNITY_MATRIX_I_VP, UNITY_MATRIX_V); + float3 viewDirection = GetWorldSpaceNormalizeViewDir(posInput.positionWS); + float4 color = float4(0.0, 0.0, 0.0, 0.0); + + // Load the camera color buffer at the mip 0 if we're not at the before rendering injection point + if (_CustomPassInjectionPoint != CUSTOMPASSINJECTIONPOINT_BEFORE_RENDERING) + color = float4(CustomPassLoadCameraColor(varyings.positionCS.xy, 0), 1); + + + // get uv + float2 uv = posInput.positionNDC; + // fix aspect ratio + uv.x *= _ScreenParams.x / _ScreenParams.y; + + // Background + float4 outColour = float4(0.8+0.2*uv.y,0.8+0.2*uv.y,0.8+0.2*uv.y,1); + + // [unroll(100)] + for( int i=0; i<40; i++ ) { + // bubble seeds + float pha = sin(float(i)*546.13+1.0)*0.5 + 0.5; + float siz = pow( sin(float(i)*651.74+5.0)*0.5 + 0.5, 4.0 ); + float pox = sin(float(i)*321.55+4.1) * 1 / 1; + + // buble size, position and color + float rad = 0.1 + 0.5*siz; + float2 pos = float2( pox, -1.0-rad + (2.0+2.0*rad)*fmod(pha+0.1*_Time.y*(0.2+0.8*siz),1.0)); + float dis = length( uv - pos ); + float3 col = lerp( float3(0.94,0.3,0.0), float3(0.1,0.4,0.8), 0.5+0.5*sin(float(i)*1.2+1.9)); + col+= 8.0*smoothstep( rad*0.95, rad, dis ); + + // render + float f = length(uv-pos)/rad; + f = sqrt(clamp(1.0-f*f,0.0,1.0)); + outColour -= float4(col.zyx *(1.0-smoothstep( rad*0.95, rad, dis )) * f, 0.0); + } + + // Vignetting + outColour *= sqrt(1.5-0.5*length(uv)); + + return outColour; + + } + + ENDHLSL + + SubShader + { + Tags{ "RenderPipeline" = "HDRenderPipeline" } + Pass + { + Name "Custom Pass 0" + + ZWrite Off + ZTest Always + Blend SrcAlpha OneMinusSrcAlpha + Cull Off + + HLSLPROGRAM + #pragma fragment FullScreenPass + ENDHLSL + } + } + Fallback Off +} diff --git a/Assets/Scenes/_Shader/BubblesFS.shader.meta b/Assets/Scenes/_Shader/BubblesFS.shader.meta new file mode 100644 index 0000000..92eeb41 --- /dev/null +++ b/Assets/Scenes/_Shader/BubblesFS.shader.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: e0849fcaa86caca4dbb74fbcd71dc592 +ShaderImporter: + externalObjects: {} + defaultTextures: [] + nonModifiableTextures: [] + preprocessorOverride: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scenes/_Shader/Ether.mat b/Assets/Scenes/_Shader/Ether.mat new file mode 100644 index 0000000..aa57d20 --- /dev/null +++ b/Assets/Scenes/_Shader/Ether.mat @@ -0,0 +1,279 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!21 &2100000 +Material: + serializedVersion: 6 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: Ether + m_Shader: {fileID: 4800000, guid: b601654b5e3e3c9499262340b8fa2412, type: 3} + m_ShaderKeywords: _DISABLE_SSR_TRANSPARENT _NORMALMAP_TANGENT_SPACE + m_LightmapFlags: 4 + m_EnableInstancingVariants: 0 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: -1 + stringTagMap: {} + disabledShaderPasses: + - TransparentDepthPrepass + - TransparentDepthPostpass + - TransparentBackface + - RayTracingPrepass + - MOTIONVECTORS + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - _AnisotropyMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BaseColorMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BentNormalMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BentNormalMapOS: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _CoatMaskMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DetailMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _EmissiveColorMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _HeightMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _IridescenceMaskMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _IridescenceThicknessMap: + 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} + - _MaskMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _NormalMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _NormalMapOS: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _SpectrumTexture: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _SpecularColorMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _SubsurfaceMaskMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _TangentMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _TangentMapOS: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _ThemeTexture: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _ThicknessMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _TransmittanceColorMap: + 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: + - _AORemapMax: 1 + - _AORemapMin: 0 + - _ATDistance: 1 + - _AddPrecomputedVelocity: 0 + - _AlbedoAffectEmissive: 0 + - _AlphaCutoff: 0.5 + - _AlphaCutoffEnable: 0 + - _AlphaCutoffPostpass: 0.5 + - _AlphaCutoffPrepass: 0.5 + - _AlphaCutoffShadow: 0.5 + - _AlphaDstBlend: 0 + - _AlphaSrcBlend: 1 + - _AlphaToMask: 0 + - _AlphaToMaskInspectorValue: 0 + - _Anisotropy: 0 + - _BlendMode: 0 + - _CoatMask: 0 + - _CullMode: 2 + - _CullModeForward: 2 + - _Cutoff: 0.5 + - _DepthOffsetEnable: 0 + - _DetailAlbedoScale: 1 + - _DetailNormalScale: 1 + - _DetailSmoothnessScale: 1 + - _DiffusionProfile: 0 + - _DiffusionProfileHash: 0 + - _DisplacementLockObjectScale: 1 + - _DisplacementLockTilingScale: 1 + - _DisplacementMode: 0 + - _DoubleSidedEnable: 0 + - _DoubleSidedGIMode: 0 + - _DoubleSidedNormalMode: 1 + - _DstBlend: 0 + - _EmissiveColorMode: 1 + - _EmissiveExposureWeight: 1 + - _EmissiveIntensity: 1 + - _EmissiveIntensityUnit: 0 + - _EnableBlendModePreserveSpecularLighting: 1 + - _EnableFogOnTransparent: 1 + - _EnableGeometricSpecularAA: 0 + - _EnergyConservingSpecularColor: 1 + - _HeightAmplitude: 0.02 + - _HeightCenter: 0.5 + - _HeightMapParametrization: 0 + - _HeightMax: 1 + - _HeightMin: -1 + - _HeightOffset: 0 + - _HeightPoMAmplitude: 2 + - _HeightTessAmplitude: 2 + - _HeightTessCenter: 0.5 + - _InvTilingScale: 1 + - _Ior: 1.5 + - _IridescenceMask: 1 + - _IridescenceThickness: 1 + - _LinkDetailsWithBase: 1 + - _Magic: 65.6 + - _MaterialID: 1 + - _Metallic: 0 + - _MetallicRemapMax: 1 + - _MetallicRemapMin: 0 + - _NormalMapSpace: 0 + - _NormalScale: 1 + - _OpaqueCullMode: 2 + - _PPDLodThreshold: 5 + - _PPDMaxSamples: 15 + - _PPDMinSamples: 5 + - _PPDPrimitiveLength: 1 + - _PPDPrimitiveWidth: 1 + - _RayTracing: 0 + - _ReceivesSSR: 1 + - _ReceivesSSRTransparent: 0 + - _RefractionModel: 0 + - _Smoothness: 0.5 + - _SmoothnessRemapMax: 1 + - _SmoothnessRemapMin: 0 + - _SpectrumSize: 4 + - _SpecularAAScreenSpaceVariance: 0.1 + - _SpecularAAThreshold: 0.2 + - _SpecularOcclusionMode: 1 + - _SrcBlend: 1 + - _StencilRef: 0 + - _StencilRefDepth: 8 + - _StencilRefGBuffer: 10 + - _StencilRefMV: 40 + - _StencilWriteMask: 6 + - _StencilWriteMaskDepth: 8 + - _StencilWriteMaskGBuffer: 14 + - _StencilWriteMaskMV: 40 + - _SubsurfaceMask: 1 + - _SupportDecals: 1 + - _SurfaceType: 0 + - _TexWorldScale: 1 + - _TexWorldScaleEmissive: 1 + - _ThemeStrength: 4.67 + - _Thickness: 1 + - _TransmissionEnable: 1 + - _TransparentBackfaceEnable: 0 + - _TransparentCullMode: 2 + - _TransparentDepthPostpassEnable: 0 + - _TransparentDepthPrepassEnable: 0 + - _TransparentSortPriority: 0 + - _TransparentWritingMotionVec: 0 + - _TransparentZWrite: 0 + - _UVBase: 0 + - _UVDetail: 0 + - _UVEmissive: 0 + - _UseEmissiveIntensity: 0 + - _UseShadowThreshold: 0 + - _Wildness: 4 + - _Wow: 4 + - _ZTestDepthEqualForOpaque: 3 + - _ZTestGBuffer: 4 + - _ZTestTransparent: 4 + - _ZWrite: 1 + - _Zing: 0 + - _Zip: 0.5 + - _Zoom: -0.5 + m_Colors: + - _BaseColor: {r: 1, g: 1, b: 1, a: 1} + - _BaseColorMap_MipInfo: {r: 0, g: 0, b: 0, a: 0} + - _Color: {r: 1, g: 1, b: 1, a: 1} + - _DiffusionProfileAsset: {r: 0, g: 0, b: 0, a: 0} + - _DoubleSidedConstants: {r: 1, g: 1, b: -1, a: 0} + - _EmissionColor: {r: 1, g: 1, b: 1, a: 1} + - _EmissiveColor: {r: 0, g: 0, b: 0, a: 1} + - _EmissiveColorLDR: {r: 0, g: 0, b: 0, a: 1} + - _InvPrimScale: {r: 1, g: 1, b: 0, a: 0} + - _IridescenceThicknessRemap: {r: 0, g: 1, b: 0, a: 0} + - _SpecularColor: {r: 1, g: 1, b: 1, a: 1} + - _ThicknessRemap: {r: 0, g: 1, b: 0, a: 0} + - _TransmittanceColor: {r: 1, g: 1, b: 1, a: 1} + - _UVDetailsMappingMask: {r: 1, g: 0, b: 0, a: 0} + - _UVMappingMask: {r: 1, g: 0, b: 0, a: 0} + - _UVMappingMaskEmissive: {r: 1, g: 0, b: 0, a: 0} + m_BuildTextureStacks: [] +--- !u!114 &6020743418383276577 +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: da692e001514ec24dbc4cca1949ff7e8, type: 3} + m_Name: + m_EditorClassIdentifier: + version: 12 + hdPluginSubTargetMaterialVersions: + m_Keys: [] + m_Values: diff --git a/Assets/Scenes/_Shader/Ether.mat.meta b/Assets/Scenes/_Shader/Ether.mat.meta new file mode 100644 index 0000000..0594e44 --- /dev/null +++ b/Assets/Scenes/_Shader/Ether.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 9fcc8d607974bb04caf93063084ba52f +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 2100000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scenes/_Shader/Ether.shader b/Assets/Scenes/_Shader/Ether.shader new file mode 100644 index 0000000..176915e --- /dev/null +++ b/Assets/Scenes/_Shader/Ether.shader @@ -0,0 +1,105 @@ +Shader "FullScreen/Ether" +{ + Properties + { + _SpectrumTexture("SpectrumTexture", 2D) = "white" {} + _ThemeTexture("ThemeTexture", 2D) = "white" {} + _SpectrumSize("SpectrumSize", float) = 16 + + _Zoom("Zoom", range(-2, 2)) = 0.5 + _Wildness("Wildness", range(1, 10)) = 4.0 + _ThemeStrength("ThemeStrength", range(1, 10)) = 4.0 + } + + HLSLINCLUDE + + // HDRP stuff + #pragma vertex Vert + #pragma target 4.5 + #pragma only_renderers d3d11 playstation xboxone xboxseries vulkan metal switch + #include "Packages/com.unity.render-pipelines.high-definition/Runtime/RenderPipeline/RenderPass/CustomPass/CustomPassCommon.hlsl" + + // here we go... + sampler2D _SpectrumTexture; + sampler2D _ThemeTexture; + float _Zoom; + float _Wildness; + float _ThemeStrength; + + // matrix fn + float2x2 m(float a) { + float c=cos(a), s=sin(a); + float2x2 mat = { c, -s, s, c }; + return mat; + } + + float map(float3 p, float4 spectrum) { + float t = _Time.y * 0.2; + p.xz = mul(m(t), p.xz); + p.xy = mul(m(t), p.xy); + float3 q = p*_Wildness; + return length(p + + float3(sin(t), sin(t), sin(t))) + *log(length(p)+_Zoom) + sin(q.x+sin(q.z+sin(q.y))) * spectrum.x; + } + + float4 FullScreenPass(Varyings varyings) : SV_Target { + float depth = LoadCameraDepth(varyings.positionCS.xy); + PositionInputs posInput = GetPositionInput(varyings.positionCS.xy, _ScreenSize.zw, depth, UNITY_MATRIX_I_VP, UNITY_MATRIX_V); + + // musique + float sub = tex2D(_SpectrumTexture, 0.0); + float bass = tex2D(_SpectrumTexture, 0.25); + float mids = tex2D(_SpectrumTexture, 0.50); + float highs = tex2D(_SpectrumTexture, 0.75); + float4 spectrum = float4(sub, bass, mids, highs); + + // screen + float2 p = posInput.positionNDC - .5; + p.x *= _ScreenParams.x / _ScreenParams.y; + + float t = _Time.y; + + // float3 colour = float3(0.0, 0.0, 0.0); + float3 colour = float3(0.0, 0.0, 0.0); + float damage = smoothstep(1.5, 3.5, highs); + float iterations = 10.0; + // float iterations = lerp(10.0, 50.0, highs); + float str = 4.5; // lerp(4.9, 5.0, highs); + float size = 1.0; //lerp(0.5, 2.0, mids); + + float3 theme = tex2D(_ThemeTexture, length(p)) * _ThemeStrength; + + for(int i=0; i<=iterations; i++) { + float3 n = float3(0.,0.,str) + normalize(float3(p, -size))*damage; + float rz = map(n, spectrum); + float f = clamp((rz - map(n+.1, spectrum)), 0., 1.); + float3 l = float3(0.01, 0.01, 0.01) * f + theme * f; + colour = colour*l + smoothstep(2.5, .0, rz)*.7*l; + damage += min(rz, 1.); + } + + return float4(colour, 1.); + } + + ENDHLSL + + SubShader + { + Tags{ "RenderPipeline" = "HDRenderPipeline" } + Pass + { + Name "Custom Pass 0" + + ZWrite Off + ZTest Always + // Blend SrcAlpha OneMinusSrcAlpha + Cull Off + + HLSLPROGRAM + #pragma fragment FullScreenPass + ENDHLSL + } + } + Fallback Off +} diff --git a/Assets/Scenes/_Shader/Ether.shader.meta b/Assets/Scenes/_Shader/Ether.shader.meta new file mode 100644 index 0000000..2f0a77d --- /dev/null +++ b/Assets/Scenes/_Shader/Ether.shader.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: b601654b5e3e3c9499262340b8fa2412 +ShaderImporter: + externalObjects: {} + defaultTextures: [] + nonModifiableTextures: [] + preprocessorOverride: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scenes/_Shader/EtherOrigish.shader b/Assets/Scenes/_Shader/EtherOrigish.shader new file mode 100644 index 0000000..8373cdd --- /dev/null +++ b/Assets/Scenes/_Shader/EtherOrigish.shader @@ -0,0 +1,101 @@ +Shader "FullScreen/Ether" +{ + Properties + { + _SpectrumTexture("SpectrumTexture", 2D) = "white" {} + _ThemeTexture("ThemeTexture", 2D) = "white" {} + _SpectrumSize("SpectrumSize", float) = 16 + } + + HLSLINCLUDE + + // HDRP stuff + #pragma vertex Vert + #pragma target 4.5 + #pragma only_renderers d3d11 playstation xboxone xboxseries vulkan metal switch + #include "Packages/com.unity.render-pipelines.high-definition/Runtime/RenderPipeline/RenderPass/CustomPass/CustomPassCommon.hlsl" + + // here we go... + sampler2D _SpectrumTexture; + sampler2D _ThemeTexture; + + // matrix fn + float2x2 m(float a) { + float c=cos(a), s=sin(a); + float2x2 mat = { c, -s, s, c }; + return mat; + } + + float map(float3 p, float4 spectrum) { + float t = _Time.y * 0.5; + float magic = spectrum.y * 0.05; + float zing = spectrum.x * 0.05; + float zip = spectrum.z * 0.05; + float wow = 4.5; //lerp(4.0, 5.0, spectrum.w); + + p.xz = mul(m(zing + t), p.xz); + p.xy = mul(m(magic + t), p.xy); + float3 q = p*wow + t; + return length(p + + // float3(sin(t - magic), sin(t + magic), sin(t - magic))) + float3(magic, zing, zip)) + *log(length(p)+zip) + sin(q.x+sin(q.z+sin(q.y)))*0.5; + } + + float4 FullScreenPass(Varyings varyings) : SV_Target { + float depth = LoadCameraDepth(varyings.positionCS.xy); + PositionInputs posInput = GetPositionInput(varyings.positionCS.xy, _ScreenSize.zw, depth, UNITY_MATRIX_I_VP, UNITY_MATRIX_V); + + // musique + float sub = tex2D(_SpectrumTexture, 0.0); + float bass = tex2D(_SpectrumTexture, 0.25); + float mids = tex2D(_SpectrumTexture, 0.50); + float highs = tex2D(_SpectrumTexture, 0.75); + float4 spectrum = float4(sub, bass, mids, highs); + + // screen + float2 p = posInput.positionNDC - .5; + p.x *= _ScreenParams.x / _ScreenParams.y; + + float t = _Time.y; + + float3 colour = float3(0.0, 0.0, 0.0); + float d = smoothstep(1.5, 3.5, sub); + float iterations = 10.0; + // float iterations = lerp(10.0, 50.0, highs); + float str = 4.5; // lerp(4.9, 5.0, highs); + float size = 1.0; //lerp(0.5, 2.0, mids); + + for(int i=0; i<=iterations; i++) { + float3 n = float3(0.,0.,str) + normalize(float3(p, -size))*d; + float rz = map(n, spectrum); + float f = clamp((rz - map(n+.1, spectrum))*0.5, -.1, 1.); + float3 l = float3(0.1,0.3,.4) + float3(5., 2.5, 3.)*f; + colour = colour*l + smoothstep(2.5, .0, rz)*.7*l; + d += min(rz, 1.); + } + + return float4(colour, 1.); + } + + ENDHLSL + + SubShader + { + Tags{ "RenderPipeline" = "HDRenderPipeline" } + Pass + { + Name "Custom Pass 0" + + ZWrite Off + ZTest Always + // Blend SrcAlpha OneMinusSrcAlpha + Cull Off + + HLSLPROGRAM + #pragma fragment FullScreenPass + ENDHLSL + } + } + Fallback Off +} diff --git a/Assets/Scenes/_Shader/EtherOrigish.shader.meta b/Assets/Scenes/_Shader/EtherOrigish.shader.meta new file mode 100644 index 0000000..2bdeb32 --- /dev/null +++ b/Assets/Scenes/_Shader/EtherOrigish.shader.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: 772e6cafbf6db8547ae982f34ac618f4 +ShaderImporter: + externalObjects: {} + defaultTextures: [] + nonModifiableTextures: [] + preprocessorOverride: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scenes/_Shader/Pulsar.mat b/Assets/Scenes/_Shader/Pulsar.mat new file mode 100644 index 0000000..2f4c824 --- /dev/null +++ b/Assets/Scenes/_Shader/Pulsar.mat @@ -0,0 +1,272 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!21 &2100000 +Material: + serializedVersion: 6 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: Pulsar + m_Shader: {fileID: 4800000, guid: c68eae65ade06614693a412d081f2594, type: 3} + m_ShaderKeywords: _DISABLE_SSR_TRANSPARENT _NORMALMAP_TANGENT_SPACE + m_LightmapFlags: 4 + m_EnableInstancingVariants: 0 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: -1 + stringTagMap: {} + disabledShaderPasses: + - TransparentDepthPrepass + - TransparentDepthPostpass + - TransparentBackface + - RayTracingPrepass + - MOTIONVECTORS + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - _AnisotropyMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BaseColorMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BentNormalMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BentNormalMapOS: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _CoatMaskMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DetailMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _EmissiveColorMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _HeightMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _IridescenceMaskMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _IridescenceThicknessMap: + 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} + - _MaskMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _NormalMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _NormalMapOS: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _SpectrumTexture: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _SpecularColorMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _SubsurfaceMaskMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _TangentMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _TangentMapOS: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _ThemeTexture: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _ThicknessMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _TransmittanceColorMap: + 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: + - _AORemapMax: 1 + - _AORemapMin: 0 + - _ATDistance: 1 + - _AddPrecomputedVelocity: 0 + - _AlbedoAffectEmissive: 0 + - _AlphaCutoff: 0.5 + - _AlphaCutoffEnable: 0 + - _AlphaCutoffPostpass: 0.5 + - _AlphaCutoffPrepass: 0.5 + - _AlphaCutoffShadow: 0.5 + - _AlphaDstBlend: 0 + - _AlphaSrcBlend: 1 + - _AlphaToMask: 0 + - _AlphaToMaskInspectorValue: 0 + - _Anisotropy: 0 + - _BlendMode: 0 + - _CoatMask: 0 + - _CullMode: 2 + - _CullModeForward: 2 + - _Cutoff: 0.5 + - _DepthOffsetEnable: 0 + - _DetailAlbedoScale: 1 + - _DetailNormalScale: 1 + - _DetailSmoothnessScale: 1 + - _DiffusionProfile: 0 + - _DiffusionProfileHash: 0 + - _DisplacementLockObjectScale: 1 + - _DisplacementLockTilingScale: 1 + - _DisplacementMode: 0 + - _DoubleSidedEnable: 0 + - _DoubleSidedGIMode: 0 + - _DoubleSidedNormalMode: 1 + - _DstBlend: 0 + - _EmissiveColorMode: 1 + - _EmissiveExposureWeight: 1 + - _EmissiveIntensity: 1 + - _EmissiveIntensityUnit: 0 + - _EnableBlendModePreserveSpecularLighting: 1 + - _EnableFogOnTransparent: 1 + - _EnableGeometricSpecularAA: 0 + - _EnergyConservingSpecularColor: 1 + - _HeightAmplitude: 0.02 + - _HeightCenter: 0.5 + - _HeightMapParametrization: 0 + - _HeightMax: 1 + - _HeightMin: -1 + - _HeightOffset: 0 + - _HeightPoMAmplitude: 2 + - _HeightTessAmplitude: 2 + - _HeightTessCenter: 0.5 + - _InvTilingScale: 1 + - _Ior: 1.5 + - _IridescenceMask: 1 + - _IridescenceThickness: 1 + - _LinkDetailsWithBase: 1 + - _MaterialID: 1 + - _Metallic: 0 + - _MetallicRemapMax: 1 + - _MetallicRemapMin: 0 + - _NormalMapSpace: 0 + - _NormalScale: 1 + - _OpaqueCullMode: 2 + - _PPDLodThreshold: 5 + - _PPDMaxSamples: 15 + - _PPDMinSamples: 5 + - _PPDPrimitiveLength: 1 + - _PPDPrimitiveWidth: 1 + - _RayTracing: 0 + - _ReceivesSSR: 1 + - _ReceivesSSRTransparent: 0 + - _RefractionModel: 0 + - _Smoothness: 0.5 + - _SmoothnessRemapMax: 1 + - _SmoothnessRemapMin: 0 + - _SpectrumSize: 4 + - _SpecularAAScreenSpaceVariance: 0.1 + - _SpecularAAThreshold: 0.2 + - _SpecularOcclusionMode: 1 + - _SrcBlend: 1 + - _StencilRef: 0 + - _StencilRefDepth: 8 + - _StencilRefGBuffer: 10 + - _StencilRefMV: 40 + - _StencilWriteMask: 6 + - _StencilWriteMaskDepth: 8 + - _StencilWriteMaskGBuffer: 14 + - _StencilWriteMaskMV: 40 + - _SubsurfaceMask: 1 + - _SupportDecals: 1 + - _SurfaceType: 0 + - _TexWorldScale: 1 + - _TexWorldScaleEmissive: 1 + - _Thickness: 1 + - _TransmissionEnable: 1 + - _TransparentBackfaceEnable: 0 + - _TransparentCullMode: 2 + - _TransparentDepthPostpassEnable: 0 + - _TransparentDepthPrepassEnable: 0 + - _TransparentSortPriority: 0 + - _TransparentWritingMotionVec: 0 + - _TransparentZWrite: 0 + - _UVBase: 0 + - _UVDetail: 0 + - _UVEmissive: 0 + - _UseEmissiveIntensity: 0 + - _UseShadowThreshold: 0 + - _ZTestDepthEqualForOpaque: 3 + - _ZTestGBuffer: 4 + - _ZTestTransparent: 4 + - _ZWrite: 1 + m_Colors: + - _BaseColor: {r: 1, g: 1, b: 1, a: 1} + - _BaseColorMap_MipInfo: {r: 0, g: 0, b: 0, a: 0} + - _Color: {r: 1, g: 1, b: 1, a: 1} + - _DiffusionProfileAsset: {r: 0, g: 0, b: 0, a: 0} + - _DoubleSidedConstants: {r: 1, g: 1, b: -1, a: 0} + - _EmissionColor: {r: 1, g: 1, b: 1, a: 1} + - _EmissiveColor: {r: 0, g: 0, b: 0, a: 1} + - _EmissiveColorLDR: {r: 0, g: 0, b: 0, a: 1} + - _InvPrimScale: {r: 1, g: 1, b: 0, a: 0} + - _IridescenceThicknessRemap: {r: 0, g: 1, b: 0, a: 0} + - _SpecularColor: {r: 1, g: 1, b: 1, a: 1} + - _ThicknessRemap: {r: 0, g: 1, b: 0, a: 0} + - _TransmittanceColor: {r: 1, g: 1, b: 1, a: 1} + - _UVDetailsMappingMask: {r: 1, g: 0, b: 0, a: 0} + - _UVMappingMask: {r: 1, g: 0, b: 0, a: 0} + - _UVMappingMaskEmissive: {r: 1, g: 0, b: 0, a: 0} + m_BuildTextureStacks: [] +--- !u!114 &7427120379286931205 +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: da692e001514ec24dbc4cca1949ff7e8, type: 3} + m_Name: + m_EditorClassIdentifier: + version: 12 + hdPluginSubTargetMaterialVersions: + m_Keys: [] + m_Values: diff --git a/Assets/Scenes/_Shader/Pulsar.mat.meta b/Assets/Scenes/_Shader/Pulsar.mat.meta new file mode 100644 index 0000000..f5ca1eb --- /dev/null +++ b/Assets/Scenes/_Shader/Pulsar.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: ce21ac6719e47134caff55bb77ca6e91 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 2100000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scenes/_Shader/PulsarFS.shader b/Assets/Scenes/_Shader/PulsarFS.shader new file mode 100644 index 0000000..83f400a --- /dev/null +++ b/Assets/Scenes/_Shader/PulsarFS.shader @@ -0,0 +1,148 @@ + +Shader "Kaiju/Bubbles" +{ + Properties + { + _SpectrumTexture("SpectrumTexture", 2D) = "white" {} + _ThemeTexture("ThemeTexture", 2D) = "white" {} + _SpectrumSize("SpectrumSize", float) = 16 + + } + + HLSLINCLUDE + + #pragma vertex Vert + + #pragma target 4.5 + #pragma only_renderers d3d11 playstation xboxone xboxseries vulkan metal switch + + #include "Packages/com.unity.render-pipelines.high-definition/Runtime/RenderPipeline/RenderPass/CustomPass/CustomPassCommon.hlsl" + + // The PositionInputs struct allow you to retrieve a lot of useful information for your fullScreenShader: + // struct PositionInputs + // { + // float3 positionWS; // World space position (could be camera-relative) + // float2 positionNDC; // Normalized screen coordinates within the viewport : [0, 1) (with the half-pixel offset) + // uint2 positionSS; // Screen space pixel coordinates : [0, NumPixels) + // uint2 tileCoord; // Screen tile coordinates : [0, NumTiles) + // float deviceDepth; // Depth from the depth buffer : [0, 1] (typically reversed) + // float linearDepth; // View space Z coordinate : [Near, Far] + // }; + + // To sample custom buffers, you have access to these functions: + // But be careful, on most platforms you can't sample to the bound color buffer. It means that you + // can't use the SampleCustomColor when the pass color buffer is set to custom (and same for camera the buffer). + // float4 SampleCustomColor(float2 uv); + // float4 LoadCustomColor(uint2 pixelCoords); + // float LoadCustomDepth(uint2 pixelCoords); + // float SampleCustomDepth(float2 uv); + + // There are also a lot of utility function you can use inside Common.hlsl and Color.hlsl, + // you can check them out in the source code of the core SRP package. + + sampler2D _SpectrumTexture; + sampler2D _ThemeTexture; + + float3 pulsar(in float3 p, in float2 uv, float4 spectrum) { + float accum = 0.2; + float prev = 0; + float tw = 1.0; + + float str = lerp(24.0, 26.0, spectrum.x); + + for (int i = 0; i < 18; ++i) { + float mag = dot(p, p); + // p = abs(p) / mag + float3(-.5, -.42 - cos(_Time.y*0.2)*0.02, -1.75 + sin(_Time.y*0.2)*0.003); + + float gangsta = -0.41; + float tripp = -1.75; + float yee = 0.004; + float yuh = 0.02; + + // float gangsta = lerp(-0.42, -0.42, spectrum.z); + // float yee = lerp(0.005, 0.006, spectrum.y); + // float yuh = lerp(0.1, 0.1, spectrum.x); + + p = abs(p) / mag + float3(-.5, gangsta - cos(_Time.y*0.2)* yuh, tripp + sin(_Time.y*0.2)* yee); + + float w = exp(-float(i) / str); + accum += w * exp(-str * pow(abs(mag - prev), 2.2)); + tw += w; + prev = mag; + } + + float t = clamp(5.0 * accum / tw - 0.9, 0.0, 1.0); + return float3(1.3*t*t*t*(1.0 - length(uv)*0.2) , 1.2*t*t, 1.0*t); + } + + const float PHI = 1.61803398874989484820459; // Φ = Golden Ratio + float gold_noise(in float2 xy, in float seed) { + return frac(tan(distance(xy*PHI, xy)*seed)*xy.x); + } + + float4 FullScreenPass(Varyings varyings) : SV_Target { + UNITY_SETUP_STEREO_EYE_INDEX_POST_VERTEX(varyings); + float depth = LoadCameraDepth(varyings.positionCS.xy); + PositionInputs posInput = GetPositionInput(varyings.positionCS.xy, _ScreenSize.zw, depth, UNITY_MATRIX_I_VP, UNITY_MATRIX_V); + float3 viewDirection = GetWorldSpaceNormalizeViewDir(posInput.positionWS); + float4 color = float4(0.0, 0.0, 0.0, 0.0); + + // Load the camera color buffer at the mip 0 if we're not at the before rendering injection point + if (_CustomPassInjectionPoint != CUSTOMPASSINJECTIONPOINT_BEFORE_RENDERING) + color = float4(CustomPassLoadCameraColor(varyings.positionCS.xy, 0), 1); + + + // get uv + float2 uv = posInput.positionNDC - 0.5; + // fix aspect ratio + // uv.x *= _ScreenParams.x / _ScreenParams.y; + + float4 output = float4(0.0, 0.0, 0.0, 0.0); + float3 p = float3(uv * (_ScreenParams.xy / _ScreenParams.x) / 0.2, 0.0); + float seed = 1239959818; + + // cool modulation + float time = _Time.y; + float sub = tex2D(_SpectrumTexture, 0.0); + float bass = tex2D(_SpectrumTexture, 0.25); + float mids = tex2D(_SpectrumTexture, 0.50); + float highs = tex2D(_SpectrumTexture, 0.75); + + float4 spectrum = float4(sub, bass, mids, highs) * 2; + float dir = ceil(sin(_Time.y)); + + // output = float4( + // pulsar(p * lerp(0.97, 0.99, spectrum.y), uv, spectrum).r, + // pulsar(p * lerp(0.97, 0.99, spectrum.y), uv, spectrum).gb, + // 1.0 + // ); + + output = float4( + pulsar(p, uv, spectrum), + 1.0 + ); + + return output; + } + + ENDHLSL + + SubShader + { + Tags{ "RenderPipeline" = "HDRenderPipeline" } + Pass + { + Name "Custom Pass 0" + + ZWrite Off + ZTest Always + Blend SrcAlpha OneMinusSrcAlpha + Cull Off + + HLSLPROGRAM + #pragma fragment FullScreenPass + ENDHLSL + } + } + Fallback Off +} diff --git a/Assets/Scenes/_Shader/PulsarFS.shader.meta b/Assets/Scenes/_Shader/PulsarFS.shader.meta new file mode 100644 index 0000000..362a87a --- /dev/null +++ b/Assets/Scenes/_Shader/PulsarFS.shader.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: c68eae65ade06614693a412d081f2594 +ShaderImporter: + externalObjects: {} + defaultTextures: [] + nonModifiableTextures: [] + preprocessorOverride: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Shaders/TIPS.cs b/Assets/Shaders/TIPS.cs new file mode 100644 index 0000000..7521979 --- /dev/null +++ b/Assets/Shaders/TIPS.cs @@ -0,0 +1,133 @@ +using UnityEngine; +using UnityEngine.Rendering.HighDefinition; +using UnityEngine.Rendering; +using UnityEngine.Experimental.Rendering; + +#if UNITY_EDITOR + +using UnityEditor.Rendering.HighDefinition; +using UnityEditor; + +[CustomPassDrawerAttribute(typeof(TIPS))] +class TIPSEditor : CustomPassDrawer +{ + private class Styles + { + public static float defaultLineSpace = EditorGUIUtility.singleLineHeight + EditorGUIUtility.standardVerticalSpacing; + + public static GUIContent mesh = new GUIContent("Mesh", "Mesh used for the scanner effect."); + public static GUIContent size = new GUIContent("Size", "Size of the effect."); + public static GUIContent rotationSpeed = new GUIContent("Speed", "Speed of rotation."); + public static GUIContent edgeThreshold = new GUIContent("Edge Threshold", "Edge detect effect threshold."); + public static GUIContent edgeRadius = new GUIContent("Edge Radius", "Radius of the edge detect effect."); + public static GUIContent glowColor = new GUIContent("Color", "Color of the effect"); + } + + SerializedProperty mesh; + SerializedProperty size; + SerializedProperty rotationSpeed; + SerializedProperty edgeDetectThreshold; + SerializedProperty edgeRadius; + SerializedProperty glowColor; + + protected override void Initialize(SerializedProperty customPass) + { + mesh = customPass.FindPropertyRelative("mesh"); + size = customPass.FindPropertyRelative("size"); + rotationSpeed = customPass.FindPropertyRelative("rotationSpeed"); + edgeDetectThreshold = customPass.FindPropertyRelative("edgeDetectThreshold"); + edgeRadius = customPass.FindPropertyRelative("edgeRadius"); + glowColor = customPass.FindPropertyRelative("glowColor"); + } + + // We only need the name to be displayed, the rest is controlled by the TIPS effect + protected override PassUIFlag commonPassUIFlags => PassUIFlag.Name; + + protected override void DoPassGUI(SerializedProperty customPass, Rect rect) + { + mesh.objectReferenceValue = EditorGUI.ObjectField(rect, Styles.mesh, mesh.objectReferenceValue, typeof(Mesh), false); + rect.y += Styles.defaultLineSpace; + + size.floatValue = EditorGUI.Slider(rect, Styles.size, size.floatValue, 0.2f, TIPS.kMaxDistance); + rect.y += Styles.defaultLineSpace; + rotationSpeed.floatValue = EditorGUI.Slider(rect, Styles.rotationSpeed, rotationSpeed.floatValue, 0f, 30f); + rect.y += Styles.defaultLineSpace; + edgeDetectThreshold.floatValue = EditorGUI.Slider(rect, Styles.edgeThreshold, edgeDetectThreshold.floatValue, 0.1f, 5f); + rect.y += Styles.defaultLineSpace; + edgeRadius.intValue = EditorGUI.IntSlider(rect, Styles.edgeRadius, edgeRadius.intValue, 1, 6); + rect.y += Styles.defaultLineSpace; + glowColor.colorValue = EditorGUI.ColorField(rect, Styles.glowColor, glowColor.colorValue, true, false, true); + } + + protected override float GetPassHeight(SerializedProperty customPass) => Styles.defaultLineSpace * 6; +} + +#endif + +class TIPS : CustomPass +{ + public Mesh mesh = null; + public float size = 5; + public float rotationSpeed = 5; + public float edgeDetectThreshold = 1; + public int edgeRadius = 2; + public Color glowColor = Color.white; + + public const float kMaxDistance = 1000; + + public Material tipsMeshMaterial; + + Material fullscreenMaterial; + RTHandle tipsBuffer; // additional render target for compositing the custom and camera color buffers + + int compositingPass; + int blurPass; + + // It can be used to configure render targets and their clear state. Also to create temporary render target textures. + // When empty this render pass will render to the active camera render target. + // You should never call CommandBuffer.SetRenderTarget. Instead call ConfigureTarget and ConfigureClear. + // The render pipeline will ensure target setup and clearing happens in an performance manner. + protected override void Setup(ScriptableRenderContext renderContext, CommandBuffer cmd) + { + tipsMeshMaterial = Resources.Load("Shader Graphs_TIPS_Effect"); + fullscreenMaterial = CoreUtils.CreateEngineMaterial("FullScreen/TIPS"); + tipsBuffer = RTHandles.Alloc(Vector2.one, TextureXR.slices, dimension: TextureXR.dimension, colorFormat: GraphicsFormat.R16G16B16A16_SFloat, useDynamicScale: true, name: "TIPS Buffer"); + + compositingPass = fullscreenMaterial.FindPass("Compositing"); + blurPass = fullscreenMaterial.FindPass("Blur"); + targetColorBuffer = TargetBuffer.Custom; + targetDepthBuffer = TargetBuffer.Custom; + clearFlags = ClearFlag.All; + } + + protected override void Execute(CustomPassContext ctx) + { + if (fullscreenMaterial == null) + return ; + + if (mesh != null && tipsMeshMaterial != null) + { + Transform cameraTransform = ctx.hdCamera.camera.transform; + Matrix4x4 trs = Matrix4x4.TRS(cameraTransform.position, Quaternion.Euler(0f, Time.realtimeSinceStartup * rotationSpeed, Time.realtimeSinceStartup * rotationSpeed * 0.5f), Vector3.one * size); + tipsMeshMaterial.SetFloat("_Intensity", (0.2f / size) * kMaxDistance); + ctx.cmd.DrawMesh(mesh, trs, tipsMeshMaterial, 0, tipsMeshMaterial.FindPass("ForwardOnly")); + } + + ctx.propertyBlock.SetFloat("_EdgeDetectThreshold", edgeDetectThreshold); + ctx.propertyBlock.SetColor("_GlowColor", glowColor); + ctx.propertyBlock.SetFloat("_EdgeRadius", (float)edgeRadius); + ctx.propertyBlock.SetFloat("_BypassMeshDepth", (mesh != null) ? 0 : size); + CoreUtils.SetRenderTarget(ctx.cmd, tipsBuffer, ClearFlag.Color); + CoreUtils.DrawFullScreen(ctx.cmd, fullscreenMaterial, shaderPassId: compositingPass, properties: ctx.propertyBlock); + + ctx.propertyBlock.SetTexture("_TIPSBuffer", tipsBuffer); + CoreUtils.SetRenderTarget(ctx.cmd, ctx.cameraColorBuffer); + CoreUtils.DrawFullScreen(ctx.cmd, fullscreenMaterial, shaderPassId: blurPass, properties: ctx.propertyBlock); + } + + protected override void Cleanup() + { + CoreUtils.Destroy(fullscreenMaterial); + tipsBuffer.Release(); + } +} \ No newline at end of file diff --git a/Assets/Shaders/TIPS.cs.meta b/Assets/Shaders/TIPS.cs.meta new file mode 100644 index 0000000..01ae436 --- /dev/null +++ b/Assets/Shaders/TIPS.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: f0ebb66443d21f744bd46bb07576d93a +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Shaders/TIPS.shader b/Assets/Shaders/TIPS.shader new file mode 100644 index 0000000..3d2fb4f --- /dev/null +++ b/Assets/Shaders/TIPS.shader @@ -0,0 +1,194 @@ +Shader "FullScreen/TIPS" +{ + HLSLINCLUDE + + #pragma vertex Vert + + #pragma target 4.5 + #pragma only_renderers d3d11 ps4 xboxone vulkan metal switch + + #include "Packages/com.unity.render-pipelines.high-definition/Runtime/RenderPipeline/RenderPass/CustomPass/CustomPassCommon.hlsl" + #include "Packages/com.unity.render-pipelines.high-definition/Runtime/Material/NormalBuffer.hlsl" + + // The PositionInputs struct allow you to retrieve a lot of useful information for your fullScreenShader: + // struct PositionInputs + // { + // float3 positionWS; // World space position (could be camera-relative) + // float2 positionNDC; // Normalized screen coordinates within the viewport : [0, 1) (with the half-pixel offset) + // uint2 positionSS; // Screen space pixel coordinates : [0, NumPixels) + // uint2 tileCoord; // Screen tile coordinates : [0, NumTiles) + // float deviceDepth; // Depth from the depth buffer : [0, 1] (typically reversed) + // float linearDepth; // View space Z coordinate : [Near, Far] + // }; + + // To sample custom buffers, you have access to these functions: + // But be careful, on most platforms you can't sample to the bound color buffer. It means that you + // can't use the SampleCustomColor when the pass color buffer is set to custom (and same for camera the buffer). + // float4 SampleCustomColor(float2 uv); + // float4 LoadCustomColor(uint2 pixelCoords); + // float LoadCustomDepth(uint2 pixelCoords); + // float SampleCustomDepth(float2 uv); + + // There are also a lot of utility function you can use inside Common.hlsl and Color.hlsl, + // you can check them out in the source code of the core SRP package. + + TEXTURE2D_X(_TIPSBuffer); + float _EdgeDetectThreshold; + float3 _GlowColor; + float _EdgeRadius; + float _BypassMeshDepth; + + float SampleClampedDepth(float2 uv) { return SampleCameraDepth(clamp(uv, _ScreenSize.zw, 1 - _ScreenSize.zw)).r; } + + float EdgeDetect(float2 uv, float depthThreshold, float normalThreshold) + { + normalThreshold *= _EdgeDetectThreshold; + depthThreshold *= _EdgeDetectThreshold; + float halfScaleFloor = floor(_EdgeRadius * 0.5); + float halfScaleCeil = ceil(_EdgeRadius * 0.5); + + // Compute uv position to fetch depth informations + float2 bottomLeftUV = uv - float2(_ScreenSize.zw.x, _ScreenSize.zw.y) * halfScaleFloor; + float2 topRightUV = uv + float2(_ScreenSize.zw.x, _ScreenSize.zw.y) * halfScaleCeil; + float2 bottomRightUV = uv + float2(_ScreenSize.zw.x * halfScaleCeil, -_ScreenSize.zw.y * halfScaleFloor); + float2 topLeftUV = uv + float2(-_ScreenSize.zw.x * halfScaleFloor, _ScreenSize.zw.y * halfScaleCeil); + + // Depth from camera buffer + float depth0 = SampleClampedDepth(bottomLeftUV); + float depth1 = SampleClampedDepth(topRightUV); + float depth2 = SampleClampedDepth(bottomRightUV); + float depth3 = SampleClampedDepth(topLeftUV); + + float depthDerivative0 = depth1 - depth0; + float depthDerivative1 = depth3 - depth2; + + float edgeDepth = sqrt(pow(depthDerivative0, 2) + pow(depthDerivative1, 2)) * 100; + + float newDepthThreshold = depthThreshold * depth0; + edgeDepth = edgeDepth > newDepthThreshold ? 1 : 0; + + // Normals extracted from the camera normal buffer + NormalData normalData0, normalData1, normalData2, normalData3; + DecodeFromNormalBuffer(_ScreenSize.xy * bottomLeftUV, normalData0); + DecodeFromNormalBuffer(_ScreenSize.xy * topRightUV, normalData1); + DecodeFromNormalBuffer(_ScreenSize.xy * bottomRightUV, normalData2); + DecodeFromNormalBuffer(_ScreenSize.xy * topLeftUV, normalData3); + + float3 normalFiniteDifference0 = normalData1.normalWS - normalData0.normalWS; + float3 normalFiniteDifference1 = normalData3.normalWS - normalData2.normalWS; + + float edgeNormal = sqrt(dot(normalFiniteDifference0, normalFiniteDifference0) + dot(normalFiniteDifference1, normalFiniteDifference1)); + edgeNormal = edgeNormal > normalThreshold ? 1 : 0; + + // Combined + return max(edgeDepth, edgeNormal); + } + + float4 Compositing(Varyings varyings) : SV_Target + { + UNITY_SETUP_STEREO_EYE_INDEX_POST_VERTEX(varyings); + + float depth = LoadCameraDepth(varyings.positionCS.xy); + PositionInputs posInput = GetPositionInput(varyings.positionCS.xy, _ScreenSize.zw, depth, UNITY_MATRIX_I_VP, UNITY_MATRIX_V); + float4 color = float4(0.0, 0.0, 0.0, 0.0); + + // Load the camera color buffer at the mip 0 if we're not at the before rendering injection point + if (_CustomPassInjectionPoint != CUSTOMPASSINJECTIONPOINT_BEFORE_RENDERING) + color = float4(CustomPassSampleCameraColor(posInput.positionNDC.xy, 0), 1); + + // Do some normal and depth based edge detection on the camera buffers. + float3 edgeDetectColor = EdgeDetect(posInput.positionNDC.xy, 2, 1) * _GlowColor; + // Remove the edge detect effect between the sky and objects when the object is inside the sphere + edgeDetectColor *= depth != UNITY_RAW_FAR_CLIP_VALUE; + + // Load depth and color information from the custom buffer + float meshDepthPos = LoadCustomDepth(posInput.positionSS.xy); + float4 meshColor = LoadCustomColor(posInput.positionSS.xy); + + // Change the color of the icosahedron mesh + meshColor = float4(_GlowColor, 1) * meshColor; + + // Transform the raw depth into eye space depth + float sceneDepth = LinearEyeDepth(depth, _ZBufferParams); + float meshDepth = LinearEyeDepth(meshDepthPos, _ZBufferParams); + + if (_BypassMeshDepth != 0) + meshDepth = _BypassMeshDepth; + + // Add the intersection with mesh and scene depth to the edge detect result + edgeDetectColor = lerp(edgeDetectColor, _GlowColor, saturate(2 - abs(meshDepth - sceneDepth) * 200 * rcp(_EdgeRadius))); + + // Blend the mesh color and edge detect color using the mesh alpha transparency + float3 edgeMeshColor = lerp(edgeDetectColor, meshColor.xyz, (meshDepth < sceneDepth) ? meshColor.a : 0); + + // Avoid edge detection effect to leak inside the isocahedron mesh + float3 finalColor = saturate(meshDepth - sceneDepth) > 0 ? color.xyz : edgeMeshColor; + + return float4(finalColor, 1); + } + + // Try to remove fireflies + float4 Blur(Varyings varyings) : SV_Target + { + UNITY_SETUP_STEREO_EYE_INDEX_POST_VERTEX(varyings); + + float depth = LoadCameraDepth(varyings.positionCS.xy); + float meshDepth = LoadCustomDepth(varyings.positionCS.xy); + PositionInputs posInput = GetPositionInput(varyings.positionCS.xy, _ScreenSize.zw, depth, UNITY_MATRIX_I_VP, UNITY_MATRIX_V); + + // It didn't worked :p + return float4(LOAD_TEXTURE2D_X_LOD(_TIPSBuffer, posInput.positionSS.xy, 0).rgb, 1); + + float3 color = LOAD_TEXTURE2D_X_LOD(_TIPSBuffer, posInput.positionSS.xy, 0).rgb; + + // don't blur non outlined image + if (LinearEyeDepth(depth, _ZBufferParams) < LinearEyeDepth(meshDepth, _ZBufferParams) + 0.1) + return float4(color.r, 0, 0, 1); + + float3 t; + for (float x = -1; x <= 1; x++) + for (float y = -1; y <= 1; y++) + { + t += LOAD_TEXTURE2D_X_LOD(_TIPSBuffer, posInput.positionSS.xy + float2(x, y), 0).rgb; + } + + if (Luminance(t) < Luminance(_GlowColor) * 3) + color = 0; + + return float4(color, 1); + } + + ENDHLSL + + SubShader + { + Pass + { + Name "Compositing" + + ZWrite Off + ZTest Always + Blend Off + Cull Off + + HLSLPROGRAM + #pragma fragment Compositing + ENDHLSL + } + + Pass + { + Name "Blur" + + ZWrite Off + ZTest Always + Blend Off + Cull Off + + HLSLPROGRAM + #pragma fragment Blur + ENDHLSL + } + } + Fallback Off +} diff --git a/Assets/Shaders/TIPS.shader.meta b/Assets/Shaders/TIPS.shader.meta new file mode 100644 index 0000000..87aae77 --- /dev/null +++ b/Assets/Shaders/TIPS.shader.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: cb4760d54220b584582c8a12cc4c42ed +ShaderImporter: + externalObjects: {} + defaultTextures: [] + nonModifiableTextures: [] + preprocessorOverride: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Textures/stars.jpg b/Assets/Textures/stars.jpg new file mode 100644 index 0000000000000000000000000000000000000000..170ab68ba260401ab9da317149628bc06c6a9fe3 GIT binary patch literal 17800 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 z