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="//cdn.rawgit.com/mrdoob/three.js/master/examples/js/loaders/GLTFLoader.js"></script>
<script src="https://cdn.rawgit.com/mrdoob/three.js/dev/examples/js/shaders/CopyShader.js"></script>
<script src="https://cdn.rawgit.com/mrdoob/three.js/dev/examples/js/postprocessing/EffectComposer.js"></script>
<script src="https://cdn.rawgit.com/mrdoob/three.js/dev/examples/js/postprocessing/ShaderPass.js"></script>
<script src="https://cdn.rawgit.com/mrdoob/three.js/dev/examples/js/postprocessing/RenderPass.js"></script>
<script id="vertexShader" type="x-shader/x-vertex">
varying vec2 vUv;
void main() {
vUv = uv;
gl_Position = projectionMatrix
* modelViewMatrix
* vec4( position, 1.0 );
}
</script>
<script id="fragmentShader" type="x-shader/x-fragment">
uniform float amount;
uniform sampler2D tDiffuse;
varying vec2 vUv;
float random( vec2 p )
{
vec2 K1 = vec2(
23.14069263277926, // e^pi (Gelfond's constant)
2.665144142690225 // 2^sqrt(2) (Gelfond–Schneider constant)
);
return fract( cos( dot(p,K1) ) * 12345.6789 );
}
void main() {
vec4 color = texture2D( tDiffuse, vUv );
vec2 uvRandom = vUv;
uvRandom.y *= random(vec2(uvRandom.y,amount));
color.rgb += random(uvRandom)*0.10;
gl_FragColor = vec4( color );
}
</script>
JavaScript
// a basic three.js scene
var container, renderer, scene, camera, controls;
var composer;
var textureLoader = new THREE.TextureLoader();
THREE.TextureLoader.crossOrigin = '';
init();
animate();
function init() {
// renderer
renderer = new THREE.WebGLRenderer({
antialias: true
});
renderer.setSize(window.innerWidth, window.innerHeight);
renderer.setClearColor("black");
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(-39.87297668118818, 204.09804354125671, 435.0968417036715);
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);
//controls.enabled = false
// light
var lt = new THREE.AmbientLight( "gray" ); // soft white light
scene.add( lt );
var light = new THREE.PointLight(0xffffff);
light.position.set(100, 250, 250);
scene.add(light);
// mesh
var sphereGeometry = new THREE.SphereGeometry(50, 5, 5);
var sphereMaterial = new THREE.MeshLambertMaterial({
color: new THREE.Color(0xff0000).multiplyScalar(1.),
map: textureLoader.load('https://cdn.glitch.com/832401c3-8cbf-42db-acce-98209736affc%2Fballdimpled.png?v=1582702740544')
});
var sphere = new THREE.Mesh(sphereGeometry, sphereMaterial);
sphere.position.y = 100;
scene.add(sphere);
var scale = 100
var loader = new THREE.GLTFLoader();
var url =
"https://cdn.glitch.com/832401c3-8cbf-42db-acce-98209736affc%2Fcat.glb?v=1582704194729";
loader.load(url, function(data) {
gltf = data;
var object;
if (gltf.scene !== undefined) {
object =...