show some love to hyper
This commit is contained in:
1 parent
6da13bac1c
commit
15c8fce77c
52 files changed
+4091
-2008
No files matched your search
@@ -0,0 +1,99 @@
|
||||
Shader "Kaiju/Julia"
|
||||
{
|
||||
Properties
|
||||
{
|
||||
_MainTex ("Texture", 2D) = "white" {}
|
||||
_Iterations("Iterations", range(0, 555)) = 255
|
||||
_Pan("Pan", vector) = (0.5, 0.0, 0.0, 0.0)
|
||||
_Zoom("Zoom", range(0, 4)) = 3
|
||||
_Aspect("Aspect", range(0, 4)) = 1
|
||||
_JuliaSeed("JuliaSeed", vector) = (0.39, -0.2, 0.0, 0.0)
|
||||
_Colors("Colors", vector) = (3.0, 4.0, 5.0, 0.0)
|
||||
}
|
||||
SubShader
|
||||
{
|
||||
// No culling or depth
|
||||
Cull Off ZWrite Off ZTest Always
|
||||
|
||||
Pass
|
||||
{
|
||||
CGPROGRAM
|
||||
// #pragma enable_d3d11_debug_symbols
|
||||
#pragma target 3.0
|
||||
#pragma vertex vert
|
||||
#pragma fragment frag
|
||||
|
||||
#include "UnityCG.cginc"
|
||||
|
||||
struct appdata
|
||||
{
|
||||
float4 vertex : POSITION;
|
||||
float2 uv : TEXCOORD0;
|
||||
};
|
||||
|
||||
struct v2f
|
||||
{
|
||||
float2 uv : TEXCOORD0;
|
||||
float4 vertex : SV_POSITION;
|
||||
};
|
||||
|
||||
v2f vert (appdata v)
|
||||
{
|
||||
v2f o;
|
||||
o.vertex = UnityObjectToClipPos(v.vertex);
|
||||
o.uv = v.uv;
|
||||
return o;
|
||||
}
|
||||
|
||||
float _Iterations;
|
||||
float2 _Pan;
|
||||
float _Zoom;
|
||||
float _Aspect;
|
||||
float2 _JuliaSeed;
|
||||
float3 _Colors;
|
||||
|
||||
float ComputeValue(float2 v, float2 offset) {
|
||||
float vxsquare = 0;
|
||||
float vysquare = 0;
|
||||
|
||||
float iteration = 0;
|
||||
float lastIteration = _Iterations;
|
||||
|
||||
do {
|
||||
vxsquare = v.x * v.x;
|
||||
vysquare = v.y * v.y;
|
||||
|
||||
v = float2(vxsquare - vysquare, v.x * v.y * 2) + offset;
|
||||
|
||||
iteration++;
|
||||
|
||||
if ((lastIteration == _Iterations) && (vxsquare + vysquare) > 4.0) {
|
||||
lastIteration = iteration + 1;
|
||||
}
|
||||
} while (iteration < lastIteration);
|
||||
|
||||
return (float(iteration) - (log(log(sqrt(vxsquare + vysquare))) / log(2.0))) / float(_Iterations);
|
||||
}
|
||||
|
||||
float4 Mandelbrot_PixelShader(float2 texCoord : TEXCOORD0) : COLOR0 {
|
||||
float2 v = (texCoord - 0.5) * _Zoom * float2(1, _Aspect) - _Pan;
|
||||
float val = ComputeValue(v, v);
|
||||
return float4(sin(val * _Colors.x), sin(val * _Colors.y), sin(val * _Colors.z), 1);
|
||||
}
|
||||
|
||||
float4 Julia_PixelShader(float2 texCoord : TEXCOORD0) : COLOR0 {
|
||||
_JuliaSeed = float2(sin(_Time.y), cos(_Time.y));
|
||||
float2 v = (texCoord - 0.5) * _Zoom * float2(1, _Aspect) - _Pan;
|
||||
float val = ComputeValue(v, _JuliaSeed);
|
||||
return float4(sin(val * _Colors.x), sin(val * _Colors.y), sin(val * _Colors.z), 1);
|
||||
}
|
||||
|
||||
float4 frag (v2f i) : SV_Target {
|
||||
// return Julia_PixelShader(i.uv);
|
||||
return Mandelbrot_PixelShader(i.uv);
|
||||
}
|
||||
|
||||
ENDCG
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user