Aetheria/Assets/Shaders/Clouds.shader
Reinier Vens dbc522a224 Weapos Rejiggered
Modified weapon scripts to eliminate specialized projectile behavior - allows charged weapons to have projectiles and modify weapon stats when charged
Added machine gun weapon & VFX
Moved third party code to Plugins folder to improve compile times
2021-01-31 03:52:32 +00:00

92 lines
2.7 KiB
Text

Shader "Unlit/Clouds"
{
Properties
{
_Color ("Color", Color) = (1,1,1,1)
NoisePosition("NoisePosition", Float) = 0.5
NoiseAmplitude("NoiseAmplitude", Float) = 0.5
NoiseOffset("NoiseOffset", Float) = 0.5
NoiseGain("NoiseGain", Float) = 1
NoiseLacunarity("NoiseLacunarity", Float) = 2
NoiseFrequency("NoiseFrequency", Float) = 1
ParallaxLacunarity("ParallaxLacunarity", Float) = 2
ParallaxDirection("ParallaxDirection", Vector) = (0,0,0,0)
Parallax("Parallax", Float) = 1
Speed("Speed", Float) = 1
FadeDistance("FadeDistance", Float) = 100
}
SubShader
{
Tags { "RenderType"="Transparent" }
Cull Off Lighting Off ZWrite Off
Blend One One
LOD 100
Pass
{
CGPROGRAM
#pragma vertex vert
#pragma fragment frag
#include "UnityCG.cginc"
#include "Assets/Plugins/GPU Noise/SimplexNoise3D.cginc"
struct appdata
{
float4 vertex : POSITION;
float2 uv : TEXCOORD0;
};
struct v2f
{
float2 uv : TEXCOORD0;
float4 vertex : SV_POSITION;
};
half4 _Color;
float NoisePosition;
float NoiseAmplitude;
float NoiseOffset;
float NoiseGain;
float NoiseLacunarity;
float NoiseFrequency;
float ParallaxLacunarity;
float3 ParallaxDirection;
float Parallax;
float Speed;
float FadeDistance;
// fractal sum, range -1.0 - 1.0
float fbm(float3 p)
{
float freq = NoiseFrequency, amp = .5;
float parallax = Parallax;
float sum = 0;
for(int i = 0; i < 6; i++)
{
sum += snoise(p * freq + Parallax * ParallaxDirection) * amp;
parallax /= ParallaxLacunarity;
freq *= NoiseLacunarity;
amp *= NoiseGain;
}
return (sum + NoiseOffset)*NoiseAmplitude;
}
v2f vert (appdata v)
{
v2f o;
o.vertex = UnityObjectToClipPos(v.vertex);
o.uv = mul (unity_ObjectToWorld, v.vertex).xy;
return o;
}
fixed4 frag (v2f i) : SV_Target
{
float3 p = float3(i.uv,_Time.x*Speed);
float noise = saturate((1-abs(snoise(p*NoiseFrequency/2))) * fbm(p));
return noise * _Color * (1-length(i.uv)/FadeDistance);
}
ENDCG
}
}
}