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

Fractal 3D

Em Fractal 3D Volume Shader, a seção “Preset overview” foca em: Interactive 3D fractal with complex mathematical patterns.. Ela ajuda a entender complexidade do shader, caminho gráfico do navegador e estabilidade da GPU.

Em testes reais, fixe navegador, preset, tamanho da janela, energia e estado térmico. Se o dispositivo aquecer ou travar, reduza a complexidade ou pare o teste.

Fatores de desempenho

Nested iterations

Para comparar resultados do Volume Shader BM, fixe navegador, preset, tamanho de janela, modo de energia e estado térmico; esses fatores alteram FPS e frame time.

Normal estimation

Para comparar resultados do Volume Shader BM, fixe navegador, preset, tamanho de janela, modo de energia e estado térmico; esses fatores alteram FPS e frame time.

Long runs

Para comparar resultados do Volume Shader BM, fixe navegador, preset, tamanho de janela, modo de energia e estado térmico; esses fatores alteram FPS e frame time.

Parâmetros editáveis

MAXITER

Para comparar resultados do Volume Shader BM, fixe navegador, preset, tamanho de janela, modo de energia e estado térmico; esses fatores alteram FPS e frame time.

Ray step distance

Para comparar resultados do Volume Shader BM, fixe navegador, preset, tamanho de janela, modo de energia e estado térmico; esses fatores alteram FPS e frame time.

Lighting samples

Para comparar resultados do Volume Shader BM, fixe navegador, preset, tamanho de janela, modo de energia e estado térmico; esses fatores alteram FPS e 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(