From 347711eb399765b0066c92485dea3425361dd17c Mon Sep 17 00:00:00 2001 From: madegryc pc Date: Sat, 24 Aug 2024 12:00:26 +0200 Subject: [PATCH] Site : - Fix tele screen --- site/interface/site/home3D/Screen.js | 6 +- site/interface/site/home3D/home3D.js | 6 +- site/interface/site/index.html | 3 +- site/interface/site/login/createConnectDiv.js | 229 ----- site/interface/site/main.js | 4 +- .../node_modules/.vite/deps/_metadata.json | 68 +- .../node_modules/.vite/deps/chunk-D6CDVL7U.js | 53 - .../.vite/deps/chunk-D6CDVL7U.js.map | 7 - .../node_modules/.vite/deps/chunk-OLTXGRDG.js | 44 - .../.vite/deps/chunk-OLTXGRDG.js.map | 7 - ...s_jsm_postprocessing_EffectComposer__js.js | 89 +- ...m_postprocessing_EffectComposer__js.js.map | 6 +- ...xamples_jsm_postprocessing_SSAOPass__js.js | 938 ------------------ ...les_jsm_postprocessing_SSAOPass__js.js.map | 7 - ...mples_jsm_postprocessing_ShaderPass__js.js | 9 - ...s_jsm_postprocessing_ShaderPass__js.js.map | 7 - ..._jsm_postprocessing_UnrealBloomPass__js.js | 331 ------ ..._postprocessing_UnrealBloomPass__js.js.map | 7 - ...es_jsm_shaders_HorizontalBlurShader__js.js | 52 - ...sm_shaders_HorizontalBlurShader__js.js.map | 7 - ...ples_jsm_shaders_VerticalBlurShader__js.js | 52 - ..._jsm_shaders_VerticalBlurShader__js.js.map | 7 - site/interface/site/style/home.css | 5 +- 23 files changed, 113 insertions(+), 1831 deletions(-) delete mode 100644 site/interface/site/login/createConnectDiv.js delete mode 100644 site/interface/site/node_modules/.vite/deps/chunk-D6CDVL7U.js delete mode 100644 site/interface/site/node_modules/.vite/deps/chunk-D6CDVL7U.js.map delete mode 100644 site/interface/site/node_modules/.vite/deps/chunk-OLTXGRDG.js delete mode 100644 site/interface/site/node_modules/.vite/deps/chunk-OLTXGRDG.js.map delete mode 100644 site/interface/site/node_modules/.vite/deps/three_examples_jsm_postprocessing_SSAOPass__js.js delete mode 100644 site/interface/site/node_modules/.vite/deps/three_examples_jsm_postprocessing_SSAOPass__js.js.map delete mode 100644 site/interface/site/node_modules/.vite/deps/three_examples_jsm_postprocessing_ShaderPass__js.js delete mode 100644 site/interface/site/node_modules/.vite/deps/three_examples_jsm_postprocessing_ShaderPass__js.js.map delete mode 100644 site/interface/site/node_modules/.vite/deps/three_examples_jsm_postprocessing_UnrealBloomPass__js.js delete mode 100644 site/interface/site/node_modules/.vite/deps/three_examples_jsm_postprocessing_UnrealBloomPass__js.js.map delete mode 100644 site/interface/site/node_modules/.vite/deps/three_examples_jsm_shaders_HorizontalBlurShader__js.js delete mode 100644 site/interface/site/node_modules/.vite/deps/three_examples_jsm_shaders_HorizontalBlurShader__js.js.map delete mode 100644 site/interface/site/node_modules/.vite/deps/three_examples_jsm_shaders_VerticalBlurShader__js.js delete mode 100644 site/interface/site/node_modules/.vite/deps/three_examples_jsm_shaders_VerticalBlurShader__js.js.map diff --git a/site/interface/site/home3D/Screen.js b/site/interface/site/home3D/Screen.js index 9eb874c..f7d273a 100644 --- a/site/interface/site/home3D/Screen.js +++ b/site/interface/site/home3D/Screen.js @@ -3,10 +3,10 @@ /* ::: :::::::: */ /* Screen.js :+: :+: :+: */ /* +:+ +:+ +:+ */ -/* By: edbernar +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2024/08/22 23:13:53 by edbernar #+# #+# */ -/* Updated: 2024/08/24 02:36:42 by edbernar ### ########.fr */ +/* Updated: 2024/08/24 11:39:09 by marvin ### ########.fr */ /* */ /* ************************************************************************** */ @@ -65,7 +65,7 @@ class Screen vertices[i + 2] = height; } positionAttribute.needsUpdate = true; - mesh.scale.set(0.4, 0.4); + mesh.scale.set(0.41, 0.42); mesh.position.set(-0.155, 1.2, 1.15); mesh.rotation.x = Math.PI + 0.05; mesh.rotation.z = Math.PI; diff --git a/site/interface/site/home3D/home3D.js b/site/interface/site/home3D/home3D.js index 6a2b1b4..d482ec4 100644 --- a/site/interface/site/home3D/home3D.js +++ b/site/interface/site/home3D/home3D.js @@ -3,10 +3,10 @@ /* ::: :::::::: */ /* home3D.js :+: :+: :+: */ /* +:+ +:+ +:+ */ -/* By: edbernar +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2024/08/22 17:19:17 by edbernar #+# #+# */ -/* Updated: 2024/08/24 02:46:49 by edbernar ### ########.fr */ +/* Updated: 2024/08/24 11:41:18 by marvin ### ########.fr */ /* */ /* ************************************************************************** */ @@ -20,7 +20,7 @@ import { BokehPass } from 'three/examples/jsm/postprocessing/BokehPass.js'; const scene = new THREE.Scene(); const renderer = new THREE.WebGLRenderer({antialias: true}); const camera = new THREE.PerspectiveCamera(60, window.innerWidth / window.innerHeight); -const ambiantLight = new THREE.AmbientLight(0xffffff, 3); +const ambiantLight = new THREE.AmbientLight(0xffffff, 35); const screen = new Screen(scene); const cube = createCube(); diff --git a/site/interface/site/index.html b/site/interface/site/index.html index 922d511..69c724d 100644 --- a/site/interface/site/index.html +++ b/site/interface/site/index.html @@ -32,7 +32,7 @@
-

Acces to a new WORLD

+

Access to a new WORLD

@@ -51,7 +51,6 @@

Or

