diff --git a/Shaders/Unity/SphericalDisintegration.PNG b/Shaders/Unity/SphericalDisintegration.PNG new file mode 100644 index 0000000..281ab78 Binary files /dev/null and b/Shaders/Unity/SphericalDisintegration.PNG differ diff --git a/Shaders/Unity/SphericalDisintegration/README.md b/Shaders/Unity/SphericalDisintegration/README.md new file mode 100644 index 0000000..b4881c2 --- /dev/null +++ b/Shaders/Unity/SphericalDisintegration/README.md @@ -0,0 +1,3 @@ +#Spherical Disintegration +The material and script are not strictly needed for this shader to work, they are just there to help you get an idea of how to use it. +The shader needs to be operated by a script to add disintegration points and amount of disintegration. \ No newline at end of file diff --git a/Shaders/Unity/SphericalDisintegration/README.md.meta b/Shaders/Unity/SphericalDisintegration/README.md.meta new file mode 100644 index 0000000..b2e5ef4 --- /dev/null +++ b/Shaders/Unity/SphericalDisintegration/README.md.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: a954c5d0779882d4988da513b138ff00 +timeCreated: 1489466834 +licenseType: Free +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Shaders/Unity/SphericalDisintegration/SphericalDisintegration.cs b/Shaders/Unity/SphericalDisintegration/SphericalDisintegration.cs new file mode 100644 index 0000000..71214fd --- /dev/null +++ b/Shaders/Unity/SphericalDisintegration/SphericalDisintegration.cs @@ -0,0 +1,20 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +public class SphericalDisintegration : MonoBehaviour +{ + Material mat; + + void Start() + { + mat = GetComponent().material; + mat.SetVectorArray("_Orbs", new Vector4[] { GetComponent().position}); + mat.SetInt("_OrbsLength", 1); + } + + void Update() + { + mat.SetFloat("_Expansion", Time.time / 2f); + } +} diff --git a/Shaders/Unity/SphericalDisintegration/SphericalDisintegration.cs.meta b/Shaders/Unity/SphericalDisintegration/SphericalDisintegration.cs.meta new file mode 100644 index 0000000..2d380ea --- /dev/null +++ b/Shaders/Unity/SphericalDisintegration/SphericalDisintegration.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 8698e5790ac6c2f48993f4364a01c3fa +timeCreated: 1489456771 +licenseType: Free +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Shaders/Unity/SphericalDisintegration/SphericalDisintegration.mat b/Shaders/Unity/SphericalDisintegration/SphericalDisintegration.mat new file mode 100644 index 0000000..f55faee Binary files /dev/null and b/Shaders/Unity/SphericalDisintegration/SphericalDisintegration.mat differ diff --git a/Shaders/Unity/SphericalDisintegration/SphericalDisintegration.mat.meta b/Shaders/Unity/SphericalDisintegration/SphericalDisintegration.mat.meta new file mode 100644 index 0000000..1484755 --- /dev/null +++ b/Shaders/Unity/SphericalDisintegration/SphericalDisintegration.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: d6688c7cdb1b2a349bb147f4c79d697f +timeCreated: 1489454472 +licenseType: Free +NativeFormatImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Shaders/Unity/SphericalDisintegration/SphericalDisintegration.shader b/Shaders/Unity/SphericalDisintegration/SphericalDisintegration.shader new file mode 100644 index 0000000..a0255e6 --- /dev/null +++ b/Shaders/Unity/SphericalDisintegration/SphericalDisintegration.shader @@ -0,0 +1,93 @@ +Shader "Custom/SphericalDisintegration" { + Properties { + _Color ("Color", Color) = (1,1,1,1) + _MainTex ("Albedo (RGB)", 2D) = "white" {} + _Glossiness ("Smoothness", Range(0,1)) = 0.5 + _Metallic ("Metallic", Range(0,1)) = 0.0 + _DisintegrationColor("Disintegration Color", Color) = (1,0.5,0,1) + _FinishRadius ("Finish Radius", Float) = 1 + _DisintegrationThickness ("Disintegration Thickness", Float) = 0.1 + _Expansion ("Expansion", Range(0,1)) = 0 + } + SubShader { + Tags { "RenderType"="Opaque" } + LOD 200 + Cull Off + + CGPROGRAM + #include "UnityPBSLighting.cginc" + // Physically based Standard lighting model, and enable shadows on all light types + #pragma surface surf Custom fullforwardshadows + + // Use shader model 3.0 target, to get nicer looking lighting + #pragma target 3.0 + + sampler2D _MainTex; + + struct Input { + float2 uv_MainTex; + float3 worldPos; + float3 viewDir; + }; + + half _Glossiness; + half _Metallic; + fixed4 _Color; + fixed4 _DisintegrationColor; + float _FinishRadius; + uniform float _DisintegrationThickness; + uniform float _Expansion; + uniform int _OrbsLength; + uniform float4 _Orbs[10]; + + int disintegrating; + void surf(Input IN, inout SurfaceOutputStandard o) + { + disintegrating = 0; + if (_Expansion > 0) + { + for (int i = 0; i < _OrbsLength; i++) + { + float dist = distance(IN.worldPos, _Orbs[i].xyz); + float disintegrateDistance = _Expansion * _FinishRadius + sin((IN.worldPos.x+IN.worldPos.y+IN.worldPos.z)*30+_Time.y*5+o.Normal)*0.01; + if (dist < disintegrateDistance) + { + discard; + } + if (dist < disintegrateDistance + _DisintegrationThickness) + { + disintegrating = 1; + } + if (dot(o.Normal, IN.viewDir) < 0) + { + disintegrating = 1; + } + } + } + + // Albedo comes from a texture tinted by color + fixed4 c = tex2D(_MainTex, IN.uv_MainTex) * _Color; + o.Albedo = c.rgb; + // Metallic and smoothness come from slider variables + o.Metallic = _Metallic; + o.Smoothness = _Glossiness; + o.Alpha = c.a; + } + half4 LightingCustom(SurfaceOutputStandard s, half3 lightDir, UnityGI gi) + { + if (disintegrating == 1) + { + return _DisintegrationColor; + } + return LightingStandard(s, lightDir, gi); + } + + void LightingCustom_GI(SurfaceOutputStandard s, UnityGIInput data, inout UnityGI gi) + { + LightingStandard_GI(s, data, gi); + } + + ENDCG + } + FallBack "Diffuse" +} diff --git a/Shaders/Unity/SphericalDisintegration/SphericalDisintegration.shader.meta b/Shaders/Unity/SphericalDisintegration/SphericalDisintegration.shader.meta new file mode 100644 index 0000000..9309bfe --- /dev/null +++ b/Shaders/Unity/SphericalDisintegration/SphericalDisintegration.shader.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: abe9addfc2f299b4680ae051e73ce279 +timeCreated: 1489454366 +licenseType: Free +ShaderImporter: + defaultTextures: [] + userData: + assetBundleName: + assetBundleVariant: