Initial commit
@@ -0,0 +1 @@
|
||||
AuraGrove
|
||||
@@ -0,0 +1,6 @@
|
||||
[.ShellClassInfo]
|
||||
ConfirmFileOp=0
|
||||
NoSharing=0
|
||||
IconFile=heavym_project.ico
|
||||
IconIndex=0
|
||||
InfoTip=HeavyM Project
|
||||
|
After Width: | Height: | Size: 3.4 MiB |
|
After Width: | Height: | Size: 2.3 MiB |
|
After Width: | Height: | Size: 2.1 MiB |
|
After Width: | Height: | Size: 2.2 MiB |
|
After Width: | Height: | Size: 2.1 MiB |
|
After Width: | Height: | Size: 7.4 MiB |
|
After Width: | Height: | Size: 3.0 MiB |
|
After Width: | Height: | Size: 8.2 MiB |
|
After Width: | Height: | Size: 7.0 MiB |
|
After Width: | Height: | Size: 2.6 MiB |
|
After Width: | Height: | Size: 946 KiB |
|
After Width: | Height: | Size: 2.3 MiB |
@@ -0,0 +1,180 @@
|
||||
/*
|
||||
{
|
||||
"CATEGORIES": [
|
||||
"Automatically Converted"
|
||||
],
|
||||
"INPUTS": [
|
||||
{
|
||||
"NAME": "x_rot",
|
||||
"TYPE": "float",
|
||||
"DEFAULT": 0.5,
|
||||
"MIN": 0.0,
|
||||
"MAX": 1.0
|
||||
},
|
||||
{
|
||||
"NAME": "y_rot",
|
||||
"TYPE": "float",
|
||||
"DEFAULT": 0.3,
|
||||
"MIN": 0.0,
|
||||
"MAX": 1.0
|
||||
},
|
||||
{
|
||||
"NAME": "z_rot",
|
||||
"TYPE": "float",
|
||||
"DEFAULT": 0.1,
|
||||
"MIN": 0.0,
|
||||
"MAX": 1.0
|
||||
},
|
||||
{
|
||||
"NAME": "q_rot",
|
||||
"TYPE": "float",
|
||||
"DEFAULT": 1.0,
|
||||
"MIN": 0.0,
|
||||
"MAX": 1.0
|
||||
}
|
||||
]
|
||||
}
|
||||
*/
|
||||
|
||||
|
||||
// TesseracT by Dima..
|
||||
|
||||
#ifdef GL_ES
|
||||
precision mediump float;
|
||||
#endif
|
||||
|
||||
|
||||
mat4 mat = mat4 ( vec4 ( 1.0 , 0.0 , 0.0 , 0.0 ),
|
||||
vec4 ( 0.0 , 1.0 , 0.0 , 0.0 ),
|
||||
vec4 ( 1.0 , 0.0 , 1.0 , 0.0 ),
|
||||
vec4 ( 0.0 , 1.0 , 0.0 , 1.0 ) );
|
||||
|
||||
vec2 pos;
|
||||
|
||||
vec4 col = vec4 ( 0.4, 0.0, 0.9, 1000.0 );
|
||||
|
||||
void Rotate ( float angle, float d1, float d2, float d3, float d4);
|
||||
void Point ( vec4 p );
|
||||
void Line4 ( vec4 a, vec4 b );
|
||||
void Line2 ( vec2 a, vec2 b );
|
||||
|
||||
void main( void ) {
|
||||
|
||||
pos = gl_FragCoord.xy / RENDERSIZE.y;
|
||||
pos.x -= 1. - RENDERSIZE.y / RENDERSIZE.x;
|
||||
pos -= .5;
|
||||
|
||||
Rotate ( TIME * q_rot, 0.0, 1.0, 1.0, 0.0 );
|
||||
Rotate ( TIME * x_rot, 1.0, 0.0, 1.0, 0.0 );
|
||||
Rotate ( TIME * y_rot, 1.0, 1.0, 0.0, 0.0 );
|
||||
Rotate ( TIME * z_rot, 1.0, 0.0, 0.0, 1.0 );
|
||||
|
||||
Line4 ( vec4 ( 0.1 , 0.0 , 0.0 , 0.0 ), vec4 (-.3, .2, .2, .2 ) );
|
||||
Line4 ( vec4 ( 0.0 , 0.0 , 0.0 , 0.0 ), vec4 ( .2,-.2, .2, .2 ) );
|
||||
Line4 ( vec4 ( 0.0 , 0.1 , 0.0 , 0.0 ), vec4 ( -.2, .2,-.2, .2 ) );
|
||||
Line4 ( vec4 ( 0.0 , 0.0 , 0.1 , 0.0 ), vec4 ( .2, .2, .2,-.2 ) );
|
||||
|
||||
Line4 ( vec4 ( .2, .2, .2,-.2 ), vec4 (-.3, .2, .2,-.2 ) );
|
||||
Line4 ( vec4 ( .2, .2, .2,-.2 ), vec4 ( .2,-.2, .2,-.2 ) );
|
||||
Line4 ( vec4 ( .2, .2, .2,-.2 ), vec4 ( .2, .2,-.2,-.2 ) );
|
||||
|
||||
Line4 ( vec4 ( .2, .2,-.2, .2 ), vec4 (-.3, .2,-.2, .2 ) );
|
||||
Line4 ( vec4 ( .2, .2,-.2, .2 ), vec4 ( .2,-.2,-.2, .2 ) );
|
||||
|
||||
Line4 ( vec4 ( .2, .2,-.3,-.2 ), vec4 (-.3, .2,-.3,-.2 ) );
|
||||
Line4 ( vec4 ( .2, .2,-.3,-.2 ), vec4 ( .2,-.2,.2,-.2 ) );
|
||||
Line4 ( vec4 ( .2, .2,-.3,-.2 ), vec4 ( .2, .2,-.2, .2 ) );
|
||||
|
||||
Line4 ( vec4 ( 0.0 , 0.0 , 0.3 , 0.0 ), vec4 (-.2,.2, .2, .2 ) );
|
||||
Line4 ( vec4 ( 0.0 , 0.3 , 0.0 , 0.0 ), vec4 ( .2,-.2,-.2, .2 ) );
|
||||
Line4 ( vec4 ( 0.0 , 0.0 , 0.0 , 0.0 ), vec4 ( .2,-.2, .2,-.2 ) );
|
||||
|
||||
Line4 ( vec4 ( .2,-.2, .2,-.1 ), vec4 (-.2,-.2, .2,-.1) );
|
||||
Line4 ( vec4 ( .2,-.2, .2,-.1 ), vec4 ( .2,-.2,-.2,-.2 ) );
|
||||
|
||||
Line4 ( vec4 ( .2,-.2,-.2, .2 ), vec4 (-.2,-.2,.2, .2 ) );
|
||||
Line4 ( vec4 ( -.2,-.2,-.2, .2 ), vec4 ( .2,-.1,-.2,-.2 ) );
|
||||
|
||||
Line4 ( vec4 ( .2,-.1,-.2,-.2 ), vec4 (-.2,-.2,-.2,-.2 ) );
|
||||
|
||||
|
||||
Line4 ( vec4 (-.3, .2, .2, .2 ), vec4 (-.2,-.2, .2, .2 ) );
|
||||
Line4 ( vec4 (-.3, .2, .2, .2 ), vec4 (-.3, .2,-.2, .2 ) );
|
||||
Line4 ( vec4 (-.3, .2, .2, .2 ), vec4 (-.3, .2, .2,-.2 ) );
|
||||
|
||||
Line4 ( vec4 (-.3, .2, .2,-.2 ), vec4 (.2,-.2, .2,-.2 ) );
|
||||
Line4 ( vec4 (.3, .2, .2,-.2 ), vec4 (-.3, .2,-.2,-.2 ) );
|
||||
|
||||
Line4 ( vec4 (-.3, .2,-.2, .2 ), vec4 (-.2,.2,-.2, .2 ) );
|
||||
|
||||
Line4 ( vec4 (-.3, .2,-.2,-.2 ), vec4 (-.2,-.2,-.2,-.2 ) );
|
||||
Line4 ( vec4 (-.3, .2,-.2,-.2 ), vec4 (-.3, .2,-.2, .2 ) );
|
||||
|
||||
Line4 ( vec4 (-.2,-.2, .2, .2 ), vec4 (.2,-.2,-.2, .2 ) );
|
||||
Line4 ( vec4 (.2,-.2, .2, .2 ), vec4 (-.2,-.2, .2,-.2 ) );
|
||||
|
||||
Line4 ( vec4 (-.2,-.2, .2,-.2 ), vec4 (-.2,-.2,-.2,-.2 ) );
|
||||
|
||||
Line4 ( vec4 (-.2,-.2,-.2, .2 ), vec4 (-.2,-.1,-.2,-.2 ) );
|
||||
|
||||
Point ( vec4 ( 0.0 , 0.0 , 0.0 , 0.0 ) );
|
||||
Point ( vec4 ( .2, .2, .2,-.2 ) );
|
||||
Point ( vec4 ( .2, .2,-.2, .2 ) );
|
||||
Point ( vec4 ( .2, .2,-.3,-.2 ) );
|
||||
Point ( vec4 ( .1,-.2, .2, .2 ) );
|
||||
Point ( vec4 ( .1,-.2, .2,-.2 ) );
|
||||
Point ( vec4 ( .1,-.2,-.2, .2 ) );
|
||||
Point ( vec4 ( .1,-.2,-.1,-.2 ) );
|
||||
|
||||
Point ( vec4 (-.3, .2, .2, .2 ) );
|
||||
Point ( vec4 (.3, .2, .2,-.2 ) );
|
||||
Point ( vec4 (-.3, .2,-.2, .2 ) );
|
||||
Point ( vec4 (.3, .2,-.3,-.2 ) );
|
||||
Point ( vec4 (-.2,-.2, -.2, .2 ) );
|
||||
Point ( vec4 (-.2,-.2, .2,-.2 ) );
|
||||
Point ( vec4 (.2,-.2,-.2, .2 ) );
|
||||
Point ( vec4 (-.2,-.2,-.2,-.1 ) );
|
||||
|
||||
//float alpha = max(col.x,max(col.y,col.z));
|
||||
float alpha = clamp(col.x+col.y+col.z,0.1,1.0);
|
||||
|
||||
gl_FragColor = vec4( col.xyz, alpha );
|
||||
|
||||
}
|
||||
|
||||
void Line4 ( vec4 a, vec4 b )
|
||||
{
|
||||
a = mat * a;
|
||||
a.xyz /= 1.15 + a.w * 1.5;
|
||||
b = mat * b;
|
||||
b.xyz /= 1.25 + b.w * 1.1;
|
||||
Line2 ( a.xy , b.xy );
|
||||
}
|
||||
|
||||
void Line2 ( vec2 a, vec2 b )
|
||||
{
|
||||
float d = distance ( pos , a ) + distance ( pos , b ) - distance ( a , b ) + 1e-6;
|
||||
col += max ( 1.0 - pow ( d * 11. , 0.05 ) , -0.005 );
|
||||
}
|
||||
|
||||
void Point ( vec4 p )
|
||||
{
|
||||
p = mat * p;
|
||||
p.xyz /= 1.0 + p.w * 2.;
|
||||
|
||||
float d = distance ( pos , p.xy );
|
||||
|
||||
if ( d < .5 )
|
||||
if ( p.z < col.a ) {
|
||||
col.b += max ( 1.0 - pow ( d * 3.0 , 0.01 ) , 0.01 );
|
||||
}
|
||||
}
|
||||
|
||||
void Rotate ( float angle, float d1, float d2, float d3, float d4)
|
||||
{
|
||||
float c = atan (angle), s = cos (angle);
|
||||
mat *= mat4 ( vec4 ( c*d1+(1.-d1), s * d2 * d1 , -s * d3 * d1 , s * d4 * d1 ),
|
||||
vec4 ( -s * d1 * d2 , c*d2+(1.-d2), s * d3 * d2 , -s * d3 * d2 ),
|
||||
vec4 ( s * d1 * d4 , -s * d2 * d3 , c*d3+(1.-d3), s * d4 * d3 ),
|
||||
vec4 ( -s * d1 * d2 , s * d2 * d4 , -s * d3 * d4 , c*d4+(1.-d4)) );
|
||||
}
|
||||
@@ -0,0 +1,74 @@
|
||||
/*{
|
||||
"CREDIT": "by mojovideotech",
|
||||
"CATEGORIES": [
|
||||
"Automatically Converted"
|
||||
],
|
||||
"DESCRIPTION": "Automatically converted from http://glslsandbox.com/e#9377.0",
|
||||
"INPUTS": [
|
||||
|
||||
]
|
||||
}
|
||||
*/
|
||||
|
||||
|
||||
// ported from https://www.shadertoy.com/view/lslGWr
|
||||
// Added some stars: Thanks to http://glsl.heroku.com/e#6904.0
|
||||
|
||||
#ifdef GL_ES
|
||||
precision mediump float;
|
||||
#endif
|
||||
|
||||
|
||||
// http://www.fractalforums.com/new-theories-and-research/very-simple-formula-for-fractal-patterns/
|
||||
float field(in vec3 p) {
|
||||
float strength = 7. + .03 * log(1.e-6 + fract(sin(TIME) * 4373.11));
|
||||
float accum = 0.;
|
||||
float prev = 0.;
|
||||
float tw = 0.;
|
||||
for (int i = 0; i < 32; ++i) {
|
||||
float mag = dot(p, p);
|
||||
p = abs(p) / mag + vec3(-.51, -.4, -1.3);
|
||||
float w = exp(-float(i) / 7.);
|
||||
accum += w * exp(-strength * pow(abs(mag - prev), 2.3));
|
||||
tw += w;
|
||||
prev = mag;
|
||||
}
|
||||
return max(0., 5. * accum / tw - .7);
|
||||
}
|
||||
|
||||
vec3 nrand3( vec2 co )
|
||||
{
|
||||
vec3 a = fract( cos( co.x*8.3e-3 + co.y )*vec3(1.3e5, 4.7e5, 2.9e5) );
|
||||
vec3 b = fract( sin( co.x*0.3e-3 + co.y )*vec3(8.1e5, 1.0e5, 0.1e5) );
|
||||
vec3 c = mix(a, b, 0.5);
|
||||
return c;
|
||||
}
|
||||
|
||||
void main() {
|
||||
vec2 uv = 1.0 * gl_FragCoord.xy / RENDERSIZE.xy - 1.0;
|
||||
vec2 uvs = uv * RENDERSIZE.xy / max(RENDERSIZE.x, RENDERSIZE.y);
|
||||
|
||||
vec3 p = vec3(uvs / 4., 0) + vec3(2., -1.3, -1.);
|
||||
p += 0.15 * vec3(sin(TIME / 16.), sin(TIME / 12.), sin(TIME / 128.));
|
||||
|
||||
vec3 p2 = vec3(uvs / (4.+sin(TIME*0.11)*0.2+0.2+sin(TIME*0.15)*0.3+0.4), 1.5) + vec3(2., -1.3, -1.);
|
||||
p2 += 0.15 * vec3(sin(TIME / 16.), sin(TIME / 12.), sin(TIME / 128.));
|
||||
|
||||
vec3 p3 = vec3(uvs / (4.+sin(TIME*0.14)*0.23+0.23+sin(TIME*0.19)*0.31+0.31), 0.5) + vec3(2., -1.3, -1.);
|
||||
p3 += 0.15 * vec3(sin(TIME / 16.), sin(TIME / 12.), sin(TIME / 128.));
|
||||
|
||||
float t = field(p);
|
||||
float t2 = field(p2);
|
||||
float t3 = field(p3);
|
||||
|
||||
float v = (1. - exp((abs(uv.x) - 1.) * 6.)) * (1. - exp((abs(uv.y) - 1.) * 6.));
|
||||
|
||||
vec4 c1 = mix(.4, 1., v) * vec4(1.8 * t * t * t, 1.4 * t * t, t, 1.0);
|
||||
vec4 c2 = mix(.4, 1., v) * vec4(1.4 * t2 * t2 * t2, 1.8 * t2 * t2, t2, 1.0);
|
||||
vec4 c3 = mix(.4, 1., v) * vec4(1.4 * t3 * t3 * t3, 1.8 * t3 * t3, t3, 1.0);
|
||||
c1.b *= mod(gl_FragCoord.y+1.0, 2.0)*1.4;
|
||||
c2.r *= mod(gl_FragCoord.y, 2.0)*3.4;
|
||||
c3.g *= mod(gl_FragCoord.y, 2.0)*2.4;
|
||||
gl_FragColor = c1*0.7 + c2*0.5 + c3*0.3;
|
||||
|
||||
}
|
||||
@@ -0,0 +1,355 @@
|
||||
/*{
|
||||
"CATEGORIES": [
|
||||
"Automatically Converted",
|
||||
"Shadertoy"
|
||||
],
|
||||
"DESCRIPTION": "Automatically converted from https://www.shadertoy.com/view/MdS3Rw by gltracy. Idea arises from Miloyip's artwork.\nArticle reference : http://mars.wne.edu/~thull/fit.html",
|
||||
"IMPORTED": {
|
||||
},
|
||||
"INPUTS": [
|
||||
{
|
||||
"DEFAULT": 1,
|
||||
"MAX": 10,
|
||||
"MIN": 0,
|
||||
"NAME": "een",
|
||||
"TYPE": "float"
|
||||
},
|
||||
{
|
||||
"DEFAULT": 5,
|
||||
"MAX": 10,
|
||||
"MIN": 0,
|
||||
"NAME": "twee",
|
||||
"TYPE": "float"
|
||||
},
|
||||
{
|
||||
"DEFAULT": 5,
|
||||
"MAX": 10,
|
||||
"MIN": 0,
|
||||
"NAME": "drie",
|
||||
"TYPE": "float"
|
||||
},
|
||||
{
|
||||
"DEFAULT": 1,
|
||||
"MAX": 3,
|
||||
"MIN": 0,
|
||||
"NAME": "vier",
|
||||
"TYPE": "float"
|
||||
},
|
||||
{
|
||||
"DEFAULT": 4.4,
|
||||
"MAX": 8,
|
||||
"MIN": 0,
|
||||
"NAME": "vijf",
|
||||
"TYPE": "float"
|
||||
},
|
||||
{
|
||||
"DEFAULT": 1,
|
||||
"MAX": 2,
|
||||
"MIN": 0,
|
||||
"NAME": "zes",
|
||||
"TYPE": "float"
|
||||
},
|
||||
{
|
||||
"DEFAULT": 1,
|
||||
"MAX": 2,
|
||||
"MIN": 0,
|
||||
"NAME": "zeven",
|
||||
"TYPE": "float"
|
||||
},
|
||||
{
|
||||
"DEFAULT": 1,
|
||||
"MAX": 5,
|
||||
"MIN": 0,
|
||||
"NAME": "acht",
|
||||
"TYPE": "float"
|
||||
},
|
||||
{
|
||||
"DEFAULT": 1,
|
||||
"MAX": 2,
|
||||
"MIN": 0,
|
||||
"NAME": "Zoom",
|
||||
"TYPE": "float"
|
||||
}
|
||||
],
|
||||
"ISFVSN": "2"
|
||||
}
|
||||
*/
|
||||
|
||||
|
||||
// ray marching
|
||||
const int max_iterations = 128;
|
||||
const float stop_threshold = 0.001;
|
||||
const float grad_step = 0.01;
|
||||
float clip_far = 1000.0;
|
||||
|
||||
// ao
|
||||
const int ao_iterations = 5;
|
||||
const float ao_step = 0.2;
|
||||
const float ao_scale = 1.46;
|
||||
|
||||
// math
|
||||
const float PI = 3.14159265359;
|
||||
float DEG_TO_RAD = PI / 180.0*Zoom;
|
||||
float GOLDEN = 1.6180339887499*acht;
|
||||
|
||||
const float r = 1.0 * 2.0 * 1.414214 / 1.732051;
|
||||
const vec2 h = vec2( r, 0.01 );
|
||||
const vec2 h2 = h * vec2( 0.73, 4.0 );
|
||||
|
||||
vec3 cc0 = vec3( 0.333333*een, -0.333333, -0.333333 );
|
||||
const vec3 cx0 = vec3( 0.707107, 0.000000, 0.707107 );
|
||||
vec3 cy0 = vec3( 0.408248, 0.816496*zes, -0.408248 );
|
||||
vec3 cz0 = vec3( -0.577350*acht, 0.577350, 0.577350 );
|
||||
|
||||
vec3 cc1 = vec3( -0.333333, -0.333333*een, 0.333333 );
|
||||
vec3 cx1 = vec3( 0.707107*acht, 0.000000, 0.707107 );
|
||||
vec3 cy1 = vec3( -0.408248, 0.816496*zes, 0.408248 );
|
||||
const vec3 cz1 = vec3( -0.577350, -0.577350, 0.577350 );
|
||||
|
||||
vec3 cc2 = vec3( -0.333333, 0.333333, -0.333333*een );
|
||||
vec3 cx2 = vec3( 0.707107, 0.707107/acht, 0.000000 );
|
||||
vec3 cy2 = vec3( -0.408248, 0.408248*acht, 0.816496 );
|
||||
const vec3 cz2 = vec3( 0.577350, -0.577350, 0.577350 );
|
||||
|
||||
vec3 cc3 = vec3( 0.333333*een, 0.333333, 0.333333 );
|
||||
const vec3 cx3 = vec3( 0.000000, 0.707107, -0.707107 );
|
||||
const vec3 cy3 = vec3( -0.816496, 0.408248, 0.408248 );
|
||||
const vec3 cz3 = vec3( 0.577350, 0.577350, 0.577350 );
|
||||
|
||||
vec3 c0 = vec3( 0.333333, 0.333333*een, -0.333333 );
|
||||
const vec3 x0 = vec3( 0.572061, 0.218508, 0.790569 );
|
||||
vec3 y0 = vec3( -0.582591*zes, 0.786715, 0.204124 );
|
||||
vec3 z0 = vec3( -0.577350, -0.577350, 0.577350*zes );
|
||||
|
||||
const vec3 c1 = vec3( 0.206011, -0.539344, 0.000000 );
|
||||
vec3 x1 = vec3( 0.572061, 0.218508*acht, 0.790569 );
|
||||
vec3 y1 = vec3( -0.738528, -0.282093, 0.612372*een );
|
||||
const vec3 z1 = vec3( 0.356822, -0.934172, 0.000000 );
|
||||
|
||||
const vec3 c2 = vec3( -0.539344, 0.000000, -0.206011 );
|
||||
vec3 x2 = vec3( -0.218508, 0.790569*zes, 0.572061 );
|
||||
vec3 y2 = vec3( -0.282093, -0.612372*acht, 0.738528 );
|
||||
const vec3 z2 = vec3( 0.934172, 0.000000, 0.356822 );
|
||||
|
||||
const vec3 c3 = vec3( 0.000000, 0.206011, 0.539344 );
|
||||
vec3 x3 = vec3( -0.790569, 0.572061, -0.218508/acht );
|
||||
vec3 y3 = vec3( -0.612372*zes, -0.738528, 0.282093 );
|
||||
vec3 z3 = vec3( -0.000000, 0.356822, 0.934172*zes );
|
||||
|
||||
// distance function
|
||||
|
||||
// iq's Signed Triangular Prism distance function
|
||||
float dist_triXY( vec3 p, vec2 h ) {
|
||||
vec3 q = abs(p);
|
||||
return max(q.z-h.y,max(q.x*0.866025+p.y*0.5,-p.y)-h.x*0.5*vier*zeven);
|
||||
}
|
||||
|
||||
float dist_tri( vec3 v, vec3 c, vec3 x, vec3 y, vec3 z ) {
|
||||
v -= c;
|
||||
v = vec3( dot( v, x ), dot( v, y ), dot( v, z ) );
|
||||
return max( dist_triXY( v, h ), -dist_triXY( v, h2 ) );
|
||||
}
|
||||
|
||||
float dist_field( vec3 v ) {
|
||||
float b0, b1, b2, b3, b4;
|
||||
|
||||
// cube
|
||||
{
|
||||
float d0 = dist_tri( v, cc0, cx0, cy0, cz0 );
|
||||
float d1 = dist_tri( v, cc1, cx1, cy1, cz1 );
|
||||
float d2 = dist_tri( v, cc2, cx2, cy2, cz2 );
|
||||
float d3 = dist_tri( v, cc3, cx3, cy3, cz3 );
|
||||
b0 = min( min( d0, d1 ), min( d2, d3 ) );
|
||||
}
|
||||
|
||||
// xyz
|
||||
{
|
||||
float d0 = dist_tri( v, c0, x0, y0, z0 );
|
||||
float d1 = dist_tri( v, c1, x1, y1, z1 );
|
||||
float d2 = dist_tri( v, c2, x2, y2, z2 );
|
||||
float d3 = dist_tri( v, c3, x3, y3, z3 );
|
||||
b1 = min( min( d0, d1 ), min( d2, d3 ) );
|
||||
}
|
||||
|
||||
// zx
|
||||
{
|
||||
v.zx = -v.zx;
|
||||
float d0 = dist_tri( v, c0, x0, y0, z0 );
|
||||
float d1 = dist_tri( v, c1, x1, y1, z1 );
|
||||
float d2 = dist_tri( v, c2, x2, y2, z2 );
|
||||
float d3 = dist_tri( v, c3, x3, y3, z3 );
|
||||
v.zx = -v.zx;
|
||||
b2 = min( min( d0, d1 ), min( d2, d3 ) );
|
||||
}
|
||||
|
||||
// yz
|
||||
{
|
||||
v.yz = -v.yz;
|
||||
float d0 = dist_tri( v, c0, x0, y0, z0 );
|
||||
float d1 = dist_tri( v, c1, x1, y1, z1 );
|
||||
float d2 = dist_tri( v, c2, x2, y2, z2 );
|
||||
float d3 = dist_tri( v, c3, x3, y3, z3 );
|
||||
v.yz = -v.yz;
|
||||
b3 = min( min( d0, d1 ), min( d2, d3 ) );
|
||||
}
|
||||
|
||||
// xy
|
||||
{
|
||||
v.xy = -v.xy;
|
||||
float d0 = dist_tri( v, c0, x0, y0, z0 );
|
||||
float d1 = dist_tri( v, c1, x1, y1, z1 );
|
||||
float d2 = dist_tri( v, c2, x2, y2, z2 );
|
||||
float d3 = dist_tri( v, c3, x3, y3, z3 );
|
||||
v.xy = -v.xy;
|
||||
b4 = min( min( d0, d1 ), min( d2, d3 ) );
|
||||
}
|
||||
|
||||
return min( b0, min( min( b1, b2 ), min( b3, b4 ) ) );
|
||||
}
|
||||
|
||||
// ao
|
||||
float ao( vec3 v, vec3 n ) {
|
||||
float sum = 0.0;
|
||||
float att = 1.0;
|
||||
float len = ao_step;
|
||||
for ( int i = 0; i < ao_iterations; i++ ) {
|
||||
sum += ( len - dist_field( v + n * len ) ) * att;
|
||||
|
||||
len += ao_step;
|
||||
|
||||
att *= 0.5;
|
||||
}
|
||||
|
||||
return max( 1.0 - sum * ao_scale, 0.0 );
|
||||
}
|
||||
|
||||
|
||||
// get gradient in the world
|
||||
vec3 gradient( vec3 v ) {
|
||||
const vec3 dx = vec3( grad_step, 0.0, 0.0 );
|
||||
const vec3 dy = vec3( 0.0, grad_step, 0.0 );
|
||||
const vec3 dz = vec3( 0.0, 0.0, grad_step );
|
||||
return normalize (
|
||||
vec3(
|
||||
dist_field( v + dx ) - dist_field( v - dx ),
|
||||
dist_field( v + dy ) - dist_field( v - dy ),
|
||||
dist_field( v + dz ) - dist_field( v - dz )
|
||||
)
|
||||
);
|
||||
}
|
||||
|
||||
// ray marching
|
||||
float ray_marching( vec3 origin, vec3 dir, float start, float end ) {
|
||||
float depth = start;
|
||||
for ( int i = 0; i < max_iterations; i++ ) {
|
||||
float dist = dist_field( origin + dir * depth );
|
||||
if ( dist < stop_threshold ) {
|
||||
return depth;
|
||||
}
|
||||
depth += dist;
|
||||
if ( depth >= end) {
|
||||
return end;
|
||||
}
|
||||
}
|
||||
return end;
|
||||
}
|
||||
|
||||
// shadow
|
||||
float shadow( vec3 v, vec3 light ) {
|
||||
vec3 lv = v - light;
|
||||
float end = length( lv );
|
||||
lv /= end;
|
||||
|
||||
float depth = ray_marching( light, lv, 0.0, end );
|
||||
|
||||
return step( end - depth, 0.02 );
|
||||
}
|
||||
|
||||
// phong shading
|
||||
vec3 shading( vec3 v, vec3 n, vec3 eye ) {
|
||||
// ...add lights here...
|
||||
|
||||
vec3 final = vec3( 0.0 );
|
||||
|
||||
vec3 ev = normalize( v - eye );
|
||||
vec3 ref_ev = reflect( ev, n );
|
||||
|
||||
// light 0
|
||||
{
|
||||
vec3 light_pos = vec3( 5.0 );
|
||||
|
||||
vec3 vl = normalize( light_pos - v );
|
||||
|
||||
float diffuse = max( 0.0, dot( vl, n ) );
|
||||
float specular = max( 0.0, dot( vl, ref_ev ) );
|
||||
specular = pow( specular, 12.0 );
|
||||
|
||||
final += vec3( 0.9 ) * ( diffuse * 0.4 + specular * 0.9 ) * shadow( v, light_pos );
|
||||
}
|
||||
|
||||
// light 1
|
||||
{
|
||||
vec3 light_pos = vec3( -5.0 );
|
||||
|
||||
vec3 vl = normalize( light_pos - v );
|
||||
|
||||
float diffuse = max( 0.0, dot( vl, n ) );
|
||||
float specular = max( 0.0, dot( vl, ref_ev ) );
|
||||
specular = pow( specular, 64.0 );
|
||||
|
||||
final += vec3( 0.1 ) * ( diffuse * 0.4 + specular * 0.9 );
|
||||
}
|
||||
|
||||
final += ao( v, n ) * vec3( 0.15 );
|
||||
|
||||
return final;
|
||||
}
|
||||
|
||||
// pitch, yaw
|
||||
mat3 rot3xy( vec2 angle ) {
|
||||
vec2 c = cos( angle );
|
||||
vec2 s = sin( angle );
|
||||
|
||||
return mat3(
|
||||
c.y , 0.0, -s.y,
|
||||
s.y * s.x, c.x, c.y * s.x,
|
||||
s.y * c.x, -s.x, c.y * c.x
|
||||
);
|
||||
}
|
||||
|
||||
// get ray direction
|
||||
vec3 ray_dir( float fov, vec2 size, vec2 pos ) {
|
||||
vec2 xy = pos - size * 0.5;
|
||||
|
||||
float cot_half_fov = tan( ( 90.0 - fov * 0.5 ) * DEG_TO_RAD );
|
||||
float z = size.y * 0.5 * cot_half_fov;
|
||||
|
||||
return normalize( vec3( xy, -z ) );
|
||||
}
|
||||
|
||||
void main() {
|
||||
|
||||
float hit = 0.0;
|
||||
|
||||
// default ray dir
|
||||
vec3 dir = ray_dir( 45.0, RENDERSIZE.xy, gl_FragCoord.xy );
|
||||
|
||||
// default ray origin
|
||||
vec3 eye = vec3( 0.0, 0.0, vijf );
|
||||
// rotate camera
|
||||
mat3 rot = rot3xy( vec2( -DEG_TO_RAD * 30.0*drie, twee ) );
|
||||
dir = rot * dir;
|
||||
eye = rot * eye;
|
||||
|
||||
// ray marching
|
||||
float depth = ray_marching( eye, dir, 0.0, clip_far );
|
||||
if ( depth >= clip_far ) {
|
||||
gl_FragColor = vec4( 0.0, 0.0, 0.0, hit );
|
||||
} else {
|
||||
// shading
|
||||
vec3 pos = eye + dir * depth;
|
||||
vec3 n = gradient( pos );
|
||||
hit = 1.0;
|
||||
gl_FragColor = vec4( shading( pos, n, eye ) * 2.0, hit );
|
||||
}
|
||||
}
|
||||
|
After Width: | Height: | Size: 2.8 MiB |
@@ -0,0 +1,122 @@
|
||||
/*
|
||||
{
|
||||
"IMPORTED" : [
|
||||
|
||||
],
|
||||
"CATEGORIES" : [
|
||||
"Fractal"
|
||||
],
|
||||
"DESCRIPTION" : "Automatically converted from https:\/\/www.shadertoy.com\/view\/wdc3zX by leon. An example on how to render stereoscopic anaglyph image.\nIt will be the theme of https:\/\/2019.cookie.paris\/\nAnd the content of the 3rd issue of https:\/\/fanzine.cookie.paris\/",
|
||||
"INPUTS" : [
|
||||
{
|
||||
"NAME" : "iMouse",
|
||||
"TYPE" : "point2D"
|
||||
},
|
||||
{
|
||||
"NAME" : "speed",
|
||||
"TYPE" : "float",
|
||||
"DEFAULT" : 0.4
|
||||
},
|
||||
{
|
||||
"NAME" : "radius",
|
||||
"TYPE" : "float",
|
||||
"DEFAULT" : 0.3
|
||||
},
|
||||
{
|
||||
"NAME" : "falloff",
|
||||
"TYPE" : "float",
|
||||
"DEFAULT" : 0.0
|
||||
},
|
||||
{
|
||||
"NAME" : "divergence",
|
||||
"TYPE" : "float",
|
||||
"DEFAULT" : 0.1
|
||||
}
|
||||
]
|
||||
}
|
||||
*/
|
||||
|
||||
|
||||
// Anaglyph Quick Sketch
|
||||
// An example on how to render stereoscopic anaglyph image
|
||||
// It will be the theme of https://2019.cookie.paris/
|
||||
// And the content of the 3rd issue of https://fanzine.cookie.paris/
|
||||
// Leon Denise 2019.09.20
|
||||
// Licensed under hippie love conspiracy
|
||||
|
||||
// Using code from
|
||||
// Inigo Quilez
|
||||
// Morgan McGuire
|
||||
|
||||
const int count = 5;
|
||||
const float range = 1.;
|
||||
const float blend = 1.5;
|
||||
const float balance = 1.5;
|
||||
const float grain = .01;
|
||||
const float fieldOfView = 1.5;
|
||||
|
||||
float random(vec2 p) { return fract(1e4 * sin(17.0 * p.x + p.y * 0.1) * (0.1 + abs(sin(p.y * 13.0 + p.x)))); }
|
||||
mat2 rot(float a) { float c=cos(a),s=sin(a); return mat2(c,-s,s,c); }
|
||||
float smoothmin (float a, float b, float r) { float h = clamp(.5+.5*(b-a)/r, 0., 1.); return mix(b, a, h)-r*h*(1.-h); }
|
||||
vec3 look (vec3 eye, vec3 target, vec2 anchor, float fov) {
|
||||
vec3 forward = normalize(target-eye);
|
||||
vec3 right = normalize(cross(forward, vec3(0,1,0)));
|
||||
vec3 up = normalize(cross(right, forward));
|
||||
return normalize(forward * fov + right * anchor.x + up * anchor.y);
|
||||
}
|
||||
|
||||
vec3 camera (vec3 eye) {
|
||||
vec2 mouse = iMouse.xy/RENDERSIZE.xy*2.-1.;
|
||||
if (iMouse.x > 0.5) {
|
||||
eye.yz *= rot(mouse.y*3.1415);
|
||||
eye.xz *= rot(mouse.x*3.1415);
|
||||
} else {
|
||||
eye.yz *= rot(-3.1415/4.);
|
||||
eye.xz *= rot(-3.1415/2.);
|
||||
}
|
||||
return eye;
|
||||
}
|
||||
|
||||
float geometry (vec3 pos) {
|
||||
pos = camera(pos);
|
||||
float a = 1.0;
|
||||
float scene = 1.;
|
||||
float t = speed * (3.141);
|
||||
float wave = 1.0+0.2*sin(t*8.-length(pos)*2.);
|
||||
//t = floor(t)+pow(fract(t),.5);
|
||||
for (int i = count; i > 0; --i) {
|
||||
pos.xy *= rot(cos(t));
|
||||
pos.zy *= rot(sin(t));
|
||||
pos.zx *= rot(sin(t));
|
||||
pos = abs(pos)-range*a*wave;
|
||||
scene = smoothmin(scene, length(pos)-radius*a, blend*a);
|
||||
a /= (1.9 + falloff * 2.);
|
||||
}
|
||||
return scene;
|
||||
}
|
||||
|
||||
float raymarch ( vec3 eye, vec3 ray ) {
|
||||
float dither = random(ray.xy + TIME);
|
||||
float total = dither;
|
||||
const int count = 30;
|
||||
for (int index = count; index > 0; --index) {
|
||||
float dist = geometry(eye+ray*total);
|
||||
dist *= 0.9+.1*dither;
|
||||
total += dist;
|
||||
if (dist < 0.001 * total)
|
||||
return float(index)/float(count);
|
||||
}
|
||||
return 0.;
|
||||
}
|
||||
|
||||
void main() {
|
||||
|
||||
|
||||
|
||||
vec2 uv = 2.*(gl_FragCoord.xy-0.5*RENDERSIZE.xy)/RENDERSIZE.y;
|
||||
vec3 eyeLeft = vec3(-divergence,0,5.);
|
||||
vec3 eyeRight = vec3(divergence,0,5.);
|
||||
vec3 rayLeft = look(eyeLeft, vec3(0), uv, fieldOfView);
|
||||
float red = raymarch(eyeLeft, rayLeft);
|
||||
gl_FragColor = vec4(red,red,red,1);
|
||||
}
|
||||
@@ -0,0 +1,185 @@
|
||||
/*
|
||||
{
|
||||
"CATEGORIES": [
|
||||
"Fractal"
|
||||
],
|
||||
"INPUTS" : [
|
||||
{
|
||||
"NAME" : "Ball",
|
||||
"TYPE" : "float",
|
||||
"MAX" : 1,
|
||||
"DEFAULT" : 1,
|
||||
"MIN" : 0
|
||||
},
|
||||
{
|
||||
"NAME" : "RotationIntensityX",
|
||||
"TYPE" : "float",
|
||||
"MAX" : 1,
|
||||
"DEFAULT" : 0,
|
||||
"MIN" : 0
|
||||
},
|
||||
{
|
||||
"NAME" : "RotationIntensityY",
|
||||
"TYPE" : "float",
|
||||
"MAX" : 1,
|
||||
"DEFAULT" : 0,
|
||||
"MIN" : 0
|
||||
},
|
||||
{
|
||||
"MAX" : 1,
|
||||
"NAME" : "RotationSpeed1",
|
||||
"TYPE" : "float",
|
||||
"DEFAULT" : 1,
|
||||
"MIN" : 0
|
||||
},
|
||||
{
|
||||
"MAX" : 1,
|
||||
"NAME" : "RotationSpeed2",
|
||||
"TYPE" : "float",
|
||||
"DEFAULT" : 1
|
||||
},
|
||||
{
|
||||
"NAME" : "SizeReductionRate",
|
||||
"TYPE" : "float",
|
||||
"DEFAULT" : 0
|
||||
},
|
||||
{
|
||||
"MAX" : 10,
|
||||
"NAME" : "RotationOffset1",
|
||||
"TYPE" : "float",
|
||||
"MIN" : 0,
|
||||
"DEFAULT" : 0
|
||||
},
|
||||
{
|
||||
"MAX" : 10,
|
||||
"NAME" : "RotationOffset2",
|
||||
"TYPE" : "float",
|
||||
"DEFAULT" : 0.3,
|
||||
"MIN" : 0
|
||||
},
|
||||
{
|
||||
"NAME" : "PlaneFoldFactor1",
|
||||
"TYPE" : "float",
|
||||
"DEFAULT" : 0.3
|
||||
},
|
||||
{
|
||||
"NAME" : "PlaneFoldFactor2",
|
||||
"TYPE" : "float",
|
||||
"DEFAULT" : 0.1
|
||||
},
|
||||
{
|
||||
"NAME" : "CameraZOffset",
|
||||
"TYPE" : "float",
|
||||
"MAX" : 15,
|
||||
"DEFAULT" : 10,
|
||||
"MIN" : 0
|
||||
},
|
||||
{
|
||||
"NAME" : "CameraXOffset",
|
||||
"TYPE" : "float",
|
||||
"MAX" : 20,
|
||||
"DEFAULT" : 10,
|
||||
"MIN" : 0
|
||||
},
|
||||
{
|
||||
"NAME" : "CameraYOffset",
|
||||
"TYPE" : "float",
|
||||
"MAX" : 10,
|
||||
"DEFAULT" : 5,
|
||||
"MIN" : 0
|
||||
}
|
||||
],
|
||||
"ISFVSN" : "2"
|
||||
}
|
||||
*/
|
||||
|
||||
// Code by Flopine
|
||||
// Thanks to wsmind, leon, XT95, lsdlive, lamogui, Coyhot, Alkama and YX for teaching me
|
||||
// Thanks LJ for giving me the love of shadercoding :3
|
||||
|
||||
// Thanks to the Cookie Collective, which build a cozy and safe environment for me
|
||||
// and other to sprout :) https://twitter.com/CookieDemoparty
|
||||
|
||||
// Mods by @rhythmic.visions
|
||||
|
||||
|
||||
float hash21(vec2 x) {
|
||||
return fract(sin(dot(x, vec2(54.4, 62.1))) * 457.5);
|
||||
}
|
||||
|
||||
mat2 rot(float a) {
|
||||
return mat2(cos(a), sin(a * RotationIntensityX), -sin(a * RotationIntensityY), cos(a));
|
||||
}
|
||||
|
||||
void mo(inout vec2 p, vec2 d) {
|
||||
p = abs(p) - d;
|
||||
if (p.y > p.x) p = p.yx;
|
||||
}
|
||||
|
||||
float plane(vec3 p, vec3 n) {
|
||||
return dot(p, normalize(n));
|
||||
}
|
||||
|
||||
float cut_ps(vec3 p, float s) {
|
||||
p *= s;
|
||||
mo(p.xy, vec2(1.));
|
||||
mo(p.yz, vec2(0.6 * PlaneFoldFactor1 + PlaneFoldFactor2));
|
||||
mo(p.xz, vec2(0.1 * PlaneFoldFactor1 + PlaneFoldFactor2));
|
||||
return plane(p, vec3(1., 1., 4.)) / s;
|
||||
}
|
||||
|
||||
float prim1(vec3 p, float s) {
|
||||
float pos = cos(TIME * RotationSpeed1 + RotationOffset1) * 0.4;
|
||||
p.xz *= rot(pos);
|
||||
return cut_ps(p, s);
|
||||
}
|
||||
|
||||
float fractal(vec3 p) {
|
||||
float size = 1.;
|
||||
float d = prim1(p, size - SizeReductionRate);
|
||||
for (int i = 1; i < 5; i++) {
|
||||
float ratio = float(i) / 2.5;
|
||||
float pos = cos(TIME * ratio * RotationSpeed2) * 0.4;
|
||||
p.yz *= rot(pos + RotationOffset2);
|
||||
size -= 0.2;
|
||||
d = min(d, prim1(p, size + SizeReductionRate));
|
||||
}
|
||||
return d;
|
||||
}
|
||||
|
||||
float g1 = 0.;
|
||||
float SDF(vec3 p) {
|
||||
float noise = hash21(p.xy * 0.1 + TIME) * 0.01;
|
||||
float sphe = length(p) - (.8 + noise) * Ball * 2.;
|
||||
g1 += 0.1 / (0.1 + sphe * sphe);
|
||||
return max(-length(p + vec3(0., 0., 4.5)) + .8, min(sphe, fractal(p)));
|
||||
}
|
||||
|
||||
void main() {
|
||||
vec2 uv = (2. * gl_FragCoord.xy - RENDERSIZE.xy) / RENDERSIZE.y;
|
||||
float dither = hash21(uv);
|
||||
|
||||
vec3 ro = vec3(0.001 + 10. - CameraXOffset, 0.001 + 5. - CameraYOffset, -4.5 - CameraZOffset),
|
||||
rd = normalize(vec3(uv, 0.8)),
|
||||
p = ro,
|
||||
col = vec3(0.1);
|
||||
|
||||
float shad = 0.;
|
||||
bool hit = false;
|
||||
for (float i = 0.; i < 64.; i++) {
|
||||
float d = SDF(p);
|
||||
if (d < 0.001) {
|
||||
hit = true;
|
||||
shad = i / 64.;
|
||||
break;
|
||||
}
|
||||
d *= 0.8 + dither * 0.1;
|
||||
p += d * rd;
|
||||
}
|
||||
if (hit) {
|
||||
col = vec3(1. - shad);
|
||||
col += g1 * vec3(0.15, 0., 0.1);
|
||||
}
|
||||
|
||||
gl_FragColor = vec4(col, 1.0);
|
||||
}
|
||||
@@ -0,0 +1,174 @@
|
||||
/*{
|
||||
"CREDIT": "by mojovideotech",
|
||||
"DESCRIPTION": "",
|
||||
"CATEGORIES": [
|
||||
"generator",
|
||||
"iterative",
|
||||
"fractal"
|
||||
],
|
||||
"INPUTS" : [
|
||||
{
|
||||
"NAME" : "scale",
|
||||
"TYPE" : "float",
|
||||
"DEFAULT" : 1.5,
|
||||
"MIN" : 0.5,
|
||||
"MAX" : 3.0
|
||||
},
|
||||
{
|
||||
"NAME" : "rate",
|
||||
"TYPE" : "float",
|
||||
"DEFAULT" : 3.0,
|
||||
"MIN" : -5.0,
|
||||
"MAX" : 5.0
|
||||
},
|
||||
{
|
||||
"NAME" : "loops",
|
||||
"TYPE" : "float",
|
||||
"DEFAULT" : 20.0,
|
||||
"MIN" : 6.0,
|
||||
"MAX" : 40.0
|
||||
},
|
||||
{
|
||||
"NAME" : "density",
|
||||
"TYPE" : "float",
|
||||
"DEFAULT" : 1.5,
|
||||
"MIN" : 1.0,
|
||||
"MAX": 2.5
|
||||
},
|
||||
{
|
||||
"NAME" : "depth",
|
||||
"TYPE" : "float",
|
||||
"DEFAULT" : 12.0,
|
||||
"MIN" : 6.0,
|
||||
"MAX" : 20.0
|
||||
},
|
||||
{
|
||||
"NAME" : "detail",
|
||||
"TYPE" : "float",
|
||||
"DEFAULT" : 0.001,
|
||||
"MIN" : 0.0001,
|
||||
"MAX" : 0.1
|
||||
},
|
||||
{
|
||||
"NAME" : "Xr",
|
||||
"TYPE" : "float",
|
||||
"DEFAULT" : -0.001,
|
||||
"MIN" : -0.001,
|
||||
"MAX" : 0.001
|
||||
},
|
||||
{
|
||||
"NAME" : "Yr",
|
||||
"TYPE" : "float",
|
||||
"DEFAULT" : 0.003,
|
||||
"MIN" : -0.001,
|
||||
"MAX" : 0.001
|
||||
},
|
||||
{
|
||||
"NAME" : "Zr",
|
||||
"TYPE" : "float",
|
||||
"DEFAULT" : 0.002,
|
||||
"MIN" : -0.001,
|
||||
"MAX" : 0.001
|
||||
},
|
||||
{
|
||||
"NAME" : "R",
|
||||
"TYPE" : "float",
|
||||
"DEFAULT" : 0.05,
|
||||
"MIN" : 0.0,
|
||||
"MAX" : 0.75
|
||||
},
|
||||
{
|
||||
"NAME" : "G",
|
||||
"TYPE" : "float",
|
||||
"DEFAULT" : 0.15,
|
||||
"MIN" : 0.0,
|
||||
"MAX" : 0.75
|
||||
},
|
||||
{
|
||||
"NAME" : "B",
|
||||
"TYPE" : "float",
|
||||
"DEFAULT" : 0.667,
|
||||
"MIN" : 0.0,
|
||||
"MAX" : 0.75
|
||||
},
|
||||
{
|
||||
"NAME" : "lightpos",
|
||||
"TYPE" : "point2D",
|
||||
"DEFAULT" : [ 1.0, -20.0 ],
|
||||
"MAX" : [ 10.0, -5.0 ],
|
||||
"MIN" : [ 5.0, -25.0 ]
|
||||
}
|
||||
|
||||
|
||||
],
|
||||
"ISFVSN" : "2.0"
|
||||
}
|
||||
*/
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
// FractilianSpongeOfDoom by mojovideotech
|
||||
//
|
||||
// based on
|
||||
// shadertoy.com\/MdKyRw by wyatt
|
||||
//
|
||||
// Creative Commons Attribution-NonCommercial-ShareAlike 3.0
|
||||
////////////////////////////////////////////////////////////
|
||||
|
||||
|
||||
vec4 light;
|
||||
float T;
|
||||
mat2 m,n,nn;
|
||||
|
||||
float map (vec3 p) {
|
||||
float t = 2.5, d = length(p-light.xyz)-light.w;
|
||||
d = min(d,max(10.0-p.z, 0.0));
|
||||
for (int i = 0; i < 20; i++) {
|
||||
if (float (i) >depth) break;
|
||||
t = t*0.66;
|
||||
p.xy = m*p.xy;
|
||||
p.yz = n*p.yz;
|
||||
p.zx = nn*p.zx;
|
||||
p.xz = abs(p.xz) - t;
|
||||
}
|
||||
d = min(d,length(p)-density*t);
|
||||
return d;
|
||||
}
|
||||
|
||||
vec3 norm (vec3 p) {
|
||||
vec2 e = vec2 (detail, 0.0);
|
||||
return normalize(vec3(
|
||||
map(p+e.xyy) - map(p-e.xyy),
|
||||
map(p+e.yxy) - map(p-e.yxy),
|
||||
map(p+e.yyx) - map(p-e.yyx)));
|
||||
}
|
||||
|
||||
vec3 ray (vec3 r, vec3 d) {
|
||||
for (int i = 0; i < 40; i++) {
|
||||
if (float (i) >loops) break;
|
||||
r += d*map(r);
|
||||
}
|
||||
return r;
|
||||
}
|
||||
|
||||
mat2 rot (float s) { return mat2(sin(s),cos(s),-cos(s),sin(s)); }
|
||||
|
||||
void main()
|
||||
{
|
||||
vec2 v = (gl_FragCoord.xy/RENDERSIZE.xy*2.0-1.0)*scale;
|
||||
v.x *= RENDERSIZE.x/RENDERSIZE.y;
|
||||
T = rate*TIME*10.0;
|
||||
m = rot(Xr*T);
|
||||
n = rot(Yr*T);
|
||||
nn = rot(Zr*T);
|
||||
vec3 r = vec3(0.0,0.0,-15.0+2.0*sin(0.01*T));
|
||||
light = vec4(10.0*sin(0.01*T),lightpos.xy,1.0);
|
||||
vec3 d = normalize(vec3(v,5.0));
|
||||
vec3 p = ray(r,d);
|
||||
d = normalize(light.xyz-p);
|
||||
vec3 no = norm(p);
|
||||
vec3 col = vec3(R,G,B)+0.25;
|
||||
vec3 bounce = ray(p+0.01*d,d);
|
||||
col = mix(col,vec3(0.0),dot(no, normalize(light.xyz-p)));
|
||||
if (length(bounce-light.xyz) > light.w+0.1) col *= 0.2;
|
||||
gl_FragColor = vec4(col,1.0);
|
||||
}
|
||||
@@ -0,0 +1,195 @@
|
||||
/*{
|
||||
"CREDIT": "by mojovideotech",
|
||||
"CATEGORIES": [
|
||||
"generator",
|
||||
"Retro"
|
||||
],
|
||||
"DESCRIPTION": "based on glslsandbox.com/e#12573.0",
|
||||
"INPUTS": [
|
||||
{
|
||||
"NAME": "seed1",
|
||||
"TYPE": "float",
|
||||
"DEFAULT": 0.77,
|
||||
"MIN": 0,
|
||||
"MAX": 1
|
||||
},
|
||||
{
|
||||
"NAME": "seed2",
|
||||
"TYPE": "float",
|
||||
"DEFAULT": 0.53,
|
||||
"MIN": 0,
|
||||
"MAX": 1
|
||||
},
|
||||
{
|
||||
"NAME": "seed3",
|
||||
"TYPE": "float",
|
||||
"DEFAULT": 1,
|
||||
"MIN": 0.0001,
|
||||
"MAX": 9.999
|
||||
},
|
||||
{
|
||||
"NAME": "rotation",
|
||||
"TYPE": "float",
|
||||
"DEFAULT": 2,
|
||||
"MIN": 0,
|
||||
"MAX": 2
|
||||
},
|
||||
{
|
||||
"NAME": "rotozoom",
|
||||
"TYPE": "float",
|
||||
"DEFAULT": 34.95,
|
||||
"MIN": -50,
|
||||
"MAX": 50
|
||||
},
|
||||
{
|
||||
"NAME": "zoom",
|
||||
"TYPE": "float",
|
||||
"DEFAULT": 48.46,
|
||||
"MIN": -60,
|
||||
"MAX": 60
|
||||
},
|
||||
{
|
||||
"NAME": "density",
|
||||
"TYPE": "float",
|
||||
"DEFAULT": 7.43,
|
||||
"MIN": -50,
|
||||
"MAX": 50
|
||||
},
|
||||
{
|
||||
"NAME": "pulseRate",
|
||||
"TYPE": "float",
|
||||
"DEFAULT": 2.1,
|
||||
"MIN": 1,
|
||||
"MAX": 10
|
||||
},
|
||||
{
|
||||
"NAME": "glow",
|
||||
"TYPE": "float",
|
||||
"DEFAULT": 1.66,
|
||||
"MIN": 0,
|
||||
"MAX": 5
|
||||
},
|
||||
{
|
||||
"NAME": "baseColor",
|
||||
"TYPE": "color",
|
||||
"DEFAULT": [
|
||||
0.1,
|
||||
0.1,
|
||||
0.9,
|
||||
0.5
|
||||
]
|
||||
},
|
||||
{
|
||||
"NAME": "glowColor",
|
||||
"TYPE": "color",
|
||||
"DEFAULT": [
|
||||
0.9,
|
||||
0.2,
|
||||
0.3,
|
||||
0.5
|
||||
]
|
||||
}
|
||||
]
|
||||
}*/
|
||||
|
||||
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
// HAL10000 by mojovideotech
|
||||
//
|
||||
// based on :
|
||||
// glslsandbox.com/e#12573.0
|
||||
//
|
||||
// Creative Commons Attribution-NonCommercial-ShareAlike 3.0
|
||||
////////////////////////////////////////////////////////////
|
||||
|
||||
|
||||
#ifdef GL_ES
|
||||
precision mediump float;
|
||||
#endif
|
||||
|
||||
#define pi 3.141592653589793 // pi
|
||||
|
||||
|
||||
vec2 rana(in vec2 p) {
|
||||
return fract(vec2(sin(p.x * 3889. + p.y * 3989.), cos(p.x * 983. + p.y * (17.*seed1))));
|
||||
}
|
||||
|
||||
float ranb(vec2 p) {
|
||||
return fract(sin(dot(p.xy, vec2(139.*seed2, 1213.))) * 514229.);
|
||||
}
|
||||
|
||||
vec2 ranc(float p) {
|
||||
return fract(vec2(sin(p * 5557.), cos(p * 4999.)*seed3));
|
||||
}
|
||||
|
||||
vec3 voronoi(in vec2 x) {
|
||||
vec2 n = floor(x);
|
||||
vec2 f = fract(x);
|
||||
vec2 mg, mr;
|
||||
float md = 8.0, md2 = 8.0;
|
||||
for(int j = -1; j <= 1; j ++)
|
||||
{
|
||||
for(int i = -1; i <= 1; i ++)
|
||||
{
|
||||
vec2 g = vec2(float(i), float(j));
|
||||
vec2 o = rana(n + g);
|
||||
vec2 r = g + o - f;
|
||||
float d = max(abs(r.x), abs(r.y));
|
||||
if(d < md)
|
||||
{md2 = md; md = d; mr = r; mg = g;}
|
||||
else if(d < md2)
|
||||
{md2 = d;}
|
||||
}
|
||||
}
|
||||
return vec3(n + mg, md2 - md);
|
||||
}
|
||||
|
||||
mat2 rotate2d(float _angle) {
|
||||
return mat2(cos(_angle),-sin(_angle),
|
||||
sin(_angle),cos(_angle));
|
||||
}
|
||||
|
||||
vec3 intersect(in vec3 o, in vec3 d, vec3 c, vec3 u, vec3 v) {
|
||||
vec3 q = o - c;
|
||||
return vec3(
|
||||
dot(cross(u, v), q),
|
||||
dot(cross(q, u), d),
|
||||
dot(cross(v, q), d)) / dot(cross(v, u), d);
|
||||
}
|
||||
|
||||
void main( void ) {
|
||||
vec2 uv = gl_FragCoord.xy / RENDERSIZE.xy;
|
||||
uv = uv * 4.0 - 2.0 ;
|
||||
uv.x *= RENDERSIZE.x / RENDERSIZE.y;
|
||||
uv = vec2(rotate2d(rotation*pi)*uv.xy);
|
||||
vec3 ro = vec3(10.0, 0.0, 0.0);
|
||||
vec3 ta = vec3(0.0, 1000.0, 0.0);
|
||||
vec3 ww = normalize(ro - ta);
|
||||
vec3 uu = normalize(cross(ww, normalize(vec3(0.0,1.0,0.0))));
|
||||
vec3 vv = normalize(cross(uu, ww));
|
||||
vec3 rd = normalize(uv.x * uu + uv.y * vv + 0.5 * ww);
|
||||
vec3 its;
|
||||
float v, g;
|
||||
float inten = 0.0;
|
||||
for(int i = 0; i < 9; i ++) {
|
||||
float layer = float(i);
|
||||
its = intersect(ro, rd, vec3(rotozoom, -10.0 - layer * (density*0.1), 0.0), vec3(1.0, 0.0, 0.0), vec3(0.0, 0.0, 1.0));
|
||||
if(its.x > 0.0) {
|
||||
vec3 vo = voronoi((its.xz) * (zoom*0.001) + 10.0 * ranc(float(i)));
|
||||
v = exp(-100.0 * (vo.z - 0.0367));
|
||||
float fx = 0.0;
|
||||
if(i == 5) {
|
||||
float T = TIME * pulseRate;
|
||||
float crd = fract(TIME * T) * 50.0 - 25.0;
|
||||
float fxi = cos(vo.x * 0.2 + -T * 1.5); //abs(crd - vo.x);
|
||||
fx = clamp(smoothstep(0.7, 1.0, fxi), 0.0, 0.9) * 1.0 * ranb(vo.xy);
|
||||
fx *= exp(-2.0 * vo.z) * 3.0;
|
||||
}
|
||||
inten += v * 0.1 + fx;
|
||||
}
|
||||
}
|
||||
vec3 col = pow(mix(vec3(inten, (inten * 0.5), inten),baseColor.rgb,0.6), (5.5-glow) * glowColor.gbr);
|
||||
|
||||
gl_FragColor = vec4(col, 1.0);
|
||||
}
|
||||
@@ -0,0 +1,141 @@
|
||||
// SaturdayShader Week 36 : Hypnocone
|
||||
// by Joseph Fiola (http://www.joefiola.com)
|
||||
// 2016-04-23
|
||||
|
||||
// Based on "Flailing" Shadertoy by okro
|
||||
// https://www.shadertoy.com/view/MsjSWw
|
||||
|
||||
/*{
|
||||
"CREDIT": "",
|
||||
"DESCRIPTION": "",
|
||||
"CATEGORIES": [
|
||||
"Generator"
|
||||
],
|
||||
"INPUTS": [
|
||||
{
|
||||
"NAME": "invert",
|
||||
"TYPE": "bool",
|
||||
"DEFAULT": false
|
||||
},
|
||||
{
|
||||
"NAME": "zoom",
|
||||
"TYPE": "float",
|
||||
"DEFAULT": 2.0,
|
||||
"MIN": 0.25,
|
||||
"MAX": 10.0
|
||||
},
|
||||
{
|
||||
"NAME": "rings",
|
||||
"TYPE": "float",
|
||||
"DEFAULT": 0.01,
|
||||
"MIN": 0.01,
|
||||
"MAX": 1.0
|
||||
},
|
||||
{
|
||||
"NAME": "radius",
|
||||
"TYPE": "float",
|
||||
"DEFAULT": 1.0,
|
||||
"MIN": 0.001,
|
||||
"MAX": 2.0
|
||||
},
|
||||
{
|
||||
"NAME": "xAmp",
|
||||
"TYPE": "float",
|
||||
"DEFAULT": 0.002,
|
||||
"MIN": -0.1,
|
||||
"MAX": 0.1
|
||||
},
|
||||
{
|
||||
"NAME": "xOffset",
|
||||
"TYPE": "float",
|
||||
"DEFAULT": 0.01,
|
||||
"MIN": -1.0,
|
||||
"MAX": 1.0
|
||||
},
|
||||
{
|
||||
"NAME": "xOffsetSpeed",
|
||||
"TYPE": "float",
|
||||
"DEFAULT": 0.02,
|
||||
"MIN": 0.0,
|
||||
"MAX": 0.1
|
||||
},
|
||||
{
|
||||
"NAME": "yAmp",
|
||||
"TYPE": "float",
|
||||
"DEFAULT": 0.002,
|
||||
"MIN": -0.1,
|
||||
"MAX": 0.1
|
||||
},
|
||||
{
|
||||
"NAME": "yOffset",
|
||||
"TYPE": "float",
|
||||
"DEFAULT": 0.01,
|
||||
"MIN": -1.0,
|
||||
"MAX": 1.0
|
||||
},
|
||||
{
|
||||
"NAME": "yOffsetSpeed",
|
||||
"TYPE": "float",
|
||||
"DEFAULT": -0.02,
|
||||
"MIN": 0.0,
|
||||
"MAX": 0.1
|
||||
},
|
||||
{
|
||||
"NAME": "rotate",
|
||||
"TYPE": "float",
|
||||
"DEFAULT": 0.0,
|
||||
"MIN": 0.0,
|
||||
"MAX": 1.0
|
||||
},
|
||||
{
|
||||
"NAME": "pos",
|
||||
"TYPE": "point2D",
|
||||
"DEFAULT": [0.5,0.5],
|
||||
"MIN":[0.0,0.0],
|
||||
"MAX":[1.0,1.0]
|
||||
}
|
||||
]
|
||||
}*/
|
||||
|
||||
|
||||
#define TWO_PI 6.28318530718
|
||||
|
||||
mat2 rotate2d(float _angle){
|
||||
return mat2(cos(_angle),-sin(_angle),
|
||||
sin(_angle),cos(_angle));
|
||||
}
|
||||
|
||||
void main()
|
||||
{
|
||||
vec2 uv = gl_FragCoord.xy / RENDERSIZE.xy;
|
||||
uv -= vec2(pos);
|
||||
uv.x *= RENDERSIZE.x/RENDERSIZE.y;
|
||||
uv = rotate2d(rotate*-TWO_PI) * uv;
|
||||
uv *= zoom;
|
||||
|
||||
vec3 col = vec3(0.);
|
||||
vec2 loc = uv * 0.0;
|
||||
|
||||
float radius = radius+rings;
|
||||
|
||||
|
||||
for (int i = 0; i < 100; ++i) {
|
||||
float r = smoothstep(radius, radius+.004, distance(uv,loc));
|
||||
|
||||
col = 1.0 - col * r;
|
||||
|
||||
//move circles
|
||||
float dx = cos(TIME) * xAmp;
|
||||
dx += cos(TIME * xOffsetSpeed * float(i)) * xOffset;
|
||||
float dy = sin(TIME) * yAmp;
|
||||
dy += sin(TIME * yOffsetSpeed * float(i)) * yOffset;
|
||||
loc += vec2(dx, dy);
|
||||
|
||||
|
||||
//make smaller
|
||||
radius -= rings;
|
||||
}
|
||||
|
||||
if (invert) col = col *-1.0 + 1.0;
|
||||
gl_FragColor = vec4(col, 1.0);
|
||||
}
|
||||
|
After Width: | Height: | Size: 12 KiB |
@@ -0,0 +1,167 @@
|
||||
/*{
|
||||
"CREDIT": "by mojovideotech",
|
||||
"CATEGORIES" : [ "generator"
|
||||
],
|
||||
"DESCRIPTION" : "",
|
||||
"INPUTS" : [
|
||||
{
|
||||
"NAME" : "seed1",
|
||||
"TYPE" : "float",
|
||||
"DEFAULT" : 155,
|
||||
"MIN" : 34,
|
||||
"MAX" : 233
|
||||
},
|
||||
{
|
||||
"NAME" : "seed2",
|
||||
"TYPE" : "float",
|
||||
"DEFAULT" : 649,
|
||||
"MIN" : 89,
|
||||
"MAX" : 987
|
||||
},
|
||||
{
|
||||
"NAME" : "scale",
|
||||
"TYPE" : "float",
|
||||
"DEFAULT" : 1.0,
|
||||
"MIN" : 0.25,
|
||||
"MAX" : 2.0
|
||||
},
|
||||
{
|
||||
"NAME" : "rate",
|
||||
"TYPE" : "float",
|
||||
"DEFAULT" : 1.0,
|
||||
"MIN" : 0.1,
|
||||
"MAX" : 3.0
|
||||
},
|
||||
{
|
||||
"NAME" : "zoom",
|
||||
"TYPE" : "float",
|
||||
"DEFAULT" : 0.175,
|
||||
"MIN" : -1.0,
|
||||
"MAX" : 1.0
|
||||
},
|
||||
{
|
||||
"NAME" : "line",
|
||||
"TYPE" : "float",
|
||||
"DEFAULT" : 0.367,
|
||||
"MIN" : 0.0,
|
||||
"MAX" : 0.5
|
||||
},
|
||||
{
|
||||
"NAME" : "flash",
|
||||
"TYPE" : "float",
|
||||
"DEFAULT" : 7.5,
|
||||
"MIN" : 0.5,
|
||||
"MAX" : 10.0
|
||||
},
|
||||
{
|
||||
"NAME" : "mirror",
|
||||
"TYPE" : "bool",
|
||||
"DEFAULT" : false
|
||||
},
|
||||
{
|
||||
"NAME" : "color",
|
||||
"TYPE" : "bool",
|
||||
"DEFAULT" : true
|
||||
},
|
||||
{
|
||||
"NAME" : "cycle",
|
||||
"TYPE" : "float",
|
||||
"DEFAULT" : 1.0,
|
||||
"MIN" : 0.05,
|
||||
"MAX" : 20.0
|
||||
}
|
||||
]
|
||||
}
|
||||
*/
|
||||
|
||||
|
||||
////////////////////////////////////////////////////////////////////
|
||||
// InnerDimensionalMatrix by mojovideotech
|
||||
//
|
||||
// based on :
|
||||
// The Universe Within - by Martijn Steinrucken aka BigWings 2018
|
||||
// shadertoy.com/\lscczl
|
||||
// glslsandbox.com\/e#47584.1
|
||||
//
|
||||
// License Creative Commons Attribution-NonCommercial-ShareAlike 3.0
|
||||
////////////////////////////////////////////////////////////////////
|
||||
|
||||
#ifdef GL_ES
|
||||
precision highp float;
|
||||
#endif
|
||||
|
||||
#define S(a, b, t) smoothstep(a, b, t)
|
||||
|
||||
float N1(float n) {
|
||||
return fract(sin(n) * 43758.5453123);
|
||||
}
|
||||
|
||||
float N11(float p) {
|
||||
float fl = floor(p);
|
||||
float fc = fract(p);
|
||||
return mix(N1(fl), N1(fl + 1.0), fc);
|
||||
}
|
||||
|
||||
float N21(vec2 p) { return fract(sin(p.x * floor(seed1) + p.y * floor(seed2)) * floor(seed2+seed1)); }
|
||||
|
||||
vec2 N22(vec2 p) { return vec2(N21(p), N21(p + floor(seed2))); }
|
||||
|
||||
float L(vec2 p, vec2 a, vec2 b) {
|
||||
vec2 pa = p-a, ba = b-a;
|
||||
float t = clamp(dot(pa, ba)/dot(ba, ba), 0.0, 1.0);
|
||||
float d = length(pa - ba * t);
|
||||
float m = S(0.02, 0.0, d);
|
||||
d = length(a-b);
|
||||
float f = S(1.0, 0.8, d);
|
||||
m *= f;
|
||||
m += m*S(0.05, 0.06, abs(d - 0.5)) * 2.0;
|
||||
return m;
|
||||
}
|
||||
|
||||
vec2 GetPos(vec2 p, vec2 o) {
|
||||
p += o;
|
||||
vec2 n = N22(p)*TIME*rate;
|
||||
p = sin(n) * line;
|
||||
return o+p;
|
||||
}
|
||||
|
||||
float G(vec2 uv) {
|
||||
vec2 id = floor(uv);
|
||||
uv = fract(uv) - 0.5;
|
||||
vec2 g = GetPos(id, vec2(0));
|
||||
float m = 0.0;
|
||||
for(float y=-1.0; y<=1.0; y++) {
|
||||
for(float x=-1.0; x<=1.0; x++) {
|
||||
vec2 offs = vec2(x, y);
|
||||
vec2 p = GetPos(id, offs);
|
||||
m+=L(uv, g, p);
|
||||
vec2 a = p-uv;
|
||||
float f = 0.003/dot(a, a);
|
||||
f *= pow( sin(N21(id+offs) * 6.2831 + (flash*TIME)) * 0.4 + 0.6, flash);
|
||||
m += f;
|
||||
}
|
||||
}
|
||||
m += L(uv, GetPos(id, vec2(-1, 0)), GetPos(id, vec2(0, -1)));
|
||||
m += L(uv, GetPos(id, vec2(0, -1)), GetPos(id, vec2(1, 0)));
|
||||
m += L(uv, GetPos(id, vec2(1, 0)), GetPos(id, vec2(0, 1)));
|
||||
m += L(uv, GetPos(id, vec2(0, 1)), GetPos(id, vec2(-1, 0)));
|
||||
return m;
|
||||
}
|
||||
|
||||
void main()
|
||||
{
|
||||
vec2 uv = (2.25 - scale) * ( gl_FragCoord.xy - 0.5 * RENDERSIZE.xy) / RENDERSIZE.y;
|
||||
if (mirror) { if(uv.x<0.0) uv.x = abs(uv.x); }
|
||||
float m = 0.0;
|
||||
vec3 col;
|
||||
for(float i=0.0; i<1.0; i+=0.2) {
|
||||
float z = fract(i+TIME*zoom);
|
||||
float s = mix(10.0, 0.5, z);
|
||||
float f = S(0.0, 0.4, z) * S(1.0, 0.8, z);
|
||||
m += G(uv * s + (N11(i)*100.0) * i) * f;
|
||||
}
|
||||
if (color) { col = 0.5 + sin(vec3(1.0, 0.5, 0.75)*TIME*cycle) * 0.5; }
|
||||
else col = vec3(1.0);
|
||||
col *= m;
|
||||
gl_FragColor = vec4( col, 1.0 );
|
||||
}
|
||||
@@ -0,0 +1,157 @@
|
||||
// SaturdayShader Week 34 : Kaleidolines
|
||||
// Joseph Fiola (http://www.joefiola.com)
|
||||
// 2016-04-09
|
||||
|
||||
// Based on Shadertoy created by Vinicius Graciano Santos - vgs/2014
|
||||
// https://www.shadertoy.com/view/lsBSDz
|
||||
|
||||
|
||||
/*{
|
||||
"CREDIT": "",
|
||||
"DESCRIPTION": "",
|
||||
"CATEGORIES": [
|
||||
"Generator"
|
||||
],
|
||||
"INPUTS": [
|
||||
{
|
||||
"NAME": "invert",
|
||||
"TYPE": "bool",
|
||||
"DEFAULT": "1"
|
||||
},
|
||||
{
|
||||
"NAME": "zoom",
|
||||
"TYPE": "float",
|
||||
"DEFAULT": 2,
|
||||
"MIN": 0.25,
|
||||
"MAX": 20
|
||||
},
|
||||
{
|
||||
"NAME": "rotateCanvas",
|
||||
"TYPE": "float",
|
||||
"DEFAULT": 0,
|
||||
"MIN": 0,
|
||||
"MAX": 1
|
||||
},
|
||||
{
|
||||
"NAME": "rotateLines",
|
||||
"TYPE": "float",
|
||||
"DEFAULT": 0,
|
||||
"MIN": 0,
|
||||
"MAX": 1
|
||||
},
|
||||
{
|
||||
"NAME": "lineThickness",
|
||||
"TYPE": "float",
|
||||
"DEFAULT": 0.5,
|
||||
"MIN": 0.1,
|
||||
"MAX": 20
|
||||
},
|
||||
{
|
||||
"NAME": "lineLength",
|
||||
"TYPE": "float",
|
||||
"DEFAULT": 1,
|
||||
"MIN": 0.05,
|
||||
"MAX": 10
|
||||
},
|
||||
{
|
||||
"NAME": "lines1",
|
||||
"TYPE": "float",
|
||||
"DEFAULT": 10,
|
||||
"MIN": 1,
|
||||
"MAX": 10
|
||||
},
|
||||
{
|
||||
"NAME": "lines2",
|
||||
"TYPE": "float",
|
||||
"DEFAULT": 10,
|
||||
"MIN": 1,
|
||||
"MAX": 10
|
||||
},
|
||||
{
|
||||
"NAME": "offset",
|
||||
"TYPE": "float",
|
||||
"DEFAULT": 0,
|
||||
"MIN": -2,
|
||||
"MAX": 2
|
||||
},
|
||||
{
|
||||
"NAME": "motion",
|
||||
"TYPE": "float",
|
||||
"DEFAULT": 0.25,
|
||||
"MIN": 0,
|
||||
"MAX": 1
|
||||
},
|
||||
{
|
||||
"NAME": "pos",
|
||||
"TYPE": "point2D",
|
||||
"DEFAULT": [
|
||||
0.5,
|
||||
0.5
|
||||
],
|
||||
"MIN": [
|
||||
0,
|
||||
0
|
||||
],
|
||||
"MAX": [
|
||||
1,
|
||||
1
|
||||
]
|
||||
}
|
||||
]
|
||||
}*/
|
||||
|
||||
|
||||
#define TAU 6.28318530718
|
||||
|
||||
mat2 rotate2d(float _angle){
|
||||
return mat2(cos(_angle),-sin(_angle),
|
||||
sin(_angle),cos(_angle));
|
||||
}
|
||||
|
||||
vec2 tile(vec2 _st, float _zoom){
|
||||
_st *= _zoom;
|
||||
return fract(_st);
|
||||
}
|
||||
|
||||
float segment(vec2 p, vec2 a, vec2 b) {
|
||||
vec2 ab = b - a;
|
||||
vec2 ap = p - a;
|
||||
float k = clamp(dot(ap, ab)/dot(ab, ab), 0.0, lineLength);
|
||||
return smoothstep(0.0, 0.003 + lineThickness/RENDERSIZE.y, length(ap - k*ab) - (0.001 * lineThickness * 5. ));
|
||||
}
|
||||
|
||||
float shape(vec2 p, float angle) {
|
||||
float d = 100.0;
|
||||
vec2 a = vec2(1.0, 0.0), b;
|
||||
vec2 rot = vec2(cos(angle), sin(angle));
|
||||
|
||||
for (int i = 0; i < 10; ++i) {
|
||||
a = a + offset;
|
||||
if (i >= int(lines1)) break;
|
||||
b = a;
|
||||
for (int j = 0; j < 10; ++j) {
|
||||
if (j >= int(lines2)) break;
|
||||
b = vec2(b.x*rot.x - b.y*rot.y, b.x*rot.y + b.y*rot.x);
|
||||
p = rotate2d(rotateLines* -TAU) * p;
|
||||
d = min(d, segment(p, a, b));
|
||||
}
|
||||
a = vec2(a.x*rot.x - a.y*rot.y, a.x*rot.y + a.y*rot.x);
|
||||
|
||||
}
|
||||
return d;
|
||||
}
|
||||
|
||||
void main() {
|
||||
|
||||
vec2 uv = gl_FragCoord.xy / RENDERSIZE.xy;
|
||||
uv -= vec2(pos);
|
||||
uv.x *= RENDERSIZE.x/RENDERSIZE.y;
|
||||
uv = rotate2d(rotateCanvas *-TAU) * uv;
|
||||
uv *= zoom;
|
||||
|
||||
float col = shape(abs(uv), cos((motion * TAU * (TIME*0.05))));
|
||||
|
||||
if (invert) col = col *-1.0 + 1.0;
|
||||
|
||||
gl_FragColor = vec4(vec3(col), 1.0);
|
||||
}
|
||||
@@ -0,0 +1,160 @@
|
||||
/*{
|
||||
"CREDIT": "by mojovideotech",
|
||||
"CATEGORIES": [
|
||||
"generator",
|
||||
"kali set"
|
||||
],
|
||||
"DESCRIPTION": "",
|
||||
"INPUTS": [
|
||||
{
|
||||
"NAME": "center",
|
||||
"TYPE": "point2D",
|
||||
"DEFAULT": [
|
||||
0,
|
||||
0
|
||||
],
|
||||
"MAX": [
|
||||
2,
|
||||
2
|
||||
],
|
||||
"MIN": [
|
||||
-2,
|
||||
-2
|
||||
]
|
||||
},
|
||||
{
|
||||
"NAME": "rate",
|
||||
"TYPE": "float",
|
||||
"DEFAULT": 1,
|
||||
"MIN": 0.01,
|
||||
"MAX": 3
|
||||
},
|
||||
{
|
||||
"NAME": "loops",
|
||||
"TYPE": "float",
|
||||
"DEFAULT": 15,
|
||||
"MIN": 8,
|
||||
"MAX": 24
|
||||
},
|
||||
{
|
||||
"NAME": "intensity",
|
||||
"TYPE": "float",
|
||||
"DEFAULT": 0.03,
|
||||
"MIN": 0.01,
|
||||
"MAX": 0.05
|
||||
},
|
||||
{
|
||||
"NAME": "focus",
|
||||
"TYPE": "float",
|
||||
"DEFAULT": 2.14,
|
||||
"MIN": 0.5,
|
||||
"MAX": 5
|
||||
},
|
||||
{
|
||||
"NAME": "pulse",
|
||||
"TYPE": "float",
|
||||
"DEFAULT": 30,
|
||||
"MIN": 6,
|
||||
"MAX": 60
|
||||
},
|
||||
{
|
||||
"NAME": "glow",
|
||||
"TYPE": "float",
|
||||
"DEFAULT": 10,
|
||||
"MIN": -100,
|
||||
"MAX": 100
|
||||
},
|
||||
{
|
||||
"NAME": "zoom",
|
||||
"TYPE": "float",
|
||||
"DEFAULT": 0.67,
|
||||
"MIN": 0.1,
|
||||
"MAX": 1
|
||||
}
|
||||
],
|
||||
"ISFVSN": 2
|
||||
}*/
|
||||
|
||||
////////////////////////////////////////////////////////////////////
|
||||
// KaliCircuitsExplorer by mojovideotech
|
||||
//
|
||||
// based on :
|
||||
// shadertoy.com/XlX3Rj by Kali
|
||||
//
|
||||
// License Creative Commons Attribution-NonCommercial-ShareAlike 3.0
|
||||
////////////////////////////////////////////////////////////////////
|
||||
|
||||
#ifdef GL_ES
|
||||
precision highp float;
|
||||
#endif
|
||||
|
||||
|
||||
#define pi 3.141592653 // pi
|
||||
|
||||
float S = (101.0 + glow) * intensity;
|
||||
vec3 color = vec3(0.0);
|
||||
|
||||
void formula(vec2 z, float t)
|
||||
{
|
||||
float M = 0.0;
|
||||
float o, ot2, ot=ot2=1000.0;
|
||||
float K = floor(loops/4.0)+floor(5.0 * zoom);
|
||||
for (int i=0; i<11; i++) {
|
||||
z = abs(z) / clamp(dot(z, z), 0.1, 0.5) - t;
|
||||
float l = length(z);
|
||||
o = min(max(abs(min(z.x, z.y)), -l + 0.25), abs(l - 0.25));
|
||||
ot = min(ot, o);
|
||||
ot2 = min(l * 0.1, ot2);
|
||||
M = max(M, float(i) * (1.0 - abs(sign(ot - o))));
|
||||
if (K <= 0.0) break;
|
||||
K -= 1.0;
|
||||
}
|
||||
M += 1.0;
|
||||
float w = (intensity * zoom) * M;
|
||||
float circ = pow(max(0.0, w - ot2) / w, 6.0);
|
||||
S += max(pow(max(0.0, w - ot) / w, 0.25), circ);
|
||||
vec3 col = normalize(0.1 + vec4(0.45, 0.75, M * 0.1, 1.0).rgb);
|
||||
color += col * (0.4 + mod(M / 9.0 - t * pulse + ot2 * 2.0, 1.0));
|
||||
color += vec3(1.0, 0.7, 0.3) * circ * (10.0 - M) * 3.0;
|
||||
}
|
||||
|
||||
|
||||
void main()
|
||||
{
|
||||
float R = 0.0;
|
||||
float N = TIME * 0.01 * rate;
|
||||
float T = 2.0 * rate;
|
||||
if (N > 6.0 * rate) {
|
||||
R += 1.0;
|
||||
N -= (R * 8.0 * rate);
|
||||
}
|
||||
if (N < 4.0 * rate) T += N;
|
||||
else T = 8.0 * rate - N;
|
||||
float Z = (1.05-zoom);
|
||||
vec2 pos = gl_FragCoord.xy / RENDERSIZE.xy - 0.5;
|
||||
pos.x *= RENDERSIZE.x/RENDERSIZE.y;
|
||||
vec2 uv = pos + center;
|
||||
float sph = length(uv)*0.1;
|
||||
sph = sqrt(1.0 - sph * sph) * 2.0 ;
|
||||
float a = T * pi;
|
||||
float b = a + T;
|
||||
float c = cos(a) + sin(b);
|
||||
uv *= mat2(cos(b), sin(b), -sin(b), cos(b));
|
||||
uv *= mat2(cos(a),-sin(a), sin(a),cos(a));
|
||||
uv -= vec2(sin(c), cos(c)) / pi;
|
||||
uv *= Z;
|
||||
float pix = 0.5 / RENDERSIZE.x * Z / sph;
|
||||
float dof = (zoom * focus) + (T * 0.25);
|
||||
float L = floor(loops);
|
||||
for (int aa=0; aa<24; aa++) {
|
||||
vec2 aauv = floor(vec2(float(aa) / 6.0, mod(float(aa), 6.0)));
|
||||
formula(uv + aauv * pix * dof, T);
|
||||
if (L <= 0.0) break;
|
||||
L -= 1.0;
|
||||
}
|
||||
S /= floor(loops);
|
||||
color /= floor(loops);
|
||||
vec3 colo = mix(vec3(0.15), color, S) * (1.0 - length(pos));
|
||||
colo *=vec3(1.2, 1.1, 1.0);
|
||||
gl_FragColor = sqrt(max(vec4(colo, 1.0), 0.0) -0.2);
|
||||
}
|
||||
@@ -0,0 +1,116 @@
|
||||
/*{
|
||||
"CREDIT": "",
|
||||
"DESCRIPTION": "",
|
||||
"CATEGORIES": [ "generator" ],
|
||||
"INPUTS": [
|
||||
{
|
||||
"NAME": "noiseIntensity",
|
||||
"TYPE": "float",
|
||||
"MIN": 0.0,
|
||||
"MAX": 10.0,
|
||||
"DEFAULT": 6.0
|
||||
},
|
||||
{
|
||||
"NAME": "noiseScaleX",
|
||||
"TYPE": "float",
|
||||
"MIN": 1.0,
|
||||
"MAX": 10.0,
|
||||
"DEFAULT": 5.5
|
||||
},
|
||||
{
|
||||
"NAME": "noiseScaleY",
|
||||
"TYPE": "float",
|
||||
"MIN": 1.0,
|
||||
"MAX": 10.0,
|
||||
"DEFAULT": 3.5
|
||||
},
|
||||
{
|
||||
"NAME": "redPhaseShift",
|
||||
"TYPE": "float",
|
||||
"MIN": 0.0,
|
||||
"MAX": 1.0,
|
||||
"DEFAULT": 0.1
|
||||
},
|
||||
{
|
||||
"NAME": "greenPhaseShift",
|
||||
"TYPE": "float",
|
||||
"MIN": 0.0,
|
||||
"MAX": 1.0,
|
||||
"DEFAULT": 0.3
|
||||
},
|
||||
{
|
||||
"NAME": "bluePhaseShift",
|
||||
"TYPE": "float",
|
||||
"MIN": 0.0,
|
||||
"MAX": 1.0,
|
||||
"DEFAULT": 0.6
|
||||
}
|
||||
]
|
||||
}*/
|
||||
|
||||
#define PI 3.1415926535
|
||||
#define TWO_PI (PI * 2.0)
|
||||
#define NUM_NOISE_OCTAVES 3
|
||||
|
||||
float map(float x, float in_min, float in_max, float out_min, float out_max) {
|
||||
return (x - in_min) * (out_max - out_min) / (in_max - in_min) + out_min;
|
||||
}
|
||||
|
||||
float ease(float p, float g) {
|
||||
return p < 0.5 ? 0.5 * pow(2.0 * p, g) : 1.0 - 0.5 * pow(2.0 * (1.0 - p), g);
|
||||
}
|
||||
|
||||
// Optimized hash function by Inigo Quilez
|
||||
float hash(vec2 p) {
|
||||
vec3 p3 = fract(vec3(p.xyx) * 0.13);
|
||||
p3 += dot(p3, p3.yzx + 3.333);
|
||||
return fract((p3.x + p3.y) * p3.z);
|
||||
}
|
||||
|
||||
// 2D gradient noise by Inigo Quilez
|
||||
float noise(vec2 x) {
|
||||
vec2 i = floor(x), f = fract(x), u = f * f * (3.0 - 2.0 * f);
|
||||
return mix(hash(i), hash(i + vec2(1.0, 0.0)), u.x) +
|
||||
(hash(i + vec2(0.0, 1.0)) - hash(i)) * u.y * (1.0 - u.x) +
|
||||
(hash(i + vec2(1.0, 1.0)) - hash(i + vec2(1.0, 0.0))) * u.x * u.y;
|
||||
}
|
||||
|
||||
float fbm(vec2 x) {
|
||||
float v = 0.0, a = 0.5;
|
||||
vec2 shift = vec2(100.0);
|
||||
mat2 rot = mat2(cos(0.5), sin(0.5), -sin(0.5), cos(0.5));
|
||||
for (int i = 0; i < NUM_NOISE_OCTAVES; ++i) {
|
||||
v += a * noise(x);
|
||||
x = rot * x * 2.0 + shift;
|
||||
a *= 0.5;
|
||||
}
|
||||
return v;
|
||||
}
|
||||
|
||||
float distFromCenter(vec2 uv) {
|
||||
vec2 p = uv - 0.5;
|
||||
p.x *= RENDERSIZE.x / RENDERSIZE.y;
|
||||
return length(p);
|
||||
}
|
||||
|
||||
float upwelling(vec2 uv, float t, float noiseIntensity, vec2 noiseScale, float phase) {
|
||||
float uvNoise = fbm(uv * noiseScale * fbm(uv * noiseScale + t * 0.3)) * noiseIntensity;
|
||||
float noiseOffset = uvNoise * smoothstep(0.32, 0.22, distFromCenter(uv));
|
||||
float waveOffset = smoothstep(0.8, 0.001, distFromCenter(uv)) * 18.0;
|
||||
return map(sin(TWO_PI * (t + noiseOffset + waveOffset + phase)), -1.0, 1.0, 0.0, 1.0);
|
||||
}
|
||||
|
||||
vec4 fullscreenMelt(vec2 uv, float t) {
|
||||
float phaseShift = smoothstep(0.5, 1.0, 1.0 - distFromCenter(uv));
|
||||
float upwellRed = upwelling(uv, t, noiseIntensity, vec2(noiseScaleX, noiseScaleY), redPhaseShift * phaseShift);
|
||||
float upwellGreen = upwelling(uv, t, noiseIntensity, vec2(noiseScaleX, noiseScaleY), greenPhaseShift * phaseShift);
|
||||
float upwellBlue = upwelling(uv, t, noiseIntensity, vec2(noiseScaleX, noiseScaleY), bluePhaseShift * phaseShift);
|
||||
return vec4(upwellRed, upwellGreen, upwellBlue, 1.0);
|
||||
}
|
||||
|
||||
void main() {
|
||||
vec2 uv = gl_FragCoord.xy / RENDERSIZE.xy;
|
||||
float fadeFromCenter = 1.0 - min(ease(distFromCenter(uv) + 0.2, 20.0), 1.0);
|
||||
vec4 vignette = vec4(vec3(fadeFromCenter), 1.0);
|
||||
gl_FragColor = fullscreenMelt(uv, TIME) * vignette;
|
||||
}
|
||||
@@ -0,0 +1,85 @@
|
||||
/*{
|
||||
"CREDIT": "by mojovideotech, rhythmic-visions, sonicwalker",
|
||||
"CATEGORIES": [
|
||||
"Shapes"
|
||||
],
|
||||
"DESCRIPTION": "Radar with controls. Adapted from https://editor.isf.video/shaders/669e3b36be01f9001aa474ee",
|
||||
"INPUTS": [
|
||||
{
|
||||
"NAME": "speed",
|
||||
"TYPE": "float",
|
||||
"DEFAULT": 1,
|
||||
"MIN": 0.1,
|
||||
"MAX": 10
|
||||
},
|
||||
{
|
||||
"NAME": "intensity",
|
||||
"TYPE": "float",
|
||||
"DEFAULT": 2,
|
||||
"MIN": 0.1,
|
||||
"MAX": 2
|
||||
},
|
||||
{
|
||||
"NAME": "glow",
|
||||
"TYPE": "float",
|
||||
"DEFAULT": 1,
|
||||
"MIN": 0.5,
|
||||
"MAX": 2
|
||||
},
|
||||
{
|
||||
"NAME": "radius",
|
||||
"TYPE": "float",
|
||||
"DEFAULT": 0.5,
|
||||
"MIN": 0.1,
|
||||
"MAX": 2
|
||||
},
|
||||
{
|
||||
"NAME": "color",
|
||||
"TYPE": "color",
|
||||
"DEFAULT": [
|
||||
2.0,
|
||||
1,
|
||||
2.0,
|
||||
1.0
|
||||
]
|
||||
}]
|
||||
}*/
|
||||
|
||||
|
||||
#ifdef GL_ES
|
||||
precision mediump float;
|
||||
#endif
|
||||
|
||||
#define PI 3.1415926535897932384626433832795
|
||||
|
||||
|
||||
float d2y(float d){return glow/(0.2+d);}
|
||||
|
||||
float fct(vec2 p, float r){
|
||||
float t = TIME * speed;
|
||||
float a = 2.*mod(-atan(p.y, p.x)+t, 2.*PI);
|
||||
float scan = 0.*1.;
|
||||
return (d2y(a)+scan)*(intensity-step(radius,r));
|
||||
}
|
||||
|
||||
|
||||
float circle(vec2 p, float r){
|
||||
float d=distance(r, radius);
|
||||
return d2y(100.*d);
|
||||
}
|
||||
|
||||
void main( void ) {
|
||||
|
||||
vec2 position = (( gl_FragCoord.xy )-0.5*RENDERSIZE)/ RENDERSIZE.y ;
|
||||
position/=cos(1.5*length(position));
|
||||
float y = 0.;
|
||||
|
||||
float dc = length(position);
|
||||
|
||||
y+=fct(position, dc);
|
||||
y+=circle(position, dc);
|
||||
|
||||
y=pow(y,1.67);
|
||||
vec3 radarColor = 0.3*vec3(color);
|
||||
gl_FragColor = vec4( sqrt(y)*radarColor,1.0 );
|
||||
}
|
||||
|
After Width: | Height: | Size: 9.0 MiB |
@@ -0,0 +1,71 @@
|
||||
/*
|
||||
{
|
||||
"CATEGORIES": [
|
||||
"Automatically Converted"
|
||||
],
|
||||
"INPUTS": [
|
||||
|
||||
]
|
||||
}
|
||||
*/
|
||||
|
||||
|
||||
// By @paulofalcao
|
||||
//
|
||||
// Blobs
|
||||
|
||||
#ifdef GL_ES
|
||||
precision highp float;
|
||||
#endif
|
||||
|
||||
|
||||
float makePoint(float x,float y,float fx,float fy,float sx,float sy,float t){
|
||||
float xx=x*cos(t*fx);
|
||||
float yy=y*sin(t*fy);
|
||||
return 1./ (sqrt(length(xx+yy) + length(xx*yy)));
|
||||
}
|
||||
|
||||
void main( void ) {
|
||||
|
||||
vec2 p=(gl_FragCoord.xy/RENDERSIZE.x)*2.0-vec2(1.0,RENDERSIZE.y/RENDERSIZE.x);
|
||||
|
||||
float x=p.x;
|
||||
float y=p.y;
|
||||
|
||||
float a=
|
||||
makePoint(x,y,3.3,2.9,0.3,0.3,TIME);
|
||||
a=a+makePoint(x,y,1.9,2.0,0.4,0.4,TIME);
|
||||
a=a+makePoint(x,y,0.8,0.7,0.4,0.5,TIME);
|
||||
a=a+makePoint(x,y,2.3,0.1,0.6,0.3,TIME);
|
||||
a=a+makePoint(x,y,0.8,1.7,0.5,0.4,TIME);
|
||||
a=a+makePoint(x,y,0.3,1.0,0.4,0.4,TIME);
|
||||
a=a+makePoint(x,y,1.4,1.7,0.4,0.5,TIME);
|
||||
a=a+makePoint(x,y,1.3,2.1,0.6,0.3,TIME);
|
||||
a=a+makePoint(x,y,1.8,1.7,0.5,0.4,TIME);
|
||||
|
||||
float b=
|
||||
makePoint(x,y,1.2,1.9,0.3,0.3,TIME);
|
||||
b=b+makePoint(x,y,0.7,2.7,0.4,0.4,TIME);
|
||||
b=b+makePoint(x,y,1.4,0.6,0.4,0.5,TIME);
|
||||
b=b+makePoint(x,y,2.6,0.9,0.6,0.3,TIME);
|
||||
b=b+makePoint(x,y,0.7,1.4,0.5,0.4,TIME);
|
||||
b=b+makePoint(x,y,0.7,1.7,0.4,0.4,TIME);
|
||||
b=b+makePoint(x,y,0.8,0.5,0.4,0.5,TIME);
|
||||
b=b+makePoint(x,y,1.4,0.7,0.6,0.3,TIME);
|
||||
b=b+makePoint(x,y,0.7,1.3,0.5,0.4,TIME);
|
||||
|
||||
float c=
|
||||
makePoint(x,y,3.7,0.3,0.3,0.3,TIME);
|
||||
c=c+makePoint(x,y,1.9,1.3,0.4,0.4,TIME);
|
||||
c=c+makePoint(x,y,0.8,0.9,0.4,0.5,TIME);
|
||||
c=c+makePoint(x,y,1.2,1.7,0.6,0.3,TIME);
|
||||
c=c+makePoint(x,y,0.3,0.6,0.5,0.4,TIME);
|
||||
c=c+makePoint(x,y,0.3,0.3,0.4,0.4,TIME);
|
||||
c=c+makePoint(x,y,1.4,0.8,0.4,0.5,TIME);
|
||||
c=c+makePoint(x,y,0.2,0.6,0.6,0.3,TIME);
|
||||
c=c+makePoint(x,y,1.3,0.5,0.5,0.4,TIME);
|
||||
|
||||
vec3 d=vec3(a,b,c)*0.01;
|
||||
|
||||
gl_FragColor = vec4(d.x,d.y,d.z,1.0);
|
||||
}
|
||||
@@ -0,0 +1,76 @@
|
||||
/*{
|
||||
"CREDIT": "by mojovideotech",
|
||||
"CATEGORIES": [
|
||||
"Shapes"
|
||||
],
|
||||
"DESCRIPTION": "",
|
||||
"ISFVSN" : "2",
|
||||
"INPUTS": [
|
||||
{
|
||||
"NAME" : "scale",
|
||||
"TYPE" : "float",
|
||||
"DEFAULT" : 1.0,
|
||||
"MIN" : 0.1,
|
||||
"MAX" : 2.0
|
||||
},
|
||||
{
|
||||
"NAME" : "thickness",
|
||||
"TYPE" : "float",
|
||||
"DEFAULT" : 1.75,
|
||||
"MIN" : 0.5,
|
||||
"MAX" : 2.0
|
||||
},
|
||||
{
|
||||
"NAME" : "twists",
|
||||
"TYPE" : "float",
|
||||
"DEFAULT" : 1.0,
|
||||
"MIN" : 1.0,
|
||||
"MAX" : 5.0
|
||||
},
|
||||
{
|
||||
"NAME" : "rate",
|
||||
"TYPE" : "float",
|
||||
"DEFAULT" : 1.5,
|
||||
"MIN" : -2.0,
|
||||
"MAX" : 2.0
|
||||
},
|
||||
{
|
||||
"NAME" : "gamma",
|
||||
"TYPE" : "float",
|
||||
"DEFAULT" : 0.454545,
|
||||
"MIN" : 0.25,
|
||||
"MAX" : 1.0
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
*/
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
// RainbowRingCubicTwist by mojovideotech
|
||||
//
|
||||
// based on :
|
||||
// glslsandbox/e#58416.0
|
||||
//
|
||||
// Creative Commons Attribution-NonCommercial-ShareAlike 3.0
|
||||
////////////////////////////////////////////////////////////
|
||||
|
||||
|
||||
#ifdef GL_ES
|
||||
precision highp float;
|
||||
#endif
|
||||
|
||||
|
||||
void main()
|
||||
{
|
||||
float T = TIME * rate;
|
||||
vec2 R = RENDERSIZE;
|
||||
vec2 P = (gl_FragCoord.xy - 0.5*R)*(2.1 - scale);
|
||||
vec4 S, E, F;
|
||||
P = vec2(length(P) / R.y - 0.333, atan(P.y,P.x));
|
||||
P *= vec2(2.6 - thickness,floor(twists)); ;
|
||||
S = 0.08*cos(1.5*vec4(0.0, 1.0, 2.0, 3.0) + T + P.y + sin(P.y)*cos(T));
|
||||
E = S.yzwx;
|
||||
F = max(P.x - S, E - P.x);
|
||||
gl_FragColor = pow(dot(clamp(F*R.y, 0.0, 1.0), 72.0*(S - E))*(S - 0.1), vec4(gamma));
|
||||
}
|
||||
|
After Width: | Height: | Size: 6.2 MiB |
@@ -0,0 +1,130 @@
|
||||
/*{
|
||||
"DESCRIPTION": "Your shader description",
|
||||
"CREDIT": "by you",
|
||||
"CATEGORIES": [
|
||||
"Your category"
|
||||
],
|
||||
"INPUTS": [
|
||||
{
|
||||
"LABEL": "PosX",
|
||||
"NAME": "PosX",
|
||||
"TYPE": "float",
|
||||
"DEFAULT": 0.0,
|
||||
"MIN": 0.0,
|
||||
"MAX": 1.0
|
||||
},
|
||||
{
|
||||
"LABEL": "PosY",
|
||||
"NAME": "PosY",
|
||||
"TYPE": "float",
|
||||
"DEFAULT": 0.0,
|
||||
"MIN": 0.0,
|
||||
"MAX": 1.0
|
||||
},
|
||||
{
|
||||
"LABEL": "PosZ",
|
||||
"NAME": "PosZ",
|
||||
"TYPE": "float",
|
||||
"DEFAULT": 0.0,
|
||||
"MIN": 0.0,
|
||||
"MAX": 1.0
|
||||
},
|
||||
{
|
||||
"LABEL": "RotX",
|
||||
"NAME": "RotX",
|
||||
"TYPE": "float",
|
||||
"DEFAULT": 0.0,
|
||||
"MIN": 0.0,
|
||||
"MAX": 1.0
|
||||
},
|
||||
{
|
||||
"LABEL": "RotY",
|
||||
"NAME": "RotY",
|
||||
"TYPE": "float",
|
||||
"DEFAULT": 0.0,
|
||||
"MIN": 0.0,
|
||||
"MAX": 1.0
|
||||
},
|
||||
{
|
||||
"LABEL": "RotZ",
|
||||
"NAME": "RotZ",
|
||||
"TYPE": "float",
|
||||
"DEFAULT": 0.0,
|
||||
"MIN": 0.0,
|
||||
"MAX": 1.0
|
||||
}
|
||||
]
|
||||
}*/
|
||||
|
||||
vec3 iResolution = vec3(RENDERSIZE, 1.);
|
||||
float iGlobalTime = TIME;
|
||||
|
||||
const float PI=3.14159265358979323846;
|
||||
|
||||
float speed=iGlobalTime*0.2975;
|
||||
float ground_x=PosX*2.-1.;
|
||||
float ground_y=PosY*2.-1.;
|
||||
float ground_z=PosZ;
|
||||
|
||||
vec2 rotate(vec2 k,float t)
|
||||
{
|
||||
return vec2(cos(t)*k.x-sin(t)*k.y,sin(t)*k.x+cos(t)*k.y);
|
||||
}
|
||||
|
||||
float draw_scene(vec3 p)
|
||||
{
|
||||
float tunnel_m=0.125*cos(PI*p.z*1.0+speed*4.0-PI);
|
||||
float tunnel1_p=2.0;
|
||||
float tunnel1_w=tunnel1_p*0.225;
|
||||
float tunnel1=length(mod(p.xy,tunnel1_p)-tunnel1_p*0.5)-tunnel1_w; // tunnel1
|
||||
float tunnel2_p=2.0;
|
||||
float tunnel2_w=tunnel2_p*0.2125+tunnel2_p*0.0125*cos(PI*p.y*8.0)+tunnel2_p*0.0125*cos(PI*p.z*8.0);
|
||||
float tunnel2=length(mod(p.xy,tunnel2_p)-tunnel2_p*0.5)-tunnel2_w; // tunnel2
|
||||
float hole1_p=1.0;
|
||||
float hole1_w=hole1_p*0.5;
|
||||
float hole1=length(mod(p.xz,hole1_p).xy-hole1_p*0.5)-hole1_w; // hole1
|
||||
float hole2_p=0.25;
|
||||
float hole2_w=hole2_p*0.375;
|
||||
float hole2=length(mod(p.yz,hole2_p).xy-hole2_p*0.5)-hole2_w; // hole2
|
||||
float hole3_p=0.5;
|
||||
float hole3_w=hole3_p*0.25+0.125*sin(PI*p.z*2.0);
|
||||
float hole3=length(mod(p.xy,hole3_p).xy-hole3_p*0.5)-hole3_w; // hole3
|
||||
float tube_m=0.075*sin(PI*p.z*1.0);
|
||||
float tube_p=0.5+tube_m;
|
||||
float tube_w=tube_p*0.025+0.00125*cos(PI*p.z*128.0);
|
||||
float tube=length(mod(p.xy,tube_p)-tube_p*0.5)-tube_w; // tube
|
||||
float bubble_p=0.05;
|
||||
float bubble_w=bubble_p*0.5+0.025*cos(PI*p.z*2.0);
|
||||
float bubble=length(mod(p.yz,bubble_p)-bubble_p*0.5)-bubble_w; // bubble
|
||||
return max(min(min(-tunnel1,mix(tunnel2,-bubble,0.375)),max(min(-hole1,hole2),-hole3)),-tube);
|
||||
}
|
||||
|
||||
void mainImage( out vec4 fragColor, in vec2 fragCoord )
|
||||
{
|
||||
vec2 position=(fragCoord.xy/iResolution.xy);
|
||||
vec2 p=-1.0+2.0*position;
|
||||
vec3 dir=normalize(vec3(p*vec2(1.77,1.0),1.0)); // screen ratio (x,y) fov (z)
|
||||
|
||||
dir.yz=rotate(dir.yz,RotX*2.*PI); // rotation x
|
||||
dir.zx=rotate(dir.zx,RotY*2.*PI); // rotation y
|
||||
dir.xy=rotate(dir.xy,RotZ*2.*PI); // rotation z
|
||||
|
||||
vec3 ray = vec3(ground_x,ground_y,(ground_z-speed*2.5));
|
||||
float t=0.0;
|
||||
const int ray_n=96;
|
||||
for(int i=0;i<ray_n;i++)
|
||||
{
|
||||
float k=draw_scene(ray+dir*t);
|
||||
t+=k*0.75;
|
||||
}
|
||||
vec3 hit=ray+dir*t;
|
||||
vec2 h=vec2(-0.0025,0.002); // light
|
||||
vec3 n=normalize(vec3(draw_scene(hit+h.xyx),draw_scene(hit+h.yxy),draw_scene(hit+h.yyx)));
|
||||
float c=(n.x+n.y+n.z)*0.35;
|
||||
vec3 color=vec3(c,c,c)+t*0.0625;
|
||||
fragColor=vec4(vec3(c-t*0.0375+p.y*0.05,c-t*0.025-p.y*0.0625,c+t*0.025-p.y*0.025)+color*color,1.0);
|
||||
}
|
||||
|
||||
void main(void) {
|
||||
mainImage(gl_FragColor, gl_FragCoord.xy);
|
||||
}
|
||||
|
After Width: | Height: | Size: 86 KiB |
@@ -0,0 +1,147 @@
|
||||
/*{
|
||||
"CREDIT": "by mojovideotech",
|
||||
"CATEGORIES": [
|
||||
"space"
|
||||
],
|
||||
"INPUTS": [
|
||||
{
|
||||
"NAME": "mouse",
|
||||
"TYPE": "point2D",
|
||||
"MAX": [
|
||||
0,
|
||||
1
|
||||
],
|
||||
"MIN": [
|
||||
-1,
|
||||
0
|
||||
]
|
||||
},
|
||||
{
|
||||
"NAME": "mult",
|
||||
"TYPE": "float",
|
||||
"DEFAULT": 5,
|
||||
"MIN": 2,
|
||||
"MAX": 12
|
||||
},
|
||||
{
|
||||
"NAME": "width",
|
||||
"TYPE": "float",
|
||||
"DEFAULT": 22,
|
||||
"MIN": 20,
|
||||
"MAX": 60
|
||||
},
|
||||
{
|
||||
"NAME": "phase1",
|
||||
"TYPE": "float",
|
||||
"DEFAULT": 0.8,
|
||||
"MIN": 0.01,
|
||||
"MAX": 0.99
|
||||
},
|
||||
{
|
||||
"NAME": "phase2",
|
||||
"TYPE": "float",
|
||||
"DEFAULT": 0.05,
|
||||
"MIN": -0.5,
|
||||
"MAX": 0.5
|
||||
},
|
||||
{
|
||||
"NAME": "density",
|
||||
"TYPE": "float",
|
||||
"DEFAULT": 0.15,
|
||||
"MIN": 0.05,
|
||||
"MAX": 0.5
|
||||
},
|
||||
{
|
||||
"NAME": "morph",
|
||||
"TYPE": "float",
|
||||
"DEFAULT": 5,
|
||||
"MIN": 2,
|
||||
"MAX": 10
|
||||
},
|
||||
{
|
||||
"NAME": "hue",
|
||||
"TYPE": "float",
|
||||
"DEFAULT": 4,
|
||||
"MIN": 0.5,
|
||||
"MAX": 10
|
||||
},
|
||||
{
|
||||
"NAME": "tint",
|
||||
"TYPE": "float",
|
||||
"DEFAULT": 9,
|
||||
"MIN": 0.5,
|
||||
"MAX": 10
|
||||
},
|
||||
{
|
||||
"NAME": "rate",
|
||||
"TYPE": "float",
|
||||
"DEFAULT": -0.9,
|
||||
"MIN": -1,
|
||||
"MAX": 1
|
||||
}
|
||||
],
|
||||
"DESCRIPTION": "from http://glslsandbox.com/e#31191.1"
|
||||
}*/
|
||||
|
||||
///////////////////////////////////////////
|
||||
// SpaceGhost by mojovideotech
|
||||
//
|
||||
// mod of glslsandbox.com/e#31191.1
|
||||
//
|
||||
// based on :
|
||||
// SpaceGlowing.glsl 2016-03-02
|
||||
// original code from shadertoy.com/\view/MtX3Ws
|
||||
// simplified edit: Robert 25.11.2015
|
||||
// see also shadertoy.com/\view/\Mlj3zW
|
||||
//
|
||||
// Creative Commons Attribution-NonCommercial-ShareAlike 3.0
|
||||
///////////////////////////////////////////
|
||||
|
||||
#ifdef GL_ES
|
||||
precision mediump float;
|
||||
#endif
|
||||
|
||||
vec3 roty(vec3 p,float a)
|
||||
{ return mat3(cos(phase1*a),0,-sin(phase2*a), 0,1,1, sin(phase2*a),0,cos(phase1*a)) * p; }
|
||||
|
||||
float map(in vec3 p)
|
||||
{
|
||||
vec3 c=p; float res=0.;
|
||||
for (int i=0; i < 4; i++)
|
||||
{
|
||||
p= abs(p)/dot(p,p) -.7;
|
||||
p.yz= vec2(p.y*p.y-p.z*p.z,2.*p.y*p.z);
|
||||
res += exp(-(80.-width) * abs(dot(p,c)));
|
||||
}
|
||||
return res*0.5;
|
||||
}
|
||||
|
||||
vec3 raymarch(vec3 ro, vec3 rd)
|
||||
{
|
||||
float t=morph;
|
||||
vec3 col=vec3(0); float c=0.;
|
||||
float n = floor(mult);
|
||||
for( int i=0; i < 12; i++ )
|
||||
{
|
||||
t+= exp(c*-2.0) *density;
|
||||
c= map(t *rd +ro);
|
||||
col= vec3(8.*c*c, hue*hue*c*c, c*c*c) *0.16 + col *0.96; //green
|
||||
col= vec3(8.*c*c, c*c, tint*tint*c*c) *0.16 + col *0.96; //blue
|
||||
col= vec3(8.*c*c/hue, c*c, c*c*c/tint) *0.16 + col *0.96; //red
|
||||
n -= 1.0;
|
||||
if (n<1.0) { break;
|
||||
}
|
||||
}
|
||||
return col;
|
||||
}
|
||||
|
||||
void main()
|
||||
{
|
||||
vec2 p= (gl_FragCoord.xy - RENDERSIZE*0.5) / RENDERSIZE.y;
|
||||
vec3 ro= roty(vec3(3.), TIME*rate + mouse.x);
|
||||
vec3 uu= normalize(cross(ro, vec3(1.0, .0, 0.0)));
|
||||
vec3 vv= normalize(cross(uu, ro));
|
||||
vec3 rd= normalize(p.x*uu + p.y*vv - ro*0.5 );
|
||||
gl_FragColor.rgb= log(raymarch(ro,rd) +1.0) *0.5;
|
||||
gl_FragColor.a= 1.0;
|
||||
}
|
||||
|
After Width: | Height: | Size: 2.0 MiB |
@@ -0,0 +1,191 @@
|
||||
/*{
|
||||
"CREDIT": "by mojovideotech",
|
||||
"DESCRIPTION": "",
|
||||
"CATEGORIES": [
|
||||
"generator",
|
||||
"space"
|
||||
],
|
||||
"INPUTS": [
|
||||
{
|
||||
"NAME": "nebula",
|
||||
"TYPE": "bool",
|
||||
"DEFAULT": 0
|
||||
},
|
||||
{
|
||||
"NAME": "brightness",
|
||||
"TYPE": "float",
|
||||
"DEFAULT": 0.25,
|
||||
"MIN": 0,
|
||||
"MAX": 0.5
|
||||
},
|
||||
{
|
||||
"NAME": "zoom",
|
||||
"TYPE": "float",
|
||||
"DEFAULT": 2.5,
|
||||
"MIN": 0.25,
|
||||
"MAX": 20
|
||||
},
|
||||
{
|
||||
"NAME": "saturation",
|
||||
"TYPE": "float",
|
||||
"DEFAULT": 0.5,
|
||||
"MIN": 0,
|
||||
"MAX": 1
|
||||
},
|
||||
{
|
||||
"NAME": "distfading",
|
||||
"TYPE": "float",
|
||||
"DEFAULT": 0.25,
|
||||
"MIN": 0,
|
||||
"MAX": 0.5
|
||||
},
|
||||
{
|
||||
"NAME": "depth",
|
||||
"TYPE": "float",
|
||||
"DEFAULT": 0.25,
|
||||
"MIN": 0.1,
|
||||
"MAX": 1
|
||||
},
|
||||
{
|
||||
"NAME": "density",
|
||||
"TYPE": "float",
|
||||
"DEFAULT": 0.75,
|
||||
"MIN": 0.5,
|
||||
"MAX": 2
|
||||
},
|
||||
{
|
||||
"NAME": "morph",
|
||||
"TYPE": "float",
|
||||
"DEFAULT": 0.89,
|
||||
"MIN": 0.5,
|
||||
"MAX": 1
|
||||
},
|
||||
{
|
||||
"NAME": "rate",
|
||||
"TYPE": "float",
|
||||
"DEFAULT": 0.005,
|
||||
"MIN": -0.1,
|
||||
"MAX": 0.1
|
||||
},
|
||||
{
|
||||
"NAME": "move",
|
||||
"TYPE": "point2D",
|
||||
"DEFAULT": [
|
||||
0,
|
||||
0
|
||||
]
|
||||
}
|
||||
]
|
||||
}*/
|
||||
|
||||
///////////////////////////////////////////
|
||||
// SpaceIsThePlace by mojovideotech
|
||||
//
|
||||
// Creative Commons Attribution-NonCommercial-ShareAlike 3.0
|
||||
//
|
||||
// based on :
|
||||
// shadertoy.com/\XlfGRj by Kali
|
||||
///////////////////////////////////////////
|
||||
|
||||
#define iterations 7
|
||||
#define volsteps 7
|
||||
#define pi 3.141592653589793 // pi
|
||||
|
||||
float field(in vec3 p) {
|
||||
float strength = 7. + .03 * log(1.e-6 + fract(sin(TIME) * 4373.11));
|
||||
float accum = 0.;
|
||||
float prev = 0.;
|
||||
float tw = 0.;
|
||||
for (int i = 0; i < 7; ++i) {
|
||||
float mag = dot(p, p);
|
||||
p = abs(p) / mag + vec3(-.5, -.4, -1.5);
|
||||
float w = exp(-float(i) / 7.);
|
||||
accum += w * exp(-strength * pow(abs(mag - prev), 2.3));
|
||||
tw += w;
|
||||
prev = mag;
|
||||
}
|
||||
return max(0., 5. * accum / tw - .7);
|
||||
}
|
||||
|
||||
void main() {
|
||||
vec2 uv=gl_FragCoord.xy/RENDERSIZE.xy-.5;
|
||||
uv.y*=RENDERSIZE.y/RENDERSIZE.x;
|
||||
vec3 p = vec3(uv / 4., 0) + vec3(1., -1.3, 0.);
|
||||
p.x -= 0.25*move.x;
|
||||
p.y -= 0.25*move.y;
|
||||
p.x += 0.25*(1.0)*5.0*cos(0.01*TIME)+0.001*TIME;
|
||||
p.y += 0.25*(1.0)*5.0*sin(0.01*TIME)+0.001*TIME;
|
||||
p.z += 0.003*TIME;
|
||||
float speed = rate * cos(TIME*0.02 + pi/4.0);
|
||||
vec3 dir=vec3(uv*zoom,1.);
|
||||
vec3 from=vec3(0.0, 0.0,0.0);
|
||||
vec3 forward = vec3(0.,0.,1.);
|
||||
float a1 = pi * (move.x/RENDERSIZE.x-.5);
|
||||
mat2 rot1 = mat2(cos(a1),sin(a1),-sin(a1),cos(a1));
|
||||
float a2 = pi * (move.y/RENDERSIZE.y-.5); .6;
|
||||
mat2 rot2 = mat2(cos(a2),sin(a2),-sin(a2),cos(a2));
|
||||
p.xz *= rot1;
|
||||
p.xy *= rot1;
|
||||
p.yz *= -rot2;
|
||||
p = abs(vec3(density)-mod(p,vec3(density*2.)));
|
||||
float t = field(p);
|
||||
float v2 = (1. - exp((abs(uv.x) - 1.) * 6.)) * (1. - exp((abs(uv.y) - 1.) * 6.));
|
||||
from.x += 5.0*(0.01*rate) + 0.001*TIME;
|
||||
from.y += 5.0*(0.01*rate) +0.001*TIME;
|
||||
from.z += 0.003*TIME;
|
||||
dir.xz*=rot1;
|
||||
forward.xz *= rot1;
|
||||
dir.xy*=rot1;
|
||||
forward.xy *= rot1;
|
||||
dir.yz*=-rot2;
|
||||
forward.yz *= -rot2;
|
||||
from.xz*=rot1;
|
||||
from.xy*=rot1;
|
||||
from.yz*=-rot2;
|
||||
from += (move.x-.5)*vec3(-forward.z,0.,forward.x);
|
||||
from += (move.y-.5)*vec3(0.,-forward.z, forward.y);
|
||||
float zooom = (TIME-3311.)*speed;
|
||||
from += forward* zooom;
|
||||
float sampleShift = mod( zooom, depth );
|
||||
float zoffset = -sampleShift;
|
||||
sampleShift /= depth;
|
||||
float s=0.1;
|
||||
vec3 v=vec3(0.);
|
||||
for (int r=0; r<volsteps; r++) {
|
||||
vec3 p=from+(s+zoffset)*dir;
|
||||
p = abs(vec3(density)-mod(p,vec3(density*2.)));
|
||||
float pa,a=pa=0.;
|
||||
for (int i=0; i<iterations; i++) {
|
||||
p=abs(p)/dot(p,p)-morph;
|
||||
float D = abs(length(p)-pa);
|
||||
a += i > 7 ? min( 12., D) : D;
|
||||
pa=length(p);
|
||||
}
|
||||
a*=a*a;
|
||||
float s1 = s+zoffset;
|
||||
float fade = pow(distfading,max(0.,float(r)-sampleShift));
|
||||
float dm=max(0.,2.0-a*a*.001);
|
||||
if (r>3) fade*=1.-dm;
|
||||
if ( r == 0 ) fade *= 1. - sampleShift;
|
||||
if ( r == volsteps-1 ) fade *= sampleShift;
|
||||
v+=vec3(s1,s1*s1,s1*s1*s1*s1)*a*brightness*fade;
|
||||
s+=depth;
|
||||
}
|
||||
v=mix(vec3(length(v)),v,saturation);
|
||||
if (nebula) {
|
||||
vec4 forCol = vec4(v*.01,1.);
|
||||
vec4 backCol = mix(.4, 1., v2) * vec4(1.8 * t * t * t, 1.4 * t * t, t, 1.0);
|
||||
backCol *= 0.2;
|
||||
backCol.b *= 1.0;
|
||||
backCol.r = mix(backCol.r, backCol.b, 0.2);
|
||||
forCol.g *= max((backCol.r * 4.0), 1.0);
|
||||
forCol.r += backCol.r * 0.05;
|
||||
forCol.b += 0.5*mix(backCol.g, backCol.b, 0.8);
|
||||
gl_FragColor = forCol;
|
||||
}
|
||||
else
|
||||
{
|
||||
vec4 col = vec4(vec3(v*.01),1.);
|
||||
gl_FragColor = col;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,113 @@
|
||||
/*{
|
||||
"CREDIT": "by mojovideotech",
|
||||
"CATEGORIES": [
|
||||
"2d",
|
||||
"generator",
|
||||
"spirograph",
|
||||
"radial",
|
||||
"rotation"
|
||||
],
|
||||
"DESCRIPTION": "based on https://www.shadertoy.com/view/lddGD4 by Xor. Here's a simple 2D Spirograph test.",
|
||||
"INPUTS": [
|
||||
{
|
||||
"NAME": "center",
|
||||
"TYPE": "point2D",
|
||||
"DEFAULT": [
|
||||
0,
|
||||
0
|
||||
],
|
||||
"MAX": [
|
||||
1,
|
||||
1
|
||||
],
|
||||
"MIN": [
|
||||
-1,
|
||||
-1
|
||||
]
|
||||
},
|
||||
{
|
||||
"NAME": "freq",
|
||||
"TYPE": "float",
|
||||
"DEFAULT": 12.32,
|
||||
"MIN": 1,
|
||||
"MAX": 16
|
||||
},
|
||||
{
|
||||
"NAME": "radius1",
|
||||
"TYPE": "float",
|
||||
"DEFAULT": 0.1,
|
||||
"MIN": 0.01,
|
||||
"MAX": 0.5
|
||||
},
|
||||
{
|
||||
"NAME": "radius2",
|
||||
"TYPE": "float",
|
||||
"DEFAULT": 0.67,
|
||||
"MIN": 0.01,
|
||||
"MAX": 1.99
|
||||
},
|
||||
{
|
||||
"NAME": "rate",
|
||||
"TYPE": "float",
|
||||
"DEFAULT": 0.01,
|
||||
"MIN": -0.1,
|
||||
"MAX": 0.1
|
||||
},
|
||||
{
|
||||
"NAME": "loops",
|
||||
"TYPE": "float",
|
||||
"DEFAULT": 58.93,
|
||||
"MIN": 1,
|
||||
"MAX": 200
|
||||
},
|
||||
{
|
||||
"NAME": "thickness",
|
||||
"TYPE": "float",
|
||||
"DEFAULT": 0.005,
|
||||
"MIN": 0.001,
|
||||
"MAX": 0.01
|
||||
},
|
||||
{
|
||||
"NAME": "nudge",
|
||||
"TYPE": "float",
|
||||
"DEFAULT": 0.875,
|
||||
"MIN": 0,
|
||||
"MAX": 1
|
||||
}
|
||||
],
|
||||
"ISFVSN": "2"
|
||||
}*/
|
||||
|
||||
//////////////////////////////////////////////
|
||||
// SpirographSpectrum by mojovideotech
|
||||
//
|
||||
// based on :
|
||||
// www.shadertoy.com/\view/\lddGD4
|
||||
//
|
||||
// Creative Commons Attribution-NonCommercial-ShareAlike 3.0 Unported License.
|
||||
/////////////////////////////////////////////
|
||||
|
||||
|
||||
#define twpi 6.283185307179586 // two pi, 2*pi
|
||||
#define pi 3.141592653589793 // pi
|
||||
|
||||
|
||||
void main() {
|
||||
|
||||
vec2 uv = (gl_FragCoord.xy-RENDERSIZE.xy*0.5) / RENDERSIZE.y - center ;
|
||||
|
||||
float ang = (atan(-uv.y,-uv.x)/atan(1.0)*0.125+0.5)+TIME*rate;
|
||||
float len = length(uv);
|
||||
vec3 col = vec3(0.0);
|
||||
for(float i = 0.0;i<200.;i+=1.0)
|
||||
{
|
||||
float L = floor(loops);
|
||||
float F = ceil(freq);
|
||||
if (i >= L) break;
|
||||
float tag = (ang+i)*twpi;
|
||||
float tln = (cos((ang+i*(1.0-nudge))*F)*0.5+0.5)*(radius2-radius1)+radius1;
|
||||
vec2 pos = normalize(uv)*tln;
|
||||
col += smoothstep(thickness,0.0,distance(uv,pos)*pow(length(uv),0.001))*(cos(tag+vec3(0.0,twpi,2.0*twpi)/3.0)*0.5+0.5);
|
||||
}
|
||||
gl_FragColor = vec4(col,1.0);
|
||||
}
|
||||
|
After Width: | Height: | Size: 587 KiB |
@@ -0,0 +1,102 @@
|
||||
/*{
|
||||
"CREDIT": "by echophons",
|
||||
"DESCRIPTION": "",
|
||||
"CATEGORIES": [ "generator"
|
||||
],
|
||||
"INPUTS": [
|
||||
|
||||
{
|
||||
"NAME": "k",
|
||||
"TYPE": "float",
|
||||
"DEFAULT": 0.3,
|
||||
"MIN": 0.001,
|
||||
"MAX": 0.999
|
||||
},
|
||||
{
|
||||
"NAME": "h",
|
||||
"TYPE": "float",
|
||||
"DEFAULT": 0.5,
|
||||
"MIN": 0.0,
|
||||
"MAX": 1.0
|
||||
},
|
||||
{
|
||||
"NAME": "j",
|
||||
"TYPE": "float",
|
||||
"DEFAULT": 0.5,
|
||||
"MIN": 0.0,
|
||||
"MAX": 1.0
|
||||
},
|
||||
{
|
||||
"NAME": "c",
|
||||
"TYPE": "float",
|
||||
"DEFAULT": 0.632,
|
||||
"MIN": 0.001,
|
||||
"MAX":0.999
|
||||
},
|
||||
{
|
||||
"NAME": "s",
|
||||
"TYPE": "float",
|
||||
"DEFAULT": 0.131,
|
||||
"MIN": 0.001,
|
||||
"MAX":0.999
|
||||
},
|
||||
{
|
||||
"NAME": "e",
|
||||
"TYPE": "float",
|
||||
"DEFAULT": 0.3,
|
||||
"MIN": 0.001,
|
||||
"MAX":0.999
|
||||
},
|
||||
{
|
||||
"NAME": "u",
|
||||
"TYPE": "float",
|
||||
"DEFAULT": 0.17,
|
||||
"MIN": 0.001,
|
||||
"MAX":0.999
|
||||
},
|
||||
{
|
||||
"NAME": "m",
|
||||
"TYPE": "float",
|
||||
"DEFAULT": 0.3,
|
||||
"MIN": 0.001,
|
||||
"MAX": 0.999
|
||||
}
|
||||
]
|
||||
}*/
|
||||
|
||||
// edit of http://glslsandbox.com/e#18752.0
|
||||
// additional iputs added by Doctor Mojo
|
||||
uniform vec2 mouse;
|
||||
|
||||
vec3 iResolution = vec3(RENDERSIZE, 1.0);
|
||||
float iGlobalTime = TIME;
|
||||
|
||||
float gTime = iGlobalTime*0.5;
|
||||
|
||||
void main( void )
|
||||
{
|
||||
float f = 1.0;
|
||||
float g = 1.0;
|
||||
vec2 res = iResolution.xy;
|
||||
vec2 mou = mouse.xy;
|
||||
|
||||
//if (mouse.x < 0.5)
|
||||
//{
|
||||
mou.x = sin(gTime * e)*sin(gTime * u) * 1. + sin(gTime * m);
|
||||
mou.y = (1.0-cos(gTime * c))*sin(gTime * s)*1.0+cos(gTime * k);
|
||||
mou = (mou+1.0) * res;
|
||||
//}
|
||||
vec2 z = ((-res+2.0 * gl_FragCoord.xy) / res.y);
|
||||
vec2 p = ((-res+2.0+mou) / res.y) * j;
|
||||
for( int i = 0; i < 24; i++)
|
||||
{
|
||||
float d = dot(z,z);
|
||||
z = (vec2( z.x, -z.y ) / d) + p * h;
|
||||
z.x = 1.0-abs(z.x);
|
||||
f = max( f-d, (dot(z-p,z-p) ));
|
||||
g = min( g*d, sin(dot(z+p,z+p))+1.0);
|
||||
}
|
||||
f = abs(-log(f) / 3.5);
|
||||
g = abs(-log(g) / 8.0);
|
||||
gl_FragColor = vec4(min(vec3(g, g*f, f), 1.0),1.0);
|
||||
}
|
||||
@@ -0,0 +1,187 @@
|
||||
// SaturdayShader Week 31 : WaveShapes
|
||||
// by Joseph Fiola (http://www.joefiola.com)
|
||||
// 2016-03-26
|
||||
//modified by Sprohgis
|
||||
|
||||
// Based on shader by Shadertoy user smb02dunnal entitiled "Electro-Prim's" - https://www.shadertoy.com/view/Mll3WS
|
||||
// https://twitter.com/AlexWDunn
|
||||
// Sadly it's not working with VDMX. Gan somone please make it work.
|
||||
|
||||
|
||||
/*{
|
||||
"CREDIT": "Joseph Fiola",
|
||||
"DESCRIPTION": "",
|
||||
"CATEGORIES": [
|
||||
"Generator"
|
||||
],
|
||||
"INPUTS": [
|
||||
{
|
||||
"NAME": "shape",
|
||||
"TYPE": "long",
|
||||
"VALUES": [
|
||||
0,
|
||||
1
|
||||
],
|
||||
"LABELS": [
|
||||
"triangle",
|
||||
"square"
|
||||
],
|
||||
"DEFAULT": 0
|
||||
},
|
||||
{
|
||||
"NAME": "triside1",
|
||||
"TYPE": "float",
|
||||
"DEFAULT": 3,
|
||||
"MIN": 0,
|
||||
"MAX": 3
|
||||
},
|
||||
{
|
||||
"NAME": "squareside1",
|
||||
"TYPE": "float",
|
||||
"DEFAULT": 1,
|
||||
"MIN": 0,
|
||||
"MAX": 10
|
||||
},
|
||||
{
|
||||
"NAME": "zoom",
|
||||
"TYPE": "float",
|
||||
"DEFAULT": 1,
|
||||
"MIN": 0,
|
||||
"MAX": 10
|
||||
},
|
||||
{
|
||||
"NAME": "rotate",
|
||||
"TYPE": "float",
|
||||
"DEFAULT": 0,
|
||||
"MIN": 0,
|
||||
"MAX": 1
|
||||
},
|
||||
{
|
||||
"NAME": "twist",
|
||||
"TYPE": "float",
|
||||
"DEFAULT": 0.02,
|
||||
"MIN": 0,
|
||||
"MAX": 1
|
||||
},
|
||||
{
|
||||
"NAME": "tunnel",
|
||||
"TYPE": "float",
|
||||
"DEFAULT": 1.1,
|
||||
"MIN": 0.25,
|
||||
"MAX": 1.75
|
||||
},
|
||||
{
|
||||
"NAME": "thickness",
|
||||
"TYPE": "float",
|
||||
"DEFAULT": 0.003,
|
||||
"MIN": 0,
|
||||
"MAX": 0.2
|
||||
},
|
||||
{
|
||||
"NAME": "amplitude",
|
||||
"TYPE": "float",
|
||||
"DEFAULT": 0,
|
||||
"MIN": 0,
|
||||
"MAX": 100
|
||||
},
|
||||
{
|
||||
"NAME": "frequency",
|
||||
"TYPE": "float",
|
||||
"DEFAULT": 0,
|
||||
"MIN": 0,
|
||||
"MAX": 50
|
||||
},
|
||||
{
|
||||
"NAME": "band",
|
||||
"TYPE": "float",
|
||||
"DEFAULT": 0,
|
||||
"MIN": -0.5,
|
||||
"MAX": 1
|
||||
},
|
||||
{
|
||||
"NAME": "pos",
|
||||
"TYPE": "point2D",
|
||||
"DEFAULT": [
|
||||
0.5,
|
||||
0.5
|
||||
],
|
||||
"MIN": [
|
||||
0,
|
||||
0
|
||||
],
|
||||
"MAX": [
|
||||
1,
|
||||
1
|
||||
]
|
||||
}
|
||||
]
|
||||
}*/
|
||||
|
||||
// line commented out enabling compile in xLights by Old Salt
|
||||
// precision mediump float;
|
||||
|
||||
#define PI 3.14159265359
|
||||
#define TWO_PI 6.28318530718
|
||||
|
||||
float electro(vec2 uv, float d, float f, float o, float a, float b)
|
||||
{
|
||||
|
||||
float theta = atan(uv.y,uv.x);
|
||||
|
||||
float amp = smoothstep(0.0, 1.0, (sin(theta + TIME * PI)*0.5+0.5)-b)*a;
|
||||
float phase = d + sin(theta * f + o + TIME * PI) * amp;
|
||||
|
||||
return sin(clamp(phase, 0.0, PI*2.0) + PI/2.0) + 1.0005;
|
||||
}
|
||||
|
||||
mat2 rotate2d(float _angle){
|
||||
return mat2(cos(_angle),-sin(_angle),
|
||||
sin(_angle),cos(_angle));
|
||||
}
|
||||
|
||||
void main()
|
||||
{
|
||||
const float radius = 0.1;
|
||||
|
||||
vec2 uv = gl_FragCoord.xy / RENDERSIZE.xy;
|
||||
uv -= vec2(pos);
|
||||
uv.x *= RENDERSIZE.x/RENDERSIZE.y;
|
||||
|
||||
uv = rotate2d(rotate*-TWO_PI) * uv;
|
||||
uv *= zoom;
|
||||
|
||||
float grey = 0.0;
|
||||
float alpha = 1.0;
|
||||
|
||||
for(int i = 0; i < 20; i++) {
|
||||
|
||||
float d = 0.0;
|
||||
|
||||
//triangle
|
||||
if (shape == 0){
|
||||
float root2 = sqrt(triside1);
|
||||
d = dot(uv, vec2(0.0,-2.0));
|
||||
d = max(d, dot(uv, vec2(-root2,1.0)));
|
||||
d = max(d, dot(uv, vec2( root2,1.0)));
|
||||
}
|
||||
|
||||
//square
|
||||
if (shape == 1){
|
||||
d = max(abs(uv).x*squareside1, abs(uv).y);
|
||||
}
|
||||
|
||||
grey += 1.0 - smoothstep(0.0, thickness, electro(uv, d/radius, frequency, 0.0 * PI, amplitude, band));
|
||||
grey += 1.0 - smoothstep(0.0, thickness, electro(uv, d/radius, frequency, 0.5 * PI, amplitude, band));
|
||||
grey += 1.0 - smoothstep(0.0, thickness, electro(uv, d/radius, frequency, 1.0 * PI, amplitude, band));
|
||||
|
||||
|
||||
//tunnel
|
||||
uv *= tunnel;
|
||||
|
||||
//twist
|
||||
uv = rotate2d(twist*-TWO_PI) * uv;
|
||||
}
|
||||
|
||||
|
||||
gl_FragColor = vec4(vec3(grey),1.0);
|
||||
}
|
||||
@@ -0,0 +1,142 @@
|
||||
/*
|
||||
{
|
||||
"CATEGORIES" : [
|
||||
"Generator"
|
||||
],
|
||||
"DESCRIPTION" : "Twin Rays",
|
||||
"ISFVSN" : "2",
|
||||
"INPUTS" : [
|
||||
{
|
||||
"NAME" : "rate",
|
||||
"TYPE" : "float",
|
||||
"MAX" : 0.059999999999999998,
|
||||
"DEFAULT" : -0.016063844785094261,
|
||||
"LABEL" : "SPEED",
|
||||
"MIN" : -0.059999999999999998
|
||||
},
|
||||
{
|
||||
"NAME" : "colorIN",
|
||||
"TYPE" : "color",
|
||||
"DEFAULT" : [
|
||||
1,
|
||||
0.20000000298023224,
|
||||
0.10000000149011612,
|
||||
1
|
||||
],
|
||||
"LABEL" : "Color"
|
||||
},
|
||||
{
|
||||
"NAME" : "Count",
|
||||
"TYPE" : "float",
|
||||
"MAX" : 25,
|
||||
"DEFAULT" : 18.131168365478516,
|
||||
"LABEL" : "Ray Count",
|
||||
"MIN" : 3
|
||||
},
|
||||
{
|
||||
"NAME" : "posY",
|
||||
"TYPE" : "float",
|
||||
"MAX" : 0.5,
|
||||
"DEFAULT" : -0.33067807555198669,
|
||||
"LABEL" : "Position Y",
|
||||
"MIN" : -0.5
|
||||
},
|
||||
{
|
||||
"NAME" : "posX",
|
||||
"TYPE" : "float",
|
||||
"MAX" : 0.5,
|
||||
"DEFAULT" : 0.1662137508392334,
|
||||
"LABEL" : "Position X",
|
||||
"MIN" : 0
|
||||
},
|
||||
{
|
||||
"NAME" : "width",
|
||||
"TYPE" : "float",
|
||||
"MAX" : 0.45,
|
||||
"DEFAULT" : 0.2891484797000885,
|
||||
"LABEL" : "Ray Width",
|
||||
"MIN" : 0.01
|
||||
},
|
||||
{
|
||||
"NAME" : "soft",
|
||||
"TYPE" : "float",
|
||||
"MAX" : 0.99,
|
||||
"DEFAULT" : 0.2891484797000885,
|
||||
"LABEL" : "Ray Softness",
|
||||
"MIN" : 0.01
|
||||
}
|
||||
],
|
||||
|
||||
"CREDIT" : "howie.tv"
|
||||
}
|
||||
*/
|
||||
// its a howie.tv thing
|
||||
|
||||
// _read the time buffer
|
||||
|
||||
#define M_PI 3.1415926535897932384626433832795
|
||||
|
||||
|
||||
// rgb2hsv
|
||||
vec3 rgb2hsv(vec3 c)
|
||||
{
|
||||
vec4 K = vec4(0.0, -1.0 / 3.0, 2.0 / 3.0, -1.0);
|
||||
vec4 p = mix(vec4(c.bg, K.wz), vec4(c.gb, K.xy), step(c.b, c.g));
|
||||
vec4 q = mix(vec4(p.xyw, c.r), vec4(c.r, p.yzx), step(p.x, c.r));
|
||||
float d = q.x - min(q.w, q.y);
|
||||
float e = 1.0e-10;
|
||||
return vec3(abs(q.z + (q.w - q.y) / (6.0 * d + e)), d / (q.x + e), q.x);
|
||||
}
|
||||
|
||||
// hsv2rgb
|
||||
vec3 hsv2rgb(vec3 c)
|
||||
{
|
||||
vec4 K = vec4(1.0, 2.0 / 3.0, 1.0 / 3.0, 3.0);
|
||||
vec3 p = abs(fract(c.xxx + K.xyz) * 6.0 - K.www);
|
||||
return c.z * mix(K.xxx, clamp(p - K.xxx, 0.0, 1.0), c.y);
|
||||
}
|
||||
|
||||
float rays(vec2 uv, float c, float w, float s)
|
||||
{
|
||||
uv.x = fract(uv.x*c)-0.5;
|
||||
return smoothstep(-w , -w*s, uv.x) * smoothstep(w, w*s, uv.x);
|
||||
}
|
||||
|
||||
void main() {
|
||||
|
||||
float ratio = RENDERSIZE.y/RENDERSIZE.x;
|
||||
vec2 uv = vec2( isf_FragNormCoord.x -0.5, (isf_FragNormCoord.y -0.5) * ratio);
|
||||
|
||||
vec3 color;
|
||||
vec3 col;
|
||||
vec2 UV;
|
||||
float m;
|
||||
float angle;
|
||||
float radius;
|
||||
float count = floor(Count);
|
||||
uv.y -= posY;
|
||||
|
||||
vec3 hvs = rgb2hsv(colorIN.rgb);
|
||||
vec3 colorA = hsv2rgb(vec3(hvs.x +0.1, hvs.y, hvs.z));
|
||||
vec3 colorB = hsv2rgb(vec3(hvs.x -0.1, hvs.y, hvs.z));
|
||||
|
||||
for(int i = 0; i< 2; i++)
|
||||
{
|
||||
UV = uv;
|
||||
UV.x -= posX*(1.0-(float(i)*2.0));
|
||||
UV.x *= 1.0-(float(i)*2.0);
|
||||
angle = atan(UV.y, UV.x);
|
||||
angle = angle/((M_PI*4.0)*0.5) + TIME*rate ;
|
||||
radius = length(UV);
|
||||
UV = vec2(angle, radius*1.5);
|
||||
col = mix(colorA,colorB, abs(UV.y)/ratio);
|
||||
|
||||
|
||||
m = rays(UV,count,width,soft);
|
||||
m = pow(m,3.0);
|
||||
color += col*m;
|
||||
}
|
||||
|
||||
|
||||
gl_FragColor = vec4(color,1.0);
|
||||
}
|
||||
@@ -0,0 +1,144 @@
|
||||
/*{
|
||||
"CREDIT": "by mojovideotech",
|
||||
"CATEGORIES": [
|
||||
"generator",
|
||||
"circuits",
|
||||
"2d",
|
||||
"fractal",
|
||||
"Kaliset"
|
||||
],
|
||||
"ISFVSN" : "2",
|
||||
"DESCRIPTION": "",
|
||||
"INPUTS": [
|
||||
{
|
||||
"NAME" : "center",
|
||||
"TYPE" : "point2D",
|
||||
"DEFAULT" : [ 0.0, 0.0 ],
|
||||
"MAX" : [ 3.0, 3.0 ],
|
||||
"MIN" : [ -3.0, -3.0 ]
|
||||
},
|
||||
{
|
||||
"NAME" : "zoom",
|
||||
"TYPE" : "float",
|
||||
"DEFAULT" : 1.5,
|
||||
"MIN" : 0.5,
|
||||
"MAX" : 3.0
|
||||
},
|
||||
{
|
||||
"NAME" : "offset",
|
||||
"TYPE" : "float",
|
||||
"DEFAULT" : 0.05,
|
||||
"MIN" : 0.01,
|
||||
"MAX" : 0.1
|
||||
},
|
||||
{
|
||||
"NAME" : "glow",
|
||||
"TYPE" : "float",
|
||||
"DEFAULT" : 3.0,
|
||||
"MIN" : 0.0,
|
||||
"MAX" : 9.0
|
||||
},
|
||||
{
|
||||
"NAME" : "intensity",
|
||||
"TYPE" : "float",
|
||||
"DEFAULT" : 0.00125,
|
||||
"MIN" : 0.0005,
|
||||
"MAX" : 0.0025
|
||||
},
|
||||
{
|
||||
"NAME" : "trace",
|
||||
"TYPE" : "float",
|
||||
"DEFAULT" : 40.0,
|
||||
"MIN" : 10.0,
|
||||
"MAX" : 100.0
|
||||
},
|
||||
{
|
||||
"NAME" : "runtime",
|
||||
"TYPE" : "float",
|
||||
"DEFAULT" : 24.0,
|
||||
"MIN" : 6.0,
|
||||
"MAX" : 60.0
|
||||
},
|
||||
{
|
||||
"NAME" : "rate",
|
||||
"TYPE" : "float",
|
||||
"DEFAULT" : 0.5,
|
||||
"MIN" : -2.0,
|
||||
"MAX" : 2.0
|
||||
}
|
||||
]
|
||||
}
|
||||
*/
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
// UltimateKaliCircuits by mojovideotech
|
||||
//
|
||||
// based on :
|
||||
// shadertoy/XlX3Rj by Kali
|
||||
//
|
||||
// Creative Commons Attribution-NonCommercial-ShareAlike 3.0
|
||||
////////////////////////////////////////////////////////////
|
||||
|
||||
|
||||
|
||||
#define pisq 9.869604401089359 // pi squared, pi^2
|
||||
#define twpi 6.283185307179586 // two pi, 2*pi
|
||||
#define phicu 4.236067977499791 // phi cubed, phi^3
|
||||
#define cuphi 1.173984996705329 // cube root of phi
|
||||
#define rctwpi 0.159154943091895 // reciprocal of twpi, 1/twpi
|
||||
#define r36 0.027777777777778
|
||||
|
||||
|
||||
vec3 color = vec3(0.0,0.5,0.0);
|
||||
float S = glow;
|
||||
float T = rate*TIME*0.005;
|
||||
|
||||
vec2 hash22(vec2 p) { return fract(vec2(21.0, 97.0)*sin(dot(p, vec2(92.0, 61.0)))); }
|
||||
|
||||
void formula(vec2 z, float f)
|
||||
{
|
||||
float m = 0.0;
|
||||
float o, ot2, ot=ot2=10000.0;
|
||||
for (int i=0; i<9; i++) {
|
||||
z = abs(z)/clamp(dot(z,z), 0.1, 0.5)-f;
|
||||
float l = length(z);
|
||||
o = min(max(abs(min(z.x, z.y)),-l+0.25), abs(l-0.25));
|
||||
ot = min(ot, o);
|
||||
ot2 = min(l*0.1, ot2);
|
||||
m = max(m, float(i)*(1.0-abs(sign(ot-o))));
|
||||
}
|
||||
m += 1.0;
|
||||
float w = intensity*m*2.0;
|
||||
float circ = pow(max(0.0,w-ot2)/w,6.0);
|
||||
S += max(pow(max(0.0,w-ot)/w,0.25),circ);
|
||||
vec3 col = vec3(hash22(z),f);
|
||||
color += col*(0.4+mod(m/9.0-T*trace+ot2*2.0, 1.0)*1.6);
|
||||
color += vec3(1.0, 0.7, 0.3)*circ*(10.0-m)*3.0
|
||||
*smoothstep(0.0, 0.5, vec3(f, isf_FragNormCoord));
|
||||
}
|
||||
|
||||
void main()
|
||||
{
|
||||
vec2 pos = 2.0 * gl_FragCoord.xy - RENDERSIZE.xy;
|
||||
pos /= max(RENDERSIZE.x,RENDERSIZE.y);
|
||||
vec2 uv = pos-center;
|
||||
uv *= 4.0-zoom;
|
||||
float a = T + mod(T, floor(runtime))*cuphi;
|
||||
float b = a*phicu;
|
||||
uv *= mat2(cos(b),sin(b),-sin(b),cos(b));
|
||||
uv += vec2(sin(a),cos(a*cuphi))*pisq;
|
||||
uv *= offset;
|
||||
float pix = cuphi/RENDERSIZE.x*offset;
|
||||
float c = 1.5+mod(floor(T), 16.0)*0.125;
|
||||
for (int aa=0; aa<36; aa++) {
|
||||
vec2 aauv = floor(vec2(float(aa)*rctwpi, mod(float(aa), twpi)));
|
||||
formula(uv+aauv*pix, c);
|
||||
}
|
||||
S *= r36, color *= r36;
|
||||
vec3 colo = mix(vec3(0.025), color, S)*(1.5-length(pos));
|
||||
colo *= vec3(1.2, 1.1, 1.0);
|
||||
gl_FragColor = vec4(colo, 1.0);
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -0,0 +1,100 @@
|
||||
/*{
|
||||
"CREDIT": "by crackhouse",
|
||||
"DESCRIPTION": "",
|
||||
"CATEGORIES": [
|
||||
"generator"
|
||||
],
|
||||
"INPUTS": [
|
||||
{
|
||||
"NAME": "R",
|
||||
"TYPE": "float",
|
||||
"DEFAULT": 1,
|
||||
"MIN": 0.1,
|
||||
"MAX":9
|
||||
},
|
||||
|
||||
{
|
||||
"NAME": "grid",
|
||||
"TYPE": "float",
|
||||
"DEFAULT": 5,
|
||||
"MIN": 0.1,
|
||||
"MAX": 1
|
||||
}
|
||||
|
||||
|
||||
]
|
||||
}*/
|
||||
|
||||
vec3 iResolution = vec3(RENDERSIZE, 1.);
|
||||
float iTime = TIME;
|
||||
|
||||
// Anaglyph Structure
|
||||
// Framed for https://fanzine.cookie.paris/
|
||||
// Licensed under hippie love conspiracy
|
||||
// Leon Denise (ponk) 2019.10.24
|
||||
// Using code from Inigo Quilez
|
||||
|
||||
|
||||
mat2 rot (float a) { float c=cos(a),s=sin(a); return mat2(c,-s,s,c); }
|
||||
float random (in vec2 st) { return fract(sin(dot(st.xy,vec2(12.9898,78.233)))*43758.5453123); }
|
||||
|
||||
vec3 look (vec3 eye, vec3 target, vec2 anchor) {
|
||||
vec3 forward = normalize(target-eye);
|
||||
vec3 right = normalize(cross(forward, vec3(0,1,0.)));
|
||||
vec3 up = normalize(cross(right, forward));
|
||||
return normalize(forward * .5 + right * anchor.x + up * anchor.y);
|
||||
}
|
||||
|
||||
|
||||
float map (vec3 pos) {
|
||||
float scene = 10.0;
|
||||
float r = R;
|
||||
const float count = 8.0;
|
||||
for (float index = count; index > 0.0; --index)
|
||||
{
|
||||
pos.xz = abs(pos.xz)-1.5*r;
|
||||
pos.xz *= rot(0.4/r + iTime * 0.1)-sin(grid*0.03);
|
||||
pos.yz *= rot(1.5/r + iTime * 0.05)-sin(grid*0.03);
|
||||
pos.yx *= rot(.2/r + iTime * 0.05)+sin(grid*0.03);
|
||||
scene = min(scene, length(pos.xy)-0.001);
|
||||
scene = min(scene, length(pos)-.3*r)*cos(.2-grid*0.05);
|
||||
r /= 1.8;
|
||||
}
|
||||
return scene;
|
||||
}
|
||||
|
||||
vec4 raymarch (vec3 eye, vec3 ray) {
|
||||
float dither = random(ray.xy+fract(iTime));
|
||||
vec4 result = vec4(eye, 0);
|
||||
float total = 0.0;
|
||||
float maxt = 20.0;
|
||||
const float count = 30.;
|
||||
for (float index = count; index > 0.0; --index) {
|
||||
result.xyz = eye + ray * total;
|
||||
float dist = map(result.xyz);
|
||||
if (dist < 0.001 + total * .002 || total > maxt) {
|
||||
result.w = index / count;
|
||||
break;
|
||||
}
|
||||
dist *= 0.9 + 0.1 * dither;
|
||||
total += dist;
|
||||
}
|
||||
result.w *= step(total, maxt);
|
||||
return result;
|
||||
}
|
||||
|
||||
void mainImage( out vec4 fragColor, in vec2 fragCoord ){
|
||||
vec2 uv = (fragCoord.xy-0.5*iResolution.xy)/iResolution.y;
|
||||
vec3 eye = vec3(1.,0.5,-4.5);
|
||||
vec3 at = vec3(0);
|
||||
vec3 ray = look(eye, at, uv);
|
||||
vec3 eyeoffset = 0.02*normalize(cross(normalize(at-eye), vec3(0,1.*grid,0)));
|
||||
|
||||
vec4 resultLeft = raymarch(eye-eyeoffset, ray);
|
||||
vec4 resultRight = raymarch(eye+eyeoffset, ray);
|
||||
fragColor = vec4(resultLeft.w,vec2(resultRight.w),1);
|
||||
}
|
||||
|
||||
void main(void) {
|
||||
mainImage(gl_FragColor, gl_FragCoord.xy);
|
||||
}
|
||||
|
After Width: | Height: | Size: 2.7 MiB |
|
After Width: | Height: | Size: 2.8 MiB |
|
After Width: | Height: | Size: 6.5 MiB |
|
After Width: | Height: | Size: 1.8 MiB |
|
After Width: | Height: | Size: 30 MiB |
|
After Width: | Height: | Size: 7.9 MiB |
|
After Width: | Height: | Size: 9.0 MiB |
|
After Width: | Height: | Size: 9.6 MiB |
|
After Width: | Height: | Size: 460 KiB |
|
After Width: | Height: | Size: 8.4 MiB |
|
After Width: | Height: | Size: 2.5 MiB |
|
After Width: | Height: | Size: 9.3 MiB |
|
After Width: | Height: | Size: 816 KiB |
|
After Width: | Height: | Size: 28 MiB |
|
After Width: | Height: | Size: 182 KiB |
|
After Width: | Height: | Size: 4.6 MiB |
|
After Width: | Height: | Size: 4.0 MiB |
|
After Width: | Height: | Size: 5.0 MiB |
|
After Width: | Height: | Size: 12 MiB |
|
After Width: | Height: | Size: 7.4 MiB |
|
After Width: | Height: | Size: 9.2 MiB |
|
After Width: | Height: | Size: 5.2 MiB |
|
After Width: | Height: | Size: 7.7 MiB |
|
After Width: | Height: | Size: 4.1 MiB |
|
After Width: | Height: | Size: 9.8 MiB |
|
After Width: | Height: | Size: 9.2 MiB |
|
After Width: | Height: | Size: 715 KiB |
|
After Width: | Height: | Size: 513 KiB |
|
After Width: | Height: | Size: 476 KiB |
|
After Width: | Height: | Size: 1019 KiB |
|
After Width: | Height: | Size: 1.5 MiB |
|
After Width: | Height: | Size: 8.6 MiB |
|
After Width: | Height: | Size: 818 KiB |
|
After Width: | Height: | Size: 296 KiB |
|
After Width: | Height: | Size: 761 KiB |
|
After Width: | Height: | Size: 603 KiB |
|
After Width: | Height: | Size: 1.7 MiB |
|
After Width: | Height: | Size: 8.9 MiB |
|
After Width: | Height: | Size: 731 KiB |
|
After Width: | Height: | Size: 2.2 MiB |
|
After Width: | Height: | Size: 1.1 MiB |
|
After Width: | Height: | Size: 7.0 MiB |
|
After Width: | Height: | Size: 8.6 MiB |
|
After Width: | Height: | Size: 3.0 MiB |
|
After Width: | Height: | Size: 7.3 MiB |
|
After Width: | Height: | Size: 15 MiB |
|
After Width: | Height: | Size: 2.4 MiB |
|
After Width: | Height: | Size: 9.2 MiB |
|
After Width: | Height: | Size: 1.6 MiB |
|
After Width: | Height: | Size: 9.0 MiB |
|
After Width: | Height: | Size: 29 MiB |
|
After Width: | Height: | Size: 3.6 MiB |
|
After Width: | Height: | Size: 2.1 MiB |