sdfJulia

a signed distance field for a 4D Julia set fractal.

110 total functionsUpdated: 30/07/2026

sdfJulia

a signed distance field for a 4D Julia set fractal.

Parameters

NameTypeDescription
positionvec3<f32>3D position to evaluate.
cvec4<f32>Julia set parameter (quaternion).
iterationsf32Maximum number of iterations.
bailoutf32Bailout radius for iteration escape.

Returns

f32distance to the Julia set surface.

WGSL Code

fn sdfJulia(position: vec3<f32>, c: vec4<f32>, iterations: f32, bailout: f32) -> f32 {
  var z = vec4<f32>(position, 0.0);
  var dz = vec4<f32>(1.0, 0.0, 0.0, 0.0);
  var m = dot(z, z);
  var i = 0;
  
  // Julia set iteration
  for (i = 0; i < i32(iterations) && m < bailout * bailout; i += 1) {
    // Quaternion multiplication for dz = 2.0 * z * dz
    dz = 2.0 * vec4<f32>(
      z.x * dz.x - z.y * dz.y - z.z * dz.z - z.w * dz.w,
      z.x * dz.y + z.y * dz.x + z.z * dz.w - z.w * dz.z,
      z.x * dz.z - z.y * dz.w + z.z * dz.x + z.w * dz.y,
      z.x * dz.w + z.y * dz.z - z.z * dz.y + z.w * dz.x
    );
    
    // Quaternion multiplication for z = z * z + c
    z = vec4<f32>(
      z.x * z.x - z.y * z.y - z.z * z.z - z.w * z.w,
      z.x * z.y + z.y * z.x + z.z * z.w - z.w * z.z,
      z.x * z.z - z.y * z.w + z.z * z.x + z.w * z.y,
      z.x * z.w + z.y * z.z - z.z * z.y + z.w * z.x
    ) + c;
    
    m = dot(z, z);
  }
  
  // Compute the distance
  let dist = 0.5 * log(m) * sqrt(m) / length(dz);
  return dist;
}

About wgsl-fns

A JavaScript library providing WGSL utility functions as strings for WebGPU shader development. Includes mathematical utilities, noise generation, signed distance fields, and color manipulation functions.

Install:npm install wgsl-fns
Import:import { sdfJulia, getFns } from 'wgsl-fns'
Usage:getFns(['sdfJulia'])