-
diff --git a/site/interface/site/login/createConnectDiv.js b/site/interface/site/login/createConnectDiv.js deleted file mode 100644 index 458d3df..0000000 --- a/site/interface/site/login/createConnectDiv.js +++ /dev/null @@ -1,229 +0,0 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* createConnectDiv.js :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: madegryc +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2024/08/07 18:14:53 by edbernar #+# #+# */ -/* Updated: 2024/08/13 17:19:04 by madegryc ### ########.fr */ -/* */ -/* ************************************************************************** */ - -import { userMeInfo, waitForLogin } from "../typeResponse/typeLogin.js"; -import { createNotification as CN } from "../notification/main.js"; -import { sendRequest } from "../websocket.js"; -import { showLoginDiv, showMenu } from "./main.js"; - -/* - Todo (Eddy) : - - ajouter un message de confirmation de création de compte et un message d'erreur - - une fleche pour revenir en arriere - - remettre sur l'ecran de login quand le compte est créé - - ajouter l'envoi d'un mail de confirmation - - Empecher les requetes de connexion si un champ est vide - - Ajouter un message d'erreur si le mail est invalide - - Connexion par 42 -*/ - -let url42 = "https://api.intra.42.fr/oauth/authorize?client_id=u-s4t2ud-d9d6d46bd0be36dc13718981df4bfcf37e574ea364a07fcb5c39658be0f5706c&redirect_uri=http%3A%2F%2F127.0.0.1%3A5500%2Fsite%2F&response_type=code"; - -function createConnectDiv(divLogin) -{ - const form = document.createElement("form"); - const divConnect = document.createElement("div"); - const inputLogin = document.createElement("input"); - const inputPass = document.createElement("input"); - const buttonLogin = createButton(inputLogin, inputPass); - const buttonConnect42 = document.createElement("button"); - - const mailText = document.createElement("p"); - const passText = document.createElement("p"); - const MainText = document.createElement("h1"); - const newPlayerText = document.createElement("p"); - const createAccText = document.createElement("p"); - const newAccDiv = document.createElement("div"); - const divCenter = document.createElement("div"); - const orText = document.createElement("p"); - - addGlobalBg(); - MainText.innerText = "Access to a new WORLD"; - MainText.setAttribute("id", "mainText"); - mailText.innerText = "Email"; - passText.innerText = "Password"; - newPlayerText.innerText = "New Player ?"; - newPlayerText.setAttribute("id", "newPlayerText") - createAccText.innerText = "Create an account"; - createAccText.setAttribute("id", "createAccText") - createAccText.addEventListener("mousedown", () => { - createButtonNewAcc(divConnect, divLogin); - }); - newAccDiv.setAttribute("id", "newAccDiv"); - divConnect.setAttribute("id", "connectDiv"); - inputLogin.setAttribute("type", "text"); - inputLogin.setAttribute("id", "inputLogin"); - inputLogin.setAttribute("placeholder", "login"); - inputLogin.setAttribute("autocomplete", "username"); - inputPass.setAttribute("type", "password"); - inputPass.setAttribute("id", "inputPassword"); - inputPass.setAttribute("autocomplete", "current-password"); - inputPass.setAttribute("placeholder", "password"); - buttonLogin.innerHTML = "Login"; - buttonLogin.setAttribute("id", "styleButton"); - orText.innerText = "▬▬▬▬▬▬▬▬ ㅤ Or ㅤ ▬▬▬▬▬▬▬▬"; - orText.setAttribute("id", "orText"); - buttonConnect42.innerHTML = "Log with 42"; - buttonConnect42.setAttribute("id", "styleButton42") - divConnect.appendChild(MainText); - form.appendChild(mailText); - form.appendChild(inputLogin); - form.appendChild(passText); - form.appendChild(inputPass); - form.appendChild(buttonLogin); - newAccDiv.appendChild(newPlayerText); - newAccDiv.appendChild(createAccText); - form.appendChild(newAccDiv); - form.appendChild(orText); - form.appendChild(buttonConnect42); - divCenter.appendChild(form); - divCenter.setAttribute("id", "divCenter"); - divConnect.appendChild(divCenter); - form.addEventListener('submit', (e) => { - e.preventDefault(); - buttonLogin.click(); - }); - buttonConnect42.addEventListener('click', (e) => { - e.preventDefault(); - window.location.replace(url42); - }); - return (divConnect); -} - -function addGlobalBg() -{ - const globalBg = document.createElement("div"); - - globalBg.setAttribute("id", "globalBg"); - document.body.appendChild(globalBg); -} - -async function hashPassword(password) -{ - const encoder = new TextEncoder(); - const data = encoder.encode(password); - const hash = await crypto.subtle.digest('SHA-256', data); - const hashArray = Array.from(new Uint8Array(hash)); - const hashHex = hashArray.map(b => b.toString(16).padStart(2, '0')).join(''); - - return (hashHex); -} - -function createButton(inputLogin, inputPass) -{ - const loginButton = document.getElementById('loginButton'); - const pLoginButton = loginButton.getElementsByTagName('p')[0]; - const button = document.createElement("button"); - let usernameNode = null; - let hashedPass = null; - - button.addEventListener('click', (e) => { - e.preventDefault(); - hashPassword(inputPass.value).then((hash) => { - hashedPass = hash; - sendRequest("login", {type: "byPass", mail: inputLogin.value, password: hashedPass}); - waitForLogin().then((token) => { - usernameNode = document.createTextNode(userMeInfo.username); - loginButton.replaceChild(usernameNode, pLoginButton); - CN.new("Connected successfully", "Welcome " + userMeInfo.username, CN.defaultIcon.success); - document.getElementById("loginDiv").remove(); - document.getElementById("globalBg").remove(); - document.cookie = "token={" + token + "}; path=/; Secure; SameSite=Strict; max-age=3600"; - document.getElementById('loginButton').removeEventListener('click', showLoginDiv); - document.getElementById('loginButton').addEventListener('click', showMenu); - }); - }).catch((err) => { - CN.new("Error", "An error occured while trying to connect", CN.defaultIcon.error); - }); - }); - return (button); -} - -function createButtonNewAcc(divConnect, divLogin) -{ - const newDiv = document.createElement("div"); - const inputUsername = document.createElement("input"); - const inputMail = document.createElement("input"); - const inputPass = document.createElement("input"); - const inputPass2 = document.createElement("input"); - const buttonCreate = document.createElement("button"); - const form = document.createElement("form"); - - newDiv.setAttribute("id", "connectDiv"); - inputUsername.setAttribute("type", "text"); - inputUsername.setAttribute("placeholder", "username"); - inputUsername.setAttribute("autocomplete", "username"); - inputMail.setAttribute("type", "text"); - inputMail.setAttribute("placeholder", "mail"); - inputMail.setAttribute("autocomplete", "email"); - inputPass.setAttribute("type", "password"); - inputPass.setAttribute("placeholder", "password"); - inputPass.setAttribute("autocomplete", "new-password"); - inputPass2.setAttribute("type", "password"); - inputPass2.setAttribute("placeholder", "confirm password"); - inputPass2.setAttribute("autocomplete", "new-password"); - buttonCreate.innerHTML = "Create"; - form.appendChild(inputMail); - form.appendChild(inputUsername); - form.appendChild(inputPass); - form.appendChild(inputPass2); - form.appendChild(buttonCreate); - newDiv.appendChild(form); - buttonCreate.addEventListener('click', createNewAccount); - form.addEventListener('submit', (e) => { - e.preventDefault(); - buttonCreate.click(); - }); - divConnect.remove(); - divLogin.appendChild(newDiv); -} - -function createNewAccount(e) -{ - const inputMail = document.getElementsByTagName("input")[0]; - const inputUsername = document.getElementsByTagName("input")[1]; - const inputPass = document.getElementsByTagName("input")[2]; - const inputPass2 = document.getElementsByTagName("input")[3]; - - e.preventDefault(); - if (inputMail.value.indexOf('@') === -1 || inputMail.value.indexOf('.') === -1) - { - console.log(inputMail.value); - CN.new("Error", "Invalid mail", CN.defaultIcon.error); - } - else if (inputUsername.value.length < 3) - CN.new("Error", "Username must be at least 3 characters long", CN.defaultIcon.error); - else if (inputUsername.value.length > 20) - CN.new("Error", "Username must be at most 20 characters long", CN.defaultIcon.error); - else if (inputUsername.value.search(' ') !== -1) - CN.new("Error", "Username must not contain spaces", CN.defaultIcon.error); - else if (inputUsername.value.search(/[^a-zA-Z0-9]/) !== -1) - CN.new("Error", "Username must contain only letters and numbers", CN.defaultIcon.error); - else if (inputPass.value.length < 8) - CN.new("Error", "Password must be at least 8 characters long", CN.defaultIcon.error); - else if (inputPass.value !== inputPass2.value) - CN.new("Error", "Passwords do not match", CN.defaultIcon.error); - else if (inputPass.value.search(/[a-z]/) === -1 || inputPass.value.search(/[A-Z]/) === -1 || inputPass.value.search(/[0-9]/) === -1) - CN.new("Error", "Password must contain at least one lowercase letter, one uppercase letter and one number", CN.defaultIcon.error); - else if (inputPass.value.search(inputUsername.value) !== -1) - CN.new("Error", "Password must not contain the username", CN.defaultIcon.error); - else - { - hashPassword(inputPass.value).then((hash) => { - sendRequest("create_account", {username: inputUsername.value, mail: inputMail.value, password: hash}); - }).catch((err) => { - CN.new("Error", "An error occured while trying to create a new account", CN.defaultIcon.error); - }); - } -} - -export { createConnectDiv }; \ No newline at end of file diff --git a/site/interface/site/main.js b/site/interface/site/main.js index 208cdd0..0538bab 100644 --- a/site/interface/site/main.js +++ b/site/interface/site/main.js @@ -3,10 +3,10 @@ /* ::: :::::::: */ /* main.js :+: :+: :+: */ /* +:+ +:+ +:+ */ -/* By: edbernar +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2024/07/30 13:50:35 by edbernar #+# #+# */ -/* Updated: 2024/08/23 23:36:33 by edbernar ### ########.fr */ +/* Updated: 2024/08/24 11:57:47 by marvin ### ########.fr */ /* */ /* ************************************************************************** */ diff --git a/site/interface/site/node_modules/.vite/deps/_metadata.json b/site/interface/site/node_modules/.vite/deps/_metadata.json index b32f545..f6d7604 100644 --- a/site/interface/site/node_modules/.vite/deps/_metadata.json +++ b/site/interface/site/node_modules/.vite/deps/_metadata.json @@ -1,77 +1,41 @@ { - "hash": "86ff4072", - "configHash": "2420ea4a", + "hash": "44aef43e", + "configHash": "da99a08f", "lockfileHash": "7685a2f8", - "browserHash": "aad3db38", + "browserHash": "e0102bd3", "optimized": { "three": { "src": "../../three/build/three.module.js", "file": "three.js", - "fileHash": "f6b8584f", + "fileHash": "b1c96f0f", "needsInterop": false }, "three/addons/loaders/GLTFLoader.js": { "src": "../../three/examples/jsm/loaders/GLTFLoader.js", "file": "three_addons_loaders_GLTFLoader__js.js", - "fileHash": "35494c7f", - "needsInterop": false - }, - "three/examples/jsm/postprocessing/EffectComposer.js": { - "src": "../../three/examples/jsm/postprocessing/EffectComposer.js", - "file": "three_examples_jsm_postprocessing_EffectComposer__js.js", - "fileHash": "7753c0a1", - "needsInterop": false - }, - "three/examples/jsm/postprocessing/RenderPass.js": { - "src": "../../three/examples/jsm/postprocessing/RenderPass.js", - "file": "three_examples_jsm_postprocessing_RenderPass__js.js", - "fileHash": "1a306bae", - "needsInterop": false - }, - "three/examples/jsm/postprocessing/ShaderPass.js": { - "src": "../../three/examples/jsm/postprocessing/ShaderPass.js", - "file": "three_examples_jsm_postprocessing_ShaderPass__js.js", - "fileHash": "22bec74b", - "needsInterop": false - }, - "three/examples/jsm/postprocessing/UnrealBloomPass.js": { - "src": "../../three/examples/jsm/postprocessing/UnrealBloomPass.js", - "file": "three_examples_jsm_postprocessing_UnrealBloomPass__js.js", - "fileHash": "7a96d06c", - "needsInterop": false - }, - "three/examples/jsm/shaders/HorizontalBlurShader.js": { - "src": "../../three/examples/jsm/shaders/HorizontalBlurShader.js", - "file": "three_examples_jsm_shaders_HorizontalBlurShader__js.js", - "fileHash": "d8a23bdf", - "needsInterop": false - }, - "three/examples/jsm/shaders/VerticalBlurShader.js": { - "src": "../../three/examples/jsm/shaders/VerticalBlurShader.js", - "file": "three_examples_jsm_shaders_VerticalBlurShader__js.js", - "fileHash": "fdb8cde0", + "fileHash": "cfe30105", "needsInterop": false }, "three/examples/jsm/postprocessing/BokehPass.js": { "src": "../../three/examples/jsm/postprocessing/BokehPass.js", "file": "three_examples_jsm_postprocessing_BokehPass__js.js", - "fileHash": "915505f2", + "fileHash": "99b44bd7", "needsInterop": false }, - "three/examples/jsm/postprocessing/SSAOPass.js": { - "src": "../../three/examples/jsm/postprocessing/SSAOPass.js", - "file": "three_examples_jsm_postprocessing_SSAOPass__js.js", - "fileHash": "3f06867f", + "three/examples/jsm/postprocessing/EffectComposer.js": { + "src": "../../three/examples/jsm/postprocessing/EffectComposer.js", + "file": "three_examples_jsm_postprocessing_EffectComposer__js.js", + "fileHash": "113be6c6", + "needsInterop": false + }, + "three/examples/jsm/postprocessing/RenderPass.js": { + "src": "../../three/examples/jsm/postprocessing/RenderPass.js", + "file": "three_examples_jsm_postprocessing_RenderPass__js.js", + "fileHash": "9b0442c1", "needsInterop": false } }, "chunks": { - "chunk-D6CDVL7U": { - "file": "chunk-D6CDVL7U.js" - }, - "chunk-OLTXGRDG": { - "file": "chunk-OLTXGRDG.js" - }, "chunk-JHQAMVLY": { "file": "chunk-JHQAMVLY.js" }, diff --git a/site/interface/site/node_modules/.vite/deps/chunk-D6CDVL7U.js b/site/interface/site/node_modules/.vite/deps/chunk-D6CDVL7U.js deleted file mode 100644 index fd0fb4d..0000000 --- a/site/interface/site/node_modules/.vite/deps/chunk-D6CDVL7U.js +++ /dev/null @@ -1,53 +0,0 @@ -import { - FullScreenQuad, - Pass -} from "./chunk-JHQAMVLY.js"; -import { - ShaderMaterial, - UniformsUtils -} from "./chunk-IS2ZBFBB.js"; - -// node_modules/three/examples/jsm/postprocessing/ShaderPass.js -var ShaderPass = class extends Pass { - constructor(shader, textureID) { - super(); - this.textureID = textureID !== void 0 ? textureID : "tDiffuse"; - if (shader instanceof ShaderMaterial) { - this.uniforms = shader.uniforms; - this.material = shader; - } else if (shader) { - this.uniforms = UniformsUtils.clone(shader.uniforms); - this.material = new ShaderMaterial({ - name: shader.name !== void 0 ? shader.name : "unspecified", - defines: Object.assign({}, shader.defines), - uniforms: this.uniforms, - vertexShader: shader.vertexShader, - fragmentShader: shader.fragmentShader - }); - } - this.fsQuad = new FullScreenQuad(this.material); - } - render(renderer, writeBuffer, readBuffer) { - if (this.uniforms[this.textureID]) { - this.uniforms[this.textureID].value = readBuffer.texture; - } - this.fsQuad.material = this.material; - if (this.renderToScreen) { - renderer.setRenderTarget(null); - this.fsQuad.render(renderer); - } else { - renderer.setRenderTarget(writeBuffer); - if (this.clear) renderer.clear(renderer.autoClearColor, renderer.autoClearDepth, renderer.autoClearStencil); - this.fsQuad.render(renderer); - } - } - dispose() { - this.material.dispose(); - this.fsQuad.dispose(); - } -}; - -export { - ShaderPass -}; -//# sourceMappingURL=chunk-D6CDVL7U.js.map diff --git a/site/interface/site/node_modules/.vite/deps/chunk-D6CDVL7U.js.map b/site/interface/site/node_modules/.vite/deps/chunk-D6CDVL7U.js.map deleted file mode 100644 index 657350d..0000000 --- a/site/interface/site/node_modules/.vite/deps/chunk-D6CDVL7U.js.map +++ /dev/null @@ -1,7 +0,0 @@ -{ - "version": 3, - "sources": ["../../three/examples/jsm/postprocessing/ShaderPass.js"], - "sourcesContent": ["import {\n\tShaderMaterial,\n\tUniformsUtils\n} from 'three';\nimport { Pass, FullScreenQuad } from './Pass.js';\n\nclass ShaderPass extends Pass {\n\n\tconstructor( shader, textureID ) {\n\n\t\tsuper();\n\n\t\tthis.textureID = ( textureID !== undefined ) ? textureID : 'tDiffuse';\n\n\t\tif ( shader instanceof ShaderMaterial ) {\n\n\t\t\tthis.uniforms = shader.uniforms;\n\n\t\t\tthis.material = shader;\n\n\t\t} else if ( shader ) {\n\n\t\t\tthis.uniforms = UniformsUtils.clone( shader.uniforms );\n\n\t\t\tthis.material = new ShaderMaterial( {\n\n\t\t\t\tname: ( shader.name !== undefined ) ? shader.name : 'unspecified',\n\t\t\t\tdefines: Object.assign( {}, shader.defines ),\n\t\t\t\tuniforms: this.uniforms,\n\t\t\t\tvertexShader: shader.vertexShader,\n\t\t\t\tfragmentShader: shader.fragmentShader\n\n\t\t\t} );\n\n\t\t}\n\n\t\tthis.fsQuad = new FullScreenQuad( this.material );\n\n\t}\n\n\trender( renderer, writeBuffer, readBuffer /*, deltaTime, maskActive */ ) {\n\n\t\tif ( this.uniforms[ this.textureID ] ) {\n\n\t\t\tthis.uniforms[ this.textureID ].value = readBuffer.texture;\n\n\t\t}\n\n\t\tthis.fsQuad.material = this.material;\n\n\t\tif ( this.renderToScreen ) {\n\n\t\t\trenderer.setRenderTarget( null );\n\t\t\tthis.fsQuad.render( renderer );\n\n\t\t} else {\n\n\t\t\trenderer.setRenderTarget( writeBuffer );\n\t\t\t// TODO: Avoid using autoClear properties, see https://github.com/mrdoob/three.js/pull/15571#issuecomment-465669600\n\t\t\tif ( this.clear ) renderer.clear( renderer.autoClearColor, renderer.autoClearDepth, renderer.autoClearStencil );\n\t\t\tthis.fsQuad.render( renderer );\n\n\t\t}\n\n\t}\n\n\tdispose() {\n\n\t\tthis.material.dispose();\n\n\t\tthis.fsQuad.dispose();\n\n\t}\n\n}\n\nexport { ShaderPass };\n"], - "mappings": ";;;;;;;;;;AAMA,IAAM,aAAN,cAAyB,KAAK;AAAA,EAE7B,YAAa,QAAQ,WAAY;AAEhC,UAAM;AAEN,SAAK,YAAc,cAAc,SAAc,YAAY;AAE3D,QAAK,kBAAkB,gBAAiB;AAEvC,WAAK,WAAW,OAAO;AAEvB,WAAK,WAAW;AAAA,IAEjB,WAAY,QAAS;AAEpB,WAAK,WAAW,cAAc,MAAO,OAAO,QAAS;AAErD,WAAK,WAAW,IAAI,eAAgB;AAAA,QAEnC,MAAQ,OAAO,SAAS,SAAc,OAAO,OAAO;AAAA,QACpD,SAAS,OAAO,OAAQ,CAAC,GAAG,OAAO,OAAQ;AAAA,QAC3C,UAAU,KAAK;AAAA,QACf,cAAc,OAAO;AAAA,QACrB,gBAAgB,OAAO;AAAA,MAExB,CAAE;AAAA,IAEH;AAEA,SAAK,SAAS,IAAI,eAAgB,KAAK,QAAS;AAAA,EAEjD;AAAA,EAEA,OAAQ,UAAU,aAAa,YAA0C;AAExE,QAAK,KAAK,SAAU,KAAK,SAAU,GAAI;AAEtC,WAAK,SAAU,KAAK,SAAU,EAAE,QAAQ,WAAW;AAAA,IAEpD;AAEA,SAAK,OAAO,WAAW,KAAK;AAE5B,QAAK,KAAK,gBAAiB;AAE1B,eAAS,gBAAiB,IAAK;AAC/B,WAAK,OAAO,OAAQ,QAAS;AAAA,IAE9B,OAAO;AAEN,eAAS,gBAAiB,WAAY;AAEtC,UAAK,KAAK,MAAQ,UAAS,MAAO,SAAS,gBAAgB,SAAS,gBAAgB,SAAS,gBAAiB;AAC9G,WAAK,OAAO,OAAQ,QAAS;AAAA,IAE9B;AAAA,EAED;AAAA,EAEA,UAAU;AAET,SAAK,SAAS,QAAQ;AAEtB,SAAK,OAAO,QAAQ;AAAA,EAErB;AAED;", - "names": [] -} diff --git a/site/interface/site/node_modules/.vite/deps/chunk-OLTXGRDG.js b/site/interface/site/node_modules/.vite/deps/chunk-OLTXGRDG.js deleted file mode 100644 index 9634228..0000000 --- a/site/interface/site/node_modules/.vite/deps/chunk-OLTXGRDG.js +++ /dev/null @@ -1,44 +0,0 @@ -// node_modules/three/examples/jsm/shaders/CopyShader.js -var CopyShader = { - name: "CopyShader", - uniforms: { - "tDiffuse": { value: null }, - "opacity": { value: 1 } - }, - vertexShader: ( - /* glsl */ - ` - - varying vec2 vUv; - - void main() { - - vUv = uv; - gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 ); - - }` - ), - fragmentShader: ( - /* glsl */ - ` - - uniform float opacity; - - uniform sampler2D tDiffuse; - - varying vec2 vUv; - - void main() { - - vec4 texel = texture2D( tDiffuse, vUv ); - gl_FragColor = opacity * texel; - - - }` - ) -}; - -export { - CopyShader -}; -//# sourceMappingURL=chunk-OLTXGRDG.js.map diff --git a/site/interface/site/node_modules/.vite/deps/chunk-OLTXGRDG.js.map b/site/interface/site/node_modules/.vite/deps/chunk-OLTXGRDG.js.map deleted file mode 100644 index 820d666..0000000 --- a/site/interface/site/node_modules/.vite/deps/chunk-OLTXGRDG.js.map +++ /dev/null @@ -1,7 +0,0 @@ -{ - "version": 3, - "sources": ["../../three/examples/jsm/shaders/CopyShader.js"], - "sourcesContent": ["/**\n * Full-screen textured quad shader\n */\n\nconst CopyShader = {\n\n\tname: 'CopyShader',\n\n\tuniforms: {\n\n\t\t'tDiffuse': { value: null },\n\t\t'opacity': { value: 1.0 }\n\n\t},\n\n\tvertexShader: /* glsl */`\n\n\t\tvarying vec2 vUv;\n\n\t\tvoid main() {\n\n\t\t\tvUv = uv;\n\t\t\tgl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\n\n\t\t}`,\n\n\tfragmentShader: /* glsl */`\n\n\t\tuniform float opacity;\n\n\t\tuniform sampler2D tDiffuse;\n\n\t\tvarying vec2 vUv;\n\n\t\tvoid main() {\n\n\t\t\tvec4 texel = texture2D( tDiffuse, vUv );\n\t\t\tgl_FragColor = opacity * texel;\n\n\n\t\t}`\n\n};\n\nexport { CopyShader };\n"], - "mappings": ";AAIA,IAAM,aAAa;AAAA,EAElB,MAAM;AAAA,EAEN,UAAU;AAAA,IAET,YAAY,EAAE,OAAO,KAAK;AAAA,IAC1B,WAAW,EAAE,OAAO,EAAI;AAAA,EAEzB;AAAA,EAEA;AAAA;AAAA,IAAwB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAWxB;AAAA;AAAA,IAA0B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAgB3B;", - "names": [] -} diff --git a/site/interface/site/node_modules/.vite/deps/three_examples_jsm_postprocessing_EffectComposer__js.js b/site/interface/site/node_modules/.vite/deps/three_examples_jsm_postprocessing_EffectComposer__js.js index bbfd7a2..c76789d 100644 --- a/site/interface/site/node_modules/.vite/deps/three_examples_jsm_postprocessing_EffectComposer__js.js +++ b/site/interface/site/node_modules/.vite/deps/three_examples_jsm_postprocessing_EffectComposer__js.js @@ -1,20 +1,97 @@ import { - ShaderPass -} from "./chunk-D6CDVL7U.js"; -import { - CopyShader -} from "./chunk-OLTXGRDG.js"; -import { + FullScreenQuad, Pass } from "./chunk-JHQAMVLY.js"; import { Clock, HalfFloatType, NoBlending, + ShaderMaterial, + UniformsUtils, Vector2, WebGLRenderTarget } from "./chunk-IS2ZBFBB.js"; +// node_modules/three/examples/jsm/shaders/CopyShader.js +var CopyShader = { + name: "CopyShader", + uniforms: { + "tDiffuse": { value: null }, + "opacity": { value: 1 } + }, + vertexShader: ( + /* glsl */ + ` + + varying vec2 vUv; + + void main() { + + vUv = uv; + gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 ); + + }` + ), + fragmentShader: ( + /* glsl */ + ` + + uniform float opacity; + + uniform sampler2D tDiffuse; + + varying vec2 vUv; + + void main() { + + vec4 texel = texture2D( tDiffuse, vUv ); + gl_FragColor = opacity * texel; + + + }` + ) +}; + +// node_modules/three/examples/jsm/postprocessing/ShaderPass.js +var ShaderPass = class extends Pass { + constructor(shader, textureID) { + super(); + this.textureID = textureID !== void 0 ? textureID : "tDiffuse"; + if (shader instanceof ShaderMaterial) { + this.uniforms = shader.uniforms; + this.material = shader; + } else if (shader) { + this.uniforms = UniformsUtils.clone(shader.uniforms); + this.material = new ShaderMaterial({ + name: shader.name !== void 0 ? shader.name : "unspecified", + defines: Object.assign({}, shader.defines), + uniforms: this.uniforms, + vertexShader: shader.vertexShader, + fragmentShader: shader.fragmentShader + }); + } + this.fsQuad = new FullScreenQuad(this.material); + } + render(renderer, writeBuffer, readBuffer) { + if (this.uniforms[this.textureID]) { + this.uniforms[this.textureID].value = readBuffer.texture; + } + this.fsQuad.material = this.material; + if (this.renderToScreen) { + renderer.setRenderTarget(null); + this.fsQuad.render(renderer); + } else { + renderer.setRenderTarget(writeBuffer); + if (this.clear) renderer.clear(renderer.autoClearColor, renderer.autoClearDepth, renderer.autoClearStencil); + this.fsQuad.render(renderer); + } + } + dispose() { + this.material.dispose(); + this.fsQuad.dispose(); + } +}; + // node_modules/three/examples/jsm/postprocessing/MaskPass.js var MaskPass = class extends Pass { constructor(scene, camera) { diff --git a/site/interface/site/node_modules/.vite/deps/three_examples_jsm_postprocessing_EffectComposer__js.js.map b/site/interface/site/node_modules/.vite/deps/three_examples_jsm_postprocessing_EffectComposer__js.js.map index 13ebd59..5c5c128 100644 --- a/site/interface/site/node_modules/.vite/deps/three_examples_jsm_postprocessing_EffectComposer__js.js.map +++ b/site/interface/site/node_modules/.vite/deps/three_examples_jsm_postprocessing_EffectComposer__js.js.map @@ -1,7 +1,7 @@ { "version": 3, - "sources": ["../../three/examples/jsm/postprocessing/MaskPass.js", "../../three/examples/jsm/postprocessing/EffectComposer.js"], - "sourcesContent": ["import { Pass } from './Pass.js';\n\nclass MaskPass extends Pass {\n\n\tconstructor( scene, camera ) {\n\n\t\tsuper();\n\n\t\tthis.scene = scene;\n\t\tthis.camera = camera;\n\n\t\tthis.clear = true;\n\t\tthis.needsSwap = false;\n\n\t\tthis.inverse = false;\n\n\t}\n\n\trender( renderer, writeBuffer, readBuffer /*, deltaTime, maskActive */ ) {\n\n\t\tconst context = renderer.getContext();\n\t\tconst state = renderer.state;\n\n\t\t// don't update color or depth\n\n\t\tstate.buffers.color.setMask( false );\n\t\tstate.buffers.depth.setMask( false );\n\n\t\t// lock buffers\n\n\t\tstate.buffers.color.setLocked( true );\n\t\tstate.buffers.depth.setLocked( true );\n\n\t\t// set up stencil\n\n\t\tlet writeValue, clearValue;\n\n\t\tif ( this.inverse ) {\n\n\t\t\twriteValue = 0;\n\t\t\tclearValue = 1;\n\n\t\t} else {\n\n\t\t\twriteValue = 1;\n\t\t\tclearValue = 0;\n\n\t\t}\n\n\t\tstate.buffers.stencil.setTest( true );\n\t\tstate.buffers.stencil.setOp( context.REPLACE, context.REPLACE, context.REPLACE );\n\t\tstate.buffers.stencil.setFunc( context.ALWAYS, writeValue, 0xffffffff );\n\t\tstate.buffers.stencil.setClear( clearValue );\n\t\tstate.buffers.stencil.setLocked( true );\n\n\t\t// draw into the stencil buffer\n\n\t\trenderer.setRenderTarget( readBuffer );\n\t\tif ( this.clear ) renderer.clear();\n\t\trenderer.render( this.scene, this.camera );\n\n\t\trenderer.setRenderTarget( writeBuffer );\n\t\tif ( this.clear ) renderer.clear();\n\t\trenderer.render( this.scene, this.camera );\n\n\t\t// unlock color and depth buffer and make them writable for subsequent rendering/clearing\n\n\t\tstate.buffers.color.setLocked( false );\n\t\tstate.buffers.depth.setLocked( false );\n\n\t\tstate.buffers.color.setMask( true );\n\t\tstate.buffers.depth.setMask( true );\n\n\t\t// only render where stencil is set to 1\n\n\t\tstate.buffers.stencil.setLocked( false );\n\t\tstate.buffers.stencil.setFunc( context.EQUAL, 1, 0xffffffff ); // draw if == 1\n\t\tstate.buffers.stencil.setOp( context.KEEP, context.KEEP, context.KEEP );\n\t\tstate.buffers.stencil.setLocked( true );\n\n\t}\n\n}\n\nclass ClearMaskPass extends Pass {\n\n\tconstructor() {\n\n\t\tsuper();\n\n\t\tthis.needsSwap = false;\n\n\t}\n\n\trender( renderer /*, writeBuffer, readBuffer, deltaTime, maskActive */ ) {\n\n\t\trenderer.state.buffers.stencil.setLocked( false );\n\t\trenderer.state.buffers.stencil.setTest( false );\n\n\t}\n\n}\n\nexport { MaskPass, ClearMaskPass };\n", "import {\n\tClock,\n\tHalfFloatType,\n\tNoBlending,\n\tVector2,\n\tWebGLRenderTarget\n} from 'three';\nimport { CopyShader } from '../shaders/CopyShader.js';\nimport { ShaderPass } from './ShaderPass.js';\nimport { MaskPass } from './MaskPass.js';\nimport { ClearMaskPass } from './MaskPass.js';\n\nclass EffectComposer {\n\n\tconstructor( renderer, renderTarget ) {\n\n\t\tthis.renderer = renderer;\n\n\t\tthis._pixelRatio = renderer.getPixelRatio();\n\n\t\tif ( renderTarget === undefined ) {\n\n\t\t\tconst size = renderer.getSize( new Vector2() );\n\t\t\tthis._width = size.width;\n\t\t\tthis._height = size.height;\n\n\t\t\trenderTarget = new WebGLRenderTarget( this._width * this._pixelRatio, this._height * this._pixelRatio, { type: HalfFloatType } );\n\t\t\trenderTarget.texture.name = 'EffectComposer.rt1';\n\n\t\t} else {\n\n\t\t\tthis._width = renderTarget.width;\n\t\t\tthis._height = renderTarget.height;\n\n\t\t}\n\n\t\tthis.renderTarget1 = renderTarget;\n\t\tthis.renderTarget2 = renderTarget.clone();\n\t\tthis.renderTarget2.texture.name = 'EffectComposer.rt2';\n\n\t\tthis.writeBuffer = this.renderTarget1;\n\t\tthis.readBuffer = this.renderTarget2;\n\n\t\tthis.renderToScreen = true;\n\n\t\tthis.passes = [];\n\n\t\tthis.copyPass = new ShaderPass( CopyShader );\n\t\tthis.copyPass.material.blending = NoBlending;\n\n\t\tthis.clock = new Clock();\n\n\t}\n\n\tswapBuffers() {\n\n\t\tconst tmp = this.readBuffer;\n\t\tthis.readBuffer = this.writeBuffer;\n\t\tthis.writeBuffer = tmp;\n\n\t}\n\n\taddPass( pass ) {\n\n\t\tthis.passes.push( pass );\n\t\tpass.setSize( this._width * this._pixelRatio, this._height * this._pixelRatio );\n\n\t}\n\n\tinsertPass( pass, index ) {\n\n\t\tthis.passes.splice( index, 0, pass );\n\t\tpass.setSize( this._width * this._pixelRatio, this._height * this._pixelRatio );\n\n\t}\n\n\tremovePass( pass ) {\n\n\t\tconst index = this.passes.indexOf( pass );\n\n\t\tif ( index !== - 1 ) {\n\n\t\t\tthis.passes.splice( index, 1 );\n\n\t\t}\n\n\t}\n\n\tisLastEnabledPass( passIndex ) {\n\n\t\tfor ( let i = passIndex + 1; i < this.passes.length; i ++ ) {\n\n\t\t\tif ( this.passes[ i ].enabled ) {\n\n\t\t\t\treturn false;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn true;\n\n\t}\n\n\trender( deltaTime ) {\n\n\t\t// deltaTime value is in seconds\n\n\t\tif ( deltaTime === undefined ) {\n\n\t\t\tdeltaTime = this.clock.getDelta();\n\n\t\t}\n\n\t\tconst currentRenderTarget = this.renderer.getRenderTarget();\n\n\t\tlet maskActive = false;\n\n\t\tfor ( let i = 0, il = this.passes.length; i < il; i ++ ) {\n\n\t\t\tconst pass = this.passes[ i ];\n\n\t\t\tif ( pass.enabled === false ) continue;\n\n\t\t\tpass.renderToScreen = ( this.renderToScreen && this.isLastEnabledPass( i ) );\n\t\t\tpass.render( this.renderer, this.writeBuffer, this.readBuffer, deltaTime, maskActive );\n\n\t\t\tif ( pass.needsSwap ) {\n\n\t\t\t\tif ( maskActive ) {\n\n\t\t\t\t\tconst context = this.renderer.getContext();\n\t\t\t\t\tconst stencil = this.renderer.state.buffers.stencil;\n\n\t\t\t\t\t//context.stencilFunc( context.NOTEQUAL, 1, 0xffffffff );\n\t\t\t\t\tstencil.setFunc( context.NOTEQUAL, 1, 0xffffffff );\n\n\t\t\t\t\tthis.copyPass.render( this.renderer, this.writeBuffer, this.readBuffer, deltaTime );\n\n\t\t\t\t\t//context.stencilFunc( context.EQUAL, 1, 0xffffffff );\n\t\t\t\t\tstencil.setFunc( context.EQUAL, 1, 0xffffffff );\n\n\t\t\t\t}\n\n\t\t\t\tthis.swapBuffers();\n\n\t\t\t}\n\n\t\t\tif ( MaskPass !== undefined ) {\n\n\t\t\t\tif ( pass instanceof MaskPass ) {\n\n\t\t\t\t\tmaskActive = true;\n\n\t\t\t\t} else if ( pass instanceof ClearMaskPass ) {\n\n\t\t\t\t\tmaskActive = false;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tthis.renderer.setRenderTarget( currentRenderTarget );\n\n\t}\n\n\treset( renderTarget ) {\n\n\t\tif ( renderTarget === undefined ) {\n\n\t\t\tconst size = this.renderer.getSize( new Vector2() );\n\t\t\tthis._pixelRatio = this.renderer.getPixelRatio();\n\t\t\tthis._width = size.width;\n\t\t\tthis._height = size.height;\n\n\t\t\trenderTarget = this.renderTarget1.clone();\n\t\t\trenderTarget.setSize( this._width * this._pixelRatio, this._height * this._pixelRatio );\n\n\t\t}\n\n\t\tthis.renderTarget1.dispose();\n\t\tthis.renderTarget2.dispose();\n\t\tthis.renderTarget1 = renderTarget;\n\t\tthis.renderTarget2 = renderTarget.clone();\n\n\t\tthis.writeBuffer = this.renderTarget1;\n\t\tthis.readBuffer = this.renderTarget2;\n\n\t}\n\n\tsetSize( width, height ) {\n\n\t\tthis._width = width;\n\t\tthis._height = height;\n\n\t\tconst effectiveWidth = this._width * this._pixelRatio;\n\t\tconst effectiveHeight = this._height * this._pixelRatio;\n\n\t\tthis.renderTarget1.setSize( effectiveWidth, effectiveHeight );\n\t\tthis.renderTarget2.setSize( effectiveWidth, effectiveHeight );\n\n\t\tfor ( let i = 0; i < this.passes.length; i ++ ) {\n\n\t\t\tthis.passes[ i ].setSize( effectiveWidth, effectiveHeight );\n\n\t\t}\n\n\t}\n\n\tsetPixelRatio( pixelRatio ) {\n\n\t\tthis._pixelRatio = pixelRatio;\n\n\t\tthis.setSize( this._width, this._height );\n\n\t}\n\n\tdispose() {\n\n\t\tthis.renderTarget1.dispose();\n\t\tthis.renderTarget2.dispose();\n\n\t\tthis.copyPass.dispose();\n\n\t}\n\n}\n\nexport { EffectComposer };\n"], - "mappings": "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", + "sources": ["../../three/examples/jsm/shaders/CopyShader.js", "../../three/examples/jsm/postprocessing/ShaderPass.js", "../../three/examples/jsm/postprocessing/MaskPass.js", "../../three/examples/jsm/postprocessing/EffectComposer.js"], + "sourcesContent": ["/**\n * Full-screen textured quad shader\n */\n\nconst CopyShader = {\n\n\tname: 'CopyShader',\n\n\tuniforms: {\n\n\t\t'tDiffuse': { value: null },\n\t\t'opacity': { value: 1.0 }\n\n\t},\n\n\tvertexShader: /* glsl */`\n\n\t\tvarying vec2 vUv;\n\n\t\tvoid main() {\n\n\t\t\tvUv = uv;\n\t\t\tgl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\n\n\t\t}`,\n\n\tfragmentShader: /* glsl */`\n\n\t\tuniform float opacity;\n\n\t\tuniform sampler2D tDiffuse;\n\n\t\tvarying vec2 vUv;\n\n\t\tvoid main() {\n\n\t\t\tvec4 texel = texture2D( tDiffuse, vUv );\n\t\t\tgl_FragColor = opacity * texel;\n\n\n\t\t}`\n\n};\n\nexport { CopyShader };\n", "import {\n\tShaderMaterial,\n\tUniformsUtils\n} from 'three';\nimport { Pass, FullScreenQuad } from './Pass.js';\n\nclass ShaderPass extends Pass {\n\n\tconstructor( shader, textureID ) {\n\n\t\tsuper();\n\n\t\tthis.textureID = ( textureID !== undefined ) ? textureID : 'tDiffuse';\n\n\t\tif ( shader instanceof ShaderMaterial ) {\n\n\t\t\tthis.uniforms = shader.uniforms;\n\n\t\t\tthis.material = shader;\n\n\t\t} else if ( shader ) {\n\n\t\t\tthis.uniforms = UniformsUtils.clone( shader.uniforms );\n\n\t\t\tthis.material = new ShaderMaterial( {\n\n\t\t\t\tname: ( shader.name !== undefined ) ? shader.name : 'unspecified',\n\t\t\t\tdefines: Object.assign( {}, shader.defines ),\n\t\t\t\tuniforms: this.uniforms,\n\t\t\t\tvertexShader: shader.vertexShader,\n\t\t\t\tfragmentShader: shader.fragmentShader\n\n\t\t\t} );\n\n\t\t}\n\n\t\tthis.fsQuad = new FullScreenQuad( this.material );\n\n\t}\n\n\trender( renderer, writeBuffer, readBuffer /*, deltaTime, maskActive */ ) {\n\n\t\tif ( this.uniforms[ this.textureID ] ) {\n\n\t\t\tthis.uniforms[ this.textureID ].value = readBuffer.texture;\n\n\t\t}\n\n\t\tthis.fsQuad.material = this.material;\n\n\t\tif ( this.renderToScreen ) {\n\n\t\t\trenderer.setRenderTarget( null );\n\t\t\tthis.fsQuad.render( renderer );\n\n\t\t} else {\n\n\t\t\trenderer.setRenderTarget( writeBuffer );\n\t\t\t// TODO: Avoid using autoClear properties, see https://github.com/mrdoob/three.js/pull/15571#issuecomment-465669600\n\t\t\tif ( this.clear ) renderer.clear( renderer.autoClearColor, renderer.autoClearDepth, renderer.autoClearStencil );\n\t\t\tthis.fsQuad.render( renderer );\n\n\t\t}\n\n\t}\n\n\tdispose() {\n\n\t\tthis.material.dispose();\n\n\t\tthis.fsQuad.dispose();\n\n\t}\n\n}\n\nexport { ShaderPass };\n", "import { Pass } from './Pass.js';\n\nclass MaskPass extends Pass {\n\n\tconstructor( scene, camera ) {\n\n\t\tsuper();\n\n\t\tthis.scene = scene;\n\t\tthis.camera = camera;\n\n\t\tthis.clear = true;\n\t\tthis.needsSwap = false;\n\n\t\tthis.inverse = false;\n\n\t}\n\n\trender( renderer, writeBuffer, readBuffer /*, deltaTime, maskActive */ ) {\n\n\t\tconst context = renderer.getContext();\n\t\tconst state = renderer.state;\n\n\t\t// don't update color or depth\n\n\t\tstate.buffers.color.setMask( false );\n\t\tstate.buffers.depth.setMask( false );\n\n\t\t// lock buffers\n\n\t\tstate.buffers.color.setLocked( true );\n\t\tstate.buffers.depth.setLocked( true );\n\n\t\t// set up stencil\n\n\t\tlet writeValue, clearValue;\n\n\t\tif ( this.inverse ) {\n\n\t\t\twriteValue = 0;\n\t\t\tclearValue = 1;\n\n\t\t} else {\n\n\t\t\twriteValue = 1;\n\t\t\tclearValue = 0;\n\n\t\t}\n\n\t\tstate.buffers.stencil.setTest( true );\n\t\tstate.buffers.stencil.setOp( context.REPLACE, context.REPLACE, context.REPLACE );\n\t\tstate.buffers.stencil.setFunc( context.ALWAYS, writeValue, 0xffffffff );\n\t\tstate.buffers.stencil.setClear( clearValue );\n\t\tstate.buffers.stencil.setLocked( true );\n\n\t\t// draw into the stencil buffer\n\n\t\trenderer.setRenderTarget( readBuffer );\n\t\tif ( this.clear ) renderer.clear();\n\t\trenderer.render( this.scene, this.camera );\n\n\t\trenderer.setRenderTarget( writeBuffer );\n\t\tif ( this.clear ) renderer.clear();\n\t\trenderer.render( this.scene, this.camera );\n\n\t\t// unlock color and depth buffer and make them writable for subsequent rendering/clearing\n\n\t\tstate.buffers.color.setLocked( false );\n\t\tstate.buffers.depth.setLocked( false );\n\n\t\tstate.buffers.color.setMask( true );\n\t\tstate.buffers.depth.setMask( true );\n\n\t\t// only render where stencil is set to 1\n\n\t\tstate.buffers.stencil.setLocked( false );\n\t\tstate.buffers.stencil.setFunc( context.EQUAL, 1, 0xffffffff ); // draw if == 1\n\t\tstate.buffers.stencil.setOp( context.KEEP, context.KEEP, context.KEEP );\n\t\tstate.buffers.stencil.setLocked( true );\n\n\t}\n\n}\n\nclass ClearMaskPass extends Pass {\n\n\tconstructor() {\n\n\t\tsuper();\n\n\t\tthis.needsSwap = false;\n\n\t}\n\n\trender( renderer /*, writeBuffer, readBuffer, deltaTime, maskActive */ ) {\n\n\t\trenderer.state.buffers.stencil.setLocked( false );\n\t\trenderer.state.buffers.stencil.setTest( false );\n\n\t}\n\n}\n\nexport { MaskPass, ClearMaskPass };\n", "import {\n\tClock,\n\tHalfFloatType,\n\tNoBlending,\n\tVector2,\n\tWebGLRenderTarget\n} from 'three';\nimport { CopyShader } from '../shaders/CopyShader.js';\nimport { ShaderPass } from './ShaderPass.js';\nimport { MaskPass } from './MaskPass.js';\nimport { ClearMaskPass } from './MaskPass.js';\n\nclass EffectComposer {\n\n\tconstructor( renderer, renderTarget ) {\n\n\t\tthis.renderer = renderer;\n\n\t\tthis._pixelRatio = renderer.getPixelRatio();\n\n\t\tif ( renderTarget === undefined ) {\n\n\t\t\tconst size = renderer.getSize( new Vector2() );\n\t\t\tthis._width = size.width;\n\t\t\tthis._height = size.height;\n\n\t\t\trenderTarget = new WebGLRenderTarget( this._width * this._pixelRatio, this._height * this._pixelRatio, { type: HalfFloatType } );\n\t\t\trenderTarget.texture.name = 'EffectComposer.rt1';\n\n\t\t} else {\n\n\t\t\tthis._width = renderTarget.width;\n\t\t\tthis._height = renderTarget.height;\n\n\t\t}\n\n\t\tthis.renderTarget1 = renderTarget;\n\t\tthis.renderTarget2 = renderTarget.clone();\n\t\tthis.renderTarget2.texture.name = 'EffectComposer.rt2';\n\n\t\tthis.writeBuffer = this.renderTarget1;\n\t\tthis.readBuffer = this.renderTarget2;\n\n\t\tthis.renderToScreen = true;\n\n\t\tthis.passes = [];\n\n\t\tthis.copyPass = new ShaderPass( CopyShader );\n\t\tthis.copyPass.material.blending = NoBlending;\n\n\t\tthis.clock = new Clock();\n\n\t}\n\n\tswapBuffers() {\n\n\t\tconst tmp = this.readBuffer;\n\t\tthis.readBuffer = this.writeBuffer;\n\t\tthis.writeBuffer = tmp;\n\n\t}\n\n\taddPass( pass ) {\n\n\t\tthis.passes.push( pass );\n\t\tpass.setSize( this._width * this._pixelRatio, this._height * this._pixelRatio );\n\n\t}\n\n\tinsertPass( pass, index ) {\n\n\t\tthis.passes.splice( index, 0, pass );\n\t\tpass.setSize( this._width * this._pixelRatio, this._height * this._pixelRatio );\n\n\t}\n\n\tremovePass( pass ) {\n\n\t\tconst index = this.passes.indexOf( pass );\n\n\t\tif ( index !== - 1 ) {\n\n\t\t\tthis.passes.splice( index, 1 );\n\n\t\t}\n\n\t}\n\n\tisLastEnabledPass( passIndex ) {\n\n\t\tfor ( let i = passIndex + 1; i < this.passes.length; i ++ ) {\n\n\t\t\tif ( this.passes[ i ].enabled ) {\n\n\t\t\t\treturn false;\n\n\t\t\t}\n\n\t\t}\n\n\t\treturn true;\n\n\t}\n\n\trender( deltaTime ) {\n\n\t\t// deltaTime value is in seconds\n\n\t\tif ( deltaTime === undefined ) {\n\n\t\t\tdeltaTime = this.clock.getDelta();\n\n\t\t}\n\n\t\tconst currentRenderTarget = this.renderer.getRenderTarget();\n\n\t\tlet maskActive = false;\n\n\t\tfor ( let i = 0, il = this.passes.length; i < il; i ++ ) {\n\n\t\t\tconst pass = this.passes[ i ];\n\n\t\t\tif ( pass.enabled === false ) continue;\n\n\t\t\tpass.renderToScreen = ( this.renderToScreen && this.isLastEnabledPass( i ) );\n\t\t\tpass.render( this.renderer, this.writeBuffer, this.readBuffer, deltaTime, maskActive );\n\n\t\t\tif ( pass.needsSwap ) {\n\n\t\t\t\tif ( maskActive ) {\n\n\t\t\t\t\tconst context = this.renderer.getContext();\n\t\t\t\t\tconst stencil = this.renderer.state.buffers.stencil;\n\n\t\t\t\t\t//context.stencilFunc( context.NOTEQUAL, 1, 0xffffffff );\n\t\t\t\t\tstencil.setFunc( context.NOTEQUAL, 1, 0xffffffff );\n\n\t\t\t\t\tthis.copyPass.render( this.renderer, this.writeBuffer, this.readBuffer, deltaTime );\n\n\t\t\t\t\t//context.stencilFunc( context.EQUAL, 1, 0xffffffff );\n\t\t\t\t\tstencil.setFunc( context.EQUAL, 1, 0xffffffff );\n\n\t\t\t\t}\n\n\t\t\t\tthis.swapBuffers();\n\n\t\t\t}\n\n\t\t\tif ( MaskPass !== undefined ) {\n\n\t\t\t\tif ( pass instanceof MaskPass ) {\n\n\t\t\t\t\tmaskActive = true;\n\n\t\t\t\t} else if ( pass instanceof ClearMaskPass ) {\n\n\t\t\t\t\tmaskActive = false;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\n\t\tthis.renderer.setRenderTarget( currentRenderTarget );\n\n\t}\n\n\treset( renderTarget ) {\n\n\t\tif ( renderTarget === undefined ) {\n\n\t\t\tconst size = this.renderer.getSize( new Vector2() );\n\t\t\tthis._pixelRatio = this.renderer.getPixelRatio();\n\t\t\tthis._width = size.width;\n\t\t\tthis._height = size.height;\n\n\t\t\trenderTarget = this.renderTarget1.clone();\n\t\t\trenderTarget.setSize( this._width * this._pixelRatio, this._height * this._pixelRatio );\n\n\t\t}\n\n\t\tthis.renderTarget1.dispose();\n\t\tthis.renderTarget2.dispose();\n\t\tthis.renderTarget1 = renderTarget;\n\t\tthis.renderTarget2 = renderTarget.clone();\n\n\t\tthis.writeBuffer = this.renderTarget1;\n\t\tthis.readBuffer = this.renderTarget2;\n\n\t}\n\n\tsetSize( width, height ) {\n\n\t\tthis._width = width;\n\t\tthis._height = height;\n\n\t\tconst effectiveWidth = this._width * this._pixelRatio;\n\t\tconst effectiveHeight = this._height * this._pixelRatio;\n\n\t\tthis.renderTarget1.setSize( effectiveWidth, effectiveHeight );\n\t\tthis.renderTarget2.setSize( effectiveWidth, effectiveHeight );\n\n\t\tfor ( let i = 0; i < this.passes.length; i ++ ) {\n\n\t\t\tthis.passes[ i ].setSize( effectiveWidth, effectiveHeight );\n\n\t\t}\n\n\t}\n\n\tsetPixelRatio( pixelRatio ) {\n\n\t\tthis._pixelRatio = pixelRatio;\n\n\t\tthis.setSize( this._width, this._height );\n\n\t}\n\n\tdispose() {\n\n\t\tthis.renderTarget1.dispose();\n\t\tthis.renderTarget2.dispose();\n\n\t\tthis.copyPass.dispose();\n\n\t}\n\n}\n\nexport { EffectComposer };\n"], + "mappings": "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", "names": [] } diff --git a/site/interface/site/node_modules/.vite/deps/three_examples_jsm_postprocessing_SSAOPass__js.js b/site/interface/site/node_modules/.vite/deps/three_examples_jsm_postprocessing_SSAOPass__js.js deleted file mode 100644 index 71923bb..0000000 --- a/site/interface/site/node_modules/.vite/deps/three_examples_jsm_postprocessing_SSAOPass__js.js +++ /dev/null @@ -1,938 +0,0 @@ -import { - CopyShader -} from "./chunk-OLTXGRDG.js"; -import { - FullScreenQuad, - Pass -} from "./chunk-JHQAMVLY.js"; -import { - AddEquation, - Color, - CustomBlending, - DataTexture, - DepthStencilFormat, - DepthTexture, - DstAlphaFactor, - DstColorFactor, - FloatType, - HalfFloatType, - MathUtils, - Matrix4, - MeshNormalMaterial, - NearestFilter, - NoBlending, - RedFormat, - RepeatWrapping, - ShaderMaterial, - UniformsUtils, - UnsignedInt248Type, - Vector2, - Vector3, - WebGLRenderTarget, - ZeroFactor -} from "./chunk-IS2ZBFBB.js"; - -// node_modules/three/examples/jsm/math/SimplexNoise.js -var SimplexNoise = class { - constructor(r = Math) { - this.grad3 = [ - [1, 1, 0], - [-1, 1, 0], - [1, -1, 0], - [-1, -1, 0], - [1, 0, 1], - [-1, 0, 1], - [1, 0, -1], - [-1, 0, -1], - [0, 1, 1], - [0, -1, 1], - [0, 1, -1], - [0, -1, -1] - ]; - this.grad4 = [ - [0, 1, 1, 1], - [0, 1, 1, -1], - [0, 1, -1, 1], - [0, 1, -1, -1], - [0, -1, 1, 1], - [0, -1, 1, -1], - [0, -1, -1, 1], - [0, -1, -1, -1], - [1, 0, 1, 1], - [1, 0, 1, -1], - [1, 0, -1, 1], - [1, 0, -1, -1], - [-1, 0, 1, 1], - [-1, 0, 1, -1], - [-1, 0, -1, 1], - [-1, 0, -1, -1], - [1, 1, 0, 1], - [1, 1, 0, -1], - [1, -1, 0, 1], - [1, -1, 0, -1], - [-1, 1, 0, 1], - [-1, 1, 0, -1], - [-1, -1, 0, 1], - [-1, -1, 0, -1], - [1, 1, 1, 0], - [1, 1, -1, 0], - [1, -1, 1, 0], - [1, -1, -1, 0], - [-1, 1, 1, 0], - [-1, 1, -1, 0], - [-1, -1, 1, 0], - [-1, -1, -1, 0] - ]; - this.p = []; - for (let i = 0; i < 256; i++) { - this.p[i] = Math.floor(r.random() * 256); - } - this.perm = []; - for (let i = 0; i < 512; i++) { - this.perm[i] = this.p[i & 255]; - } - this.simplex = [ - [0, 1, 2, 3], - [0, 1, 3, 2], - [0, 0, 0, 0], - [0, 2, 3, 1], - [0, 0, 0, 0], - [0, 0, 0, 0], - [0, 0, 0, 0], - [1, 2, 3, 0], - [0, 2, 1, 3], - [0, 0, 0, 0], - [0, 3, 1, 2], - [0, 3, 2, 1], - [0, 0, 0, 0], - [0, 0, 0, 0], - [0, 0, 0, 0], - [1, 3, 2, 0], - [0, 0, 0, 0], - [0, 0, 0, 0], - [0, 0, 0, 0], - [0, 0, 0, 0], - [0, 0, 0, 0], - [0, 0, 0, 0], - [0, 0, 0, 0], - [0, 0, 0, 0], - [1, 2, 0, 3], - [0, 0, 0, 0], - [1, 3, 0, 2], - [0, 0, 0, 0], - [0, 0, 0, 0], - [0, 0, 0, 0], - [2, 3, 0, 1], - [2, 3, 1, 0], - [1, 0, 2, 3], - [1, 0, 3, 2], - [0, 0, 0, 0], - [0, 0, 0, 0], - [0, 0, 0, 0], - [2, 0, 3, 1], - [0, 0, 0, 0], - [2, 1, 3, 0], - [0, 0, 0, 0], - [0, 0, 0, 0], - [0, 0, 0, 0], - [0, 0, 0, 0], - [0, 0, 0, 0], - [0, 0, 0, 0], - [0, 0, 0, 0], - [0, 0, 0, 0], - [2, 0, 1, 3], - [0, 0, 0, 0], - [0, 0, 0, 0], - [0, 0, 0, 0], - [3, 0, 1, 2], - [3, 0, 2, 1], - [0, 0, 0, 0], - [3, 1, 2, 0], - [2, 1, 0, 3], - [0, 0, 0, 0], - [0, 0, 0, 0], - [0, 0, 0, 0], - [3, 1, 0, 2], - [0, 0, 0, 0], - [3, 2, 0, 1], - [3, 2, 1, 0] - ]; - } - dot(g, x, y) { - return g[0] * x + g[1] * y; - } - dot3(g, x, y, z) { - return g[0] * x + g[1] * y + g[2] * z; - } - dot4(g, x, y, z, w) { - return g[0] * x + g[1] * y + g[2] * z + g[3] * w; - } - noise(xin, yin) { - let n0; - let n1; - let n2; - const F2 = 0.5 * (Math.sqrt(3) - 1); - const s = (xin + yin) * F2; - const i = Math.floor(xin + s); - const j = Math.floor(yin + s); - const G2 = (3 - Math.sqrt(3)) / 6; - const t = (i + j) * G2; - const X0 = i - t; - const Y0 = j - t; - const x0 = xin - X0; - const y0 = yin - Y0; - let i1; - let j1; - if (x0 > y0) { - i1 = 1; - j1 = 0; - } else { - i1 = 0; - j1 = 1; - } - const x1 = x0 - i1 + G2; - const y1 = y0 - j1 + G2; - const x2 = x0 - 1 + 2 * G2; - const y2 = y0 - 1 + 2 * G2; - const ii = i & 255; - const jj = j & 255; - const gi0 = this.perm[ii + this.perm[jj]] % 12; - const gi1 = this.perm[ii + i1 + this.perm[jj + j1]] % 12; - const gi2 = this.perm[ii + 1 + this.perm[jj + 1]] % 12; - let t0 = 0.5 - x0 * x0 - y0 * y0; - if (t0 < 0) n0 = 0; - else { - t0 *= t0; - n0 = t0 * t0 * this.dot(this.grad3[gi0], x0, y0); - } - let t1 = 0.5 - x1 * x1 - y1 * y1; - if (t1 < 0) n1 = 0; - else { - t1 *= t1; - n1 = t1 * t1 * this.dot(this.grad3[gi1], x1, y1); - } - let t2 = 0.5 - x2 * x2 - y2 * y2; - if (t2 < 0) n2 = 0; - else { - t2 *= t2; - n2 = t2 * t2 * this.dot(this.grad3[gi2], x2, y2); - } - return 70 * (n0 + n1 + n2); - } - // 3D simplex noise - noise3d(xin, yin, zin) { - let n0; - let n1; - let n2; - let n3; - const F3 = 1 / 3; - const s = (xin + yin + zin) * F3; - const i = Math.floor(xin + s); - const j = Math.floor(yin + s); - const k = Math.floor(zin + s); - const G3 = 1 / 6; - const t = (i + j + k) * G3; - const X0 = i - t; - const Y0 = j - t; - const Z0 = k - t; - const x0 = xin - X0; - const y0 = yin - Y0; - const z0 = zin - Z0; - let i1; - let j1; - let k1; - let i2; - let j2; - let k2; - if (x0 >= y0) { - if (y0 >= z0) { - i1 = 1; - j1 = 0; - k1 = 0; - i2 = 1; - j2 = 1; - k2 = 0; - } else if (x0 >= z0) { - i1 = 1; - j1 = 0; - k1 = 0; - i2 = 1; - j2 = 0; - k2 = 1; - } else { - i1 = 0; - j1 = 0; - k1 = 1; - i2 = 1; - j2 = 0; - k2 = 1; - } - } else { - if (y0 < z0) { - i1 = 0; - j1 = 0; - k1 = 1; - i2 = 0; - j2 = 1; - k2 = 1; - } else if (x0 < z0) { - i1 = 0; - j1 = 1; - k1 = 0; - i2 = 0; - j2 = 1; - k2 = 1; - } else { - i1 = 0; - j1 = 1; - k1 = 0; - i2 = 1; - j2 = 1; - k2 = 0; - } - } - const x1 = x0 - i1 + G3; - const y1 = y0 - j1 + G3; - const z1 = z0 - k1 + G3; - const x2 = x0 - i2 + 2 * G3; - const y2 = y0 - j2 + 2 * G3; - const z2 = z0 - k2 + 2 * G3; - const x3 = x0 - 1 + 3 * G3; - const y3 = y0 - 1 + 3 * G3; - const z3 = z0 - 1 + 3 * G3; - const ii = i & 255; - const jj = j & 255; - const kk = k & 255; - const gi0 = this.perm[ii + this.perm[jj + this.perm[kk]]] % 12; - const gi1 = this.perm[ii + i1 + this.perm[jj + j1 + this.perm[kk + k1]]] % 12; - const gi2 = this.perm[ii + i2 + this.perm[jj + j2 + this.perm[kk + k2]]] % 12; - const gi3 = this.perm[ii + 1 + this.perm[jj + 1 + this.perm[kk + 1]]] % 12; - let t0 = 0.6 - x0 * x0 - y0 * y0 - z0 * z0; - if (t0 < 0) n0 = 0; - else { - t0 *= t0; - n0 = t0 * t0 * this.dot3(this.grad3[gi0], x0, y0, z0); - } - let t1 = 0.6 - x1 * x1 - y1 * y1 - z1 * z1; - if (t1 < 0) n1 = 0; - else { - t1 *= t1; - n1 = t1 * t1 * this.dot3(this.grad3[gi1], x1, y1, z1); - } - let t2 = 0.6 - x2 * x2 - y2 * y2 - z2 * z2; - if (t2 < 0) n2 = 0; - else { - t2 *= t2; - n2 = t2 * t2 * this.dot3(this.grad3[gi2], x2, y2, z2); - } - let t3 = 0.6 - x3 * x3 - y3 * y3 - z3 * z3; - if (t3 < 0) n3 = 0; - else { - t3 *= t3; - n3 = t3 * t3 * this.dot3(this.grad3[gi3], x3, y3, z3); - } - return 32 * (n0 + n1 + n2 + n3); - } - // 4D simplex noise - noise4d(x, y, z, w) { - const grad4 = this.grad4; - const simplex = this.simplex; - const perm = this.perm; - const F4 = (Math.sqrt(5) - 1) / 4; - const G4 = (5 - Math.sqrt(5)) / 20; - let n0; - let n1; - let n2; - let n3; - let n4; - const s = (x + y + z + w) * F4; - const i = Math.floor(x + s); - const j = Math.floor(y + s); - const k = Math.floor(z + s); - const l = Math.floor(w + s); - const t = (i + j + k + l) * G4; - const X0 = i - t; - const Y0 = j - t; - const Z0 = k - t; - const W0 = l - t; - const x0 = x - X0; - const y0 = y - Y0; - const z0 = z - Z0; - const w0 = w - W0; - const c1 = x0 > y0 ? 32 : 0; - const c2 = x0 > z0 ? 16 : 0; - const c3 = y0 > z0 ? 8 : 0; - const c4 = x0 > w0 ? 4 : 0; - const c5 = y0 > w0 ? 2 : 0; - const c6 = z0 > w0 ? 1 : 0; - const c = c1 + c2 + c3 + c4 + c5 + c6; - const i1 = simplex[c][0] >= 3 ? 1 : 0; - const j1 = simplex[c][1] >= 3 ? 1 : 0; - const k1 = simplex[c][2] >= 3 ? 1 : 0; - const l1 = simplex[c][3] >= 3 ? 1 : 0; - const i2 = simplex[c][0] >= 2 ? 1 : 0; - const j2 = simplex[c][1] >= 2 ? 1 : 0; - const k2 = simplex[c][2] >= 2 ? 1 : 0; - const l2 = simplex[c][3] >= 2 ? 1 : 0; - const i3 = simplex[c][0] >= 1 ? 1 : 0; - const j3 = simplex[c][1] >= 1 ? 1 : 0; - const k3 = simplex[c][2] >= 1 ? 1 : 0; - const l3 = simplex[c][3] >= 1 ? 1 : 0; - const x1 = x0 - i1 + G4; - const y1 = y0 - j1 + G4; - const z1 = z0 - k1 + G4; - const w1 = w0 - l1 + G4; - const x2 = x0 - i2 + 2 * G4; - const y2 = y0 - j2 + 2 * G4; - const z2 = z0 - k2 + 2 * G4; - const w2 = w0 - l2 + 2 * G4; - const x3 = x0 - i3 + 3 * G4; - const y3 = y0 - j3 + 3 * G4; - const z3 = z0 - k3 + 3 * G4; - const w3 = w0 - l3 + 3 * G4; - const x4 = x0 - 1 + 4 * G4; - const y4 = y0 - 1 + 4 * G4; - const z4 = z0 - 1 + 4 * G4; - const w4 = w0 - 1 + 4 * G4; - const ii = i & 255; - const jj = j & 255; - const kk = k & 255; - const ll = l & 255; - const gi0 = perm[ii + perm[jj + perm[kk + perm[ll]]]] % 32; - const gi1 = perm[ii + i1 + perm[jj + j1 + perm[kk + k1 + perm[ll + l1]]]] % 32; - const gi2 = perm[ii + i2 + perm[jj + j2 + perm[kk + k2 + perm[ll + l2]]]] % 32; - const gi3 = perm[ii + i3 + perm[jj + j3 + perm[kk + k3 + perm[ll + l3]]]] % 32; - const gi4 = perm[ii + 1 + perm[jj + 1 + perm[kk + 1 + perm[ll + 1]]]] % 32; - let t0 = 0.6 - x0 * x0 - y0 * y0 - z0 * z0 - w0 * w0; - if (t0 < 0) n0 = 0; - else { - t0 *= t0; - n0 = t0 * t0 * this.dot4(grad4[gi0], x0, y0, z0, w0); - } - let t1 = 0.6 - x1 * x1 - y1 * y1 - z1 * z1 - w1 * w1; - if (t1 < 0) n1 = 0; - else { - t1 *= t1; - n1 = t1 * t1 * this.dot4(grad4[gi1], x1, y1, z1, w1); - } - let t2 = 0.6 - x2 * x2 - y2 * y2 - z2 * z2 - w2 * w2; - if (t2 < 0) n2 = 0; - else { - t2 *= t2; - n2 = t2 * t2 * this.dot4(grad4[gi2], x2, y2, z2, w2); - } - let t3 = 0.6 - x3 * x3 - y3 * y3 - z3 * z3 - w3 * w3; - if (t3 < 0) n3 = 0; - else { - t3 *= t3; - n3 = t3 * t3 * this.dot4(grad4[gi3], x3, y3, z3, w3); - } - let t4 = 0.6 - x4 * x4 - y4 * y4 - z4 * z4 - w4 * w4; - if (t4 < 0) n4 = 0; - else { - t4 *= t4; - n4 = t4 * t4 * this.dot4(grad4[gi4], x4, y4, z4, w4); - } - return 27 * (n0 + n1 + n2 + n3 + n4); - } -}; - -// node_modules/three/examples/jsm/shaders/SSAOShader.js -var SSAOShader = { - name: "SSAOShader", - defines: { - "PERSPECTIVE_CAMERA": 1, - "KERNEL_SIZE": 32 - }, - uniforms: { - "tNormal": { value: null }, - "tDepth": { value: null }, - "tNoise": { value: null }, - "kernel": { value: null }, - "cameraNear": { value: null }, - "cameraFar": { value: null }, - "resolution": { value: new Vector2() }, - "cameraProjectionMatrix": { value: new Matrix4() }, - "cameraInverseProjectionMatrix": { value: new Matrix4() }, - "kernelRadius": { value: 8 }, - "minDistance": { value: 5e-3 }, - "maxDistance": { value: 0.05 } - }, - vertexShader: ( - /* glsl */ - ` - - varying vec2 vUv; - - void main() { - - vUv = uv; - - gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 ); - - }` - ), - fragmentShader: ( - /* glsl */ - ` - uniform highp sampler2D tNormal; - uniform highp sampler2D tDepth; - uniform sampler2D tNoise; - - uniform vec3 kernel[ KERNEL_SIZE ]; - - uniform vec2 resolution; - - uniform float cameraNear; - uniform float cameraFar; - uniform mat4 cameraProjectionMatrix; - uniform mat4 cameraInverseProjectionMatrix; - - uniform float kernelRadius; - uniform float minDistance; // avoid artifacts caused by neighbour fragments with minimal depth difference - uniform float maxDistance; // avoid the influence of fragments which are too far away - - varying vec2 vUv; - - #include - - float getDepth( const in vec2 screenPosition ) { - - return texture2D( tDepth, screenPosition ).x; - - } - - float getLinearDepth( const in vec2 screenPosition ) { - - #if PERSPECTIVE_CAMERA == 1 - - float fragCoordZ = texture2D( tDepth, screenPosition ).x; - float viewZ = perspectiveDepthToViewZ( fragCoordZ, cameraNear, cameraFar ); - return viewZToOrthographicDepth( viewZ, cameraNear, cameraFar ); - - #else - - return texture2D( tDepth, screenPosition ).x; - - #endif - - } - - float getViewZ( const in float depth ) { - - #if PERSPECTIVE_CAMERA == 1 - - return perspectiveDepthToViewZ( depth, cameraNear, cameraFar ); - - #else - - return orthographicDepthToViewZ( depth, cameraNear, cameraFar ); - - #endif - - } - - vec3 getViewPosition( const in vec2 screenPosition, const in float depth, const in float viewZ ) { - - float clipW = cameraProjectionMatrix[2][3] * viewZ + cameraProjectionMatrix[3][3]; - - vec4 clipPosition = vec4( ( vec3( screenPosition, depth ) - 0.5 ) * 2.0, 1.0 ); - - clipPosition *= clipW; // unprojection. - - return ( cameraInverseProjectionMatrix * clipPosition ).xyz; - - } - - vec3 getViewNormal( const in vec2 screenPosition ) { - - return unpackRGBToNormal( texture2D( tNormal, screenPosition ).xyz ); - - } - - void main() { - - float depth = getDepth( vUv ); - - if ( depth == 1.0 ) { - - gl_FragColor = vec4( 1.0 ); // don't influence background - - } else { - - float viewZ = getViewZ( depth ); - - vec3 viewPosition = getViewPosition( vUv, depth, viewZ ); - vec3 viewNormal = getViewNormal( vUv ); - - vec2 noiseScale = vec2( resolution.x / 4.0, resolution.y / 4.0 ); - vec3 random = vec3( texture2D( tNoise, vUv * noiseScale ).r ); - - // compute matrix used to reorient a kernel vector - - vec3 tangent = normalize( random - viewNormal * dot( random, viewNormal ) ); - vec3 bitangent = cross( viewNormal, tangent ); - mat3 kernelMatrix = mat3( tangent, bitangent, viewNormal ); - - float occlusion = 0.0; - - for ( int i = 0; i < KERNEL_SIZE; i ++ ) { - - vec3 sampleVector = kernelMatrix * kernel[ i ]; // reorient sample vector in view space - vec3 samplePoint = viewPosition + ( sampleVector * kernelRadius ); // calculate sample point - - vec4 samplePointNDC = cameraProjectionMatrix * vec4( samplePoint, 1.0 ); // project point and calculate NDC - samplePointNDC /= samplePointNDC.w; - - vec2 samplePointUv = samplePointNDC.xy * 0.5 + 0.5; // compute uv coordinates - - float realDepth = getLinearDepth( samplePointUv ); // get linear depth from depth texture - float sampleDepth = viewZToOrthographicDepth( samplePoint.z, cameraNear, cameraFar ); // compute linear depth of the sample view Z value - float delta = sampleDepth - realDepth; - - if ( delta > minDistance && delta < maxDistance ) { // if fragment is before sample point, increase occlusion - - occlusion += 1.0; - - } - - } - - occlusion = clamp( occlusion / float( KERNEL_SIZE ), 0.0, 1.0 ); - - gl_FragColor = vec4( vec3( 1.0 - occlusion ), 1.0 ); - - } - - }` - ) -}; -var SSAODepthShader = { - name: "SSAODepthShader", - defines: { - "PERSPECTIVE_CAMERA": 1 - }, - uniforms: { - "tDepth": { value: null }, - "cameraNear": { value: null }, - "cameraFar": { value: null } - }, - vertexShader: `varying vec2 vUv; - - void main() { - - vUv = uv; - gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 ); - - }`, - fragmentShader: `uniform sampler2D tDepth; - - uniform float cameraNear; - uniform float cameraFar; - - varying vec2 vUv; - - #include - - float getLinearDepth( const in vec2 screenPosition ) { - - #if PERSPECTIVE_CAMERA == 1 - - float fragCoordZ = texture2D( tDepth, screenPosition ).x; - float viewZ = perspectiveDepthToViewZ( fragCoordZ, cameraNear, cameraFar ); - return viewZToOrthographicDepth( viewZ, cameraNear, cameraFar ); - - #else - - return texture2D( tDepth, screenPosition ).x; - - #endif - - } - - void main() { - - float depth = getLinearDepth( vUv ); - gl_FragColor = vec4( vec3( 1.0 - depth ), 1.0 ); - - }` -}; -var SSAOBlurShader = { - name: "SSAOBlurShader", - uniforms: { - "tDiffuse": { value: null }, - "resolution": { value: new Vector2() } - }, - vertexShader: `varying vec2 vUv; - - void main() { - - vUv = uv; - gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 ); - - }`, - fragmentShader: `uniform sampler2D tDiffuse; - - uniform vec2 resolution; - - varying vec2 vUv; - - void main() { - - vec2 texelSize = ( 1.0 / resolution ); - float result = 0.0; - - for ( int i = - 2; i <= 2; i ++ ) { - - for ( int j = - 2; j <= 2; j ++ ) { - - vec2 offset = ( vec2( float( i ), float( j ) ) ) * texelSize; - result += texture2D( tDiffuse, vUv + offset ).r; - - } - - } - - gl_FragColor = vec4( vec3( result / ( 5.0 * 5.0 ) ), 1.0 ); - - }` -}; - -// node_modules/three/examples/jsm/postprocessing/SSAOPass.js -var SSAOPass = class _SSAOPass extends Pass { - constructor(scene, camera, width, height, kernelSize = 32) { - super(); - this.width = width !== void 0 ? width : 512; - this.height = height !== void 0 ? height : 512; - this.clear = true; - this.needsSwap = false; - this.camera = camera; - this.scene = scene; - this.kernelRadius = 8; - this.kernel = []; - this.noiseTexture = null; - this.output = 0; - this.minDistance = 5e-3; - this.maxDistance = 0.1; - this._visibilityCache = /* @__PURE__ */ new Map(); - this.generateSampleKernel(kernelSize); - this.generateRandomKernelRotations(); - const depthTexture = new DepthTexture(); - depthTexture.format = DepthStencilFormat; - depthTexture.type = UnsignedInt248Type; - this.normalRenderTarget = new WebGLRenderTarget(this.width, this.height, { - minFilter: NearestFilter, - magFilter: NearestFilter, - type: HalfFloatType, - depthTexture - }); - this.ssaoRenderTarget = new WebGLRenderTarget(this.width, this.height, { type: HalfFloatType }); - this.blurRenderTarget = this.ssaoRenderTarget.clone(); - this.ssaoMaterial = new ShaderMaterial({ - defines: Object.assign({}, SSAOShader.defines), - uniforms: UniformsUtils.clone(SSAOShader.uniforms), - vertexShader: SSAOShader.vertexShader, - fragmentShader: SSAOShader.fragmentShader, - blending: NoBlending - }); - this.ssaoMaterial.defines["KERNEL_SIZE"] = kernelSize; - this.ssaoMaterial.uniforms["tNormal"].value = this.normalRenderTarget.texture; - this.ssaoMaterial.uniforms["tDepth"].value = this.normalRenderTarget.depthTexture; - this.ssaoMaterial.uniforms["tNoise"].value = this.noiseTexture; - this.ssaoMaterial.uniforms["kernel"].value = this.kernel; - this.ssaoMaterial.uniforms["cameraNear"].value = this.camera.near; - this.ssaoMaterial.uniforms["cameraFar"].value = this.camera.far; - this.ssaoMaterial.uniforms["resolution"].value.set(this.width, this.height); - this.ssaoMaterial.uniforms["cameraProjectionMatrix"].value.copy(this.camera.projectionMatrix); - this.ssaoMaterial.uniforms["cameraInverseProjectionMatrix"].value.copy(this.camera.projectionMatrixInverse); - this.normalMaterial = new MeshNormalMaterial(); - this.normalMaterial.blending = NoBlending; - this.blurMaterial = new ShaderMaterial({ - defines: Object.assign({}, SSAOBlurShader.defines), - uniforms: UniformsUtils.clone(SSAOBlurShader.uniforms), - vertexShader: SSAOBlurShader.vertexShader, - fragmentShader: SSAOBlurShader.fragmentShader - }); - this.blurMaterial.uniforms["tDiffuse"].value = this.ssaoRenderTarget.texture; - this.blurMaterial.uniforms["resolution"].value.set(this.width, this.height); - this.depthRenderMaterial = new ShaderMaterial({ - defines: Object.assign({}, SSAODepthShader.defines), - uniforms: UniformsUtils.clone(SSAODepthShader.uniforms), - vertexShader: SSAODepthShader.vertexShader, - fragmentShader: SSAODepthShader.fragmentShader, - blending: NoBlending - }); - this.depthRenderMaterial.uniforms["tDepth"].value = this.normalRenderTarget.depthTexture; - this.depthRenderMaterial.uniforms["cameraNear"].value = this.camera.near; - this.depthRenderMaterial.uniforms["cameraFar"].value = this.camera.far; - this.copyMaterial = new ShaderMaterial({ - uniforms: UniformsUtils.clone(CopyShader.uniforms), - vertexShader: CopyShader.vertexShader, - fragmentShader: CopyShader.fragmentShader, - transparent: true, - depthTest: false, - depthWrite: false, - blendSrc: DstColorFactor, - blendDst: ZeroFactor, - blendEquation: AddEquation, - blendSrcAlpha: DstAlphaFactor, - blendDstAlpha: ZeroFactor, - blendEquationAlpha: AddEquation - }); - this.fsQuad = new FullScreenQuad(null); - this.originalClearColor = new Color(); - } - dispose() { - this.normalRenderTarget.dispose(); - this.ssaoRenderTarget.dispose(); - this.blurRenderTarget.dispose(); - this.normalMaterial.dispose(); - this.blurMaterial.dispose(); - this.copyMaterial.dispose(); - this.depthRenderMaterial.dispose(); - this.fsQuad.dispose(); - } - render(renderer, writeBuffer, readBuffer) { - this.overrideVisibility(); - this.renderOverride(renderer, this.normalMaterial, this.normalRenderTarget, 7829503, 1); - this.restoreVisibility(); - this.ssaoMaterial.uniforms["kernelRadius"].value = this.kernelRadius; - this.ssaoMaterial.uniforms["minDistance"].value = this.minDistance; - this.ssaoMaterial.uniforms["maxDistance"].value = this.maxDistance; - this.renderPass(renderer, this.ssaoMaterial, this.ssaoRenderTarget); - this.renderPass(renderer, this.blurMaterial, this.blurRenderTarget); - switch (this.output) { - case _SSAOPass.OUTPUT.SSAO: - this.copyMaterial.uniforms["tDiffuse"].value = this.ssaoRenderTarget.texture; - this.copyMaterial.blending = NoBlending; - this.renderPass(renderer, this.copyMaterial, this.renderToScreen ? null : readBuffer); - break; - case _SSAOPass.OUTPUT.Blur: - this.copyMaterial.uniforms["tDiffuse"].value = this.blurRenderTarget.texture; - this.copyMaterial.blending = NoBlending; - this.renderPass(renderer, this.copyMaterial, this.renderToScreen ? null : readBuffer); - break; - case _SSAOPass.OUTPUT.Depth: - this.renderPass(renderer, this.depthRenderMaterial, this.renderToScreen ? null : readBuffer); - break; - case _SSAOPass.OUTPUT.Normal: - this.copyMaterial.uniforms["tDiffuse"].value = this.normalRenderTarget.texture; - this.copyMaterial.blending = NoBlending; - this.renderPass(renderer, this.copyMaterial, this.renderToScreen ? null : readBuffer); - break; - case _SSAOPass.OUTPUT.Default: - this.copyMaterial.uniforms["tDiffuse"].value = this.blurRenderTarget.texture; - this.copyMaterial.blending = CustomBlending; - this.renderPass(renderer, this.copyMaterial, this.renderToScreen ? null : readBuffer); - break; - default: - console.warn("THREE.SSAOPass: Unknown output type."); - } - } - renderPass(renderer, passMaterial, renderTarget, clearColor, clearAlpha) { - renderer.getClearColor(this.originalClearColor); - const originalClearAlpha = renderer.getClearAlpha(); - const originalAutoClear = renderer.autoClear; - renderer.setRenderTarget(renderTarget); - renderer.autoClear = false; - if (clearColor !== void 0 && clearColor !== null) { - renderer.setClearColor(clearColor); - renderer.setClearAlpha(clearAlpha || 0); - renderer.clear(); - } - this.fsQuad.material = passMaterial; - this.fsQuad.render(renderer); - renderer.autoClear = originalAutoClear; - renderer.setClearColor(this.originalClearColor); - renderer.setClearAlpha(originalClearAlpha); - } - renderOverride(renderer, overrideMaterial, renderTarget, clearColor, clearAlpha) { - renderer.getClearColor(this.originalClearColor); - const originalClearAlpha = renderer.getClearAlpha(); - const originalAutoClear = renderer.autoClear; - renderer.setRenderTarget(renderTarget); - renderer.autoClear = false; - clearColor = overrideMaterial.clearColor || clearColor; - clearAlpha = overrideMaterial.clearAlpha || clearAlpha; - if (clearColor !== void 0 && clearColor !== null) { - renderer.setClearColor(clearColor); - renderer.setClearAlpha(clearAlpha || 0); - renderer.clear(); - } - this.scene.overrideMaterial = overrideMaterial; - renderer.render(this.scene, this.camera); - this.scene.overrideMaterial = null; - renderer.autoClear = originalAutoClear; - renderer.setClearColor(this.originalClearColor); - renderer.setClearAlpha(originalClearAlpha); - } - setSize(width, height) { - this.width = width; - this.height = height; - this.ssaoRenderTarget.setSize(width, height); - this.normalRenderTarget.setSize(width, height); - this.blurRenderTarget.setSize(width, height); - this.ssaoMaterial.uniforms["resolution"].value.set(width, height); - this.ssaoMaterial.uniforms["cameraProjectionMatrix"].value.copy(this.camera.projectionMatrix); - this.ssaoMaterial.uniforms["cameraInverseProjectionMatrix"].value.copy(this.camera.projectionMatrixInverse); - this.blurMaterial.uniforms["resolution"].value.set(width, height); - } - generateSampleKernel(kernelSize) { - const kernel = this.kernel; - for (let i = 0; i < kernelSize; i++) { - const sample = new Vector3(); - sample.x = Math.random() * 2 - 1; - sample.y = Math.random() * 2 - 1; - sample.z = Math.random(); - sample.normalize(); - let scale = i / kernelSize; - scale = MathUtils.lerp(0.1, 1, scale * scale); - sample.multiplyScalar(scale); - kernel.push(sample); - } - } - generateRandomKernelRotations() { - const width = 4, height = 4; - const simplex = new SimplexNoise(); - const size = width * height; - const data = new Float32Array(size); - for (let i = 0; i < size; i++) { - const x = Math.random() * 2 - 1; - const y = Math.random() * 2 - 1; - const z = 0; - data[i] = simplex.noise3d(x, y, z); - } - this.noiseTexture = new DataTexture(data, width, height, RedFormat, FloatType); - this.noiseTexture.wrapS = RepeatWrapping; - this.noiseTexture.wrapT = RepeatWrapping; - this.noiseTexture.needsUpdate = true; - } - overrideVisibility() { - const scene = this.scene; - const cache = this._visibilityCache; - scene.traverse(function(object) { - cache.set(object, object.visible); - if (object.isPoints || object.isLine) object.visible = false; - }); - } - restoreVisibility() { - const scene = this.scene; - const cache = this._visibilityCache; - scene.traverse(function(object) { - const visible = cache.get(object); - object.visible = visible; - }); - cache.clear(); - } -}; -SSAOPass.OUTPUT = { - "Default": 0, - "SSAO": 1, - "Blur": 2, - "Depth": 3, - "Normal": 4 -}; -export { - SSAOPass -}; -//# sourceMappingURL=three_examples_jsm_postprocessing_SSAOPass__js.js.map diff --git a/site/interface/site/node_modules/.vite/deps/three_examples_jsm_postprocessing_SSAOPass__js.js.map b/site/interface/site/node_modules/.vite/deps/three_examples_jsm_postprocessing_SSAOPass__js.js.map deleted file mode 100644 index 6ecb934..0000000 --- a/site/interface/site/node_modules/.vite/deps/three_examples_jsm_postprocessing_SSAOPass__js.js.map +++ /dev/null @@ -1,7 +0,0 @@ -{ - "version": 3, - "sources": ["../../three/examples/jsm/math/SimplexNoise.js", "../../three/examples/jsm/shaders/SSAOShader.js", "../../three/examples/jsm/postprocessing/SSAOPass.js"], - "sourcesContent": ["// Ported from Stefan Gustavson's java implementation\n// http://staffwww.itn.liu.se/~stegu/simplexnoise/simplexnoise.pdf\n// Read Stefan's excellent paper for details on how this code works.\n//\n// Sean McCullough banksean@gmail.com\n//\n// Added 4D noise\n\n/**\n * You can pass in a random number generator object if you like.\n * It is assumed to have a random() method.\n */\nclass SimplexNoise {\n\n\tconstructor( r = Math ) {\n\n\t\tthis.grad3 = [[ 1, 1, 0 ], [ - 1, 1, 0 ], [ 1, - 1, 0 ], [ - 1, - 1, 0 ],\n\t\t\t[ 1, 0, 1 ], [ - 1, 0, 1 ], [ 1, 0, - 1 ], [ - 1, 0, - 1 ],\n\t\t\t[ 0, 1, 1 ], [ 0, - 1, 1 ], [ 0, 1, - 1 ], [ 0, - 1, - 1 ]];\n\n\t\tthis.grad4 = [[ 0, 1, 1, 1 ], [ 0, 1, 1, - 1 ], [ 0, 1, - 1, 1 ], [ 0, 1, - 1, - 1 ],\n\t\t\t[ 0, - 1, 1, 1 ], [ 0, - 1, 1, - 1 ], [ 0, - 1, - 1, 1 ], [ 0, - 1, - 1, - 1 ],\n\t\t\t[ 1, 0, 1, 1 ], [ 1, 0, 1, - 1 ], [ 1, 0, - 1, 1 ], [ 1, 0, - 1, - 1 ],\n\t\t\t[ - 1, 0, 1, 1 ], [ - 1, 0, 1, - 1 ], [ - 1, 0, - 1, 1 ], [ - 1, 0, - 1, - 1 ],\n\t\t\t[ 1, 1, 0, 1 ], [ 1, 1, 0, - 1 ], [ 1, - 1, 0, 1 ], [ 1, - 1, 0, - 1 ],\n\t\t\t[ - 1, 1, 0, 1 ], [ - 1, 1, 0, - 1 ], [ - 1, - 1, 0, 1 ], [ - 1, - 1, 0, - 1 ],\n\t\t\t[ 1, 1, 1, 0 ], [ 1, 1, - 1, 0 ], [ 1, - 1, 1, 0 ], [ 1, - 1, - 1, 0 ],\n\t\t\t[ - 1, 1, 1, 0 ], [ - 1, 1, - 1, 0 ], [ - 1, - 1, 1, 0 ], [ - 1, - 1, - 1, 0 ]];\n\n\t\tthis.p = [];\n\n\t\tfor ( let i = 0; i < 256; i ++ ) {\n\n\t\t\tthis.p[ i ] = Math.floor( r.random() * 256 );\n\n\t\t}\n\n\t\t// To remove the need for index wrapping, double the permutation table length\n\t\tthis.perm = [];\n\n\t\tfor ( let i = 0; i < 512; i ++ ) {\n\n\t\t\tthis.perm[ i ] = this.p[ i & 255 ];\n\n\t\t}\n\n\t\t// A lookup table to traverse the simplex around a given point in 4D.\n\t\t// Details can be found where this table is used, in the 4D noise method.\n\t\tthis.simplex = [\n\t\t\t[ 0, 1, 2, 3 ], [ 0, 1, 3, 2 ], [ 0, 0, 0, 0 ], [ 0, 2, 3, 1 ], [ 0, 0, 0, 0 ], [ 0, 0, 0, 0 ], [ 0, 0, 0, 0 ], [ 1, 2, 3, 0 ],\n\t\t\t[ 0, 2, 1, 3 ], [ 0, 0, 0, 0 ], [ 0, 3, 1, 2 ], [ 0, 3, 2, 1 ], [ 0, 0, 0, 0 ], [ 0, 0, 0, 0 ], [ 0, 0, 0, 0 ], [ 1, 3, 2, 0 ],\n\t\t\t[ 0, 0, 0, 0 ], [ 0, 0, 0, 0 ], [ 0, 0, 0, 0 ], [ 0, 0, 0, 0 ], [ 0, 0, 0, 0 ], [ 0, 0, 0, 0 ], [ 0, 0, 0, 0 ], [ 0, 0, 0, 0 ],\n\t\t\t[ 1, 2, 0, 3 ], [ 0, 0, 0, 0 ], [ 1, 3, 0, 2 ], [ 0, 0, 0, 0 ], [ 0, 0, 0, 0 ], [ 0, 0, 0, 0 ], [ 2, 3, 0, 1 ], [ 2, 3, 1, 0 ],\n\t\t\t[ 1, 0, 2, 3 ], [ 1, 0, 3, 2 ], [ 0, 0, 0, 0 ], [ 0, 0, 0, 0 ], [ 0, 0, 0, 0 ], [ 2, 0, 3, 1 ], [ 0, 0, 0, 0 ], [ 2, 1, 3, 0 ],\n\t\t\t[ 0, 0, 0, 0 ], [ 0, 0, 0, 0 ], [ 0, 0, 0, 0 ], [ 0, 0, 0, 0 ], [ 0, 0, 0, 0 ], [ 0, 0, 0, 0 ], [ 0, 0, 0, 0 ], [ 0, 0, 0, 0 ],\n\t\t\t[ 2, 0, 1, 3 ], [ 0, 0, 0, 0 ], [ 0, 0, 0, 0 ], [ 0, 0, 0, 0 ], [ 3, 0, 1, 2 ], [ 3, 0, 2, 1 ], [ 0, 0, 0, 0 ], [ 3, 1, 2, 0 ],\n\t\t\t[ 2, 1, 0, 3 ], [ 0, 0, 0, 0 ], [ 0, 0, 0, 0 ], [ 0, 0, 0, 0 ], [ 3, 1, 0, 2 ], [ 0, 0, 0, 0 ], [ 3, 2, 0, 1 ], [ 3, 2, 1, 0 ]];\n\n\t}\n\n\tdot( g, x, y ) {\n\n\t\treturn g[ 0 ] * x + g[ 1 ] * y;\n\n\t}\n\n\tdot3( g, x, y, z ) {\n\n\t\treturn g[ 0 ] * x + g[ 1 ] * y + g[ 2 ] * z;\n\n\t}\n\n\tdot4( g, x, y, z, w ) {\n\n\t\treturn g[ 0 ] * x + g[ 1 ] * y + g[ 2 ] * z + g[ 3 ] * w;\n\n\t}\n\n\tnoise( xin, yin ) {\n\n\t\tlet n0; // Noise contributions from the three corners\n\t\tlet n1;\n\t\tlet n2;\n\t\t// Skew the input space to determine which simplex cell we're in\n\t\tconst F2 = 0.5 * ( Math.sqrt( 3.0 ) - 1.0 );\n\t\tconst s = ( xin + yin ) * F2; // Hairy factor for 2D\n\t\tconst i = Math.floor( xin + s );\n\t\tconst j = Math.floor( yin + s );\n\t\tconst G2 = ( 3.0 - Math.sqrt( 3.0 ) ) / 6.0;\n\t\tconst t = ( i + j ) * G2;\n\t\tconst X0 = i - t; // Unskew the cell origin back to (x,y) space\n\t\tconst Y0 = j - t;\n\t\tconst x0 = xin - X0; // The x,y distances from the cell origin\n\t\tconst y0 = yin - Y0;\n\n\t\t// For the 2D case, the simplex shape is an equilateral triangle.\n\t\t// Determine which simplex we are in.\n\t\tlet i1; // Offsets for second (middle) corner of simplex in (i,j) coords\n\n\t\tlet j1;\n\t\tif ( x0 > y0 ) {\n\n\t\t\ti1 = 1; j1 = 0;\n\n\t\t\t// lower triangle, XY order: (0,0)->(1,0)->(1,1)\n\n\t\t}\telse {\n\n\t\t\ti1 = 0; j1 = 1;\n\n\t\t} // upper triangle, YX order: (0,0)->(0,1)->(1,1)\n\n\t\t// A step of (1,0) in (i,j) means a step of (1-c,-c) in (x,y), and\n\t\t// a step of (0,1) in (i,j) means a step of (-c,1-c) in (x,y), where\n\t\t// c = (3-sqrt(3))/6\n\t\tconst x1 = x0 - i1 + G2; // Offsets for middle corner in (x,y) unskewed coords\n\t\tconst y1 = y0 - j1 + G2;\n\t\tconst x2 = x0 - 1.0 + 2.0 * G2; // Offsets for last corner in (x,y) unskewed coords\n\t\tconst y2 = y0 - 1.0 + 2.0 * G2;\n\t\t// Work out the hashed gradient indices of the three simplex corners\n\t\tconst ii = i & 255;\n\t\tconst jj = j & 255;\n\t\tconst gi0 = this.perm[ ii + this.perm[ jj ] ] % 12;\n\t\tconst gi1 = this.perm[ ii + i1 + this.perm[ jj + j1 ] ] % 12;\n\t\tconst gi2 = this.perm[ ii + 1 + this.perm[ jj + 1 ] ] % 12;\n\t\t// Calculate the contribution from the three corners\n\t\tlet t0 = 0.5 - x0 * x0 - y0 * y0;\n\t\tif ( t0 < 0 ) n0 = 0.0;\n\t\telse {\n\n\t\t\tt0 *= t0;\n\t\t\tn0 = t0 * t0 * this.dot( this.grad3[ gi0 ], x0, y0 ); // (x,y) of grad3 used for 2D gradient\n\n\t\t}\n\n\t\tlet t1 = 0.5 - x1 * x1 - y1 * y1;\n\t\tif ( t1 < 0 ) n1 = 0.0;\n\t\telse {\n\n\t\t\tt1 *= t1;\n\t\t\tn1 = t1 * t1 * this.dot( this.grad3[ gi1 ], x1, y1 );\n\n\t\t}\n\n\t\tlet t2 = 0.5 - x2 * x2 - y2 * y2;\n\t\tif ( t2 < 0 ) n2 = 0.0;\n\t\telse {\n\n\t\t\tt2 *= t2;\n\t\t\tn2 = t2 * t2 * this.dot( this.grad3[ gi2 ], x2, y2 );\n\n\t\t}\n\n\t\t// Add contributions from each corner to get the final noise value.\n\t\t// The result is scaled to return values in the interval [-1,1].\n\t\treturn 70.0 * ( n0 + n1 + n2 );\n\n\t}\n\n\t// 3D simplex noise\n\tnoise3d( xin, yin, zin ) {\n\n\t\tlet n0; // Noise contributions from the four corners\n\t\tlet n1;\n\t\tlet n2;\n\t\tlet n3;\n\t\t// Skew the input space to determine which simplex cell we're in\n\t\tconst F3 = 1.0 / 3.0;\n\t\tconst s = ( xin + yin + zin ) * F3; // Very nice and simple skew factor for 3D\n\t\tconst i = Math.floor( xin + s );\n\t\tconst j = Math.floor( yin + s );\n\t\tconst k = Math.floor( zin + s );\n\t\tconst G3 = 1.0 / 6.0; // Very nice and simple unskew factor, too\n\t\tconst t = ( i + j + k ) * G3;\n\t\tconst X0 = i - t; // Unskew the cell origin back to (x,y,z) space\n\t\tconst Y0 = j - t;\n\t\tconst Z0 = k - t;\n\t\tconst x0 = xin - X0; // The x,y,z distances from the cell origin\n\t\tconst y0 = yin - Y0;\n\t\tconst z0 = zin - Z0;\n\n\t\t// For the 3D case, the simplex shape is a slightly irregular tetrahedron.\n\t\t// Determine which simplex we are in.\n\t\tlet i1; // Offsets for second corner of simplex in (i,j,k) coords\n\n\t\tlet j1;\n\t\tlet k1;\n\t\tlet i2; // Offsets for third corner of simplex in (i,j,k) coords\n\t\tlet j2;\n\t\tlet k2;\n\t\tif ( x0 >= y0 ) {\n\n\t\t\tif ( y0 >= z0 ) {\n\n\t\t\t\ti1 = 1; j1 = 0; k1 = 0; i2 = 1; j2 = 1; k2 = 0;\n\n\t\t\t\t// X Y Z order\n\n\t\t\t} else if ( x0 >= z0 ) {\n\n\t\t\t\ti1 = 1; j1 = 0; k1 = 0; i2 = 1; j2 = 0; k2 = 1;\n\n\t\t\t\t// X Z Y order\n\n\t\t\t} else {\n\n\t\t\t\ti1 = 0; j1 = 0; k1 = 1; i2 = 1; j2 = 0; k2 = 1;\n\n\t\t\t} // Z X Y order\n\n\t\t} else { // x0 y0 ) ? 32 : 0;\n\t\tconst c2 = ( x0 > z0 ) ? 16 : 0;\n\t\tconst c3 = ( y0 > z0 ) ? 8 : 0;\n\t\tconst c4 = ( x0 > w0 ) ? 4 : 0;\n\t\tconst c5 = ( y0 > w0 ) ? 2 : 0;\n\t\tconst c6 = ( z0 > w0 ) ? 1 : 0;\n\t\tconst c = c1 + c2 + c3 + c4 + c5 + c6;\n\n\t\t// simplex[c] is a 4-vector with the numbers 0, 1, 2 and 3 in some order.\n\t\t// Many values of c will never occur, since e.g. x>y>z>w makes x= 3 ? 1 : 0;\n\t\tconst j1 = simplex[ c ][ 1 ] >= 3 ? 1 : 0;\n\t\tconst k1 = simplex[ c ][ 2 ] >= 3 ? 1 : 0;\n\t\tconst l1 = simplex[ c ][ 3 ] >= 3 ? 1 : 0;\n\t\t// The number 2 in the \"simplex\" array is at the second largest coordinate.\n\t\tconst i2 = simplex[ c ][ 0 ] >= 2 ? 1 : 0;\n\t\tconst j2 = simplex[ c ][ 1 ] >= 2 ? 1 : 0;\n\t\tconst k2 = simplex[ c ][ 2 ] >= 2 ? 1 : 0;\n\t\tconst l2 = simplex[ c ][ 3 ] >= 2 ? 1 : 0;\n\t\t// The number 1 in the \"simplex\" array is at the second smallest coordinate.\n\t\tconst i3 = simplex[ c ][ 0 ] >= 1 ? 1 : 0;\n\t\tconst j3 = simplex[ c ][ 1 ] >= 1 ? 1 : 0;\n\t\tconst k3 = simplex[ c ][ 2 ] >= 1 ? 1 : 0;\n\t\tconst l3 = simplex[ c ][ 3 ] >= 1 ? 1 : 0;\n\t\t// The fifth corner has all coordinate offsets = 1, so no need to look that up.\n\t\tconst x1 = x0 - i1 + G4; // Offsets for second corner in (x,y,z,w) coords\n\t\tconst y1 = y0 - j1 + G4;\n\t\tconst z1 = z0 - k1 + G4;\n\t\tconst w1 = w0 - l1 + G4;\n\t\tconst x2 = x0 - i2 + 2.0 * G4; // Offsets for third corner in (x,y,z,w) coords\n\t\tconst y2 = y0 - j2 + 2.0 * G4;\n\t\tconst z2 = z0 - k2 + 2.0 * G4;\n\t\tconst w2 = w0 - l2 + 2.0 * G4;\n\t\tconst x3 = x0 - i3 + 3.0 * G4; // Offsets for fourth corner in (x,y,z,w) coords\n\t\tconst y3 = y0 - j3 + 3.0 * G4;\n\t\tconst z3 = z0 - k3 + 3.0 * G4;\n\t\tconst w3 = w0 - l3 + 3.0 * G4;\n\t\tconst x4 = x0 - 1.0 + 4.0 * G4; // Offsets for last corner in (x,y,z,w) coords\n\t\tconst y4 = y0 - 1.0 + 4.0 * G4;\n\t\tconst z4 = z0 - 1.0 + 4.0 * G4;\n\t\tconst w4 = w0 - 1.0 + 4.0 * G4;\n\t\t// Work out the hashed gradient indices of the five simplex corners\n\t\tconst ii = i & 255;\n\t\tconst jj = j & 255;\n\t\tconst kk = k & 255;\n\t\tconst ll = l & 255;\n\t\tconst gi0 = perm[ ii + perm[ jj + perm[ kk + perm[ ll ] ] ] ] % 32;\n\t\tconst gi1 = perm[ ii + i1 + perm[ jj + j1 + perm[ kk + k1 + perm[ ll + l1 ] ] ] ] % 32;\n\t\tconst gi2 = perm[ ii + i2 + perm[ jj + j2 + perm[ kk + k2 + perm[ ll + l2 ] ] ] ] % 32;\n\t\tconst gi3 = perm[ ii + i3 + perm[ jj + j3 + perm[ kk + k3 + perm[ ll + l3 ] ] ] ] % 32;\n\t\tconst gi4 = perm[ ii + 1 + perm[ jj + 1 + perm[ kk + 1 + perm[ ll + 1 ] ] ] ] % 32;\n\t\t// Calculate the contribution from the five corners\n\t\tlet t0 = 0.6 - x0 * x0 - y0 * y0 - z0 * z0 - w0 * w0;\n\t\tif ( t0 < 0 ) n0 = 0.0;\n\t\telse {\n\n\t\t\tt0 *= t0;\n\t\t\tn0 = t0 * t0 * this.dot4( grad4[ gi0 ], x0, y0, z0, w0 );\n\n\t\t}\n\n\t\tlet t1 = 0.6 - x1 * x1 - y1 * y1 - z1 * z1 - w1 * w1;\n\t\tif ( t1 < 0 ) n1 = 0.0;\n\t\telse {\n\n\t\t\tt1 *= t1;\n\t\t\tn1 = t1 * t1 * this.dot4( grad4[ gi1 ], x1, y1, z1, w1 );\n\n\t\t}\n\n\t\tlet t2 = 0.6 - x2 * x2 - y2 * y2 - z2 * z2 - w2 * w2;\n\t\tif ( t2 < 0 ) n2 = 0.0;\n\t\telse {\n\n\t\t\tt2 *= t2;\n\t\t\tn2 = t2 * t2 * this.dot4( grad4[ gi2 ], x2, y2, z2, w2 );\n\n\t\t}\n\n\t\tlet t3 = 0.6 - x3 * x3 - y3 * y3 - z3 * z3 - w3 * w3;\n\t\tif ( t3 < 0 ) n3 = 0.0;\n\t\telse {\n\n\t\t\tt3 *= t3;\n\t\t\tn3 = t3 * t3 * this.dot4( grad4[ gi3 ], x3, y3, z3, w3 );\n\n\t\t}\n\n\t\tlet t4 = 0.6 - x4 * x4 - y4 * y4 - z4 * z4 - w4 * w4;\n\t\tif ( t4 < 0 ) n4 = 0.0;\n\t\telse {\n\n\t\t\tt4 *= t4;\n\t\t\tn4 = t4 * t4 * this.dot4( grad4[ gi4 ], x4, y4, z4, w4 );\n\n\t\t}\n\n\t\t// Sum up and scale the result to cover the range [-1,1]\n\t\treturn 27.0 * ( n0 + n1 + n2 + n3 + n4 );\n\n\t}\n\n}\n\nexport { SimplexNoise };\n", "import {\n\tMatrix4,\n\tVector2\n} from 'three';\n\n/**\n * References:\n * http://john-chapman-graphics.blogspot.com/2013/01/ssao-tutorial.html\n * https://learnopengl.com/Advanced-Lighting/SSAO\n * https://github.com/McNopper/OpenGL/blob/master/Example28/shader/ssao.frag.glsl\n */\n\nconst SSAOShader = {\n\n\tname: 'SSAOShader',\n\n\tdefines: {\n\t\t'PERSPECTIVE_CAMERA': 1,\n\t\t'KERNEL_SIZE': 32\n\t},\n\n\tuniforms: {\n\n\t\t'tNormal': { value: null },\n\t\t'tDepth': { value: null },\n\t\t'tNoise': { value: null },\n\t\t'kernel': { value: null },\n\t\t'cameraNear': { value: null },\n\t\t'cameraFar': { value: null },\n\t\t'resolution': { value: new Vector2() },\n\t\t'cameraProjectionMatrix': { value: new Matrix4() },\n\t\t'cameraInverseProjectionMatrix': { value: new Matrix4() },\n\t\t'kernelRadius': { value: 8 },\n\t\t'minDistance': { value: 0.005 },\n\t\t'maxDistance': { value: 0.05 },\n\n\t},\n\n\tvertexShader: /* glsl */`\n\n\t\tvarying vec2 vUv;\n\n\t\tvoid main() {\n\n\t\t\tvUv = uv;\n\n\t\t\tgl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\n\n\t\t}`,\n\n\tfragmentShader: /* glsl */`\n\t\tuniform highp sampler2D tNormal;\n\t\tuniform highp sampler2D tDepth;\n\t\tuniform sampler2D tNoise;\n\n\t\tuniform vec3 kernel[ KERNEL_SIZE ];\n\n\t\tuniform vec2 resolution;\n\n\t\tuniform float cameraNear;\n\t\tuniform float cameraFar;\n\t\tuniform mat4 cameraProjectionMatrix;\n\t\tuniform mat4 cameraInverseProjectionMatrix;\n\n\t\tuniform float kernelRadius;\n\t\tuniform float minDistance; // avoid artifacts caused by neighbour fragments with minimal depth difference\n\t\tuniform float maxDistance; // avoid the influence of fragments which are too far away\n\n\t\tvarying vec2 vUv;\n\n\t\t#include \n\n\t\tfloat getDepth( const in vec2 screenPosition ) {\n\n\t\t\treturn texture2D( tDepth, screenPosition ).x;\n\n\t\t}\n\n\t\tfloat getLinearDepth( const in vec2 screenPosition ) {\n\n\t\t\t#if PERSPECTIVE_CAMERA == 1\n\n\t\t\t\tfloat fragCoordZ = texture2D( tDepth, screenPosition ).x;\n\t\t\t\tfloat viewZ = perspectiveDepthToViewZ( fragCoordZ, cameraNear, cameraFar );\n\t\t\t\treturn viewZToOrthographicDepth( viewZ, cameraNear, cameraFar );\n\n\t\t\t#else\n\n\t\t\t\treturn texture2D( tDepth, screenPosition ).x;\n\n\t\t\t#endif\n\n\t\t}\n\n\t\tfloat getViewZ( const in float depth ) {\n\n\t\t\t#if PERSPECTIVE_CAMERA == 1\n\n\t\t\t\treturn perspectiveDepthToViewZ( depth, cameraNear, cameraFar );\n\n\t\t\t#else\n\n\t\t\t\treturn orthographicDepthToViewZ( depth, cameraNear, cameraFar );\n\n\t\t\t#endif\n\n\t\t}\n\n\t\tvec3 getViewPosition( const in vec2 screenPosition, const in float depth, const in float viewZ ) {\n\n\t\t\tfloat clipW = cameraProjectionMatrix[2][3] * viewZ + cameraProjectionMatrix[3][3];\n\n\t\t\tvec4 clipPosition = vec4( ( vec3( screenPosition, depth ) - 0.5 ) * 2.0, 1.0 );\n\n\t\t\tclipPosition *= clipW; // unprojection.\n\n\t\t\treturn ( cameraInverseProjectionMatrix * clipPosition ).xyz;\n\n\t\t}\n\n\t\tvec3 getViewNormal( const in vec2 screenPosition ) {\n\n\t\t\treturn unpackRGBToNormal( texture2D( tNormal, screenPosition ).xyz );\n\n\t\t}\n\n\t\tvoid main() {\n\n\t\t\tfloat depth = getDepth( vUv );\n\n\t\t\tif ( depth == 1.0 ) {\n\n\t\t\t\tgl_FragColor = vec4( 1.0 ); // don't influence background\n\t\t\t\t\n\t\t\t} else {\n\n\t\t\t\tfloat viewZ = getViewZ( depth );\n\n\t\t\t\tvec3 viewPosition = getViewPosition( vUv, depth, viewZ );\n\t\t\t\tvec3 viewNormal = getViewNormal( vUv );\n\n\t\t\t\tvec2 noiseScale = vec2( resolution.x / 4.0, resolution.y / 4.0 );\n\t\t\t\tvec3 random = vec3( texture2D( tNoise, vUv * noiseScale ).r );\n\n\t\t\t\t// compute matrix used to reorient a kernel vector\n\n\t\t\t\tvec3 tangent = normalize( random - viewNormal * dot( random, viewNormal ) );\n\t\t\t\tvec3 bitangent = cross( viewNormal, tangent );\n\t\t\t\tmat3 kernelMatrix = mat3( tangent, bitangent, viewNormal );\n\n\t\t\t\tfloat occlusion = 0.0;\n\n\t\t\t\tfor ( int i = 0; i < KERNEL_SIZE; i ++ ) {\n\n\t\t\t\t\tvec3 sampleVector = kernelMatrix * kernel[ i ]; // reorient sample vector in view space\n\t\t\t\t\tvec3 samplePoint = viewPosition + ( sampleVector * kernelRadius ); // calculate sample point\n\n\t\t\t\t\tvec4 samplePointNDC = cameraProjectionMatrix * vec4( samplePoint, 1.0 ); // project point and calculate NDC\n\t\t\t\t\tsamplePointNDC /= samplePointNDC.w;\n\n\t\t\t\t\tvec2 samplePointUv = samplePointNDC.xy * 0.5 + 0.5; // compute uv coordinates\n\n\t\t\t\t\tfloat realDepth = getLinearDepth( samplePointUv ); // get linear depth from depth texture\n\t\t\t\t\tfloat sampleDepth = viewZToOrthographicDepth( samplePoint.z, cameraNear, cameraFar ); // compute linear depth of the sample view Z value\n\t\t\t\t\tfloat delta = sampleDepth - realDepth;\n\n\t\t\t\t\tif ( delta > minDistance && delta < maxDistance ) { // if fragment is before sample point, increase occlusion\n\n\t\t\t\t\t\tocclusion += 1.0;\n\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tocclusion = clamp( occlusion / float( KERNEL_SIZE ), 0.0, 1.0 );\n\n\t\t\t\tgl_FragColor = vec4( vec3( 1.0 - occlusion ), 1.0 );\n\n\t\t\t}\n\n\t\t}`\n\n};\n\nconst SSAODepthShader = {\n\n\tname: 'SSAODepthShader',\n\n\tdefines: {\n\t\t'PERSPECTIVE_CAMERA': 1\n\t},\n\n\tuniforms: {\n\n\t\t'tDepth': { value: null },\n\t\t'cameraNear': { value: null },\n\t\t'cameraFar': { value: null },\n\n\t},\n\n\tvertexShader:\n\n\t\t`varying vec2 vUv;\n\n\t\tvoid main() {\n\n\t\t\tvUv = uv;\n\t\t\tgl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\n\n\t\t}`,\n\n\tfragmentShader:\n\n\t\t`uniform sampler2D tDepth;\n\n\t\tuniform float cameraNear;\n\t\tuniform float cameraFar;\n\n\t\tvarying vec2 vUv;\n\n\t\t#include \n\n\t\tfloat getLinearDepth( const in vec2 screenPosition ) {\n\n\t\t\t#if PERSPECTIVE_CAMERA == 1\n\n\t\t\t\tfloat fragCoordZ = texture2D( tDepth, screenPosition ).x;\n\t\t\t\tfloat viewZ = perspectiveDepthToViewZ( fragCoordZ, cameraNear, cameraFar );\n\t\t\t\treturn viewZToOrthographicDepth( viewZ, cameraNear, cameraFar );\n\n\t\t\t#else\n\n\t\t\t\treturn texture2D( tDepth, screenPosition ).x;\n\n\t\t\t#endif\n\n\t\t}\n\n\t\tvoid main() {\n\n\t\t\tfloat depth = getLinearDepth( vUv );\n\t\t\tgl_FragColor = vec4( vec3( 1.0 - depth ), 1.0 );\n\n\t\t}`\n\n};\n\nconst SSAOBlurShader = {\n\n\tname: 'SSAOBlurShader',\n\n\tuniforms: {\n\n\t\t'tDiffuse': { value: null },\n\t\t'resolution': { value: new Vector2() }\n\n\t},\n\n\tvertexShader:\n\n\t\t`varying vec2 vUv;\n\n\t\tvoid main() {\n\n\t\t\tvUv = uv;\n\t\t\tgl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\n\n\t\t}`,\n\n\tfragmentShader:\n\n\t\t`uniform sampler2D tDiffuse;\n\n\t\tuniform vec2 resolution;\n\n\t\tvarying vec2 vUv;\n\n\t\tvoid main() {\n\n\t\t\tvec2 texelSize = ( 1.0 / resolution );\n\t\t\tfloat result = 0.0;\n\n\t\t\tfor ( int i = - 2; i <= 2; i ++ ) {\n\n\t\t\t\tfor ( int j = - 2; j <= 2; j ++ ) {\n\n\t\t\t\t\tvec2 offset = ( vec2( float( i ), float( j ) ) ) * texelSize;\n\t\t\t\t\tresult += texture2D( tDiffuse, vUv + offset ).r;\n\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tgl_FragColor = vec4( vec3( result / ( 5.0 * 5.0 ) ), 1.0 );\n\n\t\t}`\n\n};\n\nexport { SSAOShader, SSAODepthShader, SSAOBlurShader };\n", "import {\n\tAddEquation,\n\tColor,\n\tCustomBlending,\n\tDataTexture,\n\tDepthTexture,\n\tDstAlphaFactor,\n\tDstColorFactor,\n\tFloatType,\n\tHalfFloatType,\n\tMathUtils,\n\tMeshNormalMaterial,\n\tNearestFilter,\n\tNoBlending,\n\tRedFormat,\n\tDepthStencilFormat,\n\tUnsignedInt248Type,\n\tRepeatWrapping,\n\tShaderMaterial,\n\tUniformsUtils,\n\tVector3,\n\tWebGLRenderTarget,\n\tZeroFactor\n} from 'three';\nimport { Pass, FullScreenQuad } from './Pass.js';\nimport { SimplexNoise } from '../math/SimplexNoise.js';\nimport { SSAOShader } from '../shaders/SSAOShader.js';\nimport { SSAOBlurShader } from '../shaders/SSAOShader.js';\nimport { SSAODepthShader } from '../shaders/SSAOShader.js';\nimport { CopyShader } from '../shaders/CopyShader.js';\n\nclass SSAOPass extends Pass {\n\n\tconstructor( scene, camera, width, height, kernelSize = 32 ) {\n\n\t\tsuper();\n\n\t\tthis.width = ( width !== undefined ) ? width : 512;\n\t\tthis.height = ( height !== undefined ) ? height : 512;\n\n\t\tthis.clear = true;\n\t\tthis.needsSwap = false;\n\n\t\tthis.camera = camera;\n\t\tthis.scene = scene;\n\n\t\tthis.kernelRadius = 8;\n\t\tthis.kernel = [];\n\t\tthis.noiseTexture = null;\n\t\tthis.output = 0;\n\n\t\tthis.minDistance = 0.005;\n\t\tthis.maxDistance = 0.1;\n\n\t\tthis._visibilityCache = new Map();\n\n\t\t//\n\n\t\tthis.generateSampleKernel( kernelSize );\n\t\tthis.generateRandomKernelRotations();\n\n\t\t// depth texture\n\n\t\tconst depthTexture = new DepthTexture();\n\t\tdepthTexture.format = DepthStencilFormat;\n\t\tdepthTexture.type = UnsignedInt248Type;\n\n\t\t// normal render target with depth buffer\n\n\t\tthis.normalRenderTarget = new WebGLRenderTarget( this.width, this.height, {\n\t\t\tminFilter: NearestFilter,\n\t\t\tmagFilter: NearestFilter,\n\t\t\ttype: HalfFloatType,\n\t\t\tdepthTexture: depthTexture\n\t\t} );\n\n\t\t// ssao render target\n\n\t\tthis.ssaoRenderTarget = new WebGLRenderTarget( this.width, this.height, { type: HalfFloatType } );\n\n\t\tthis.blurRenderTarget = this.ssaoRenderTarget.clone();\n\n\t\t// ssao material\n\n\t\tthis.ssaoMaterial = new ShaderMaterial( {\n\t\t\tdefines: Object.assign( {}, SSAOShader.defines ),\n\t\t\tuniforms: UniformsUtils.clone( SSAOShader.uniforms ),\n\t\t\tvertexShader: SSAOShader.vertexShader,\n\t\t\tfragmentShader: SSAOShader.fragmentShader,\n\t\t\tblending: NoBlending\n\t\t} );\n\n\t\tthis.ssaoMaterial.defines[ 'KERNEL_SIZE' ] = kernelSize;\n\n\t\tthis.ssaoMaterial.uniforms[ 'tNormal' ].value = this.normalRenderTarget.texture;\n\t\tthis.ssaoMaterial.uniforms[ 'tDepth' ].value = this.normalRenderTarget.depthTexture;\n\t\tthis.ssaoMaterial.uniforms[ 'tNoise' ].value = this.noiseTexture;\n\t\tthis.ssaoMaterial.uniforms[ 'kernel' ].value = this.kernel;\n\t\tthis.ssaoMaterial.uniforms[ 'cameraNear' ].value = this.camera.near;\n\t\tthis.ssaoMaterial.uniforms[ 'cameraFar' ].value = this.camera.far;\n\t\tthis.ssaoMaterial.uniforms[ 'resolution' ].value.set( this.width, this.height );\n\t\tthis.ssaoMaterial.uniforms[ 'cameraProjectionMatrix' ].value.copy( this.camera.projectionMatrix );\n\t\tthis.ssaoMaterial.uniforms[ 'cameraInverseProjectionMatrix' ].value.copy( this.camera.projectionMatrixInverse );\n\n\t\t// normal material\n\n\t\tthis.normalMaterial = new MeshNormalMaterial();\n\t\tthis.normalMaterial.blending = NoBlending;\n\n\t\t// blur material\n\n\t\tthis.blurMaterial = new ShaderMaterial( {\n\t\t\tdefines: Object.assign( {}, SSAOBlurShader.defines ),\n\t\t\tuniforms: UniformsUtils.clone( SSAOBlurShader.uniforms ),\n\t\t\tvertexShader: SSAOBlurShader.vertexShader,\n\t\t\tfragmentShader: SSAOBlurShader.fragmentShader\n\t\t} );\n\t\tthis.blurMaterial.uniforms[ 'tDiffuse' ].value = this.ssaoRenderTarget.texture;\n\t\tthis.blurMaterial.uniforms[ 'resolution' ].value.set( this.width, this.height );\n\n\t\t// material for rendering the depth\n\n\t\tthis.depthRenderMaterial = new ShaderMaterial( {\n\t\t\tdefines: Object.assign( {}, SSAODepthShader.defines ),\n\t\t\tuniforms: UniformsUtils.clone( SSAODepthShader.uniforms ),\n\t\t\tvertexShader: SSAODepthShader.vertexShader,\n\t\t\tfragmentShader: SSAODepthShader.fragmentShader,\n\t\t\tblending: NoBlending\n\t\t} );\n\t\tthis.depthRenderMaterial.uniforms[ 'tDepth' ].value = this.normalRenderTarget.depthTexture;\n\t\tthis.depthRenderMaterial.uniforms[ 'cameraNear' ].value = this.camera.near;\n\t\tthis.depthRenderMaterial.uniforms[ 'cameraFar' ].value = this.camera.far;\n\n\t\t// material for rendering the content of a render target\n\n\t\tthis.copyMaterial = new ShaderMaterial( {\n\t\t\tuniforms: UniformsUtils.clone( CopyShader.uniforms ),\n\t\t\tvertexShader: CopyShader.vertexShader,\n\t\t\tfragmentShader: CopyShader.fragmentShader,\n\t\t\ttransparent: true,\n\t\t\tdepthTest: false,\n\t\t\tdepthWrite: false,\n\t\t\tblendSrc: DstColorFactor,\n\t\t\tblendDst: ZeroFactor,\n\t\t\tblendEquation: AddEquation,\n\t\t\tblendSrcAlpha: DstAlphaFactor,\n\t\t\tblendDstAlpha: ZeroFactor,\n\t\t\tblendEquationAlpha: AddEquation\n\t\t} );\n\n\t\tthis.fsQuad = new FullScreenQuad( null );\n\n\t\tthis.originalClearColor = new Color();\n\n\t}\n\n\tdispose() {\n\n\t\t// dispose render targets\n\n\t\tthis.normalRenderTarget.dispose();\n\t\tthis.ssaoRenderTarget.dispose();\n\t\tthis.blurRenderTarget.dispose();\n\n\t\t// dispose materials\n\n\t\tthis.normalMaterial.dispose();\n\t\tthis.blurMaterial.dispose();\n\t\tthis.copyMaterial.dispose();\n\t\tthis.depthRenderMaterial.dispose();\n\n\t\t// dipsose full screen quad\n\n\t\tthis.fsQuad.dispose();\n\n\t}\n\n\trender( renderer, writeBuffer, readBuffer /*, deltaTime, maskActive */ ) {\n\n\t\t// render normals and depth (honor only meshes, points and lines do not contribute to SSAO)\n\n\t\tthis.overrideVisibility();\n\t\tthis.renderOverride( renderer, this.normalMaterial, this.normalRenderTarget, 0x7777ff, 1.0 );\n\t\tthis.restoreVisibility();\n\n\t\t// render SSAO\n\n\t\tthis.ssaoMaterial.uniforms[ 'kernelRadius' ].value = this.kernelRadius;\n\t\tthis.ssaoMaterial.uniforms[ 'minDistance' ].value = this.minDistance;\n\t\tthis.ssaoMaterial.uniforms[ 'maxDistance' ].value = this.maxDistance;\n\t\tthis.renderPass( renderer, this.ssaoMaterial, this.ssaoRenderTarget );\n\n\t\t// render blur\n\n\t\tthis.renderPass( renderer, this.blurMaterial, this.blurRenderTarget );\n\n\t\t// output result to screen\n\n\t\tswitch ( this.output ) {\n\n\t\t\tcase SSAOPass.OUTPUT.SSAO:\n\n\t\t\t\tthis.copyMaterial.uniforms[ 'tDiffuse' ].value = this.ssaoRenderTarget.texture;\n\t\t\t\tthis.copyMaterial.blending = NoBlending;\n\t\t\t\tthis.renderPass( renderer, this.copyMaterial, this.renderToScreen ? null : readBuffer );\n\n\t\t\t\tbreak;\n\n\t\t\tcase SSAOPass.OUTPUT.Blur:\n\n\t\t\t\tthis.copyMaterial.uniforms[ 'tDiffuse' ].value = this.blurRenderTarget.texture;\n\t\t\t\tthis.copyMaterial.blending = NoBlending;\n\t\t\t\tthis.renderPass( renderer, this.copyMaterial, this.renderToScreen ? null : readBuffer );\n\n\t\t\t\tbreak;\n\n\t\t\tcase SSAOPass.OUTPUT.Depth:\n\n\t\t\t\tthis.renderPass( renderer, this.depthRenderMaterial, this.renderToScreen ? null : readBuffer );\n\n\t\t\t\tbreak;\n\n\t\t\tcase SSAOPass.OUTPUT.Normal:\n\n\t\t\t\tthis.copyMaterial.uniforms[ 'tDiffuse' ].value = this.normalRenderTarget.texture;\n\t\t\t\tthis.copyMaterial.blending = NoBlending;\n\t\t\t\tthis.renderPass( renderer, this.copyMaterial, this.renderToScreen ? null : readBuffer );\n\n\t\t\t\tbreak;\n\n\t\t\tcase SSAOPass.OUTPUT.Default:\n\n\t\t\t\tthis.copyMaterial.uniforms[ 'tDiffuse' ].value = this.blurRenderTarget.texture;\n\t\t\t\tthis.copyMaterial.blending = CustomBlending;\n\t\t\t\tthis.renderPass( renderer, this.copyMaterial, this.renderToScreen ? null : readBuffer );\n\n\t\t\t\tbreak;\n\n\t\t\tdefault:\n\t\t\t\tconsole.warn( 'THREE.SSAOPass: Unknown output type.' );\n\n\t\t}\n\n\t}\n\n\trenderPass( renderer, passMaterial, renderTarget, clearColor, clearAlpha ) {\n\n\t\t// save original state\n\t\trenderer.getClearColor( this.originalClearColor );\n\t\tconst originalClearAlpha = renderer.getClearAlpha();\n\t\tconst originalAutoClear = renderer.autoClear;\n\n\t\trenderer.setRenderTarget( renderTarget );\n\n\t\t// setup pass state\n\t\trenderer.autoClear = false;\n\t\tif ( ( clearColor !== undefined ) && ( clearColor !== null ) ) {\n\n\t\t\trenderer.setClearColor( clearColor );\n\t\t\trenderer.setClearAlpha( clearAlpha || 0.0 );\n\t\t\trenderer.clear();\n\n\t\t}\n\n\t\tthis.fsQuad.material = passMaterial;\n\t\tthis.fsQuad.render( renderer );\n\n\t\t// restore original state\n\t\trenderer.autoClear = originalAutoClear;\n\t\trenderer.setClearColor( this.originalClearColor );\n\t\trenderer.setClearAlpha( originalClearAlpha );\n\n\t}\n\n\trenderOverride( renderer, overrideMaterial, renderTarget, clearColor, clearAlpha ) {\n\n\t\trenderer.getClearColor( this.originalClearColor );\n\t\tconst originalClearAlpha = renderer.getClearAlpha();\n\t\tconst originalAutoClear = renderer.autoClear;\n\n\t\trenderer.setRenderTarget( renderTarget );\n\t\trenderer.autoClear = false;\n\n\t\tclearColor = overrideMaterial.clearColor || clearColor;\n\t\tclearAlpha = overrideMaterial.clearAlpha || clearAlpha;\n\n\t\tif ( ( clearColor !== undefined ) && ( clearColor !== null ) ) {\n\n\t\t\trenderer.setClearColor( clearColor );\n\t\t\trenderer.setClearAlpha( clearAlpha || 0.0 );\n\t\t\trenderer.clear();\n\n\t\t}\n\n\t\tthis.scene.overrideMaterial = overrideMaterial;\n\t\trenderer.render( this.scene, this.camera );\n\t\tthis.scene.overrideMaterial = null;\n\n\t\t// restore original state\n\n\t\trenderer.autoClear = originalAutoClear;\n\t\trenderer.setClearColor( this.originalClearColor );\n\t\trenderer.setClearAlpha( originalClearAlpha );\n\n\t}\n\n\tsetSize( width, height ) {\n\n\t\tthis.width = width;\n\t\tthis.height = height;\n\n\t\tthis.ssaoRenderTarget.setSize( width, height );\n\t\tthis.normalRenderTarget.setSize( width, height );\n\t\tthis.blurRenderTarget.setSize( width, height );\n\n\t\tthis.ssaoMaterial.uniforms[ 'resolution' ].value.set( width, height );\n\t\tthis.ssaoMaterial.uniforms[ 'cameraProjectionMatrix' ].value.copy( this.camera.projectionMatrix );\n\t\tthis.ssaoMaterial.uniforms[ 'cameraInverseProjectionMatrix' ].value.copy( this.camera.projectionMatrixInverse );\n\n\t\tthis.blurMaterial.uniforms[ 'resolution' ].value.set( width, height );\n\n\t}\n\n\tgenerateSampleKernel( kernelSize ) {\n\n\t\tconst kernel = this.kernel;\n\n\t\tfor ( let i = 0; i < kernelSize; i ++ ) {\n\n\t\t\tconst sample = new Vector3();\n\t\t\tsample.x = ( Math.random() * 2 ) - 1;\n\t\t\tsample.y = ( Math.random() * 2 ) - 1;\n\t\t\tsample.z = Math.random();\n\n\t\t\tsample.normalize();\n\n\t\t\tlet scale = i / kernelSize;\n\t\t\tscale = MathUtils.lerp( 0.1, 1, scale * scale );\n\t\t\tsample.multiplyScalar( scale );\n\n\t\t\tkernel.push( sample );\n\n\t\t}\n\n\t}\n\n\tgenerateRandomKernelRotations() {\n\n\t\tconst width = 4, height = 4;\n\n\t\tconst simplex = new SimplexNoise();\n\n\t\tconst size = width * height;\n\t\tconst data = new Float32Array( size );\n\n\t\tfor ( let i = 0; i < size; i ++ ) {\n\n\t\t\tconst x = ( Math.random() * 2 ) - 1;\n\t\t\tconst y = ( Math.random() * 2 ) - 1;\n\t\t\tconst z = 0;\n\n\t\t\tdata[ i ] = simplex.noise3d( x, y, z );\n\n\t\t}\n\n\t\tthis.noiseTexture = new DataTexture( data, width, height, RedFormat, FloatType );\n\t\tthis.noiseTexture.wrapS = RepeatWrapping;\n\t\tthis.noiseTexture.wrapT = RepeatWrapping;\n\t\tthis.noiseTexture.needsUpdate = true;\n\n\t}\n\n\toverrideVisibility() {\n\n\t\tconst scene = this.scene;\n\t\tconst cache = this._visibilityCache;\n\n\t\tscene.traverse( function ( object ) {\n\n\t\t\tcache.set( object, object.visible );\n\n\t\t\tif ( object.isPoints || object.isLine ) object.visible = false;\n\n\t\t} );\n\n\t}\n\n\trestoreVisibility() {\n\n\t\tconst scene = this.scene;\n\t\tconst cache = this._visibilityCache;\n\n\t\tscene.traverse( function ( object ) {\n\n\t\t\tconst visible = cache.get( object );\n\t\t\tobject.visible = visible;\n\n\t\t} );\n\n\t\tcache.clear();\n\n\t}\n\n}\n\nSSAOPass.OUTPUT = {\n\t'Default': 0,\n\t'SSAO': 1,\n\t'Blur': 2,\n\t'Depth': 3,\n\t'Normal': 4\n};\n\nexport { SSAOPass };\n"], - "mappings": "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AAA,MAAG,CAAE,GAAG,GAAG,GAAG,CAAE;AAAA,MAC7H,CAAE,GAAG,GAAG,GAAG,CAAE;AAAA,MAAG,CAAE,GAAG,GAAG,GAAG,CAAE;AAAA,MAAG,CAAE,GAAG,GAAG,GAAG,CAAE;AAAA,MAAG,CAAE,GAAG,GAAG,GAAG,CAAE;AAAA,MAAG,CAAE,GAAG,GAAG,GAAG,CAAE;AAAA,MAAG,CAAE,GAAG,GAAG,GAAG,CAAE;AAAA,MAAG,CAAE,GAAG,GAAG,GAAG,CAAE;AAAA,MAAG,CAAE,GAAG,GAAG,GAAG,CAAE;AAAA,MAC7H,CAAE,GAAG,GAAG,GAAG,CAAE;AAAA,MAAG,CAAE,GAAG,GAAG,GAAG,CAAE;AAAA,MAAG,CAAE,GAAG,GAAG,GAAG,CAAE;AAAA,MAAG,CAAE,GAAG,GAAG,GAAG,CAAE;AAAA,MAAG,CAAE,GAAG,GAAG,GAAG,CAAE;AAAA,MAAG,CAAE,GAAG,GAAG,GAAG,CAAE;AAAA,MAAG,CAAE,GAAG,GAAG,GAAG,CAAE;AAAA,MAAG,CAAE,GAAG,GAAG,GAAG,CAAE;AAAA,MAC7H,CAAE,GAAG,GAAG,GAAG,CAAE;AAAA,MAAG,CAAE,GAAG,GAAG,GAAG,CAAE;AAAA,MAAG,CAAE,GAAG,GAAG,GAAG,CAAE;AAAA,MAAG,CAAE,GAAG,GAAG,GAAG,CAAE;AAAA,MAAG,CAAE,GAAG,GAAG,GAAG,CAAE;AAAA,MAAG,CAAE,GAAG,GAAG,GAAG,CAAE;AAAA,MAAG,CAAE,GAAG,GAAG,GAAG,CAAE;AAAA,MAAG,CAAE,GAAG,GAAG,GAAG,CAAE;AAAA,MAC7H,CAAE,GAAG,GAAG,GAAG,CAAE;AAAA,MAAG,CAAE,GAAG,GAAG,GAAG,CAAE;AAAA,MAAG,CAAE,GAAG,GAAG,GAAG,CAAE;AAAA,MAAG,CAAE,GAAG,GAAG,GAAG,CAAE;AAAA,MAAG,CAAE,GAAG,GAAG,GAAG,CAAE;AAAA,MAAG,CAAE,GAAG,GAAG,GAAG,CAAE;AAAA,MAAG,CAAE,GAAG,GAAG,GAAG,CAAE;AAAA,MAAG,CAAE,GAAG,GAAG,GAAG,CAAE;AAAA,MAC7H,CAAE,GAAG,GAAG,GAAG,CAAE;AAAA,M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", - "names": [] -} diff --git a/site/interface/site/node_modules/.vite/deps/three_examples_jsm_postprocessing_ShaderPass__js.js b/site/interface/site/node_modules/.vite/deps/three_examples_jsm_postprocessing_ShaderPass__js.js deleted file mode 100644 index 0cdd7ab..0000000 --- a/site/interface/site/node_modules/.vite/deps/three_examples_jsm_postprocessing_ShaderPass__js.js +++ /dev/null @@ -1,9 +0,0 @@ -import { - ShaderPass -} from "./chunk-D6CDVL7U.js"; -import "./chunk-JHQAMVLY.js"; -import "./chunk-IS2ZBFBB.js"; -export { - ShaderPass -}; -//# sourceMappingURL=three_examples_jsm_postprocessing_ShaderPass__js.js.map diff --git a/site/interface/site/node_modules/.vite/deps/three_examples_jsm_postprocessing_ShaderPass__js.js.map b/site/interface/site/node_modules/.vite/deps/three_examples_jsm_postprocessing_ShaderPass__js.js.map deleted file mode 100644 index 9865211..0000000 --- a/site/interface/site/node_modules/.vite/deps/three_examples_jsm_postprocessing_ShaderPass__js.js.map +++ /dev/null @@ -1,7 +0,0 @@ -{ - "version": 3, - "sources": [], - "sourcesContent": [], - "mappings": "", - "names": [] -} diff --git a/site/interface/site/node_modules/.vite/deps/three_examples_jsm_postprocessing_UnrealBloomPass__js.js b/site/interface/site/node_modules/.vite/deps/three_examples_jsm_postprocessing_UnrealBloomPass__js.js deleted file mode 100644 index a1f1ee6..0000000 --- a/site/interface/site/node_modules/.vite/deps/three_examples_jsm_postprocessing_UnrealBloomPass__js.js +++ /dev/null @@ -1,331 +0,0 @@ -import { - CopyShader -} from "./chunk-OLTXGRDG.js"; -import { - FullScreenQuad, - Pass -} from "./chunk-JHQAMVLY.js"; -import { - AdditiveBlending, - Color, - HalfFloatType, - MeshBasicMaterial, - ShaderMaterial, - UniformsUtils, - Vector2, - Vector3, - WebGLRenderTarget -} from "./chunk-IS2ZBFBB.js"; - -// node_modules/three/examples/jsm/shaders/LuminosityHighPassShader.js -var LuminosityHighPassShader = { - name: "LuminosityHighPassShader", - shaderID: "luminosityHighPass", - uniforms: { - "tDiffuse": { value: null }, - "luminosityThreshold": { value: 1 }, - "smoothWidth": { value: 1 }, - "defaultColor": { value: new Color(0) }, - "defaultOpacity": { value: 0 } - }, - vertexShader: ( - /* glsl */ - ` - - varying vec2 vUv; - - void main() { - - vUv = uv; - - gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 ); - - }` - ), - fragmentShader: ( - /* glsl */ - ` - - uniform sampler2D tDiffuse; - uniform vec3 defaultColor; - uniform float defaultOpacity; - uniform float luminosityThreshold; - uniform float smoothWidth; - - varying vec2 vUv; - - void main() { - - vec4 texel = texture2D( tDiffuse, vUv ); - - float v = luminance( texel.xyz ); - - vec4 outputColor = vec4( defaultColor.rgb, defaultOpacity ); - - float alpha = smoothstep( luminosityThreshold, luminosityThreshold + smoothWidth, v ); - - gl_FragColor = mix( outputColor, texel, alpha ); - - }` - ) -}; - -// node_modules/three/examples/jsm/postprocessing/UnrealBloomPass.js -var UnrealBloomPass = class _UnrealBloomPass extends Pass { - constructor(resolution, strength, radius, threshold) { - super(); - this.strength = strength !== void 0 ? strength : 1; - this.radius = radius; - this.threshold = threshold; - this.resolution = resolution !== void 0 ? new Vector2(resolution.x, resolution.y) : new Vector2(256, 256); - this.clearColor = new Color(0, 0, 0); - this.renderTargetsHorizontal = []; - this.renderTargetsVertical = []; - this.nMips = 5; - let resx = Math.round(this.resolution.x / 2); - let resy = Math.round(this.resolution.y / 2); - this.renderTargetBright = new WebGLRenderTarget(resx, resy, { type: HalfFloatType }); - this.renderTargetBright.texture.name = "UnrealBloomPass.bright"; - this.renderTargetBright.texture.generateMipmaps = false; - for (let i = 0; i < this.nMips; i++) { - const renderTargetHorizontal = new WebGLRenderTarget(resx, resy, { type: HalfFloatType }); - renderTargetHorizontal.texture.name = "UnrealBloomPass.h" + i; - renderTargetHorizontal.texture.generateMipmaps = false; - this.renderTargetsHorizontal.push(renderTargetHorizontal); - const renderTargetVertical = new WebGLRenderTarget(resx, resy, { type: HalfFloatType }); - renderTargetVertical.texture.name = "UnrealBloomPass.v" + i; - renderTargetVertical.texture.generateMipmaps = false; - this.renderTargetsVertical.push(renderTargetVertical); - resx = Math.round(resx / 2); - resy = Math.round(resy / 2); - } - const highPassShader = LuminosityHighPassShader; - this.highPassUniforms = UniformsUtils.clone(highPassShader.uniforms); - this.highPassUniforms["luminosityThreshold"].value = threshold; - this.highPassUniforms["smoothWidth"].value = 0.01; - this.materialHighPassFilter = new ShaderMaterial({ - uniforms: this.highPassUniforms, - vertexShader: highPassShader.vertexShader, - fragmentShader: highPassShader.fragmentShader - }); - this.separableBlurMaterials = []; - const kernelSizeArray = [3, 5, 7, 9, 11]; - resx = Math.round(this.resolution.x / 2); - resy = Math.round(this.resolution.y / 2); - for (let i = 0; i < this.nMips; i++) { - this.separableBlurMaterials.push(this.getSeperableBlurMaterial(kernelSizeArray[i])); - this.separableBlurMaterials[i].uniforms["invSize"].value = new Vector2(1 / resx, 1 / resy); - resx = Math.round(resx / 2); - resy = Math.round(resy / 2); - } - this.compositeMaterial = this.getCompositeMaterial(this.nMips); - this.compositeMaterial.uniforms["blurTexture1"].value = this.renderTargetsVertical[0].texture; - this.compositeMaterial.uniforms["blurTexture2"].value = this.renderTargetsVertical[1].texture; - this.compositeMaterial.uniforms["blurTexture3"].value = this.renderTargetsVertical[2].texture; - this.compositeMaterial.uniforms["blurTexture4"].value = this.renderTargetsVertical[3].texture; - this.compositeMaterial.uniforms["blurTexture5"].value = this.renderTargetsVertical[4].texture; - this.compositeMaterial.uniforms["bloomStrength"].value = strength; - this.compositeMaterial.uniforms["bloomRadius"].value = 0.1; - const bloomFactors = [1, 0.8, 0.6, 0.4, 0.2]; - this.compositeMaterial.uniforms["bloomFactors"].value = bloomFactors; - this.bloomTintColors = [new Vector3(1, 1, 1), new Vector3(1, 1, 1), new Vector3(1, 1, 1), new Vector3(1, 1, 1), new Vector3(1, 1, 1)]; - this.compositeMaterial.uniforms["bloomTintColors"].value = this.bloomTintColors; - const copyShader = CopyShader; - this.copyUniforms = UniformsUtils.clone(copyShader.uniforms); - this.blendMaterial = new ShaderMaterial({ - uniforms: this.copyUniforms, - vertexShader: copyShader.vertexShader, - fragmentShader: copyShader.fragmentShader, - blending: AdditiveBlending, - depthTest: false, - depthWrite: false, - transparent: true - }); - this.enabled = true; - this.needsSwap = false; - this._oldClearColor = new Color(); - this.oldClearAlpha = 1; - this.basic = new MeshBasicMaterial(); - this.fsQuad = new FullScreenQuad(null); - } - dispose() { - for (let i = 0; i < this.renderTargetsHorizontal.length; i++) { - this.renderTargetsHorizontal[i].dispose(); - } - for (let i = 0; i < this.renderTargetsVertical.length; i++) { - this.renderTargetsVertical[i].dispose(); - } - this.renderTargetBright.dispose(); - for (let i = 0; i < this.separableBlurMaterials.length; i++) { - this.separableBlurMaterials[i].dispose(); - } - this.compositeMaterial.dispose(); - this.blendMaterial.dispose(); - this.basic.dispose(); - this.fsQuad.dispose(); - } - setSize(width, height) { - let resx = Math.round(width / 2); - let resy = Math.round(height / 2); - this.renderTargetBright.setSize(resx, resy); - for (let i = 0; i < this.nMips; i++) { - this.renderTargetsHorizontal[i].setSize(resx, resy); - this.renderTargetsVertical[i].setSize(resx, resy); - this.separableBlurMaterials[i].uniforms["invSize"].value = new Vector2(1 / resx, 1 / resy); - resx = Math.round(resx / 2); - resy = Math.round(resy / 2); - } - } - render(renderer, writeBuffer, readBuffer, deltaTime, maskActive) { - renderer.getClearColor(this._oldClearColor); - this.oldClearAlpha = renderer.getClearAlpha(); - const oldAutoClear = renderer.autoClear; - renderer.autoClear = false; - renderer.setClearColor(this.clearColor, 0); - if (maskActive) renderer.state.buffers.stencil.setTest(false); - if (this.renderToScreen) { - this.fsQuad.material = this.basic; - this.basic.map = readBuffer.texture; - renderer.setRenderTarget(null); - renderer.clear(); - this.fsQuad.render(renderer); - } - this.highPassUniforms["tDiffuse"].value = readBuffer.texture; - this.highPassUniforms["luminosityThreshold"].value = this.threshold; - this.fsQuad.material = this.materialHighPassFilter; - renderer.setRenderTarget(this.renderTargetBright); - renderer.clear(); - this.fsQuad.render(renderer); - let inputRenderTarget = this.renderTargetBright; - for (let i = 0; i < this.nMips; i++) { - this.fsQuad.material = this.separableBlurMaterials[i]; - this.separableBlurMaterials[i].uniforms["colorTexture"].value = inputRenderTarget.texture; - this.separableBlurMaterials[i].uniforms["direction"].value = _UnrealBloomPass.BlurDirectionX; - renderer.setRenderTarget(this.renderTargetsHorizontal[i]); - renderer.clear(); - this.fsQuad.render(renderer); - this.separableBlurMaterials[i].uniforms["colorTexture"].value = this.renderTargetsHorizontal[i].texture; - this.separableBlurMaterials[i].uniforms["direction"].value = _UnrealBloomPass.BlurDirectionY; - renderer.setRenderTarget(this.renderTargetsVertical[i]); - renderer.clear(); - this.fsQuad.render(renderer); - inputRenderTarget = this.renderTargetsVertical[i]; - } - this.fsQuad.material = this.compositeMaterial; - this.compositeMaterial.uniforms["bloomStrength"].value = this.strength; - this.compositeMaterial.uniforms["bloomRadius"].value = this.radius; - this.compositeMaterial.uniforms["bloomTintColors"].value = this.bloomTintColors; - renderer.setRenderTarget(this.renderTargetsHorizontal[0]); - renderer.clear(); - this.fsQuad.render(renderer); - this.fsQuad.material = this.blendMaterial; - this.copyUniforms["tDiffuse"].value = this.renderTargetsHorizontal[0].texture; - if (maskActive) renderer.state.buffers.stencil.setTest(true); - if (this.renderToScreen) { - renderer.setRenderTarget(null); - this.fsQuad.render(renderer); - } else { - renderer.setRenderTarget(readBuffer); - this.fsQuad.render(renderer); - } - renderer.setClearColor(this._oldClearColor, this.oldClearAlpha); - renderer.autoClear = oldAutoClear; - } - getSeperableBlurMaterial(kernelRadius) { - const coefficients = []; - for (let i = 0; i < kernelRadius; i++) { - coefficients.push(0.39894 * Math.exp(-0.5 * i * i / (kernelRadius * kernelRadius)) / kernelRadius); - } - return new ShaderMaterial({ - defines: { - "KERNEL_RADIUS": kernelRadius - }, - uniforms: { - "colorTexture": { value: null }, - "invSize": { value: new Vector2(0.5, 0.5) }, - // inverse texture size - "direction": { value: new Vector2(0.5, 0.5) }, - "gaussianCoefficients": { value: coefficients } - // precomputed Gaussian coefficients - }, - vertexShader: `varying vec2 vUv; - void main() { - vUv = uv; - gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 ); - }`, - fragmentShader: `#include - varying vec2 vUv; - uniform sampler2D colorTexture; - uniform vec2 invSize; - uniform vec2 direction; - uniform float gaussianCoefficients[KERNEL_RADIUS]; - - void main() { - float weightSum = gaussianCoefficients[0]; - vec3 diffuseSum = texture2D( colorTexture, vUv ).rgb * weightSum; - for( int i = 1; i < KERNEL_RADIUS; i ++ ) { - float x = float(i); - float w = gaussianCoefficients[i]; - vec2 uvOffset = direction * invSize * x; - vec3 sample1 = texture2D( colorTexture, vUv + uvOffset ).rgb; - vec3 sample2 = texture2D( colorTexture, vUv - uvOffset ).rgb; - diffuseSum += (sample1 + sample2) * w; - weightSum += 2.0 * w; - } - gl_FragColor = vec4(diffuseSum/weightSum, 1.0); - }` - }); - } - getCompositeMaterial(nMips) { - return new ShaderMaterial({ - defines: { - "NUM_MIPS": nMips - }, - uniforms: { - "blurTexture1": { value: null }, - "blurTexture2": { value: null }, - "blurTexture3": { value: null }, - "blurTexture4": { value: null }, - "blurTexture5": { value: null }, - "bloomStrength": { value: 1 }, - "bloomFactors": { value: null }, - "bloomTintColors": { value: null }, - "bloomRadius": { value: 0 } - }, - vertexShader: `varying vec2 vUv; - void main() { - vUv = uv; - gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 ); - }`, - fragmentShader: `varying vec2 vUv; - uniform sampler2D blurTexture1; - uniform sampler2D blurTexture2; - uniform sampler2D blurTexture3; - uniform sampler2D blurTexture4; - uniform sampler2D blurTexture5; - uniform float bloomStrength; - uniform float bloomRadius; - uniform float bloomFactors[NUM_MIPS]; - uniform vec3 bloomTintColors[NUM_MIPS]; - - float lerpBloomFactor(const in float factor) { - float mirrorFactor = 1.2 - factor; - return mix(factor, mirrorFactor, bloomRadius); - } - - void main() { - gl_FragColor = bloomStrength * ( lerpBloomFactor(bloomFactors[0]) * vec4(bloomTintColors[0], 1.0) * texture2D(blurTexture1, vUv) + - lerpBloomFactor(bloomFactors[1]) * vec4(bloomTintColors[1], 1.0) * texture2D(blurTexture2, vUv) + - lerpBloomFactor(bloomFactors[2]) * vec4(bloomTintColors[2], 1.0) * texture2D(blurTexture3, vUv) + - lerpBloomFactor(bloomFactors[3]) * vec4(bloomTintColors[3], 1.0) * texture2D(blurTexture4, vUv) + - lerpBloomFactor(bloomFactors[4]) * vec4(bloomTintColors[4], 1.0) * texture2D(blurTexture5, vUv) ); - }` - }); - } -}; -UnrealBloomPass.BlurDirectionX = new Vector2(1, 0); -UnrealBloomPass.BlurDirectionY = new Vector2(0, 1); -export { - UnrealBloomPass -}; -//# sourceMappingURL=three_examples_jsm_postprocessing_UnrealBloomPass__js.js.map diff --git a/site/interface/site/node_modules/.vite/deps/three_examples_jsm_postprocessing_UnrealBloomPass__js.js.map b/site/interface/site/node_modules/.vite/deps/three_examples_jsm_postprocessing_UnrealBloomPass__js.js.map deleted file mode 100644 index 8bb4484..0000000 --- a/site/interface/site/node_modules/.vite/deps/three_examples_jsm_postprocessing_UnrealBloomPass__js.js.map +++ /dev/null @@ -1,7 +0,0 @@ -{ - "version": 3, - "sources": ["../../three/examples/jsm/shaders/LuminosityHighPassShader.js", "../../three/examples/jsm/postprocessing/UnrealBloomPass.js"], - "sourcesContent": ["import {\n\tColor\n} from 'three';\n\n/**\n * Luminosity\n * http://en.wikipedia.org/wiki/Luminosity\n */\n\nconst LuminosityHighPassShader = {\n\n\tname: 'LuminosityHighPassShader',\n\n\tshaderID: 'luminosityHighPass',\n\n\tuniforms: {\n\n\t\t'tDiffuse': { value: null },\n\t\t'luminosityThreshold': { value: 1.0 },\n\t\t'smoothWidth': { value: 1.0 },\n\t\t'defaultColor': { value: new Color( 0x000000 ) },\n\t\t'defaultOpacity': { value: 0.0 }\n\n\t},\n\n\tvertexShader: /* glsl */`\n\n\t\tvarying vec2 vUv;\n\n\t\tvoid main() {\n\n\t\t\tvUv = uv;\n\n\t\t\tgl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\n\n\t\t}`,\n\n\tfragmentShader: /* glsl */`\n\n\t\tuniform sampler2D tDiffuse;\n\t\tuniform vec3 defaultColor;\n\t\tuniform float defaultOpacity;\n\t\tuniform float luminosityThreshold;\n\t\tuniform float smoothWidth;\n\n\t\tvarying vec2 vUv;\n\n\t\tvoid main() {\n\n\t\t\tvec4 texel = texture2D( tDiffuse, vUv );\n\n\t\t\tfloat v = luminance( texel.xyz );\n\n\t\t\tvec4 outputColor = vec4( defaultColor.rgb, defaultOpacity );\n\n\t\t\tfloat alpha = smoothstep( luminosityThreshold, luminosityThreshold + smoothWidth, v );\n\n\t\t\tgl_FragColor = mix( outputColor, texel, alpha );\n\n\t\t}`\n\n};\n\nexport { LuminosityHighPassShader };\n", "import {\n\tAdditiveBlending,\n\tColor,\n\tHalfFloatType,\n\tMeshBasicMaterial,\n\tShaderMaterial,\n\tUniformsUtils,\n\tVector2,\n\tVector3,\n\tWebGLRenderTarget\n} from 'three';\nimport { Pass, FullScreenQuad } from './Pass.js';\nimport { CopyShader } from '../shaders/CopyShader.js';\nimport { LuminosityHighPassShader } from '../shaders/LuminosityHighPassShader.js';\n\n/**\n * UnrealBloomPass is inspired by the bloom pass of Unreal Engine. It creates a\n * mip map chain of bloom textures and blurs them with different radii. Because\n * of the weighted combination of mips, and because larger blurs are done on\n * higher mips, this effect provides good quality and performance.\n *\n * Reference:\n * - https://docs.unrealengine.com/latest/INT/Engine/Rendering/PostProcessEffects/Bloom/\n */\nclass UnrealBloomPass extends Pass {\n\n\tconstructor( resolution, strength, radius, threshold ) {\n\n\t\tsuper();\n\n\t\tthis.strength = ( strength !== undefined ) ? strength : 1;\n\t\tthis.radius = radius;\n\t\tthis.threshold = threshold;\n\t\tthis.resolution = ( resolution !== undefined ) ? new Vector2( resolution.x, resolution.y ) : new Vector2( 256, 256 );\n\n\t\t// create color only once here, reuse it later inside the render function\n\t\tthis.clearColor = new Color( 0, 0, 0 );\n\n\t\t// render targets\n\t\tthis.renderTargetsHorizontal = [];\n\t\tthis.renderTargetsVertical = [];\n\t\tthis.nMips = 5;\n\t\tlet resx = Math.round( this.resolution.x / 2 );\n\t\tlet resy = Math.round( this.resolution.y / 2 );\n\n\t\tthis.renderTargetBright = new WebGLRenderTarget( resx, resy, { type: HalfFloatType } );\n\t\tthis.renderTargetBright.texture.name = 'UnrealBloomPass.bright';\n\t\tthis.renderTargetBright.texture.generateMipmaps = false;\n\n\t\tfor ( let i = 0; i < this.nMips; i ++ ) {\n\n\t\t\tconst renderTargetHorizontal = new WebGLRenderTarget( resx, resy, { type: HalfFloatType } );\n\n\t\t\trenderTargetHorizontal.texture.name = 'UnrealBloomPass.h' + i;\n\t\t\trenderTargetHorizontal.texture.generateMipmaps = false;\n\n\t\t\tthis.renderTargetsHorizontal.push( renderTargetHorizontal );\n\n\t\t\tconst renderTargetVertical = new WebGLRenderTarget( resx, resy, { type: HalfFloatType } );\n\n\t\t\trenderTargetVertical.texture.name = 'UnrealBloomPass.v' + i;\n\t\t\trenderTargetVertical.texture.generateMipmaps = false;\n\n\t\t\tthis.renderTargetsVertical.push( renderTargetVertical );\n\n\t\t\tresx = Math.round( resx / 2 );\n\n\t\t\tresy = Math.round( resy / 2 );\n\n\t\t}\n\n\t\t// luminosity high pass material\n\n\t\tconst highPassShader = LuminosityHighPassShader;\n\t\tthis.highPassUniforms = UniformsUtils.clone( highPassShader.uniforms );\n\n\t\tthis.highPassUniforms[ 'luminosityThreshold' ].value = threshold;\n\t\tthis.highPassUniforms[ 'smoothWidth' ].value = 0.01;\n\n\t\tthis.materialHighPassFilter = new ShaderMaterial( {\n\t\t\tuniforms: this.highPassUniforms,\n\t\t\tvertexShader: highPassShader.vertexShader,\n\t\t\tfragmentShader: highPassShader.fragmentShader\n\t\t} );\n\n\t\t// gaussian blur materials\n\n\t\tthis.separableBlurMaterials = [];\n\t\tconst kernelSizeArray = [ 3, 5, 7, 9, 11 ];\n\t\tresx = Math.round( this.resolution.x / 2 );\n\t\tresy = Math.round( this.resolution.y / 2 );\n\n\t\tfor ( let i = 0; i < this.nMips; i ++ ) {\n\n\t\t\tthis.separableBlurMaterials.push( this.getSeperableBlurMaterial( kernelSizeArray[ i ] ) );\n\n\t\t\tthis.separableBlurMaterials[ i ].uniforms[ 'invSize' ].value = new Vector2( 1 / resx, 1 / resy );\n\n\t\t\tresx = Math.round( resx / 2 );\n\n\t\t\tresy = Math.round( resy / 2 );\n\n\t\t}\n\n\t\t// composite material\n\n\t\tthis.compositeMaterial = this.getCompositeMaterial( this.nMips );\n\t\tthis.compositeMaterial.uniforms[ 'blurTexture1' ].value = this.renderTargetsVertical[ 0 ].texture;\n\t\tthis.compositeMaterial.uniforms[ 'blurTexture2' ].value = this.renderTargetsVertical[ 1 ].texture;\n\t\tthis.compositeMaterial.uniforms[ 'blurTexture3' ].value = this.renderTargetsVertical[ 2 ].texture;\n\t\tthis.compositeMaterial.uniforms[ 'blurTexture4' ].value = this.renderTargetsVertical[ 3 ].texture;\n\t\tthis.compositeMaterial.uniforms[ 'blurTexture5' ].value = this.renderTargetsVertical[ 4 ].texture;\n\t\tthis.compositeMaterial.uniforms[ 'bloomStrength' ].value = strength;\n\t\tthis.compositeMaterial.uniforms[ 'bloomRadius' ].value = 0.1;\n\n\t\tconst bloomFactors = [ 1.0, 0.8, 0.6, 0.4, 0.2 ];\n\t\tthis.compositeMaterial.uniforms[ 'bloomFactors' ].value = bloomFactors;\n\t\tthis.bloomTintColors = [ new Vector3( 1, 1, 1 ), new Vector3( 1, 1, 1 ), new Vector3( 1, 1, 1 ), new Vector3( 1, 1, 1 ), new Vector3( 1, 1, 1 ) ];\n\t\tthis.compositeMaterial.uniforms[ 'bloomTintColors' ].value = this.bloomTintColors;\n\n\t\t// blend material\n\n\t\tconst copyShader = CopyShader;\n\n\t\tthis.copyUniforms = UniformsUtils.clone( copyShader.uniforms );\n\n\t\tthis.blendMaterial = new ShaderMaterial( {\n\t\t\tuniforms: this.copyUniforms,\n\t\t\tvertexShader: copyShader.vertexShader,\n\t\t\tfragmentShader: copyShader.fragmentShader,\n\t\t\tblending: AdditiveBlending,\n\t\t\tdepthTest: false,\n\t\t\tdepthWrite: false,\n\t\t\ttransparent: true\n\t\t} );\n\n\t\tthis.enabled = true;\n\t\tthis.needsSwap = false;\n\n\t\tthis._oldClearColor = new Color();\n\t\tthis.oldClearAlpha = 1;\n\n\t\tthis.basic = new MeshBasicMaterial();\n\n\t\tthis.fsQuad = new FullScreenQuad( null );\n\n\t}\n\n\tdispose() {\n\n\t\tfor ( let i = 0; i < this.renderTargetsHorizontal.length; i ++ ) {\n\n\t\t\tthis.renderTargetsHorizontal[ i ].dispose();\n\n\t\t}\n\n\t\tfor ( let i = 0; i < this.renderTargetsVertical.length; i ++ ) {\n\n\t\t\tthis.renderTargetsVertical[ i ].dispose();\n\n\t\t}\n\n\t\tthis.renderTargetBright.dispose();\n\n\t\t//\n\n\t\tfor ( let i = 0; i < this.separableBlurMaterials.length; i ++ ) {\n\n\t\t\tthis.separableBlurMaterials[ i ].dispose();\n\n\t\t}\n\n\t\tthis.compositeMaterial.dispose();\n\t\tthis.blendMaterial.dispose();\n\t\tthis.basic.dispose();\n\n\t\t//\n\n\t\tthis.fsQuad.dispose();\n\n\t}\n\n\tsetSize( width, height ) {\n\n\t\tlet resx = Math.round( width / 2 );\n\t\tlet resy = Math.round( height / 2 );\n\n\t\tthis.renderTargetBright.setSize( resx, resy );\n\n\t\tfor ( let i = 0; i < this.nMips; i ++ ) {\n\n\t\t\tthis.renderTargetsHorizontal[ i ].setSize( resx, resy );\n\t\t\tthis.renderTargetsVertical[ i ].setSize( resx, resy );\n\n\t\t\tthis.separableBlurMaterials[ i ].uniforms[ 'invSize' ].value = new Vector2( 1 / resx, 1 / resy );\n\n\t\t\tresx = Math.round( resx / 2 );\n\t\t\tresy = Math.round( resy / 2 );\n\n\t\t}\n\n\t}\n\n\trender( renderer, writeBuffer, readBuffer, deltaTime, maskActive ) {\n\n\t\trenderer.getClearColor( this._oldClearColor );\n\t\tthis.oldClearAlpha = renderer.getClearAlpha();\n\t\tconst oldAutoClear = renderer.autoClear;\n\t\trenderer.autoClear = false;\n\n\t\trenderer.setClearColor( this.clearColor, 0 );\n\n\t\tif ( maskActive ) renderer.state.buffers.stencil.setTest( false );\n\n\t\t// Render input to screen\n\n\t\tif ( this.renderToScreen ) {\n\n\t\t\tthis.fsQuad.material = this.basic;\n\t\t\tthis.basic.map = readBuffer.texture;\n\n\t\t\trenderer.setRenderTarget( null );\n\t\t\trenderer.clear();\n\t\t\tthis.fsQuad.render( renderer );\n\n\t\t}\n\n\t\t// 1. Extract Bright Areas\n\n\t\tthis.highPassUniforms[ 'tDiffuse' ].value = readBuffer.texture;\n\t\tthis.highPassUniforms[ 'luminosityThreshold' ].value = this.threshold;\n\t\tthis.fsQuad.material = this.materialHighPassFilter;\n\n\t\trenderer.setRenderTarget( this.renderTargetBright );\n\t\trenderer.clear();\n\t\tthis.fsQuad.render( renderer );\n\n\t\t// 2. Blur All the mips progressively\n\n\t\tlet inputRenderTarget = this.renderTargetBright;\n\n\t\tfor ( let i = 0; i < this.nMips; i ++ ) {\n\n\t\t\tthis.fsQuad.material = this.separableBlurMaterials[ i ];\n\n\t\t\tthis.separableBlurMaterials[ i ].uniforms[ 'colorTexture' ].value = inputRenderTarget.texture;\n\t\t\tthis.separableBlurMaterials[ i ].uniforms[ 'direction' ].value = UnrealBloomPass.BlurDirectionX;\n\t\t\trenderer.setRenderTarget( this.renderTargetsHorizontal[ i ] );\n\t\t\trenderer.clear();\n\t\t\tthis.fsQuad.render( renderer );\n\n\t\t\tthis.separableBlurMaterials[ i ].uniforms[ 'colorTexture' ].value = this.renderTargetsHorizontal[ i ].texture;\n\t\t\tthis.separableBlurMaterials[ i ].uniforms[ 'direction' ].value = UnrealBloomPass.BlurDirectionY;\n\t\t\trenderer.setRenderTarget( this.renderTargetsVertical[ i ] );\n\t\t\trenderer.clear();\n\t\t\tthis.fsQuad.render( renderer );\n\n\t\t\tinputRenderTarget = this.renderTargetsVertical[ i ];\n\n\t\t}\n\n\t\t// Composite All the mips\n\n\t\tthis.fsQuad.material = this.compositeMaterial;\n\t\tthis.compositeMaterial.uniforms[ 'bloomStrength' ].value = this.strength;\n\t\tthis.compositeMaterial.uniforms[ 'bloomRadius' ].value = this.radius;\n\t\tthis.compositeMaterial.uniforms[ 'bloomTintColors' ].value = this.bloomTintColors;\n\n\t\trenderer.setRenderTarget( this.renderTargetsHorizontal[ 0 ] );\n\t\trenderer.clear();\n\t\tthis.fsQuad.render( renderer );\n\n\t\t// Blend it additively over the input texture\n\n\t\tthis.fsQuad.material = this.blendMaterial;\n\t\tthis.copyUniforms[ 'tDiffuse' ].value = this.renderTargetsHorizontal[ 0 ].texture;\n\n\t\tif ( maskActive ) renderer.state.buffers.stencil.setTest( true );\n\n\t\tif ( this.renderToScreen ) {\n\n\t\t\trenderer.setRenderTarget( null );\n\t\t\tthis.fsQuad.render( renderer );\n\n\t\t} else {\n\n\t\t\trenderer.setRenderTarget( readBuffer );\n\t\t\tthis.fsQuad.render( renderer );\n\n\t\t}\n\n\t\t// Restore renderer settings\n\n\t\trenderer.setClearColor( this._oldClearColor, this.oldClearAlpha );\n\t\trenderer.autoClear = oldAutoClear;\n\n\t}\n\n\tgetSeperableBlurMaterial( kernelRadius ) {\n\n\t\tconst coefficients = [];\n\n\t\tfor ( let i = 0; i < kernelRadius; i ++ ) {\n\n\t\t\tcoefficients.push( 0.39894 * Math.exp( - 0.5 * i * i / ( kernelRadius * kernelRadius ) ) / kernelRadius );\n\n\t\t}\n\n\t\treturn new ShaderMaterial( {\n\n\t\t\tdefines: {\n\t\t\t\t'KERNEL_RADIUS': kernelRadius\n\t\t\t},\n\n\t\t\tuniforms: {\n\t\t\t\t'colorTexture': { value: null },\n\t\t\t\t'invSize': { value: new Vector2( 0.5, 0.5 ) }, // inverse texture size\n\t\t\t\t'direction': { value: new Vector2( 0.5, 0.5 ) },\n\t\t\t\t'gaussianCoefficients': { value: coefficients } // precomputed Gaussian coefficients\n\t\t\t},\n\n\t\t\tvertexShader:\n\t\t\t\t`varying vec2 vUv;\n\t\t\t\tvoid main() {\n\t\t\t\t\tvUv = uv;\n\t\t\t\t\tgl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\n\t\t\t\t}`,\n\n\t\t\tfragmentShader:\n\t\t\t\t`#include \n\t\t\t\tvarying vec2 vUv;\n\t\t\t\tuniform sampler2D colorTexture;\n\t\t\t\tuniform vec2 invSize;\n\t\t\t\tuniform vec2 direction;\n\t\t\t\tuniform float gaussianCoefficients[KERNEL_RADIUS];\n\n\t\t\t\tvoid main() {\n\t\t\t\t\tfloat weightSum = gaussianCoefficients[0];\n\t\t\t\t\tvec3 diffuseSum = texture2D( colorTexture, vUv ).rgb * weightSum;\n\t\t\t\t\tfor( int i = 1; i < KERNEL_RADIUS; i ++ ) {\n\t\t\t\t\t\tfloat x = float(i);\n\t\t\t\t\t\tfloat w = gaussianCoefficients[i];\n\t\t\t\t\t\tvec2 uvOffset = direction * invSize * x;\n\t\t\t\t\t\tvec3 sample1 = texture2D( colorTexture, vUv + uvOffset ).rgb;\n\t\t\t\t\t\tvec3 sample2 = texture2D( colorTexture, vUv - uvOffset ).rgb;\n\t\t\t\t\t\tdiffuseSum += (sample1 + sample2) * w;\n\t\t\t\t\t\tweightSum += 2.0 * w;\n\t\t\t\t\t}\n\t\t\t\t\tgl_FragColor = vec4(diffuseSum/weightSum, 1.0);\n\t\t\t\t}`\n\t\t} );\n\n\t}\n\n\tgetCompositeMaterial( nMips ) {\n\n\t\treturn new ShaderMaterial( {\n\n\t\t\tdefines: {\n\t\t\t\t'NUM_MIPS': nMips\n\t\t\t},\n\n\t\t\tuniforms: {\n\t\t\t\t'blurTexture1': { value: null },\n\t\t\t\t'blurTexture2': { value: null },\n\t\t\t\t'blurTexture3': { value: null },\n\t\t\t\t'blurTexture4': { value: null },\n\t\t\t\t'blurTexture5': { value: null },\n\t\t\t\t'bloomStrength': { value: 1.0 },\n\t\t\t\t'bloomFactors': { value: null },\n\t\t\t\t'bloomTintColors': { value: null },\n\t\t\t\t'bloomRadius': { value: 0.0 }\n\t\t\t},\n\n\t\t\tvertexShader:\n\t\t\t\t`varying vec2 vUv;\n\t\t\t\tvoid main() {\n\t\t\t\t\tvUv = uv;\n\t\t\t\t\tgl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\n\t\t\t\t}`,\n\n\t\t\tfragmentShader:\n\t\t\t\t`varying vec2 vUv;\n\t\t\t\tuniform sampler2D blurTexture1;\n\t\t\t\tuniform sampler2D blurTexture2;\n\t\t\t\tuniform sampler2D blurTexture3;\n\t\t\t\tuniform sampler2D blurTexture4;\n\t\t\t\tuniform sampler2D blurTexture5;\n\t\t\t\tuniform float bloomStrength;\n\t\t\t\tuniform float bloomRadius;\n\t\t\t\tuniform float bloomFactors[NUM_MIPS];\n\t\t\t\tuniform vec3 bloomTintColors[NUM_MIPS];\n\n\t\t\t\tfloat lerpBloomFactor(const in float factor) {\n\t\t\t\t\tfloat mirrorFactor = 1.2 - factor;\n\t\t\t\t\treturn mix(factor, mirrorFactor, bloomRadius);\n\t\t\t\t}\n\n\t\t\t\tvoid main() {\n\t\t\t\t\tgl_FragColor = bloomStrength * ( lerpBloomFactor(bloomFactors[0]) * vec4(bloomTintColors[0], 1.0) * texture2D(blurTexture1, vUv) +\n\t\t\t\t\t\tlerpBloomFactor(bloomFactors[1]) * vec4(bloomTintColors[1], 1.0) * texture2D(blurTexture2, vUv) +\n\t\t\t\t\t\tlerpBloomFactor(bloomFactors[2]) * vec4(bloomTintColors[2], 1.0) * texture2D(blurTexture3, vUv) +\n\t\t\t\t\t\tlerpBloomFactor(bloomFactors[3]) * vec4(bloomTintColors[3], 1.0) * texture2D(blurTexture4, vUv) +\n\t\t\t\t\t\tlerpBloomFactor(bloomFactors[4]) * vec4(bloomTintColors[4], 1.0) * texture2D(blurTexture5, vUv) );\n\t\t\t\t}`\n\t\t} );\n\n\t}\n\n}\n\nUnrealBloomPass.BlurDirectionX = new Vector2( 1.0, 0.0 );\nUnrealBloomPass.BlurDirectionY = new Vector2( 0.0, 1.0 );\n\nexport { UnrealBloomPass };\n"], - "mappings": "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", - "names": [] -} diff --git a/site/interface/site/node_modules/.vite/deps/three_examples_jsm_shaders_HorizontalBlurShader__js.js b/site/interface/site/node_modules/.vite/deps/three_examples_jsm_shaders_HorizontalBlurShader__js.js deleted file mode 100644 index e70328e..0000000 --- a/site/interface/site/node_modules/.vite/deps/three_examples_jsm_shaders_HorizontalBlurShader__js.js +++ /dev/null @@ -1,52 +0,0 @@ -// node_modules/three/examples/jsm/shaders/HorizontalBlurShader.js -var HorizontalBlurShader = { - name: "HorizontalBlurShader", - uniforms: { - "tDiffuse": { value: null }, - "h": { value: 1 / 512 } - }, - vertexShader: ( - /* glsl */ - ` - - varying vec2 vUv; - - void main() { - - vUv = uv; - gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 ); - - }` - ), - fragmentShader: ( - /* glsl */ - ` - - uniform sampler2D tDiffuse; - uniform float h; - - varying vec2 vUv; - - void main() { - - vec4 sum = vec4( 0.0 ); - - sum += texture2D( tDiffuse, vec2( vUv.x - 4.0 * h, vUv.y ) ) * 0.051; - sum += texture2D( tDiffuse, vec2( vUv.x - 3.0 * h, vUv.y ) ) * 0.0918; - sum += texture2D( tDiffuse, vec2( vUv.x - 2.0 * h, vUv.y ) ) * 0.12245; - sum += texture2D( tDiffuse, vec2( vUv.x - 1.0 * h, vUv.y ) ) * 0.1531; - sum += texture2D( tDiffuse, vec2( vUv.x, vUv.y ) ) * 0.1633; - sum += texture2D( tDiffuse, vec2( vUv.x + 1.0 * h, vUv.y ) ) * 0.1531; - sum += texture2D( tDiffuse, vec2( vUv.x + 2.0 * h, vUv.y ) ) * 0.12245; - sum += texture2D( tDiffuse, vec2( vUv.x + 3.0 * h, vUv.y ) ) * 0.0918; - sum += texture2D( tDiffuse, vec2( vUv.x + 4.0 * h, vUv.y ) ) * 0.051; - - gl_FragColor = sum; - - }` - ) -}; -export { - HorizontalBlurShader -}; -//# sourceMappingURL=three_examples_jsm_shaders_HorizontalBlurShader__js.js.map diff --git a/site/interface/site/node_modules/.vite/deps/three_examples_jsm_shaders_HorizontalBlurShader__js.js.map b/site/interface/site/node_modules/.vite/deps/three_examples_jsm_shaders_HorizontalBlurShader__js.js.map deleted file mode 100644 index cb15900..0000000 --- a/site/interface/site/node_modules/.vite/deps/three_examples_jsm_shaders_HorizontalBlurShader__js.js.map +++ /dev/null @@ -1,7 +0,0 @@ -{ - "version": 3, - "sources": ["../../three/examples/jsm/shaders/HorizontalBlurShader.js"], - "sourcesContent": ["/**\n * Two pass Gaussian blur filter (horizontal and vertical blur shaders)\n * - see http://www.cake23.de/traveling-wavefronts-lit-up.html\n *\n * - 9 samples per pass\n * - standard deviation 2.7\n * - \"h\" and \"v\" parameters should be set to \"1 / width\" and \"1 / height\"\n */\n\nconst HorizontalBlurShader = {\n\n\tname: 'HorizontalBlurShader',\n\n\tuniforms: {\n\n\t\t'tDiffuse': { value: null },\n\t\t'h': { value: 1.0 / 512.0 }\n\n\t},\n\n\tvertexShader: /* glsl */`\n\n\t\tvarying vec2 vUv;\n\n\t\tvoid main() {\n\n\t\t\tvUv = uv;\n\t\t\tgl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\n\n\t\t}`,\n\n\tfragmentShader: /* glsl */`\n\n\t\tuniform sampler2D tDiffuse;\n\t\tuniform float h;\n\n\t\tvarying vec2 vUv;\n\n\t\tvoid main() {\n\n\t\t\tvec4 sum = vec4( 0.0 );\n\n\t\t\tsum += texture2D( tDiffuse, vec2( vUv.x - 4.0 * h, vUv.y ) ) * 0.051;\n\t\t\tsum += texture2D( tDiffuse, vec2( vUv.x - 3.0 * h, vUv.y ) ) * 0.0918;\n\t\t\tsum += texture2D( tDiffuse, vec2( vUv.x - 2.0 * h, vUv.y ) ) * 0.12245;\n\t\t\tsum += texture2D( tDiffuse, vec2( vUv.x - 1.0 * h, vUv.y ) ) * 0.1531;\n\t\t\tsum += texture2D( tDiffuse, vec2( vUv.x, vUv.y ) ) * 0.1633;\n\t\t\tsum += texture2D( tDiffuse, vec2( vUv.x + 1.0 * h, vUv.y ) ) * 0.1531;\n\t\t\tsum += texture2D( tDiffuse, vec2( vUv.x + 2.0 * h, vUv.y ) ) * 0.12245;\n\t\t\tsum += texture2D( tDiffuse, vec2( vUv.x + 3.0 * h, vUv.y ) ) * 0.0918;\n\t\t\tsum += texture2D( tDiffuse, vec2( vUv.x + 4.0 * h, vUv.y ) ) * 0.051;\n\n\t\t\tgl_FragColor = sum;\n\n\t\t}`\n\n};\n\nexport { HorizontalBlurShader };\n"], - "mappings": ";AASA,IAAM,uBAAuB;AAAA,EAE5B,MAAM;AAAA,EAEN,UAAU;AAAA,IAET,YAAY,EAAE,OAAO,KAAK;AAAA,IAC1B,KAAK,EAAE,OAAO,IAAM,IAAM;AAAA,EAE3B;AAAA,EAEA;AAAA;AAAA,IAAwB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAWxB;AAAA;AAAA,IAA0B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAyB3B;", - "names": [] -} diff --git a/site/interface/site/node_modules/.vite/deps/three_examples_jsm_shaders_VerticalBlurShader__js.js b/site/interface/site/node_modules/.vite/deps/three_examples_jsm_shaders_VerticalBlurShader__js.js deleted file mode 100644 index ced18a2..0000000 --- a/site/interface/site/node_modules/.vite/deps/three_examples_jsm_shaders_VerticalBlurShader__js.js +++ /dev/null @@ -1,52 +0,0 @@ -// node_modules/three/examples/jsm/shaders/VerticalBlurShader.js -var VerticalBlurShader = { - name: "VerticalBlurShader", - uniforms: { - "tDiffuse": { value: null }, - "v": { value: 1 / 512 } - }, - vertexShader: ( - /* glsl */ - ` - - varying vec2 vUv; - - void main() { - - vUv = uv; - gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 ); - - }` - ), - fragmentShader: ( - /* glsl */ - ` - - uniform sampler2D tDiffuse; - uniform float v; - - varying vec2 vUv; - - void main() { - - vec4 sum = vec4( 0.0 ); - - sum += texture2D( tDiffuse, vec2( vUv.x, vUv.y - 4.0 * v ) ) * 0.051; - sum += texture2D( tDiffuse, vec2( vUv.x, vUv.y - 3.0 * v ) ) * 0.0918; - sum += texture2D( tDiffuse, vec2( vUv.x, vUv.y - 2.0 * v ) ) * 0.12245; - sum += texture2D( tDiffuse, vec2( vUv.x, vUv.y - 1.0 * v ) ) * 0.1531; - sum += texture2D( tDiffuse, vec2( vUv.x, vUv.y ) ) * 0.1633; - sum += texture2D( tDiffuse, vec2( vUv.x, vUv.y + 1.0 * v ) ) * 0.1531; - sum += texture2D( tDiffuse, vec2( vUv.x, vUv.y + 2.0 * v ) ) * 0.12245; - sum += texture2D( tDiffuse, vec2( vUv.x, vUv.y + 3.0 * v ) ) * 0.0918; - sum += texture2D( tDiffuse, vec2( vUv.x, vUv.y + 4.0 * v ) ) * 0.051; - - gl_FragColor = sum; - - }` - ) -}; -export { - VerticalBlurShader -}; -//# sourceMappingURL=three_examples_jsm_shaders_VerticalBlurShader__js.js.map diff --git a/site/interface/site/node_modules/.vite/deps/three_examples_jsm_shaders_VerticalBlurShader__js.js.map b/site/interface/site/node_modules/.vite/deps/three_examples_jsm_shaders_VerticalBlurShader__js.js.map deleted file mode 100644 index 53e8f56..0000000 --- a/site/interface/site/node_modules/.vite/deps/three_examples_jsm_shaders_VerticalBlurShader__js.js.map +++ /dev/null @@ -1,7 +0,0 @@ -{ - "version": 3, - "sources": ["../../three/examples/jsm/shaders/VerticalBlurShader.js"], - "sourcesContent": ["/**\n * Two pass Gaussian blur filter (horizontal and vertical blur shaders)\n * - see http://www.cake23.de/traveling-wavefronts-lit-up.html\n *\n * - 9 samples per pass\n * - standard deviation 2.7\n * - \"h\" and \"v\" parameters should be set to \"1 / width\" and \"1 / height\"\n */\n\nconst VerticalBlurShader = {\n\n\tname: 'VerticalBlurShader',\n\n\tuniforms: {\n\n\t\t'tDiffuse': { value: null },\n\t\t'v': { value: 1.0 / 512.0 }\n\n\t},\n\n\tvertexShader: /* glsl */`\n\n\t\tvarying vec2 vUv;\n\n\t\tvoid main() {\n\n\t\t\tvUv = uv;\n\t\t\tgl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\n\n\t\t}`,\n\n\tfragmentShader: /* glsl */`\n\n\t\tuniform sampler2D tDiffuse;\n\t\tuniform float v;\n\n\t\tvarying vec2 vUv;\n\n\t\tvoid main() {\n\n\t\t\tvec4 sum = vec4( 0.0 );\n\n\t\t\tsum += texture2D( tDiffuse, vec2( vUv.x, vUv.y - 4.0 * v ) ) * 0.051;\n\t\t\tsum += texture2D( tDiffuse, vec2( vUv.x, vUv.y - 3.0 * v ) ) * 0.0918;\n\t\t\tsum += texture2D( tDiffuse, vec2( vUv.x, vUv.y - 2.0 * v ) ) * 0.12245;\n\t\t\tsum += texture2D( tDiffuse, vec2( vUv.x, vUv.y - 1.0 * v ) ) * 0.1531;\n\t\t\tsum += texture2D( tDiffuse, vec2( vUv.x, vUv.y ) ) * 0.1633;\n\t\t\tsum += texture2D( tDiffuse, vec2( vUv.x, vUv.y + 1.0 * v ) ) * 0.1531;\n\t\t\tsum += texture2D( tDiffuse, vec2( vUv.x, vUv.y + 2.0 * v ) ) * 0.12245;\n\t\t\tsum += texture2D( tDiffuse, vec2( vUv.x, vUv.y + 3.0 * v ) ) * 0.0918;\n\t\t\tsum += texture2D( tDiffuse, vec2( vUv.x, vUv.y + 4.0 * v ) ) * 0.051;\n\n\t\t\tgl_FragColor = sum;\n\n\t\t}`\n\n};\n\nexport { VerticalBlurShader };\n"], - "mappings": ";AASA,IAAM,qBAAqB;AAAA,EAE1B,MAAM;AAAA,EAEN,UAAU;AAAA,IAET,YAAY,EAAE,OAAO,KAAK;AAAA,IAC1B,KAAK,EAAE,OAAO,IAAM,IAAM;AAAA,EAE3B;AAAA,EAEA;AAAA;AAAA,IAAwB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAWxB;AAAA;AAAA,IAA0B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAyB3B;", - "names": [] -} diff --git a/site/interface/site/style/home.css b/site/interface/site/style/home.css index 3cbb513..5c9506f 100644 --- a/site/interface/site/style/home.css +++ b/site/interface/site/style/home.css @@ -3,10 +3,10 @@ /* ::: :::::::: */ /* home.css :+: :+: :+: */ /* +:+ +:+ +:+ */ -/* By: edbernar +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2024/08/07 12:00:55 by edbernar #+# #+# */ -/* Updated: 2024/08/24 02:10:59 by edbernar ### ########.fr */ +/* Updated: 2024/08/24 11:26:27 by marvin ### ########.fr */ /* */ /* ************************************************************************** */ @@ -59,7 +59,6 @@ body { padding: 0; padding-inline: 50px; display: flex; - background-color: #020202; gap: 2rem; align-items: center; position: absolute;