├── public.1 ├── compiler.fragment.html ├── app.fragment.html ├── head.fragment.html ├── favicon.ico ├── body.fragment.html ├── enigma.html ├── index.html └── sandbox.html ├── public ├── compiler.fragment.html ├── _redirects ├── app.fragment.html ├── favicon.ico ├── threejs │ └── examples │ │ ├── js │ │ ├── libs │ │ │ ├── draco │ │ │ │ ├── draco_decoder.wasm │ │ │ │ └── gltf │ │ │ │ │ └── draco_decoder.wasm │ │ │ └── system.min.js │ │ ├── offscreen │ │ │ ├── offscreen.js │ │ │ └── jank.js │ │ ├── objects │ │ │ └── ReflectorRTT.js │ │ ├── loaders │ │ │ └── ctm │ │ │ │ ├── CTMWorker.js │ │ │ │ └── license │ │ │ │ ├── OpenCTM.txt │ │ │ │ ├── js-lzma.txt │ │ │ │ └── js-openctm.txt │ │ ├── PRNG.js │ │ ├── shaders │ │ │ ├── BasicShader.js │ │ │ ├── CopyShader.js │ │ │ ├── GammaCorrectionShader.js │ │ │ ├── LuminosityShader.js │ │ │ ├── PixelShader.js │ │ │ ├── ColorifyShader.js │ │ │ ├── UnpackDepthRGBAShader.js │ │ │ ├── BlendShader.js │ │ │ ├── ColorCorrectionShader.js │ │ │ ├── TechnicolorShader.js │ │ │ ├── SepiaShader.js │ │ │ ├── DOFMipMapShader.js │ │ │ ├── AfterimageShader.js │ │ │ ├── MirrorShader.js │ │ │ ├── NormalMapShader.js │ │ │ ├── RGBShiftShader.js │ │ │ ├── KaleidoShader.js │ │ │ ├── BrightnessContrastShader.js │ │ │ ├── LuminosityHighPassShader.js │ │ │ ├── VignetteShader.js │ │ │ ├── BleachBypassShader.js │ │ │ └── DotScreenShader.js │ │ ├── nodes │ │ │ ├── core │ │ │ │ ├── ExpressionNode.js │ │ │ │ ├── NodeUniform.js │ │ │ │ ├── NodeFrame.js │ │ │ │ ├── NodeLib.js │ │ │ │ ├── NodeUtils.js │ │ │ │ └── VarNode.js │ │ │ ├── inputs │ │ │ │ ├── ScreenNode.js │ │ │ │ ├── BoolNode.js │ │ │ │ ├── IntNode.js │ │ │ │ ├── PropertyNode.js │ │ │ │ ├── FloatNode.js │ │ │ │ ├── Vector2Node.js │ │ │ │ ├── ColorNode.js │ │ │ │ ├── Vector3Node.js │ │ │ │ ├── Matrix3Node.js │ │ │ │ ├── Matrix4Node.js │ │ │ │ └── Vector4Node.js │ │ │ ├── materials │ │ │ │ ├── SpriteNodeMaterial.js │ │ │ │ ├── PhongNodeMaterial.js │ │ │ │ ├── MeshStandardNodeMaterial.js │ │ │ │ ├── StandardNodeMaterial.js │ │ │ │ └── nodes │ │ │ │ │ └── RawNode.js │ │ │ ├── bsdfs │ │ │ │ ├── BlinnShininessExponentNode.js │ │ │ │ └── BlinnExponentToRoughnessNode.js │ │ │ ├── accessors │ │ │ │ ├── ColorsNode.js │ │ │ │ ├── LightNode.js │ │ │ │ ├── ResolutionNode.js │ │ │ │ ├── UVNode.js │ │ │ │ └── ScreenUVNode.js │ │ │ ├── utils │ │ │ │ └── MaxMIPLevelNode.js │ │ │ └── procedural │ │ │ │ └── NoiseNode.js │ │ ├── lines │ │ │ ├── WireframeGeometry2.js │ │ │ └── Line2.js │ │ ├── utils │ │ │ └── SceneUtils.js │ │ ├── modifiers │ │ │ └── ExplodeModifier.js │ │ ├── crossfade │ │ │ └── gui.js │ │ ├── postprocessing │ │ │ └── ClearPass.js │ │ ├── exporters │ │ │ └── TypedGeometryExporter.js │ │ └── effects │ │ │ └── StereoEffect.js │ │ └── jsm │ │ ├── utils │ │ ├── UVsDebug.d.ts │ │ ├── ShadowMapViewer.d.ts │ │ ├── MathUtils.d.ts │ │ ├── BufferGeometryUtils.d.ts │ │ ├── SceneUtils.d.ts │ │ ├── GeometryUtils.d.ts │ │ ├── SceneUtils.js │ │ ├── SkeletonUtils.d.ts │ │ └── TypedArrayUtils.d.ts │ │ ├── exporters │ │ ├── STLExporter.d.ts │ │ ├── OBJExporter.d.ts │ │ ├── PLYExporter.d.ts │ │ ├── TypedGeometryExporter.d.ts │ │ ├── ColladaExporter.d.ts │ │ ├── GLTFExporter.d.ts │ │ ├── MMDExporter.d.ts │ │ └── TypedGeometryExporter.js │ │ ├── pmrem │ │ ├── PMREMCubeUVPacker.d.ts │ │ └── PMREMGenerator.d.ts │ │ ├── loaders │ │ ├── OBJLoader.d.ts │ │ └── GLTFLoader.d.ts │ │ └── controls │ │ └── TrackballControls.d.ts ├── iframelib │ └── demo.html ├── lib │ └── demo.html ├── enigma.html ├── head.fragment.html ├── body.fragment.html └── index.html ├── .browserslistrc ├── .netlify └── state.json ├── babel.config.js ├── postcss.config.js ├── src ├── assets │ ├── logo.png │ ├── ui │ │ └── select.png │ ├── screenshot │ │ ├── ball.png │ │ ├── done.png │ │ ├── home.png │ │ ├── addScene.png │ │ ├── homscene.png │ │ ├── timeline.png │ │ ├── add-scene.png │ │ ├── inspector.png │ │ ├── mixandmatch.png │ │ ├── renameTrack.png │ │ ├── addSampleBall.png │ │ ├── addTimeTrack.png │ │ ├── clickNewScene.png │ │ └── editSceneTitle.png │ └── fonts │ │ └── interui │ │ ├── Inter-Black.woff │ │ ├── Inter-Black.woff2 │ │ ├── Inter-Bold.woff │ │ ├── Inter-Bold.woff2 │ │ ├── Inter-Italic.woff │ │ ├── Inter-Medium.woff │ │ ├── Inter.var.woff2 │ │ ├── Inter-Italic.woff2 │ │ ├── Inter-Medium.woff2 │ │ ├── Inter-Regular.woff │ │ ├── Inter-Regular.woff2 │ │ ├── Inter-SemiBold.woff │ │ ├── Inter-BlackItalic.woff │ │ ├── Inter-BoldItalic.woff │ │ ├── Inter-BoldItalic.woff2 │ │ ├── Inter-ExtraBold.woff │ │ ├── Inter-ExtraBold.woff2 │ │ ├── Inter-Light-BETA.woff │ │ ├── Inter-Light-BETA.woff2 │ │ ├── Inter-SemiBold.woff2 │ │ ├── Inter-Thin-BETA.woff │ │ ├── Inter-Thin-BETA.woff2 │ │ ├── Inter-italic.var.woff2 │ │ ├── Inter-BlackItalic.woff2 │ │ ├── Inter-MediumItalic.woff │ │ ├── Inter-MediumItalic.woff2 │ │ ├── Inter-upright.var.woff2 │ │ ├── Inter-ExtraBoldItalic.woff │ │ ├── Inter-ExtraBoldItalic.woff2 │ │ ├── Inter-ExtraLight-BETA.woff │ │ ├── Inter-ExtraLight-BETA.woff2 │ │ ├── Inter-LightItalic-BETA.woff │ │ ├── Inter-SemiBoldItalic.woff │ │ ├── Inter-SemiBoldItalic.woff2 │ │ ├── Inter-ThinItalic-BETA.woff │ │ ├── Inter-ThinItalic-BETA.woff2 │ │ ├── Inter-LightItalic-BETA.woff2 │ │ ├── Inter-ExtraLightItalic-BETA.woff │ │ └── Inter-ExtraLightItalic-BETA.woff2 ├── views │ ├── About.vue │ ├── MovieEntry.vue │ ├── ExecDemo.vue │ ├── Embed.vue │ ├── Register.vue │ ├── Login.vue │ ├── Landing.vue │ ├── iGraphDemo.vue │ └── css │ │ └── idot.css ├── vfx │ ├── lltimeline │ │ └── TimelineLib.zip │ ├── FreeJS │ │ ├── index.js │ │ ├── Scene.vue │ │ └── TemplateBox.vue │ ├── Simulation │ │ └── GeoShader │ │ │ ├── vertexer.1 │ │ │ ├── display.frag │ │ │ ├── display.vert │ │ │ └── tPos.flower.frag │ │ │ ├── vertexer │ │ │ ├── display.frag │ │ │ ├── display.vert │ │ │ └── tPos.flower.frag │ │ │ ├── settings.json │ │ │ ├── visualiser │ │ │ ├── display.frag │ │ │ └── display.vert │ │ │ └── audio │ │ │ ├── mp3.js │ │ │ └── mic.js │ ├── tools │ │ └── portal.vue │ ├── CSS │ │ └── util.css │ ├── Geometry │ │ ├── SphereBufferGeometry.vue │ │ ├── BoxBufferGeometry.vue │ │ └── PlaneBufferGeometry.vue │ ├── Items │ │ ├── Mesh.vue │ │ ├── Points.vue │ │ ├── Box.vue │ │ ├── Character.vue │ │ └── Brick.vue │ ├── Material │ │ ├── TemplateMaterial.vue │ │ ├── SolidMaterial.vue │ │ └── WiggleMaterial.vue │ ├── SceneItem │ │ ├── Plane.vue │ │ └── GeoVert.vue │ └── InterfaceService │ │ └── video-only.js ├── lltimeline │ └── backups │ │ └── 2019-06-01.zip ├── icons │ ├── tree.svg │ ├── clone-white.svg │ ├── share.svg │ ├── folder.svg │ ├── fullscreen-gofull.svg │ ├── clock.svg │ ├── cross.svg │ ├── home.svg │ ├── switch-on.svg │ ├── codepen.svg │ ├── save-to-drive.svg │ ├── code.svg │ ├── add-circle.svg │ ├── clone.svg │ ├── refresh.svg │ ├── add.svg │ ├── back.svg │ ├── switch-off.svg │ ├── magnify-old.svg │ ├── edit-dark.svg │ ├── magnify-minus.svg │ ├── circle-close.svg │ ├── magnify-add.svg │ ├── offline.svg │ ├── photo.svg │ ├── pin.svg │ ├── trash-dark.svg │ ├── trash-red.svg │ ├── trashcan.svg │ ├── shuffle.svg │ ├── cloud-download.svg │ ├── cloud-up.svg │ ├── cloud-upload.svg │ ├── timer.svg │ ├── node-home.svg │ ├── code-fork.svg │ ├── code-fork-blue.svg │ ├── code-fork-black.svg │ ├── fullscreen-restore.svg │ ├── recycle-on.svg │ ├── timetravel-black.svg │ ├── timetravel.svg │ ├── trashcan-on.svg │ ├── recycle.svg │ ├── trashcan-off.svg │ └── recycle-off.svg ├── store.js ├── main.js ├── auth │ └── UILogout.vue ├── components │ ├── Template.vue │ └── Introduction.vue ├── llsvg │ ├── pages.json │ ├── nodes.json │ └── node.js ├── llexec │ └── archive │ │ └── DevExec.vue ├── fragments │ └── download.fragment.html ├── App.vue ├── cute │ └── LICENSE └── llui │ ├── UINodeTemplates │ ├── NewTemplate.vue.txt │ ├── SphereGeometry.vue.txt │ ├── Object3D.vue.txt │ ├── RingGeo.vue.txt │ ├── WireFrameMaterial.vue.txt │ └── Scene.vue.txt │ └── UICodeControl.vue ├── .editorconfig ├── .gitignore ├── .eslintrc.js ├── README.md └── vue.config.js /public.1/compiler.fragment.html: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /public/compiler.fragment.html: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /public/_redirects: -------------------------------------------------------------------------------- 1 | /* /index.html 200 -------------------------------------------------------------------------------- /.browserslistrc: -------------------------------------------------------------------------------- 1 | > 1% 2 | last 2 versions 3 | -------------------------------------------------------------------------------- /public.1/app.fragment.html: -------------------------------------------------------------------------------- 1 |
2 | 3 |
-------------------------------------------------------------------------------- /public/app.fragment.html: -------------------------------------------------------------------------------- 1 |
2 | 3 |
-------------------------------------------------------------------------------- /.netlify/state.json: -------------------------------------------------------------------------------- 1 | { 2 | "siteId": "9225dbff-1b19-4f3a-bfeb-0d59b9e9d731" 3 | } -------------------------------------------------------------------------------- /babel.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | presets: [ 3 | '@vue/app' 4 | ] 5 | } 6 | -------------------------------------------------------------------------------- /public.1/head.fragment.html: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /postcss.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | plugins: { 3 | autoprefixer: {} 4 | } 5 | } 6 | -------------------------------------------------------------------------------- /public/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/EffectNode/en-node-graph-gui/HEAD/public/favicon.ico -------------------------------------------------------------------------------- /src/assets/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/EffectNode/en-node-graph-gui/HEAD/src/assets/logo.png -------------------------------------------------------------------------------- /public.1/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/EffectNode/en-node-graph-gui/HEAD/public.1/favicon.ico -------------------------------------------------------------------------------- /src/assets/ui/select.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/EffectNode/en-node-graph-gui/HEAD/src/assets/ui/select.png -------------------------------------------------------------------------------- /src/assets/screenshot/ball.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/EffectNode/en-node-graph-gui/HEAD/src/assets/screenshot/ball.png -------------------------------------------------------------------------------- /src/assets/screenshot/done.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/EffectNode/en-node-graph-gui/HEAD/src/assets/screenshot/done.png -------------------------------------------------------------------------------- /src/assets/screenshot/home.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/EffectNode/en-node-graph-gui/HEAD/src/assets/screenshot/home.png -------------------------------------------------------------------------------- /src/views/About.vue: -------------------------------------------------------------------------------- 1 | 6 | -------------------------------------------------------------------------------- /src/assets/screenshot/addScene.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/EffectNode/en-node-graph-gui/HEAD/src/assets/screenshot/addScene.png -------------------------------------------------------------------------------- /src/assets/screenshot/homscene.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/EffectNode/en-node-graph-gui/HEAD/src/assets/screenshot/homscene.png -------------------------------------------------------------------------------- /src/assets/screenshot/timeline.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/EffectNode/en-node-graph-gui/HEAD/src/assets/screenshot/timeline.png -------------------------------------------------------------------------------- /src/vfx/lltimeline/TimelineLib.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/EffectNode/en-node-graph-gui/HEAD/src/vfx/lltimeline/TimelineLib.zip -------------------------------------------------------------------------------- /src/assets/screenshot/add-scene.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/EffectNode/en-node-graph-gui/HEAD/src/assets/screenshot/add-scene.png -------------------------------------------------------------------------------- /src/assets/screenshot/inspector.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/EffectNode/en-node-graph-gui/HEAD/src/assets/screenshot/inspector.png -------------------------------------------------------------------------------- /src/assets/screenshot/mixandmatch.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/EffectNode/en-node-graph-gui/HEAD/src/assets/screenshot/mixandmatch.png -------------------------------------------------------------------------------- /src/assets/screenshot/renameTrack.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/EffectNode/en-node-graph-gui/HEAD/src/assets/screenshot/renameTrack.png -------------------------------------------------------------------------------- /src/lltimeline/backups/2019-06-01.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/EffectNode/en-node-graph-gui/HEAD/src/lltimeline/backups/2019-06-01.zip -------------------------------------------------------------------------------- /src/assets/screenshot/addSampleBall.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/EffectNode/en-node-graph-gui/HEAD/src/assets/screenshot/addSampleBall.png -------------------------------------------------------------------------------- /src/assets/screenshot/addTimeTrack.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/EffectNode/en-node-graph-gui/HEAD/src/assets/screenshot/addTimeTrack.png -------------------------------------------------------------------------------- /src/assets/screenshot/clickNewScene.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/EffectNode/en-node-graph-gui/HEAD/src/assets/screenshot/clickNewScene.png -------------------------------------------------------------------------------- /src/assets/fonts/interui/Inter-Black.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/EffectNode/en-node-graph-gui/HEAD/src/assets/fonts/interui/Inter-Black.woff -------------------------------------------------------------------------------- /src/assets/fonts/interui/Inter-Black.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/EffectNode/en-node-graph-gui/HEAD/src/assets/fonts/interui/Inter-Black.woff2 -------------------------------------------------------------------------------- /src/assets/fonts/interui/Inter-Bold.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/EffectNode/en-node-graph-gui/HEAD/src/assets/fonts/interui/Inter-Bold.woff -------------------------------------------------------------------------------- /src/assets/fonts/interui/Inter-Bold.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/EffectNode/en-node-graph-gui/HEAD/src/assets/fonts/interui/Inter-Bold.woff2 -------------------------------------------------------------------------------- /src/assets/fonts/interui/Inter-Italic.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/EffectNode/en-node-graph-gui/HEAD/src/assets/fonts/interui/Inter-Italic.woff -------------------------------------------------------------------------------- /src/assets/fonts/interui/Inter-Medium.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/EffectNode/en-node-graph-gui/HEAD/src/assets/fonts/interui/Inter-Medium.woff -------------------------------------------------------------------------------- /src/assets/fonts/interui/Inter.var.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/EffectNode/en-node-graph-gui/HEAD/src/assets/fonts/interui/Inter.var.woff2 -------------------------------------------------------------------------------- /src/assets/screenshot/editSceneTitle.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/EffectNode/en-node-graph-gui/HEAD/src/assets/screenshot/editSceneTitle.png -------------------------------------------------------------------------------- /src/assets/fonts/interui/Inter-Italic.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/EffectNode/en-node-graph-gui/HEAD/src/assets/fonts/interui/Inter-Italic.woff2 -------------------------------------------------------------------------------- /src/assets/fonts/interui/Inter-Medium.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/EffectNode/en-node-graph-gui/HEAD/src/assets/fonts/interui/Inter-Medium.woff2 -------------------------------------------------------------------------------- /src/assets/fonts/interui/Inter-Regular.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/EffectNode/en-node-graph-gui/HEAD/src/assets/fonts/interui/Inter-Regular.woff -------------------------------------------------------------------------------- /src/assets/fonts/interui/Inter-Regular.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/EffectNode/en-node-graph-gui/HEAD/src/assets/fonts/interui/Inter-Regular.woff2 -------------------------------------------------------------------------------- /src/assets/fonts/interui/Inter-SemiBold.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/EffectNode/en-node-graph-gui/HEAD/src/assets/fonts/interui/Inter-SemiBold.woff -------------------------------------------------------------------------------- /.editorconfig: -------------------------------------------------------------------------------- 1 | [*.{js,jsx,ts,tsx,vue}] 2 | indent_style = space 3 | indent_size = 2 4 | trim_trailing_whitespace = true 5 | insert_final_newline = true 6 | -------------------------------------------------------------------------------- /src/assets/fonts/interui/Inter-BlackItalic.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/EffectNode/en-node-graph-gui/HEAD/src/assets/fonts/interui/Inter-BlackItalic.woff -------------------------------------------------------------------------------- /src/assets/fonts/interui/Inter-BoldItalic.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/EffectNode/en-node-graph-gui/HEAD/src/assets/fonts/interui/Inter-BoldItalic.woff -------------------------------------------------------------------------------- /src/assets/fonts/interui/Inter-BoldItalic.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/EffectNode/en-node-graph-gui/HEAD/src/assets/fonts/interui/Inter-BoldItalic.woff2 -------------------------------------------------------------------------------- /src/assets/fonts/interui/Inter-ExtraBold.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/EffectNode/en-node-graph-gui/HEAD/src/assets/fonts/interui/Inter-ExtraBold.woff -------------------------------------------------------------------------------- /src/assets/fonts/interui/Inter-ExtraBold.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/EffectNode/en-node-graph-gui/HEAD/src/assets/fonts/interui/Inter-ExtraBold.woff2 -------------------------------------------------------------------------------- /src/assets/fonts/interui/Inter-Light-BETA.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/EffectNode/en-node-graph-gui/HEAD/src/assets/fonts/interui/Inter-Light-BETA.woff -------------------------------------------------------------------------------- /src/assets/fonts/interui/Inter-Light-BETA.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/EffectNode/en-node-graph-gui/HEAD/src/assets/fonts/interui/Inter-Light-BETA.woff2 -------------------------------------------------------------------------------- /src/assets/fonts/interui/Inter-SemiBold.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/EffectNode/en-node-graph-gui/HEAD/src/assets/fonts/interui/Inter-SemiBold.woff2 -------------------------------------------------------------------------------- /src/assets/fonts/interui/Inter-Thin-BETA.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/EffectNode/en-node-graph-gui/HEAD/src/assets/fonts/interui/Inter-Thin-BETA.woff -------------------------------------------------------------------------------- /src/assets/fonts/interui/Inter-Thin-BETA.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/EffectNode/en-node-graph-gui/HEAD/src/assets/fonts/interui/Inter-Thin-BETA.woff2 -------------------------------------------------------------------------------- /src/assets/fonts/interui/Inter-italic.var.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/EffectNode/en-node-graph-gui/HEAD/src/assets/fonts/interui/Inter-italic.var.woff2 -------------------------------------------------------------------------------- /src/assets/fonts/interui/Inter-BlackItalic.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/EffectNode/en-node-graph-gui/HEAD/src/assets/fonts/interui/Inter-BlackItalic.woff2 -------------------------------------------------------------------------------- /src/assets/fonts/interui/Inter-MediumItalic.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/EffectNode/en-node-graph-gui/HEAD/src/assets/fonts/interui/Inter-MediumItalic.woff -------------------------------------------------------------------------------- /src/assets/fonts/interui/Inter-MediumItalic.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/EffectNode/en-node-graph-gui/HEAD/src/assets/fonts/interui/Inter-MediumItalic.woff2 -------------------------------------------------------------------------------- /src/assets/fonts/interui/Inter-upright.var.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/EffectNode/en-node-graph-gui/HEAD/src/assets/fonts/interui/Inter-upright.var.woff2 -------------------------------------------------------------------------------- /src/assets/fonts/interui/Inter-ExtraBoldItalic.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/EffectNode/en-node-graph-gui/HEAD/src/assets/fonts/interui/Inter-ExtraBoldItalic.woff -------------------------------------------------------------------------------- /src/assets/fonts/interui/Inter-ExtraBoldItalic.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/EffectNode/en-node-graph-gui/HEAD/src/assets/fonts/interui/Inter-ExtraBoldItalic.woff2 -------------------------------------------------------------------------------- /src/assets/fonts/interui/Inter-ExtraLight-BETA.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/EffectNode/en-node-graph-gui/HEAD/src/assets/fonts/interui/Inter-ExtraLight-BETA.woff -------------------------------------------------------------------------------- /src/assets/fonts/interui/Inter-ExtraLight-BETA.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/EffectNode/en-node-graph-gui/HEAD/src/assets/fonts/interui/Inter-ExtraLight-BETA.woff2 -------------------------------------------------------------------------------- /src/assets/fonts/interui/Inter-LightItalic-BETA.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/EffectNode/en-node-graph-gui/HEAD/src/assets/fonts/interui/Inter-LightItalic-BETA.woff -------------------------------------------------------------------------------- /src/assets/fonts/interui/Inter-SemiBoldItalic.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/EffectNode/en-node-graph-gui/HEAD/src/assets/fonts/interui/Inter-SemiBoldItalic.woff -------------------------------------------------------------------------------- /src/assets/fonts/interui/Inter-SemiBoldItalic.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/EffectNode/en-node-graph-gui/HEAD/src/assets/fonts/interui/Inter-SemiBoldItalic.woff2 -------------------------------------------------------------------------------- /src/assets/fonts/interui/Inter-ThinItalic-BETA.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/EffectNode/en-node-graph-gui/HEAD/src/assets/fonts/interui/Inter-ThinItalic-BETA.woff -------------------------------------------------------------------------------- /src/assets/fonts/interui/Inter-ThinItalic-BETA.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/EffectNode/en-node-graph-gui/HEAD/src/assets/fonts/interui/Inter-ThinItalic-BETA.woff2 -------------------------------------------------------------------------------- /src/assets/fonts/interui/Inter-LightItalic-BETA.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/EffectNode/en-node-graph-gui/HEAD/src/assets/fonts/interui/Inter-LightItalic-BETA.woff2 -------------------------------------------------------------------------------- /public/threejs/examples/js/libs/draco/draco_decoder.wasm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/EffectNode/en-node-graph-gui/HEAD/public/threejs/examples/js/libs/draco/draco_decoder.wasm -------------------------------------------------------------------------------- /public/threejs/examples/jsm/utils/UVsDebug.d.ts: -------------------------------------------------------------------------------- 1 | import {Geometry} from "../../.."; 2 | 3 | export function UVsDebug(geometry: Geometry, size: number): HTMLCanvasElement; 4 | -------------------------------------------------------------------------------- /src/assets/fonts/interui/Inter-ExtraLightItalic-BETA.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/EffectNode/en-node-graph-gui/HEAD/src/assets/fonts/interui/Inter-ExtraLightItalic-BETA.woff -------------------------------------------------------------------------------- /public/threejs/examples/jsm/utils/ShadowMapViewer.d.ts: -------------------------------------------------------------------------------- 1 | import {Light} from "../../.."; 2 | 3 | export class ShadowMapViewer { 4 | constructor(light: Light) 5 | } 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /src/assets/fonts/interui/Inter-ExtraLightItalic-BETA.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/EffectNode/en-node-graph-gui/HEAD/src/assets/fonts/interui/Inter-ExtraLightItalic-BETA.woff2 -------------------------------------------------------------------------------- /public/threejs/examples/js/libs/draco/gltf/draco_decoder.wasm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/EffectNode/en-node-graph-gui/HEAD/public/threejs/examples/js/libs/draco/gltf/draco_decoder.wasm -------------------------------------------------------------------------------- /src/vfx/FreeJS/index.js: -------------------------------------------------------------------------------- 1 | export default { 2 | Scene: require('./Scene.vue').default, 3 | Object3D: require('./Object3D.vue').default, 4 | PhysicsItem: require('./PhysicsItem').default 5 | } 6 | -------------------------------------------------------------------------------- /public/threejs/examples/jsm/exporters/STLExporter.d.ts: -------------------------------------------------------------------------------- 1 | import {Object3D} from "../../.."; 2 | 3 | export class STLExporter { 4 | constructor(); 5 | 6 | parse(scene: Object3D, options: {}); 7 | } 8 | -------------------------------------------------------------------------------- /src/views/MovieEntry.vue: -------------------------------------------------------------------------------- 1 | 6 | 7 | 12 | 13 | 16 | -------------------------------------------------------------------------------- /public/threejs/examples/jsm/exporters/OBJExporter.d.ts: -------------------------------------------------------------------------------- 1 | import {Object3D} from '../../../src/Three'; 2 | 3 | export class OBJExporter { 4 | constructor(); 5 | 6 | parse(object: Object3D): string; 7 | } 8 | -------------------------------------------------------------------------------- /src/icons/tree.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/icons/clone-white.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /public/threejs/examples/jsm/exporters/PLYExporter.d.ts: -------------------------------------------------------------------------------- 1 | import {Object3D} from "../../.."; 2 | 3 | export class PLYExporter { 4 | constructor(); 5 | 6 | parse(object: Object3D, onDone: (res: any) => void, options: object): null; 7 | } 8 | -------------------------------------------------------------------------------- /public/threejs/examples/jsm/exporters/TypedGeometryExporter.d.ts: -------------------------------------------------------------------------------- 1 | import {Object3D} from "../../.."; 2 | 3 | export class TypedGeometryExporterD { 4 | constructor(); 5 | 6 | parse(scene: Object3D, options: {}): DataView | string; 7 | } 8 | -------------------------------------------------------------------------------- /src/icons/share.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/store.js: -------------------------------------------------------------------------------- 1 | import Vue from 'vue' 2 | import Vuex from 'vuex' 3 | 4 | Vue.use(Vuex) 5 | 6 | export default new Vuex.Store({ 7 | state: { 8 | 9 | }, 10 | mutations: { 11 | 12 | }, 13 | actions: { 14 | 15 | } 16 | }) 17 | -------------------------------------------------------------------------------- /public/threejs/examples/jsm/utils/MathUtils.d.ts: -------------------------------------------------------------------------------- 1 | import {Quaternion} from "../../.."; 2 | 3 | export namespace MathUtils { 4 | export function setQuaternionFromProperEuler(q: Quaternion, a: number, b: number, c: number, order: string): void ; 5 | } 6 | -------------------------------------------------------------------------------- /public/threejs/examples/jsm/exporters/ColladaExporter.d.ts: -------------------------------------------------------------------------------- 1 | import {Object3D} from '../../../src/Three'; 2 | 3 | export class ColladaExporter { 4 | constructor(); 5 | 6 | parse(object: Object3D, onDone: (res: any) => void, options: object): null; 7 | } 8 | -------------------------------------------------------------------------------- /public/threejs/examples/jsm/exporters/GLTFExporter.d.ts: -------------------------------------------------------------------------------- 1 | import {Object3D} from '../../../src/Three'; 2 | 3 | export class GLTFExporter { 4 | constructor(); 5 | 6 | parse(input: Object3D, onCompleted: (gltf: object) => void, options: object): null; 7 | } 8 | -------------------------------------------------------------------------------- /public/threejs/examples/jsm/exporters/MMDExporter.d.ts: -------------------------------------------------------------------------------- 1 | import {Object3D} from "../../.."; 2 | 3 | export class MMDExporter { 4 | constructor(); 5 | 6 | parseVpd(skin: Object3D, outputShiftJis: boolean, useOriginalBones: boolean): [] | Uint8Array 7 | } 8 | -------------------------------------------------------------------------------- /src/icons/folder.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/vfx/Simulation/GeoShader/vertexer.1/display.frag: -------------------------------------------------------------------------------- 1 | #include 2 | 3 | varying vec3 v_tt; 4 | 5 | void main() { 6 | gl_FragColor = vec4( 7 | 0.25 + abs(v_tt.x), 8 | 0.25 + abs(v_tt.y), 9 | 0.25 + abs(v_tt.z), 10 | 0.7 11 | ); 12 | } 13 | -------------------------------------------------------------------------------- /src/vfx/Simulation/GeoShader/vertexer/display.frag: -------------------------------------------------------------------------------- 1 | #include 2 | 3 | varying vec3 v_tt; 4 | 5 | void main() { 6 | gl_FragColor = vec4( 7 | 0.25 + abs(v_tt.x), 8 | 0.25 + abs(v_tt.y), 9 | 0.25 + abs(v_tt.z), 10 | 0.7 11 | ); 12 | } 13 | -------------------------------------------------------------------------------- /src/icons/fullscreen-gofull.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/icons/clock.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/icons/cross.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/icons/home.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/icons/switch-on.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/main.js: -------------------------------------------------------------------------------- 1 | import './polyfill' 2 | import Vue from 'vue' 3 | import App from './App.vue' 4 | import router from './router' 5 | import store from './store' 6 | 7 | Vue.config.productionTip = false 8 | 9 | new Vue({ 10 | router, 11 | store, 12 | render: h => h(App) 13 | }).$mount('#app') 14 | -------------------------------------------------------------------------------- /src/vfx/tools/portal.vue: -------------------------------------------------------------------------------- 1 | 6 | 7 | 14 | 15 | 18 | -------------------------------------------------------------------------------- /src/icons/codepen.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | node_modules 3 | /dist 4 | 5 | # local env files 6 | .env.local 7 | .env.*.local 8 | 9 | # Log files 10 | npm-debug.log* 11 | yarn-debug.log* 12 | yarn-error.log* 13 | 14 | # Editor directories and files 15 | .idea 16 | .vscode 17 | *.suo 18 | *.ntvs* 19 | *.njsproj 20 | *.sln 21 | *.sw? 22 | -------------------------------------------------------------------------------- /public/threejs/examples/js/offscreen/offscreen.js: -------------------------------------------------------------------------------- 1 | self.importScripts( '../../../build/three.js' ); 2 | self.importScripts( './scene.js' ); 3 | 4 | self.onmessage = function ( message ) { 5 | 6 | var data = message.data; 7 | init( data.drawingSurface, data.width, data.height, data.pixelRatio, data.path ); 8 | 9 | }; 10 | -------------------------------------------------------------------------------- /public/threejs/examples/js/objects/ReflectorRTT.js: -------------------------------------------------------------------------------- 1 | THREE.ReflectorRTT = function ( geometry, options ) { 2 | 3 | THREE.Reflector.call( this, geometry, options ); 4 | 5 | this.geometry.setDrawRange( 0, 0 ); // avoid rendering geometry 6 | 7 | }; 8 | 9 | THREE.ReflectorRTT.prototype = Object.create( THREE.Reflector.prototype ); 10 | -------------------------------------------------------------------------------- /src/icons/save-to-drive.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /public/threejs/examples/jsm/pmrem/PMREMCubeUVPacker.d.ts: -------------------------------------------------------------------------------- 1 | import {CubeTexture, Renderer, WebGLRenderTarget} from '../../../src/Three'; 2 | 3 | export class PMREMCubeUVPacker { 4 | CubeUVRenderTarget:WebGLRenderTarget; 5 | 6 | constructor(cubeTextureLods: CubeTexture[]); 7 | update(renderer:Renderer): void; 8 | dispose(): void; 9 | } 10 | -------------------------------------------------------------------------------- /src/icons/code.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /public/iframelib/demo.html: -------------------------------------------------------------------------------- 1 | 2 | enigraph demo 3 | 4 | 5 | 6 | 7 |
8 | 9 |
10 | 11 | 18 | -------------------------------------------------------------------------------- /src/icons/add-circle.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/icons/clone.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/icons/refresh.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/icons/add.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/icons/back.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/vfx/Simulation/GeoShader/settings.json: -------------------------------------------------------------------------------- 1 | { 2 | "edit": true, 3 | "camPos": [ 4 | 4.428399491709158, 5 | -24.619363082149615, 6 | -137.212497523395 7 | ], 8 | "useComposer": true, 9 | "bloomPass": { 10 | "threshold": 0.0846740050804403, 11 | "strength": 0.9551227773073666, 12 | "radius": 1.0343776460626588 13 | }, 14 | "bgColor": 1315860 15 | } -------------------------------------------------------------------------------- /public/lib/demo.html: -------------------------------------------------------------------------------- 1 | 2 | effectnodegraph demo 3 | 4 | 5 | 6 | 7 |
8 | 9 |
10 | 11 | 18 | -------------------------------------------------------------------------------- /src/icons/switch-off.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/vfx/CSS/util.css: -------------------------------------------------------------------------------- 1 | .u-full{ 2 | width: 100%; 3 | height: 100%; 4 | } 5 | .u-layer-base{ 6 | position: relative; 7 | 8 | width: 100%; 9 | height: 100%; 10 | } 11 | .u-layer{ 12 | position: absolute; 13 | top: 0px; 14 | left: 0px; 15 | 16 | width: 100%; 17 | height: 100%; 18 | } 19 | .u-center{ 20 | display: flex; 21 | justify-content: center; 22 | align-items: center; 23 | } -------------------------------------------------------------------------------- /src/icons/magnify-old.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/auth/UILogout.vue: -------------------------------------------------------------------------------- 1 | 6 | 7 | 18 | 19 | 23 | -------------------------------------------------------------------------------- /src/vfx/Simulation/GeoShader/visualiser/display.frag: -------------------------------------------------------------------------------- 1 | #include 2 | 3 | varying vec3 v_tt; 4 | varying vec3 v_audio; 5 | 6 | uniform float time; 7 | 8 | void main() { 9 | gl_FragColor = vec4( 10 | abs(v_tt.x * 1.0) + abs((v_tt.x)) + abs(v_audio.y), 11 | abs(v_tt.y * 1.0) + abs((v_tt.x)) + abs(v_audio.z), 12 | abs(v_tt.z * 1.0) + abs((v_tt.y)) + abs(v_audio.x), 13 | 0.6 14 | ); 15 | } 16 | -------------------------------------------------------------------------------- /src/icons/edit-dark.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/icons/magnify-minus.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /.eslintrc.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | root: true, 3 | env: { 4 | node: true 5 | }, 6 | 'extends': [ 7 | 'plugin:vue/essential', 8 | '@vue/standard' 9 | ], 10 | rules: { 11 | 'no-console': process.env.NODE_ENV === 'production' ? 'error' : 'off', 12 | 'no-debugger': process.env.NODE_ENV === 'production' ? 'error' : 'off' 13 | }, 14 | parserOptions: { 15 | parser: 'babel-eslint' 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /public/threejs/examples/jsm/utils/BufferGeometryUtils.d.ts: -------------------------------------------------------------------------------- 1 | import { BufferAttribute, BufferGeometry } from '../../../src/Three'; 2 | 3 | export namespace BufferGeometryUtils { 4 | export function mergeBufferGeometries(geometries: BufferGeometry[]): BufferGeometry; 5 | export function computeTangents(geometry: BufferGeometry): null; 6 | export function mergeBufferAttributes(attributes: BufferAttribute[]): BufferAttribute; 7 | } 8 | -------------------------------------------------------------------------------- /public/threejs/examples/jsm/utils/SceneUtils.d.ts: -------------------------------------------------------------------------------- 1 | import { Geometry, Material, Object3D, Scene } from '../../../src/Three'; 2 | 3 | export namespace SceneUtils { 4 | export function createMultiMaterialObject(geometry: Geometry, materials: Material[]): Object3D; 5 | export function detach(child: Object3D, parent: Object3D, scene: Scene): void; 6 | export function attach(child: Object3D, scene: Scene, parent: Object3D): void; 7 | } 8 | -------------------------------------------------------------------------------- /src/icons/circle-close.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/icons/magnify-add.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /public.1/body.fragment.html: -------------------------------------------------------------------------------- 1 | 2 | 15 | -------------------------------------------------------------------------------- /src/icons/offline.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/icons/photo.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/icons/pin.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /public/threejs/examples/js/loaders/ctm/CTMWorker.js: -------------------------------------------------------------------------------- 1 | importScripts( "lzma.js", "ctm.js" ); 2 | 3 | self.onmessage = function ( event ) { 4 | 5 | var files = []; 6 | 7 | for ( var i = 0; i < event.data.offsets.length; i ++ ) { 8 | 9 | var stream = new CTM.Stream( event.data.data ); 10 | stream.offset = event.data.offsets[ i ]; 11 | 12 | files[ i ] = new CTM.File( stream, [ event.data.data.buffer ] ); 13 | 14 | } 15 | 16 | self.postMessage( files ); 17 | self.close(); 18 | 19 | }; 20 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # en-node-graph-gui 2 | 3 | ## Project setup 4 | ``` 5 | npm install 6 | ``` 7 | 8 | ### Compiles and hot-reloads for development 9 | ``` 10 | npm run serve 11 | ``` 12 | 13 | ### Compiles and minifies for production 14 | ``` 15 | npm run build 16 | ``` 17 | 18 | ### Run your tests 19 | ``` 20 | npm run test 21 | ``` 22 | 23 | ### Lints and fixes files 24 | ``` 25 | npm run lint 26 | ``` 27 | 28 | ### Customize configuration 29 | See [Configuration Reference](https://cli.vuejs.org/config/). 30 | -------------------------------------------------------------------------------- /public/threejs/examples/jsm/utils/GeometryUtils.d.ts: -------------------------------------------------------------------------------- 1 | /** 2 | * @deprecated 3 | */ 4 | export namespace GeometryUtils { 5 | /** 6 | * @deprecated Use {@link Geometry#merge geometry.merge( geometry2, matrix, materialIndexOffset )} instead. 7 | */ 8 | export function merge(geometry1: any, geometry2: any, materialIndexOffset?: any): any; 9 | /** 10 | * @deprecated Use {@link Geometry#center geometry.center()} instead. 11 | */ 12 | export function center(geometry: any): any; 13 | } 14 | -------------------------------------------------------------------------------- /src/components/Template.vue: -------------------------------------------------------------------------------- 1 | 19 | 20 | 25 | 26 | 29 | -------------------------------------------------------------------------------- /public/threejs/examples/js/PRNG.js: -------------------------------------------------------------------------------- 1 | // Park-Miller-Carta Pseudo-Random Number Generator 2 | // https://github.com/pnitsch/BitmapData.js/blob/master/js/BitmapData.js 3 | 4 | var PRNG = function () { 5 | 6 | this.seed = 1; 7 | this.next = function() { 8 | 9 | return ( this.gen() / 2147483647 ); 10 | 11 | }; 12 | this.nextRange = function( min, max ) { 13 | 14 | return min + ( ( max - min ) * this.next() ) 15 | 16 | }; 17 | this.gen = function() { 18 | 19 | return this.seed = ( this.seed * 16807 ) % 2147483647; 20 | 21 | }; 22 | 23 | }; 24 | -------------------------------------------------------------------------------- /public/threejs/examples/js/shaders/BasicShader.js: -------------------------------------------------------------------------------- 1 | /** 2 | * @author mrdoob / http://www.mrdoob.com 3 | * 4 | * Simple test shader 5 | */ 6 | 7 | THREE.BasicShader = { 8 | 9 | uniforms: {}, 10 | 11 | vertexShader: [ 12 | 13 | "void main() {", 14 | 15 | "gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );", 16 | 17 | "}" 18 | 19 | ].join( "\n" ), 20 | 21 | fragmentShader: [ 22 | 23 | "void main() {", 24 | 25 | "gl_FragColor = vec4( 1.0, 0.0, 0.0, 0.5 );", 26 | 27 | "}" 28 | 29 | ].join( "\n" ) 30 | 31 | }; 32 | -------------------------------------------------------------------------------- /src/llsvg/pages.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "_id": "homepage", 4 | "title": "Home", 5 | "protected": true, 6 | "type": "pages", 7 | "to": "root" 8 | }, 9 | { 10 | "_id": "contactus", 11 | "title": "Contact Us", 12 | "protected": true, 13 | "type": "pages", 14 | "to": "root" 15 | }, 16 | { 17 | "_id": "about", 18 | "title": "About", 19 | "protected": true, 20 | "type": "pages", 21 | "to": "root" 22 | }, 23 | { 24 | "_id": "news", 25 | "title": "News", 26 | "protected": true, 27 | "type": "pages", 28 | "to": "root" 29 | } 30 | ] -------------------------------------------------------------------------------- /public/threejs/examples/js/nodes/core/ExpressionNode.js: -------------------------------------------------------------------------------- 1 | /** 2 | * @author sunag / http://www.sunag.com.br/ 3 | */ 4 | 5 | import { FunctionNode } from './FunctionNode.js'; 6 | 7 | function ExpressionNode( src, type, keywords, extensions, includes ) { 8 | 9 | FunctionNode.call( this, src, includes, extensions, keywords, type ); 10 | 11 | } 12 | 13 | ExpressionNode.prototype = Object.create( FunctionNode.prototype ); 14 | ExpressionNode.prototype.constructor = ExpressionNode; 15 | ExpressionNode.prototype.nodeType = "Expression"; 16 | 17 | export { ExpressionNode }; 18 | -------------------------------------------------------------------------------- /public/threejs/examples/jsm/pmrem/PMREMGenerator.d.ts: -------------------------------------------------------------------------------- 1 | import { 2 | Renderer, 3 | RenderTarget, 4 | Texture, 5 | CubeTexture 6 | } from '../../../src/Three'; 7 | 8 | export class PMREMGenerator { 9 | cubeLods:CubeTexture[]; 10 | 11 | constructor(sourceTexture:Texture, samplesPerLevel?:number, resolution?:number); 12 | update(renderer:Renderer): void; 13 | renderToCubeMapTarget(renderer:Renderer, renderTarget:any): void; 14 | renderToCubeMapTargetFace(renderer:Renderer, renderTarget:RenderTarget, faceIndex:number): void; 15 | dispose(): void; 16 | } 17 | -------------------------------------------------------------------------------- /src/vfx/Simulation/GeoShader/vertexer.1/display.vert: -------------------------------------------------------------------------------- 1 | #include 2 | uniform highp sampler2D tPos; 3 | // uniform sampler2D tIdx; 4 | 5 | varying vec3 v_tt; 6 | 7 | void main() { 8 | // vec3 newPos = vec3(1.0); 9 | 10 | // position is changed to host uv vals 11 | vec4 tt = texture2D(tPos, position.xy); 12 | // vec4 idx = texture2D(tIdx, position.xy); 13 | 14 | v_tt = normalize(tt.xyz); 15 | 16 | vec4 mvPosition = modelViewMatrix * tt; 17 | vec4 outputPos = projectionMatrix * mvPosition; 18 | 19 | gl_Position = outputPos; 20 | gl_PointSize = 1.0; 21 | } -------------------------------------------------------------------------------- /src/vfx/Simulation/GeoShader/vertexer/display.vert: -------------------------------------------------------------------------------- 1 | #include 2 | uniform highp sampler2D tPos; 3 | // uniform sampler2D tIdx; 4 | 5 | varying vec3 v_tt; 6 | 7 | void main() { 8 | // vec3 newPos = vec3(1.0); 9 | 10 | // position is changed to host uv vals 11 | vec4 tt = texture2D(tPos, position.xy); 12 | // vec4 idx = texture2D(tIdx, position.xy); 13 | 14 | v_tt = normalize(tt.xyz); 15 | 16 | vec4 mvPosition = modelViewMatrix * tt; 17 | vec4 outputPos = projectionMatrix * mvPosition; 18 | 19 | gl_Position = outputPos; 20 | gl_PointSize = 1.0; 21 | } -------------------------------------------------------------------------------- /public.1/enigma.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | Effect Node's Node Graph 8 | 9 | 10 | 11 | 14 | 15 | 16 | 17 | 18 | -------------------------------------------------------------------------------- /public/enigma.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | Effect Node's Node Graph 8 | 9 | 10 | 11 | 14 | 15 | 16 | 17 | 18 | -------------------------------------------------------------------------------- /src/icons/trash-dark.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/icons/trash-red.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/icons/trashcan.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/icons/shuffle.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/vfx/FreeJS/Scene.vue: -------------------------------------------------------------------------------- 1 | 6 | 7 | 28 | 29 | 34 | -------------------------------------------------------------------------------- /public/threejs/examples/jsm/loaders/OBJLoader.d.ts: -------------------------------------------------------------------------------- 1 | import { 2 | Material, 3 | LoadingManager, 4 | Group 5 | } from '../../../src/Three'; 6 | 7 | export class OBJLoader { 8 | constructor(manager?: LoadingManager); 9 | manager: LoadingManager; 10 | regexp: any; 11 | materials: Material[]; 12 | path: string; 13 | 14 | load(url: string, onLoad: (group: Group) => void, onProgress?: (event: ProgressEvent) => void, onError?: (event: ErrorEvent) => void): void; 15 | parse(data: string) : Group; 16 | setPath(value: string) : void; 17 | setMaterials(materials: Material[]) : void; 18 | _createParserState() : any; 19 | } 20 | -------------------------------------------------------------------------------- /src/icons/cloud-download.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /public.1/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | en-node-graph-gui 9 | 10 | 11 | 14 |
15 | 16 | 17 | 18 | -------------------------------------------------------------------------------- /public.1/sandbox.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | en-node-graph-gui 9 | 10 | 11 | 14 |
15 | 16 | 17 | 18 | -------------------------------------------------------------------------------- /public/threejs/examples/js/nodes/core/NodeUniform.js: -------------------------------------------------------------------------------- 1 | /** 2 | * @author sunag / http://www.sunag.com.br/ 3 | */ 4 | 5 | function NodeUniform( params ) { 6 | 7 | params = params || {}; 8 | 9 | this.name = params.name; 10 | this.type = params.type; 11 | this.node = params.node; 12 | this.needsUpdate = params.needsUpdate; 13 | 14 | } 15 | 16 | Object.defineProperties( NodeUniform.prototype, { 17 | 18 | value: { 19 | 20 | get: function () { 21 | 22 | return this.node.value; 23 | 24 | }, 25 | 26 | set: function ( val ) { 27 | 28 | this.node.value = val; 29 | 30 | } 31 | 32 | } 33 | 34 | } ); 35 | 36 | export { NodeUniform }; 37 | -------------------------------------------------------------------------------- /src/icons/cloud-up.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/icons/cloud-upload.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/icons/timer.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /public/threejs/examples/js/lines/WireframeGeometry2.js: -------------------------------------------------------------------------------- 1 | /** 2 | * @author WestLangley / http://github.com/WestLangley 3 | * 4 | */ 5 | 6 | THREE.WireframeGeometry2 = function ( geometry ) { 7 | 8 | THREE.LineSegmentsGeometry.call( this ); 9 | 10 | this.type = 'WireframeGeometry2'; 11 | 12 | this.fromWireframeGeometry( new THREE.WireframeGeometry( geometry ) ); 13 | 14 | // set colors, maybe 15 | 16 | }; 17 | 18 | THREE.WireframeGeometry2.prototype = Object.assign( Object.create( THREE.LineSegmentsGeometry.prototype ), { 19 | 20 | constructor: THREE.WireframeGeometry2, 21 | 22 | isWireframeGeometry2: true, 23 | 24 | copy: function ( source ) { 25 | 26 | // todo 27 | 28 | return this; 29 | 30 | } 31 | 32 | } ); 33 | -------------------------------------------------------------------------------- /public/threejs/examples/js/lines/Line2.js: -------------------------------------------------------------------------------- 1 | /** 2 | * @author WestLangley / http://github.com/WestLangley 3 | * 4 | */ 5 | 6 | THREE.Line2 = function ( geometry, material ) { 7 | 8 | THREE.LineSegments2.call( this ); 9 | 10 | this.type = 'Line2'; 11 | 12 | this.geometry = geometry !== undefined ? geometry : new THREE.LineGeometry(); 13 | this.material = material !== undefined ? material : new THREE.LineMaterial( { color: Math.random() * 0xffffff } ); 14 | 15 | }; 16 | 17 | THREE.Line2.prototype = Object.assign( Object.create( THREE.LineSegments2.prototype ), { 18 | 19 | constructor: THREE.Line2, 20 | 21 | isLine2: true, 22 | 23 | copy: function ( source ) { 24 | 25 | // todo 26 | 27 | return this; 28 | 29 | } 30 | 31 | } ); 32 | -------------------------------------------------------------------------------- /src/icons/node-home.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /public/threejs/examples/js/offscreen/jank.js: -------------------------------------------------------------------------------- 1 | var interval = null; 2 | 3 | var button = document.getElementById( 'button' ); 4 | button.addEventListener( 'click', function () { 5 | 6 | if ( interval === null ) { 7 | 8 | interval = setInterval( jank, 1000 / 60 ); 9 | 10 | button.textContent = 'STOP JANK'; 11 | 12 | } else { 13 | 14 | clearInterval( interval ); 15 | interval = null; 16 | 17 | button.textContent = 'START JANK'; 18 | result.textContent = ''; 19 | 20 | } 21 | 22 | } ); 23 | 24 | var result = document.getElementById( 'result' ); 25 | 26 | function jank() { 27 | 28 | var number = 0; 29 | 30 | for ( var i = 0; i < 10000000; i ++ ) { 31 | 32 | number += Math.random(); 33 | 34 | } 35 | 36 | result.textContent = number; 37 | 38 | } 39 | -------------------------------------------------------------------------------- /src/icons/code-fork.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/icons/code-fork-blue.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/icons/code-fork-black.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/vfx/Geometry/SphereBufferGeometry.vue: -------------------------------------------------------------------------------- 1 | 6 | 7 | 33 | 34 | 39 | -------------------------------------------------------------------------------- /public/head.fragment.html: -------------------------------------------------------------------------------- 1 | 23 | 24 | 25 | 26 | 27 | 28 | -------------------------------------------------------------------------------- /public/threejs/examples/js/nodes/inputs/ScreenNode.js: -------------------------------------------------------------------------------- 1 | /** 2 | * @author sunag / http://www.sunag.com.br/ 3 | */ 4 | 5 | import { InputNode } from '../core/InputNode.js'; 6 | import { TextureNode } from './TextureNode.js'; 7 | 8 | function ScreenNode( uv ) { 9 | 10 | TextureNode.call( this, undefined, uv ); 11 | 12 | } 13 | 14 | ScreenNode.prototype = Object.create( TextureNode.prototype ); 15 | ScreenNode.prototype.constructor = ScreenNode; 16 | ScreenNode.prototype.nodeType = "Screen"; 17 | 18 | ScreenNode.prototype.getUnique = function () { 19 | 20 | return true; 21 | 22 | }; 23 | 24 | ScreenNode.prototype.getTexture = function ( builder, output ) { 25 | 26 | return InputNode.prototype.generate.call( this, builder, output, this.getUuid(), 't', 'renderTexture' ); 27 | 28 | }; 29 | 30 | export { ScreenNode }; 31 | -------------------------------------------------------------------------------- /src/vfx/Geometry/BoxBufferGeometry.vue: -------------------------------------------------------------------------------- 1 | 6 | 7 | 33 | 34 | 39 | -------------------------------------------------------------------------------- /public/threejs/examples/js/nodes/materials/SpriteNodeMaterial.js: -------------------------------------------------------------------------------- 1 | /** 2 | * @author sunag / http://www.sunag.com.br/ 3 | */ 4 | 5 | import { SpriteNode } from './nodes/SpriteNode.js'; 6 | import { NodeMaterial } from './NodeMaterial.js'; 7 | import { NodeUtils } from '../core/NodeUtils.js'; 8 | 9 | function SpriteNodeMaterial() { 10 | 11 | var node = new SpriteNode(); 12 | 13 | NodeMaterial.call( this, node, node ); 14 | 15 | this.type = "SpriteNodeMaterial"; 16 | 17 | } 18 | 19 | SpriteNodeMaterial.prototype = Object.create( NodeMaterial.prototype ); 20 | SpriteNodeMaterial.prototype.constructor = SpriteNodeMaterial; 21 | 22 | NodeUtils.addShortcuts( SpriteNodeMaterial.prototype, 'fragment', [ 23 | 'color', 24 | 'alpha', 25 | 'mask', 26 | 'position', 27 | 'spherical' 28 | ] ); 29 | 30 | export { SpriteNodeMaterial }; 31 | -------------------------------------------------------------------------------- /src/icons/fullscreen-restore.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /src/llsvg/nodes.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "_id": "home.cam", 4 | "title": "Camera", 5 | "to": "homepage" 6 | }, 7 | 8 | { 9 | "_id": "home.group.slideshow", 10 | "title": "SlideShow Group", 11 | "to": "homepage" 12 | }, 13 | { 14 | "_id": "home.page.hero", 15 | "title": "Hero Item", 16 | "to": "home.group.slideshow" 17 | }, 18 | { 19 | "_id": "home.page.hero2", 20 | "title": "Hero Item 2", 21 | "to": "home.group.slideshow" 22 | }, 23 | 24 | 25 | 26 | { 27 | "_id": "home.gorup.2.slideshow", 28 | "title": "SlideShow Group", 29 | "to": "contactus" 30 | }, 31 | { 32 | "_id": "home.page.group.2.hero", 33 | "title": "Hero Item", 34 | "to": "home.gorup.2.slideshow" 35 | }, 36 | { 37 | "_id": "home.page.group.2.hero2", 38 | "title": "Hero Item 2", 39 | "to": "home.gorup.2.slideshow" 40 | } 41 | ] 42 | -------------------------------------------------------------------------------- /vue.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | runtimeCompiler: true, 3 | css: { extract: false }, 4 | pages: { 5 | index: 'src/main.js'// , 6 | // sandbox: 'src/sandbox.js' 7 | }// , 8 | // configureWebpack: config => { 9 | // if (process.env.NODE_ENV === 'production') { 10 | // config.output.filename = (chunkData) => { 11 | // console.log(chunkData.chunk.name) 12 | // if (chunkData.chunk.name === 'sandbox') { 13 | // return '[name].js' 14 | // } else if (chunkData.chunk.name === 'chunk-vendors') { 15 | // return '[name].js' 16 | // } else { 17 | // return 'js/[name].[contenthash:8].js' 18 | // } 19 | // } 20 | // } else { 21 | // // mutate for development... 22 | // } 23 | // }, 24 | // chainWebpack: config => { 25 | // } 26 | } 27 | -------------------------------------------------------------------------------- /public/threejs/examples/js/utils/SceneUtils.js: -------------------------------------------------------------------------------- 1 | /** 2 | * @author alteredq / http://alteredqualia.com/ 3 | */ 4 | 5 | THREE.SceneUtils = { 6 | 7 | createMultiMaterialObject: function ( geometry, materials ) { 8 | 9 | var group = new THREE.Group(); 10 | 11 | for ( var i = 0, l = materials.length; i < l; i ++ ) { 12 | 13 | group.add( new THREE.Mesh( geometry, materials[ i ] ) ); 14 | 15 | } 16 | 17 | return group; 18 | 19 | }, 20 | 21 | detach: function ( child, parent, scene ) { 22 | 23 | child.applyMatrix( parent.matrixWorld ); 24 | parent.remove( child ); 25 | scene.add( child ); 26 | 27 | }, 28 | 29 | attach: function ( child, scene, parent ) { 30 | 31 | child.applyMatrix( new THREE.Matrix4().getInverse( parent.matrixWorld ) ); 32 | 33 | scene.remove( child ); 34 | parent.add( child ); 35 | 36 | } 37 | 38 | }; 39 | -------------------------------------------------------------------------------- /public/threejs/examples/js/shaders/CopyShader.js: -------------------------------------------------------------------------------- 1 | /** 2 | * @author alteredq / http://alteredqualia.com/ 3 | * 4 | * Full-screen textured quad shader 5 | */ 6 | 7 | THREE.CopyShader = { 8 | 9 | uniforms: { 10 | 11 | "tDiffuse": { value: null }, 12 | "opacity": { value: 1.0 } 13 | 14 | }, 15 | 16 | vertexShader: [ 17 | 18 | "varying vec2 vUv;", 19 | 20 | "void main() {", 21 | 22 | "vUv = uv;", 23 | "gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );", 24 | 25 | "}" 26 | 27 | ].join( "\n" ), 28 | 29 | fragmentShader: [ 30 | 31 | "uniform float opacity;", 32 | 33 | "uniform sampler2D tDiffuse;", 34 | 35 | "varying vec2 vUv;", 36 | 37 | "void main() {", 38 | 39 | "vec4 texel = texture2D( tDiffuse, vUv );", 40 | "gl_FragColor = opacity * texel;", 41 | 42 | "}" 43 | 44 | ].join( "\n" ) 45 | 46 | }; 47 | -------------------------------------------------------------------------------- /src/views/ExecDemo.vue: -------------------------------------------------------------------------------- 1 | 6 | 7 | 31 | 32 | 40 | -------------------------------------------------------------------------------- /src/icons/recycle-on.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/vfx/Items/Mesh.vue: -------------------------------------------------------------------------------- 1 | 4 | 37 | 38 | 43 | -------------------------------------------------------------------------------- /src/vfx/FreeJS/TemplateBox.vue: -------------------------------------------------------------------------------- 1 | 6 | 7 | 35 | 36 | 39 | -------------------------------------------------------------------------------- /src/vfx/Geometry/PlaneBufferGeometry.vue: -------------------------------------------------------------------------------- 1 | 6 | 7 | 37 | 38 | 43 | -------------------------------------------------------------------------------- /src/vfx/Items/Points.vue: -------------------------------------------------------------------------------- 1 | 4 | 37 | 38 | 43 | -------------------------------------------------------------------------------- /public/threejs/examples/js/shaders/GammaCorrectionShader.js: -------------------------------------------------------------------------------- 1 | /** 2 | * @author WestLangley / http://github.com/WestLangley 3 | * 4 | * Gamma Correction Shader 5 | * http://en.wikipedia.org/wiki/gamma_correction 6 | */ 7 | 8 | THREE.GammaCorrectionShader = { 9 | 10 | uniforms: { 11 | 12 | "tDiffuse": { value: null } 13 | 14 | }, 15 | 16 | vertexShader: [ 17 | 18 | "varying vec2 vUv;", 19 | 20 | "void main() {", 21 | 22 | "vUv = uv;", 23 | "gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );", 24 | 25 | "}" 26 | 27 | ].join( "\n" ), 28 | 29 | fragmentShader: [ 30 | 31 | "uniform sampler2D tDiffuse;", 32 | 33 | "varying vec2 vUv;", 34 | 35 | "void main() {", 36 | 37 | "vec4 tex = texture2D( tDiffuse, vec2( vUv.x, vUv.y ) );", 38 | 39 | "gl_FragColor = LinearToGamma( tex, float( GAMMA_FACTOR ) );", 40 | 41 | "}" 42 | 43 | ].join( "\n" ) 44 | 45 | }; 46 | -------------------------------------------------------------------------------- /public/threejs/examples/jsm/loaders/GLTFLoader.d.ts: -------------------------------------------------------------------------------- 1 | import { 2 | AnimationClip, 3 | Camera, 4 | LoadingManager, 5 | Scene 6 | } from '../../../src/Three'; 7 | 8 | export interface GLTF { 9 | animations: AnimationClip[]; 10 | scene: Scene; 11 | scenes: Scene[]; 12 | cameras: Camera[]; 13 | asset: object; 14 | } 15 | 16 | export class GLTFLoader { 17 | constructor(manager?: LoadingManager); 18 | manager: LoadingManager; 19 | path: string; 20 | 21 | load(url: string, onLoad: (gltf: GLTF) => void, onProgress?: (event: ProgressEvent) => void, onError?: (event: ErrorEvent) => void) : void; 22 | setPath(path: string) : GLTFLoader; 23 | setResourcePath(path: string) : GLTFLoader; 24 | setCrossOrigin(value: string): void; 25 | setDRACOLoader(dracoLoader: object): void; 26 | parse(data: ArrayBuffer, path: string, onLoad: (gltf: GLTF) => void, onError?: (event: ErrorEvent) => void) : void; 27 | } 28 | -------------------------------------------------------------------------------- /src/vfx/Material/TemplateMaterial.vue: -------------------------------------------------------------------------------- 1 | 5 | 39 | 40 | 43 | -------------------------------------------------------------------------------- /src/views/Embed.vue: -------------------------------------------------------------------------------- 1 | 6 | 7 | 33 | 34 | 39 | 40 | 46 | -------------------------------------------------------------------------------- /public/threejs/examples/js/shaders/LuminosityShader.js: -------------------------------------------------------------------------------- 1 | /** 2 | * @author alteredq / http://alteredqualia.com/ 3 | * 4 | * Luminosity 5 | * http://en.wikipedia.org/wiki/Luminosity 6 | */ 7 | 8 | THREE.LuminosityShader = { 9 | 10 | uniforms: { 11 | 12 | "tDiffuse": { value: null } 13 | 14 | }, 15 | 16 | vertexShader: [ 17 | 18 | "varying vec2 vUv;", 19 | 20 | "void main() {", 21 | 22 | "vUv = uv;", 23 | 24 | "gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );", 25 | 26 | "}" 27 | 28 | ].join( "\n" ), 29 | 30 | fragmentShader: [ 31 | 32 | "#include ", 33 | 34 | "uniform sampler2D tDiffuse;", 35 | 36 | "varying vec2 vUv;", 37 | 38 | "void main() {", 39 | 40 | "vec4 texel = texture2D( tDiffuse, vUv );", 41 | 42 | "float l = linearToRelativeLuminance( texel.rgb );", 43 | 44 | "gl_FragColor = vec4( l, l, l, texel.w );", 45 | 46 | "}" 47 | 48 | ].join( "\n" ) 49 | 50 | }; 51 | -------------------------------------------------------------------------------- /public/threejs/examples/jsm/utils/SceneUtils.js: -------------------------------------------------------------------------------- 1 | /** 2 | * @author alteredq / http://alteredqualia.com/ 3 | */ 4 | 5 | import { 6 | Group, 7 | Matrix4, 8 | Mesh 9 | } from "../../../build/three.module.js"; 10 | 11 | var SceneUtils = { 12 | 13 | createMultiMaterialObject: function ( geometry, materials ) { 14 | 15 | var group = new Group(); 16 | 17 | for ( var i = 0, l = materials.length; i < l; i ++ ) { 18 | 19 | group.add( new Mesh( geometry, materials[ i ] ) ); 20 | 21 | } 22 | 23 | return group; 24 | 25 | }, 26 | 27 | detach: function ( child, parent, scene ) { 28 | 29 | child.applyMatrix( parent.matrixWorld ); 30 | parent.remove( child ); 31 | scene.add( child ); 32 | 33 | }, 34 | 35 | attach: function ( child, scene, parent ) { 36 | 37 | child.applyMatrix( new Matrix4().getInverse( parent.matrixWorld ) ); 38 | 39 | scene.remove( child ); 40 | parent.add( child ); 41 | 42 | } 43 | 44 | }; 45 | 46 | export { SceneUtils }; 47 | -------------------------------------------------------------------------------- /public/threejs/examples/js/nodes/bsdfs/BlinnShininessExponentNode.js: -------------------------------------------------------------------------------- 1 | /** 2 | * @author sunag / http://www.sunag.com.br/ 3 | */ 4 | 5 | import { TempNode } from '../core/TempNode.js'; 6 | 7 | function BlinnShininessExponentNode() { 8 | 9 | TempNode.call( this, 'f' ); 10 | 11 | } 12 | 13 | BlinnShininessExponentNode.prototype = Object.create( TempNode.prototype ); 14 | BlinnShininessExponentNode.prototype.constructor = BlinnShininessExponentNode; 15 | BlinnShininessExponentNode.prototype.nodeType = "BlinnShininessExponent"; 16 | 17 | BlinnShininessExponentNode.prototype.generate = function ( builder, output ) { 18 | 19 | if ( builder.isCache( 'clearCoat' ) ) { 20 | 21 | return builder.format( 'Material_ClearCoat_BlinnShininessExponent( material )', this.type, output ); 22 | 23 | } else { 24 | 25 | return builder.format( 'Material_BlinnShininessExponent( material )', this.type, output ); 26 | 27 | } 28 | 29 | }; 30 | 31 | export { BlinnShininessExponentNode }; 32 | -------------------------------------------------------------------------------- /public/threejs/examples/js/nodes/materials/PhongNodeMaterial.js: -------------------------------------------------------------------------------- 1 | /** 2 | * @author sunag / http://www.sunag.com.br/ 3 | */ 4 | 5 | import { PhongNode } from './nodes/PhongNode.js'; 6 | import { NodeMaterial } from './NodeMaterial.js'; 7 | import { NodeUtils } from '../core/NodeUtils.js'; 8 | 9 | function PhongNodeMaterial() { 10 | 11 | var node = new PhongNode(); 12 | 13 | NodeMaterial.call( this, node, node ); 14 | 15 | this.type = "PhongNodeMaterial"; 16 | 17 | } 18 | 19 | PhongNodeMaterial.prototype = Object.create( NodeMaterial.prototype ); 20 | PhongNodeMaterial.prototype.constructor = PhongNodeMaterial; 21 | 22 | NodeUtils.addShortcuts( PhongNodeMaterial.prototype, 'fragment', [ 23 | 'color', 24 | 'alpha', 25 | 'specular', 26 | 'shininess', 27 | 'normal', 28 | 'emissive', 29 | 'ambient', 30 | 'light', 31 | 'shadow', 32 | 'ao', 33 | 'environment', 34 | 'environmentAlpha', 35 | 'mask', 36 | 'position' 37 | ] ); 38 | 39 | export { PhongNodeMaterial }; 40 | -------------------------------------------------------------------------------- /public/threejs/examples/js/modifiers/ExplodeModifier.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Make all faces use unique vertices 3 | * so that each face can be separated from others 4 | * 5 | * @author alteredq / http://alteredqualia.com/ 6 | */ 7 | 8 | THREE.ExplodeModifier = function () { 9 | 10 | }; 11 | 12 | THREE.ExplodeModifier.prototype.modify = function ( geometry ) { 13 | 14 | var vertices = []; 15 | 16 | for ( var i = 0, il = geometry.faces.length; i < il; i ++ ) { 17 | 18 | var n = vertices.length; 19 | 20 | var face = geometry.faces[ i ]; 21 | 22 | var a = face.a; 23 | var b = face.b; 24 | var c = face.c; 25 | 26 | var va = geometry.vertices[ a ]; 27 | var vb = geometry.vertices[ b ]; 28 | var vc = geometry.vertices[ c ]; 29 | 30 | vertices.push( va.clone() ); 31 | vertices.push( vb.clone() ); 32 | vertices.push( vc.clone() ); 33 | 34 | face.a = n; 35 | face.b = n + 1; 36 | face.c = n + 2; 37 | 38 | } 39 | 40 | geometry.vertices = vertices; 41 | 42 | }; 43 | -------------------------------------------------------------------------------- /public/threejs/examples/js/nodes/materials/MeshStandardNodeMaterial.js: -------------------------------------------------------------------------------- 1 | /** 2 | * @author sunag / http://www.sunag.com.br/ 3 | */ 4 | 5 | import { MeshStandardNode } from './nodes/MeshStandardNode.js'; 6 | import { NodeMaterial } from './NodeMaterial.js'; 7 | import { NodeUtils } from '../core/NodeUtils.js'; 8 | 9 | function MeshStandardNodeMaterial() { 10 | 11 | var node = new MeshStandardNode(); 12 | 13 | NodeMaterial.call( this, node, node ); 14 | 15 | this.type = "MeshStandardNodeMaterial"; 16 | 17 | } 18 | 19 | MeshStandardNodeMaterial.prototype = Object.create( NodeMaterial.prototype ); 20 | MeshStandardNodeMaterial.prototype.constructor = MeshStandardNodeMaterial; 21 | 22 | NodeUtils.addShortcuts( MeshStandardNodeMaterial.prototype, 'properties', [ 23 | "color", 24 | "roughness", 25 | "metalness", 26 | "map", 27 | "normalMap", 28 | "normalScale", 29 | "metalnessMap", 30 | "roughnessMap", 31 | "envMap" 32 | ] ); 33 | 34 | export { MeshStandardNodeMaterial }; 35 | -------------------------------------------------------------------------------- /public/threejs/examples/js/shaders/PixelShader.js: -------------------------------------------------------------------------------- 1 | /** 2 | * @author wongbryan / http://wongbryan.github.io 3 | * 4 | * Pixelation shader 5 | */ 6 | 7 | THREE.PixelShader = { 8 | 9 | uniforms: { 10 | 11 | "tDiffuse": { value: null }, 12 | "resolution": { value: null }, 13 | "pixelSize": { value: 1. }, 14 | 15 | }, 16 | 17 | vertexShader: [ 18 | 19 | "varying highp vec2 vUv;", 20 | 21 | "void main() {", 22 | 23 | "vUv = uv;", 24 | "gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );", 25 | 26 | "}" 27 | 28 | ].join( "\n" ), 29 | 30 | fragmentShader: [ 31 | 32 | "uniform sampler2D tDiffuse;", 33 | "uniform float pixelSize;", 34 | "uniform vec2 resolution;", 35 | 36 | "varying highp vec2 vUv;", 37 | 38 | "void main(){", 39 | 40 | "vec2 dxy = pixelSize / resolution;", 41 | "vec2 coord = dxy * floor( vUv / dxy );", 42 | "gl_FragColor = texture2D(tDiffuse, coord);", 43 | 44 | "}" 45 | 46 | ].join( "\n" ) 47 | }; 48 | -------------------------------------------------------------------------------- /src/views/Register.vue: -------------------------------------------------------------------------------- 1 | 7 | 8 | 31 | 32 | 38 | -------------------------------------------------------------------------------- /public/threejs/examples/js/shaders/ColorifyShader.js: -------------------------------------------------------------------------------- 1 | /** 2 | * @author alteredq / http://alteredqualia.com/ 3 | * 4 | * Colorify shader 5 | */ 6 | 7 | THREE.ColorifyShader = { 8 | 9 | uniforms: { 10 | 11 | "tDiffuse": { value: null }, 12 | "color": { value: new THREE.Color( 0xffffff ) } 13 | 14 | }, 15 | 16 | vertexShader: [ 17 | 18 | "varying vec2 vUv;", 19 | 20 | "void main() {", 21 | 22 | "vUv = uv;", 23 | "gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );", 24 | 25 | "}" 26 | 27 | ].join( "\n" ), 28 | 29 | fragmentShader: [ 30 | 31 | "uniform vec3 color;", 32 | "uniform sampler2D tDiffuse;", 33 | 34 | "varying vec2 vUv;", 35 | 36 | "void main() {", 37 | 38 | "vec4 texel = texture2D( tDiffuse, vUv );", 39 | 40 | "vec3 luma = vec3( 0.299, 0.587, 0.114 );", 41 | "float v = dot( texel.xyz, luma );", 42 | 43 | "gl_FragColor = vec4( v * color, texel.w );", 44 | 45 | "}" 46 | 47 | ].join( "\n" ) 48 | 49 | }; 50 | -------------------------------------------------------------------------------- /public/threejs/examples/js/nodes/core/NodeFrame.js: -------------------------------------------------------------------------------- 1 | /** 2 | * @author sunag / http://www.sunag.com.br/ 3 | */ 4 | 5 | function NodeFrame( time ) { 6 | 7 | this.time = time !== undefined ? time : 0; 8 | 9 | this.id = 0; 10 | 11 | } 12 | 13 | NodeFrame.prototype = { 14 | 15 | constructor: NodeFrame, 16 | 17 | update: function ( delta ) { 18 | 19 | ++ this.id; 20 | 21 | this.time += delta; 22 | this.delta = delta; 23 | 24 | return this; 25 | 26 | }, 27 | 28 | setRenderer: function ( renderer ) { 29 | 30 | this.renderer = renderer; 31 | 32 | return this; 33 | 34 | }, 35 | 36 | setRenderTexture: function ( renderTexture ) { 37 | 38 | this.renderTexture = renderTexture; 39 | 40 | return this; 41 | 42 | }, 43 | 44 | updateNode: function ( node ) { 45 | 46 | if ( node.frameId === this.id ) return this; 47 | 48 | node.updateFrame( this ); 49 | 50 | node.frameId = this.id; 51 | 52 | return this; 53 | 54 | } 55 | 56 | }; 57 | 58 | export { NodeFrame }; 59 | -------------------------------------------------------------------------------- /src/icons/timetravel-black.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /src/icons/timetravel.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /src/icons/trashcan-on.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/vfx/Simulation/GeoShader/visualiser/display.vert: -------------------------------------------------------------------------------- 1 | #include 2 | uniform sampler2D tPos; 3 | uniform sampler2D tIdx; 4 | uniform sampler2D tAudio; 5 | 6 | varying vec3 v_tt; 7 | varying vec3 v_audio; 8 | 9 | void main() { 10 | // vec3 newPos = vec3(1.0); 11 | 12 | // position is changed to host uv vals 13 | vec4 tt = texture2D(tPos, position.xy); 14 | vec4 idx = texture2D(tIdx, position.xy); 15 | float squareIDX = idx.y; 16 | float totalSquares = idx.z; 17 | 18 | vec2 audioTextureDimension = vec2( 19 | totalSquares * 2.0, 20 | 1.0 21 | ); 22 | vec2 audioUV = vec2(mod(squareIDX, audioTextureDimension.x), 0.0) / audioTextureDimension; 23 | vec4 audioInfo = texture2D(tAudio, audioUV); 24 | 25 | v_audio = vec3( 26 | audioInfo.r, 27 | audioUV.x, 28 | 0 29 | ); 30 | 31 | v_tt = normalize(tt.xyz); 32 | 33 | vec4 mvPosition = modelViewMatrix * tt; 34 | vec4 outputPos = projectionMatrix * mvPosition; 35 | 36 | gl_Position = outputPos; 37 | } 38 | -------------------------------------------------------------------------------- /public/body.fragment.html: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /src/icons/recycle.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /public/threejs/examples/js/loaders/ctm/license/OpenCTM.txt: -------------------------------------------------------------------------------- 1 | Copyright (c) 2009-2010 Marcus Geelnard 2 | 3 | This software is provided 'as-is', without any express or implied 4 | warranty. In no event will the authors be held liable for any damages 5 | arising from the use of this software. 6 | 7 | Permission is granted to anyone to use this software for any purpose, 8 | including commercial applications, and to alter it and redistribute it 9 | freely, subject to the following restrictions: 10 | 11 | 1. The origin of this software must not be misrepresented; you must not 12 | claim that you wrote the original software. If you use this software 13 | in a product, an acknowledgment in the product documentation would be 14 | appreciated but is not required. 15 | 16 | 2. Altered source versions must be plainly marked as such, and must not 17 | be misrepresented as being the original software. 18 | 19 | 3. This notice may not be removed or altered from any source 20 | distribution. 21 | -------------------------------------------------------------------------------- /src/components/Introduction.vue: -------------------------------------------------------------------------------- 1 | 14 | 15 | 20 | 21 | 51 | -------------------------------------------------------------------------------- /public/threejs/examples/js/shaders/UnpackDepthRGBAShader.js: -------------------------------------------------------------------------------- 1 | /** 2 | * @author alteredq / http://alteredqualia.com/ 3 | * 4 | * Unpack RGBA depth shader 5 | * - show RGBA encoded depth as monochrome color 6 | */ 7 | 8 | THREE.UnpackDepthRGBAShader = { 9 | 10 | uniforms: { 11 | 12 | "tDiffuse": { value: null }, 13 | "opacity": { value: 1.0 } 14 | 15 | }, 16 | 17 | vertexShader: [ 18 | 19 | "varying vec2 vUv;", 20 | 21 | "void main() {", 22 | 23 | "vUv = uv;", 24 | "gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );", 25 | 26 | "}" 27 | 28 | ].join( "\n" ), 29 | 30 | fragmentShader: [ 31 | 32 | "uniform float opacity;", 33 | 34 | "uniform sampler2D tDiffuse;", 35 | 36 | "varying vec2 vUv;", 37 | 38 | "#include ", 39 | 40 | "void main() {", 41 | 42 | "float depth = 1.0 - unpackRGBAToDepth( texture2D( tDiffuse, vUv ) );", 43 | "gl_FragColor = vec4( vec3( depth ), opacity );", 44 | 45 | "}" 46 | 47 | ].join( "\n" ) 48 | 49 | }; 50 | -------------------------------------------------------------------------------- /src/views/Login.vue: -------------------------------------------------------------------------------- 1 | 7 | 8 | 32 | 33 | 39 | -------------------------------------------------------------------------------- /src/llexec/archive/DevExec.vue: -------------------------------------------------------------------------------- 1 | 6 | 7 | 47 | 48 | 51 | -------------------------------------------------------------------------------- /public/threejs/examples/js/nodes/materials/StandardNodeMaterial.js: -------------------------------------------------------------------------------- 1 | /** 2 | * @author sunag / http://www.sunag.com.br/ 3 | */ 4 | 5 | import { StandardNode } from './nodes/StandardNode.js'; 6 | import { NodeMaterial } from './NodeMaterial.js'; 7 | import { NodeUtils } from '../core/NodeUtils.js'; 8 | 9 | function StandardNodeMaterial() { 10 | 11 | var node = new StandardNode(); 12 | 13 | NodeMaterial.call( this, node, node ); 14 | 15 | this.type = "StandardNodeMaterial"; 16 | 17 | } 18 | 19 | StandardNodeMaterial.prototype = Object.create( NodeMaterial.prototype ); 20 | StandardNodeMaterial.prototype.constructor = StandardNodeMaterial; 21 | 22 | NodeUtils.addShortcuts( StandardNodeMaterial.prototype, 'fragment', [ 23 | 'color', 24 | 'alpha', 25 | 'roughness', 26 | 'metalness', 27 | 'reflectivity', 28 | 'clearCoat', 29 | 'clearCoatRoughness', 30 | 'normal', 31 | 'emissive', 32 | 'ambient', 33 | 'light', 34 | 'shadow', 35 | 'ao', 36 | 'environment', 37 | 'mask', 38 | 'position' 39 | ] ); 40 | 41 | export { StandardNodeMaterial }; 42 | -------------------------------------------------------------------------------- /src/vfx/Simulation/GeoShader/audio/mp3.js: -------------------------------------------------------------------------------- 1 | import * as THREE from 'three' 2 | 3 | export const setup = ({ url }) => { 4 | var api = {} 5 | var fftSize = 512 // up to 2048 with pow2 6 | var listener = new THREE.AudioListener() 7 | var audio = new THREE.Audio(listener) 8 | var mediaElement = new Audio(url) 9 | mediaElement.loop = true 10 | mediaElement.play() 11 | audio.setMediaElementSource(mediaElement) 12 | var analyser = new THREE.AudioAnalyser(audio, fftSize) 13 | 14 | console.log(analyser.data) 15 | 16 | let texture = new THREE.DataTexture(analyser.data, fftSize / 2.0, 1.0, THREE.LuminanceFormat) 17 | 18 | api.pause = () => { 19 | mediaElement.pause() 20 | } 21 | 22 | api.update = () => { 23 | analyser.getFrequencyData() 24 | // analyser.getAverageFrequency() 25 | texture.needsUpdate = true 26 | 27 | return { 28 | texture 29 | } 30 | } 31 | api.credit = { 32 | author: 'skullbeatz', 33 | link: 'http://www.newgrounds.com/audio/listen/376737' 34 | } 35 | 36 | return api 37 | } 38 | -------------------------------------------------------------------------------- /src/fragments/download.fragment.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 |
5 | 6 |
7 | 23 | 30 | -------------------------------------------------------------------------------- /src/vfx/Material/SolidMaterial.vue: -------------------------------------------------------------------------------- 1 | 5 | 44 | 45 | 48 | -------------------------------------------------------------------------------- /src/vfx/Material/WiggleMaterial.vue: -------------------------------------------------------------------------------- 1 | 5 | 44 | 45 | 48 | -------------------------------------------------------------------------------- /public/threejs/examples/js/shaders/BlendShader.js: -------------------------------------------------------------------------------- 1 | /** 2 | * @author alteredq / http://alteredqualia.com/ 3 | * 4 | * Blend two textures 5 | */ 6 | 7 | THREE.BlendShader = { 8 | 9 | uniforms: { 10 | 11 | "tDiffuse1": { value: null }, 12 | "tDiffuse2": { value: null }, 13 | "mixRatio": { value: 0.5 }, 14 | "opacity": { value: 1.0 } 15 | 16 | }, 17 | 18 | vertexShader: [ 19 | 20 | "varying vec2 vUv;", 21 | 22 | "void main() {", 23 | 24 | "vUv = uv;", 25 | "gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );", 26 | 27 | "}" 28 | 29 | ].join( "\n" ), 30 | 31 | fragmentShader: [ 32 | 33 | "uniform float opacity;", 34 | "uniform float mixRatio;", 35 | 36 | "uniform sampler2D tDiffuse1;", 37 | "uniform sampler2D tDiffuse2;", 38 | 39 | "varying vec2 vUv;", 40 | 41 | "void main() {", 42 | 43 | "vec4 texel1 = texture2D( tDiffuse1, vUv );", 44 | "vec4 texel2 = texture2D( tDiffuse2, vUv );", 45 | "gl_FragColor = opacity * mix( texel1, texel2, mixRatio );", 46 | 47 | "}" 48 | 49 | ].join( "\n" ) 50 | 51 | }; 52 | -------------------------------------------------------------------------------- /public/threejs/examples/jsm/utils/SkeletonUtils.d.ts: -------------------------------------------------------------------------------- 1 | import {AnimationClip, Bone, Matrix4, Object3D, Skeleton, SkeletonHelper} from "../../.."; 2 | 3 | export class SkeletonUtils { 4 | retarget(target: Object3D | Skeleton, 5 | source: Object3D | Skeleton, 6 | options: {}) 7 | 8 | retargetClip(target: Skeleton | Object3D, 9 | source: Skeleton | Object3D, 10 | clip: AnimationClip, 11 | options: {}): AnimationClip; 12 | 13 | getHelperFromSkeleton(skeleton: Skeleton): SkeletonHelper; 14 | 15 | getSkeletonOffsets(target: Object3D | Skeleton, 16 | source: Object3D | Skeleton, 17 | options: {}): Matrix4[]; 18 | 19 | renameBones(skeleton: Skeleton, names: {}): any; 20 | 21 | getBones(skeleton: Skeleton | Bone[]): Bone[]; 22 | 23 | getBoneByName(name: string, skeleton: Skeleton): Bone; 24 | 25 | getNearestBone(bone: Bone, names: {}): Bone; 26 | 27 | findBoneTrackData(name: string, tracks: any[]): {}; 28 | 29 | getEqualsBonesNames(skeleton: Skeleton, targetSkeleton: Skeleton); 30 | 31 | clone(source: Skeleton): Skeleton; 32 | } 33 | -------------------------------------------------------------------------------- /public/threejs/examples/js/shaders/ColorCorrectionShader.js: -------------------------------------------------------------------------------- 1 | /** 2 | * @author alteredq / http://alteredqualia.com/ 3 | * 4 | * Color correction 5 | */ 6 | 7 | THREE.ColorCorrectionShader = { 8 | 9 | uniforms: { 10 | 11 | "tDiffuse": { value: null }, 12 | "powRGB": { value: new THREE.Vector3( 2, 2, 2 ) }, 13 | "mulRGB": { value: new THREE.Vector3( 1, 1, 1 ) }, 14 | "addRGB": { value: new THREE.Vector3( 0, 0, 0 ) } 15 | 16 | }, 17 | 18 | vertexShader: [ 19 | 20 | "varying vec2 vUv;", 21 | 22 | "void main() {", 23 | 24 | "vUv = uv;", 25 | 26 | "gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );", 27 | 28 | "}" 29 | 30 | ].join( "\n" ), 31 | 32 | fragmentShader: [ 33 | 34 | "uniform sampler2D tDiffuse;", 35 | "uniform vec3 powRGB;", 36 | "uniform vec3 mulRGB;", 37 | "uniform vec3 addRGB;", 38 | 39 | "varying vec2 vUv;", 40 | 41 | "void main() {", 42 | 43 | "gl_FragColor = texture2D( tDiffuse, vUv );", 44 | "gl_FragColor.rgb = mulRGB * pow( ( gl_FragColor.rgb + addRGB ), powRGB );", 45 | 46 | "}" 47 | 48 | ].join( "\n" ) 49 | 50 | }; 51 | -------------------------------------------------------------------------------- /public/threejs/examples/js/crossfade/gui.js: -------------------------------------------------------------------------------- 1 | var transitionParams = { 2 | "useTexture": true, 3 | "transition": 0.5, 4 | "transitionSpeed": 2.0, 5 | "texture": 5, 6 | "loopTexture": true, 7 | "animateTransition": true, 8 | "textureThreshold": 0.3 9 | }; 10 | 11 | function initGUI() { 12 | 13 | var gui = new dat.GUI(); 14 | 15 | gui.add( transitionParams, "useTexture" ).onChange( function( value ) { 16 | 17 | transition.useTexture( value ); 18 | 19 | } ); 20 | 21 | gui.add( transitionParams, 'loopTexture' ); 22 | 23 | gui.add( transitionParams, 'texture', { Perlin: 0, Squares: 1, Cells: 2, Distort: 3, Gradient: 4, Radial: 5 } ).onChange( function( value ) { 24 | 25 | transition.setTexture( value ); 26 | 27 | } ).listen(); 28 | 29 | gui.add( transitionParams, "textureThreshold", 0, 1, 0.01 ).onChange( function( value ) { 30 | 31 | transition.setTextureThreshold( value ); 32 | 33 | } ); 34 | 35 | gui.add( transitionParams, "animateTransition" ); 36 | gui.add( transitionParams, "transition", 0, 1, 0.01 ).listen(); 37 | gui.add( transitionParams, "transitionSpeed", 0.5, 5, 0.01 ); 38 | 39 | } 40 | -------------------------------------------------------------------------------- /src/App.vue: -------------------------------------------------------------------------------- 1 | 6 | 7 | 56 | -------------------------------------------------------------------------------- /public/threejs/examples/jsm/controls/TrackballControls.d.ts: -------------------------------------------------------------------------------- 1 | import { Camera, EventDispatcher, Vector3 } from '../../../src/Three'; 2 | 3 | export class TrackballControls extends EventDispatcher { 4 | constructor(object: Camera, domElement?: HTMLElement); 5 | 6 | object: Camera; 7 | domElement: HTMLElement; 8 | 9 | // API 10 | enabled: boolean; 11 | screen: {left: number; top: number; width: number; height: number}; 12 | rotateSpeed: number; 13 | zoomSpeed: number; 14 | panSpeed: number; 15 | noRotate: boolean; 16 | noZoom: boolean; 17 | noPan: boolean; 18 | noRoll: boolean; 19 | staticMoving: boolean; 20 | dynamicDampingFactor: number; 21 | minDistance: number; 22 | maxDistance: number; 23 | keys: number[]; 24 | 25 | target: Vector3; 26 | position0: Vector3; 27 | target0: Vector3; 28 | up0: Vector3; 29 | 30 | update(): void; 31 | 32 | reset(): void; 33 | 34 | dispose(): void; 35 | 36 | checkDistances(): void; 37 | 38 | zoomCamera(): void; 39 | 40 | panCamera(): void; 41 | 42 | rotateCamera(): void; 43 | 44 | handleResize(): void; 45 | 46 | handleEvent(event: any): void; 47 | } 48 | -------------------------------------------------------------------------------- /public/threejs/examples/js/shaders/TechnicolorShader.js: -------------------------------------------------------------------------------- 1 | /** 2 | * @author flimshaw / http://charliehoey.com 3 | * 4 | * Technicolor Shader 5 | * Simulates the look of the two-strip technicolor process popular in early 20th century films. 6 | * More historical info here: http://www.widescreenmuseum.com/oldcolor/technicolor1.htm 7 | * Demo here: http://charliehoey.com/technicolor_shader/shader_test.html 8 | */ 9 | 10 | THREE.TechnicolorShader = { 11 | 12 | uniforms: { 13 | 14 | "tDiffuse": { value: null } 15 | 16 | }, 17 | 18 | vertexShader: [ 19 | 20 | "varying vec2 vUv;", 21 | 22 | "void main() {", 23 | 24 | "vUv = uv;", 25 | "gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );", 26 | 27 | "}" 28 | 29 | ].join( "\n" ), 30 | 31 | fragmentShader: [ 32 | 33 | "uniform sampler2D tDiffuse;", 34 | "varying vec2 vUv;", 35 | 36 | "void main() {", 37 | 38 | "vec4 tex = texture2D( tDiffuse, vec2( vUv.x, vUv.y ) );", 39 | "vec4 newTex = vec4(tex.r, (tex.g + tex.b) * .5, (tex.g + tex.b) * .5, 1.0);", 40 | 41 | "gl_FragColor = newTex;", 42 | 43 | "}" 44 | 45 | ].join( "\n" ) 46 | 47 | }; 48 | -------------------------------------------------------------------------------- /public/threejs/examples/js/nodes/inputs/BoolNode.js: -------------------------------------------------------------------------------- 1 | /** 2 | * @author sunag / http://www.sunag.com.br/ 3 | */ 4 | 5 | import { InputNode } from '../core/InputNode.js'; 6 | 7 | function BoolNode( value ) { 8 | 9 | InputNode.call( this, 'b' ); 10 | 11 | this.value = Boolean( value ); 12 | 13 | } 14 | 15 | BoolNode.prototype = Object.create( InputNode.prototype ); 16 | BoolNode.prototype.constructor = BoolNode; 17 | BoolNode.prototype.nodeType = "Bool"; 18 | 19 | BoolNode.prototype.generateReadonly = function ( builder, output, uuid, type, ns, needsUpdate ) { 20 | 21 | return builder.format( this.value, type, output ); 22 | 23 | }; 24 | 25 | BoolNode.prototype.copy = function ( source ) { 26 | 27 | InputNode.prototype.copy.call( this, source ); 28 | 29 | this.value = source.value; 30 | 31 | }; 32 | 33 | BoolNode.prototype.toJSON = function ( meta ) { 34 | 35 | var data = this.getJSONNode( meta ); 36 | 37 | if ( ! data ) { 38 | 39 | data = this.createJSONNode( meta ); 40 | 41 | data.value = this.value; 42 | 43 | if ( this.readonly === true ) data.readonly = true; 44 | 45 | } 46 | 47 | return data; 48 | 49 | }; 50 | 51 | export { BoolNode }; 52 | -------------------------------------------------------------------------------- /public/threejs/examples/js/nodes/inputs/IntNode.js: -------------------------------------------------------------------------------- 1 | /** 2 | * @author sunag / http://www.sunag.com.br/ 3 | */ 4 | 5 | import { InputNode } from '../core/InputNode.js'; 6 | 7 | function IntNode( value ) { 8 | 9 | InputNode.call( this, 'i' ); 10 | 11 | this.value = Math.floor( value || 0 ); 12 | 13 | } 14 | 15 | IntNode.prototype = Object.create( InputNode.prototype ); 16 | IntNode.prototype.constructor = IntNode; 17 | IntNode.prototype.nodeType = "Int"; 18 | 19 | IntNode.prototype.generateReadonly = function ( builder, output, uuid, type, ns, needsUpdate ) { 20 | 21 | return builder.format( this.value, type, output ); 22 | 23 | }; 24 | 25 | IntNode.prototype.copy = function ( source ) { 26 | 27 | InputNode.prototype.copy.call( this, source ); 28 | 29 | this.value = source.value; 30 | 31 | }; 32 | 33 | IntNode.prototype.toJSON = function ( meta ) { 34 | 35 | var data = this.getJSONNode( meta ); 36 | 37 | if ( ! data ) { 38 | 39 | data = this.createJSONNode( meta ); 40 | 41 | data.value = this.value; 42 | 43 | if ( this.readonly === true ) data.readonly = true; 44 | 45 | } 46 | 47 | return data; 48 | 49 | }; 50 | 51 | export { IntNode }; 52 | -------------------------------------------------------------------------------- /public/threejs/examples/js/postprocessing/ClearPass.js: -------------------------------------------------------------------------------- 1 | /** 2 | * @author mrdoob / http://mrdoob.com/ 3 | */ 4 | 5 | THREE.ClearPass = function ( clearColor, clearAlpha ) { 6 | 7 | THREE.Pass.call( this ); 8 | 9 | this.needsSwap = false; 10 | 11 | this.clearColor = ( clearColor !== undefined ) ? clearColor : 0x000000; 12 | this.clearAlpha = ( clearAlpha !== undefined ) ? clearAlpha : 0; 13 | 14 | }; 15 | 16 | THREE.ClearPass.prototype = Object.assign( Object.create( THREE.Pass.prototype ), { 17 | 18 | constructor: THREE.ClearPass, 19 | 20 | render: function ( renderer, writeBuffer, readBuffer, deltaTime, maskActive ) { 21 | 22 | var oldClearColor, oldClearAlpha; 23 | 24 | if ( this.clearColor ) { 25 | 26 | oldClearColor = renderer.getClearColor().getHex(); 27 | oldClearAlpha = renderer.getClearAlpha(); 28 | 29 | renderer.setClearColor( this.clearColor, this.clearAlpha ); 30 | 31 | } 32 | 33 | renderer.setRenderTarget( this.renderToScreen ? null : readBuffer ); 34 | renderer.clear(); 35 | 36 | if ( this.clearColor ) { 37 | 38 | renderer.setClearColor( oldClearColor, oldClearAlpha ); 39 | 40 | } 41 | 42 | } 43 | 44 | } ); 45 | -------------------------------------------------------------------------------- /public/threejs/examples/js/loaders/ctm/license/js-lzma.txt: -------------------------------------------------------------------------------- 1 | Copyright (c) 2011 Juan Mellado 2 | 3 | Permission is hereby granted, free of charge, to any person obtaining a copy 4 | of this software and associated documentation files (the "Software"), to deal 5 | in the Software without restriction, including without limitation the rights 6 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 7 | copies of the Software, and to permit persons to whom the Software is 8 | furnished to do so, subject to the following conditions: 9 | 10 | The above copyright notice and this permission notice shall be included in 11 | all copies or substantial portions of the Software. 12 | 13 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 14 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 15 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 16 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 17 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 18 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 19 | THE SOFTWARE. 20 | -------------------------------------------------------------------------------- /public/threejs/examples/js/loaders/ctm/license/js-openctm.txt: -------------------------------------------------------------------------------- 1 | Copyright (c) 2011 Juan Mellado 2 | 3 | Permission is hereby granted, free of charge, to any person obtaining a copy 4 | of this software and associated documentation files (the "Software"), to deal 5 | in the Software without restriction, including without limitation the rights 6 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 7 | copies of the Software, and to permit persons to whom the Software is 8 | furnished to do so, subject to the following conditions: 9 | 10 | The above copyright notice and this permission notice shall be included in 11 | all copies or substantial portions of the Software. 12 | 13 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 14 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 15 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 16 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 17 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 18 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 19 | THE SOFTWARE. 20 | -------------------------------------------------------------------------------- /src/cute/LICENSE: -------------------------------------------------------------------------------- 1 | The MIT License (MIT) 2 | 3 | Copyright (c) 2014 Darren Newberry - dazzyweb 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy of 6 | this software and associated documentation files (the "Software"), to deal in 7 | the Software without restriction, including without limitation the rights to 8 | use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of 9 | the Software, and to permit persons to whom the Software is furnished to do so, 10 | subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS 17 | FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR 18 | COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER 19 | IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN 20 | CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 21 | -------------------------------------------------------------------------------- /public/threejs/examples/js/nodes/inputs/PropertyNode.js: -------------------------------------------------------------------------------- 1 | /** 2 | * @author sunag / http://www.sunag.com.br/ 3 | */ 4 | 5 | import { InputNode } from '../core/InputNode.js'; 6 | 7 | function PropertyNode( object, property, type ) { 8 | 9 | InputNode.call( this, type ); 10 | 11 | this.object = object; 12 | this.property = property; 13 | 14 | } 15 | 16 | PropertyNode.prototype = Object.create( InputNode.prototype ); 17 | PropertyNode.prototype.constructor = PropertyNode; 18 | PropertyNode.prototype.nodeType = "Property"; 19 | 20 | Object.defineProperties( PropertyNode.prototype, { 21 | 22 | value: { 23 | 24 | get: function () { 25 | 26 | return this.object[ this.property ]; 27 | 28 | }, 29 | 30 | set: function ( val ) { 31 | 32 | this.object[ this.property ] = val; 33 | 34 | } 35 | 36 | } 37 | 38 | } ); 39 | 40 | PropertyNode.prototype.toJSON = function ( meta ) { 41 | 42 | var data = this.getJSONNode( meta ); 43 | 44 | if ( ! data ) { 45 | 46 | data = this.createJSONNode( meta ); 47 | 48 | data.value = this.value; 49 | data.property = this.property; 50 | 51 | } 52 | 53 | return data; 54 | 55 | }; 56 | 57 | export { PropertyNode }; 58 | -------------------------------------------------------------------------------- /src/views/Landing.vue: -------------------------------------------------------------------------------- 1 | 10 | 11 | 28 | 29 | 40 | -------------------------------------------------------------------------------- /src/icons/trashcan-off.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /public/threejs/examples/js/exporters/TypedGeometryExporter.js: -------------------------------------------------------------------------------- 1 | /** 2 | * @author mrdoob / http://mrdoob.com/ 3 | */ 4 | 5 | THREE.TypedGeometryExporter = function () {}; 6 | 7 | THREE.TypedGeometryExporter.prototype = { 8 | 9 | constructor: THREE.TypedGeometryExporter, 10 | 11 | parse: function ( geometry ) { 12 | 13 | var output = { 14 | metadata: { 15 | version: 4.0, 16 | type: 'TypedGeometry', 17 | generator: 'TypedGeometryExporter' 18 | } 19 | }; 20 | 21 | var attributes = [ 'vertices', 'normals', 'uvs' ]; 22 | 23 | for ( var key in attributes ) { 24 | 25 | var attribute = attributes[ key ]; 26 | 27 | var typedArray = geometry[ attribute ]; 28 | var array = []; 29 | 30 | for ( var i = 0, l = typedArray.length; i < l; i ++ ) { 31 | 32 | array[ i ] = typedArray[ i ]; 33 | 34 | } 35 | 36 | output[ attribute ] = array; 37 | 38 | } 39 | 40 | var boundingSphere = geometry.boundingSphere; 41 | 42 | if ( boundingSphere !== null ) { 43 | 44 | output.boundingSphere = { 45 | center: boundingSphere.center.toArray(), 46 | radius: boundingSphere.radius 47 | }; 48 | 49 | } 50 | 51 | return output; 52 | 53 | } 54 | 55 | }; 56 | -------------------------------------------------------------------------------- /public/threejs/examples/js/nodes/inputs/FloatNode.js: -------------------------------------------------------------------------------- 1 | /** 2 | * @author sunag / http://www.sunag.com.br/ 3 | */ 4 | 5 | import { InputNode } from '../core/InputNode.js'; 6 | 7 | function FloatNode( value ) { 8 | 9 | InputNode.call( this, 'f' ); 10 | 11 | this.value = value || 0; 12 | 13 | } 14 | 15 | FloatNode.prototype = Object.create( InputNode.prototype ); 16 | FloatNode.prototype.constructor = FloatNode; 17 | FloatNode.prototype.nodeType = "Float"; 18 | 19 | FloatNode.prototype.generateReadonly = function ( builder, output, uuid, type, ns, needsUpdate ) { 20 | 21 | return builder.format( this.value + ( this.value % 1 ? '' : '.0' ), type, output ); 22 | 23 | }; 24 | 25 | FloatNode.prototype.copy = function ( source ) { 26 | 27 | InputNode.prototype.copy.call( this, source ); 28 | 29 | this.value = source.value; 30 | 31 | }; 32 | 33 | FloatNode.prototype.toJSON = function ( meta ) { 34 | 35 | var data = this.getJSONNode( meta ); 36 | 37 | if ( ! data ) { 38 | 39 | data = this.createJSONNode( meta ); 40 | 41 | data.value = this.value; 42 | 43 | if ( this.readonly === true ) data.readonly = true; 44 | 45 | } 46 | 47 | return data; 48 | 49 | }; 50 | 51 | export { FloatNode }; 52 | -------------------------------------------------------------------------------- /public/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | iGraph by EffectNode.com 9 | 10 | 11 | 12 | 13 | 14 | 15 | 18 |
19 | 20 | 27 | 28 | 29 | 30 | 31 | 32 | -------------------------------------------------------------------------------- /public/threejs/examples/jsm/exporters/TypedGeometryExporter.js: -------------------------------------------------------------------------------- 1 | /** 2 | * @author mrdoob / http://mrdoob.com/ 3 | */ 4 | 5 | 6 | 7 | var TypedGeometryExporter = function () {}; 8 | 9 | TypedGeometryExporter.prototype = { 10 | 11 | constructor: TypedGeometryExporter, 12 | 13 | parse: function ( geometry ) { 14 | 15 | var output = { 16 | metadata: { 17 | version: 4.0, 18 | type: 'TypedGeometry', 19 | generator: 'TypedGeometryExporter' 20 | } 21 | }; 22 | 23 | var attributes = [ 'vertices', 'normals', 'uvs' ]; 24 | 25 | for ( var key in attributes ) { 26 | 27 | var attribute = attributes[ key ]; 28 | 29 | var typedArray = geometry[ attribute ]; 30 | var array = []; 31 | 32 | for ( var i = 0, l = typedArray.length; i < l; i ++ ) { 33 | 34 | array[ i ] = typedArray[ i ]; 35 | 36 | } 37 | 38 | output[ attribute ] = array; 39 | 40 | } 41 | 42 | var boundingSphere = geometry.boundingSphere; 43 | 44 | if ( boundingSphere !== null ) { 45 | 46 | output.boundingSphere = { 47 | center: boundingSphere.center.toArray(), 48 | radius: boundingSphere.radius 49 | }; 50 | 51 | } 52 | 53 | return output; 54 | 55 | } 56 | 57 | }; 58 | 59 | export { TypedGeometryExporter }; 60 | -------------------------------------------------------------------------------- /src/llui/UINodeTemplates/NewTemplate.vue.txt: -------------------------------------------------------------------------------- 1 | 6 | 7 | 50 | 51 | 54 | -------------------------------------------------------------------------------- /public/threejs/examples/js/nodes/core/NodeLib.js: -------------------------------------------------------------------------------- 1 | /** 2 | * @author sunag / http://www.sunag.com.br/ 3 | */ 4 | 5 | var NodeLib = { 6 | 7 | nodes: {}, 8 | keywords: {}, 9 | 10 | add: function ( node ) { 11 | 12 | this.nodes[ node.name ] = node; 13 | 14 | }, 15 | 16 | addKeyword: function ( name, callback, cache ) { 17 | 18 | cache = cache !== undefined ? cache : true; 19 | 20 | this.keywords[ name ] = { callback: callback, cache: cache }; 21 | 22 | }, 23 | 24 | remove: function ( node ) { 25 | 26 | delete this.nodes[ node.name ]; 27 | 28 | }, 29 | 30 | removeKeyword: function ( name ) { 31 | 32 | delete this.keywords[ name ]; 33 | 34 | }, 35 | 36 | get: function ( name ) { 37 | 38 | return this.nodes[ name ]; 39 | 40 | }, 41 | 42 | getKeyword: function ( name, material ) { 43 | 44 | return this.keywords[ name ].callback.call( this, material ); 45 | 46 | }, 47 | 48 | getKeywordData: function ( name ) { 49 | 50 | return this.keywords[ name ]; 51 | 52 | }, 53 | 54 | contains: function ( name ) { 55 | 56 | return this.nodes[ name ] != undefined; 57 | 58 | }, 59 | 60 | containsKeyword: function ( name ) { 61 | 62 | return this.keywords[ name ] != undefined; 63 | 64 | } 65 | 66 | }; 67 | 68 | export { NodeLib }; 69 | -------------------------------------------------------------------------------- /src/llui/UINodeTemplates/SphereGeometry.vue.txt: -------------------------------------------------------------------------------- 1 | 6 | 7 | 50 | 51 | 54 | -------------------------------------------------------------------------------- /public/threejs/examples/js/shaders/SepiaShader.js: -------------------------------------------------------------------------------- 1 | /** 2 | * @author alteredq / http://alteredqualia.com/ 3 | * 4 | * Sepia tone shader 5 | * based on glfx.js sepia shader 6 | * https://github.com/evanw/glfx.js 7 | */ 8 | 9 | THREE.SepiaShader = { 10 | 11 | uniforms: { 12 | 13 | "tDiffuse": { value: null }, 14 | "amount": { value: 1.0 } 15 | 16 | }, 17 | 18 | vertexShader: [ 19 | 20 | "varying vec2 vUv;", 21 | 22 | "void main() {", 23 | 24 | "vUv = uv;", 25 | "gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );", 26 | 27 | "}" 28 | 29 | ].join( "\n" ), 30 | 31 | fragmentShader: [ 32 | 33 | "uniform float amount;", 34 | 35 | "uniform sampler2D tDiffuse;", 36 | 37 | "varying vec2 vUv;", 38 | 39 | "void main() {", 40 | 41 | "vec4 color = texture2D( tDiffuse, vUv );", 42 | "vec3 c = color.rgb;", 43 | 44 | "color.r = dot( c, vec3( 1.0 - 0.607 * amount, 0.769 * amount, 0.189 * amount ) );", 45 | "color.g = dot( c, vec3( 0.349 * amount, 1.0 - 0.314 * amount, 0.168 * amount ) );", 46 | "color.b = dot( c, vec3( 0.272 * amount, 0.534 * amount, 1.0 - 0.869 * amount ) );", 47 | 48 | "gl_FragColor = vec4( min( vec3( 1.0 ), color.rgb ), color.a );", 49 | 50 | "}" 51 | 52 | ].join( "\n" ) 53 | 54 | }; 55 | -------------------------------------------------------------------------------- /public/threejs/examples/js/shaders/DOFMipMapShader.js: -------------------------------------------------------------------------------- 1 | /** 2 | * @author alteredq / http://alteredqualia.com/ 3 | * 4 | * Depth-of-field shader using mipmaps 5 | * - from Matt Handley @applmak 6 | * - requires power-of-2 sized render target with enabled mipmaps 7 | */ 8 | 9 | THREE.DOFMipMapShader = { 10 | 11 | uniforms: { 12 | 13 | "tColor": { value: null }, 14 | "tDepth": { value: null }, 15 | "focus": { value: 1.0 }, 16 | "maxblur": { value: 1.0 } 17 | 18 | }, 19 | 20 | vertexShader: [ 21 | 22 | "varying vec2 vUv;", 23 | 24 | "void main() {", 25 | 26 | "vUv = uv;", 27 | "gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );", 28 | 29 | "}" 30 | 31 | ].join( "\n" ), 32 | 33 | fragmentShader: [ 34 | 35 | "uniform float focus;", 36 | "uniform float maxblur;", 37 | 38 | "uniform sampler2D tColor;", 39 | "uniform sampler2D tDepth;", 40 | 41 | "varying vec2 vUv;", 42 | 43 | "void main() {", 44 | 45 | "vec4 depth = texture2D( tDepth, vUv );", 46 | 47 | "float factor = depth.x - focus;", 48 | 49 | "vec4 col = texture2D( tColor, vUv, 2.0 * maxblur * abs( focus - depth.x ) );", 50 | 51 | "gl_FragColor = col;", 52 | "gl_FragColor.a = 1.0;", 53 | 54 | "}" 55 | 56 | ].join( "\n" ) 57 | 58 | }; 59 | -------------------------------------------------------------------------------- /public/threejs/examples/js/shaders/AfterimageShader.js: -------------------------------------------------------------------------------- 1 | /** 2 | * @author HypnosNova / https://www.threejs.org.cn/gallery/ 3 | * 4 | * Afterimage shader 5 | * I created this effect inspired by a demo on codepen: 6 | * https://codepen.io/brunoimbrizi/pen/MoRJaN?page=1& 7 | */ 8 | 9 | THREE.AfterimageShader = { 10 | 11 | uniforms: { 12 | 13 | "damp": { value: 0.96 }, 14 | "tOld": { value: null }, 15 | "tNew": { value: null } 16 | 17 | }, 18 | 19 | vertexShader: [ 20 | 21 | "varying vec2 vUv;", 22 | 23 | "void main() {", 24 | 25 | "vUv = uv;", 26 | "gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );", 27 | 28 | "}" 29 | 30 | ].join( "\n" ), 31 | 32 | fragmentShader: [ 33 | 34 | "uniform float damp;", 35 | 36 | "uniform sampler2D tOld;", 37 | "uniform sampler2D tNew;", 38 | 39 | "varying vec2 vUv;", 40 | 41 | "vec4 when_gt( vec4 x, float y ) {", 42 | 43 | "return max( sign( x - y ), 0.0 );", 44 | 45 | "}", 46 | 47 | "void main() {", 48 | 49 | "vec4 texelOld = texture2D( tOld, vUv );", 50 | "vec4 texelNew = texture2D( tNew, vUv );", 51 | 52 | "texelOld *= damp * when_gt( texelOld, 0.1 );", 53 | 54 | "gl_FragColor = max(texelNew, texelOld);", 55 | 56 | "}" 57 | 58 | ].join( "\n" ) 59 | 60 | }; 61 | -------------------------------------------------------------------------------- /public/threejs/examples/js/shaders/MirrorShader.js: -------------------------------------------------------------------------------- 1 | /** 2 | * @author felixturner / http://airtight.cc/ 3 | * 4 | * Mirror Shader 5 | * Copies half the input to the other half 6 | * 7 | * side: side of input to mirror (0 = left, 1 = right, 2 = top, 3 = bottom) 8 | */ 9 | 10 | THREE.MirrorShader = { 11 | 12 | uniforms: { 13 | 14 | "tDiffuse": { value: null }, 15 | "side": { value: 1 } 16 | 17 | }, 18 | 19 | vertexShader: [ 20 | 21 | "varying vec2 vUv;", 22 | 23 | "void main() {", 24 | 25 | "vUv = uv;", 26 | "gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );", 27 | 28 | "}" 29 | 30 | ].join( "\n" ), 31 | 32 | fragmentShader: [ 33 | 34 | "uniform sampler2D tDiffuse;", 35 | "uniform int side;", 36 | 37 | "varying vec2 vUv;", 38 | 39 | "void main() {", 40 | 41 | "vec2 p = vUv;", 42 | "if (side == 0){", 43 | "if (p.x > 0.5) p.x = 1.0 - p.x;", 44 | "}else if (side == 1){", 45 | "if (p.x < 0.5) p.x = 1.0 - p.x;", 46 | "}else if (side == 2){", 47 | "if (p.y < 0.5) p.y = 1.0 - p.y;", 48 | "}else if (side == 3){", 49 | "if (p.y > 0.5) p.y = 1.0 - p.y;", 50 | "} ", 51 | "vec4 color = texture2D(tDiffuse, p);", 52 | "gl_FragColor = color;", 53 | 54 | "}" 55 | 56 | ].join( "\n" ) 57 | 58 | }; 59 | -------------------------------------------------------------------------------- /public/threejs/examples/js/shaders/NormalMapShader.js: -------------------------------------------------------------------------------- 1 | /** 2 | * @author alteredq / http://alteredqualia.com/ 3 | * 4 | * Normal map shader 5 | * - compute normals from heightmap 6 | */ 7 | 8 | THREE.NormalMapShader = { 9 | 10 | uniforms: { 11 | 12 | "heightMap": { value: null }, 13 | "resolution": { value: new THREE.Vector2( 512, 512 ) }, 14 | "scale": { value: new THREE.Vector2( 1, 1 ) }, 15 | "height": { value: 0.05 } 16 | 17 | }, 18 | 19 | vertexShader: [ 20 | 21 | "varying vec2 vUv;", 22 | 23 | "void main() {", 24 | 25 | "vUv = uv;", 26 | "gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );", 27 | 28 | "}" 29 | 30 | ].join( "\n" ), 31 | 32 | fragmentShader: [ 33 | 34 | "uniform float height;", 35 | "uniform vec2 resolution;", 36 | "uniform sampler2D heightMap;", 37 | 38 | "varying vec2 vUv;", 39 | 40 | "void main() {", 41 | 42 | "float val = texture2D( heightMap, vUv ).x;", 43 | 44 | "float valU = texture2D( heightMap, vUv + vec2( 1.0 / resolution.x, 0.0 ) ).x;", 45 | "float valV = texture2D( heightMap, vUv + vec2( 0.0, 1.0 / resolution.y ) ).x;", 46 | 47 | "gl_FragColor = vec4( ( 0.5 * normalize( vec3( val - valU, val - valV, height ) ) + 0.5 ), 1.0 );", 48 | 49 | "}" 50 | 51 | ].join( "\n" ) 52 | 53 | }; 54 | -------------------------------------------------------------------------------- /src/llui/UICodeControl.vue: -------------------------------------------------------------------------------- 1 | 6 | 7 | 51 | 52 | 55 | -------------------------------------------------------------------------------- /public/threejs/examples/js/nodes/materials/nodes/RawNode.js: -------------------------------------------------------------------------------- 1 | /** 2 | * @author sunag / http://www.sunag.com.br/ 3 | */ 4 | 5 | import { Node } from '../../core/Node.js'; 6 | 7 | function RawNode( value ) { 8 | 9 | Node.call( this, 'v4' ); 10 | 11 | this.value = value; 12 | 13 | } 14 | 15 | RawNode.prototype = Object.create( Node.prototype ); 16 | RawNode.prototype.constructor = RawNode; 17 | RawNode.prototype.nodeType = "Raw"; 18 | 19 | RawNode.prototype.generate = function ( builder ) { 20 | 21 | var data = this.value.parseAndBuildCode( builder, this.type ), 22 | code = data.code + '\n'; 23 | 24 | if ( builder.isShader( 'vertex' ) ) { 25 | 26 | code += 'gl_Position = ' + data.result + ';'; 27 | 28 | } else { 29 | 30 | code += 'gl_FragColor = ' + data.result + ';'; 31 | 32 | } 33 | 34 | return code; 35 | 36 | }; 37 | 38 | RawNode.prototype.copy = function ( source ) { 39 | 40 | Node.prototype.copy.call( this, source ); 41 | 42 | this.value = source.value; 43 | 44 | }; 45 | 46 | RawNode.prototype.toJSON = function ( meta ) { 47 | 48 | var data = this.getJSONNode( meta ); 49 | 50 | if ( ! data ) { 51 | 52 | data = this.createJSONNode( meta ); 53 | 54 | data.value = this.value.toJSON( meta ).uuid; 55 | 56 | } 57 | 58 | return data; 59 | 60 | }; 61 | 62 | export { RawNode }; 63 | -------------------------------------------------------------------------------- /public/threejs/examples/js/nodes/accessors/ColorsNode.js: -------------------------------------------------------------------------------- 1 | /** 2 | * @author sunag / http://www.sunag.com.br/ 3 | */ 4 | 5 | import { TempNode } from '../core/TempNode.js'; 6 | 7 | var vertexDict = [ 'color', 'color2' ], 8 | fragmentDict = [ 'vColor', 'vColor2' ]; 9 | 10 | function ColorsNode( index ) { 11 | 12 | TempNode.call( this, 'v4', { shared: false } ); 13 | 14 | this.index = index || 0; 15 | 16 | } 17 | 18 | ColorsNode.prototype = Object.create( TempNode.prototype ); 19 | ColorsNode.prototype.constructor = ColorsNode; 20 | 21 | ColorsNode.prototype.generate = function ( builder, output ) { 22 | 23 | builder.requires.color[ this.index ] = true; 24 | 25 | var result = builder.isShader( 'vertex' ) ? vertexDict[ this.index ] : fragmentDict[ this.index ]; 26 | 27 | return builder.format( result, this.getType( builder ), output ); 28 | 29 | }; 30 | 31 | ColorsNode.prototype.copy = function ( source ) { 32 | 33 | TempNode.prototype.copy.call( this, source ); 34 | 35 | this.index = source.index; 36 | 37 | }; 38 | 39 | ColorsNode.prototype.toJSON = function ( meta ) { 40 | 41 | var data = this.getJSONNode( meta ); 42 | 43 | if ( ! data ) { 44 | 45 | data = this.createJSONNode( meta ); 46 | 47 | data.index = this.index; 48 | 49 | } 50 | 51 | return data; 52 | 53 | }; 54 | 55 | export { ColorsNode }; 56 | -------------------------------------------------------------------------------- /public/threejs/examples/js/nodes/utils/MaxMIPLevelNode.js: -------------------------------------------------------------------------------- 1 | /** 2 | * @author sunag / http://www.sunag.com.br/ 3 | */ 4 | 5 | import { FloatNode } from '../inputs/FloatNode.js'; 6 | 7 | function MaxMIPLevelNode( texture ) { 8 | 9 | FloatNode.call( this ); 10 | 11 | this.texture = texture; 12 | 13 | this.maxMIPLevel = 0; 14 | 15 | } 16 | 17 | MaxMIPLevelNode.prototype = Object.create( FloatNode.prototype ); 18 | MaxMIPLevelNode.prototype.constructor = MaxMIPLevelNode; 19 | MaxMIPLevelNode.prototype.nodeType = "MaxMIPLevel"; 20 | 21 | Object.defineProperties( MaxMIPLevelNode.prototype, { 22 | 23 | value: { 24 | 25 | get: function () { 26 | 27 | if ( this.maxMIPLevel === 0 ) { 28 | 29 | var image = this.texture.value.image ? this.texture.value.image[ 0 ] : undefined; 30 | 31 | this.maxMIPLevel = image !== undefined ? Math.log( Math.max( image.width, image.height ) ) * Math.LOG2E : 0; 32 | 33 | } 34 | 35 | return this.maxMIPLevel; 36 | 37 | }, 38 | 39 | set: function () { } 40 | 41 | } 42 | 43 | } ); 44 | 45 | MaxMIPLevelNode.prototype.toJSON = function ( meta ) { 46 | 47 | var data = this.getJSONNode( meta ); 48 | 49 | if ( ! data ) { 50 | 51 | data = this.createJSONNode( meta ); 52 | 53 | data.texture = this.texture.uuid; 54 | 55 | } 56 | 57 | return data; 58 | 59 | }; 60 | 61 | export { MaxMIPLevelNode }; 62 | -------------------------------------------------------------------------------- /src/vfx/Items/Box.vue: -------------------------------------------------------------------------------- 1 | 5 | 6 | 55 | 56 | 59 | -------------------------------------------------------------------------------- /src/vfx/Items/Character.vue: -------------------------------------------------------------------------------- 1 | 4 | 5 | 54 | 55 | 58 | -------------------------------------------------------------------------------- /public/threejs/examples/js/shaders/RGBShiftShader.js: -------------------------------------------------------------------------------- 1 | /** 2 | * @author felixturner / http://airtight.cc/ 3 | * 4 | * RGB Shift Shader 5 | * Shifts red and blue channels from center in opposite directions 6 | * Ported from http://kriss.cx/tom/2009/05/rgb-shift/ 7 | * by Tom Butterworth / http://kriss.cx/tom/ 8 | * 9 | * amount: shift distance (1 is width of input) 10 | * angle: shift angle in radians 11 | */ 12 | 13 | THREE.RGBShiftShader = { 14 | 15 | uniforms: { 16 | 17 | "tDiffuse": { value: null }, 18 | "amount": { value: 0.005 }, 19 | "angle": { value: 0.0 } 20 | 21 | }, 22 | 23 | vertexShader: [ 24 | 25 | "varying vec2 vUv;", 26 | 27 | "void main() {", 28 | 29 | "vUv = uv;", 30 | "gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );", 31 | 32 | "}" 33 | 34 | ].join( "\n" ), 35 | 36 | fragmentShader: [ 37 | 38 | "uniform sampler2D tDiffuse;", 39 | "uniform float amount;", 40 | "uniform float angle;", 41 | 42 | "varying vec2 vUv;", 43 | 44 | "void main() {", 45 | 46 | "vec2 offset = amount * vec2( cos(angle), sin(angle));", 47 | "vec4 cr = texture2D(tDiffuse, vUv + offset);", 48 | "vec4 cga = texture2D(tDiffuse, vUv);", 49 | "vec4 cb = texture2D(tDiffuse, vUv - offset);", 50 | "gl_FragColor = vec4(cr.r, cga.g, cb.b, cga.a);", 51 | 52 | "}" 53 | 54 | ].join( "\n" ) 55 | 56 | }; 57 | -------------------------------------------------------------------------------- /src/vfx/Items/Brick.vue: -------------------------------------------------------------------------------- 1 | 5 | 6 | 57 | 58 | 61 | -------------------------------------------------------------------------------- /src/vfx/SceneItem/Plane.vue: -------------------------------------------------------------------------------- 1 | 5 | 6 | 55 | 56 | 59 | -------------------------------------------------------------------------------- /public/threejs/examples/js/shaders/KaleidoShader.js: -------------------------------------------------------------------------------- 1 | /** 2 | * @author felixturner / http://airtight.cc/ 3 | * 4 | * Kaleidoscope Shader 5 | * Radial reflection around center point 6 | * Ported from: http://pixelshaders.com/editor/ 7 | * by Toby Schachman / http://tobyschachman.com/ 8 | * 9 | * sides: number of reflections 10 | * angle: initial angle in radians 11 | */ 12 | 13 | THREE.KaleidoShader = { 14 | 15 | uniforms: { 16 | 17 | "tDiffuse": { value: null }, 18 | "sides": { value: 6.0 }, 19 | "angle": { value: 0.0 } 20 | 21 | }, 22 | 23 | vertexShader: [ 24 | 25 | "varying vec2 vUv;", 26 | 27 | "void main() {", 28 | 29 | "vUv = uv;", 30 | "gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );", 31 | 32 | "}" 33 | 34 | ].join( "\n" ), 35 | 36 | fragmentShader: [ 37 | 38 | "uniform sampler2D tDiffuse;", 39 | "uniform float sides;", 40 | "uniform float angle;", 41 | 42 | "varying vec2 vUv;", 43 | 44 | "void main() {", 45 | 46 | "vec2 p = vUv - 0.5;", 47 | "float r = length(p);", 48 | "float a = atan(p.y, p.x) + angle;", 49 | "float tau = 2. * 3.1416 ;", 50 | "a = mod(a, tau/sides);", 51 | "a = abs(a - tau/sides/2.) ;", 52 | "p = r * vec2(cos(a), sin(a));", 53 | "vec4 color = texture2D(tDiffuse, p + 0.5);", 54 | "gl_FragColor = color;", 55 | 56 | "}" 57 | 58 | ].join( "\n" ) 59 | 60 | }; 61 | -------------------------------------------------------------------------------- /src/llsvg/node.js: -------------------------------------------------------------------------------- 1 | import { uniqBy } from 'lodash' 2 | 3 | export const getAllChildren = ({ node, nodes, links }) => { 4 | let bucket = [] 5 | 6 | let mover = (mnode) => { 7 | bucket.push(mnode) 8 | let kids = get1LevelKids({ node: mnode, nodes, links }) 9 | kids.forEach((k) => { 10 | mover(k) 11 | }) 12 | } 13 | mover(node) 14 | 15 | return uniqBy(bucket, '_id') 16 | } 17 | 18 | export const getID = () => { 19 | return `_${Number(Math.random() * 1000000).toFixed(0)}` 20 | } 21 | export const get1LevelKids = ({ node, nodes, links }) => { 22 | let ans = links.filter(c => c.to === node._id).map((c) => { 23 | return nodes.find(n => n._id === c.from) 24 | }) 25 | 26 | return uniqBy(ans, '_id') 27 | } 28 | 29 | export const getLinks = ({ nodes }) => { 30 | return nodes.reduce((arr, item, ii) => { 31 | let toNode = nodes.find(n => n._id === item.to) 32 | if (toNode && !!item.to) { 33 | arr.push({ 34 | _id: item.to + item._id, 35 | dashed: true, 36 | running: true, 37 | toPos: toNode.pos || { x: 0, y: 0 }, 38 | fromPos: item.pos || { x: 0, y: 0 }, 39 | from: item._id, 40 | to: item.to 41 | }) 42 | } 43 | return arr 44 | }, []) 45 | } 46 | 47 | export const getNodeTemplate = () => { 48 | return { 49 | _id: '', 50 | title: 'My New Node', 51 | to: '' 52 | } 53 | } 54 | -------------------------------------------------------------------------------- /public/threejs/examples/js/nodes/core/NodeUtils.js: -------------------------------------------------------------------------------- 1 | /** 2 | * @author sunag / http://www.sunag.com.br/ 3 | */ 4 | 5 | var NodeUtils = { 6 | 7 | elements: [ 'x', 'y', 'z', 'w' ], 8 | 9 | addShortcuts: function () { 10 | 11 | function applyShortcut( proxy, property, subProperty ) { 12 | 13 | if ( subProperty ) { 14 | 15 | return { 16 | 17 | get: function () { 18 | 19 | return this[ proxy ][ property ][ subProperty ]; 20 | 21 | }, 22 | 23 | set: function ( val ) { 24 | 25 | this[ proxy ][ property ][ subProperty ] = val; 26 | 27 | } 28 | 29 | }; 30 | 31 | } else { 32 | 33 | return { 34 | 35 | get: function () { 36 | 37 | return this[ proxy ][ property ]; 38 | 39 | }, 40 | 41 | set: function ( val ) { 42 | 43 | this[ proxy ][ property ] = val; 44 | 45 | } 46 | 47 | }; 48 | 49 | } 50 | 51 | } 52 | 53 | return function addShortcuts( proto, proxy, list ) { 54 | 55 | var shortcuts = {}; 56 | 57 | for ( var i = 0; i < list.length; ++ i ) { 58 | 59 | var data = list[ i ].split( "." ), 60 | property = data[ 0 ], 61 | subProperty = data[ 1 ]; 62 | 63 | shortcuts[ property ] = applyShortcut( proxy, property, subProperty ); 64 | 65 | } 66 | 67 | Object.defineProperties( proto, shortcuts ); 68 | 69 | }; 70 | 71 | }() 72 | 73 | }; 74 | 75 | export { NodeUtils }; 76 | -------------------------------------------------------------------------------- /public/threejs/examples/js/nodes/accessors/LightNode.js: -------------------------------------------------------------------------------- 1 | /** 2 | * @author sunag / http://www.sunag.com.br/ 3 | */ 4 | 5 | import { TempNode } from '../core/TempNode.js'; 6 | 7 | function LightNode( scope ) { 8 | 9 | TempNode.call( this, 'v3', { shared: false } ); 10 | 11 | this.scope = scope || LightNode.TOTAL; 12 | 13 | } 14 | 15 | LightNode.TOTAL = 'total'; 16 | 17 | LightNode.prototype = Object.create( TempNode.prototype ); 18 | LightNode.prototype.constructor = LightNode; 19 | LightNode.prototype.nodeType = "Light"; 20 | 21 | LightNode.prototype.generate = function ( builder, output ) { 22 | 23 | if ( builder.isCache( 'light' ) ) { 24 | 25 | return builder.format( 'reflectedLight.directDiffuse', this.type, output ); 26 | 27 | } else { 28 | 29 | console.warn( "THREE.LightNode is only compatible in \"light\" channel." ); 30 | 31 | return builder.format( 'vec3( 0.0 )', this.type, output ); 32 | 33 | } 34 | 35 | }; 36 | 37 | LightNode.prototype.copy = function ( source ) { 38 | 39 | TempNode.prototype.copy.call( this, source ); 40 | 41 | this.scope = source.scope; 42 | 43 | }; 44 | 45 | LightNode.prototype.toJSON = function ( meta ) { 46 | 47 | var data = this.getJSONNode( meta ); 48 | 49 | if ( ! data ) { 50 | 51 | data = this.createJSONNode( meta ); 52 | 53 | data.scope = this.scope; 54 | 55 | } 56 | 57 | return data; 58 | 59 | }; 60 | 61 | export { LightNode }; 62 | -------------------------------------------------------------------------------- /src/icons/recycle-off.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /public/threejs/examples/js/shaders/BrightnessContrastShader.js: -------------------------------------------------------------------------------- 1 | /** 2 | * @author tapio / http://tapio.github.com/ 3 | * 4 | * Brightness and contrast adjustment 5 | * https://github.com/evanw/glfx.js 6 | * brightness: -1 to 1 (-1 is solid black, 0 is no change, and 1 is solid white) 7 | * contrast: -1 to 1 (-1 is solid gray, 0 is no change, and 1 is maximum contrast) 8 | */ 9 | 10 | THREE.BrightnessContrastShader = { 11 | 12 | uniforms: { 13 | 14 | "tDiffuse": { value: null }, 15 | "brightness": { value: 0 }, 16 | "contrast": { value: 0 } 17 | 18 | }, 19 | 20 | vertexShader: [ 21 | 22 | "varying vec2 vUv;", 23 | 24 | "void main() {", 25 | 26 | "vUv = uv;", 27 | 28 | "gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );", 29 | 30 | "}" 31 | 32 | ].join( "\n" ), 33 | 34 | fragmentShader: [ 35 | 36 | "uniform sampler2D tDiffuse;", 37 | "uniform float brightness;", 38 | "uniform float contrast;", 39 | 40 | "varying vec2 vUv;", 41 | 42 | "void main() {", 43 | 44 | "gl_FragColor = texture2D( tDiffuse, vUv );", 45 | 46 | "gl_FragColor.rgb += brightness;", 47 | 48 | "if (contrast > 0.0) {", 49 | "gl_FragColor.rgb = (gl_FragColor.rgb - 0.5) / (1.0 - contrast) + 0.5;", 50 | "} else {", 51 | "gl_FragColor.rgb = (gl_FragColor.rgb - 0.5) * (1.0 + contrast) + 0.5;", 52 | "}", 53 | 54 | "}" 55 | 56 | ].join( "\n" ) 57 | 58 | }; 59 | -------------------------------------------------------------------------------- /public/threejs/examples/js/nodes/inputs/Vector2Node.js: -------------------------------------------------------------------------------- 1 | /** 2 | * @author sunag / http://www.sunag.com.br/ 3 | */ 4 | 5 | import { InputNode } from '../core/InputNode.js'; 6 | import { NodeUtils } from '../core/NodeUtils.js'; 7 | 8 | function Vector2Node( x, y ) { 9 | 10 | InputNode.call( this, 'v2' ); 11 | 12 | this.value = x instanceof THREE.Vector2 ? x : new THREE.Vector2( x, y ); 13 | 14 | } 15 | 16 | Vector2Node.prototype = Object.create( InputNode.prototype ); 17 | Vector2Node.prototype.constructor = Vector2Node; 18 | Vector2Node.prototype.nodeType = "Vector2"; 19 | 20 | NodeUtils.addShortcuts( Vector2Node.prototype, 'value', [ 'x', 'y' ] ); 21 | 22 | Vector2Node.prototype.generateReadonly = function ( builder, output, uuid, type, ns, needsUpdate ) { 23 | 24 | return builder.format( "vec2( " + this.x + ", " + this.y + " )", type, output ); 25 | 26 | }; 27 | 28 | Vector2Node.prototype.copy = function ( source ) { 29 | 30 | InputNode.prototype.copy.call( this, source ); 31 | 32 | this.value.copy( source ); 33 | 34 | }; 35 | 36 | Vector2Node.prototype.toJSON = function ( meta ) { 37 | 38 | var data = this.getJSONNode( meta ); 39 | 40 | if ( ! data ) { 41 | 42 | data = this.createJSONNode( meta ); 43 | 44 | data.x = this.x; 45 | data.y = this.y; 46 | 47 | if ( this.readonly === true ) data.readonly = true; 48 | 49 | } 50 | 51 | return data; 52 | 53 | }; 54 | 55 | export { Vector2Node }; 56 | -------------------------------------------------------------------------------- /public/threejs/examples/js/nodes/accessors/ResolutionNode.js: -------------------------------------------------------------------------------- 1 | /** 2 | * @author sunag / http://www.sunag.com.br/ 3 | */ 4 | 5 | import { Vector2Node } from '../inputs/Vector2Node.js'; 6 | 7 | function ResolutionNode() { 8 | 9 | Vector2Node.call( this ); 10 | 11 | this.size = new THREE.Vector2(); 12 | 13 | } 14 | 15 | ResolutionNode.prototype = Object.create( Vector2Node.prototype ); 16 | ResolutionNode.prototype.constructor = ResolutionNode; 17 | ResolutionNode.prototype.nodeType = "Resolution"; 18 | 19 | ResolutionNode.prototype.updateFrame = function ( frame ) { 20 | 21 | if ( frame.renderer ) { 22 | 23 | frame.renderer.getSize( this.size ); 24 | 25 | var pixelRatio = frame.renderer.getPixelRatio(); 26 | 27 | this.x = this.size.width * pixelRatio; 28 | this.y = this.size.height * pixelRatio; 29 | 30 | } else { 31 | 32 | console.warn( "ResolutionNode need a renderer in NodeFrame" ); 33 | 34 | } 35 | 36 | }; 37 | 38 | ResolutionNode.prototype.copy = function ( source ) { 39 | 40 | Vector2Node.prototype.copy.call( this, source ); 41 | 42 | this.renderer = source.renderer; 43 | 44 | }; 45 | 46 | ResolutionNode.prototype.toJSON = function ( meta ) { 47 | 48 | var data = this.getJSONNode( meta ); 49 | 50 | if ( ! data ) { 51 | 52 | data = this.createJSONNode( meta ); 53 | 54 | data.renderer = this.renderer.uuid; 55 | 56 | } 57 | 58 | return data; 59 | 60 | }; 61 | 62 | export { ResolutionNode }; 63 | -------------------------------------------------------------------------------- /public/threejs/examples/js/effects/StereoEffect.js: -------------------------------------------------------------------------------- 1 | /** 2 | * @author alteredq / http://alteredqualia.com/ 3 | * @authod mrdoob / http://mrdoob.com/ 4 | * @authod arodic / http://aleksandarrodic.com/ 5 | * @authod fonserbc / http://fonserbc.github.io/ 6 | */ 7 | 8 | THREE.StereoEffect = function ( renderer ) { 9 | 10 | var _stereo = new THREE.StereoCamera(); 11 | _stereo.aspect = 0.5; 12 | var size = new THREE.Vector2(); 13 | 14 | this.setEyeSeparation = function ( eyeSep ) { 15 | 16 | _stereo.eyeSep = eyeSep; 17 | 18 | }; 19 | 20 | this.setSize = function ( width, height ) { 21 | 22 | renderer.setSize( width, height ); 23 | 24 | }; 25 | 26 | this.render = function ( scene, camera ) { 27 | 28 | scene.updateMatrixWorld(); 29 | 30 | if ( camera.parent === null ) camera.updateMatrixWorld(); 31 | 32 | _stereo.update( camera ); 33 | 34 | renderer.getSize( size ); 35 | 36 | if ( renderer.autoClear ) renderer.clear(); 37 | renderer.setScissorTest( true ); 38 | 39 | renderer.setScissor( 0, 0, size.width / 2, size.height ); 40 | renderer.setViewport( 0, 0, size.width / 2, size.height ); 41 | renderer.render( scene, _stereo.cameraL ); 42 | 43 | renderer.setScissor( size.width / 2, 0, size.width / 2, size.height ); 44 | renderer.setViewport( size.width / 2, 0, size.width / 2, size.height ); 45 | renderer.render( scene, _stereo.cameraR ); 46 | 47 | renderer.setScissorTest( false ); 48 | 49 | }; 50 | 51 | }; 52 | -------------------------------------------------------------------------------- /src/llui/UINodeTemplates/Object3D.vue.txt: -------------------------------------------------------------------------------- 1 | 6 | 7 | 56 | 57 | 60 | -------------------------------------------------------------------------------- /public/threejs/examples/js/nodes/inputs/ColorNode.js: -------------------------------------------------------------------------------- 1 | /** 2 | * @author sunag / http://www.sunag.com.br/ 3 | */ 4 | 5 | import { InputNode } from '../core/InputNode.js'; 6 | import { NodeUtils } from '../core/NodeUtils.js'; 7 | 8 | function ColorNode( color, g, b ) { 9 | 10 | InputNode.call( this, 'c' ); 11 | 12 | this.value = color instanceof THREE.Color ? color : new THREE.Color( color || 0, g, b ); 13 | 14 | } 15 | 16 | ColorNode.prototype = Object.create( InputNode.prototype ); 17 | ColorNode.prototype.constructor = ColorNode; 18 | ColorNode.prototype.nodeType = "Color"; 19 | 20 | NodeUtils.addShortcuts( ColorNode.prototype, 'value', [ 'r', 'g', 'b' ] ); 21 | 22 | ColorNode.prototype.generateReadonly = function ( builder, output, uuid, type, ns, needsUpdate ) { 23 | 24 | return builder.format( "vec3( " + this.r + ", " + this.g + ", " + this.b + " )", type, output ); 25 | 26 | }; 27 | 28 | ColorNode.prototype.copy = function ( source ) { 29 | 30 | InputNode.prototype.copy.call( this, source ); 31 | 32 | this.value.copy( source ); 33 | 34 | }; 35 | 36 | ColorNode.prototype.toJSON = function ( meta ) { 37 | 38 | var data = this.getJSONNode( meta ); 39 | 40 | if ( ! data ) { 41 | 42 | data = this.createJSONNode( meta ); 43 | 44 | data.r = this.r; 45 | data.g = this.g; 46 | data.b = this.b; 47 | 48 | if ( this.readonly === true ) data.readonly = true; 49 | 50 | } 51 | 52 | return data; 53 | 54 | }; 55 | 56 | export { ColorNode }; 57 | -------------------------------------------------------------------------------- /public/threejs/examples/js/nodes/inputs/Vector3Node.js: -------------------------------------------------------------------------------- 1 | /** 2 | * @author sunag / http://www.sunag.com.br/ 3 | */ 4 | 5 | import { InputNode } from '../core/InputNode.js'; 6 | import { NodeUtils } from '../core/NodeUtils.js'; 7 | 8 | function Vector3Node( x, y, z ) { 9 | 10 | InputNode.call( this, 'v3' ); 11 | 12 | this.value = x instanceof THREE.Vector3 ? x : new THREE.Vector3( x, y, z ); 13 | 14 | } 15 | 16 | Vector3Node.prototype = Object.create( InputNode.prototype ); 17 | Vector3Node.prototype.constructor = Vector3Node; 18 | Vector3Node.prototype.nodeType = "Vector3"; 19 | 20 | NodeUtils.addShortcuts( Vector3Node.prototype, 'value', [ 'x', 'y', 'z' ] ); 21 | 22 | Vector3Node.prototype.generateReadonly = function ( builder, output, uuid, type, ns, needsUpdate ) { 23 | 24 | return builder.format( "vec3( " + this.x + ", " + this.y + ", " + this.z + " )", type, output ); 25 | 26 | }; 27 | 28 | Vector3Node.prototype.copy = function ( source ) { 29 | 30 | InputNode.prototype.copy.call( this, source ); 31 | 32 | this.value.copy( source ); 33 | 34 | }; 35 | 36 | Vector3Node.prototype.toJSON = function ( meta ) { 37 | 38 | var data = this.getJSONNode( meta ); 39 | 40 | if ( ! data ) { 41 | 42 | data = this.createJSONNode( meta ); 43 | 44 | data.x = this.x; 45 | data.y = this.y; 46 | data.z = this.z; 47 | 48 | if ( this.readonly === true ) data.readonly = true; 49 | 50 | } 51 | 52 | return data; 53 | 54 | }; 55 | 56 | export { Vector3Node }; 57 | -------------------------------------------------------------------------------- /src/llui/UINodeTemplates/RingGeo.vue.txt: -------------------------------------------------------------------------------- 1 | 6 | 7 | 57 | 58 | 61 | -------------------------------------------------------------------------------- /public/threejs/examples/js/libs/system.min.js: -------------------------------------------------------------------------------- 1 | // system.js - http://github.com/mrdoob/system.js 2 | 'use strict';var System={browser:function(){var a=navigator.userAgent;return/Arora/i.test(a)?"Arora":/Chrome/i.test(a)?"Chrome":/Epiphany/i.test(a)?"Epiphany":/Firefox/i.test(a)?"Firefox":/Mobile(\/.*)? Safari/i.test(a)?"Mobile Safari":/MSIE/i.test(a)?"Internet Explorer":/Midori/i.test(a)?"Midori":/Opera/.test(a)?"Opera":/Safari/i.test(a)?"Safari":!1}(),os:function(){var a=navigator.userAgent;return/Android/i.test(a)?"Android":/CrOS/i.test(a)?"Chrome OS":/iP[ao]d|iPhone/i.test(a)?"iOS":/Linux/i.test(a)? 3 | "Linux":/Mac OS/i.test(a)?"Mac OS":/windows/i.test(a)?"Windows":!1}(),support:{canvas:!!window.CanvasRenderingContext2D,localStorage:function(){try{return!!window.localStorage.getItem}catch(a){return!1}}(),file:!!window.File&&!!window.FileReader&&!!window.FileList&&!!window.Blob,fileSystem:!!window.requestFileSystem||!!window.webkitRequestFileSystem,getUserMedia:!!window.navigator.getUserMedia||!!window.navigator.webkitGetUserMedia||!!window.navigator.mozGetUserMedia||!!window.navigator.msGetUserMedia, 4 | requestAnimationFrame:!!window.mozRequestAnimationFrame||!!window.webkitRequestAnimationFrame||!!window.oRequestAnimationFrame||!!window.msRequestAnimationFrame,sessionStorage:function(){try{return!!window.sessionStorage.getItem}catch(a){return!1}}(),webgl:function(){try{return!!window.WebGLRenderingContext&&!!document.createElement("canvas").getContext("experimental-webgl")}catch(a){return!1}}(),worker:!!window.Worker}}; 5 | -------------------------------------------------------------------------------- /src/vfx/Simulation/GeoShader/audio/mic.js: -------------------------------------------------------------------------------- 1 | import { AudioListener, Audio, AudioAnalyser, DataTexture, LuminanceFormat } from 'three' 2 | 3 | export const setup = () => { 4 | var api = {} 5 | var fftSize = 1024 // up to 2048 with pow2 6 | var listener = new AudioListener() 7 | 8 | var analyser 9 | var texture = null 10 | var sound 11 | 12 | navigator.mediaDevices.getUserMedia({ audio: true, video: false }).then((stream) => { 13 | sound = new Audio(listener) 14 | var context = listener.context 15 | listener.setMasterVolume(0.0) 16 | var source = context.createMediaStreamSource(stream) 17 | sound.setNodeSource(source) 18 | 19 | analyser = new AudioAnalyser(sound, fftSize) 20 | console.log(analyser.data) 21 | texture = new DataTexture(analyser.data, fftSize / 2.0, 1.0, LuminanceFormat) 22 | }) 23 | 24 | api.pause = () => { 25 | sound.pause() 26 | } 27 | 28 | api.update = () => { 29 | if (analyser) { 30 | analyser.getFrequencyData() 31 | // analyser.getAverageFrequency() 32 | } 33 | if (texture) { 34 | texture.needsUpdate = true 35 | } 36 | 37 | return { 38 | texture 39 | } 40 | } 41 | return api 42 | } 43 | 44 | /* 45 | var listener = new THREE.AudioListener(); 46 | camera.add( listener ); 47 | 48 | navigator.mediaDevices.getUserMedia( { sound: true, video: false } ).then( handleSuccess ); 49 | 50 | function handleSuccess( stream ) { 51 | 52 | var sound = new THREE.Audio( listener ); 53 | } 54 | */ 55 | -------------------------------------------------------------------------------- /public/threejs/examples/js/nodes/bsdfs/BlinnExponentToRoughnessNode.js: -------------------------------------------------------------------------------- 1 | /** 2 | * @author sunag / http://www.sunag.com.br/ 3 | */ 4 | 5 | import { TempNode } from '../core/TempNode.js'; 6 | import { BlinnShininessExponentNode } from './BlinnShininessExponentNode.js'; 7 | 8 | function BlinnExponentToRoughnessNode( blinnExponent ) { 9 | 10 | TempNode.call( this, 'f' ); 11 | 12 | this.blinnExponent = blinnExponent || new BlinnShininessExponentNode(); 13 | 14 | } 15 | 16 | BlinnExponentToRoughnessNode.prototype = Object.create( TempNode.prototype ); 17 | BlinnExponentToRoughnessNode.prototype.constructor = BlinnExponentToRoughnessNode; 18 | BlinnExponentToRoughnessNode.prototype.nodeType = "BlinnExponentToRoughness"; 19 | 20 | BlinnExponentToRoughnessNode.prototype.generate = function ( builder, output ) { 21 | 22 | return builder.format( 'BlinnExponentToGGXRoughness( ' + this.blinnExponent.build( builder, 'f' ) + ' )', this.type, output ); 23 | 24 | }; 25 | 26 | BlinnExponentToRoughnessNode.prototype.copy = function ( source ) { 27 | 28 | TempNode.prototype.copy.call( this, source ); 29 | 30 | this.blinnExponent = source.blinnExponent; 31 | 32 | }; 33 | 34 | BlinnExponentToRoughnessNode.prototype.toJSON = function ( meta ) { 35 | 36 | var data = this.getJSONNode( meta ); 37 | 38 | if ( ! data ) { 39 | 40 | data = this.createJSONNode( meta ); 41 | 42 | data.blinnExponent = this.blinnExponent; 43 | 44 | } 45 | 46 | return data; 47 | 48 | }; 49 | 50 | export { BlinnExponentToRoughnessNode }; 51 | -------------------------------------------------------------------------------- /src/vfx/SceneItem/GeoVert.vue: -------------------------------------------------------------------------------- 1 | 5 | 6 | 64 | 65 | 68 | -------------------------------------------------------------------------------- /public/threejs/examples/js/nodes/inputs/Matrix3Node.js: -------------------------------------------------------------------------------- 1 | /** 2 | * @author sunag / http://www.sunag.com.br/ 3 | */ 4 | 5 | import { InputNode } from '../core/InputNode.js'; 6 | 7 | function Matrix3Node( matrix ) { 8 | 9 | InputNode.call( this, 'm3' ); 10 | 11 | this.value = matrix || new THREE.Matrix3(); 12 | 13 | } 14 | 15 | Matrix3Node.prototype = Object.create( InputNode.prototype ); 16 | Matrix3Node.prototype.constructor = Matrix3Node; 17 | Matrix3Node.prototype.nodeType = "Matrix3"; 18 | 19 | Object.defineProperties( Matrix3Node.prototype, { 20 | 21 | elements: { 22 | 23 | set: function ( val ) { 24 | 25 | this.value.elements = val; 26 | 27 | }, 28 | 29 | get: function () { 30 | 31 | return this.value.elements; 32 | 33 | } 34 | 35 | } 36 | 37 | } ); 38 | 39 | Matrix3Node.prototype.generateReadonly = function ( builder, output, uuid, type, ns, needsUpdate ) { 40 | 41 | return builder.format( "mat3( " + this.value.elements.join( ", " ) + " )", type, output ); 42 | 43 | }; 44 | 45 | 46 | Matrix3Node.prototype.copy = function ( source ) { 47 | 48 | InputNode.prototype.copy.call( this, source ); 49 | 50 | this.value.fromArray( source.elements ); 51 | 52 | }; 53 | 54 | Matrix3Node.prototype.toJSON = function ( meta ) { 55 | 56 | var data = this.getJSONNode( meta ); 57 | 58 | if ( ! data ) { 59 | 60 | data = this.createJSONNode( meta ); 61 | 62 | data.elements = this.value.elements.concat(); 63 | 64 | } 65 | 66 | return data; 67 | 68 | }; 69 | 70 | export { Matrix3Node }; 71 | -------------------------------------------------------------------------------- /public/threejs/examples/js/nodes/inputs/Matrix4Node.js: -------------------------------------------------------------------------------- 1 | /** 2 | * @author sunag / http://www.sunag.com.br/ 3 | */ 4 | 5 | import { InputNode } from '../core/InputNode.js'; 6 | 7 | function Matrix4Node( matrix ) { 8 | 9 | InputNode.call( this, 'm4' ); 10 | 11 | this.value = matrix || new THREE.Matrix4(); 12 | 13 | } 14 | 15 | Matrix4Node.prototype = Object.create( InputNode.prototype ); 16 | Matrix4Node.prototype.constructor = Matrix4Node; 17 | Matrix4Node.prototype.nodeType = "Matrix4"; 18 | 19 | Object.defineProperties( Matrix4Node.prototype, { 20 | 21 | elements: { 22 | 23 | set: function ( val ) { 24 | 25 | this.value.elements = val; 26 | 27 | }, 28 | 29 | get: function () { 30 | 31 | return this.value.elements; 32 | 33 | } 34 | 35 | } 36 | 37 | } ); 38 | 39 | Matrix4Node.prototype.generateReadonly = function ( builder, output, uuid, type, ns, needsUpdate ) { 40 | 41 | return builder.format( "mat4( " + this.value.elements.join( ", " ) + " )", type, output ); 42 | 43 | }; 44 | 45 | Matrix4Node.prototype.copy = function ( source ) { 46 | 47 | InputNode.prototype.copy.call( this, source ); 48 | 49 | this.scope.value.fromArray( source.elements ); 50 | 51 | }; 52 | 53 | Matrix4Node.prototype.toJSON = function ( meta ) { 54 | 55 | var data = this.getJSONNode( meta ); 56 | 57 | if ( ! data ) { 58 | 59 | data = this.createJSONNode( meta ); 60 | 61 | data.elements = this.value.elements.concat(); 62 | 63 | } 64 | 65 | return data; 66 | 67 | }; 68 | 69 | export { Matrix4Node }; 70 | -------------------------------------------------------------------------------- /public/threejs/examples/js/nodes/inputs/Vector4Node.js: -------------------------------------------------------------------------------- 1 | /** 2 | * @author sunag / http://www.sunag.com.br/ 3 | */ 4 | 5 | import { InputNode } from '../core/InputNode.js'; 6 | import { NodeUtils } from '../core/NodeUtils.js'; 7 | 8 | function Vector4Node( x, y, z, w ) { 9 | 10 | InputNode.call( this, 'v4' ); 11 | 12 | this.value = x instanceof THREE.Vector4 ? x : new THREE.Vector4( x, y, z, w ); 13 | 14 | } 15 | 16 | Vector4Node.prototype = Object.create( InputNode.prototype ); 17 | Vector4Node.prototype.constructor = Vector4Node; 18 | Vector4Node.prototype.nodeType = "Vector4"; 19 | 20 | NodeUtils.addShortcuts( Vector4Node.prototype, 'value', [ 'x', 'y', 'z', 'w' ] ); 21 | 22 | Vector4Node.prototype.generateReadonly = function ( builder, output, uuid, type, ns, needsUpdate ) { 23 | 24 | return builder.format( "vec4( " + this.x + ", " + this.y + ", " + this.z + ", " + this.w + " )", type, output ); 25 | 26 | }; 27 | 28 | Vector4Node.prototype.copy = function ( source ) { 29 | 30 | InputNode.prototype.copy.call( this, source ); 31 | 32 | this.value.copy( source ); 33 | 34 | }; 35 | 36 | Vector4Node.prototype.toJSON = function ( meta ) { 37 | 38 | var data = this.getJSONNode( meta ); 39 | 40 | if ( ! data ) { 41 | 42 | data = this.createJSONNode( meta ); 43 | 44 | data.x = this.x; 45 | data.y = this.y; 46 | data.z = this.z; 47 | data.w = this.w; 48 | 49 | if ( this.readonly === true ) data.readonly = true; 50 | 51 | } 52 | 53 | return data; 54 | 55 | }; 56 | 57 | export { Vector4Node }; 58 | -------------------------------------------------------------------------------- /public/threejs/examples/js/nodes/core/VarNode.js: -------------------------------------------------------------------------------- 1 | /** 2 | * @author sunag / http://www.sunag.com.br/ 3 | */ 4 | 5 | import { Node } from './Node.js'; 6 | 7 | function VarNode( type, value ) { 8 | 9 | Node.call( this, type ); 10 | 11 | this.value = value; 12 | 13 | } 14 | 15 | VarNode.prototype = Object.create( Node.prototype ); 16 | VarNode.prototype.constructor = VarNode; 17 | VarNode.prototype.nodeType = "Var"; 18 | 19 | VarNode.prototype.getType = function ( builder ) { 20 | 21 | return builder.getTypeByFormat( this.type ); 22 | 23 | }; 24 | 25 | VarNode.prototype.generate = function ( builder, output ) { 26 | 27 | var varying = builder.getVar( this.uuid, this.type ); 28 | 29 | if ( this.value && builder.isShader( 'vertex' ) ) { 30 | 31 | builder.addNodeCode( varying.name + ' = ' + this.value.build( builder, this.getType( builder ) ) + ';' ); 32 | 33 | } 34 | 35 | return builder.format( varying.name, this.getType( builder ), output ); 36 | 37 | }; 38 | 39 | VarNode.prototype.copy = function ( source ) { 40 | 41 | Node.prototype.copy.call( this, source ); 42 | 43 | this.type = source.type; 44 | this.value = source.value; 45 | 46 | }; 47 | 48 | VarNode.prototype.toJSON = function ( meta ) { 49 | 50 | var data = this.getJSONNode( meta ); 51 | 52 | if ( ! data ) { 53 | 54 | data = this.createJSONNode( meta ); 55 | 56 | data.type = this.type; 57 | 58 | if ( this.value ) data.value = this.value.toJSON( meta ).uuid; 59 | 60 | } 61 | 62 | return data; 63 | 64 | }; 65 | 66 | export { VarNode }; 67 | -------------------------------------------------------------------------------- /public/threejs/examples/js/shaders/LuminosityHighPassShader.js: -------------------------------------------------------------------------------- 1 | /** 2 | * @author bhouston / http://clara.io/ 3 | * 4 | * Luminosity 5 | * http://en.wikipedia.org/wiki/Luminosity 6 | */ 7 | 8 | THREE.LuminosityHighPassShader = { 9 | 10 | shaderID: "luminosityHighPass", 11 | 12 | uniforms: { 13 | 14 | "tDiffuse": { value: null }, 15 | "luminosityThreshold": { value: 1.0 }, 16 | "smoothWidth": { value: 1.0 }, 17 | "defaultColor": { value: new THREE.Color( 0x000000 ) }, 18 | "defaultOpacity": { value: 0.0 } 19 | 20 | }, 21 | 22 | vertexShader: [ 23 | 24 | "varying vec2 vUv;", 25 | 26 | "void main() {", 27 | 28 | "vUv = uv;", 29 | 30 | "gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );", 31 | 32 | "}" 33 | 34 | ].join("\n"), 35 | 36 | fragmentShader: [ 37 | 38 | "uniform sampler2D tDiffuse;", 39 | "uniform vec3 defaultColor;", 40 | "uniform float defaultOpacity;", 41 | "uniform float luminosityThreshold;", 42 | "uniform float smoothWidth;", 43 | 44 | "varying vec2 vUv;", 45 | 46 | "void main() {", 47 | 48 | "vec4 texel = texture2D( tDiffuse, vUv );", 49 | 50 | "vec3 luma = vec3( 0.299, 0.587, 0.114 );", 51 | 52 | "float v = dot( texel.xyz, luma );", 53 | 54 | "vec4 outputColor = vec4( defaultColor.rgb, defaultOpacity );", 55 | 56 | "float alpha = smoothstep( luminosityThreshold, luminosityThreshold + smoothWidth, v );", 57 | 58 | "gl_FragColor = mix( outputColor, texel, alpha );", 59 | 60 | "}" 61 | 62 | ].join("\n") 63 | 64 | }; 65 | -------------------------------------------------------------------------------- /src/vfx/Simulation/GeoShader/vertexer/tPos.flower.frag: -------------------------------------------------------------------------------- 1 | uniform float time; 2 | uniform sampler2D tIdx; 3 | void main() { 4 | vec2 cellSize = 1.0 / resolution.xy; 5 | vec2 newCell = gl_FragCoord.xy; 6 | vec2 uv = newCell * cellSize; 7 | vec4 pos = texture2D(tPos, uv); 8 | 9 | vec4 idx = texture2D(tIdx, uv); 10 | 11 | float vertexIDX = idx.x; 12 | float squareIDX = idx.y; 13 | 14 | float sX = 1.0; 15 | float sY = 1.0; 16 | float k = squareIDX; 17 | float timer = time * 0.1; 18 | 19 | float offsetX = (squareIDX + sX * 2.0 * 30.0) * (sin(timer + k) * sin(timer + k) - 0.5); 20 | float offsetY = (squareIDX + sY * 2.0 * 30.0) * sin(timer + k) * cos(timer + k); 21 | 22 | bool isInvalid = false; 23 | if (vertexIDX == 0.0) { 24 | pos.x = 1.0 * sX + offsetX; 25 | pos.y = 1.0 * sY + offsetY; 26 | } else if (vertexIDX == 1.0) { 27 | pos.x = -1.0 * sX + offsetX; 28 | pos.y = 1.0 * sY + offsetY; 29 | } else if (vertexIDX == 2.0) { 30 | pos.x = -1.0 * sX + offsetX; 31 | pos.y = -1.0 * sY + offsetY; 32 | } else if (vertexIDX == 3.0) { 33 | pos.x = 1.0 * sX + offsetX; 34 | pos.y = 1.0 * sY + offsetY; 35 | } else if (vertexIDX == 4.0) { 36 | pos.x = -1.0 * sX + offsetX; 37 | pos.y = -1.0 * sY + offsetY; 38 | } else if (vertexIDX == 5.0) { 39 | pos.x = 1.0 * sX + offsetX; 40 | pos.y = -1.0 * sY + offsetY; 41 | } else { 42 | isInvalid = true; 43 | } 44 | 45 | if (isInvalid) { 46 | pos.w = 0.0; 47 | } else { 48 | pos.w = 1.0; 49 | } 50 | gl_FragColor = pos; 51 | } -------------------------------------------------------------------------------- /public/threejs/examples/jsm/utils/TypedArrayUtils.d.ts: -------------------------------------------------------------------------------- 1 | export namespace TypedArrayUtils { 2 | export function quicksortIP(arr: any[], eleSize: number, orderElement: number): any[]; 3 | 4 | 5 | export class Kdtree { 6 | self: this; 7 | root: Node; 8 | private maxDepth: number; 9 | 10 | constructor(points: Int8Array | Int16Array | Int32Array | Uint8Array | Uint16Array | Uint32Array | Float32Array | Float64Array | Uint8ClampedArray, metric: (a: any, b: any) => number, eleSize: number); 11 | 12 | getPointSet(points: any, pos: number); 13 | 14 | buildTree(): Node; 15 | 16 | getMaxDepth(): number; 17 | 18 | nearest(point: [], maxNodes: number, maxDistance: number): any[]; 19 | 20 | } 21 | 22 | export namespace Kdtree { 23 | export class Node { 24 | obj: any; 25 | left: Node | null; 26 | right: Node | null; 27 | parent: Node; 28 | depth: number; 29 | pos: any; 30 | 31 | constructor(obj: any, depth: number, parent: Node, pos: any) 32 | } 33 | 34 | 35 | export class BinaryHeap { 36 | content: any[]; 37 | scoreFunction: () => any; 38 | 39 | constructor(scoreFunction?: () => any); 40 | } 41 | 42 | export namespace BinaryHeap { 43 | export function push(element: any): void; 44 | 45 | export function pop(): any; 46 | 47 | export function peek(): any; 48 | 49 | export function remove(node: any): any; 50 | 51 | export function size(): number; 52 | 53 | export function bubbleUp(n: number): void; 54 | 55 | export function sinkDown(n: number): void; 56 | } 57 | } 58 | } 59 | -------------------------------------------------------------------------------- /src/vfx/InterfaceService/video-only.js: -------------------------------------------------------------------------------- 1 | import { LinearFilter, VideoTexture, RGBFormat } from 'three' 2 | 3 | export const setup = () => { 4 | var api = {} 5 | 6 | var texture = null 7 | let video = document.createElement('video') 8 | 9 | window.addEventListener('touchstart', () => { 10 | if (video.paused) { 11 | video.play() 12 | } 13 | }) 14 | window.addEventListener('click', () => { 15 | if (video.paused) { 16 | video.play() 17 | } 18 | }) 19 | 20 | navigator.mediaDevices.getUserMedia({ audio: false, video: true }).then((stream) => { 21 | video.autoplay = true 22 | video.muted = true 23 | video.srcObject = stream 24 | video.play() 25 | video.setAttribute('playsinline', true) 26 | texture = new VideoTexture(video) 27 | texture.minFilter = LinearFilter 28 | texture.magFilter = LinearFilter 29 | texture.format = RGBFormat 30 | }) 31 | 32 | api.pause = () => { 33 | if (video.paused) { 34 | video.play() 35 | } else { 36 | video.pause() 37 | } 38 | } 39 | 40 | api.update = () => { 41 | if (texture) { 42 | texture.needsUpdate = true 43 | } 44 | 45 | return { 46 | texture 47 | } 48 | } 49 | return api 50 | } 51 | 52 | /* 53 | var listener = new THREE.AudioListener(); 54 | camera.add( listener ); 55 | 56 | navigator.mediaDevices.getUserMedia( { sound: true, video: false } ).then( handleSuccess ); 57 | 58 | function handleSuccess( stream ) { 59 | 60 | var sound = new THREE.Audio( listener ); 61 | } 62 | */ 63 | -------------------------------------------------------------------------------- /src/vfx/Simulation/GeoShader/vertexer.1/tPos.flower.frag: -------------------------------------------------------------------------------- 1 | uniform float time; 2 | uniform sampler2D tIdx; 3 | void main() { 4 | vec2 cellSize = 1.0 / resolution.xy; 5 | vec2 newCell = gl_FragCoord.xy; 6 | vec2 uv = newCell * cellSize; 7 | vec4 pos = texture2D(tPos, uv); 8 | 9 | vec4 idx = texture2D(tIdx, uv); 10 | 11 | float vertexIDX = idx.x; 12 | float squareIDX = idx.y; 13 | 14 | float sX = 1.0; 15 | float sY = 1.0; 16 | float k = squareIDX; 17 | float timer = time * 0.1; 18 | 19 | float offsetX = (squareIDX + sX * 2.0 * 30.0) * (sin(timer + k) * sin(timer + k) - 0.5); 20 | float offsetY = (squareIDX + sY * 2.0 * 30.0) * sin(timer + k) * cos(timer + k); 21 | 22 | bool isInvalid = false; 23 | if (vertexIDX == 0.0) { 24 | pos.x = 1.0 * sX + offsetX; 25 | pos.y = 1.0 * sY + offsetY; 26 | } else if (vertexIDX == 1.0) { 27 | pos.x = -1.0 * sX + offsetX; 28 | pos.y = 1.0 * sY + offsetY; 29 | } else if (vertexIDX == 2.0) { 30 | pos.x = -1.0 * sX + offsetX; 31 | pos.y = -1.0 * sY + offsetY; 32 | } else if (vertexIDX == 3.0) { 33 | pos.x = 1.0 * sX + offsetX; 34 | pos.y = 1.0 * sY + offsetY; 35 | } else if (vertexIDX == 4.0) { 36 | pos.x = -1.0 * sX + offsetX; 37 | pos.y = -1.0 * sY + offsetY; 38 | } else if (vertexIDX == 5.0) { 39 | pos.x = 1.0 * sX + offsetX; 40 | pos.y = -1.0 * sY + offsetY; 41 | } else { 42 | isInvalid = true; 43 | } 44 | 45 | if (isInvalid) { 46 | pos.w = 0.0; 47 | } else { 48 | pos.w = 1.0; 49 | } 50 | gl_FragColor = pos; 51 | } -------------------------------------------------------------------------------- /src/llui/UINodeTemplates/WireFrameMaterial.vue.txt: -------------------------------------------------------------------------------- 1 | 6 | 7 | 57 | 58 | 61 | -------------------------------------------------------------------------------- /public/threejs/examples/js/nodes/accessors/UVNode.js: -------------------------------------------------------------------------------- 1 | /** 2 | * @author sunag / http://www.sunag.com.br/ 3 | */ 4 | 5 | import { TempNode } from '../core/TempNode.js'; 6 | import { NodeLib } from '../core/NodeLib.js'; 7 | 8 | var vertexDict = [ 'uv', 'uv2' ], 9 | fragmentDict = [ 'vUv', 'vUv2' ]; 10 | 11 | function UVNode( index ) { 12 | 13 | TempNode.call( this, 'v2', { shared: false } ); 14 | 15 | this.index = index || 0; 16 | 17 | } 18 | 19 | UVNode.prototype = Object.create( TempNode.prototype ); 20 | UVNode.prototype.constructor = UVNode; 21 | UVNode.prototype.nodeType = "UV"; 22 | 23 | UVNode.prototype.generate = function ( builder, output ) { 24 | 25 | builder.requires.uv[ this.index ] = true; 26 | 27 | var result = builder.isShader( 'vertex' ) ? vertexDict[ this.index ] : fragmentDict[ this.index ]; 28 | 29 | return builder.format( result, this.getType( builder ), output ); 30 | 31 | }; 32 | 33 | UVNode.prototype.copy = function ( source ) { 34 | 35 | TempNode.prototype.copy.call( this, source ); 36 | 37 | this.index = source.index; 38 | 39 | }; 40 | 41 | UVNode.prototype.toJSON = function ( meta ) { 42 | 43 | var data = this.getJSONNode( meta ); 44 | 45 | if ( ! data ) { 46 | 47 | data = this.createJSONNode( meta ); 48 | 49 | data.index = this.index; 50 | 51 | } 52 | 53 | return data; 54 | 55 | }; 56 | 57 | NodeLib.addKeyword( 'uv', function () { 58 | 59 | return new UVNode(); 60 | 61 | } ); 62 | 63 | NodeLib.addKeyword( 'uv2', function () { 64 | 65 | return new UVNode( 1 ); 66 | 67 | } ); 68 | 69 | export { UVNode }; 70 | -------------------------------------------------------------------------------- /src/views/iGraphDemo.vue: -------------------------------------------------------------------------------- 1 | 6 | 7 | 51 | 52 | 60 | -------------------------------------------------------------------------------- /public/threejs/examples/js/shaders/VignetteShader.js: -------------------------------------------------------------------------------- 1 | /** 2 | * @author alteredq / http://alteredqualia.com/ 3 | * 4 | * Vignette shader 5 | * based on PaintEffect postprocess from ro.me 6 | * http://code.google.com/p/3-dreams-of-black/source/browse/deploy/js/effects/PaintEffect.js 7 | */ 8 | 9 | THREE.VignetteShader = { 10 | 11 | uniforms: { 12 | 13 | "tDiffuse": { value: null }, 14 | "offset": { value: 1.0 }, 15 | "darkness": { value: 1.0 } 16 | 17 | }, 18 | 19 | vertexShader: [ 20 | 21 | "varying vec2 vUv;", 22 | 23 | "void main() {", 24 | 25 | "vUv = uv;", 26 | "gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );", 27 | 28 | "}" 29 | 30 | ].join( "\n" ), 31 | 32 | fragmentShader: [ 33 | 34 | "uniform float offset;", 35 | "uniform float darkness;", 36 | 37 | "uniform sampler2D tDiffuse;", 38 | 39 | "varying vec2 vUv;", 40 | 41 | "void main() {", 42 | 43 | // Eskil's vignette 44 | 45 | "vec4 texel = texture2D( tDiffuse, vUv );", 46 | "vec2 uv = ( vUv - vec2( 0.5 ) ) * vec2( offset );", 47 | "gl_FragColor = vec4( mix( texel.rgb, vec3( 1.0 - darkness ), dot( uv, uv ) ), texel.a );", 48 | 49 | /* 50 | // alternative version from glfx.js 51 | // this one makes more "dusty" look (as opposed to "burned") 52 | 53 | "vec4 color = texture2D( tDiffuse, vUv );", 54 | "float dist = distance( vUv, vec2( 0.5 ) );", 55 | "color.rgb *= smoothstep( 0.8, offset * 0.799, dist *( darkness + offset ) );", 56 | "gl_FragColor = color;", 57 | */ 58 | 59 | "}" 60 | 61 | ].join( "\n" ) 62 | 63 | }; 64 | -------------------------------------------------------------------------------- /public/threejs/examples/js/nodes/accessors/ScreenUVNode.js: -------------------------------------------------------------------------------- 1 | /** 2 | * @author sunag / http://www.sunag.com.br/ 3 | */ 4 | 5 | import { TempNode } from '../core/TempNode.js'; 6 | import { ResolutionNode } from './ResolutionNode.js'; 7 | 8 | function ScreenUVNode( resolution ) { 9 | 10 | TempNode.call( this, 'v2' ); 11 | 12 | this.resolution = resolution || new ResolutionNode(); 13 | 14 | } 15 | 16 | ScreenUVNode.prototype = Object.create( TempNode.prototype ); 17 | ScreenUVNode.prototype.constructor = ScreenUVNode; 18 | ScreenUVNode.prototype.nodeType = "ScreenUV"; 19 | 20 | ScreenUVNode.prototype.generate = function ( builder, output ) { 21 | 22 | var result; 23 | 24 | if ( builder.isShader( 'fragment' ) ) { 25 | 26 | result = '( gl_FragCoord.xy / ' + this.resolution.build( builder, 'v2' ) + ')'; 27 | 28 | } else { 29 | 30 | console.warn( "THREE.ScreenUVNode is not compatible with " + builder.shader + " shader." ); 31 | 32 | result = 'vec2( 0.0 )'; 33 | 34 | } 35 | 36 | return builder.format( result, this.getType( builder ), output ); 37 | 38 | }; 39 | 40 | ScreenUVNode.prototype.copy = function ( source ) { 41 | 42 | TempNode.prototype.copy.call( this, source ); 43 | 44 | this.resolution = source.resolution; 45 | 46 | }; 47 | 48 | ScreenUVNode.prototype.toJSON = function ( meta ) { 49 | 50 | var data = this.getJSONNode( meta ); 51 | 52 | if ( ! data ) { 53 | 54 | data = this.createJSONNode( meta ); 55 | 56 | data.resolution = this.resolution.toJSON( meta ).uuid; 57 | 58 | } 59 | 60 | return data; 61 | 62 | }; 63 | 64 | export { ScreenUVNode }; 65 | 66 | -------------------------------------------------------------------------------- /public/threejs/examples/js/shaders/BleachBypassShader.js: -------------------------------------------------------------------------------- 1 | /** 2 | * @author alteredq / http://alteredqualia.com/ 3 | * 4 | * Bleach bypass shader [http://en.wikipedia.org/wiki/Bleach_bypass] 5 | * - based on Nvidia example 6 | * http://developer.download.nvidia.com/shaderlibrary/webpages/shader_library.html#post_bleach_bypass 7 | */ 8 | 9 | THREE.BleachBypassShader = { 10 | 11 | uniforms: { 12 | 13 | "tDiffuse": { value: null }, 14 | "opacity": { value: 1.0 } 15 | 16 | }, 17 | 18 | vertexShader: [ 19 | 20 | "varying vec2 vUv;", 21 | 22 | "void main() {", 23 | 24 | "vUv = uv;", 25 | "gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );", 26 | 27 | "}" 28 | 29 | ].join( "\n" ), 30 | 31 | fragmentShader: [ 32 | 33 | "uniform float opacity;", 34 | 35 | "uniform sampler2D tDiffuse;", 36 | 37 | "varying vec2 vUv;", 38 | 39 | "void main() {", 40 | 41 | "vec4 base = texture2D( tDiffuse, vUv );", 42 | 43 | "vec3 lumCoeff = vec3( 0.25, 0.65, 0.1 );", 44 | "float lum = dot( lumCoeff, base.rgb );", 45 | "vec3 blend = vec3( lum );", 46 | 47 | "float L = min( 1.0, max( 0.0, 10.0 * ( lum - 0.45 ) ) );", 48 | 49 | "vec3 result1 = 2.0 * base.rgb * blend;", 50 | "vec3 result2 = 1.0 - 2.0 * ( 1.0 - blend ) * ( 1.0 - base.rgb );", 51 | 52 | "vec3 newColor = mix( result1, result2, L );", 53 | 54 | "float A2 = opacity * base.a;", 55 | "vec3 mixRGB = A2 * newColor.rgb;", 56 | "mixRGB += ( ( 1.0 - A2 ) * base.rgb );", 57 | 58 | "gl_FragColor = vec4( mixRGB, base.a );", 59 | 60 | "}" 61 | 62 | ].join( "\n" ) 63 | 64 | }; 65 | -------------------------------------------------------------------------------- /public/threejs/examples/js/shaders/DotScreenShader.js: -------------------------------------------------------------------------------- 1 | /** 2 | * @author alteredq / http://alteredqualia.com/ 3 | * 4 | * Dot screen shader 5 | * based on glfx.js sepia shader 6 | * https://github.com/evanw/glfx.js 7 | */ 8 | 9 | THREE.DotScreenShader = { 10 | 11 | uniforms: { 12 | 13 | "tDiffuse": { value: null }, 14 | "tSize": { value: new THREE.Vector2( 256, 256 ) }, 15 | "center": { value: new THREE.Vector2( 0.5, 0.5 ) }, 16 | "angle": { value: 1.57 }, 17 | "scale": { value: 1.0 } 18 | 19 | }, 20 | 21 | vertexShader: [ 22 | 23 | "varying vec2 vUv;", 24 | 25 | "void main() {", 26 | 27 | "vUv = uv;", 28 | "gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );", 29 | 30 | "}" 31 | 32 | ].join( "\n" ), 33 | 34 | fragmentShader: [ 35 | 36 | "uniform vec2 center;", 37 | "uniform float angle;", 38 | "uniform float scale;", 39 | "uniform vec2 tSize;", 40 | 41 | "uniform sampler2D tDiffuse;", 42 | 43 | "varying vec2 vUv;", 44 | 45 | "float pattern() {", 46 | 47 | "float s = sin( angle ), c = cos( angle );", 48 | 49 | "vec2 tex = vUv * tSize - center;", 50 | "vec2 point = vec2( c * tex.x - s * tex.y, s * tex.x + c * tex.y ) * scale;", 51 | 52 | "return ( sin( point.x ) * sin( point.y ) ) * 4.0;", 53 | 54 | "}", 55 | 56 | "void main() {", 57 | 58 | "vec4 color = texture2D( tDiffuse, vUv );", 59 | 60 | "float average = ( color.r + color.g + color.b ) / 3.0;", 61 | 62 | "gl_FragColor = vec4( vec3( average * 10.0 - 5.0 + pattern() ), color.a );", 63 | 64 | "}" 65 | 66 | ].join( "\n" ) 67 | 68 | }; 69 | -------------------------------------------------------------------------------- /src/llui/UINodeTemplates/Scene.vue.txt: -------------------------------------------------------------------------------- 1 | 6 | 7 | 62 | 63 | 66 | -------------------------------------------------------------------------------- /src/views/css/idot.css: -------------------------------------------------------------------------------- 1 | 2 | .main-title{ 3 | font-size: 50px; 4 | } 5 | .sub-tile{ 6 | margin-bottom: 30px; 7 | } 8 | .project-item{ 9 | position: relative; 10 | } 11 | 12 | .project-item-line{ 13 | position: absolute; 14 | top: 0px; 15 | left: -40px; 16 | width: 3px; 17 | height: calc(100% + 50px + 5px); 18 | background-color: black; 19 | background: linear-gradient(black, white, black); 20 | background-size: 100% 300%; 21 | background-position-y: 0%; 22 | transition: background-position 1s; 23 | } 24 | .project-item:hover .project-item-line{ 25 | background-position-y: -150%; 26 | } 27 | .project-item-ball{ 28 | position: absolute; 29 | top: 0px; 30 | left: calc(-40px - 50px / 2 + 1.5px); 31 | width: 50px; 32 | height: 50px; 33 | background-color: black; 34 | /* background: linear-gradient(180deg, black, white, hotpink, white, black, white); */ 35 | 36 | /* background: linear-gradient(90deg, cyan, lime, cyan, hotpink, cyan, lime, cyan); */ 37 | border-radius: 50%; 38 | background-size: 400% 400%; 39 | background-position-x: 0%; 40 | transition: background-position 1s; 41 | } 42 | .project-item-ball{ 43 | transition: background-position 1s; 44 | } 45 | .project-item:hover .project-item-ball{ 46 | background-position-y: 400%; 47 | } 48 | .project-item-ball:before{ 49 | content: ''; 50 | display: block; 51 | position: absolute; 52 | width: 42px; 53 | height: 42px; 54 | background: white; 55 | border-radius: 50%; 56 | top: 4px; 57 | left: 4px; 58 | transition: opacity 1s; 59 | opacity: 1; 60 | } 61 | .project-item:hover .project-item-ball:before{ 62 | opacity: 0.0; 63 | } -------------------------------------------------------------------------------- /public/threejs/examples/js/nodes/procedural/NoiseNode.js: -------------------------------------------------------------------------------- 1 | /** 2 | * @author sunag / http://www.sunag.com.br/ 3 | */ 4 | 5 | import { TempNode } from '../core/TempNode.js'; 6 | import { FunctionNode } from '../core/FunctionNode.js'; 7 | import { UVNode } from '../accessors/UVNode.js'; 8 | 9 | function NoiseNode( uv ) { 10 | 11 | TempNode.call( this, 'f' ); 12 | 13 | this.uv = uv || new UVNode(); 14 | 15 | } 16 | 17 | NoiseNode.prototype = Object.create( TempNode.prototype ); 18 | NoiseNode.prototype.constructor = NoiseNode; 19 | NoiseNode.prototype.nodeType = "Noise"; 20 | 21 | NoiseNode.Nodes = ( function () { 22 | 23 | var snoise = new FunctionNode( [ 24 | "float snoise(vec2 co) {", 25 | 26 | " return fract( sin( dot( co.xy, vec2( 12.9898, 78.233 ) ) ) * 43758.5453 );", 27 | 28 | "}" 29 | ].join( "\n" ) ); 30 | 31 | return { 32 | snoise: snoise 33 | }; 34 | 35 | } )(); 36 | 37 | NoiseNode.prototype.generate = function ( builder, output ) { 38 | 39 | var snoise = builder.include( NoiseNode.Nodes.snoise ); 40 | 41 | return builder.format( snoise + '( ' + this.uv.build( builder, 'v2' ) + ' )', this.getType( builder ), output ); 42 | 43 | }; 44 | 45 | NoiseNode.prototype.copy = function ( source ) { 46 | 47 | TempNode.prototype.copy.call( this, source ); 48 | 49 | this.uv = source.uv; 50 | 51 | }; 52 | 53 | NoiseNode.prototype.toJSON = function ( meta ) { 54 | 55 | var data = this.getJSONNode( meta ); 56 | 57 | if ( ! data ) { 58 | 59 | data = this.createJSONNode( meta ); 60 | 61 | data.uv = this.uv.toJSON( meta ).uuid; 62 | 63 | } 64 | 65 | return data; 66 | 67 | }; 68 | 69 | export { NoiseNode }; 70 | --------------------------------------------------------------------------------