sdfJulia

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

110 total functionsUpdated: Invalid Date

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'])