JSFiddle - React, Tailwind, and code Playground

by realhunts

HTML

<script src="https://threejs.org/build/three.min.js"></script>
<script src="https://threejs.org/examples/js/controls/OrbitControls.js"></script>
<script src="https://mevedia.com/share/ChainableOnBeforeCompile.js?v6"></script>
<script src="https://mevedia.com/share/ShaderMaterialExtend.js"></script>

JavaScript

// a basic three.js scene

var container, renderer, scene, camera, controls;

init();
animate();

function init() {

    // renderer
    renderer = new THREE.WebGLRenderer({
        antialias: false
    });
    renderer.setSize(window.innerWidth, window.innerHeight);
    renderer.setClearColor(0xccccff);
    container = document.createElement('div');
    document.body.appendChild(container);
    container.appendChild(renderer.domElement);

    // scene
    scene = new THREE.Scene();

    // camera
    camera = new THREE.PerspectiveCamera(45, window.innerWidth / window.innerHeight, 1, 10000);
    camera.position.set(0, 200, 800);
    camera.lookAt(scene.position);

    // (camera) controls
    // mouse controls: left button to rotate, 
    //    mouse wheel to zoom, right button to pan
    controls = new THREE.OrbitControls(camera, renderer.domElement);

    // light    
    var light = new THREE.PointLight(0xffffff);
    light.position.set(100, 250, 250);
    scene.add(light);

    // mesh
    THREE.MaterialCallback.use();
    // Patches

    const TestPatch = {
      compile: function( shader, plugin, object ) {
      
         const color = new THREE.Color;
        
          if ( object )color.copy( object.tint );
            
          THREE.patchShader(shader, {
            
            uniforms: {
              tintColor: color,
              noiseStrength: 0.0, 
              resolution: new THREE.Vector2(.5, .5),
              time: 0.0,
              uvScale: 1.0,
              intensity: 1.0
            },
            
            header: `
uniform vec3 tintColor;
uniform float noiseStrength;
uniform vec2 resolution;
varying vec2 newUv;
uniform float intensity;
uniform float time; uniform float uvScale; vec2 hash2(vec2 p ) { return fract(sin(vec2(dot(p, vec2(123.4, 748.6)), dot(p, vec2(547.3, 659.3))))*5232.85324); } float hash(vec2 p) { return fract(sin(dot(p, vec2(43.232, 75.876)))*4526.3257); } float voronoi(vec2 p) { vec2 n = floor(p); vec2 f =...