{"version":3,"file":"main-D_usaHkc.js","sources":["../../../app/frontend/assets/js/main.js"],"sourcesContent":["export function main(\n _vsSource,\n _fbsSource,\n _fsSource,\n _globals,\n _drawInfo,\n _feedbackInfo,\n _init,\n _tick,\n) {\n const sizes = {\n width: window.innerWidth,\n height: window.innerHeight,\n };\n\n const canvas = document.getElementById(\"gl\");\n let gl = canvas.getContext(\"webgl\");\n canvas.width = sizes.width;\n canvas.height = sizes.height;\n gl.viewport(0, 0, gl.drawingBufferWidth, gl.drawingBufferHeight);\n\n // fullscreen quad\n const quadVerts = new Float32Array([\n -1, -1, 1, -1, -1, 1, -1, 1, 1, -1, 1, 1,\n ]);\n const quadBuffer = gl.createBuffer();\n gl.bindBuffer(gl.ARRAY_BUFFER, quadBuffer);\n gl.bufferData(gl.ARRAY_BUFFER, quadVerts, gl.STATIC_DRAW);\n\n const programs = initShaderPrograms(gl, _vsSource, _fbsSource, _fsSource);\n const fbInfo = _feedbackInfo(gl, programs.feedbackProgram);\n const drawInfo = _drawInfo(gl, programs.drawProgram);\n let speckle = false;\n function poke(x, y, texture) {\n gl.bindTexture(gl.TEXTURE_2D, texture);\n\n // https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContext/texSubImage2D\n gl.texSubImage2D(\n gl.TEXTURE_2D,\n 0,\n // x offset, y offset, width, height\n x,\n y,\n 1,\n 1,\n gl.RGBA,\n gl.UNSIGNED_BYTE,\n // is supposed to be a typed array\n new Uint8Array([255, 255, 255, 255]),\n );\n }\n canvas.onmousedown = function (event) {\n //console.debug(event);\n console.debug(\"mousedown\", event.offsetX, canvas.height - event.offsetY);\n\n poke(\n event.offsetX / _globals.pixelDensity,\n (canvas.height - event.offsetY) / _globals.pixelDensity,\n _globals.backTex,\n );\n };\n canvas.onmousemove = function (event) {\n //console.debug(event);\n if (!speckle) {\n poke(\n event.offsetX / _globals.pixelDensity,\n (canvas.height - event.offsetY) / _globals.pixelDensity,\n _globals.backTex,\n );\n }\n };\n canvas.ontouchmove = function (event) {\n event.preventDefault();\n poke(\n event.changedTouches[0].clientX / _globals.pixelDensity,\n (canvas.height - event.changedTouches[0].clientY) / _globals.pixelDensity,\n _globals.backTex,\n );\n };\n window.onkeydown = function (event) {\n if (event.key === \"Shift\") {\n speckle = true;\n }\n };\n window.onkeyup = function (event) {\n if (event.key === \"Shift\") {\n speckle = false;\n }\n };\n _init(gl, fbInfo, drawInfo);\n\n function makeTexture() {\n _globals.backTex = gl.createTexture();\n gl.bindTexture(gl.TEXTURE_2D, _globals.backTex);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.NEAREST);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.NEAREST);\n gl.texImage2D(\n gl.TEXTURE_2D,\n 0,\n gl.RGBA,\n sizes.width,\n sizes.height,\n 0,\n gl.RGBA,\n gl.UNSIGNED_BYTE,\n null,\n );\n\n _globals.frontTex = gl.createTexture();\n gl.bindTexture(gl.TEXTURE_2D, _globals.frontTex);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.NEAREST);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.NEAREST);\n gl.texImage2D(\n gl.TEXTURE_2D,\n 0,\n gl.RGBA,\n sizes.width,\n sizes.height,\n 0,\n gl.RGBA,\n gl.UNSIGNED_BYTE,\n null,\n );\n\n _globals.framebuffer = gl.createFramebuffer();\n }\n\n let time = 0;\n\n function render() {\n window.requestAnimationFrame(render);\n time++;\n _tick(gl, fbInfo, drawInfo, time);\n }\n makeTexture();\n render();\n}\n\nfunction initShaderPrograms(gl, vsSource, fbsSource, fsSource) {\n const vertexShader = loadShader(gl, gl.VERTEX_SHADER, vsSource);\n const fragmentShader = loadShader(gl, gl.FRAGMENT_SHADER, fsSource);\n const feedbackShader = loadShader(gl, gl.FRAGMENT_SHADER, fbsSource);\n\n const drawProgram = gl.createProgram();\n gl.attachShader(drawProgram, vertexShader);\n gl.attachShader(drawProgram, fragmentShader);\n gl.linkProgram(drawProgram);\n\n if (!gl.getProgramParameter(drawProgram, gl.LINK_STATUS)) {\n alert(\n \"Unable to initialize the shader program: \" +\n gl.getProgramInfoLog(drawProgram),\n );\n return null;\n }\n\n const feedbackProgram = gl.createProgram();\n gl.attachShader(feedbackProgram, vertexShader);\n gl.attachShader(feedbackProgram, feedbackShader);\n gl.linkProgram(feedbackProgram);\n\n if (!gl.getProgramParameter(feedbackProgram, gl.LINK_STATUS)) {\n alert(\n \"Unable to initialize the shader program: \" +\n gl.getProgramInfoLog(feedbackProgram),\n );\n return null;\n }\n\n return { drawProgram, feedbackProgram };\n}\n\nfunction loadShader(gl, type, source) {\n const shader = gl.createShader(type);\n gl.shaderSource(shader, source);\n gl.compileShader(shader);\n if (!gl.getShaderParameter(shader, gl.COMPILE_STATUS)) {\n alert(\n \"An error occurred compiling the shaders: \" + gl.getShaderInfoLog(shader),\n );\n gl.deleteShader(shader);\n return null;\n }\n\n return shader;\n}\n"],"names":["main","_vsSource","_fbsSource","_fsSource","_globals","_drawInfo","_feedbackInfo","_init","_tick","sizes","canvas","gl","quadVerts","quadBuffer","programs","initShaderPrograms","fbInfo","drawInfo","speckle","poke","x","y","texture","event","makeTexture","time","render","vsSource","fbsSource","fsSource","vertexShader","loadShader","fragmentShader","feedbackShader","drawProgram","feedbackProgram","type","source","shader"],"mappings":"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"}