learn GLSL from zero
ToolsCrea con shadersShader MakerCrea shaders gratis en líneaToolkitObras de shaders listas para tu webSketcher LabPinta el hero de tu landing con shaders3D StudioEl editor Three.js en tu navegador
GamesJuega con shadersOnomatoShaderEscribe una palabra y explótalaThe WatcherUn ojo que te sigueAetherVidrio líquido con un ojo adentroBloomcoreUna palabra hace crecer un jardín de luzPyrokineAvienta fuego a la paredVoltaicLa pirámide lanza rayosSurfSurfea un océano de shader

Lección 10 de 10 · Patrones en shaders

Tu patrón

Chladni, estrella, espiral, anillos. Todo visible.

Esta lección no enseña nada nuevo. Junta todo lo que aprendiste en Patterns: rayas, fract, polar, espiral, espejo, radiales, Chladni.

Tus variables. Tus frecuencias. Tu firma.

Mira el código. Cada línea ya la conoces:

Este es tu patrón. Hazlo tuyo.

PruebaCambia el 5. para más o menos radiales. Cambia el 8. para más o menos giros de la espiral. Cambia los colores. Este patrón es tuyo ahora.
Freebie

AUTOPILOT

Reemplaza la línea col += vec3(.12,.08,.2) * chladni * (1.-star); con esta:
col += iri(chladni * 0.4 + T * 0.05) * chladni * (1.-star);

El fondo respira.

El código

void main(){
  vec2 p = (2.*gl_FragCoord.xy - R) / min(R.x, R.y);
  float ang = atan(p.y, p.x);
  float d = length(p);
  float z = sin(5.*3.14*p.x)*sin(3.*3.14*p.y)+sin(3.*3.14*p.x)*sin(5.*3.14*p.y);
  float chladni = pow(abs(z), 0.8);
  float r = 0.6 + 0.2 * sin(ang*5.+T*0.3);
  float star = smoothstep(0.02, -0.02, d-r);
  float spiral = step(0.5, sin(ang*3.+d*8.-T*0.5)*.5+.5);
  float rings = smoothstep(0.03,0.0, abs(fract(d*4.)-.5)-.3);
  vec3 col = vec3(0.02, 0.015, 0.04);
  col += vec3(.12,.08,.2) * chladni * (1.-star);
  col += vec3(.95,.3,.15) * star * spiral;
  col += vec3(0.,.85,.75) * star * (1.-spiral);
  col += vec3(.95,.8,.15) * rings * .3;
  col += vec3(.5,.15,.08) * exp(-abs(d-r)*4.) * .5;
  col += vec3(.8,.6,.95) * exp(-d*3.) * .4;
  gl_FragColor = vec4(col, 1.);
}
close