local function shaderFunc(oldColor, fragCoord, inputs)
local brightness = 3.
local ray_brightness = 5.
local gamma = 6.
local spot_brightness = 1.5
local ray_density = 6.
local curvature = 90.
local red = 1.8
local green = 3.
local blue = .5
local noisetype = 1
local sin_freq = 6.
local iResolution = inputs[1]
local iGlobalTime = inputs[2]
local fragColor
local function hash(n) return fract(sin(n)*43758.5453) end
local function noise(x)
x = vec2(x.x, x.y)
x = mul2s(x, 1.75)
local p = vec2(floor(x.x), floor(x.y))
local f = vec2(fract(x.x), fract(x.y))
f = mul2(mul2(f, f), (sub2(vec2(3, 3), mul2s(f, 2))))
local n = p.x + p.y*57.0
local res = mix(mix( hash(n+ 0.0), hash(n+ 1.0),f.x),
mix( hash(n+ 57.0), hash(n+ 58.0),f.x),f.y)
return res
end
local m2 = { 0.80, 0.60, -0.60, 0.80 };
local function fbm(p)
p = vec2(p.x, p.y)
local z=2.
local rz = 0.
p = mul2s(p, 0.25)
for i = 1, 5 do
if noisetype == 1 then
rz = rz + abs((noise(p)-0.5)*2.)/z
elseif noisetype == 2 then
rz = rz + (sin(noise(p)*sin_freq)*0.5+0.5) /z
else
rz = rz + noise(p)/z
end
z = z*2.
p = mat2mulvec2(m2, mul2s(p, 2)) -- may need to swap these
end
return rz
end
local function mainImage()
local t = -iGlobalTime*0.03*4
uv = sub2s(div2(fragCoord, iResolution), 0.5)
uv.x = uv.x * iResolution.x/iResolution.y
uv = add2s(mul2s(mul2s(uv, curvature), .05), 0.0001)
local r = sqrt(dot2(uv, uv))
local x = dot2(normalize2(uv), vec2(.5,0.)) + t
local y = dot2(normalize2(uv), vec2(.0,.5)) + t
--[[#ifdef YO_DAWG
x = fbm(vec2(y*ray_density*0.5,r+x*ray_density*.2));
y = fbm(vec2(r+y*ray_density*0.1,x*ray_density*.5));
#endif]]
local val
val = fbm(vec2(r+y*ray_density,r+x*ray_density-y))
val = smoothstep(gamma*.02-.1,ray_brightness+(gamma*0.02-.1)+.001,val)
val = sqrt(val)
local col = div3(vec3(val, val, val), vec3(red,green,blue))
--col = clamp(sub3(vec3(1, 1, 1), col),0,1)
col = vec3(
clamp(1-col.x, 0, 1),
clamp(1-col.y, 0, 1),
clamp(1-col.z, 0, 1))
--col = mix(col,vec3(1.),spot_brightness-r/0.1/curvature*200./brightness);
col.x = mix(col.x, 1, spot_brightness-r/0.1/curvature*200./brightness)
col.y = mix(col.y, 1, spot_brightness-r/0.1/curvature*200./brightness)
col.z = mix(col.z, 1, spot_brightness-r/0.1/curvature*200./brightness)
fragColor = vec4(col.x, col.y, col.z, 1.0)
end
mainImage()
return fragColor
end