shaders innit
This commit is contained in:
1 parent
7d8cdb8d6e
commit
177f7bbbba
87 files changed
+3072
-14
No files matched your search
@@ -0,0 +1,108 @@
|
||||
// https://www.shadertoy.com/view/llcXW7
|
||||
Shader "Custom/Foamy Water"
|
||||
{
|
||||
|
||||
Properties
|
||||
{
|
||||
//_MainTex ("Texture", 2D) = "white" {}
|
||||
_MAX_ITER("Max iteration",Range(1,32)) = 4
|
||||
_TILING_FACTOR("Tiling Factor",Range(0.01,5.0)) = 1.0
|
||||
_Speed("Speed",Range(0.01,5.0)) = 0.1
|
||||
_DistCenterPower("Dist Center Power",Range(0.1,20.0)) = 2.0
|
||||
_Color("Color",Color) = (1,1,1)
|
||||
}
|
||||
|
||||
SubShader
|
||||
{
|
||||
Tags { "RenderType" = "Transparent" "Queue" = "Transparent" }
|
||||
|
||||
Pass
|
||||
{
|
||||
ZWrite Off
|
||||
Blend SrcAlpha OneMinusSrcAlpha
|
||||
|
||||
CGPROGRAM
|
||||
#pragma vertex vert
|
||||
#pragma fragment frag
|
||||
|
||||
#include "UnityCG.cginc"
|
||||
|
||||
struct VertexInput
|
||||
{
|
||||
fixed4 vertex : POSITION;
|
||||
fixed2 uv:TEXCOORD0;
|
||||
};
|
||||
|
||||
struct VertexOutput
|
||||
{
|
||||
fixed4 pos : SV_POSITION;
|
||||
fixed2 uv:TEXCOORD0;
|
||||
};
|
||||
|
||||
// Modified from k-mouse (2016-11-23)
|
||||
// Modified from David Hoskins (2013-07-07) and joltz0r (2013-07-04)
|
||||
|
||||
#define TAU 6.28318530718 //6.28318530718
|
||||
|
||||
fixed _TILING_FACTOR;
|
||||
fixed _MAX_ITER;
|
||||
fixed _Speed;
|
||||
fixed _DistCenterPower;
|
||||
fixed4 _Color;
|
||||
|
||||
|
||||
fixed waterHighlight(fixed2 p, fixed time, fixed foaminess)
|
||||
{
|
||||
fixed2 i = p;
|
||||
fixed c = 0.0;
|
||||
fixed foaminess_factor = lerp(1.0, 6.0, foaminess);
|
||||
fixed inten = .005 * foaminess_factor;
|
||||
|
||||
for (int n = 0; n < _MAX_ITER; n++)
|
||||
{
|
||||
fixed t = time * (1.0 - (3.5 / fixed(n+1)));
|
||||
i = p + fixed2(cos(t - i.x) + sin(t + i.y), sin(t - i.y) + cos(t + i.x));
|
||||
c += 1.0/length(fixed2(p.x / (sin(i.x+t)), p.y / (cos(i.y+t))));
|
||||
}
|
||||
c = 0.2 + c / (inten * _MAX_ITER);
|
||||
c = 1.17-pow(c, 1.4);
|
||||
c = pow(abs(c), 8.0);
|
||||
return c / sqrt(foaminess_factor);
|
||||
}
|
||||
|
||||
VertexOutput vert (VertexInput v)
|
||||
{
|
||||
VertexOutput o;
|
||||
o.pos = UnityObjectToClipPos (v.vertex);
|
||||
o.uv = v.uv;
|
||||
return o;
|
||||
}
|
||||
|
||||
fixed4 frag(VertexOutput i) : SV_Target
|
||||
{
|
||||
|
||||
fixed time = _Time.y * _Speed +23.0;
|
||||
|
||||
fixed dist_center = pow(2.0*length(i.uv - 0.5), _DistCenterPower);
|
||||
|
||||
fixed foaminess = smoothstep(0.4, 1.8, dist_center);
|
||||
fixed clearness = 0.1 + 0.9*smoothstep(0.1, 0.5, dist_center);
|
||||
|
||||
fixed2 p = fmod(i.uv*TAU*_TILING_FACTOR, TAU)-250.0;
|
||||
|
||||
fixed c = waterHighlight(p, time, foaminess);
|
||||
|
||||
fixed3 water_color = fixed3(0.0, 0.35, 0.5);
|
||||
fixed3 color = fixed3(c,c,c);
|
||||
color = clamp(color + water_color, 0.0, 1.0);
|
||||
|
||||
color = lerp(water_color, color, clearness);
|
||||
|
||||
return fixed4(color*_Color.rgb, c * _Color.a);
|
||||
|
||||
}
|
||||
ENDCG
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in new issue
Block a user