Zurück zu Presets
Mandelbulb-style iterative kernel
Ray marching with a surface hit condition
Finite-difference normal estimation
Diffuse and specular lighting

3D-Fraktal

In 3D-Fraktal Volume Shader behandelt „Preset overview“ vor allem: Interactive 3D fractal with complex mathematical patterns.. Das hilft beim Einordnen von Shader-Komplexität, Browser-Grafikpfad und GPU-Stabilität.

Für reale Messungen Browser, Preset, Fenstergröße, Energiemodus und thermischen Zustand fixieren. Bei Hitze oder Hängern Komplexität senken oder stoppen.

Leistungsfaktoren

Nested iterations

Für Vergleiche in Volume Shader BM müssen Browser, Preset, Fenstergröße, Energiemodus und thermischer Zustand konstant bleiben; diese Faktoren verändern FPS und Frame Time.

Normal estimation

Für Vergleiche in Volume Shader BM müssen Browser, Preset, Fenstergröße, Energiemodus und thermischer Zustand konstant bleiben; diese Faktoren verändern FPS und Frame Time.

Long runs

Für Vergleiche in Volume Shader BM müssen Browser, Preset, Fenstergröße, Energiemodus und thermischer Zustand konstant bleiben; diese Faktoren verändern FPS und Frame Time.

Editierbare Parameter

MAXITER

Für Vergleiche in Volume Shader BM müssen Browser, Preset, Fenstergröße, Energiemodus und thermischer Zustand konstant bleiben; diese Faktoren verändern FPS und Frame Time.

Ray step distance

Für Vergleiche in Volume Shader BM müssen Browser, Preset, Fenstergröße, Energiemodus und thermischer Zustand konstant bleiben; diese Faktoren verändern FPS und Frame Time.

Lighting samples

Für Vergleiche in Volume Shader BM müssen Browser, Preset, Fenstergröße, Energiemodus und thermischer Zustand konstant bleiben; diese Faktoren verändern FPS und 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(