Volver a presets
Mandelbulb-style iterative kernel
Ray marching with a surface hit condition
Finite-difference normal estimation
Diffuse and specular lighting

Fractal 3D

En Fractal 3D Volume Shader, la sección “Preset overview” se centra en: Interactive 3D fractal with complex mathematical patterns.. Sirve para entender complejidad de shader, ruta gráfica del navegador y estabilidad GPU.

En pruebas reales, fija navegador, preset, tamaño de ventana, energía y estado térmico. Si el equipo se calienta o se bloquea, baja la complejidad o detén la prueba.

Factores de rendimiento

Nested iterations

Para comparar resultados de Volume Shader BM, fija navegador, preset, tamaño de ventana, modo de energía y estado térmico; esos factores cambian FPS y frame time.

Normal estimation

Para comparar resultados de Volume Shader BM, fija navegador, preset, tamaño de ventana, modo de energía y estado térmico; esos factores cambian FPS y frame time.

Long runs

Para comparar resultados de Volume Shader BM, fija navegador, preset, tamaño de ventana, modo de energía y estado térmico; esos factores cambian FPS y frame time.

Parámetros editables

MAXITER

Para comparar resultados de Volume Shader BM, fija navegador, preset, tamaño de ventana, modo de energía y estado térmico; esos factores cambian FPS y frame time.

Ray step distance

Para comparar resultados de Volume Shader BM, fija navegador, preset, tamaño de ventana, modo de energía y estado térmico; esos factores cambian FPS y frame time.

Lighting samples

Para comparar resultados de Volume Shader BM, fija navegador, preset, tamaño de ventana, modo de energía y estado térmico; esos factores cambian FPS y frame time.

#version 300 es
precision highp float;
out vec4 outColor;
in vec2 v_uv;
uniform float u_time;
uniform vec2 u_resolution;

#define PI 3.14159265358979324
#define MAXITER 5
#define MAXDIST 6.0

float fractalKernel(vec3 ver) {
  vec3 a = ver;
  float b, c, d, e;
  
  for(int i = 0; i < MAXITER; i++) {
    b = length(a);
    if(b > MAXDIST) break;
    
    c = atan(a.y, a.x) * 8.0;
    d = acos(clamp(a.z / b, -1.0, 1.0)) * 8.0;
    b = pow(b, 8.0);
    
    a = vec3(