Created
December 11, 2023 10:11
-
-
Save hatsumatsu/8bf77d9348749a605aa62c0594f5fef5 to your computer and use it in GitHub Desktop.
K01
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
var qg = function() { | |
function t() { | |
var e = this; | |
fo(this, t), | |
this.width = window.innerWidth, | |
Mo() ? this.height = window.innerHeight + 100 : this.height = window.innerHeight, | |
this.actif = !1, | |
this.scene = new jp, | |
this.scene1 = new jp, | |
this.clock = new Tg, | |
this.mouse = new xl(0,0), | |
this.prevMouse = new xl(0,0), | |
this.currentWave = 0, | |
this.sens = !1, | |
this.currentScr = 0, | |
this.baseTexture = new Pl(this.width,this.height,{ | |
minFilter: Fo, | |
magFilter: Fo, | |
format: Xo | |
}), | |
this.renderer = new qp, | |
this.renderer.setPixelRatio(.5), | |
Mo() && this.renderer.setPixelRatio(2), | |
this.renderer.setSize(this.width, this.height); | |
var n = this.height | |
, i = this.width / this.height; | |
this.camera = new pu(n * i / -2,n * i / 2,n / 2,n / -2,-1e3,1e3), | |
this.renderer.setClearColor(0, 1), | |
document.body.appendChild(this.renderer.domElement), | |
this.video = document.getElementById("video"), | |
this.video.play(), | |
this.video.loop = this.video.muted = !0, | |
this.texture = new Fm(video), | |
this.material = new Hh({ | |
extensions: { | |
derivatives: "#extension GL_OES_standard_derivatives : enable" | |
}, | |
side: 2, | |
uniforms: { | |
time: { | |
value: 0 | |
}, | |
uDisplacement: { | |
value: null | |
}, | |
uTexture: { | |
value: this.texture | |
}, | |
resolution: { | |
value: new Rl | |
} | |
}, | |
vertexShader: "varying vec2 vUv;\n void main()\n {\n vUv = uv;\n gl_Position = projectionMatrix * viewMatrix * modelMatrix * vec4(position, 1.0);\n }", | |
fragmentShader: "uniform float time;\n\n uniform sampler2D uTexture;\n uniform sampler2D uDisplacement;\n \n varying vec2 vUv;\n\n float PI = 3.141592653589793238;\n void main() {\n \n vec4 displacement = texture2D(uDisplacement, vUv);\n float theta = displacement.r*2.*PI;\n\n vec2 dir = vec2(sin(theta), cos(theta));\n\n vec2 uv = vUv + dir*displacement.r*0.2; //1.\n\n vec4 color = texture2D(uTexture, uv);\n\n gl_FragColor = color;\n }" | |
}), | |
this.plane = new Nh(this.geometry,this.material1), | |
this.scene.add(this.plane), | |
this.max = 100, | |
window.innerWidth < 768 ? this.geometry = new iu(350,350,1,1) : this.geometry = new iu(450,450,1,1), | |
this.geometryFullScreen = new iu(this.width,this.height,1,1), | |
this.meshes = [], | |
this.meshes2 = [], | |
this.meshesMouse = [], | |
this.textureEau = (new lg).load(document.body.getAttribute("data-eau")); | |
for (var r = 0; r < this.max; r++) { | |
var s = new ih({ | |
map: (new lg).load(document.body.getAttribute("data-brush")), | |
transparent: !0 | |
}) | |
, a = new Nh(this.geometry,s); | |
a.visible = !1, | |
this.scene.add(a), | |
this.meshes.push(a) | |
} | |
for (var o = 0; o < this.max; o++) { | |
var l = new ih({ | |
map: (new lg).load(document.body.getAttribute("data-eau")), | |
transparent: !0 | |
}) | |
, c = new Nh(this.geometry,l); | |
c.visible = !1, | |
this.scene.add(c), | |
this.meshes2.push(c) | |
} | |
for (var h = 0; h < this.max; h++) { | |
var u = new ih({ | |
map: (new lg).load(document.body.getAttribute("data-mouse")), | |
transparent: !0 | |
}) | |
, d = new Nh(this.geometry,u); | |
d.visible = !1, | |
this.scene.add(d), | |
this.meshesMouse.push(d) | |
} | |
this.quad = new Nh(this.geometryFullScreen,this.material), | |
this.scene1.add(this.quad), | |
window.addEventListener("resize", (function() { | |
e.width = window.innerWidth, | |
Mo() ? e.height = window.innerHeight + 100 : e.height = window.innerHeight, | |
e.camera.aspect = e.width / e.height, | |
e.camera.updateProjectionMatrix(), | |
e.renderer.setSize(e.width, e.height) | |
} | |
)) | |
} | |
return vo(t, [{ | |
key: "setNewWave", | |
value: function(t, e, n, i, r, s) { | |
var a = i[n]; | |
a.blocClassic = a.click = !1, | |
a.visible = !0, | |
a.position.x = t, | |
a.position.y = e, | |
a.scale.x = a.scale.y = 1, | |
i == this.meshes ? (a.material.opacity = .5, | |
a.scale.x = a.scale.y = 1.2) : i == this.meshes2 ? (a.material.opacity = .2, | |
a.rotation.z = 2 * Math.random() * Math.PI) : i == this.meshesMouse && (a.material.opacity = .55, | |
a.scale.x = a.scale.y = .7, | |
a.rotation.z = 2 * Math.random() * Math.PI), | |
null == r || r.el.classList.contains("bloc1") || (a.scale.x = r.el.clientWidth / 300, | |
a.blocClassic = !0), | |
null != s && (a.click = !0, | |
a.material.opacity = .4, | |
a.scale.x = a.scale.y = s, | |
a.rotation.z = 0) | |
} | |
}, { | |
key: "trackMousePos", | |
value: function() { | |
Math.abs(this.mouse.x - this.prevMouse.x) < 4 && Math.abs(this.mouse.y - this.prevMouse.y) < 4 || (this.setNewWave(this.mouse.x, this.mouse.y, this.currentWave, this.meshesMouse), | |
this.currentWave = (this.currentWave + 1) % this.max), | |
this.prevMouse.x = this.mouse.x, | |
this.prevMouse.y = this.mouse.y; | |
var t, e = _o(this.blocks); | |
try { | |
for (e.s(); !(t = e.n()).done; ) { | |
var n = t.value; | |
if (n.el.classList.contains("bloc1")) | |
n.y = -n.el.getBoundingClientRect().top + this.height / 2 - n.el.clientHeight / 2; | |
else { | |
var i = n.el.clientHeight - 210; | |
this.sens || (i = 210), | |
n.y = -n.el.getBoundingClientRect().top + this.height / 2 - i | |
} | |
n.y + this.height / 2 < this.height && n.y + this.height / 2 > 0 && (n.el.classList.contains("blocHaut") && !this.sens || n.el.classList.contains("blocBas") && this.sens) && (n.x = n.el.getBoundingClientRect().left - window.innerWidth / 2 + n.el.clientWidth / 2, | |
Math.abs(n.y - n.prevY) < 4 || (this.setNewWave(n.x, n.y, this.currentWave, this.meshes, n), | |
this.setNewWave(n.x, n.y, this.currentWave, this.meshes2, n), | |
this.currentWave = (this.currentWave + 1) % this.max), | |
n.prevY = n.y) | |
} | |
} catch (t) { | |
e.e(t) | |
} finally { | |
e.f() | |
} | |
} | |
}, { | |
key: "animate", | |
value: function() { | |
this.trackMousePos(), | |
this.rafWebgl = requestAnimationFrame(this.animate.bind(this)), | |
this.renderer.setRenderTarget(this.baseTexture), | |
this.renderer.render(this.scene, this.camera), | |
this.material.uniforms.uDisplacement.value = this.baseTexture.texture, | |
this.renderer.setRenderTarget(null), | |
this.renderer.clear(), | |
this.renderer.render(this.scene1, this.camera); | |
var t = this.clock.getDelta(); | |
this.meshes.forEach((function(t) { | |
t.visible && (t.material.opacity *= .92, | |
t.scale.x = .982 * t.scale.x + .02, | |
t.blocClassic || (t.scale.y = t.scale.x), | |
t.material.opacity < .002 && (t.visible = !1)) | |
} | |
)), | |
this.meshes2.forEach((function(e) { | |
e.visible && (e.rotation.z += t / 2, | |
e.material.opacity *= .98, | |
e.scale.x = .982 * e.scale.x + .04, | |
e.blocClassic || (e.scale.y = e.scale.x), | |
e.material.opacity < .002 && (e.visible = !1)) | |
} | |
)), | |
this.meshesMouse.forEach((function(e) { | |
e.visible && (e.click ? e.material.opacity *= .95 : (e.rotation.z += t / 2, | |
e.material.opacity *= .98), | |
e.scale.x = .982 * e.scale.x + .03, | |
e.scale.y = e.scale.x, | |
e.material.opacity < .002 && (e.visible = !1)) | |
} | |
)), | |
window.pageYOffset < this.currentScr ? this.sens = !1 : window.pageYOffset > this.currentScr && (this.sens = !0), | |
this.currentScr = window.pageYOffset | |
} | |
}, { | |
key: "init", | |
value: function() { | |
this.blocks = [], | |
this.mouseE = this.mouseMove.bind(this), | |
window.addEventListener("mousemove", this.mouseE), | |
this.mouseC = this.mouseClick.bind(this), | |
document.body.addEventListener("click", this.mouseC) | |
} | |
}, { | |
key: "updateBlocs", | |
value: function() { | |
var t = this; | |
this.blocks = [], | |
document.querySelectorAll(".bloc").forEach((function(e) { | |
var n = {}; | |
n.el = e, | |
n.prevY = 0, | |
t.blocks.push(n) | |
} | |
)) | |
} | |
}, { | |
key: "mouseMove", | |
value: function(t) { | |
this.mouse.x = t.clientX - this.width / 2, | |
this.mouse.y = this.height / 2 - t.clientY | |
} | |
}, { | |
key: "mouseClick", | |
value: function(t) { | |
for (var e = this, n = 0, i = 0; i < 10; i++) | |
!function(t) { | |
vi.delayedCall(n, (function() { | |
e.setNewWave(e.mouse.x, e.mouse.y, e.currentWave, e.meshesMouse, void 0, .2 + .1 * t), | |
e.currentWave = (e.currentWave + 1) % e.max | |
} | |
)) | |
}(i), | |
n += .02 | |
} | |
}, { | |
key: "killWebgl", | |
value: function() { | |
cancelAnimationFrame(this.rafWebgl), | |
window.removeEventListener("mousemove", this.mouseE), | |
document.body.removeEventListener("click", this.mouseC) | |
} | |
}]), | |
t | |
}() |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment