JSFiddle - React, Tailwind, and code Playground

CSS

body {
  margin: 0;
}
canvas {
  display: block;
}

JavaScript

import * as THREE from 'https://unpkg.com/three/build/three.module.js'

let camera, scene, renderer;
let geometry, material, mesh, mesh2;

init();
animate();

function init() {

    camera = new THREE.PerspectiveCamera( 70, window.innerWidth / window.innerHeight, 0.01, 10 );
    camera.position.z = 4;

    scene = new THREE.Scene();

    geometry = new THREE.SphereBufferGeometry( 1.2, 11, 8 );
    material = new THREE.MeshBasicMaterial( { color: 'green', wireframe: true } );

    var wire = new THREE.Mesh( geometry, material );
    wire.scale.setScalar( 1.01 );

    material = new THREE.ShaderMaterial( {
    	vertexShader: `
    		varying vec3 eye;
    		varying vec3 pos;
    		void main () {
                vec4 mvp = modelViewMatrix * vec4 (position, 1.0);

                pos = position;
                eye = vec3(mvp) * normalMatrix;

                gl_Position = projectionMatrix * mvp;
    		}
    	`,
    	fragmentShader: `
    		// https://www.shadertoy.com/view/XsdXRs
    		#define BOUNDING_RADIUS 1.1
    		#define COLOR1 vec3(1.0, 0.5, 0.1)
			#define COLOR2 vec3(0.5, 0.1, 0.0)
float mandelbulb(vec3 pos){
    vec3 w = pos;
    float dr = 1.0,r;
    vec3 p,p2,p4;
    float k1,k2,k3,k4,k5;

    for (int i = 0; i < 10; i++){
        r = dot(w, w);
        if (r > 4.0) break;
        dr =  pow(r, 3.5)*8.0*dr + 1.0;

        p = w;
        p2 = w * w;
        p4 = p2 * p2;

        k3 = p2.x + p2.z;
        k2 = inversesqrt( k3*k3*k3*k3*k3*k3*k3 );
        k1 = dot(p4, vec3(1)) - 6.0 * dot(p2, vec3(p2.y, p2.z, -p2.x / 3.0));
        k4 = dot(p2, vec3(1, -1, 1));
        k5 = 8.0*p.y*k4*k1*k2;

        w = pos + vec3(8.0*k5*p.x*p.z*(p2.x-p2.z)*(p4.x-6.0*p2.x*p2.z+p4.z),
                       -16.0*p2.y*k3*k4*k4 + k1*k1,
                       -k5*(p4.x*p4.x - 28.0*p4.x*p2.x*p2.z + 
                            70.0*p4.x*p4.z - 28.0*p2.x*p2.z*p4.z + p4.z*p4.z));
    }
    return log(r)*sqrt(r)/dr;
}

float dist(vec3 p) {
    return 0.385*mandelbulb(p);
}

bool...