Vercel
tcp/443 tcp/80
.DS_Store” is an abbreviation for “Desktop Services Store”. These files are created automatically by Apples “Finder” software (which is part of their OS).
They store information about the files within a folder, including display options of folders, such as icon positions and view settings.
It may happen that .DS_Store files inadvertently leak filenames such as database backups or private administration panels.
Severity: medium
Fingerprint: 5f32cf5d6962f09c92dfb71592dfb715025a9503ae00e62214573080d6c5ec25
Found 45 files trough .DS_Store spidering: /assets /assets/environments /assets/environments/FootprintCourt /assets/environments/FootprintCourt/negx.hdr /assets/environments/FootprintCourt/negy.hdr /assets/environments/FootprintCourt/negz.hdr /assets/environments/FootprintCourt/posx.hdr /assets/environments/FootprintCourt/posy.hdr /assets/environments/FootprintCourt/posz.hdr /assets/GrassBlade.glb /assets/RoundedCube.glb /assets/shaders /assets/shaders/Checkers /assets/shaders/Clouds /assets/shaders/Dissolve /assets/shaders/Dissolve/Gradient.png /assets/shaders/Dissolve/Graph.json /assets/shaders/Dissolve/Icon.png /assets/shaders/Dissolve/Icon@2x.png /assets/shaders/Dissolve/Shader.lua /assets/shaders/Dissolve/Unity.shader /assets/shaders/Explosion /assets/shaders/FakeVolume /assets/shaders/Grass /assets/shaders/Hologram /assets/shaders/InstancingGrid /assets/shaders/MaskBlend /assets/shaders/Ripple /assets/shaders/VolumetricFog /assets/shaders/Wireframe /assets/shaders/WireRipple /assets/Suzanne.glb /index.html /lib /LICENSE /node_modules /nodes /Noise2DNode.js /Noise3DNode.js /package-lock.json /package.json /README.md /RemapNode.js /ShadeNodeLoader.js /shaders
Severity: low
Fingerprint: 5f32cf5d6962f09c87f05b7087f05b706e7a2760d9e1a3616365b3d522b3c90e
Found 26 files trough .DS_Store spidering: /assets /assets/environments /assets/environments/FootprintCourt /assets/environments/FootprintCourt/negx.hdr /assets/environments/FootprintCourt/negy.hdr /assets/environments/FootprintCourt/negz.hdr /assets/environments/FootprintCourt/posx.hdr /assets/environments/FootprintCourt/posy.hdr /assets/environments/FootprintCourt/posz.hdr /assets/GrassBlade.glb /assets/RoundedCube.glb /assets/shaders /assets/Suzanne.glb /index.html /lib /LICENSE /node_modules /nodes /Noise2DNode.js /Noise3DNode.js /package-lock.json /package.json /README.md /RemapNode.js /ShadeNodeLoader.js /shaders
The following URL (usually /.git/config
) is publicly accessible and is leaking source code and repository configuration.
Severity: medium
Fingerprint: 2580fa947178c88602b1737db148c044b81b03713d63bb82370a6522ccf6bc9b
[core] repositoryformatversion = 0 filemode = true bare = false logallrefupdates = true ignorecase = true precomposeunicode = true [branch "master"] rebase = true [remote "origin"] url = git@github.com:donmccurdy/three-shadenodeloader.git fetch = +refs/heads/*:refs/remotes/origin/*
Open service 76.76.21.9:443 · three-shadenodeloader.donmccurdy.com
2024-09-14 22:25
HTTP/1.1 200 OK Accept-Ranges: bytes Access-Control-Allow-Origin: * Age: 15317439 Cache-Control: public, max-age=0, must-revalidate Content-Disposition: inline; filename="index" Content-Length: 10577 Content-Type: text/html; charset=utf-8 Date: Sat, 14 Sep 2024 22:25:16 GMT Etag: W/"0b0fe30a17009abb27626fcc2e6f8e35ba1ea851" Server: Vercel Strict-Transport-Security: max-age=63072000 X-Vercel-Cache: HIT X-Vercel-Id: fra1::2vwqt-1726352716594-e19ba3fcee43 Connection: close Page title: three.js • examples • shade node loader <!DOCTYPE html> <meta charset="utf-8"> <title>three.js • examples • shade node loader</title> <style> html, body { margin: 0; padding: 0; background: #000; width: 100%; height: 100%; overflow: hidden; } p { margin: 0; } .attribution { width: 100%; max-width: 400px; color: #424242; position: fixed; bottom: 2em; left: 0; right: 0; margin: 0 auto; background: rgba(255,255,255, 0.8); padding: 0.5em 1em 0.7em; border-radius: 2px; font-family: monospace; text-align: center; max-width: 402px; } </style> <script src="./node_modules/dat.gui/build/dat.gui.js"></script> <script src="./node_modules/three/build/three.js"></script> <script src="./node_modules/three/examples/js/controls/OrbitControls.js"></script> <script src="./node_modules/three/examples/js/loaders/GLTFLoader.js"></script> <script src="./node_modules/three/examples/js/loaders/RGBELoader.js"></script> <script src="./node_modules/three/examples/js/loaders/HDRCubeTextureLoader.js"></script> <script src="./node_modules/three/examples/js/pmrem/PMREMGenerator.js"></script> <script src="./node_modules/three/examples/js/pmrem/PMREMCubeUVPacker.js"></script> <script type="module"> import { ShadeNodeLoader } from './ShadeNodeLoader.js'; import { TextureNode, TimerNode, FloatNode, Vector3Node } from './node_modules/three/examples/js/nodes/Nodes.js'; const renderer = new THREE.WebGLRenderer( { antialias: true } ); renderer.setSize( window.innerWidth, window.innerHeight ); renderer.setClearColor( 0x202020 ); renderer.physicallyCorrectLights = true; renderer.gammaOutput = true; renderer.gammaFactor = 2.2; document.body.appendChild( renderer.domElement ); const timerNode = new TimerNode( 1.0 ); const micNode = new FloatNode( 0.01 ); const otherProps = []; let mesh, geometry, material, envMap; // const props = { suzanne: null, grass: null, roundedCube: null, cube: new THREE.BoxBufferGeometry(1.8, 1.8, 1.8), sphere: new THREE.SphereBufferGeometry( 1.8, 32, 32 ), plane: new THREE.PlaneBufferGeometry( 5, 5, 64, 64 ).rotateX( - 1 * Math.PI / 2 ) }; const examples = [ {name: 'Instancing Grid', shader: 'assets/shaders/InstancingGrid/Graph.json', prop: 'roundedCube', camera: [ 25, 20, 25 ], grid: false }, {name: 'Checkers', shader: 'assets/shaders/Checkers/Graph.json', prop: 'cube', camera: [ 5, 3, 4 ] }, {name: 'Dissolve', shader: 'assets/shaders/Dissolve/Graph.json', prop: 'suzanne', camera: [ 5, 3, 4 ] }, {name: 'Fake Volume', shader: 'assets/shaders/FakeVolume/Graph.json', prop: 'sphere', camera: [ 5, 3, 4 ] }, {name: 'Grass', shader: 'assets/shaders/Grass/Graph.json', prop: 'grass', camera: [ 10, 8, 10 ] }, {name: 'Hologram', shader: 'assets/shaders/Hologram/Graph.json', prop: 'suzanne', camera: [ 5, 3, 4 ] }, {name: 'Wire Ripple', shader: 'assets/shaders/WireRipple/Graph.json', prop: 'plane', camera: [ 5, 3, 4 ] }, {name: 'Wireframe', shader: 'assets/shaders/Wireframe/Graph.json', prop: 'sphere', camera: [ 5, 3, 4 ] }, // {name: '[broken] Clouds', shader: 'assets/shaders/Clouds/Graph.json', prop: 'cube', camera: [ 5, 3, 4 ] }, {name: '[broken] Explosion', shader: 'assets/shaders/Explosion/Graph.json', prop: 'sphere', camera: [ 25, 20, 25 ] }, // {name: '[broken] Mask Blend', shader: 'assets/shaders/MaskBlend/Graph.json', prop: 'cube', camera: [ 5, 3, 4 ] }, {name: '[broken] Ripple', shader: 'assets/shaders/Ripple/Graph.json', prop: 'plane', camera: [ 5, 3, 4 ] }, ]; let selectedExample = examples[ 0 ]; const api = { model: selectedExample.name }; const gui = new dat.GUI(); gui.add( api, 'model', examples.map( ( d ) => d.name ) ).onChange( () => { selectedExample = examples.find( ( d ) => api.model === d.name ); mesh.parent.remove( mesh ); mesh.geometry.dispose(); mesh.material.dispose(); otherProps.forEach( ( o ) => o.parent.remove( o ) ); otherProps.length = 0; loadShader( selectedExample.shader ).then( ( _material ) => { mat
Open service 76.76.21.9:443 · three-shadenodeloader.donmccurdy.com
2024-09-14 19:56
HTTP/1.1 200 OK Accept-Ranges: bytes Access-Control-Allow-Origin: * Age: 7185641 Cache-Control: public, max-age=0, must-revalidate Content-Disposition: inline; filename="index" Content-Length: 10577 Content-Type: text/html; charset=utf-8 Date: Sat, 14 Sep 2024 19:56:24 GMT Etag: W/"0b0fe30a17009abb27626fcc2e6f8e35ba1ea851" Server: Vercel Strict-Transport-Security: max-age=63072000 X-Vercel-Cache: HIT X-Vercel-Id: iad1::72rb8-1726343784825-27b30850030a Connection: close Page title: three.js • examples • shade node loader <!DOCTYPE html> <meta charset="utf-8"> <title>three.js • examples • shade node loader</title> <style> html, body { margin: 0; padding: 0; background: #000; width: 100%; height: 100%; overflow: hidden; } p { margin: 0; } .attribution { width: 100%; max-width: 400px; color: #424242; position: fixed; bottom: 2em; left: 0; right: 0; margin: 0 auto; background: rgba(255,255,255, 0.8); padding: 0.5em 1em 0.7em; border-radius: 2px; font-family: monospace; text-align: center; max-width: 402px; } </style> <script src="./node_modules/dat.gui/build/dat.gui.js"></script> <script src="./node_modules/three/build/three.js"></script> <script src="./node_modules/three/examples/js/controls/OrbitControls.js"></script> <script src="./node_modules/three/examples/js/loaders/GLTFLoader.js"></script> <script src="./node_modules/three/examples/js/loaders/RGBELoader.js"></script> <script src="./node_modules/three/examples/js/loaders/HDRCubeTextureLoader.js"></script> <script src="./node_modules/three/examples/js/pmrem/PMREMGenerator.js"></script> <script src="./node_modules/three/examples/js/pmrem/PMREMCubeUVPacker.js"></script> <script type="module"> import { ShadeNodeLoader } from './ShadeNodeLoader.js'; import { TextureNode, TimerNode, FloatNode, Vector3Node } from './node_modules/three/examples/js/nodes/Nodes.js'; const renderer = new THREE.WebGLRenderer( { antialias: true } ); renderer.setSize( window.innerWidth, window.innerHeight ); renderer.setClearColor( 0x202020 ); renderer.physicallyCorrectLights = true; renderer.gammaOutput = true; renderer.gammaFactor = 2.2; document.body.appendChild( renderer.domElement ); const timerNode = new TimerNode( 1.0 ); const micNode = new FloatNode( 0.01 ); const otherProps = []; let mesh, geometry, material, envMap; // const props = { suzanne: null, grass: null, roundedCube: null, cube: new THREE.BoxBufferGeometry(1.8, 1.8, 1.8), sphere: new THREE.SphereBufferGeometry( 1.8, 32, 32 ), plane: new THREE.PlaneBufferGeometry( 5, 5, 64, 64 ).rotateX( - 1 * Math.PI / 2 ) }; const examples = [ {name: 'Instancing Grid', shader: 'assets/shaders/InstancingGrid/Graph.json', prop: 'roundedCube', camera: [ 25, 20, 25 ], grid: false }, {name: 'Checkers', shader: 'assets/shaders/Checkers/Graph.json', prop: 'cube', camera: [ 5, 3, 4 ] }, {name: 'Dissolve', shader: 'assets/shaders/Dissolve/Graph.json', prop: 'suzanne', camera: [ 5, 3, 4 ] }, {name: 'Fake Volume', shader: 'assets/shaders/FakeVolume/Graph.json', prop: 'sphere', camera: [ 5, 3, 4 ] }, {name: 'Grass', shader: 'assets/shaders/Grass/Graph.json', prop: 'grass', camera: [ 10, 8, 10 ] }, {name: 'Hologram', shader: 'assets/shaders/Hologram/Graph.json', prop: 'suzanne', camera: [ 5, 3, 4 ] }, {name: 'Wire Ripple', shader: 'assets/shaders/WireRipple/Graph.json', prop: 'plane', camera: [ 5, 3, 4 ] }, {name: 'Wireframe', shader: 'assets/shaders/Wireframe/Graph.json', prop: 'sphere', camera: [ 5, 3, 4 ] }, // {name: '[broken] Clouds', shader: 'assets/shaders/Clouds/Graph.json', prop: 'cube', camera: [ 5, 3, 4 ] }, {name: '[broken] Explosion', shader: 'assets/shaders/Explosion/Graph.json', prop: 'sphere', camera: [ 25, 20, 25 ] }, // {name: '[broken] Mask Blend', shader: 'assets/shaders/MaskBlend/Graph.json', prop: 'cube', camera: [ 5, 3, 4 ] }, {name: '[broken] Ripple', shader: 'assets/shaders/Ripple/Graph.json', prop: 'plane', camera: [ 5, 3, 4 ] }, ]; let selectedExample = examples[ 0 ]; const api = { model: selectedExample.name }; const gui = new dat.GUI(); gui.add( api, 'model', examples.map( ( d ) => d.name ) ).onChange( () => { selectedExample = examples.find( ( d ) => api.model === d.name ); mesh.parent.remove( mesh ); mesh.geometry.dispose(); mesh.material.dispose(); otherProps.forEach( ( o ) => o.parent.remove( o ) ); otherProps.length = 0; loadShader( selectedExample.shader ).then( ( _material ) => { mat
Open service 76.76.21.61:80 · three-shadenodeloader.donmccurdy.com
2024-09-13 18:38
HTTP/1.0 308 Permanent Redirect Content-Type: text/plain Location: https://three-shadenodeloader.donmccurdy.com/ Refresh: 0;url=https://three-shadenodeloader.donmccurdy.com/ server: Vercel Redirecting...
Open service 76.76.21.241:80 · three-shadenodeloader.donmccurdy.com
2024-09-13 18:38
HTTP/1.0 308 Permanent Redirect Content-Type: text/plain Location: https://three-shadenodeloader.donmccurdy.com/ Refresh: 0;url=https://three-shadenodeloader.donmccurdy.com/ server: Vercel Redirecting...
Open service 76.76.21.61:443 · three-shadenodeloader.donmccurdy.com
2024-09-13 18:38
HTTP/1.1 200 OK Accept-Ranges: bytes Access-Control-Allow-Origin: * Age: 15217437 Cache-Control: public, max-age=0, must-revalidate Content-Disposition: inline; filename="index" Content-Length: 10577 Content-Type: text/html; charset=utf-8 Date: Fri, 13 Sep 2024 18:38:34 GMT Etag: W/"0b0fe30a17009abb27626fcc2e6f8e35ba1ea851" Server: Vercel Strict-Transport-Security: max-age=63072000 X-Vercel-Cache: HIT X-Vercel-Id: fra1::hmkxn-1726252714343-21f2e19d4a92 Connection: close Page title: three.js • examples • shade node loader <!DOCTYPE html> <meta charset="utf-8"> <title>three.js • examples • shade node loader</title> <style> html, body { margin: 0; padding: 0; background: #000; width: 100%; height: 100%; overflow: hidden; } p { margin: 0; } .attribution { width: 100%; max-width: 400px; color: #424242; position: fixed; bottom: 2em; left: 0; right: 0; margin: 0 auto; background: rgba(255,255,255, 0.8); padding: 0.5em 1em 0.7em; border-radius: 2px; font-family: monospace; text-align: center; max-width: 402px; } </style> <script src="./node_modules/dat.gui/build/dat.gui.js"></script> <script src="./node_modules/three/build/three.js"></script> <script src="./node_modules/three/examples/js/controls/OrbitControls.js"></script> <script src="./node_modules/three/examples/js/loaders/GLTFLoader.js"></script> <script src="./node_modules/three/examples/js/loaders/RGBELoader.js"></script> <script src="./node_modules/three/examples/js/loaders/HDRCubeTextureLoader.js"></script> <script src="./node_modules/three/examples/js/pmrem/PMREMGenerator.js"></script> <script src="./node_modules/three/examples/js/pmrem/PMREMCubeUVPacker.js"></script> <script type="module"> import { ShadeNodeLoader } from './ShadeNodeLoader.js'; import { TextureNode, TimerNode, FloatNode, Vector3Node } from './node_modules/three/examples/js/nodes/Nodes.js'; const renderer = new THREE.WebGLRenderer( { antialias: true } ); renderer.setSize( window.innerWidth, window.innerHeight ); renderer.setClearColor( 0x202020 ); renderer.physicallyCorrectLights = true; renderer.gammaOutput = true; renderer.gammaFactor = 2.2; document.body.appendChild( renderer.domElement ); const timerNode = new TimerNode( 1.0 ); const micNode = new FloatNode( 0.01 ); const otherProps = []; let mesh, geometry, material, envMap; // const props = { suzanne: null, grass: null, roundedCube: null, cube: new THREE.BoxBufferGeometry(1.8, 1.8, 1.8), sphere: new THREE.SphereBufferGeometry( 1.8, 32, 32 ), plane: new THREE.PlaneBufferGeometry( 5, 5, 64, 64 ).rotateX( - 1 * Math.PI / 2 ) }; const examples = [ {name: 'Instancing Grid', shader: 'assets/shaders/InstancingGrid/Graph.json', prop: 'roundedCube', camera: [ 25, 20, 25 ], grid: false }, {name: 'Checkers', shader: 'assets/shaders/Checkers/Graph.json', prop: 'cube', camera: [ 5, 3, 4 ] }, {name: 'Dissolve', shader: 'assets/shaders/Dissolve/Graph.json', prop: 'suzanne', camera: [ 5, 3, 4 ] }, {name: 'Fake Volume', shader: 'assets/shaders/FakeVolume/Graph.json', prop: 'sphere', camera: [ 5, 3, 4 ] }, {name: 'Grass', shader: 'assets/shaders/Grass/Graph.json', prop: 'grass', camera: [ 10, 8, 10 ] }, {name: 'Hologram', shader: 'assets/shaders/Hologram/Graph.json', prop: 'suzanne', camera: [ 5, 3, 4 ] }, {name: 'Wire Ripple', shader: 'assets/shaders/WireRipple/Graph.json', prop: 'plane', camera: [ 5, 3, 4 ] }, {name: 'Wireframe', shader: 'assets/shaders/Wireframe/Graph.json', prop: 'sphere', camera: [ 5, 3, 4 ] }, // {name: '[broken] Clouds', shader: 'assets/shaders/Clouds/Graph.json', prop: 'cube', camera: [ 5, 3, 4 ] }, {name: '[broken] Explosion', shader: 'assets/shaders/Explosion/Graph.json', prop: 'sphere', camera: [ 25, 20, 25 ] }, // {name: '[broken] Mask Blend', shader: 'assets/shaders/MaskBlend/Graph.json', prop: 'cube', camera: [ 5, 3, 4 ] }, {name: '[broken] Ripple', shader: 'assets/shaders/Ripple/Graph.json', prop: 'plane', camera: [ 5, 3, 4 ] }, ]; let selectedExample = examples[ 0 ]; const api = { model: selectedExample.name }; const gui = new dat.GUI(); gui.add( api, 'model', examples.map( ( d ) => d.name ) ).onChange( () => { selectedExample = examples.find( ( d ) => api.model === d.name ); mesh.parent.remove( mesh ); mesh.geometry.dispose(); mesh.material.dispose(); otherProps.forEach( ( o ) => o.parent.remove( o ) ); otherProps.length = 0; loadShader( selectedExample.shader ).then( ( _material ) => { mat
Open service 76.76.21.241:443 · three-shadenodeloader.donmccurdy.com
2024-09-13 18:38
HTTP/1.1 200 OK Accept-Ranges: bytes Access-Control-Allow-Origin: * Age: 15217437 Cache-Control: public, max-age=0, must-revalidate Content-Disposition: inline; filename="index" Content-Length: 10577 Content-Type: text/html; charset=utf-8 Date: Fri, 13 Sep 2024 18:38:34 GMT Etag: W/"0b0fe30a17009abb27626fcc2e6f8e35ba1ea851" Server: Vercel Strict-Transport-Security: max-age=63072000 X-Vercel-Cache: HIT X-Vercel-Id: fra1::cfdcw-1726252714299-d55927ed99c6 Connection: close Page title: three.js • examples • shade node loader <!DOCTYPE html> <meta charset="utf-8"> <title>three.js • examples • shade node loader</title> <style> html, body { margin: 0; padding: 0; background: #000; width: 100%; height: 100%; overflow: hidden; } p { margin: 0; } .attribution { width: 100%; max-width: 400px; color: #424242; position: fixed; bottom: 2em; left: 0; right: 0; margin: 0 auto; background: rgba(255,255,255, 0.8); padding: 0.5em 1em 0.7em; border-radius: 2px; font-family: monospace; text-align: center; max-width: 402px; } </style> <script src="./node_modules/dat.gui/build/dat.gui.js"></script> <script src="./node_modules/three/build/three.js"></script> <script src="./node_modules/three/examples/js/controls/OrbitControls.js"></script> <script src="./node_modules/three/examples/js/loaders/GLTFLoader.js"></script> <script src="./node_modules/three/examples/js/loaders/RGBELoader.js"></script> <script src="./node_modules/three/examples/js/loaders/HDRCubeTextureLoader.js"></script> <script src="./node_modules/three/examples/js/pmrem/PMREMGenerator.js"></script> <script src="./node_modules/three/examples/js/pmrem/PMREMCubeUVPacker.js"></script> <script type="module"> import { ShadeNodeLoader } from './ShadeNodeLoader.js'; import { TextureNode, TimerNode, FloatNode, Vector3Node } from './node_modules/three/examples/js/nodes/Nodes.js'; const renderer = new THREE.WebGLRenderer( { antialias: true } ); renderer.setSize( window.innerWidth, window.innerHeight ); renderer.setClearColor( 0x202020 ); renderer.physicallyCorrectLights = true; renderer.gammaOutput = true; renderer.gammaFactor = 2.2; document.body.appendChild( renderer.domElement ); const timerNode = new TimerNode( 1.0 ); const micNode = new FloatNode( 0.01 ); const otherProps = []; let mesh, geometry, material, envMap; // const props = { suzanne: null, grass: null, roundedCube: null, cube: new THREE.BoxBufferGeometry(1.8, 1.8, 1.8), sphere: new THREE.SphereBufferGeometry( 1.8, 32, 32 ), plane: new THREE.PlaneBufferGeometry( 5, 5, 64, 64 ).rotateX( - 1 * Math.PI / 2 ) }; const examples = [ {name: 'Instancing Grid', shader: 'assets/shaders/InstancingGrid/Graph.json', prop: 'roundedCube', camera: [ 25, 20, 25 ], grid: false }, {name: 'Checkers', shader: 'assets/shaders/Checkers/Graph.json', prop: 'cube', camera: [ 5, 3, 4 ] }, {name: 'Dissolve', shader: 'assets/shaders/Dissolve/Graph.json', prop: 'suzanne', camera: [ 5, 3, 4 ] }, {name: 'Fake Volume', shader: 'assets/shaders/FakeVolume/Graph.json', prop: 'sphere', camera: [ 5, 3, 4 ] }, {name: 'Grass', shader: 'assets/shaders/Grass/Graph.json', prop: 'grass', camera: [ 10, 8, 10 ] }, {name: 'Hologram', shader: 'assets/shaders/Hologram/Graph.json', prop: 'suzanne', camera: [ 5, 3, 4 ] }, {name: 'Wire Ripple', shader: 'assets/shaders/WireRipple/Graph.json', prop: 'plane', camera: [ 5, 3, 4 ] }, {name: 'Wireframe', shader: 'assets/shaders/Wireframe/Graph.json', prop: 'sphere', camera: [ 5, 3, 4 ] }, // {name: '[broken] Clouds', shader: 'assets/shaders/Clouds/Graph.json', prop: 'cube', camera: [ 5, 3, 4 ] }, {name: '[broken] Explosion', shader: 'assets/shaders/Explosion/Graph.json', prop: 'sphere', camera: [ 25, 20, 25 ] }, // {name: '[broken] Mask Blend', shader: 'assets/shaders/MaskBlend/Graph.json', prop: 'cube', camera: [ 5, 3, 4 ] }, {name: '[broken] Ripple', shader: 'assets/shaders/Ripple/Graph.json', prop: 'plane', camera: [ 5, 3, 4 ] }, ]; let selectedExample = examples[ 0 ]; const api = { model: selectedExample.name }; const gui = new dat.GUI(); gui.add( api, 'model', examples.map( ( d ) => d.name ) ).onChange( () => { selectedExample = examples.find( ( d ) => api.model === d.name ); mesh.parent.remove( mesh ); mesh.geometry.dispose(); mesh.material.dispose(); otherProps.forEach( ( o ) => o.parent.remove( o ) ); otherProps.length = 0; loadShader( selectedExample.shader ).then( ( _material ) => { mat
Open service 76.76.21.9:443 · three-shadenodeloader.donmccurdy.com
2024-09-12 22:44
HTTP/1.1 200 OK Accept-Ranges: bytes Access-Control-Allow-Origin: * Age: 91384 Cache-Control: public, max-age=0, must-revalidate Content-Disposition: inline; filename="index" Content-Length: 10577 Content-Type: text/html; charset=utf-8 Date: Thu, 12 Sep 2024 22:44:22 GMT Etag: W/"0b0fe30a17009abb27626fcc2e6f8e35ba1ea851" Server: Vercel Strict-Transport-Security: max-age=63072000 X-Vercel-Cache: HIT X-Vercel-Id: sfo1::9ll7w-1726181062764-eb89b785ee33 Connection: close Page title: three.js • examples • shade node loader <!DOCTYPE html> <meta charset="utf-8"> <title>three.js • examples • shade node loader</title> <style> html, body { margin: 0; padding: 0; background: #000; width: 100%; height: 100%; overflow: hidden; } p { margin: 0; } .attribution { width: 100%; max-width: 400px; color: #424242; position: fixed; bottom: 2em; left: 0; right: 0; margin: 0 auto; background: rgba(255,255,255, 0.8); padding: 0.5em 1em 0.7em; border-radius: 2px; font-family: monospace; text-align: center; max-width: 402px; } </style> <script src="./node_modules/dat.gui/build/dat.gui.js"></script> <script src="./node_modules/three/build/three.js"></script> <script src="./node_modules/three/examples/js/controls/OrbitControls.js"></script> <script src="./node_modules/three/examples/js/loaders/GLTFLoader.js"></script> <script src="./node_modules/three/examples/js/loaders/RGBELoader.js"></script> <script src="./node_modules/three/examples/js/loaders/HDRCubeTextureLoader.js"></script> <script src="./node_modules/three/examples/js/pmrem/PMREMGenerator.js"></script> <script src="./node_modules/three/examples/js/pmrem/PMREMCubeUVPacker.js"></script> <script type="module"> import { ShadeNodeLoader } from './ShadeNodeLoader.js'; import { TextureNode, TimerNode, FloatNode, Vector3Node } from './node_modules/three/examples/js/nodes/Nodes.js'; const renderer = new THREE.WebGLRenderer( { antialias: true } ); renderer.setSize( window.innerWidth, window.innerHeight ); renderer.setClearColor( 0x202020 ); renderer.physicallyCorrectLights = true; renderer.gammaOutput = true; renderer.gammaFactor = 2.2; document.body.appendChild( renderer.domElement ); const timerNode = new TimerNode( 1.0 ); const micNode = new FloatNode( 0.01 ); const otherProps = []; let mesh, geometry, material, envMap; // const props = { suzanne: null, grass: null, roundedCube: null, cube: new THREE.BoxBufferGeometry(1.8, 1.8, 1.8), sphere: new THREE.SphereBufferGeometry( 1.8, 32, 32 ), plane: new THREE.PlaneBufferGeometry( 5, 5, 64, 64 ).rotateX( - 1 * Math.PI / 2 ) }; const examples = [ {name: 'Instancing Grid', shader: 'assets/shaders/InstancingGrid/Graph.json', prop: 'roundedCube', camera: [ 25, 20, 25 ], grid: false }, {name: 'Checkers', shader: 'assets/shaders/Checkers/Graph.json', prop: 'cube', camera: [ 5, 3, 4 ] }, {name: 'Dissolve', shader: 'assets/shaders/Dissolve/Graph.json', prop: 'suzanne', camera: [ 5, 3, 4 ] }, {name: 'Fake Volume', shader: 'assets/shaders/FakeVolume/Graph.json', prop: 'sphere', camera: [ 5, 3, 4 ] }, {name: 'Grass', shader: 'assets/shaders/Grass/Graph.json', prop: 'grass', camera: [ 10, 8, 10 ] }, {name: 'Hologram', shader: 'assets/shaders/Hologram/Graph.json', prop: 'suzanne', camera: [ 5, 3, 4 ] }, {name: 'Wire Ripple', shader: 'assets/shaders/WireRipple/Graph.json', prop: 'plane', camera: [ 5, 3, 4 ] }, {name: 'Wireframe', shader: 'assets/shaders/Wireframe/Graph.json', prop: 'sphere', camera: [ 5, 3, 4 ] }, // {name: '[broken] Clouds', shader: 'assets/shaders/Clouds/Graph.json', prop: 'cube', camera: [ 5, 3, 4 ] }, {name: '[broken] Explosion', shader: 'assets/shaders/Explosion/Graph.json', prop: 'sphere', camera: [ 25, 20, 25 ] }, // {name: '[broken] Mask Blend', shader: 'assets/shaders/MaskBlend/Graph.json', prop: 'cube', camera: [ 5, 3, 4 ] }, {name: '[broken] Ripple', shader: 'assets/shaders/Ripple/Graph.json', prop: 'plane', camera: [ 5, 3, 4 ] }, ]; let selectedExample = examples[ 0 ]; const api = { model: selectedExample.name }; const gui = new dat.GUI(); gui.add( api, 'model', examples.map( ( d ) => d.name ) ).onChange( () => { selectedExample = examples.find( ( d ) => api.model === d.name ); mesh.parent.remove( mesh ); mesh.geometry.dispose(); mesh.material.dispose(); otherProps.forEach( ( o ) => o.parent.remove( o ) ); otherProps.length = 0; loadShader( selectedExample.shader ).then( ( _material ) => { mat
Open service 76.76.21.9:443 · three-shadenodeloader.donmccurdy.com
2024-09-12 15:28
HTTP/1.1 200 OK Accept-Ranges: bytes Access-Control-Allow-Origin: * Age: 15119634 Cache-Control: public, max-age=0, must-revalidate Content-Disposition: inline; filename="index" Content-Length: 10577 Content-Type: text/html; charset=utf-8 Date: Thu, 12 Sep 2024 15:28:31 GMT Etag: W/"0b0fe30a17009abb27626fcc2e6f8e35ba1ea851" Server: Vercel Strict-Transport-Security: max-age=63072000 X-Vercel-Cache: HIT X-Vercel-Id: fra1::hcgsl-1726154911202-de25e0790414 Connection: close Page title: three.js • examples • shade node loader <!DOCTYPE html> <meta charset="utf-8"> <title>three.js • examples • shade node loader</title> <style> html, body { margin: 0; padding: 0; background: #000; width: 100%; height: 100%; overflow: hidden; } p { margin: 0; } .attribution { width: 100%; max-width: 400px; color: #424242; position: fixed; bottom: 2em; left: 0; right: 0; margin: 0 auto; background: rgba(255,255,255, 0.8); padding: 0.5em 1em 0.7em; border-radius: 2px; font-family: monospace; text-align: center; max-width: 402px; } </style> <script src="./node_modules/dat.gui/build/dat.gui.js"></script> <script src="./node_modules/three/build/three.js"></script> <script src="./node_modules/three/examples/js/controls/OrbitControls.js"></script> <script src="./node_modules/three/examples/js/loaders/GLTFLoader.js"></script> <script src="./node_modules/three/examples/js/loaders/RGBELoader.js"></script> <script src="./node_modules/three/examples/js/loaders/HDRCubeTextureLoader.js"></script> <script src="./node_modules/three/examples/js/pmrem/PMREMGenerator.js"></script> <script src="./node_modules/three/examples/js/pmrem/PMREMCubeUVPacker.js"></script> <script type="module"> import { ShadeNodeLoader } from './ShadeNodeLoader.js'; import { TextureNode, TimerNode, FloatNode, Vector3Node } from './node_modules/three/examples/js/nodes/Nodes.js'; const renderer = new THREE.WebGLRenderer( { antialias: true } ); renderer.setSize( window.innerWidth, window.innerHeight ); renderer.setClearColor( 0x202020 ); renderer.physicallyCorrectLights = true; renderer.gammaOutput = true; renderer.gammaFactor = 2.2; document.body.appendChild( renderer.domElement ); const timerNode = new TimerNode( 1.0 ); const micNode = new FloatNode( 0.01 ); const otherProps = []; let mesh, geometry, material, envMap; // const props = { suzanne: null, grass: null, roundedCube: null, cube: new THREE.BoxBufferGeometry(1.8, 1.8, 1.8), sphere: new THREE.SphereBufferGeometry( 1.8, 32, 32 ), plane: new THREE.PlaneBufferGeometry( 5, 5, 64, 64 ).rotateX( - 1 * Math.PI / 2 ) }; const examples = [ {name: 'Instancing Grid', shader: 'assets/shaders/InstancingGrid/Graph.json', prop: 'roundedCube', camera: [ 25, 20, 25 ], grid: false }, {name: 'Checkers', shader: 'assets/shaders/Checkers/Graph.json', prop: 'cube', camera: [ 5, 3, 4 ] }, {name: 'Dissolve', shader: 'assets/shaders/Dissolve/Graph.json', prop: 'suzanne', camera: [ 5, 3, 4 ] }, {name: 'Fake Volume', shader: 'assets/shaders/FakeVolume/Graph.json', prop: 'sphere', camera: [ 5, 3, 4 ] }, {name: 'Grass', shader: 'assets/shaders/Grass/Graph.json', prop: 'grass', camera: [ 10, 8, 10 ] }, {name: 'Hologram', shader: 'assets/shaders/Hologram/Graph.json', prop: 'suzanne', camera: [ 5, 3, 4 ] }, {name: 'Wire Ripple', shader: 'assets/shaders/WireRipple/Graph.json', prop: 'plane', camera: [ 5, 3, 4 ] }, {name: 'Wireframe', shader: 'assets/shaders/Wireframe/Graph.json', prop: 'sphere', camera: [ 5, 3, 4 ] }, // {name: '[broken] Clouds', shader: 'assets/shaders/Clouds/Graph.json', prop: 'cube', camera: [ 5, 3, 4 ] }, {name: '[broken] Explosion', shader: 'assets/shaders/Explosion/Graph.json', prop: 'sphere', camera: [ 25, 20, 25 ] }, // {name: '[broken] Mask Blend', shader: 'assets/shaders/MaskBlend/Graph.json', prop: 'cube', camera: [ 5, 3, 4 ] }, {name: '[broken] Ripple', shader: 'assets/shaders/Ripple/Graph.json', prop: 'plane', camera: [ 5, 3, 4 ] }, ]; let selectedExample = examples[ 0 ]; const api = { model: selectedExample.name }; const gui = new dat.GUI(); gui.add( api, 'model', examples.map( ( d ) => d.name ) ).onChange( () => { selectedExample = examples.find( ( d ) => api.model === d.name ); mesh.parent.remove( mesh ); mesh.geometry.dispose(); mesh.material.dispose(); otherProps.forEach( ( o ) => o.parent.remove( o ) ); otherProps.length = 0; loadShader( selectedExample.shader ).then( ( _material ) => { mat
Open service 76.76.21.9:443 · three-shadenodeloader.donmccurdy.com
2024-09-11 04:40
HTTP/1.1 200 OK Accept-Ranges: bytes Access-Control-Allow-Origin: * Age: 14994371 Cache-Control: public, max-age=0, must-revalidate Content-Disposition: inline; filename="index" Content-Length: 10577 Content-Type: text/html; charset=utf-8 Date: Wed, 11 Sep 2024 04:40:48 GMT Etag: W/"0b0fe30a17009abb27626fcc2e6f8e35ba1ea851" Server: Vercel Strict-Transport-Security: max-age=63072000 X-Vercel-Cache: HIT X-Vercel-Id: fra1::cdvx5-1726029648213-4f3107f47d52 Connection: close Page title: three.js • examples • shade node loader <!DOCTYPE html> <meta charset="utf-8"> <title>three.js • examples • shade node loader</title> <style> html, body { margin: 0; padding: 0; background: #000; width: 100%; height: 100%; overflow: hidden; } p { margin: 0; } .attribution { width: 100%; max-width: 400px; color: #424242; position: fixed; bottom: 2em; left: 0; right: 0; margin: 0 auto; background: rgba(255,255,255, 0.8); padding: 0.5em 1em 0.7em; border-radius: 2px; font-family: monospace; text-align: center; max-width: 402px; } </style> <script src="./node_modules/dat.gui/build/dat.gui.js"></script> <script src="./node_modules/three/build/three.js"></script> <script src="./node_modules/three/examples/js/controls/OrbitControls.js"></script> <script src="./node_modules/three/examples/js/loaders/GLTFLoader.js"></script> <script src="./node_modules/three/examples/js/loaders/RGBELoader.js"></script> <script src="./node_modules/three/examples/js/loaders/HDRCubeTextureLoader.js"></script> <script src="./node_modules/three/examples/js/pmrem/PMREMGenerator.js"></script> <script src="./node_modules/three/examples/js/pmrem/PMREMCubeUVPacker.js"></script> <script type="module"> import { ShadeNodeLoader } from './ShadeNodeLoader.js'; import { TextureNode, TimerNode, FloatNode, Vector3Node } from './node_modules/three/examples/js/nodes/Nodes.js'; const renderer = new THREE.WebGLRenderer( { antialias: true } ); renderer.setSize( window.innerWidth, window.innerHeight ); renderer.setClearColor( 0x202020 ); renderer.physicallyCorrectLights = true; renderer.gammaOutput = true; renderer.gammaFactor = 2.2; document.body.appendChild( renderer.domElement ); const timerNode = new TimerNode( 1.0 ); const micNode = new FloatNode( 0.01 ); const otherProps = []; let mesh, geometry, material, envMap; // const props = { suzanne: null, grass: null, roundedCube: null, cube: new THREE.BoxBufferGeometry(1.8, 1.8, 1.8), sphere: new THREE.SphereBufferGeometry( 1.8, 32, 32 ), plane: new THREE.PlaneBufferGeometry( 5, 5, 64, 64 ).rotateX( - 1 * Math.PI / 2 ) }; const examples = [ {name: 'Instancing Grid', shader: 'assets/shaders/InstancingGrid/Graph.json', prop: 'roundedCube', camera: [ 25, 20, 25 ], grid: false }, {name: 'Checkers', shader: 'assets/shaders/Checkers/Graph.json', prop: 'cube', camera: [ 5, 3, 4 ] }, {name: 'Dissolve', shader: 'assets/shaders/Dissolve/Graph.json', prop: 'suzanne', camera: [ 5, 3, 4 ] }, {name: 'Fake Volume', shader: 'assets/shaders/FakeVolume/Graph.json', prop: 'sphere', camera: [ 5, 3, 4 ] }, {name: 'Grass', shader: 'assets/shaders/Grass/Graph.json', prop: 'grass', camera: [ 10, 8, 10 ] }, {name: 'Hologram', shader: 'assets/shaders/Hologram/Graph.json', prop: 'suzanne', camera: [ 5, 3, 4 ] }, {name: 'Wire Ripple', shader: 'assets/shaders/WireRipple/Graph.json', prop: 'plane', camera: [ 5, 3, 4 ] }, {name: 'Wireframe', shader: 'assets/shaders/Wireframe/Graph.json', prop: 'sphere', camera: [ 5, 3, 4 ] }, // {name: '[broken] Clouds', shader: 'assets/shaders/Clouds/Graph.json', prop: 'cube', camera: [ 5, 3, 4 ] }, {name: '[broken] Explosion', shader: 'assets/shaders/Explosion/Graph.json', prop: 'sphere', camera: [ 25, 20, 25 ] }, // {name: '[broken] Mask Blend', shader: 'assets/shaders/MaskBlend/Graph.json', prop: 'cube', camera: [ 5, 3, 4 ] }, {name: '[broken] Ripple', shader: 'assets/shaders/Ripple/Graph.json', prop: 'plane', camera: [ 5, 3, 4 ] }, ]; let selectedExample = examples[ 0 ]; const api = { model: selectedExample.name }; const gui = new dat.GUI(); gui.add( api, 'model', examples.map( ( d ) => d.name ) ).onChange( () => { selectedExample = examples.find( ( d ) => api.model === d.name ); mesh.parent.remove( mesh ); mesh.geometry.dispose(); mesh.material.dispose(); otherProps.forEach( ( o ) => o.parent.remove( o ) ); otherProps.length = 0; loadShader( selectedExample.shader ).then( ( _material ) => { mat
Open service 76.76.21.9:443 · three-shadenodeloader.donmccurdy.com
2024-09-10 22:07
HTTP/1.1 200 OK Accept-Ranges: bytes Access-Control-Allow-Origin: * Age: 7003530 Cache-Control: public, max-age=0, must-revalidate Content-Disposition: inline; filename="index" Content-Length: 10577 Content-Type: text/html; charset=utf-8 Date: Tue, 10 Sep 2024 22:07:21 GMT Etag: W/"0b0fe30a17009abb27626fcc2e6f8e35ba1ea851" Server: Vercel Strict-Transport-Security: max-age=63072000 X-Vercel-Cache: HIT X-Vercel-Id: cle1::5msc6-1726006041363-63a8119ffb32 Connection: close Page title: three.js • examples • shade node loader <!DOCTYPE html> <meta charset="utf-8"> <title>three.js • examples • shade node loader</title> <style> html, body { margin: 0; padding: 0; background: #000; width: 100%; height: 100%; overflow: hidden; } p { margin: 0; } .attribution { width: 100%; max-width: 400px; color: #424242; position: fixed; bottom: 2em; left: 0; right: 0; margin: 0 auto; background: rgba(255,255,255, 0.8); padding: 0.5em 1em 0.7em; border-radius: 2px; font-family: monospace; text-align: center; max-width: 402px; } </style> <script src="./node_modules/dat.gui/build/dat.gui.js"></script> <script src="./node_modules/three/build/three.js"></script> <script src="./node_modules/three/examples/js/controls/OrbitControls.js"></script> <script src="./node_modules/three/examples/js/loaders/GLTFLoader.js"></script> <script src="./node_modules/three/examples/js/loaders/RGBELoader.js"></script> <script src="./node_modules/three/examples/js/loaders/HDRCubeTextureLoader.js"></script> <script src="./node_modules/three/examples/js/pmrem/PMREMGenerator.js"></script> <script src="./node_modules/three/examples/js/pmrem/PMREMCubeUVPacker.js"></script> <script type="module"> import { ShadeNodeLoader } from './ShadeNodeLoader.js'; import { TextureNode, TimerNode, FloatNode, Vector3Node } from './node_modules/three/examples/js/nodes/Nodes.js'; const renderer = new THREE.WebGLRenderer( { antialias: true } ); renderer.setSize( window.innerWidth, window.innerHeight ); renderer.setClearColor( 0x202020 ); renderer.physicallyCorrectLights = true; renderer.gammaOutput = true; renderer.gammaFactor = 2.2; document.body.appendChild( renderer.domElement ); const timerNode = new TimerNode( 1.0 ); const micNode = new FloatNode( 0.01 ); const otherProps = []; let mesh, geometry, material, envMap; // const props = { suzanne: null, grass: null, roundedCube: null, cube: new THREE.BoxBufferGeometry(1.8, 1.8, 1.8), sphere: new THREE.SphereBufferGeometry( 1.8, 32, 32 ), plane: new THREE.PlaneBufferGeometry( 5, 5, 64, 64 ).rotateX( - 1 * Math.PI / 2 ) }; const examples = [ {name: 'Instancing Grid', shader: 'assets/shaders/InstancingGrid/Graph.json', prop: 'roundedCube', camera: [ 25, 20, 25 ], grid: false }, {name: 'Checkers', shader: 'assets/shaders/Checkers/Graph.json', prop: 'cube', camera: [ 5, 3, 4 ] }, {name: 'Dissolve', shader: 'assets/shaders/Dissolve/Graph.json', prop: 'suzanne', camera: [ 5, 3, 4 ] }, {name: 'Fake Volume', shader: 'assets/shaders/FakeVolume/Graph.json', prop: 'sphere', camera: [ 5, 3, 4 ] }, {name: 'Grass', shader: 'assets/shaders/Grass/Graph.json', prop: 'grass', camera: [ 10, 8, 10 ] }, {name: 'Hologram', shader: 'assets/shaders/Hologram/Graph.json', prop: 'suzanne', camera: [ 5, 3, 4 ] }, {name: 'Wire Ripple', shader: 'assets/shaders/WireRipple/Graph.json', prop: 'plane', camera: [ 5, 3, 4 ] }, {name: 'Wireframe', shader: 'assets/shaders/Wireframe/Graph.json', prop: 'sphere', camera: [ 5, 3, 4 ] }, // {name: '[broken] Clouds', shader: 'assets/shaders/Clouds/Graph.json', prop: 'cube', camera: [ 5, 3, 4 ] }, {name: '[broken] Explosion', shader: 'assets/shaders/Explosion/Graph.json', prop: 'sphere', camera: [ 25, 20, 25 ] }, // {name: '[broken] Mask Blend', shader: 'assets/shaders/MaskBlend/Graph.json', prop: 'cube', camera: [ 5, 3, 4 ] }, {name: '[broken] Ripple', shader: 'assets/shaders/Ripple/Graph.json', prop: 'plane', camera: [ 5, 3, 4 ] }, ]; let selectedExample = examples[ 0 ]; const api = { model: selectedExample.name }; const gui = new dat.GUI(); gui.add( api, 'model', examples.map( ( d ) => d.name ) ).onChange( () => { selectedExample = examples.find( ( d ) => api.model === d.name ); mesh.parent.remove( mesh ); mesh.geometry.dispose(); mesh.material.dispose(); otherProps.forEach( ( o ) => o.parent.remove( o ) ); otherProps.length = 0; loadShader( selectedExample.shader ).then( ( _material ) => { mat
Open service 76.76.21.9:443 · three-shadenodeloader.donmccurdy.com
2024-09-08 23:33
HTTP/1.1 200 OK Accept-Ranges: bytes Access-Control-Allow-Origin: * Age: 6680266 Cache-Control: public, max-age=0, must-revalidate Content-Disposition: inline; filename="index" Content-Length: 10577 Content-Type: text/html; charset=utf-8 Date: Sun, 08 Sep 2024 23:33:30 GMT Etag: W/"0b0fe30a17009abb27626fcc2e6f8e35ba1ea851" Server: Vercel Strict-Transport-Security: max-age=63072000 X-Vercel-Cache: HIT X-Vercel-Id: iad1::7j2th-1725838410012-42a92cd76c78 Connection: close Page title: three.js • examples • shade node loader <!DOCTYPE html> <meta charset="utf-8"> <title>three.js • examples • shade node loader</title> <style> html, body { margin: 0; padding: 0; background: #000; width: 100%; height: 100%; overflow: hidden; } p { margin: 0; } .attribution { width: 100%; max-width: 400px; color: #424242; position: fixed; bottom: 2em; left: 0; right: 0; margin: 0 auto; background: rgba(255,255,255, 0.8); padding: 0.5em 1em 0.7em; border-radius: 2px; font-family: monospace; text-align: center; max-width: 402px; } </style> <script src="./node_modules/dat.gui/build/dat.gui.js"></script> <script src="./node_modules/three/build/three.js"></script> <script src="./node_modules/three/examples/js/controls/OrbitControls.js"></script> <script src="./node_modules/three/examples/js/loaders/GLTFLoader.js"></script> <script src="./node_modules/three/examples/js/loaders/RGBELoader.js"></script> <script src="./node_modules/three/examples/js/loaders/HDRCubeTextureLoader.js"></script> <script src="./node_modules/three/examples/js/pmrem/PMREMGenerator.js"></script> <script src="./node_modules/three/examples/js/pmrem/PMREMCubeUVPacker.js"></script> <script type="module"> import { ShadeNodeLoader } from './ShadeNodeLoader.js'; import { TextureNode, TimerNode, FloatNode, Vector3Node } from './node_modules/three/examples/js/nodes/Nodes.js'; const renderer = new THREE.WebGLRenderer( { antialias: true } ); renderer.setSize( window.innerWidth, window.innerHeight ); renderer.setClearColor( 0x202020 ); renderer.physicallyCorrectLights = true; renderer.gammaOutput = true; renderer.gammaFactor = 2.2; document.body.appendChild( renderer.domElement ); const timerNode = new TimerNode( 1.0 ); const micNode = new FloatNode( 0.01 ); const otherProps = []; let mesh, geometry, material, envMap; // const props = { suzanne: null, grass: null, roundedCube: null, cube: new THREE.BoxBufferGeometry(1.8, 1.8, 1.8), sphere: new THREE.SphereBufferGeometry( 1.8, 32, 32 ), plane: new THREE.PlaneBufferGeometry( 5, 5, 64, 64 ).rotateX( - 1 * Math.PI / 2 ) }; const examples = [ {name: 'Instancing Grid', shader: 'assets/shaders/InstancingGrid/Graph.json', prop: 'roundedCube', camera: [ 25, 20, 25 ], grid: false }, {name: 'Checkers', shader: 'assets/shaders/Checkers/Graph.json', prop: 'cube', camera: [ 5, 3, 4 ] }, {name: 'Dissolve', shader: 'assets/shaders/Dissolve/Graph.json', prop: 'suzanne', camera: [ 5, 3, 4 ] }, {name: 'Fake Volume', shader: 'assets/shaders/FakeVolume/Graph.json', prop: 'sphere', camera: [ 5, 3, 4 ] }, {name: 'Grass', shader: 'assets/shaders/Grass/Graph.json', prop: 'grass', camera: [ 10, 8, 10 ] }, {name: 'Hologram', shader: 'assets/shaders/Hologram/Graph.json', prop: 'suzanne', camera: [ 5, 3, 4 ] }, {name: 'Wire Ripple', shader: 'assets/shaders/WireRipple/Graph.json', prop: 'plane', camera: [ 5, 3, 4 ] }, {name: 'Wireframe', shader: 'assets/shaders/Wireframe/Graph.json', prop: 'sphere', camera: [ 5, 3, 4 ] }, // {name: '[broken] Clouds', shader: 'assets/shaders/Clouds/Graph.json', prop: 'cube', camera: [ 5, 3, 4 ] }, {name: '[broken] Explosion', shader: 'assets/shaders/Explosion/Graph.json', prop: 'sphere', camera: [ 25, 20, 25 ] }, // {name: '[broken] Mask Blend', shader: 'assets/shaders/MaskBlend/Graph.json', prop: 'cube', camera: [ 5, 3, 4 ] }, {name: '[broken] Ripple', shader: 'assets/shaders/Ripple/Graph.json', prop: 'plane', camera: [ 5, 3, 4 ] }, ]; let selectedExample = examples[ 0 ]; const api = { model: selectedExample.name }; const gui = new dat.GUI(); gui.add( api, 'model', examples.map( ( d ) => d.name ) ).onChange( () => { selectedExample = examples.find( ( d ) => api.model === d.name ); mesh.parent.remove( mesh ); mesh.geometry.dispose(); mesh.material.dispose(); otherProps.forEach( ( o ) => o.parent.remove( o ) ); otherProps.length = 0; loadShader( selectedExample.shader ).then( ( _material ) => { mat
Open service 76.76.21.9:443 · three-shadenodeloader.donmccurdy.com
2024-09-08 15:32
HTTP/1.1 200 OK Accept-Ranges: bytes Access-Control-Allow-Origin: * Age: 6651393 Cache-Control: public, max-age=0, must-revalidate Content-Disposition: inline; filename="index" Content-Length: 10577 Content-Type: text/html; charset=utf-8 Date: Sun, 08 Sep 2024 15:32:16 GMT Etag: W/"0b0fe30a17009abb27626fcc2e6f8e35ba1ea851" Server: Vercel Strict-Transport-Security: max-age=63072000 X-Vercel-Cache: HIT X-Vercel-Id: iad1::fz4w8-1725809536856-cac1453d70d8 Connection: close Page title: three.js • examples • shade node loader <!DOCTYPE html> <meta charset="utf-8"> <title>three.js • examples • shade node loader</title> <style> html, body { margin: 0; padding: 0; background: #000; width: 100%; height: 100%; overflow: hidden; } p { margin: 0; } .attribution { width: 100%; max-width: 400px; color: #424242; position: fixed; bottom: 2em; left: 0; right: 0; margin: 0 auto; background: rgba(255,255,255, 0.8); padding: 0.5em 1em 0.7em; border-radius: 2px; font-family: monospace; text-align: center; max-width: 402px; } </style> <script src="./node_modules/dat.gui/build/dat.gui.js"></script> <script src="./node_modules/three/build/three.js"></script> <script src="./node_modules/three/examples/js/controls/OrbitControls.js"></script> <script src="./node_modules/three/examples/js/loaders/GLTFLoader.js"></script> <script src="./node_modules/three/examples/js/loaders/RGBELoader.js"></script> <script src="./node_modules/three/examples/js/loaders/HDRCubeTextureLoader.js"></script> <script src="./node_modules/three/examples/js/pmrem/PMREMGenerator.js"></script> <script src="./node_modules/three/examples/js/pmrem/PMREMCubeUVPacker.js"></script> <script type="module"> import { ShadeNodeLoader } from './ShadeNodeLoader.js'; import { TextureNode, TimerNode, FloatNode, Vector3Node } from './node_modules/three/examples/js/nodes/Nodes.js'; const renderer = new THREE.WebGLRenderer( { antialias: true } ); renderer.setSize( window.innerWidth, window.innerHeight ); renderer.setClearColor( 0x202020 ); renderer.physicallyCorrectLights = true; renderer.gammaOutput = true; renderer.gammaFactor = 2.2; document.body.appendChild( renderer.domElement ); const timerNode = new TimerNode( 1.0 ); const micNode = new FloatNode( 0.01 ); const otherProps = []; let mesh, geometry, material, envMap; // const props = { suzanne: null, grass: null, roundedCube: null, cube: new THREE.BoxBufferGeometry(1.8, 1.8, 1.8), sphere: new THREE.SphereBufferGeometry( 1.8, 32, 32 ), plane: new THREE.PlaneBufferGeometry( 5, 5, 64, 64 ).rotateX( - 1 * Math.PI / 2 ) }; const examples = [ {name: 'Instancing Grid', shader: 'assets/shaders/InstancingGrid/Graph.json', prop: 'roundedCube', camera: [ 25, 20, 25 ], grid: false }, {name: 'Checkers', shader: 'assets/shaders/Checkers/Graph.json', prop: 'cube', camera: [ 5, 3, 4 ] }, {name: 'Dissolve', shader: 'assets/shaders/Dissolve/Graph.json', prop: 'suzanne', camera: [ 5, 3, 4 ] }, {name: 'Fake Volume', shader: 'assets/shaders/FakeVolume/Graph.json', prop: 'sphere', camera: [ 5, 3, 4 ] }, {name: 'Grass', shader: 'assets/shaders/Grass/Graph.json', prop: 'grass', camera: [ 10, 8, 10 ] }, {name: 'Hologram', shader: 'assets/shaders/Hologram/Graph.json', prop: 'suzanne', camera: [ 5, 3, 4 ] }, {name: 'Wire Ripple', shader: 'assets/shaders/WireRipple/Graph.json', prop: 'plane', camera: [ 5, 3, 4 ] }, {name: 'Wireframe', shader: 'assets/shaders/Wireframe/Graph.json', prop: 'sphere', camera: [ 5, 3, 4 ] }, // {name: '[broken] Clouds', shader: 'assets/shaders/Clouds/Graph.json', prop: 'cube', camera: [ 5, 3, 4 ] }, {name: '[broken] Explosion', shader: 'assets/shaders/Explosion/Graph.json', prop: 'sphere', camera: [ 25, 20, 25 ] }, // {name: '[broken] Mask Blend', shader: 'assets/shaders/MaskBlend/Graph.json', prop: 'cube', camera: [ 5, 3, 4 ] }, {name: '[broken] Ripple', shader: 'assets/shaders/Ripple/Graph.json', prop: 'plane', camera: [ 5, 3, 4 ] }, ]; let selectedExample = examples[ 0 ]; const api = { model: selectedExample.name }; const gui = new dat.GUI(); gui.add( api, 'model', examples.map( ( d ) => d.name ) ).onChange( () => { selectedExample = examples.find( ( d ) => api.model === d.name ); mesh.parent.remove( mesh ); mesh.geometry.dispose(); mesh.material.dispose(); otherProps.forEach( ( o ) => o.parent.remove( o ) ); otherProps.length = 0; loadShader( selectedExample.shader ).then( ( _material ) => { mat
Open service 76.76.21.9:443 · three-shadenodeloader.donmccurdy.com
2024-09-06 20:54
HTTP/1.1 200 OK Accept-Ranges: bytes Access-Control-Allow-Origin: * Age: 2 Cache-Control: public, max-age=0, must-revalidate Content-Disposition: inline; filename="index" Content-Length: 10577 Content-Type: text/html; charset=utf-8 Date: Fri, 06 Sep 2024 20:55:03 GMT Etag: W/"0b0fe30a17009abb27626fcc2e6f8e35ba1ea851" Server: Vercel Strict-Transport-Security: max-age=63072000 X-Vercel-Cache: HIT X-Vercel-Id: bom1::z27sf-1725656103744-b3435144d3e3 Connection: close Page title: three.js • examples • shade node loader <!DOCTYPE html> <meta charset="utf-8"> <title>three.js • examples • shade node loader</title> <style> html, body { margin: 0; padding: 0; background: #000; width: 100%; height: 100%; overflow: hidden; } p { margin: 0; } .attribution { width: 100%; max-width: 400px; color: #424242; position: fixed; bottom: 2em; left: 0; right: 0; margin: 0 auto; background: rgba(255,255,255, 0.8); padding: 0.5em 1em 0.7em; border-radius: 2px; font-family: monospace; text-align: center; max-width: 402px; } </style> <script src="./node_modules/dat.gui/build/dat.gui.js"></script> <script src="./node_modules/three/build/three.js"></script> <script src="./node_modules/three/examples/js/controls/OrbitControls.js"></script> <script src="./node_modules/three/examples/js/loaders/GLTFLoader.js"></script> <script src="./node_modules/three/examples/js/loaders/RGBELoader.js"></script> <script src="./node_modules/three/examples/js/loaders/HDRCubeTextureLoader.js"></script> <script src="./node_modules/three/examples/js/pmrem/PMREMGenerator.js"></script> <script src="./node_modules/three/examples/js/pmrem/PMREMCubeUVPacker.js"></script> <script type="module"> import { ShadeNodeLoader } from './ShadeNodeLoader.js'; import { TextureNode, TimerNode, FloatNode, Vector3Node } from './node_modules/three/examples/js/nodes/Nodes.js'; const renderer = new THREE.WebGLRenderer( { antialias: true } ); renderer.setSize( window.innerWidth, window.innerHeight ); renderer.setClearColor( 0x202020 ); renderer.physicallyCorrectLights = true; renderer.gammaOutput = true; renderer.gammaFactor = 2.2; document.body.appendChild( renderer.domElement ); const timerNode = new TimerNode( 1.0 ); const micNode = new FloatNode( 0.01 ); const otherProps = []; let mesh, geometry, material, envMap; // const props = { suzanne: null, grass: null, roundedCube: null, cube: new THREE.BoxBufferGeometry(1.8, 1.8, 1.8), sphere: new THREE.SphereBufferGeometry( 1.8, 32, 32 ), plane: new THREE.PlaneBufferGeometry( 5, 5, 64, 64 ).rotateX( - 1 * Math.PI / 2 ) }; const examples = [ {name: 'Instancing Grid', shader: 'assets/shaders/InstancingGrid/Graph.json', prop: 'roundedCube', camera: [ 25, 20, 25 ], grid: false }, {name: 'Checkers', shader: 'assets/shaders/Checkers/Graph.json', prop: 'cube', camera: [ 5, 3, 4 ] }, {name: 'Dissolve', shader: 'assets/shaders/Dissolve/Graph.json', prop: 'suzanne', camera: [ 5, 3, 4 ] }, {name: 'Fake Volume', shader: 'assets/shaders/FakeVolume/Graph.json', prop: 'sphere', camera: [ 5, 3, 4 ] }, {name: 'Grass', shader: 'assets/shaders/Grass/Graph.json', prop: 'grass', camera: [ 10, 8, 10 ] }, {name: 'Hologram', shader: 'assets/shaders/Hologram/Graph.json', prop: 'suzanne', camera: [ 5, 3, 4 ] }, {name: 'Wire Ripple', shader: 'assets/shaders/WireRipple/Graph.json', prop: 'plane', camera: [ 5, 3, 4 ] }, {name: 'Wireframe', shader: 'assets/shaders/Wireframe/Graph.json', prop: 'sphere', camera: [ 5, 3, 4 ] }, // {name: '[broken] Clouds', shader: 'assets/shaders/Clouds/Graph.json', prop: 'cube', camera: [ 5, 3, 4 ] }, {name: '[broken] Explosion', shader: 'assets/shaders/Explosion/Graph.json', prop: 'sphere', camera: [ 25, 20, 25 ] }, // {name: '[broken] Mask Blend', shader: 'assets/shaders/MaskBlend/Graph.json', prop: 'cube', camera: [ 5, 3, 4 ] }, {name: '[broken] Ripple', shader: 'assets/shaders/Ripple/Graph.json', prop: 'plane', camera: [ 5, 3, 4 ] }, ]; let selectedExample = examples[ 0 ]; const api = { model: selectedExample.name }; const gui = new dat.GUI(); gui.add( api, 'model', examples.map( ( d ) => d.name ) ).onChange( () => { selectedExample = examples.find( ( d ) => api.model === d.name ); mesh.parent.remove( mesh ); mesh.geometry.dispose(); mesh.material.dispose(); otherProps.forEach( ( o ) => o.parent.remove( o ) ); otherProps.length = 0; loadShader( selectedExample.shader ).then( ( _material ) => { mat
Open service 76.76.21.9:443 · three-shadenodeloader.donmccurdy.com
2024-09-06 20:11
HTTP/1.1 200 OK Accept-Ranges: bytes Access-Control-Allow-Origin: * Age: 6495328 Cache-Control: public, max-age=0, must-revalidate Content-Disposition: inline; filename="index" Content-Length: 10577 Content-Type: text/html; charset=utf-8 Date: Fri, 06 Sep 2024 20:11:12 GMT Etag: W/"0b0fe30a17009abb27626fcc2e6f8e35ba1ea851" Server: Vercel Strict-Transport-Security: max-age=63072000 X-Vercel-Cache: HIT X-Vercel-Id: iad1::8ccfb-1725653472557-1bc148522d75 Connection: close Page title: three.js • examples • shade node loader <!DOCTYPE html> <meta charset="utf-8"> <title>three.js • examples • shade node loader</title> <style> html, body { margin: 0; padding: 0; background: #000; width: 100%; height: 100%; overflow: hidden; } p { margin: 0; } .attribution { width: 100%; max-width: 400px; color: #424242; position: fixed; bottom: 2em; left: 0; right: 0; margin: 0 auto; background: rgba(255,255,255, 0.8); padding: 0.5em 1em 0.7em; border-radius: 2px; font-family: monospace; text-align: center; max-width: 402px; } </style> <script src="./node_modules/dat.gui/build/dat.gui.js"></script> <script src="./node_modules/three/build/three.js"></script> <script src="./node_modules/three/examples/js/controls/OrbitControls.js"></script> <script src="./node_modules/three/examples/js/loaders/GLTFLoader.js"></script> <script src="./node_modules/three/examples/js/loaders/RGBELoader.js"></script> <script src="./node_modules/three/examples/js/loaders/HDRCubeTextureLoader.js"></script> <script src="./node_modules/three/examples/js/pmrem/PMREMGenerator.js"></script> <script src="./node_modules/three/examples/js/pmrem/PMREMCubeUVPacker.js"></script> <script type="module"> import { ShadeNodeLoader } from './ShadeNodeLoader.js'; import { TextureNode, TimerNode, FloatNode, Vector3Node } from './node_modules/three/examples/js/nodes/Nodes.js'; const renderer = new THREE.WebGLRenderer( { antialias: true } ); renderer.setSize( window.innerWidth, window.innerHeight ); renderer.setClearColor( 0x202020 ); renderer.physicallyCorrectLights = true; renderer.gammaOutput = true; renderer.gammaFactor = 2.2; document.body.appendChild( renderer.domElement ); const timerNode = new TimerNode( 1.0 ); const micNode = new FloatNode( 0.01 ); const otherProps = []; let mesh, geometry, material, envMap; // const props = { suzanne: null, grass: null, roundedCube: null, cube: new THREE.BoxBufferGeometry(1.8, 1.8, 1.8), sphere: new THREE.SphereBufferGeometry( 1.8, 32, 32 ), plane: new THREE.PlaneBufferGeometry( 5, 5, 64, 64 ).rotateX( - 1 * Math.PI / 2 ) }; const examples = [ {name: 'Instancing Grid', shader: 'assets/shaders/InstancingGrid/Graph.json', prop: 'roundedCube', camera: [ 25, 20, 25 ], grid: false }, {name: 'Checkers', shader: 'assets/shaders/Checkers/Graph.json', prop: 'cube', camera: [ 5, 3, 4 ] }, {name: 'Dissolve', shader: 'assets/shaders/Dissolve/Graph.json', prop: 'suzanne', camera: [ 5, 3, 4 ] }, {name: 'Fake Volume', shader: 'assets/shaders/FakeVolume/Graph.json', prop: 'sphere', camera: [ 5, 3, 4 ] }, {name: 'Grass', shader: 'assets/shaders/Grass/Graph.json', prop: 'grass', camera: [ 10, 8, 10 ] }, {name: 'Hologram', shader: 'assets/shaders/Hologram/Graph.json', prop: 'suzanne', camera: [ 5, 3, 4 ] }, {name: 'Wire Ripple', shader: 'assets/shaders/WireRipple/Graph.json', prop: 'plane', camera: [ 5, 3, 4 ] }, {name: 'Wireframe', shader: 'assets/shaders/Wireframe/Graph.json', prop: 'sphere', camera: [ 5, 3, 4 ] }, // {name: '[broken] Clouds', shader: 'assets/shaders/Clouds/Graph.json', prop: 'cube', camera: [ 5, 3, 4 ] }, {name: '[broken] Explosion', shader: 'assets/shaders/Explosion/Graph.json', prop: 'sphere', camera: [ 25, 20, 25 ] }, // {name: '[broken] Mask Blend', shader: 'assets/shaders/MaskBlend/Graph.json', prop: 'cube', camera: [ 5, 3, 4 ] }, {name: '[broken] Ripple', shader: 'assets/shaders/Ripple/Graph.json', prop: 'plane', camera: [ 5, 3, 4 ] }, ]; let selectedExample = examples[ 0 ]; const api = { model: selectedExample.name }; const gui = new dat.GUI(); gui.add( api, 'model', examples.map( ( d ) => d.name ) ).onChange( () => { selectedExample = examples.find( ( d ) => api.model === d.name ); mesh.parent.remove( mesh ); mesh.geometry.dispose(); mesh.material.dispose(); otherProps.forEach( ( o ) => o.parent.remove( o ) ); otherProps.length = 0; loadShader( selectedExample.shader ).then( ( _material ) => { mat
Open service 76.76.21.9:443 · three-shadenodeloader.donmccurdy.com
2024-08-16 22:14
HTTP/1.1 200 OK Accept-Ranges: bytes Access-Control-Allow-Origin: * Age: 0 Cache-Control: public, max-age=0, must-revalidate Content-Disposition: inline; filename="index" Content-Length: 10577 Content-Type: text/html; charset=utf-8 Date: Fri, 16 Aug 2024 22:14:57 GMT Etag: W/"0b0fe30a17009abb27626fcc2e6f8e35ba1ea851" Server: Vercel Strict-Transport-Security: max-age=63072000 X-Vercel-Cache: HIT X-Vercel-Id: hnd1::7vf5b-1723846497593-eba8ad2ceb04 Connection: close Page title: three.js • examples • shade node loader <!DOCTYPE html> <meta charset="utf-8"> <title>three.js • examples • shade node loader</title> <style> html, body { margin: 0; padding: 0; background: #000; width: 100%; height: 100%; overflow: hidden; } p { margin: 0; } .attribution { width: 100%; max-width: 400px; color: #424242; position: fixed; bottom: 2em; left: 0; right: 0; margin: 0 auto; background: rgba(255,255,255, 0.8); padding: 0.5em 1em 0.7em; border-radius: 2px; font-family: monospace; text-align: center; max-width: 402px; } </style> <script src="./node_modules/dat.gui/build/dat.gui.js"></script> <script src="./node_modules/three/build/three.js"></script> <script src="./node_modules/three/examples/js/controls/OrbitControls.js"></script> <script src="./node_modules/three/examples/js/loaders/GLTFLoader.js"></script> <script src="./node_modules/three/examples/js/loaders/RGBELoader.js"></script> <script src="./node_modules/three/examples/js/loaders/HDRCubeTextureLoader.js"></script> <script src="./node_modules/three/examples/js/pmrem/PMREMGenerator.js"></script> <script src="./node_modules/three/examples/js/pmrem/PMREMCubeUVPacker.js"></script> <script type="module"> import { ShadeNodeLoader } from './ShadeNodeLoader.js'; import { TextureNode, TimerNode, FloatNode, Vector3Node } from './node_modules/three/examples/js/nodes/Nodes.js'; const renderer = new THREE.WebGLRenderer( { antialias: true } ); renderer.setSize( window.innerWidth, window.innerHeight ); renderer.setClearColor( 0x202020 ); renderer.physicallyCorrectLights = true; renderer.gammaOutput = true; renderer.gammaFactor = 2.2; document.body.appendChild( renderer.domElement ); const timerNode = new TimerNode( 1.0 ); const micNode = new FloatNode( 0.01 ); const otherProps = []; let mesh, geometry, material, envMap; // const props = { suzanne: null, grass: null, roundedCube: null, cube: new THREE.BoxBufferGeometry(1.8, 1.8, 1.8), sphere: new THREE.SphereBufferGeometry( 1.8, 32, 32 ), plane: new THREE.PlaneBufferGeometry( 5, 5, 64, 64 ).rotateX( - 1 * Math.PI / 2 ) }; const examples = [ {name: 'Instancing Grid', shader: 'assets/shaders/InstancingGrid/Graph.json', prop: 'roundedCube', camera: [ 25, 20, 25 ], grid: false }, {name: 'Checkers', shader: 'assets/shaders/Checkers/Graph.json', prop: 'cube', camera: [ 5, 3, 4 ] }, {name: 'Dissolve', shader: 'assets/shaders/Dissolve/Graph.json', prop: 'suzanne', camera: [ 5, 3, 4 ] }, {name: 'Fake Volume', shader: 'assets/shaders/FakeVolume/Graph.json', prop: 'sphere', camera: [ 5, 3, 4 ] }, {name: 'Grass', shader: 'assets/shaders/Grass/Graph.json', prop: 'grass', camera: [ 10, 8, 10 ] }, {name: 'Hologram', shader: 'assets/shaders/Hologram/Graph.json', prop: 'suzanne', camera: [ 5, 3, 4 ] }, {name: 'Wire Ripple', shader: 'assets/shaders/WireRipple/Graph.json', prop: 'plane', camera: [ 5, 3, 4 ] }, {name: 'Wireframe', shader: 'assets/shaders/Wireframe/Graph.json', prop: 'sphere', camera: [ 5, 3, 4 ] }, // {name: '[broken] Clouds', shader: 'assets/shaders/Clouds/Graph.json', prop: 'cube', camera: [ 5, 3, 4 ] }, {name: '[broken] Explosion', shader: 'assets/shaders/Explosion/Graph.json', prop: 'sphere', camera: [ 25, 20, 25 ] }, // {name: '[broken] Mask Blend', shader: 'assets/shaders/MaskBlend/Graph.json', prop: 'cube', camera: [ 5, 3, 4 ] }, {name: '[broken] Ripple', shader: 'assets/shaders/Ripple/Graph.json', prop: 'plane', camera: [ 5, 3, 4 ] }, ]; let selectedExample = examples[ 0 ]; const api = { model: selectedExample.name }; const gui = new dat.GUI(); gui.add( api, 'model', examples.map( ( d ) => d.name ) ).onChange( () => { selectedExample = examples.find( ( d ) => api.model === d.name ); mesh.parent.remove( mesh ); mesh.geometry.dispose(); mesh.material.dispose(); otherProps.forEach( ( o ) => o.parent.remove( o ) ); otherProps.length = 0; loadShader( selectedExample.shader ).then( ( _material ) => { mat
Open service 76.76.21.9:443 · three-shadenodeloader.donmccurdy.com
2024-08-16 19:26
HTTP/1.1 200 OK Accept-Ranges: bytes Access-Control-Allow-Origin: * Age: 12801091 Cache-Control: public, max-age=0, must-revalidate Content-Disposition: inline; filename="index" Content-Length: 10577 Content-Type: text/html; charset=utf-8 Date: Fri, 16 Aug 2024 19:26:08 GMT Etag: W/"0b0fe30a17009abb27626fcc2e6f8e35ba1ea851" Server: Vercel Strict-Transport-Security: max-age=63072000 X-Vercel-Cache: HIT X-Vercel-Id: fra1::xnm66-1723836368217-660661049c9c Connection: close Page title: three.js • examples • shade node loader <!DOCTYPE html> <meta charset="utf-8"> <title>three.js • examples • shade node loader</title> <style> html, body { margin: 0; padding: 0; background: #000; width: 100%; height: 100%; overflow: hidden; } p { margin: 0; } .attribution { width: 100%; max-width: 400px; color: #424242; position: fixed; bottom: 2em; left: 0; right: 0; margin: 0 auto; background: rgba(255,255,255, 0.8); padding: 0.5em 1em 0.7em; border-radius: 2px; font-family: monospace; text-align: center; max-width: 402px; } </style> <script src="./node_modules/dat.gui/build/dat.gui.js"></script> <script src="./node_modules/three/build/three.js"></script> <script src="./node_modules/three/examples/js/controls/OrbitControls.js"></script> <script src="./node_modules/three/examples/js/loaders/GLTFLoader.js"></script> <script src="./node_modules/three/examples/js/loaders/RGBELoader.js"></script> <script src="./node_modules/three/examples/js/loaders/HDRCubeTextureLoader.js"></script> <script src="./node_modules/three/examples/js/pmrem/PMREMGenerator.js"></script> <script src="./node_modules/three/examples/js/pmrem/PMREMCubeUVPacker.js"></script> <script type="module"> import { ShadeNodeLoader } from './ShadeNodeLoader.js'; import { TextureNode, TimerNode, FloatNode, Vector3Node } from './node_modules/three/examples/js/nodes/Nodes.js'; const renderer = new THREE.WebGLRenderer( { antialias: true } ); renderer.setSize( window.innerWidth, window.innerHeight ); renderer.setClearColor( 0x202020 ); renderer.physicallyCorrectLights = true; renderer.gammaOutput = true; renderer.gammaFactor = 2.2; document.body.appendChild( renderer.domElement ); const timerNode = new TimerNode( 1.0 ); const micNode = new FloatNode( 0.01 ); const otherProps = []; let mesh, geometry, material, envMap; // const props = { suzanne: null, grass: null, roundedCube: null, cube: new THREE.BoxBufferGeometry(1.8, 1.8, 1.8), sphere: new THREE.SphereBufferGeometry( 1.8, 32, 32 ), plane: new THREE.PlaneBufferGeometry( 5, 5, 64, 64 ).rotateX( - 1 * Math.PI / 2 ) }; const examples = [ {name: 'Instancing Grid', shader: 'assets/shaders/InstancingGrid/Graph.json', prop: 'roundedCube', camera: [ 25, 20, 25 ], grid: false }, {name: 'Checkers', shader: 'assets/shaders/Checkers/Graph.json', prop: 'cube', camera: [ 5, 3, 4 ] }, {name: 'Dissolve', shader: 'assets/shaders/Dissolve/Graph.json', prop: 'suzanne', camera: [ 5, 3, 4 ] }, {name: 'Fake Volume', shader: 'assets/shaders/FakeVolume/Graph.json', prop: 'sphere', camera: [ 5, 3, 4 ] }, {name: 'Grass', shader: 'assets/shaders/Grass/Graph.json', prop: 'grass', camera: [ 10, 8, 10 ] }, {name: 'Hologram', shader: 'assets/shaders/Hologram/Graph.json', prop: 'suzanne', camera: [ 5, 3, 4 ] }, {name: 'Wire Ripple', shader: 'assets/shaders/WireRipple/Graph.json', prop: 'plane', camera: [ 5, 3, 4 ] }, {name: 'Wireframe', shader: 'assets/shaders/Wireframe/Graph.json', prop: 'sphere', camera: [ 5, 3, 4 ] }, // {name: '[broken] Clouds', shader: 'assets/shaders/Clouds/Graph.json', prop: 'cube', camera: [ 5, 3, 4 ] }, {name: '[broken] Explosion', shader: 'assets/shaders/Explosion/Graph.json', prop: 'sphere', camera: [ 25, 20, 25 ] }, // {name: '[broken] Mask Blend', shader: 'assets/shaders/MaskBlend/Graph.json', prop: 'cube', camera: [ 5, 3, 4 ] }, {name: '[broken] Ripple', shader: 'assets/shaders/Ripple/Graph.json', prop: 'plane', camera: [ 5, 3, 4 ] }, ]; let selectedExample = examples[ 0 ]; const api = { model: selectedExample.name }; const gui = new dat.GUI(); gui.add( api, 'model', examples.map( ( d ) => d.name ) ).onChange( () => { selectedExample = examples.find( ( d ) => api.model === d.name ); mesh.parent.remove( mesh ); mesh.geometry.dispose(); mesh.material.dispose(); otherProps.forEach( ( o ) => o.parent.remove( o ) ); otherProps.length = 0; loadShader( selectedExample.shader ).then( ( _material ) => { mat
Open service 76.76.21.9:443 · three-shadenodeloader.donmccurdy.com
2024-08-14 20:30
HTTP/1.1 200 OK Accept-Ranges: bytes Access-Control-Allow-Origin: * Age: 4509271 Cache-Control: public, max-age=0, must-revalidate Content-Disposition: inline; filename="index" Content-Length: 10577 Content-Type: text/html; charset=utf-8 Date: Wed, 14 Aug 2024 20:30:14 GMT Etag: W/"0b0fe30a17009abb27626fcc2e6f8e35ba1ea851" Server: Vercel Strict-Transport-Security: max-age=63072000 X-Vercel-Cache: HIT X-Vercel-Id: iad1::9twr4-1723667414859-6ecbcfb1078f Connection: close Page title: three.js • examples • shade node loader <!DOCTYPE html> <meta charset="utf-8"> <title>three.js • examples • shade node loader</title> <style> html, body { margin: 0; padding: 0; background: #000; width: 100%; height: 100%; overflow: hidden; } p { margin: 0; } .attribution { width: 100%; max-width: 400px; color: #424242; position: fixed; bottom: 2em; left: 0; right: 0; margin: 0 auto; background: rgba(255,255,255, 0.8); padding: 0.5em 1em 0.7em; border-radius: 2px; font-family: monospace; text-align: center; max-width: 402px; } </style> <script src="./node_modules/dat.gui/build/dat.gui.js"></script> <script src="./node_modules/three/build/three.js"></script> <script src="./node_modules/three/examples/js/controls/OrbitControls.js"></script> <script src="./node_modules/three/examples/js/loaders/GLTFLoader.js"></script> <script src="./node_modules/three/examples/js/loaders/RGBELoader.js"></script> <script src="./node_modules/three/examples/js/loaders/HDRCubeTextureLoader.js"></script> <script src="./node_modules/three/examples/js/pmrem/PMREMGenerator.js"></script> <script src="./node_modules/three/examples/js/pmrem/PMREMCubeUVPacker.js"></script> <script type="module"> import { ShadeNodeLoader } from './ShadeNodeLoader.js'; import { TextureNode, TimerNode, FloatNode, Vector3Node } from './node_modules/three/examples/js/nodes/Nodes.js'; const renderer = new THREE.WebGLRenderer( { antialias: true } ); renderer.setSize( window.innerWidth, window.innerHeight ); renderer.setClearColor( 0x202020 ); renderer.physicallyCorrectLights = true; renderer.gammaOutput = true; renderer.gammaFactor = 2.2; document.body.appendChild( renderer.domElement ); const timerNode = new TimerNode( 1.0 ); const micNode = new FloatNode( 0.01 ); const otherProps = []; let mesh, geometry, material, envMap; // const props = { suzanne: null, grass: null, roundedCube: null, cube: new THREE.BoxBufferGeometry(1.8, 1.8, 1.8), sphere: new THREE.SphereBufferGeometry( 1.8, 32, 32 ), plane: new THREE.PlaneBufferGeometry( 5, 5, 64, 64 ).rotateX( - 1 * Math.PI / 2 ) }; const examples = [ {name: 'Instancing Grid', shader: 'assets/shaders/InstancingGrid/Graph.json', prop: 'roundedCube', camera: [ 25, 20, 25 ], grid: false }, {name: 'Checkers', shader: 'assets/shaders/Checkers/Graph.json', prop: 'cube', camera: [ 5, 3, 4 ] }, {name: 'Dissolve', shader: 'assets/shaders/Dissolve/Graph.json', prop: 'suzanne', camera: [ 5, 3, 4 ] }, {name: 'Fake Volume', shader: 'assets/shaders/FakeVolume/Graph.json', prop: 'sphere', camera: [ 5, 3, 4 ] }, {name: 'Grass', shader: 'assets/shaders/Grass/Graph.json', prop: 'grass', camera: [ 10, 8, 10 ] }, {name: 'Hologram', shader: 'assets/shaders/Hologram/Graph.json', prop: 'suzanne', camera: [ 5, 3, 4 ] }, {name: 'Wire Ripple', shader: 'assets/shaders/WireRipple/Graph.json', prop: 'plane', camera: [ 5, 3, 4 ] }, {name: 'Wireframe', shader: 'assets/shaders/Wireframe/Graph.json', prop: 'sphere', camera: [ 5, 3, 4 ] }, // {name: '[broken] Clouds', shader: 'assets/shaders/Clouds/Graph.json', prop: 'cube', camera: [ 5, 3, 4 ] }, {name: '[broken] Explosion', shader: 'assets/shaders/Explosion/Graph.json', prop: 'sphere', camera: [ 25, 20, 25 ] }, // {name: '[broken] Mask Blend', shader: 'assets/shaders/MaskBlend/Graph.json', prop: 'cube', camera: [ 5, 3, 4 ] }, {name: '[broken] Ripple', shader: 'assets/shaders/Ripple/Graph.json', prop: 'plane', camera: [ 5, 3, 4 ] }, ]; let selectedExample = examples[ 0 ]; const api = { model: selectedExample.name }; const gui = new dat.GUI(); gui.add( api, 'model', examples.map( ( d ) => d.name ) ).onChange( () => { selectedExample = examples.find( ( d ) => api.model === d.name ); mesh.parent.remove( mesh ); mesh.geometry.dispose(); mesh.material.dispose(); otherProps.forEach( ( o ) => o.parent.remove( o ) ); otherProps.length = 0; loadShader( selectedExample.shader ).then( ( _material ) => { mat
Open service 76.76.21.9:443 · three-shadenodeloader.donmccurdy.com
2024-08-14 17:36
HTTP/1.1 200 OK Accept-Ranges: bytes Access-Control-Allow-Origin: * Age: 12621733 Cache-Control: public, max-age=0, must-revalidate Content-Disposition: inline; filename="index" Content-Length: 10577 Content-Type: text/html; charset=utf-8 Date: Wed, 14 Aug 2024 17:36:50 GMT Etag: W/"0b0fe30a17009abb27626fcc2e6f8e35ba1ea851" Server: Vercel Strict-Transport-Security: max-age=63072000 X-Vercel-Cache: HIT X-Vercel-Id: fra1::ws6jq-1723657009997-eec921411cec Connection: close Page title: three.js • examples • shade node loader <!DOCTYPE html> <meta charset="utf-8"> <title>three.js • examples • shade node loader</title> <style> html, body { margin: 0; padding: 0; background: #000; width: 100%; height: 100%; overflow: hidden; } p { margin: 0; } .attribution { width: 100%; max-width: 400px; color: #424242; position: fixed; bottom: 2em; left: 0; right: 0; margin: 0 auto; background: rgba(255,255,255, 0.8); padding: 0.5em 1em 0.7em; border-radius: 2px; font-family: monospace; text-align: center; max-width: 402px; } </style> <script src="./node_modules/dat.gui/build/dat.gui.js"></script> <script src="./node_modules/three/build/three.js"></script> <script src="./node_modules/three/examples/js/controls/OrbitControls.js"></script> <script src="./node_modules/three/examples/js/loaders/GLTFLoader.js"></script> <script src="./node_modules/three/examples/js/loaders/RGBELoader.js"></script> <script src="./node_modules/three/examples/js/loaders/HDRCubeTextureLoader.js"></script> <script src="./node_modules/three/examples/js/pmrem/PMREMGenerator.js"></script> <script src="./node_modules/three/examples/js/pmrem/PMREMCubeUVPacker.js"></script> <script type="module"> import { ShadeNodeLoader } from './ShadeNodeLoader.js'; import { TextureNode, TimerNode, FloatNode, Vector3Node } from './node_modules/three/examples/js/nodes/Nodes.js'; const renderer = new THREE.WebGLRenderer( { antialias: true } ); renderer.setSize( window.innerWidth, window.innerHeight ); renderer.setClearColor( 0x202020 ); renderer.physicallyCorrectLights = true; renderer.gammaOutput = true; renderer.gammaFactor = 2.2; document.body.appendChild( renderer.domElement ); const timerNode = new TimerNode( 1.0 ); const micNode = new FloatNode( 0.01 ); const otherProps = []; let mesh, geometry, material, envMap; // const props = { suzanne: null, grass: null, roundedCube: null, cube: new THREE.BoxBufferGeometry(1.8, 1.8, 1.8), sphere: new THREE.SphereBufferGeometry( 1.8, 32, 32 ), plane: new THREE.PlaneBufferGeometry( 5, 5, 64, 64 ).rotateX( - 1 * Math.PI / 2 ) }; const examples = [ {name: 'Instancing Grid', shader: 'assets/shaders/InstancingGrid/Graph.json', prop: 'roundedCube', camera: [ 25, 20, 25 ], grid: false }, {name: 'Checkers', shader: 'assets/shaders/Checkers/Graph.json', prop: 'cube', camera: [ 5, 3, 4 ] }, {name: 'Dissolve', shader: 'assets/shaders/Dissolve/Graph.json', prop: 'suzanne', camera: [ 5, 3, 4 ] }, {name: 'Fake Volume', shader: 'assets/shaders/FakeVolume/Graph.json', prop: 'sphere', camera: [ 5, 3, 4 ] }, {name: 'Grass', shader: 'assets/shaders/Grass/Graph.json', prop: 'grass', camera: [ 10, 8, 10 ] }, {name: 'Hologram', shader: 'assets/shaders/Hologram/Graph.json', prop: 'suzanne', camera: [ 5, 3, 4 ] }, {name: 'Wire Ripple', shader: 'assets/shaders/WireRipple/Graph.json', prop: 'plane', camera: [ 5, 3, 4 ] }, {name: 'Wireframe', shader: 'assets/shaders/Wireframe/Graph.json', prop: 'sphere', camera: [ 5, 3, 4 ] }, // {name: '[broken] Clouds', shader: 'assets/shaders/Clouds/Graph.json', prop: 'cube', camera: [ 5, 3, 4 ] }, {name: '[broken] Explosion', shader: 'assets/shaders/Explosion/Graph.json', prop: 'sphere', camera: [ 25, 20, 25 ] }, // {name: '[broken] Mask Blend', shader: 'assets/shaders/MaskBlend/Graph.json', prop: 'cube', camera: [ 5, 3, 4 ] }, {name: '[broken] Ripple', shader: 'assets/shaders/Ripple/Graph.json', prop: 'plane', camera: [ 5, 3, 4 ] }, ]; let selectedExample = examples[ 0 ]; const api = { model: selectedExample.name }; const gui = new dat.GUI(); gui.add( api, 'model', examples.map( ( d ) => d.name ) ).onChange( () => { selectedExample = examples.find( ( d ) => api.model === d.name ); mesh.parent.remove( mesh ); mesh.geometry.dispose(); mesh.material.dispose(); otherProps.forEach( ( o ) => o.parent.remove( o ) ); otherProps.length = 0; loadShader( selectedExample.shader ).then( ( _material ) => { mat
Open service 76.76.21.9:443 · three-shadenodeloader.donmccurdy.com
2024-08-12 22:09
HTTP/1.1 200 OK Accept-Ranges: bytes Access-Control-Allow-Origin: * Age: 4342414 Cache-Control: public, max-age=0, must-revalidate Content-Disposition: inline; filename="index" Content-Length: 10577 Content-Type: text/html; charset=utf-8 Date: Mon, 12 Aug 2024 22:09:18 GMT Etag: W/"0b0fe30a17009abb27626fcc2e6f8e35ba1ea851" Server: Vercel Strict-Transport-Security: max-age=63072000 X-Vercel-Cache: HIT X-Vercel-Id: iad1::jgcpg-1723500558155-3fd534e83376 Connection: close Page title: three.js • examples • shade node loader <!DOCTYPE html> <meta charset="utf-8"> <title>three.js • examples • shade node loader</title> <style> html, body { margin: 0; padding: 0; background: #000; width: 100%; height: 100%; overflow: hidden; } p { margin: 0; } .attribution { width: 100%; max-width: 400px; color: #424242; position: fixed; bottom: 2em; left: 0; right: 0; margin: 0 auto; background: rgba(255,255,255, 0.8); padding: 0.5em 1em 0.7em; border-radius: 2px; font-family: monospace; text-align: center; max-width: 402px; } </style> <script src="./node_modules/dat.gui/build/dat.gui.js"></script> <script src="./node_modules/three/build/three.js"></script> <script src="./node_modules/three/examples/js/controls/OrbitControls.js"></script> <script src="./node_modules/three/examples/js/loaders/GLTFLoader.js"></script> <script src="./node_modules/three/examples/js/loaders/RGBELoader.js"></script> <script src="./node_modules/three/examples/js/loaders/HDRCubeTextureLoader.js"></script> <script src="./node_modules/three/examples/js/pmrem/PMREMGenerator.js"></script> <script src="./node_modules/three/examples/js/pmrem/PMREMCubeUVPacker.js"></script> <script type="module"> import { ShadeNodeLoader } from './ShadeNodeLoader.js'; import { TextureNode, TimerNode, FloatNode, Vector3Node } from './node_modules/three/examples/js/nodes/Nodes.js'; const renderer = new THREE.WebGLRenderer( { antialias: true } ); renderer.setSize( window.innerWidth, window.innerHeight ); renderer.setClearColor( 0x202020 ); renderer.physicallyCorrectLights = true; renderer.gammaOutput = true; renderer.gammaFactor = 2.2; document.body.appendChild( renderer.domElement ); const timerNode = new TimerNode( 1.0 ); const micNode = new FloatNode( 0.01 ); const otherProps = []; let mesh, geometry, material, envMap; // const props = { suzanne: null, grass: null, roundedCube: null, cube: new THREE.BoxBufferGeometry(1.8, 1.8, 1.8), sphere: new THREE.SphereBufferGeometry( 1.8, 32, 32 ), plane: new THREE.PlaneBufferGeometry( 5, 5, 64, 64 ).rotateX( - 1 * Math.PI / 2 ) }; const examples = [ {name: 'Instancing Grid', shader: 'assets/shaders/InstancingGrid/Graph.json', prop: 'roundedCube', camera: [ 25, 20, 25 ], grid: false }, {name: 'Checkers', shader: 'assets/shaders/Checkers/Graph.json', prop: 'cube', camera: [ 5, 3, 4 ] }, {name: 'Dissolve', shader: 'assets/shaders/Dissolve/Graph.json', prop: 'suzanne', camera: [ 5, 3, 4 ] }, {name: 'Fake Volume', shader: 'assets/shaders/FakeVolume/Graph.json', prop: 'sphere', camera: [ 5, 3, 4 ] }, {name: 'Grass', shader: 'assets/shaders/Grass/Graph.json', prop: 'grass', camera: [ 10, 8, 10 ] }, {name: 'Hologram', shader: 'assets/shaders/Hologram/Graph.json', prop: 'suzanne', camera: [ 5, 3, 4 ] }, {name: 'Wire Ripple', shader: 'assets/shaders/WireRipple/Graph.json', prop: 'plane', camera: [ 5, 3, 4 ] }, {name: 'Wireframe', shader: 'assets/shaders/Wireframe/Graph.json', prop: 'sphere', camera: [ 5, 3, 4 ] }, // {name: '[broken] Clouds', shader: 'assets/shaders/Clouds/Graph.json', prop: 'cube', camera: [ 5, 3, 4 ] }, {name: '[broken] Explosion', shader: 'assets/shaders/Explosion/Graph.json', prop: 'sphere', camera: [ 25, 20, 25 ] }, // {name: '[broken] Mask Blend', shader: 'assets/shaders/MaskBlend/Graph.json', prop: 'cube', camera: [ 5, 3, 4 ] }, {name: '[broken] Ripple', shader: 'assets/shaders/Ripple/Graph.json', prop: 'plane', camera: [ 5, 3, 4 ] }, ]; let selectedExample = examples[ 0 ]; const api = { model: selectedExample.name }; const gui = new dat.GUI(); gui.add( api, 'model', examples.map( ( d ) => d.name ) ).onChange( () => { selectedExample = examples.find( ( d ) => api.model === d.name ); mesh.parent.remove( mesh ); mesh.geometry.dispose(); mesh.material.dispose(); otherProps.forEach( ( o ) => o.parent.remove( o ) ); otherProps.length = 0; loadShader( selectedExample.shader ).then( ( _material ) => { mat
Open service 76.76.21.9:443 · three-shadenodeloader.donmccurdy.com
2024-08-12 19:41
HTTP/1.1 200 OK Accept-Ranges: bytes Access-Control-Allow-Origin: * Age: 12456384 Cache-Control: public, max-age=0, must-revalidate Content-Disposition: inline; filename="index" Content-Length: 10577 Content-Type: text/html; charset=utf-8 Date: Mon, 12 Aug 2024 19:41:01 GMT Etag: W/"0b0fe30a17009abb27626fcc2e6f8e35ba1ea851" Server: Vercel Strict-Transport-Security: max-age=63072000 X-Vercel-Cache: HIT X-Vercel-Id: fra1::5nw74-1723491661388-0e1a1a2f884a Connection: close Page title: three.js • examples • shade node loader <!DOCTYPE html> <meta charset="utf-8"> <title>three.js • examples • shade node loader</title> <style> html, body { margin: 0; padding: 0; background: #000; width: 100%; height: 100%; overflow: hidden; } p { margin: 0; } .attribution { width: 100%; max-width: 400px; color: #424242; position: fixed; bottom: 2em; left: 0; right: 0; margin: 0 auto; background: rgba(255,255,255, 0.8); padding: 0.5em 1em 0.7em; border-radius: 2px; font-family: monospace; text-align: center; max-width: 402px; } </style> <script src="./node_modules/dat.gui/build/dat.gui.js"></script> <script src="./node_modules/three/build/three.js"></script> <script src="./node_modules/three/examples/js/controls/OrbitControls.js"></script> <script src="./node_modules/three/examples/js/loaders/GLTFLoader.js"></script> <script src="./node_modules/three/examples/js/loaders/RGBELoader.js"></script> <script src="./node_modules/three/examples/js/loaders/HDRCubeTextureLoader.js"></script> <script src="./node_modules/three/examples/js/pmrem/PMREMGenerator.js"></script> <script src="./node_modules/three/examples/js/pmrem/PMREMCubeUVPacker.js"></script> <script type="module"> import { ShadeNodeLoader } from './ShadeNodeLoader.js'; import { TextureNode, TimerNode, FloatNode, Vector3Node } from './node_modules/three/examples/js/nodes/Nodes.js'; const renderer = new THREE.WebGLRenderer( { antialias: true } ); renderer.setSize( window.innerWidth, window.innerHeight ); renderer.setClearColor( 0x202020 ); renderer.physicallyCorrectLights = true; renderer.gammaOutput = true; renderer.gammaFactor = 2.2; document.body.appendChild( renderer.domElement ); const timerNode = new TimerNode( 1.0 ); const micNode = new FloatNode( 0.01 ); const otherProps = []; let mesh, geometry, material, envMap; // const props = { suzanne: null, grass: null, roundedCube: null, cube: new THREE.BoxBufferGeometry(1.8, 1.8, 1.8), sphere: new THREE.SphereBufferGeometry( 1.8, 32, 32 ), plane: new THREE.PlaneBufferGeometry( 5, 5, 64, 64 ).rotateX( - 1 * Math.PI / 2 ) }; const examples = [ {name: 'Instancing Grid', shader: 'assets/shaders/InstancingGrid/Graph.json', prop: 'roundedCube', camera: [ 25, 20, 25 ], grid: false }, {name: 'Checkers', shader: 'assets/shaders/Checkers/Graph.json', prop: 'cube', camera: [ 5, 3, 4 ] }, {name: 'Dissolve', shader: 'assets/shaders/Dissolve/Graph.json', prop: 'suzanne', camera: [ 5, 3, 4 ] }, {name: 'Fake Volume', shader: 'assets/shaders/FakeVolume/Graph.json', prop: 'sphere', camera: [ 5, 3, 4 ] }, {name: 'Grass', shader: 'assets/shaders/Grass/Graph.json', prop: 'grass', camera: [ 10, 8, 10 ] }, {name: 'Hologram', shader: 'assets/shaders/Hologram/Graph.json', prop: 'suzanne', camera: [ 5, 3, 4 ] }, {name: 'Wire Ripple', shader: 'assets/shaders/WireRipple/Graph.json', prop: 'plane', camera: [ 5, 3, 4 ] }, {name: 'Wireframe', shader: 'assets/shaders/Wireframe/Graph.json', prop: 'sphere', camera: [ 5, 3, 4 ] }, // {name: '[broken] Clouds', shader: 'assets/shaders/Clouds/Graph.json', prop: 'cube', camera: [ 5, 3, 4 ] }, {name: '[broken] Explosion', shader: 'assets/shaders/Explosion/Graph.json', prop: 'sphere', camera: [ 25, 20, 25 ] }, // {name: '[broken] Mask Blend', shader: 'assets/shaders/MaskBlend/Graph.json', prop: 'cube', camera: [ 5, 3, 4 ] }, {name: '[broken] Ripple', shader: 'assets/shaders/Ripple/Graph.json', prop: 'plane', camera: [ 5, 3, 4 ] }, ]; let selectedExample = examples[ 0 ]; const api = { model: selectedExample.name }; const gui = new dat.GUI(); gui.add( api, 'model', examples.map( ( d ) => d.name ) ).onChange( () => { selectedExample = examples.find( ( d ) => api.model === d.name ); mesh.parent.remove( mesh ); mesh.geometry.dispose(); mesh.material.dispose(); otherProps.forEach( ( o ) => o.parent.remove( o ) ); otherProps.length = 0; loadShader( selectedExample.shader ).then( ( _material ) => { mat
Open service 76.76.21.9:443 · three-shadenodeloader.donmccurdy.com
2024-08-10 22:12
HTTP/1.1 200 OK Accept-Ranges: bytes Access-Control-Allow-Origin: * Age: 12292657 Cache-Control: public, max-age=0, must-revalidate Content-Disposition: inline; filename="index" Content-Length: 10577 Content-Type: text/html; charset=utf-8 Date: Sat, 10 Aug 2024 22:12:14 GMT Etag: W/"0b0fe30a17009abb27626fcc2e6f8e35ba1ea851" Server: Vercel Strict-Transport-Security: max-age=63072000 X-Vercel-Cache: HIT X-Vercel-Id: fra1::8sgp4-1723327934433-05a35f845e3a Connection: close Page title: three.js • examples • shade node loader <!DOCTYPE html> <meta charset="utf-8"> <title>three.js • examples • shade node loader</title> <style> html, body { margin: 0; padding: 0; background: #000; width: 100%; height: 100%; overflow: hidden; } p { margin: 0; } .attribution { width: 100%; max-width: 400px; color: #424242; position: fixed; bottom: 2em; left: 0; right: 0; margin: 0 auto; background: rgba(255,255,255, 0.8); padding: 0.5em 1em 0.7em; border-radius: 2px; font-family: monospace; text-align: center; max-width: 402px; } </style> <script src="./node_modules/dat.gui/build/dat.gui.js"></script> <script src="./node_modules/three/build/three.js"></script> <script src="./node_modules/three/examples/js/controls/OrbitControls.js"></script> <script src="./node_modules/three/examples/js/loaders/GLTFLoader.js"></script> <script src="./node_modules/three/examples/js/loaders/RGBELoader.js"></script> <script src="./node_modules/three/examples/js/loaders/HDRCubeTextureLoader.js"></script> <script src="./node_modules/three/examples/js/pmrem/PMREMGenerator.js"></script> <script src="./node_modules/three/examples/js/pmrem/PMREMCubeUVPacker.js"></script> <script type="module"> import { ShadeNodeLoader } from './ShadeNodeLoader.js'; import { TextureNode, TimerNode, FloatNode, Vector3Node } from './node_modules/three/examples/js/nodes/Nodes.js'; const renderer = new THREE.WebGLRenderer( { antialias: true } ); renderer.setSize( window.innerWidth, window.innerHeight ); renderer.setClearColor( 0x202020 ); renderer.physicallyCorrectLights = true; renderer.gammaOutput = true; renderer.gammaFactor = 2.2; document.body.appendChild( renderer.domElement ); const timerNode = new TimerNode( 1.0 ); const micNode = new FloatNode( 0.01 ); const otherProps = []; let mesh, geometry, material, envMap; // const props = { suzanne: null, grass: null, roundedCube: null, cube: new THREE.BoxBufferGeometry(1.8, 1.8, 1.8), sphere: new THREE.SphereBufferGeometry( 1.8, 32, 32 ), plane: new THREE.PlaneBufferGeometry( 5, 5, 64, 64 ).rotateX( - 1 * Math.PI / 2 ) }; const examples = [ {name: 'Instancing Grid', shader: 'assets/shaders/InstancingGrid/Graph.json', prop: 'roundedCube', camera: [ 25, 20, 25 ], grid: false }, {name: 'Checkers', shader: 'assets/shaders/Checkers/Graph.json', prop: 'cube', camera: [ 5, 3, 4 ] }, {name: 'Dissolve', shader: 'assets/shaders/Dissolve/Graph.json', prop: 'suzanne', camera: [ 5, 3, 4 ] }, {name: 'Fake Volume', shader: 'assets/shaders/FakeVolume/Graph.json', prop: 'sphere', camera: [ 5, 3, 4 ] }, {name: 'Grass', shader: 'assets/shaders/Grass/Graph.json', prop: 'grass', camera: [ 10, 8, 10 ] }, {name: 'Hologram', shader: 'assets/shaders/Hologram/Graph.json', prop: 'suzanne', camera: [ 5, 3, 4 ] }, {name: 'Wire Ripple', shader: 'assets/shaders/WireRipple/Graph.json', prop: 'plane', camera: [ 5, 3, 4 ] }, {name: 'Wireframe', shader: 'assets/shaders/Wireframe/Graph.json', prop: 'sphere', camera: [ 5, 3, 4 ] }, // {name: '[broken] Clouds', shader: 'assets/shaders/Clouds/Graph.json', prop: 'cube', camera: [ 5, 3, 4 ] }, {name: '[broken] Explosion', shader: 'assets/shaders/Explosion/Graph.json', prop: 'sphere', camera: [ 25, 20, 25 ] }, // {name: '[broken] Mask Blend', shader: 'assets/shaders/MaskBlend/Graph.json', prop: 'cube', camera: [ 5, 3, 4 ] }, {name: '[broken] Ripple', shader: 'assets/shaders/Ripple/Graph.json', prop: 'plane', camera: [ 5, 3, 4 ] }, ]; let selectedExample = examples[ 0 ]; const api = { model: selectedExample.name }; const gui = new dat.GUI(); gui.add( api, 'model', examples.map( ( d ) => d.name ) ).onChange( () => { selectedExample = examples.find( ( d ) => api.model === d.name ); mesh.parent.remove( mesh ); mesh.geometry.dispose(); mesh.material.dispose(); otherProps.forEach( ( o ) => o.parent.remove( o ) ); otherProps.length = 0; loadShader( selectedExample.shader ).then( ( _material ) => { mat
Open service 76.76.21.9:443 · three-shadenodeloader.donmccurdy.com
2024-08-10 03:04
HTTP/1.1 200 OK Accept-Ranges: bytes Access-Control-Allow-Origin: * Age: 12223785 Cache-Control: public, max-age=0, must-revalidate Content-Disposition: inline; filename="index" Content-Length: 10577 Content-Type: text/html; charset=utf-8 Date: Sat, 10 Aug 2024 03:04:21 GMT Etag: W/"0b0fe30a17009abb27626fcc2e6f8e35ba1ea851" Server: Vercel Strict-Transport-Security: max-age=63072000 X-Vercel-Cache: HIT X-Vercel-Id: fra1::n4gxj-1723259061841-769779e11da3 Connection: close Page title: three.js • examples • shade node loader <!DOCTYPE html> <meta charset="utf-8"> <title>three.js • examples • shade node loader</title> <style> html, body { margin: 0; padding: 0; background: #000; width: 100%; height: 100%; overflow: hidden; } p { margin: 0; } .attribution { width: 100%; max-width: 400px; color: #424242; position: fixed; bottom: 2em; left: 0; right: 0; margin: 0 auto; background: rgba(255,255,255, 0.8); padding: 0.5em 1em 0.7em; border-radius: 2px; font-family: monospace; text-align: center; max-width: 402px; } </style> <script src="./node_modules/dat.gui/build/dat.gui.js"></script> <script src="./node_modules/three/build/three.js"></script> <script src="./node_modules/three/examples/js/controls/OrbitControls.js"></script> <script src="./node_modules/three/examples/js/loaders/GLTFLoader.js"></script> <script src="./node_modules/three/examples/js/loaders/RGBELoader.js"></script> <script src="./node_modules/three/examples/js/loaders/HDRCubeTextureLoader.js"></script> <script src="./node_modules/three/examples/js/pmrem/PMREMGenerator.js"></script> <script src="./node_modules/three/examples/js/pmrem/PMREMCubeUVPacker.js"></script> <script type="module"> import { ShadeNodeLoader } from './ShadeNodeLoader.js'; import { TextureNode, TimerNode, FloatNode, Vector3Node } from './node_modules/three/examples/js/nodes/Nodes.js'; const renderer = new THREE.WebGLRenderer( { antialias: true } ); renderer.setSize( window.innerWidth, window.innerHeight ); renderer.setClearColor( 0x202020 ); renderer.physicallyCorrectLights = true; renderer.gammaOutput = true; renderer.gammaFactor = 2.2; document.body.appendChild( renderer.domElement ); const timerNode = new TimerNode( 1.0 ); const micNode = new FloatNode( 0.01 ); const otherProps = []; let mesh, geometry, material, envMap; // const props = { suzanne: null, grass: null, roundedCube: null, cube: new THREE.BoxBufferGeometry(1.8, 1.8, 1.8), sphere: new THREE.SphereBufferGeometry( 1.8, 32, 32 ), plane: new THREE.PlaneBufferGeometry( 5, 5, 64, 64 ).rotateX( - 1 * Math.PI / 2 ) }; const examples = [ {name: 'Instancing Grid', shader: 'assets/shaders/InstancingGrid/Graph.json', prop: 'roundedCube', camera: [ 25, 20, 25 ], grid: false }, {name: 'Checkers', shader: 'assets/shaders/Checkers/Graph.json', prop: 'cube', camera: [ 5, 3, 4 ] }, {name: 'Dissolve', shader: 'assets/shaders/Dissolve/Graph.json', prop: 'suzanne', camera: [ 5, 3, 4 ] }, {name: 'Fake Volume', shader: 'assets/shaders/FakeVolume/Graph.json', prop: 'sphere', camera: [ 5, 3, 4 ] }, {name: 'Grass', shader: 'assets/shaders/Grass/Graph.json', prop: 'grass', camera: [ 10, 8, 10 ] }, {name: 'Hologram', shader: 'assets/shaders/Hologram/Graph.json', prop: 'suzanne', camera: [ 5, 3, 4 ] }, {name: 'Wire Ripple', shader: 'assets/shaders/WireRipple/Graph.json', prop: 'plane', camera: [ 5, 3, 4 ] }, {name: 'Wireframe', shader: 'assets/shaders/Wireframe/Graph.json', prop: 'sphere', camera: [ 5, 3, 4 ] }, // {name: '[broken] Clouds', shader: 'assets/shaders/Clouds/Graph.json', prop: 'cube', camera: [ 5, 3, 4 ] }, {name: '[broken] Explosion', shader: 'assets/shaders/Explosion/Graph.json', prop: 'sphere', camera: [ 25, 20, 25 ] }, // {name: '[broken] Mask Blend', shader: 'assets/shaders/MaskBlend/Graph.json', prop: 'cube', camera: [ 5, 3, 4 ] }, {name: '[broken] Ripple', shader: 'assets/shaders/Ripple/Graph.json', prop: 'plane', camera: [ 5, 3, 4 ] }, ]; let selectedExample = examples[ 0 ]; const api = { model: selectedExample.name }; const gui = new dat.GUI(); gui.add( api, 'model', examples.map( ( d ) => d.name ) ).onChange( () => { selectedExample = examples.find( ( d ) => api.model === d.name ); mesh.parent.remove( mesh ); mesh.geometry.dispose(); mesh.material.dispose(); otherProps.forEach( ( o ) => o.parent.remove( o ) ); otherProps.length = 0; loadShader( selectedExample.shader ).then( ( _material ) => { mat
Open service 76.76.21.9:443 · three-shadenodeloader.donmccurdy.com
2024-08-09 00:48
HTTP/1.1 200 OK Accept-Ranges: bytes Access-Control-Allow-Origin: * Age: 4161993 Cache-Control: public, max-age=0, must-revalidate Content-Disposition: inline; filename="index" Content-Length: 10577 Content-Type: text/html; charset=utf-8 Date: Fri, 09 Aug 2024 00:48:24 GMT Etag: W/"0b0fe30a17009abb27626fcc2e6f8e35ba1ea851" Server: Vercel Strict-Transport-Security: max-age=63072000 X-Vercel-Cache: HIT X-Vercel-Id: cle1::sjltk-1723164504912-57f344ea9a91 Connection: close Page title: three.js • examples • shade node loader <!DOCTYPE html> <meta charset="utf-8"> <title>three.js • examples • shade node loader</title> <style> html, body { margin: 0; padding: 0; background: #000; width: 100%; height: 100%; overflow: hidden; } p { margin: 0; } .attribution { width: 100%; max-width: 400px; color: #424242; position: fixed; bottom: 2em; left: 0; right: 0; margin: 0 auto; background: rgba(255,255,255, 0.8); padding: 0.5em 1em 0.7em; border-radius: 2px; font-family: monospace; text-align: center; max-width: 402px; } </style> <script src="./node_modules/dat.gui/build/dat.gui.js"></script> <script src="./node_modules/three/build/three.js"></script> <script src="./node_modules/three/examples/js/controls/OrbitControls.js"></script> <script src="./node_modules/three/examples/js/loaders/GLTFLoader.js"></script> <script src="./node_modules/three/examples/js/loaders/RGBELoader.js"></script> <script src="./node_modules/three/examples/js/loaders/HDRCubeTextureLoader.js"></script> <script src="./node_modules/three/examples/js/pmrem/PMREMGenerator.js"></script> <script src="./node_modules/three/examples/js/pmrem/PMREMCubeUVPacker.js"></script> <script type="module"> import { ShadeNodeLoader } from './ShadeNodeLoader.js'; import { TextureNode, TimerNode, FloatNode, Vector3Node } from './node_modules/three/examples/js/nodes/Nodes.js'; const renderer = new THREE.WebGLRenderer( { antialias: true } ); renderer.setSize( window.innerWidth, window.innerHeight ); renderer.setClearColor( 0x202020 ); renderer.physicallyCorrectLights = true; renderer.gammaOutput = true; renderer.gammaFactor = 2.2; document.body.appendChild( renderer.domElement ); const timerNode = new TimerNode( 1.0 ); const micNode = new FloatNode( 0.01 ); const otherProps = []; let mesh, geometry, material, envMap; // const props = { suzanne: null, grass: null, roundedCube: null, cube: new THREE.BoxBufferGeometry(1.8, 1.8, 1.8), sphere: new THREE.SphereBufferGeometry( 1.8, 32, 32 ), plane: new THREE.PlaneBufferGeometry( 5, 5, 64, 64 ).rotateX( - 1 * Math.PI / 2 ) }; const examples = [ {name: 'Instancing Grid', shader: 'assets/shaders/InstancingGrid/Graph.json', prop: 'roundedCube', camera: [ 25, 20, 25 ], grid: false }, {name: 'Checkers', shader: 'assets/shaders/Checkers/Graph.json', prop: 'cube', camera: [ 5, 3, 4 ] }, {name: 'Dissolve', shader: 'assets/shaders/Dissolve/Graph.json', prop: 'suzanne', camera: [ 5, 3, 4 ] }, {name: 'Fake Volume', shader: 'assets/shaders/FakeVolume/Graph.json', prop: 'sphere', camera: [ 5, 3, 4 ] }, {name: 'Grass', shader: 'assets/shaders/Grass/Graph.json', prop: 'grass', camera: [ 10, 8, 10 ] }, {name: 'Hologram', shader: 'assets/shaders/Hologram/Graph.json', prop: 'suzanne', camera: [ 5, 3, 4 ] }, {name: 'Wire Ripple', shader: 'assets/shaders/WireRipple/Graph.json', prop: 'plane', camera: [ 5, 3, 4 ] }, {name: 'Wireframe', shader: 'assets/shaders/Wireframe/Graph.json', prop: 'sphere', camera: [ 5, 3, 4 ] }, // {name: '[broken] Clouds', shader: 'assets/shaders/Clouds/Graph.json', prop: 'cube', camera: [ 5, 3, 4 ] }, {name: '[broken] Explosion', shader: 'assets/shaders/Explosion/Graph.json', prop: 'sphere', camera: [ 25, 20, 25 ] }, // {name: '[broken] Mask Blend', shader: 'assets/shaders/MaskBlend/Graph.json', prop: 'cube', camera: [ 5, 3, 4 ] }, {name: '[broken] Ripple', shader: 'assets/shaders/Ripple/Graph.json', prop: 'plane', camera: [ 5, 3, 4 ] }, ]; let selectedExample = examples[ 0 ]; const api = { model: selectedExample.name }; const gui = new dat.GUI(); gui.add( api, 'model', examples.map( ( d ) => d.name ) ).onChange( () => { selectedExample = examples.find( ( d ) => api.model === d.name ); mesh.parent.remove( mesh ); mesh.geometry.dispose(); mesh.material.dispose(); otherProps.forEach( ( o ) => o.parent.remove( o ) ); otherProps.length = 0; loadShader( selectedExample.shader ).then( ( _material ) => { mat
Open service 76.76.21.9:443 · three-shadenodeloader.donmccurdy.com
2024-08-09 00:29
HTTP/1.1 200 OK Accept-Ranges: bytes Access-Control-Allow-Origin: * Age: 12128099 Cache-Control: public, max-age=0, must-revalidate Content-Disposition: inline; filename="index" Content-Length: 10577 Content-Type: text/html; charset=utf-8 Date: Fri, 09 Aug 2024 00:29:36 GMT Etag: W/"0b0fe30a17009abb27626fcc2e6f8e35ba1ea851" Server: Vercel Strict-Transport-Security: max-age=63072000 X-Vercel-Cache: HIT X-Vercel-Id: fra1::dzfd8-1723163376291-10e0e51952a3 Connection: close Page title: three.js • examples • shade node loader <!DOCTYPE html> <meta charset="utf-8"> <title>three.js • examples • shade node loader</title> <style> html, body { margin: 0; padding: 0; background: #000; width: 100%; height: 100%; overflow: hidden; } p { margin: 0; } .attribution { width: 100%; max-width: 400px; color: #424242; position: fixed; bottom: 2em; left: 0; right: 0; margin: 0 auto; background: rgba(255,255,255, 0.8); padding: 0.5em 1em 0.7em; border-radius: 2px; font-family: monospace; text-align: center; max-width: 402px; } </style> <script src="./node_modules/dat.gui/build/dat.gui.js"></script> <script src="./node_modules/three/build/three.js"></script> <script src="./node_modules/three/examples/js/controls/OrbitControls.js"></script> <script src="./node_modules/three/examples/js/loaders/GLTFLoader.js"></script> <script src="./node_modules/three/examples/js/loaders/RGBELoader.js"></script> <script src="./node_modules/three/examples/js/loaders/HDRCubeTextureLoader.js"></script> <script src="./node_modules/three/examples/js/pmrem/PMREMGenerator.js"></script> <script src="./node_modules/three/examples/js/pmrem/PMREMCubeUVPacker.js"></script> <script type="module"> import { ShadeNodeLoader } from './ShadeNodeLoader.js'; import { TextureNode, TimerNode, FloatNode, Vector3Node } from './node_modules/three/examples/js/nodes/Nodes.js'; const renderer = new THREE.WebGLRenderer( { antialias: true } ); renderer.setSize( window.innerWidth, window.innerHeight ); renderer.setClearColor( 0x202020 ); renderer.physicallyCorrectLights = true; renderer.gammaOutput = true; renderer.gammaFactor = 2.2; document.body.appendChild( renderer.domElement ); const timerNode = new TimerNode( 1.0 ); const micNode = new FloatNode( 0.01 ); const otherProps = []; let mesh, geometry, material, envMap; // const props = { suzanne: null, grass: null, roundedCube: null, cube: new THREE.BoxBufferGeometry(1.8, 1.8, 1.8), sphere: new THREE.SphereBufferGeometry( 1.8, 32, 32 ), plane: new THREE.PlaneBufferGeometry( 5, 5, 64, 64 ).rotateX( - 1 * Math.PI / 2 ) }; const examples = [ {name: 'Instancing Grid', shader: 'assets/shaders/InstancingGrid/Graph.json', prop: 'roundedCube', camera: [ 25, 20, 25 ], grid: false }, {name: 'Checkers', shader: 'assets/shaders/Checkers/Graph.json', prop: 'cube', camera: [ 5, 3, 4 ] }, {name: 'Dissolve', shader: 'assets/shaders/Dissolve/Graph.json', prop: 'suzanne', camera: [ 5, 3, 4 ] }, {name: 'Fake Volume', shader: 'assets/shaders/FakeVolume/Graph.json', prop: 'sphere', camera: [ 5, 3, 4 ] }, {name: 'Grass', shader: 'assets/shaders/Grass/Graph.json', prop: 'grass', camera: [ 10, 8, 10 ] }, {name: 'Hologram', shader: 'assets/shaders/Hologram/Graph.json', prop: 'suzanne', camera: [ 5, 3, 4 ] }, {name: 'Wire Ripple', shader: 'assets/shaders/WireRipple/Graph.json', prop: 'plane', camera: [ 5, 3, 4 ] }, {name: 'Wireframe', shader: 'assets/shaders/Wireframe/Graph.json', prop: 'sphere', camera: [ 5, 3, 4 ] }, // {name: '[broken] Clouds', shader: 'assets/shaders/Clouds/Graph.json', prop: 'cube', camera: [ 5, 3, 4 ] }, {name: '[broken] Explosion', shader: 'assets/shaders/Explosion/Graph.json', prop: 'sphere', camera: [ 25, 20, 25 ] }, // {name: '[broken] Mask Blend', shader: 'assets/shaders/MaskBlend/Graph.json', prop: 'cube', camera: [ 5, 3, 4 ] }, {name: '[broken] Ripple', shader: 'assets/shaders/Ripple/Graph.json', prop: 'plane', camera: [ 5, 3, 4 ] }, ]; let selectedExample = examples[ 0 ]; const api = { model: selectedExample.name }; const gui = new dat.GUI(); gui.add( api, 'model', examples.map( ( d ) => d.name ) ).onChange( () => { selectedExample = examples.find( ( d ) => api.model === d.name ); mesh.parent.remove( mesh ); mesh.geometry.dispose(); mesh.material.dispose(); otherProps.forEach( ( o ) => o.parent.remove( o ) ); otherProps.length = 0; loadShader( selectedExample.shader ).then( ( _material ) => { mat
Open service 76.76.21.9:443 · three-shadenodeloader.donmccurdy.com
2024-08-07 01:58
HTTP/1.1 200 OK Accept-Ranges: bytes Access-Control-Allow-Origin: * Age: 11960606 Cache-Control: public, max-age=0, must-revalidate Content-Disposition: inline; filename="index" Content-Length: 10577 Content-Type: text/html; charset=utf-8 Date: Wed, 07 Aug 2024 01:58:02 GMT Etag: W/"0b0fe30a17009abb27626fcc2e6f8e35ba1ea851" Server: Vercel Strict-Transport-Security: max-age=63072000 X-Vercel-Cache: HIT X-Vercel-Id: fra1::lhfwv-1722995882973-ff0d7c45ab17 Connection: close Page title: three.js • examples • shade node loader <!DOCTYPE html> <meta charset="utf-8"> <title>three.js • examples • shade node loader</title> <style> html, body { margin: 0; padding: 0; background: #000; width: 100%; height: 100%; overflow: hidden; } p { margin: 0; } .attribution { width: 100%; max-width: 400px; color: #424242; position: fixed; bottom: 2em; left: 0; right: 0; margin: 0 auto; background: rgba(255,255,255, 0.8); padding: 0.5em 1em 0.7em; border-radius: 2px; font-family: monospace; text-align: center; max-width: 402px; } </style> <script src="./node_modules/dat.gui/build/dat.gui.js"></script> <script src="./node_modules/three/build/three.js"></script> <script src="./node_modules/three/examples/js/controls/OrbitControls.js"></script> <script src="./node_modules/three/examples/js/loaders/GLTFLoader.js"></script> <script src="./node_modules/three/examples/js/loaders/RGBELoader.js"></script> <script src="./node_modules/three/examples/js/loaders/HDRCubeTextureLoader.js"></script> <script src="./node_modules/three/examples/js/pmrem/PMREMGenerator.js"></script> <script src="./node_modules/three/examples/js/pmrem/PMREMCubeUVPacker.js"></script> <script type="module"> import { ShadeNodeLoader } from './ShadeNodeLoader.js'; import { TextureNode, TimerNode, FloatNode, Vector3Node } from './node_modules/three/examples/js/nodes/Nodes.js'; const renderer = new THREE.WebGLRenderer( { antialias: true } ); renderer.setSize( window.innerWidth, window.innerHeight ); renderer.setClearColor( 0x202020 ); renderer.physicallyCorrectLights = true; renderer.gammaOutput = true; renderer.gammaFactor = 2.2; document.body.appendChild( renderer.domElement ); const timerNode = new TimerNode( 1.0 ); const micNode = new FloatNode( 0.01 ); const otherProps = []; let mesh, geometry, material, envMap; // const props = { suzanne: null, grass: null, roundedCube: null, cube: new THREE.BoxBufferGeometry(1.8, 1.8, 1.8), sphere: new THREE.SphereBufferGeometry( 1.8, 32, 32 ), plane: new THREE.PlaneBufferGeometry( 5, 5, 64, 64 ).rotateX( - 1 * Math.PI / 2 ) }; const examples = [ {name: 'Instancing Grid', shader: 'assets/shaders/InstancingGrid/Graph.json', prop: 'roundedCube', camera: [ 25, 20, 25 ], grid: false }, {name: 'Checkers', shader: 'assets/shaders/Checkers/Graph.json', prop: 'cube', camera: [ 5, 3, 4 ] }, {name: 'Dissolve', shader: 'assets/shaders/Dissolve/Graph.json', prop: 'suzanne', camera: [ 5, 3, 4 ] }, {name: 'Fake Volume', shader: 'assets/shaders/FakeVolume/Graph.json', prop: 'sphere', camera: [ 5, 3, 4 ] }, {name: 'Grass', shader: 'assets/shaders/Grass/Graph.json', prop: 'grass', camera: [ 10, 8, 10 ] }, {name: 'Hologram', shader: 'assets/shaders/Hologram/Graph.json', prop: 'suzanne', camera: [ 5, 3, 4 ] }, {name: 'Wire Ripple', shader: 'assets/shaders/WireRipple/Graph.json', prop: 'plane', camera: [ 5, 3, 4 ] }, {name: 'Wireframe', shader: 'assets/shaders/Wireframe/Graph.json', prop: 'sphere', camera: [ 5, 3, 4 ] }, // {name: '[broken] Clouds', shader: 'assets/shaders/Clouds/Graph.json', prop: 'cube', camera: [ 5, 3, 4 ] }, {name: '[broken] Explosion', shader: 'assets/shaders/Explosion/Graph.json', prop: 'sphere', camera: [ 25, 20, 25 ] }, // {name: '[broken] Mask Blend', shader: 'assets/shaders/MaskBlend/Graph.json', prop: 'cube', camera: [ 5, 3, 4 ] }, {name: '[broken] Ripple', shader: 'assets/shaders/Ripple/Graph.json', prop: 'plane', camera: [ 5, 3, 4 ] }, ]; let selectedExample = examples[ 0 ]; const api = { model: selectedExample.name }; const gui = new dat.GUI(); gui.add( api, 'model', examples.map( ( d ) => d.name ) ).onChange( () => { selectedExample = examples.find( ( d ) => api.model === d.name ); mesh.parent.remove( mesh ); mesh.geometry.dispose(); mesh.material.dispose(); otherProps.forEach( ( o ) => o.parent.remove( o ) ); otherProps.length = 0; loadShader( selectedExample.shader ).then( ( _material ) => { mat
Open service 76.76.21.9:443 · three-shadenodeloader.donmccurdy.com
2024-08-07 01:10
HTTP/1.1 200 OK Accept-Ranges: bytes Access-Control-Allow-Origin: * Age: 11957762 Cache-Control: public, max-age=0, must-revalidate Content-Disposition: inline; filename="index" Content-Length: 10577 Content-Type: text/html; charset=utf-8 Date: Wed, 07 Aug 2024 01:10:39 GMT Etag: W/"0b0fe30a17009abb27626fcc2e6f8e35ba1ea851" Server: Vercel Strict-Transport-Security: max-age=63072000 X-Vercel-Cache: HIT X-Vercel-Id: fra1::rds5j-1722993039335-01d4f919b4e6 Connection: close Page title: three.js • examples • shade node loader <!DOCTYPE html> <meta charset="utf-8"> <title>three.js • examples • shade node loader</title> <style> html, body { margin: 0; padding: 0; background: #000; width: 100%; height: 100%; overflow: hidden; } p { margin: 0; } .attribution { width: 100%; max-width: 400px; color: #424242; position: fixed; bottom: 2em; left: 0; right: 0; margin: 0 auto; background: rgba(255,255,255, 0.8); padding: 0.5em 1em 0.7em; border-radius: 2px; font-family: monospace; text-align: center; max-width: 402px; } </style> <script src="./node_modules/dat.gui/build/dat.gui.js"></script> <script src="./node_modules/three/build/three.js"></script> <script src="./node_modules/three/examples/js/controls/OrbitControls.js"></script> <script src="./node_modules/three/examples/js/loaders/GLTFLoader.js"></script> <script src="./node_modules/three/examples/js/loaders/RGBELoader.js"></script> <script src="./node_modules/three/examples/js/loaders/HDRCubeTextureLoader.js"></script> <script src="./node_modules/three/examples/js/pmrem/PMREMGenerator.js"></script> <script src="./node_modules/three/examples/js/pmrem/PMREMCubeUVPacker.js"></script> <script type="module"> import { ShadeNodeLoader } from './ShadeNodeLoader.js'; import { TextureNode, TimerNode, FloatNode, Vector3Node } from './node_modules/three/examples/js/nodes/Nodes.js'; const renderer = new THREE.WebGLRenderer( { antialias: true } ); renderer.setSize( window.innerWidth, window.innerHeight ); renderer.setClearColor( 0x202020 ); renderer.physicallyCorrectLights = true; renderer.gammaOutput = true; renderer.gammaFactor = 2.2; document.body.appendChild( renderer.domElement ); const timerNode = new TimerNode( 1.0 ); const micNode = new FloatNode( 0.01 ); const otherProps = []; let mesh, geometry, material, envMap; // const props = { suzanne: null, grass: null, roundedCube: null, cube: new THREE.BoxBufferGeometry(1.8, 1.8, 1.8), sphere: new THREE.SphereBufferGeometry( 1.8, 32, 32 ), plane: new THREE.PlaneBufferGeometry( 5, 5, 64, 64 ).rotateX( - 1 * Math.PI / 2 ) }; const examples = [ {name: 'Instancing Grid', shader: 'assets/shaders/InstancingGrid/Graph.json', prop: 'roundedCube', camera: [ 25, 20, 25 ], grid: false }, {name: 'Checkers', shader: 'assets/shaders/Checkers/Graph.json', prop: 'cube', camera: [ 5, 3, 4 ] }, {name: 'Dissolve', shader: 'assets/shaders/Dissolve/Graph.json', prop: 'suzanne', camera: [ 5, 3, 4 ] }, {name: 'Fake Volume', shader: 'assets/shaders/FakeVolume/Graph.json', prop: 'sphere', camera: [ 5, 3, 4 ] }, {name: 'Grass', shader: 'assets/shaders/Grass/Graph.json', prop: 'grass', camera: [ 10, 8, 10 ] }, {name: 'Hologram', shader: 'assets/shaders/Hologram/Graph.json', prop: 'suzanne', camera: [ 5, 3, 4 ] }, {name: 'Wire Ripple', shader: 'assets/shaders/WireRipple/Graph.json', prop: 'plane', camera: [ 5, 3, 4 ] }, {name: 'Wireframe', shader: 'assets/shaders/Wireframe/Graph.json', prop: 'sphere', camera: [ 5, 3, 4 ] }, // {name: '[broken] Clouds', shader: 'assets/shaders/Clouds/Graph.json', prop: 'cube', camera: [ 5, 3, 4 ] }, {name: '[broken] Explosion', shader: 'assets/shaders/Explosion/Graph.json', prop: 'sphere', camera: [ 25, 20, 25 ] }, // {name: '[broken] Mask Blend', shader: 'assets/shaders/MaskBlend/Graph.json', prop: 'cube', camera: [ 5, 3, 4 ] }, {name: '[broken] Ripple', shader: 'assets/shaders/Ripple/Graph.json', prop: 'plane', camera: [ 5, 3, 4 ] }, ]; let selectedExample = examples[ 0 ]; const api = { model: selectedExample.name }; const gui = new dat.GUI(); gui.add( api, 'model', examples.map( ( d ) => d.name ) ).onChange( () => { selectedExample = examples.find( ( d ) => api.model === d.name ); mesh.parent.remove( mesh ); mesh.geometry.dispose(); mesh.material.dispose(); otherProps.forEach( ( o ) => o.parent.remove( o ) ); otherProps.length = 0; loadShader( selectedExample.shader ).then( ( _material ) => { mat