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 =...