glre 0.16.0 → 0.17.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.d.ts +10 -0
- package/dist/index.js +15 -0
- package/dist/index.js.map +1 -0
- package/dist/index.mjs +15 -0
- package/dist/index.mjs.map +1 -0
- package/dist/native.d.ts +66 -0
- package/dist/native.js +15 -0
- package/dist/native.js.map +1 -0
- package/dist/native.mjs +15 -0
- package/dist/native.mjs.map +1 -0
- package/dist/react.d.ts +66 -0
- package/dist/react.js +15 -0
- package/dist/react.js.map +1 -0
- package/dist/react.mjs +15 -0
- package/dist/react.mjs.map +1 -0
- package/dist/solid.d.ts +65 -0
- package/dist/solid.js +15 -0
- package/dist/solid.js.map +1 -0
- package/dist/solid.mjs +15 -0
- package/dist/solid.mjs.map +1 -0
- package/dist/types-20446758.d.ts +78 -0
- package/index.ts +142 -111
- package/native.ts +4 -4
- package/package.json +120 -22
- package/qwik.ts +6 -6
- package/react.ts +8 -15
- package/solid.ts +7 -6
- package/test/index.test.ts +5 -0
- package/test/utils.test.ts +43 -0
- package/tsup.config.ts +16 -0
- package/types.ts +0 -3
- package/utils.ts +16 -16
- package/index.cjs.js +0 -1
- package/index.develop.js +0 -1
- package/index.js +0 -1
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { G as GL } from './types-20446758.js';
|
|
2
|
+
import 'refr/types';
|
|
3
|
+
import 'reev/types';
|
|
4
|
+
|
|
5
|
+
declare const createGL: (props?: Partial<GL>) => GL;
|
|
6
|
+
declare const gl: GL;
|
|
7
|
+
declare const createTF: (props?: Partial<GL>, self?: GL) => GL;
|
|
8
|
+
var self$1 = self;
|
|
9
|
+
|
|
10
|
+
export { createGL, createTF, self$1 as default, gl };
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
var A=Object.defineProperty;var G=Object.getOwnPropertyDescriptor;var w=Object.getOwnPropertyNames;var O=Object.prototype.hasOwnProperty;var C=(e,t)=>{for(var n in t)A(e,n,{get:t[n],enumerable:!0})},z=(e,t,n,o)=>{if(t&&typeof t=="object"||typeof t=="function")for(let a of w(t))!O.call(e,a)&&a!==n&&A(e,a,{get:()=>t[a],enumerable:!(o=G(t,a))||o.enumerable});return e};var H=e=>z(A({},"__esModule",{value:!0}),e);var q={};C(q,{createGL:()=>b,createTF:()=>k,default:()=>$,gl:()=>v});module.exports=H(q);var c=require("reev"),_=require("refr");var U=(e,t=!1)=>{let n=typeof e=="number"?0:e?.length;return n?t?(n=Math.sqrt(n)<<0,`uniformMatrix${n}fv`):`uniform${n}fv`:"uniform1f"},x=(e,t,n)=>{n&&(e=Math.max(...n)+1);let o=t.length/e;return o!==o<<0&&console.warn(`Vertex Stride Error: count ${e} is mismatch`),o<<0},F=(e,t,n)=>{let o=e.createShader(n);if(e.shaderSource(o,t),e.compileShader(o),e.getShaderParameter(o,e.COMPILE_STATUS))return o;throw`Could not compile glsl
|
|
2
|
+
|
|
3
|
+
`+e.getShaderInfoLog(o)},P=(e,t,n)=>{let o=e.createProgram();return e.attachShader(o,t),e.attachShader(o,n),e.linkProgram(o),e.getProgramParameter(o,e.LINK_STATUS)?(e.useProgram(o),o):(console.log(e.getProgramInfoLog(o)),null)},D=(e,t,n,o)=>{let a=e.createProgram();return e.attachShader(a,t),e.attachShader(a,n),e.transformFeedbackVaryings(a,o,e.SEPARATE_ATTRIBS),e.linkProgram(a),e.getProgramParameter(a,e.LINK_STATUS)?(e.useProgram(a),a):(console.warn(e.getProgramInfoLog(a)),null)},p=(e,t)=>{if(!t)return;let n=e.createBuffer();return e.bindBuffer(e.ARRAY_BUFFER,n),e.bufferData(e.ARRAY_BUFFER,new Float32Array(t),e.STATIC_DRAW),e.bindBuffer(e.ARRAY_BUFFER,null),n},L=(e,t)=>{if(!t)return;let n=e.createBuffer();return e.bindBuffer(e.ELEMENT_ARRAY_BUFFER,n),e.bufferData(e.ELEMENT_ARRAY_BUFFER,new Int16Array(t),e.STATIC_DRAW),e.bindBuffer(e.ELEMENT_ARRAY_BUFFER,null),n},y=(e,t,n,o,a)=>{e.bindBuffer(e.ARRAY_BUFFER,o),e.enableVertexAttribArray(n),e.vertexAttribPointer(n,t,e.FLOAT,!1,0,0),a&&e.bindBuffer(e.ELEMENT_ARRAY_BUFFER,a)};var B=(e,t)=>{let n=e.createTexture();return e.bindTexture(e.TEXTURE_2D,n),e.texImage2D(e.TEXTURE_2D,0,e.RGBA,e.RGBA,e.UNSIGNED_BYTE,t),e.generateMipmap(e.TEXTURE_2D),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_MIN_FILTER,e.LINEAR),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_MAG_FILTER,e.LINEAR),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_S,e.CLAMP_TO_EDGE),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_T,e.CLAMP_TO_EDGE),e.bindTexture(e.TEXTURE_2D,null),n},X=(e,t,n,o)=>{e.uniform1i(t,n),e.activeTexture(e["TEXTURE"+n]),e.bindTexture(e.TEXTURE_2D,o)};var Y=[-1,-1,1,-1,-1,1,-1,1,1,-1,1,1],W=`
|
|
4
|
+
attribute vec4 a_position;
|
|
5
|
+
void main() {
|
|
6
|
+
gl_Position = a_position;
|
|
7
|
+
}
|
|
8
|
+
`,V=`
|
|
9
|
+
precision mediump float;
|
|
10
|
+
uniform vec2 iResolution;
|
|
11
|
+
void main() {
|
|
12
|
+
gl_FragColor = vec4(fract(gl_FragCoord.xy / iResolution), 0, 1);
|
|
13
|
+
}
|
|
14
|
+
`,m=performance.now(),d=0,S=0,b=e=>{let r=(0,c.event)({vertex:W,fragment:V,size:[0,0],mouse:[0,0],count:6,counter:0,init:()=>{r(e);let E=r.gl,i=r.vs||r.vert||r.vertex,u=r.fs||r.frag||r.fragment,T=F(E,i,E.VERTEX_SHADER),s=F(E,u,E.FRAGMENT_SHADER);r.count===6&&r.attribute({a_position:Y}),(0,_.frame)(()=>void r.render()||1),r.pg=r.varying?D(E,T,s,r.varying):P(E,T,s),r.lastActiveUnit=0,r.activeUnit=(0,c.nested)(()=>r.lastActiveUnit++),r.location=(0,c.nested)((f,R=!1)=>R?E?.getAttribLocation(r.pg,f):E?.getUniformLocation(r.pg,f))},render:()=>{r.gl.useProgram(r.pg),r.frame.flush(),d=m,m=performance.now()/1e3,S=m-d,r.uniform({iTime:m,iPrevTime:d,iDeltaTime:S})},resize:(E,i=r.width||window.innerWidth,u=r.height||window.innerHeight)=>{r.size[0]=r.el.width=i,r.size[1]=r.el.height=u,r.uniform("iResolution",r.size)},mousemove:(E,i=E.clientX,u=E.clientY)=>{let[T,s]=r.size,{top:f,left:R}=r.el.getBoundingClientRect();r.mouse[0]=(i-f-T/2)/(T/2),r.mouse[1]=-(u-R-s/2)/(s/2),r.uniform("iMouse",r.mouse)},load:(E,i)=>{r.frame(()=>{let u=r.location(i.alt),T=r.activeUnit(i.alt),s=B(r.gl,i);r.frame(()=>(X(r.gl,u,T,s),!0))})},clear:(E="COLOR_BUFFER_BIT")=>{r.gl.clear(r.gl[E])},viewport:(E=r.size)=>{r.gl.viewport(0,0,...E)},drawArrays:(E="TRIANGLES")=>{r.gl.drawArrays(r.gl[E],0,r.count)},drawElements:(E="TRIANGLES",i="UNSIGNED_SHORT")=>{E=r.gl[E],i=r.gl[i],r.gl.drawElements(E,r.count,i,0)}}),I=(E,i,u="anonymous")=>{if(typeof window>"u")return;let T=new Image,s=f=>r.load(f,T);T.addEventListener("load",s,!1),Object.assign(T,{src:i,alt:E,crossOrigin:u})},M=(E,i=0,u=!1)=>{let T=U(i,u);r.frame(()=>{let s=r.location(E);u?r.gl[T](s,!1,i):r.gl[T](s,i)})},N=(E,i,u)=>{r.frame(()=>{let T=r.location(E,!0),s=p(r.gl,i),f=L(r.gl,u),R=r.count,h=x(R,i,u);y(r.gl,h,T,s,f)})};return r.frame=(0,_.queue)(),r.texture=(0,c.durable)(I),r.uniform=(0,c.durable)(M),r.attribute=(0,c.durable)(N),r},v=b(),k=(e,t=v)=>{let n=()=>{a(e),a.el=t.el,a.gl=t.gl,a.frame=t.frame,a.init(),t({resize:a.resize,mousemove:a.mousemove})},o=()=>{a(e),t({resize:a.resize,mousemove:a.mousemove})},a=b();return a({mount:n,clean:o}),a},$=self;0&&(module.exports={createGL,createTF,gl});
|
|
15
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../index.ts","../utils.ts"],"sourcesContent":["import { event, durable, nested } from 'reev'\nimport { queue, frame } from 'refr'\nimport {\n uniformType,\n vertexStride,\n createProgram,\n createTfProgram,\n createShader,\n createAttribute,\n createTexture,\n createVbo,\n createIbo,\n activeTexture,\n} from './utils'\nimport type { GL } from './types'\n\nconst a_position = [-1, -1, 1, -1, -1, 1, -1, 1, 1, -1, 1, 1]\n\nconst _defaultVertex = `\n attribute vec4 a_position;\n void main() {\n gl_Position = a_position;\n }\n`\n\nconst _defaultFragment = `\n precision mediump float;\n uniform vec2 iResolution;\n void main() {\n gl_FragColor = vec4(fract(gl_FragCoord.xy / iResolution), 0, 1);\n }\n`\n\nlet iTime = performance.now(),\n iPrevTime = 0,\n iDeltaTime = 0\n\nexport const createGL = (props?: Partial<GL>) => {\n const init = () => {\n self(props)\n const gl = self.gl\n const _v = self.vs || self.vert || self.vertex\n const _f = self.fs || self.frag || self.fragment\n const vs = createShader(gl, _v, gl.VERTEX_SHADER)\n const fs = createShader(gl, _f, gl.FRAGMENT_SHADER)\n if (self.count === 6) self.attribute({ a_position })\n frame(() => void self.render() || 1)\n self.pg = self.varying\n ? createTfProgram(gl, vs, fs, self.varying)\n : createProgram(gl, vs, fs)\n self.lastActiveUnit = 0\n self.activeUnit = nested(() => self.lastActiveUnit++)\n self.location = nested((key, isAttribute = false) => {\n return isAttribute\n ? gl?.getAttribLocation(self.pg, key)\n : gl?.getUniformLocation(self.pg, key)\n })\n }\n\n const render = () => {\n self.gl.useProgram(self.pg)\n self.frame.flush()\n iPrevTime = iTime\n iTime = performance.now() / 1000\n iDeltaTime = iTime - iPrevTime\n self.uniform({ iTime, iPrevTime, iDeltaTime })\n }\n\n const resize = (\n _e: any,\n width = self.width || window.innerWidth,\n height = self.height || window.innerHeight\n ) => {\n self.size[0] = self.el.width = width\n self.size[1] = self.el.height = height\n self.uniform('iResolution', self.size)\n }\n\n const mousemove = (_e: any, x = _e.clientX, y = _e.clientY) => {\n const [w, h] = self.size\n const { top, left } = self.el.getBoundingClientRect()\n self.mouse[0] = (x - top - w / 2) / (w / 2)\n self.mouse[1] = -(y - left - h / 2) / (h / 2)\n self.uniform('iMouse', self.mouse)\n }\n\n const load = (_: any, image: any) => {\n self.frame(() => {\n const loc = self.location(image.alt)\n const unit = self.activeUnit(image.alt)\n const tex = createTexture(self.gl, image)\n self.frame(() => {\n activeTexture(self.gl, loc, unit, tex)\n return true\n })\n })\n }\n\n const clear = (key = 'COLOR_BUFFER_BIT') => {\n self.gl.clear(self.gl[key])\n }\n\n const viewport = (size: number[] = self.size) => {\n self.gl.viewport(0, 0, ...size)\n }\n\n const drawArrays = (mode = 'TRIANGLES') => {\n self.gl.drawArrays(self.gl[mode], 0, self.count)\n }\n\n const drawElements = (mode = 'TRIANGLES', type = 'UNSIGNED_SHORT') => {\n mode = self.gl[mode]\n type = self.gl[type]\n self.gl.drawElements(mode, self.count, type, 0)\n }\n\n const self = event<Partial<GL>>({\n vertex: _defaultVertex,\n fragment: _defaultFragment,\n size: [0, 0],\n mouse: [0, 0],\n count: 6,\n counter: 0,\n init,\n render,\n resize,\n mousemove,\n load,\n clear,\n viewport,\n drawArrays,\n drawElements,\n }) as GL\n\n const _texture = (\n alt: string,\n src: string,\n crossOrigin = 'anonymous'\n ) => {\n if (typeof window === 'undefined') return\n const image = new Image()\n const callback = (_: any) => self.load(_, image)\n image.addEventListener('load', callback, false)\n Object.assign(image, { src, alt, crossOrigin })\n }\n\n const _uniform = (key: string, value = 0, isMatrix = false) => {\n const type = uniformType(value, isMatrix)\n self.frame(() => {\n const loc = self.location(key)\n if (isMatrix) self.gl[type](loc, false, value)\n else self.gl[type](loc, value)\n })\n }\n\n const _attribute = (\n key: string,\n value: number[],\n iboValue?: number[]\n ) => {\n self.frame(() => {\n const loc = self.location(key, true)\n const vbo = createVbo(self.gl, value)\n const ibo = createIbo(self.gl, iboValue)\n const n = self.count\n const stride = vertexStride(n, value, iboValue)\n createAttribute(self.gl, stride, loc, vbo, ibo)\n })\n }\n\n self.frame = queue()\n self.texture = durable(_texture)\n self.uniform = durable(_uniform)\n self.attribute = durable(_attribute)\n\n return self\n}\n\nexport const gl = createGL()\n\nexport const createTF = (props?: Partial<GL>, self = gl) => {\n const mount = () => {\n tf(props)\n tf.el = self.el\n tf.gl = self.gl\n tf.frame = self.frame\n tf.init()\n self({ resize: tf.resize, mousemove: tf.mousemove })\n }\n\n const clean = () => {\n tf(props)\n self({ resize: tf.resize, mousemove: tf.mousemove })\n }\n\n const tf = createGL()\n\n tf({ mount, clean })\n return tf\n}\n\nexport default self\n","/**\n * utils\n */\nexport const uniformType = (value: number | number[], isMatrix = false) => {\n let length = typeof value === 'number' ? 0 : value?.length\n if (!length) return `uniform1f`\n if (!isMatrix) return `uniform${length}fv`\n length = Math.sqrt(length) << 0\n return `uniformMatrix${length}fv`\n}\n\nexport const vertexStride = (\n count: number,\n value: number[],\n iboValue?: number[]\n) => {\n if (iboValue) count = Math.max(...iboValue) + 1\n const stride = value.length / count\n if (stride !== stride << 0)\n console.warn(`Vertex Stride Error: count ${count} is mismatch`)\n return stride << 0\n}\n\n/**\n * graphics\n */\nexport const createShader = (gl: any, source: string, type: unknown) => {\n const shader = gl.createShader(type)\n gl.shaderSource(shader, source)\n gl.compileShader(shader)\n if (gl.getShaderParameter(shader, gl.COMPILE_STATUS)) {\n return shader\n } else throw 'Could not compile glsl\\n\\n' + gl.getShaderInfoLog(shader)\n}\n\nexport const createProgram = (gl: any, vs: any, fs: any) => {\n const program = gl.createProgram()\n gl.attachShader(program, vs)\n gl.attachShader(program, fs)\n gl.linkProgram(program)\n if (gl.getProgramParameter(program, gl.LINK_STATUS)) {\n gl.useProgram(program)\n return program\n } else {\n console.log(gl.getProgramInfoLog(program))\n return null\n }\n}\n\nexport const createTfProgram = (gl: any, vs: any, fs: any, varyings?: any) => {\n const pg = gl.createProgram()\n gl.attachShader(pg, vs)\n gl.attachShader(pg, fs)\n gl.transformFeedbackVaryings(pg, varyings, gl.SEPARATE_ATTRIBS)\n gl.linkProgram(pg)\n if (gl.getProgramParameter(pg, gl.LINK_STATUS)) {\n gl.useProgram(pg)\n return pg\n } else {\n console.warn(gl.getProgramInfoLog(pg))\n return null\n }\n}\n\nexport const createVbo = (gl: any, data: number[]) => {\n if (!data) return\n const vbo = gl.createBuffer()\n gl.bindBuffer(gl.ARRAY_BUFFER, vbo)\n gl.bufferData(gl.ARRAY_BUFFER, new Float32Array(data), gl.STATIC_DRAW)\n gl.bindBuffer(gl.ARRAY_BUFFER, null)\n return vbo\n}\n\nexport const createIbo = (gl: any, data?: number[]) => {\n if (!data) return\n const ibo = gl.createBuffer()\n gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, ibo)\n gl.bufferData(\n gl.ELEMENT_ARRAY_BUFFER,\n new Int16Array(data),\n gl.STATIC_DRAW\n )\n gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, null)\n return ibo\n}\n\nexport const createAttribute = (\n gl: any,\n stride: number,\n location: any,\n vbo: any,\n ibo: any\n) => {\n gl.bindBuffer(gl.ARRAY_BUFFER, vbo)\n gl.enableVertexAttribArray(location)\n gl.vertexAttribPointer(location, stride, gl.FLOAT, false, 0, 0)\n if (ibo) gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, ibo)\n}\n\nexport const createFramebuffer = (gl: any, width: number, height: number) => {\n const frameBuffer = gl.createFramebuffer()\n gl.bindFramebuffer(gl.FRAMEBUFFER, frameBuffer)\n const renderBuffer = gl.createRenderbuffer()\n gl.bindRenderbuffer(gl.RENDERBUFFER, renderBuffer)\n gl.renderbufferStorage(\n gl.RENDERBUFFER,\n gl.DEPTH_COMPONENT16,\n width,\n height\n )\n gl.framebufferRenderbuffer(\n gl.FRAMEBUFFER,\n gl.DEPTH_ATTACHMENT,\n gl.RENDERBUFFER,\n renderBuffer\n )\n const texture = gl.createTexture()\n gl.bindTexture(gl.TEXTURE_2D, texture)\n gl.texImage2D(\n gl.TEXTURE_2D,\n 0,\n gl.RGBA,\n width,\n height,\n 0,\n gl.RGBA,\n gl.UNSIGNED_BYTE,\n null\n )\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.LINEAR)\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.LINEAR)\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.framebufferTexture2D(\n gl.FRAMEBUFFER,\n gl.COLOR_ATTACHMENT0,\n gl.TEXTURE_2D,\n texture,\n 0\n )\n gl.bindTexture(gl.TEXTURE_2D, null)\n gl.bindRenderbuffer(gl.RENDERBUFFER, null)\n gl.bindFramebuffer(gl.FRAMEBUFFER, null)\n return { frameBuffer, renderBuffer, texture }\n}\n\nexport const createFramebufferFloat = (\n gl: any,\n ext: any,\n width: number,\n height: number\n) => {\n const flg =\n ext.textureFloat != null\n ? gl.FLOAT\n : ext.textureHalfFloat.HALF_FLOAT_OES\n const frameBuffer = gl.createFramebuffer()\n const texture = gl.createTexture()\n gl.bindFramebuffer(gl.FRAMEBUFFER, frameBuffer)\n gl.bindTexture(gl.TEXTURE_2D, texture)\n gl.texImage2D(\n gl.TEXTURE_2D,\n 0,\n gl.RGBA,\n width,\n height,\n 0,\n gl.RGBA,\n flg,\n null\n )\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.NEAREST)\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.NEAREST)\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.framebufferTexture2D(\n gl.FRAMEBUFFER,\n gl.COLOR_ATTACHMENT0,\n gl.TEXTURE_2D,\n texture,\n 0\n )\n gl.bindTexture(gl.TEXTURE_2D, null)\n gl.bindFramebuffer(gl.FRAMEBUFFER, null)\n return { frameBuffer, texture }\n}\n\nexport const createTexture = (gl: any, img: any) => {\n const texture = gl.createTexture()\n gl.bindTexture(gl.TEXTURE_2D, texture)\n gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, gl.RGBA, gl.UNSIGNED_BYTE, img)\n gl.generateMipmap(gl.TEXTURE_2D)\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.LINEAR)\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.LINEAR)\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.bindTexture(gl.TEXTURE_2D, null)\n return texture\n}\n\nexport const activeTexture = (\n gl: any,\n location: any,\n activeUnit: any,\n texture: any\n) => {\n gl.uniform1i(location, activeUnit)\n gl.activeTexture(gl['TEXTURE' + activeUnit])\n gl.bindTexture(gl.TEXTURE_2D, texture)\n}\n"],"mappings":"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","names":["core_exports","__export","createGL","createTF","core_default","gl","__toCommonJS","import_reev","import_refr","uniformType","value","isMatrix","length","vertexStride","count","iboValue","stride","createShader","gl","source","type","shader","createProgram","vs","fs","program","createTfProgram","varyings","pg","createVbo","data","vbo","createIbo","ibo","createAttribute","location","createTexture","gl","img","texture","activeTexture","location","activeUnit","a_position","_defaultVertex","_defaultFragment","iTime","iPrevTime","iDeltaTime","createGL","props","self","gl","_v","_f","vs","createShader","fs","createTfProgram","createProgram","key","isAttribute","_e","width","height","x","y","w","h","top","left","_","image","loc","unit","tex","createTexture","activeTexture","size","mode","type","_texture","alt","src","crossOrigin","callback","_uniform","value","isMatrix","uniformType","_attribute","iboValue","vbo","createVbo","ibo","createIbo","n","stride","vertexStride","createAttribute","createTF","mount","tf","clean","core_default"]}
|
package/dist/index.mjs
ADDED
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import{event as N,durable as _,nested as y}from"reev";import{queue as h,frame as G}from"refr";var F=(e,a=!1)=>{let t=typeof e=="number"?0:e?.length;return t?a?(t=Math.sqrt(t)<<0,`uniformMatrix${t}fv`):`uniform${t}fv`:"uniform1f"},d=(e,a,t)=>{t&&(e=Math.max(...t)+1);let o=a.length/e;return o!==o<<0&&console.warn(`Vertex Stride Error: count ${e} is mismatch`),o<<0},m=(e,a,t)=>{let o=e.createShader(t);if(e.shaderSource(o,a),e.compileShader(o),e.getShaderParameter(o,e.COMPILE_STATUS))return o;throw`Could not compile glsl
|
|
2
|
+
|
|
3
|
+
`+e.getShaderInfoLog(o)},b=(e,a,t)=>{let o=e.createProgram();return e.attachShader(o,a),e.attachShader(o,t),e.linkProgram(o),e.getProgramParameter(o,e.LINK_STATUS)?(e.useProgram(o),o):(console.log(e.getProgramInfoLog(o)),null)},U=(e,a,t,o)=>{let E=e.createProgram();return e.attachShader(E,a),e.attachShader(E,t),e.transformFeedbackVaryings(E,o,e.SEPARATE_ATTRIBS),e.linkProgram(E),e.getProgramParameter(E,e.LINK_STATUS)?(e.useProgram(E),E):(console.warn(e.getProgramInfoLog(E)),null)},x=(e,a)=>{if(!a)return;let t=e.createBuffer();return e.bindBuffer(e.ARRAY_BUFFER,t),e.bufferData(e.ARRAY_BUFFER,new Float32Array(a),e.STATIC_DRAW),e.bindBuffer(e.ARRAY_BUFFER,null),t},P=(e,a)=>{if(!a)return;let t=e.createBuffer();return e.bindBuffer(e.ELEMENT_ARRAY_BUFFER,t),e.bufferData(e.ELEMENT_ARRAY_BUFFER,new Int16Array(a),e.STATIC_DRAW),e.bindBuffer(e.ELEMENT_ARRAY_BUFFER,null),t},D=(e,a,t,o,E)=>{e.bindBuffer(e.ARRAY_BUFFER,o),e.enableVertexAttribArray(t),e.vertexAttribPointer(t,a,e.FLOAT,!1,0,0),E&&e.bindBuffer(e.ELEMENT_ARRAY_BUFFER,E)};var p=(e,a)=>{let t=e.createTexture();return e.bindTexture(e.TEXTURE_2D,t),e.texImage2D(e.TEXTURE_2D,0,e.RGBA,e.RGBA,e.UNSIGNED_BYTE,a),e.generateMipmap(e.TEXTURE_2D),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_MIN_FILTER,e.LINEAR),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_MAG_FILTER,e.LINEAR),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_S,e.CLAMP_TO_EDGE),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_T,e.CLAMP_TO_EDGE),e.bindTexture(e.TEXTURE_2D,null),t},L=(e,a,t,o)=>{e.uniform1i(a,t),e.activeTexture(e["TEXTURE"+t]),e.bindTexture(e.TEXTURE_2D,o)};var w=[-1,-1,1,-1,-1,1,-1,1,1,-1,1,1],O=`
|
|
4
|
+
attribute vec4 a_position;
|
|
5
|
+
void main() {
|
|
6
|
+
gl_Position = a_position;
|
|
7
|
+
}
|
|
8
|
+
`,C=`
|
|
9
|
+
precision mediump float;
|
|
10
|
+
uniform vec2 iResolution;
|
|
11
|
+
void main() {
|
|
12
|
+
gl_FragColor = vec4(fract(gl_FragCoord.xy / iResolution), 0, 1);
|
|
13
|
+
}
|
|
14
|
+
`,R=performance.now(),A=0,B=0,X=e=>{let r=N({vertex:O,fragment:C,size:[0,0],mouse:[0,0],count:6,counter:0,init:()=>{r(e);let n=r.gl,i=r.vs||r.vert||r.vertex,u=r.fs||r.frag||r.fragment,T=m(n,i,n.VERTEX_SHADER),s=m(n,u,n.FRAGMENT_SHADER);r.count===6&&r.attribute({a_position:w}),G(()=>void r.render()||1),r.pg=r.varying?U(n,T,s,r.varying):b(n,T,s),r.lastActiveUnit=0,r.activeUnit=y(()=>r.lastActiveUnit++),r.location=y((c,f=!1)=>f?n?.getAttribLocation(r.pg,c):n?.getUniformLocation(r.pg,c))},render:()=>{r.gl.useProgram(r.pg),r.frame.flush(),A=R,R=performance.now()/1e3,B=R-A,r.uniform({iTime:R,iPrevTime:A,iDeltaTime:B})},resize:(n,i=r.width||window.innerWidth,u=r.height||window.innerHeight)=>{r.size[0]=r.el.width=i,r.size[1]=r.el.height=u,r.uniform("iResolution",r.size)},mousemove:(n,i=n.clientX,u=n.clientY)=>{let[T,s]=r.size,{top:c,left:f}=r.el.getBoundingClientRect();r.mouse[0]=(i-c-T/2)/(T/2),r.mouse[1]=-(u-f-s/2)/(s/2),r.uniform("iMouse",r.mouse)},load:(n,i)=>{r.frame(()=>{let u=r.location(i.alt),T=r.activeUnit(i.alt),s=p(r.gl,i);r.frame(()=>(L(r.gl,u,T,s),!0))})},clear:(n="COLOR_BUFFER_BIT")=>{r.gl.clear(r.gl[n])},viewport:(n=r.size)=>{r.gl.viewport(0,0,...n)},drawArrays:(n="TRIANGLES")=>{r.gl.drawArrays(r.gl[n],0,r.count)},drawElements:(n="TRIANGLES",i="UNSIGNED_SHORT")=>{n=r.gl[n],i=r.gl[i],r.gl.drawElements(n,r.count,i,0)}}),S=(n,i,u="anonymous")=>{if(typeof window>"u")return;let T=new Image,s=c=>r.load(c,T);T.addEventListener("load",s,!1),Object.assign(T,{src:i,alt:n,crossOrigin:u})},v=(n,i=0,u=!1)=>{let T=F(i,u);r.frame(()=>{let s=r.location(n);u?r.gl[T](s,!1,i):r.gl[T](s,i)})},I=(n,i,u)=>{r.frame(()=>{let T=r.location(n,!0),s=x(r.gl,i),c=P(r.gl,u),f=r.count,M=d(f,i,u);D(r.gl,M,T,s,c)})};return r.frame=h(),r.texture=_(S),r.uniform=_(v),r.attribute=_(I),r},z=X(),J=(e,a=z)=>{let t=()=>{E(e),E.el=a.el,E.gl=a.gl,E.frame=a.frame,E.init(),a({resize:E.resize,mousemove:E.mousemove})},o=()=>{E(e),a({resize:E.resize,mousemove:E.mousemove})},E=X();return E({mount:t,clean:o}),E},Q=self;export{X as createGL,J as createTF,Q as default,z as gl};
|
|
15
|
+
//# sourceMappingURL=index.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../index.ts","../utils.ts"],"sourcesContent":["import { event, durable, nested } from 'reev'\nimport { queue, frame } from 'refr'\nimport {\n uniformType,\n vertexStride,\n createProgram,\n createTfProgram,\n createShader,\n createAttribute,\n createTexture,\n createVbo,\n createIbo,\n activeTexture,\n} from './utils'\nimport type { GL } from './types'\n\nconst a_position = [-1, -1, 1, -1, -1, 1, -1, 1, 1, -1, 1, 1]\n\nconst _defaultVertex = `\n attribute vec4 a_position;\n void main() {\n gl_Position = a_position;\n }\n`\n\nconst _defaultFragment = `\n precision mediump float;\n uniform vec2 iResolution;\n void main() {\n gl_FragColor = vec4(fract(gl_FragCoord.xy / iResolution), 0, 1);\n }\n`\n\nlet iTime = performance.now(),\n iPrevTime = 0,\n iDeltaTime = 0\n\nexport const createGL = (props?: Partial<GL>) => {\n const init = () => {\n self(props)\n const gl = self.gl\n const _v = self.vs || self.vert || self.vertex\n const _f = self.fs || self.frag || self.fragment\n const vs = createShader(gl, _v, gl.VERTEX_SHADER)\n const fs = createShader(gl, _f, gl.FRAGMENT_SHADER)\n if (self.count === 6) self.attribute({ a_position })\n frame(() => void self.render() || 1)\n self.pg = self.varying\n ? createTfProgram(gl, vs, fs, self.varying)\n : createProgram(gl, vs, fs)\n self.lastActiveUnit = 0\n self.activeUnit = nested(() => self.lastActiveUnit++)\n self.location = nested((key, isAttribute = false) => {\n return isAttribute\n ? gl?.getAttribLocation(self.pg, key)\n : gl?.getUniformLocation(self.pg, key)\n })\n }\n\n const render = () => {\n self.gl.useProgram(self.pg)\n self.frame.flush()\n iPrevTime = iTime\n iTime = performance.now() / 1000\n iDeltaTime = iTime - iPrevTime\n self.uniform({ iTime, iPrevTime, iDeltaTime })\n }\n\n const resize = (\n _e: any,\n width = self.width || window.innerWidth,\n height = self.height || window.innerHeight\n ) => {\n self.size[0] = self.el.width = width\n self.size[1] = self.el.height = height\n self.uniform('iResolution', self.size)\n }\n\n const mousemove = (_e: any, x = _e.clientX, y = _e.clientY) => {\n const [w, h] = self.size\n const { top, left } = self.el.getBoundingClientRect()\n self.mouse[0] = (x - top - w / 2) / (w / 2)\n self.mouse[1] = -(y - left - h / 2) / (h / 2)\n self.uniform('iMouse', self.mouse)\n }\n\n const load = (_: any, image: any) => {\n self.frame(() => {\n const loc = self.location(image.alt)\n const unit = self.activeUnit(image.alt)\n const tex = createTexture(self.gl, image)\n self.frame(() => {\n activeTexture(self.gl, loc, unit, tex)\n return true\n })\n })\n }\n\n const clear = (key = 'COLOR_BUFFER_BIT') => {\n self.gl.clear(self.gl[key])\n }\n\n const viewport = (size: number[] = self.size) => {\n self.gl.viewport(0, 0, ...size)\n }\n\n const drawArrays = (mode = 'TRIANGLES') => {\n self.gl.drawArrays(self.gl[mode], 0, self.count)\n }\n\n const drawElements = (mode = 'TRIANGLES', type = 'UNSIGNED_SHORT') => {\n mode = self.gl[mode]\n type = self.gl[type]\n self.gl.drawElements(mode, self.count, type, 0)\n }\n\n const self = event<Partial<GL>>({\n vertex: _defaultVertex,\n fragment: _defaultFragment,\n size: [0, 0],\n mouse: [0, 0],\n count: 6,\n counter: 0,\n init,\n render,\n resize,\n mousemove,\n load,\n clear,\n viewport,\n drawArrays,\n drawElements,\n }) as GL\n\n const _texture = (\n alt: string,\n src: string,\n crossOrigin = 'anonymous'\n ) => {\n if (typeof window === 'undefined') return\n const image = new Image()\n const callback = (_: any) => self.load(_, image)\n image.addEventListener('load', callback, false)\n Object.assign(image, { src, alt, crossOrigin })\n }\n\n const _uniform = (key: string, value = 0, isMatrix = false) => {\n const type = uniformType(value, isMatrix)\n self.frame(() => {\n const loc = self.location(key)\n if (isMatrix) self.gl[type](loc, false, value)\n else self.gl[type](loc, value)\n })\n }\n\n const _attribute = (\n key: string,\n value: number[],\n iboValue?: number[]\n ) => {\n self.frame(() => {\n const loc = self.location(key, true)\n const vbo = createVbo(self.gl, value)\n const ibo = createIbo(self.gl, iboValue)\n const n = self.count\n const stride = vertexStride(n, value, iboValue)\n createAttribute(self.gl, stride, loc, vbo, ibo)\n })\n }\n\n self.frame = queue()\n self.texture = durable(_texture)\n self.uniform = durable(_uniform)\n self.attribute = durable(_attribute)\n\n return self\n}\n\nexport const gl = createGL()\n\nexport const createTF = (props?: Partial<GL>, self = gl) => {\n const mount = () => {\n tf(props)\n tf.el = self.el\n tf.gl = self.gl\n tf.frame = self.frame\n tf.init()\n self({ resize: tf.resize, mousemove: tf.mousemove })\n }\n\n const clean = () => {\n tf(props)\n self({ resize: tf.resize, mousemove: tf.mousemove })\n }\n\n const tf = createGL()\n\n tf({ mount, clean })\n return tf\n}\n\nexport default self\n","/**\n * utils\n */\nexport const uniformType = (value: number | number[], isMatrix = false) => {\n let length = typeof value === 'number' ? 0 : value?.length\n if (!length) return `uniform1f`\n if (!isMatrix) return `uniform${length}fv`\n length = Math.sqrt(length) << 0\n return `uniformMatrix${length}fv`\n}\n\nexport const vertexStride = (\n count: number,\n value: number[],\n iboValue?: number[]\n) => {\n if (iboValue) count = Math.max(...iboValue) + 1\n const stride = value.length / count\n if (stride !== stride << 0)\n console.warn(`Vertex Stride Error: count ${count} is mismatch`)\n return stride << 0\n}\n\n/**\n * graphics\n */\nexport const createShader = (gl: any, source: string, type: unknown) => {\n const shader = gl.createShader(type)\n gl.shaderSource(shader, source)\n gl.compileShader(shader)\n if (gl.getShaderParameter(shader, gl.COMPILE_STATUS)) {\n return shader\n } else throw 'Could not compile glsl\\n\\n' + gl.getShaderInfoLog(shader)\n}\n\nexport const createProgram = (gl: any, vs: any, fs: any) => {\n const program = gl.createProgram()\n gl.attachShader(program, vs)\n gl.attachShader(program, fs)\n gl.linkProgram(program)\n if (gl.getProgramParameter(program, gl.LINK_STATUS)) {\n gl.useProgram(program)\n return program\n } else {\n console.log(gl.getProgramInfoLog(program))\n return null\n }\n}\n\nexport const createTfProgram = (gl: any, vs: any, fs: any, varyings?: any) => {\n const pg = gl.createProgram()\n gl.attachShader(pg, vs)\n gl.attachShader(pg, fs)\n gl.transformFeedbackVaryings(pg, varyings, gl.SEPARATE_ATTRIBS)\n gl.linkProgram(pg)\n if (gl.getProgramParameter(pg, gl.LINK_STATUS)) {\n gl.useProgram(pg)\n return pg\n } else {\n console.warn(gl.getProgramInfoLog(pg))\n return null\n }\n}\n\nexport const createVbo = (gl: any, data: number[]) => {\n if (!data) return\n const vbo = gl.createBuffer()\n gl.bindBuffer(gl.ARRAY_BUFFER, vbo)\n gl.bufferData(gl.ARRAY_BUFFER, new Float32Array(data), gl.STATIC_DRAW)\n gl.bindBuffer(gl.ARRAY_BUFFER, null)\n return vbo\n}\n\nexport const createIbo = (gl: any, data?: number[]) => {\n if (!data) return\n const ibo = gl.createBuffer()\n gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, ibo)\n gl.bufferData(\n gl.ELEMENT_ARRAY_BUFFER,\n new Int16Array(data),\n gl.STATIC_DRAW\n )\n gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, null)\n return ibo\n}\n\nexport const createAttribute = (\n gl: any,\n stride: number,\n location: any,\n vbo: any,\n ibo: any\n) => {\n gl.bindBuffer(gl.ARRAY_BUFFER, vbo)\n gl.enableVertexAttribArray(location)\n gl.vertexAttribPointer(location, stride, gl.FLOAT, false, 0, 0)\n if (ibo) gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, ibo)\n}\n\nexport const createFramebuffer = (gl: any, width: number, height: number) => {\n const frameBuffer = gl.createFramebuffer()\n gl.bindFramebuffer(gl.FRAMEBUFFER, frameBuffer)\n const renderBuffer = gl.createRenderbuffer()\n gl.bindRenderbuffer(gl.RENDERBUFFER, renderBuffer)\n gl.renderbufferStorage(\n gl.RENDERBUFFER,\n gl.DEPTH_COMPONENT16,\n width,\n height\n )\n gl.framebufferRenderbuffer(\n gl.FRAMEBUFFER,\n gl.DEPTH_ATTACHMENT,\n gl.RENDERBUFFER,\n renderBuffer\n )\n const texture = gl.createTexture()\n gl.bindTexture(gl.TEXTURE_2D, texture)\n gl.texImage2D(\n gl.TEXTURE_2D,\n 0,\n gl.RGBA,\n width,\n height,\n 0,\n gl.RGBA,\n gl.UNSIGNED_BYTE,\n null\n )\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.LINEAR)\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.LINEAR)\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.framebufferTexture2D(\n gl.FRAMEBUFFER,\n gl.COLOR_ATTACHMENT0,\n gl.TEXTURE_2D,\n texture,\n 0\n )\n gl.bindTexture(gl.TEXTURE_2D, null)\n gl.bindRenderbuffer(gl.RENDERBUFFER, null)\n gl.bindFramebuffer(gl.FRAMEBUFFER, null)\n return { frameBuffer, renderBuffer, texture }\n}\n\nexport const createFramebufferFloat = (\n gl: any,\n ext: any,\n width: number,\n height: number\n) => {\n const flg =\n ext.textureFloat != null\n ? gl.FLOAT\n : ext.textureHalfFloat.HALF_FLOAT_OES\n const frameBuffer = gl.createFramebuffer()\n const texture = gl.createTexture()\n gl.bindFramebuffer(gl.FRAMEBUFFER, frameBuffer)\n gl.bindTexture(gl.TEXTURE_2D, texture)\n gl.texImage2D(\n gl.TEXTURE_2D,\n 0,\n gl.RGBA,\n width,\n height,\n 0,\n gl.RGBA,\n flg,\n null\n )\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.NEAREST)\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.NEAREST)\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.framebufferTexture2D(\n gl.FRAMEBUFFER,\n gl.COLOR_ATTACHMENT0,\n gl.TEXTURE_2D,\n texture,\n 0\n )\n gl.bindTexture(gl.TEXTURE_2D, null)\n gl.bindFramebuffer(gl.FRAMEBUFFER, null)\n return { frameBuffer, texture }\n}\n\nexport const createTexture = (gl: any, img: any) => {\n const texture = gl.createTexture()\n gl.bindTexture(gl.TEXTURE_2D, texture)\n gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, gl.RGBA, gl.UNSIGNED_BYTE, img)\n gl.generateMipmap(gl.TEXTURE_2D)\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.LINEAR)\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.LINEAR)\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.bindTexture(gl.TEXTURE_2D, null)\n return texture\n}\n\nexport const activeTexture = (\n gl: any,\n location: any,\n activeUnit: any,\n texture: any\n) => {\n gl.uniform1i(location, activeUnit)\n gl.activeTexture(gl['TEXTURE' + activeUnit])\n gl.bindTexture(gl.TEXTURE_2D, texture)\n}\n"],"mappings":"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","names":["event","durable","nested","queue","frame","uniformType","value","isMatrix","length","vertexStride","count","iboValue","stride","createShader","gl","source","type","shader","createProgram","vs","fs","program","createTfProgram","varyings","pg","createVbo","data","vbo","createIbo","ibo","createAttribute","location","createTexture","gl","img","texture","activeTexture","location","activeUnit","a_position","_defaultVertex","_defaultFragment","iTime","iPrevTime","iDeltaTime","createGL","props","self","event","gl","_v","_f","vs","createShader","fs","frame","createTfProgram","createProgram","nested","key","isAttribute","_e","width","height","x","y","w","h","top","left","_","image","loc","unit","tex","createTexture","activeTexture","size","mode","type","_texture","alt","src","crossOrigin","callback","_uniform","value","isMatrix","uniformType","_attribute","iboValue","vbo","createVbo","ibo","createIbo","n","stride","vertexStride","createAttribute","queue","durable","createTF","mount","tf","clean","core_default"]}
|
package/dist/native.d.ts
ADDED
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
import * as reev_types from 'reev/types';
|
|
2
|
+
import * as refr from 'refr';
|
|
3
|
+
import { Fun } from 'refr';
|
|
4
|
+
import { G as GL, P as PrecisionMode, U as Uniform, A as Attribute, a as GLClearMode, b as GLDrawMode } from './types-20446758.js';
|
|
5
|
+
import 'refr/types';
|
|
6
|
+
|
|
7
|
+
declare const useGL: (props?: Partial<GL>, self?: GL) => reev_types.default<{
|
|
8
|
+
id: string;
|
|
9
|
+
width: number;
|
|
10
|
+
height: number;
|
|
11
|
+
size: [number, number];
|
|
12
|
+
mouse: [number, number];
|
|
13
|
+
count: number;
|
|
14
|
+
vs: string;
|
|
15
|
+
fs: string;
|
|
16
|
+
vert: string;
|
|
17
|
+
frag: string;
|
|
18
|
+
vertex: string;
|
|
19
|
+
fragment: string;
|
|
20
|
+
varying: string;
|
|
21
|
+
int: PrecisionMode;
|
|
22
|
+
float: PrecisionMode;
|
|
23
|
+
sampler2D: PrecisionMode;
|
|
24
|
+
samplerCube: PrecisionMode;
|
|
25
|
+
lastActiveUnit: number;
|
|
26
|
+
gl: any;
|
|
27
|
+
pg: any;
|
|
28
|
+
el: any;
|
|
29
|
+
frame: refr.Queue;
|
|
30
|
+
target: any;
|
|
31
|
+
stride: reev_types.Nested<number, any[]>;
|
|
32
|
+
location: reev_types.Nested<any, any[]>;
|
|
33
|
+
activeUnit: reev_types.Nested<number, any[]>;
|
|
34
|
+
default: any;
|
|
35
|
+
ref?: any;
|
|
36
|
+
init(varying?: string[]): void;
|
|
37
|
+
mount(): void;
|
|
38
|
+
clean(): void;
|
|
39
|
+
render(): void;
|
|
40
|
+
mousemove(e: Event): void;
|
|
41
|
+
resize(e?: Event, width?: number, height?: number): void;
|
|
42
|
+
load(e?: Event, image?: HTMLImageElement): void;
|
|
43
|
+
uniform(key: string, value: Uniform): GL;
|
|
44
|
+
uniform(target: {
|
|
45
|
+
[key: string]: Uniform;
|
|
46
|
+
}): GL;
|
|
47
|
+
texture(key: string, value: string): GL;
|
|
48
|
+
texture(target: {
|
|
49
|
+
[key: string]: string;
|
|
50
|
+
}): GL;
|
|
51
|
+
attribute(key: string, value: Attribute, iboValue?: Attribute): GL;
|
|
52
|
+
attribute(target: {
|
|
53
|
+
[key: string]: Attribute;
|
|
54
|
+
}): GL;
|
|
55
|
+
clear(key?: GLClearMode): void;
|
|
56
|
+
viewport(size?: [number, number]): void;
|
|
57
|
+
drawArrays(key?: GLDrawMode): void;
|
|
58
|
+
drawElements(key?: GLDrawMode): void;
|
|
59
|
+
}, any[] | unknown[]>;
|
|
60
|
+
declare const useTF: (props: Partial<GL>, self?: GL) => GL;
|
|
61
|
+
declare const useTexture: (props: any, self?: GL) => GL;
|
|
62
|
+
declare const useAttribute: (props: any, self?: GL) => GL;
|
|
63
|
+
declare const useUniform: (props: any, self?: GL) => GL;
|
|
64
|
+
declare const useFrame: (fun: Fun, self?: GL) => GL;
|
|
65
|
+
|
|
66
|
+
export { useAttribute, useFrame, useGL, useTF, useTexture, useUniform };
|
package/dist/native.js
ADDED
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
var b=Object.defineProperty;var Y=Object.getOwnPropertyDescriptor;var W=Object.getOwnPropertyNames;var V=Object.prototype.hasOwnProperty;var k=(e,t)=>{for(var n in t)b(e,n,{get:t[n],enumerable:!0})},$=(e,t,n,o)=>{if(t&&typeof t=="object"||typeof t=="function")for(let a of W(t))!V.call(e,a)&&a!==n&&b(e,a,{get:()=>t[a],enumerable:!(o=Y(t,a))||o.enumerable});return e};var q=e=>$(b({},"__esModule",{value:!0}),e);var te={};k(te,{useAttribute:()=>g,useFrame:()=>re,useGL:()=>Q,useTF:()=>Z,useTexture:()=>l,useUniform:()=>ee});module.exports=q(te);var R=require("react"),w=require("react-native"),A=require("reev/react");var T=require("reev"),F=require("refr");var D=(e,t=!1)=>{let n=typeof e=="number"?0:e?.length;return n?t?(n=Math.sqrt(n)<<0,`uniformMatrix${n}fv`):`uniform${n}fv`:"uniform1f"},L=(e,t,n)=>{n&&(e=Math.max(...n)+1);let o=t.length/e;return o!==o<<0&&console.warn(`Vertex Stride Error: count ${e} is mismatch`),o<<0},x=(e,t,n)=>{let o=e.createShader(n);if(e.shaderSource(o,t),e.compileShader(o),e.getShaderParameter(o,e.COMPILE_STATUS))return o;throw`Could not compile glsl
|
|
2
|
+
|
|
3
|
+
`+e.getShaderInfoLog(o)},y=(e,t,n)=>{let o=e.createProgram();return e.attachShader(o,t),e.attachShader(o,n),e.linkProgram(o),e.getProgramParameter(o,e.LINK_STATUS)?(e.useProgram(o),o):(console.log(e.getProgramInfoLog(o)),null)},B=(e,t,n,o)=>{let a=e.createProgram();return e.attachShader(a,t),e.attachShader(a,n),e.transformFeedbackVaryings(a,o,e.SEPARATE_ATTRIBS),e.linkProgram(a),e.getProgramParameter(a,e.LINK_STATUS)?(e.useProgram(a),a):(console.warn(e.getProgramInfoLog(a)),null)},X=(e,t)=>{if(!t)return;let n=e.createBuffer();return e.bindBuffer(e.ARRAY_BUFFER,n),e.bufferData(e.ARRAY_BUFFER,new Float32Array(t),e.STATIC_DRAW),e.bindBuffer(e.ARRAY_BUFFER,null),n},S=(e,t)=>{if(!t)return;let n=e.createBuffer();return e.bindBuffer(e.ELEMENT_ARRAY_BUFFER,n),e.bufferData(e.ELEMENT_ARRAY_BUFFER,new Int16Array(t),e.STATIC_DRAW),e.bindBuffer(e.ELEMENT_ARRAY_BUFFER,null),n},v=(e,t,n,o,a)=>{e.bindBuffer(e.ARRAY_BUFFER,o),e.enableVertexAttribArray(n),e.vertexAttribPointer(n,t,e.FLOAT,!1,0,0),a&&e.bindBuffer(e.ELEMENT_ARRAY_BUFFER,a)};var I=(e,t)=>{let n=e.createTexture();return e.bindTexture(e.TEXTURE_2D,n),e.texImage2D(e.TEXTURE_2D,0,e.RGBA,e.RGBA,e.UNSIGNED_BYTE,t),e.generateMipmap(e.TEXTURE_2D),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_MIN_FILTER,e.LINEAR),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_MAG_FILTER,e.LINEAR),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_S,e.CLAMP_TO_EDGE),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_T,e.CLAMP_TO_EDGE),e.bindTexture(e.TEXTURE_2D,null),n},M=(e,t,n,o)=>{e.uniform1i(t,n),e.activeTexture(e["TEXTURE"+n]),e.bindTexture(e.TEXTURE_2D,o)};var K=[-1,-1,1,-1,-1,1,-1,1,1,-1,1,1],j=`
|
|
4
|
+
attribute vec4 a_position;
|
|
5
|
+
void main() {
|
|
6
|
+
gl_Position = a_position;
|
|
7
|
+
}
|
|
8
|
+
`,J=`
|
|
9
|
+
precision mediump float;
|
|
10
|
+
uniform vec2 iResolution;
|
|
11
|
+
void main() {
|
|
12
|
+
gl_FragColor = vec4(fract(gl_FragCoord.xy / iResolution), 0, 1);
|
|
13
|
+
}
|
|
14
|
+
`,d=performance.now(),U=0,h=0,G=e=>{let r=(0,T.event)({vertex:j,fragment:J,size:[0,0],mouse:[0,0],count:6,counter:0,init:()=>{r(e);let i=r.gl,u=r.vs||r.vert||r.vertex,c=r.fs||r.frag||r.fragment,E=x(i,u,i.VERTEX_SHADER),m=x(i,c,i.FRAGMENT_SHADER);r.count===6&&r.attribute({a_position:K}),(0,F.frame)(()=>void r.render()||1),r.pg=r.varying?B(i,E,m,r.varying):y(i,E,m),r.lastActiveUnit=0,r.activeUnit=(0,T.nested)(()=>r.lastActiveUnit++),r.location=(0,T.nested)((s,_=!1)=>_?i?.getAttribLocation(r.pg,s):i?.getUniformLocation(r.pg,s))},render:()=>{r.gl.useProgram(r.pg),r.frame.flush(),U=d,d=performance.now()/1e3,h=d-U,r.uniform({iTime:d,iPrevTime:U,iDeltaTime:h})},resize:(i,u=r.width||window.innerWidth,c=r.height||window.innerHeight)=>{r.size[0]=r.el.width=u,r.size[1]=r.el.height=c,r.uniform("iResolution",r.size)},mousemove:(i,u=i.clientX,c=i.clientY)=>{let[E,m]=r.size,{top:s,left:_}=r.el.getBoundingClientRect();r.mouse[0]=(u-s-E/2)/(E/2),r.mouse[1]=-(c-_-m/2)/(m/2),r.uniform("iMouse",r.mouse)},load:(i,u)=>{r.frame(()=>{let c=r.location(u.alt),E=r.activeUnit(u.alt),m=I(r.gl,u);r.frame(()=>(M(r.gl,c,E,m),!0))})},clear:(i="COLOR_BUFFER_BIT")=>{r.gl.clear(r.gl[i])},viewport:(i=r.size)=>{r.gl.viewport(0,0,...i)},drawArrays:(i="TRIANGLES")=>{r.gl.drawArrays(r.gl[i],0,r.count)},drawElements:(i="TRIANGLES",u="UNSIGNED_SHORT")=>{i=r.gl[i],u=r.gl[u],r.gl.drawElements(i,r.count,u,0)}}),O=(i,u,c="anonymous")=>{if(typeof window>"u")return;let E=new Image,m=s=>r.load(s,E);E.addEventListener("load",m,!1),Object.assign(E,{src:u,alt:i,crossOrigin:c})},C=(i,u=0,c=!1)=>{let E=D(u,c);r.frame(()=>{let m=r.location(i);c?r.gl[E](m,!1,u):r.gl[E](m,u)})},z=(i,u,c)=>{r.frame(()=>{let E=r.location(i,!0),m=X(r.gl,u),s=S(r.gl,c),_=r.count,H=L(_,u,c);v(r.gl,H,E,m,s)})};return r.frame=(0,F.queue)(),r.texture=(0,T.durable)(O),r.uniform=(0,T.durable)(C),r.attribute=(0,T.durable)(z),r},f=G(),N=(e,t=f)=>{let n=()=>{a(e),a.el=t.el,a.gl=t.gl,a.frame=t.frame,a.init(),t({resize:a.resize,mousemove:a.mousemove})},o=()=>{a(e),t({resize:a.resize,mousemove:a.mousemove})},a=G();return a({mount:n,clean:o}),a};var p=require("refr"),Q=(e={},t=f)=>{let n=()=>{t.resize(void 0,t.gl.drawingBufferWidth,t.gl.drawingBufferHeight)},o=(0,A.useMutable)(e),a=(0,A.useMutable)({ref(P){t.el={},t.gl=P,t.mount()},mount(){t.init(),n(),p.frame.start(),w.Dimensions.addEventListener("change",n)},clean(){t(a)(o),p.frame.cancel()}});return(0,R.useEffect)(()=>t.clean,[t]),(0,R.useMemo)(()=>t(a)(o),[t,a,o])},Z=(e,t=f)=>{let n=(0,A.useMutable)(e),o=(0,R.useMemo)(()=>N(n,t),[n,t]);return(0,R.useEffect)(()=>void o.mount()||o.clean,[t]),o},l=(e,t=f)=>t.texture(e),g=(e,t=f)=>t.attribute(e),ee=(e,t=f)=>t.uniform(e),re=(e,t=f)=>{let n=(0,A.useMutable)(e);return(0,R.useEffect)(()=>t.frame(e),[]),(0,R.useEffect)(()=>()=>t.frame(n),[]),t};0&&(module.exports={useAttribute,useFrame,useGL,useTF,useTexture,useUniform});
|
|
15
|
+
//# sourceMappingURL=native.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../native.ts","../index.ts","../utils.ts"],"sourcesContent":["import { useEffect, useMemo } from 'react'\nimport { Dimensions } from 'react-native'\nimport { useMutable } from 'reev/react'\nimport { gl, createTF } from './index'\nimport { frame } from 'refr'\nimport type { GL } from './types'\nimport type { Fun } from 'refr'\n\nexport const useGL = (props: Partial<GL> = {}, self = gl) => {\n const change = () => {\n self.resize(\n void 0,\n self.gl.drawingBufferWidth,\n self.gl.drawingBufferHeight\n )\n }\n const memo1 = useMutable(props) as Partial<GL>\n const memo2 = useMutable({\n ref(gl: any) {\n self.el = {}\n self.gl = gl\n self.mount()\n },\n mount() {\n self.init()\n change()\n frame.start()\n Dimensions.addEventListener('change', change)\n },\n clean() {\n self(memo2)(memo1)\n frame.cancel()\n },\n }) as Partial<GL>\n\n useEffect(() => self.clean, [self])\n\n return useMemo(() => self(memo2)(memo1), [self, memo2, memo1])\n}\nexport const useTF = (props: Partial<GL>, self = gl) => {\n const memo = useMutable(props) as Partial<GL>\n const tf = useMemo(() => createTF(memo, self), [memo, self])\n useEffect(() => void tf.mount() || tf.clean, [self])\n return tf\n}\n\nexport const useTexture = (props: any, self = gl) => {\n return self.texture(props)\n}\n\nexport const useAttribute = (props: any, self = gl) => {\n return self.attribute(props)\n}\n\nexport const useUniform = (props: any, self = gl) => {\n return self.uniform(props)\n}\n\nexport const useFrame = (fun: Fun, self = gl) => {\n const ref = useMutable(fun)\n useEffect(() => self.frame(fun), [])\n useEffect(() => () => self.frame(ref), [])\n return self\n}\n","import { event, durable, nested } from 'reev'\nimport { queue, frame } from 'refr'\nimport {\n uniformType,\n vertexStride,\n createProgram,\n createTfProgram,\n createShader,\n createAttribute,\n createTexture,\n createVbo,\n createIbo,\n activeTexture,\n} from './utils'\nimport type { GL } from './types'\n\nconst a_position = [-1, -1, 1, -1, -1, 1, -1, 1, 1, -1, 1, 1]\n\nconst _defaultVertex = `\n attribute vec4 a_position;\n void main() {\n gl_Position = a_position;\n }\n`\n\nconst _defaultFragment = `\n precision mediump float;\n uniform vec2 iResolution;\n void main() {\n gl_FragColor = vec4(fract(gl_FragCoord.xy / iResolution), 0, 1);\n }\n`\n\nlet iTime = performance.now(),\n iPrevTime = 0,\n iDeltaTime = 0\n\nexport const createGL = (props?: Partial<GL>) => {\n const init = () => {\n self(props)\n const gl = self.gl\n const _v = self.vs || self.vert || self.vertex\n const _f = self.fs || self.frag || self.fragment\n const vs = createShader(gl, _v, gl.VERTEX_SHADER)\n const fs = createShader(gl, _f, gl.FRAGMENT_SHADER)\n if (self.count === 6) self.attribute({ a_position })\n frame(() => void self.render() || 1)\n self.pg = self.varying\n ? createTfProgram(gl, vs, fs, self.varying)\n : createProgram(gl, vs, fs)\n self.lastActiveUnit = 0\n self.activeUnit = nested(() => self.lastActiveUnit++)\n self.location = nested((key, isAttribute = false) => {\n return isAttribute\n ? gl?.getAttribLocation(self.pg, key)\n : gl?.getUniformLocation(self.pg, key)\n })\n }\n\n const render = () => {\n self.gl.useProgram(self.pg)\n self.frame.flush()\n iPrevTime = iTime\n iTime = performance.now() / 1000\n iDeltaTime = iTime - iPrevTime\n self.uniform({ iTime, iPrevTime, iDeltaTime })\n }\n\n const resize = (\n _e: any,\n width = self.width || window.innerWidth,\n height = self.height || window.innerHeight\n ) => {\n self.size[0] = self.el.width = width\n self.size[1] = self.el.height = height\n self.uniform('iResolution', self.size)\n }\n\n const mousemove = (_e: any, x = _e.clientX, y = _e.clientY) => {\n const [w, h] = self.size\n const { top, left } = self.el.getBoundingClientRect()\n self.mouse[0] = (x - top - w / 2) / (w / 2)\n self.mouse[1] = -(y - left - h / 2) / (h / 2)\n self.uniform('iMouse', self.mouse)\n }\n\n const load = (_: any, image: any) => {\n self.frame(() => {\n const loc = self.location(image.alt)\n const unit = self.activeUnit(image.alt)\n const tex = createTexture(self.gl, image)\n self.frame(() => {\n activeTexture(self.gl, loc, unit, tex)\n return true\n })\n })\n }\n\n const clear = (key = 'COLOR_BUFFER_BIT') => {\n self.gl.clear(self.gl[key])\n }\n\n const viewport = (size: number[] = self.size) => {\n self.gl.viewport(0, 0, ...size)\n }\n\n const drawArrays = (mode = 'TRIANGLES') => {\n self.gl.drawArrays(self.gl[mode], 0, self.count)\n }\n\n const drawElements = (mode = 'TRIANGLES', type = 'UNSIGNED_SHORT') => {\n mode = self.gl[mode]\n type = self.gl[type]\n self.gl.drawElements(mode, self.count, type, 0)\n }\n\n const self = event<Partial<GL>>({\n vertex: _defaultVertex,\n fragment: _defaultFragment,\n size: [0, 0],\n mouse: [0, 0],\n count: 6,\n counter: 0,\n init,\n render,\n resize,\n mousemove,\n load,\n clear,\n viewport,\n drawArrays,\n drawElements,\n }) as GL\n\n const _texture = (\n alt: string,\n src: string,\n crossOrigin = 'anonymous'\n ) => {\n if (typeof window === 'undefined') return\n const image = new Image()\n const callback = (_: any) => self.load(_, image)\n image.addEventListener('load', callback, false)\n Object.assign(image, { src, alt, crossOrigin })\n }\n\n const _uniform = (key: string, value = 0, isMatrix = false) => {\n const type = uniformType(value, isMatrix)\n self.frame(() => {\n const loc = self.location(key)\n if (isMatrix) self.gl[type](loc, false, value)\n else self.gl[type](loc, value)\n })\n }\n\n const _attribute = (\n key: string,\n value: number[],\n iboValue?: number[]\n ) => {\n self.frame(() => {\n const loc = self.location(key, true)\n const vbo = createVbo(self.gl, value)\n const ibo = createIbo(self.gl, iboValue)\n const n = self.count\n const stride = vertexStride(n, value, iboValue)\n createAttribute(self.gl, stride, loc, vbo, ibo)\n })\n }\n\n self.frame = queue()\n self.texture = durable(_texture)\n self.uniform = durable(_uniform)\n self.attribute = durable(_attribute)\n\n return self\n}\n\nexport const gl = createGL()\n\nexport const createTF = (props?: Partial<GL>, self = gl) => {\n const mount = () => {\n tf(props)\n tf.el = self.el\n tf.gl = self.gl\n tf.frame = self.frame\n tf.init()\n self({ resize: tf.resize, mousemove: tf.mousemove })\n }\n\n const clean = () => {\n tf(props)\n self({ resize: tf.resize, mousemove: tf.mousemove })\n }\n\n const tf = createGL()\n\n tf({ mount, clean })\n return tf\n}\n\nexport default self\n","/**\n * utils\n */\nexport const uniformType = (value: number | number[], isMatrix = false) => {\n let length = typeof value === 'number' ? 0 : value?.length\n if (!length) return `uniform1f`\n if (!isMatrix) return `uniform${length}fv`\n length = Math.sqrt(length) << 0\n return `uniformMatrix${length}fv`\n}\n\nexport const vertexStride = (\n count: number,\n value: number[],\n iboValue?: number[]\n) => {\n if (iboValue) count = Math.max(...iboValue) + 1\n const stride = value.length / count\n if (stride !== stride << 0)\n console.warn(`Vertex Stride Error: count ${count} is mismatch`)\n return stride << 0\n}\n\n/**\n * graphics\n */\nexport const createShader = (gl: any, source: string, type: unknown) => {\n const shader = gl.createShader(type)\n gl.shaderSource(shader, source)\n gl.compileShader(shader)\n if (gl.getShaderParameter(shader, gl.COMPILE_STATUS)) {\n return shader\n } else throw 'Could not compile glsl\\n\\n' + gl.getShaderInfoLog(shader)\n}\n\nexport const createProgram = (gl: any, vs: any, fs: any) => {\n const program = gl.createProgram()\n gl.attachShader(program, vs)\n gl.attachShader(program, fs)\n gl.linkProgram(program)\n if (gl.getProgramParameter(program, gl.LINK_STATUS)) {\n gl.useProgram(program)\n return program\n } else {\n console.log(gl.getProgramInfoLog(program))\n return null\n }\n}\n\nexport const createTfProgram = (gl: any, vs: any, fs: any, varyings?: any) => {\n const pg = gl.createProgram()\n gl.attachShader(pg, vs)\n gl.attachShader(pg, fs)\n gl.transformFeedbackVaryings(pg, varyings, gl.SEPARATE_ATTRIBS)\n gl.linkProgram(pg)\n if (gl.getProgramParameter(pg, gl.LINK_STATUS)) {\n gl.useProgram(pg)\n return pg\n } else {\n console.warn(gl.getProgramInfoLog(pg))\n return null\n }\n}\n\nexport const createVbo = (gl: any, data: number[]) => {\n if (!data) return\n const vbo = gl.createBuffer()\n gl.bindBuffer(gl.ARRAY_BUFFER, vbo)\n gl.bufferData(gl.ARRAY_BUFFER, new Float32Array(data), gl.STATIC_DRAW)\n gl.bindBuffer(gl.ARRAY_BUFFER, null)\n return vbo\n}\n\nexport const createIbo = (gl: any, data?: number[]) => {\n if (!data) return\n const ibo = gl.createBuffer()\n gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, ibo)\n gl.bufferData(\n gl.ELEMENT_ARRAY_BUFFER,\n new Int16Array(data),\n gl.STATIC_DRAW\n )\n gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, null)\n return ibo\n}\n\nexport const createAttribute = (\n gl: any,\n stride: number,\n location: any,\n vbo: any,\n ibo: any\n) => {\n gl.bindBuffer(gl.ARRAY_BUFFER, vbo)\n gl.enableVertexAttribArray(location)\n gl.vertexAttribPointer(location, stride, gl.FLOAT, false, 0, 0)\n if (ibo) gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, ibo)\n}\n\nexport const createFramebuffer = (gl: any, width: number, height: number) => {\n const frameBuffer = gl.createFramebuffer()\n gl.bindFramebuffer(gl.FRAMEBUFFER, frameBuffer)\n const renderBuffer = gl.createRenderbuffer()\n gl.bindRenderbuffer(gl.RENDERBUFFER, renderBuffer)\n gl.renderbufferStorage(\n gl.RENDERBUFFER,\n gl.DEPTH_COMPONENT16,\n width,\n height\n )\n gl.framebufferRenderbuffer(\n gl.FRAMEBUFFER,\n gl.DEPTH_ATTACHMENT,\n gl.RENDERBUFFER,\n renderBuffer\n )\n const texture = gl.createTexture()\n gl.bindTexture(gl.TEXTURE_2D, texture)\n gl.texImage2D(\n gl.TEXTURE_2D,\n 0,\n gl.RGBA,\n width,\n height,\n 0,\n gl.RGBA,\n gl.UNSIGNED_BYTE,\n null\n )\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.LINEAR)\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.LINEAR)\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.framebufferTexture2D(\n gl.FRAMEBUFFER,\n gl.COLOR_ATTACHMENT0,\n gl.TEXTURE_2D,\n texture,\n 0\n )\n gl.bindTexture(gl.TEXTURE_2D, null)\n gl.bindRenderbuffer(gl.RENDERBUFFER, null)\n gl.bindFramebuffer(gl.FRAMEBUFFER, null)\n return { frameBuffer, renderBuffer, texture }\n}\n\nexport const createFramebufferFloat = (\n gl: any,\n ext: any,\n width: number,\n height: number\n) => {\n const flg =\n ext.textureFloat != null\n ? gl.FLOAT\n : ext.textureHalfFloat.HALF_FLOAT_OES\n const frameBuffer = gl.createFramebuffer()\n const texture = gl.createTexture()\n gl.bindFramebuffer(gl.FRAMEBUFFER, frameBuffer)\n gl.bindTexture(gl.TEXTURE_2D, texture)\n gl.texImage2D(\n gl.TEXTURE_2D,\n 0,\n gl.RGBA,\n width,\n height,\n 0,\n gl.RGBA,\n flg,\n null\n )\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.NEAREST)\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.NEAREST)\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.framebufferTexture2D(\n gl.FRAMEBUFFER,\n gl.COLOR_ATTACHMENT0,\n gl.TEXTURE_2D,\n texture,\n 0\n )\n gl.bindTexture(gl.TEXTURE_2D, null)\n gl.bindFramebuffer(gl.FRAMEBUFFER, null)\n return { frameBuffer, texture }\n}\n\nexport const createTexture = (gl: any, img: any) => {\n const texture = gl.createTexture()\n gl.bindTexture(gl.TEXTURE_2D, texture)\n gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, gl.RGBA, gl.UNSIGNED_BYTE, img)\n gl.generateMipmap(gl.TEXTURE_2D)\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.LINEAR)\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.LINEAR)\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.bindTexture(gl.TEXTURE_2D, null)\n return texture\n}\n\nexport const activeTexture = (\n gl: any,\n location: any,\n activeUnit: any,\n texture: any\n) => {\n gl.uniform1i(location, activeUnit)\n gl.activeTexture(gl['TEXTURE' + activeUnit])\n gl.bindTexture(gl.TEXTURE_2D, texture)\n}\n"],"mappings":"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","names":["native_exports","__export","useAttribute","useFrame","useGL","useTF","useTexture","useUniform","__toCommonJS","import_react","import_react_native","import_reev","import_refr","uniformType","value","isMatrix","length","vertexStride","count","iboValue","stride","createShader","gl","source","type","shader","createProgram","vs","fs","program","createTfProgram","varyings","pg","createVbo","data","vbo","createIbo","ibo","createAttribute","location","createTexture","gl","img","texture","activeTexture","location","activeUnit","a_position","_defaultVertex","_defaultFragment","iTime","iPrevTime","iDeltaTime","createGL","props","self","gl","_v","_f","vs","createShader","fs","createTfProgram","createProgram","key","isAttribute","_e","width","height","x","y","w","h","top","left","_","image","loc","unit","tex","createTexture","activeTexture","size","mode","type","_texture","alt","src","crossOrigin","callback","_uniform","value","isMatrix","uniformType","_attribute","iboValue","vbo","createVbo","ibo","createIbo","n","stride","vertexStride","createAttribute","createTF","mount","tf","clean","import_refr","useGL","props","self","gl","change","memo1","memo2","useTF","memo","tf","createTF","useTexture","useAttribute","useUniform","useFrame","fun","ref"]}
|
package/dist/native.mjs
ADDED
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import{useEffect as _,useMemo as N}from"react";import{Dimensions as q}from"react-native";import{useMutable as A}from"reev/react";import{event as H,durable as F,nested as v}from"reev";import{queue as Y,frame as W}from"refr";var U=(e,t=!1)=>{let n=typeof e=="number"?0:e?.length;return n?t?(n=Math.sqrt(n)<<0,`uniformMatrix${n}fv`):`uniform${n}fv`:"uniform1f"},p=(e,t,n)=>{n&&(e=Math.max(...n)+1);let o=t.length/e;return o!==o<<0&&console.warn(`Vertex Stride Error: count ${e} is mismatch`),o<<0},d=(e,t,n)=>{let o=e.createShader(n);if(e.shaderSource(o,t),e.compileShader(o),e.getShaderParameter(o,e.COMPILE_STATUS))return o;throw`Could not compile glsl
|
|
2
|
+
|
|
3
|
+
`+e.getShaderInfoLog(o)},P=(e,t,n)=>{let o=e.createProgram();return e.attachShader(o,t),e.attachShader(o,n),e.linkProgram(o),e.getProgramParameter(o,e.LINK_STATUS)?(e.useProgram(o),o):(console.log(e.getProgramInfoLog(o)),null)},D=(e,t,n,o)=>{let a=e.createProgram();return e.attachShader(a,t),e.attachShader(a,n),e.transformFeedbackVaryings(a,o,e.SEPARATE_ATTRIBS),e.linkProgram(a),e.getProgramParameter(a,e.LINK_STATUS)?(e.useProgram(a),a):(console.warn(e.getProgramInfoLog(a)),null)},L=(e,t)=>{if(!t)return;let n=e.createBuffer();return e.bindBuffer(e.ARRAY_BUFFER,n),e.bufferData(e.ARRAY_BUFFER,new Float32Array(t),e.STATIC_DRAW),e.bindBuffer(e.ARRAY_BUFFER,null),n},y=(e,t)=>{if(!t)return;let n=e.createBuffer();return e.bindBuffer(e.ELEMENT_ARRAY_BUFFER,n),e.bufferData(e.ELEMENT_ARRAY_BUFFER,new Int16Array(t),e.STATIC_DRAW),e.bindBuffer(e.ELEMENT_ARRAY_BUFFER,null),n},B=(e,t,n,o,a)=>{e.bindBuffer(e.ARRAY_BUFFER,o),e.enableVertexAttribArray(n),e.vertexAttribPointer(n,t,e.FLOAT,!1,0,0),a&&e.bindBuffer(e.ELEMENT_ARRAY_BUFFER,a)};var X=(e,t)=>{let n=e.createTexture();return e.bindTexture(e.TEXTURE_2D,n),e.texImage2D(e.TEXTURE_2D,0,e.RGBA,e.RGBA,e.UNSIGNED_BYTE,t),e.generateMipmap(e.TEXTURE_2D),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_MIN_FILTER,e.LINEAR),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_MAG_FILTER,e.LINEAR),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_S,e.CLAMP_TO_EDGE),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_T,e.CLAMP_TO_EDGE),e.bindTexture(e.TEXTURE_2D,null),n},S=(e,t,n,o)=>{e.uniform1i(t,n),e.activeTexture(e["TEXTURE"+n]),e.bindTexture(e.TEXTURE_2D,o)};var V=[-1,-1,1,-1,-1,1,-1,1,1,-1,1,1],k=`
|
|
4
|
+
attribute vec4 a_position;
|
|
5
|
+
void main() {
|
|
6
|
+
gl_Position = a_position;
|
|
7
|
+
}
|
|
8
|
+
`,$=`
|
|
9
|
+
precision mediump float;
|
|
10
|
+
uniform vec2 iResolution;
|
|
11
|
+
void main() {
|
|
12
|
+
gl_FragColor = vec4(fract(gl_FragCoord.xy / iResolution), 0, 1);
|
|
13
|
+
}
|
|
14
|
+
`,R=performance.now(),b=0,I=0,M=e=>{let r=H({vertex:k,fragment:$,size:[0,0],mouse:[0,0],count:6,counter:0,init:()=>{r(e);let i=r.gl,u=r.vs||r.vert||r.vertex,c=r.fs||r.frag||r.fragment,E=d(i,u,i.VERTEX_SHADER),m=d(i,c,i.FRAGMENT_SHADER);r.count===6&&r.attribute({a_position:V}),W(()=>void r.render()||1),r.pg=r.varying?D(i,E,m,r.varying):P(i,E,m),r.lastActiveUnit=0,r.activeUnit=v(()=>r.lastActiveUnit++),r.location=v((T,f=!1)=>f?i?.getAttribLocation(r.pg,T):i?.getUniformLocation(r.pg,T))},render:()=>{r.gl.useProgram(r.pg),r.frame.flush(),b=R,R=performance.now()/1e3,I=R-b,r.uniform({iTime:R,iPrevTime:b,iDeltaTime:I})},resize:(i,u=r.width||window.innerWidth,c=r.height||window.innerHeight)=>{r.size[0]=r.el.width=u,r.size[1]=r.el.height=c,r.uniform("iResolution",r.size)},mousemove:(i,u=i.clientX,c=i.clientY)=>{let[E,m]=r.size,{top:T,left:f}=r.el.getBoundingClientRect();r.mouse[0]=(u-T-E/2)/(E/2),r.mouse[1]=-(c-f-m/2)/(m/2),r.uniform("iMouse",r.mouse)},load:(i,u)=>{r.frame(()=>{let c=r.location(u.alt),E=r.activeUnit(u.alt),m=X(r.gl,u);r.frame(()=>(S(r.gl,c,E,m),!0))})},clear:(i="COLOR_BUFFER_BIT")=>{r.gl.clear(r.gl[i])},viewport:(i=r.size)=>{r.gl.viewport(0,0,...i)},drawArrays:(i="TRIANGLES")=>{r.gl.drawArrays(r.gl[i],0,r.count)},drawElements:(i="TRIANGLES",u="UNSIGNED_SHORT")=>{i=r.gl[i],u=r.gl[u],r.gl.drawElements(i,r.count,u,0)}}),w=(i,u,c="anonymous")=>{if(typeof window>"u")return;let E=new Image,m=T=>r.load(T,E);E.addEventListener("load",m,!1),Object.assign(E,{src:u,alt:i,crossOrigin:c})},O=(i,u=0,c=!1)=>{let E=U(u,c);r.frame(()=>{let m=r.location(i);c?r.gl[E](m,!1,u):r.gl[E](m,u)})},C=(i,u,c)=>{r.frame(()=>{let E=r.location(i,!0),m=L(r.gl,u),T=y(r.gl,c),f=r.count,z=p(f,u,c);B(r.gl,z,E,m,T)})};return r.frame=Y(),r.texture=F(w),r.uniform=F(O),r.attribute=F(C),r},s=M(),h=(e,t=s)=>{let n=()=>{a(e),a.el=t.el,a.gl=t.gl,a.frame=t.frame,a.init(),t({resize:a.resize,mousemove:a.mousemove})},o=()=>{a(e),t({resize:a.resize,mousemove:a.mousemove})},a=M();return a({mount:n,clean:o}),a};import{frame as G}from"refr";var ue=(e={},t=s)=>{let n=()=>{t.resize(void 0,t.gl.drawingBufferWidth,t.gl.drawingBufferHeight)},o=A(e),a=A({ref(x){t.el={},t.gl=x,t.mount()},mount(){t.init(),n(),G.start(),q.addEventListener("change",n)},clean(){t(a)(o),G.cancel()}});return _(()=>t.clean,[t]),N(()=>t(a)(o),[t,a,o])},Ee=(e,t=s)=>{let n=A(e),o=N(()=>h(n,t),[n,t]);return _(()=>void o.mount()||o.clean,[t]),o},ce=(e,t=s)=>t.texture(e),me=(e,t=s)=>t.attribute(e),Te=(e,t=s)=>t.uniform(e),se=(e,t=s)=>{let n=A(e);return _(()=>t.frame(e),[]),_(()=>()=>t.frame(n),[]),t};export{me as useAttribute,se as useFrame,ue as useGL,Ee as useTF,ce as useTexture,Te as useUniform};
|
|
15
|
+
//# sourceMappingURL=native.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../native.ts","../index.ts","../utils.ts"],"sourcesContent":["import { useEffect, useMemo } from 'react'\nimport { Dimensions } from 'react-native'\nimport { useMutable } from 'reev/react'\nimport { gl, createTF } from './index'\nimport { frame } from 'refr'\nimport type { GL } from './types'\nimport type { Fun } from 'refr'\n\nexport const useGL = (props: Partial<GL> = {}, self = gl) => {\n const change = () => {\n self.resize(\n void 0,\n self.gl.drawingBufferWidth,\n self.gl.drawingBufferHeight\n )\n }\n const memo1 = useMutable(props) as Partial<GL>\n const memo2 = useMutable({\n ref(gl: any) {\n self.el = {}\n self.gl = gl\n self.mount()\n },\n mount() {\n self.init()\n change()\n frame.start()\n Dimensions.addEventListener('change', change)\n },\n clean() {\n self(memo2)(memo1)\n frame.cancel()\n },\n }) as Partial<GL>\n\n useEffect(() => self.clean, [self])\n\n return useMemo(() => self(memo2)(memo1), [self, memo2, memo1])\n}\nexport const useTF = (props: Partial<GL>, self = gl) => {\n const memo = useMutable(props) as Partial<GL>\n const tf = useMemo(() => createTF(memo, self), [memo, self])\n useEffect(() => void tf.mount() || tf.clean, [self])\n return tf\n}\n\nexport const useTexture = (props: any, self = gl) => {\n return self.texture(props)\n}\n\nexport const useAttribute = (props: any, self = gl) => {\n return self.attribute(props)\n}\n\nexport const useUniform = (props: any, self = gl) => {\n return self.uniform(props)\n}\n\nexport const useFrame = (fun: Fun, self = gl) => {\n const ref = useMutable(fun)\n useEffect(() => self.frame(fun), [])\n useEffect(() => () => self.frame(ref), [])\n return self\n}\n","import { event, durable, nested } from 'reev'\nimport { queue, frame } from 'refr'\nimport {\n uniformType,\n vertexStride,\n createProgram,\n createTfProgram,\n createShader,\n createAttribute,\n createTexture,\n createVbo,\n createIbo,\n activeTexture,\n} from './utils'\nimport type { GL } from './types'\n\nconst a_position = [-1, -1, 1, -1, -1, 1, -1, 1, 1, -1, 1, 1]\n\nconst _defaultVertex = `\n attribute vec4 a_position;\n void main() {\n gl_Position = a_position;\n }\n`\n\nconst _defaultFragment = `\n precision mediump float;\n uniform vec2 iResolution;\n void main() {\n gl_FragColor = vec4(fract(gl_FragCoord.xy / iResolution), 0, 1);\n }\n`\n\nlet iTime = performance.now(),\n iPrevTime = 0,\n iDeltaTime = 0\n\nexport const createGL = (props?: Partial<GL>) => {\n const init = () => {\n self(props)\n const gl = self.gl\n const _v = self.vs || self.vert || self.vertex\n const _f = self.fs || self.frag || self.fragment\n const vs = createShader(gl, _v, gl.VERTEX_SHADER)\n const fs = createShader(gl, _f, gl.FRAGMENT_SHADER)\n if (self.count === 6) self.attribute({ a_position })\n frame(() => void self.render() || 1)\n self.pg = self.varying\n ? createTfProgram(gl, vs, fs, self.varying)\n : createProgram(gl, vs, fs)\n self.lastActiveUnit = 0\n self.activeUnit = nested(() => self.lastActiveUnit++)\n self.location = nested((key, isAttribute = false) => {\n return isAttribute\n ? gl?.getAttribLocation(self.pg, key)\n : gl?.getUniformLocation(self.pg, key)\n })\n }\n\n const render = () => {\n self.gl.useProgram(self.pg)\n self.frame.flush()\n iPrevTime = iTime\n iTime = performance.now() / 1000\n iDeltaTime = iTime - iPrevTime\n self.uniform({ iTime, iPrevTime, iDeltaTime })\n }\n\n const resize = (\n _e: any,\n width = self.width || window.innerWidth,\n height = self.height || window.innerHeight\n ) => {\n self.size[0] = self.el.width = width\n self.size[1] = self.el.height = height\n self.uniform('iResolution', self.size)\n }\n\n const mousemove = (_e: any, x = _e.clientX, y = _e.clientY) => {\n const [w, h] = self.size\n const { top, left } = self.el.getBoundingClientRect()\n self.mouse[0] = (x - top - w / 2) / (w / 2)\n self.mouse[1] = -(y - left - h / 2) / (h / 2)\n self.uniform('iMouse', self.mouse)\n }\n\n const load = (_: any, image: any) => {\n self.frame(() => {\n const loc = self.location(image.alt)\n const unit = self.activeUnit(image.alt)\n const tex = createTexture(self.gl, image)\n self.frame(() => {\n activeTexture(self.gl, loc, unit, tex)\n return true\n })\n })\n }\n\n const clear = (key = 'COLOR_BUFFER_BIT') => {\n self.gl.clear(self.gl[key])\n }\n\n const viewport = (size: number[] = self.size) => {\n self.gl.viewport(0, 0, ...size)\n }\n\n const drawArrays = (mode = 'TRIANGLES') => {\n self.gl.drawArrays(self.gl[mode], 0, self.count)\n }\n\n const drawElements = (mode = 'TRIANGLES', type = 'UNSIGNED_SHORT') => {\n mode = self.gl[mode]\n type = self.gl[type]\n self.gl.drawElements(mode, self.count, type, 0)\n }\n\n const self = event<Partial<GL>>({\n vertex: _defaultVertex,\n fragment: _defaultFragment,\n size: [0, 0],\n mouse: [0, 0],\n count: 6,\n counter: 0,\n init,\n render,\n resize,\n mousemove,\n load,\n clear,\n viewport,\n drawArrays,\n drawElements,\n }) as GL\n\n const _texture = (\n alt: string,\n src: string,\n crossOrigin = 'anonymous'\n ) => {\n if (typeof window === 'undefined') return\n const image = new Image()\n const callback = (_: any) => self.load(_, image)\n image.addEventListener('load', callback, false)\n Object.assign(image, { src, alt, crossOrigin })\n }\n\n const _uniform = (key: string, value = 0, isMatrix = false) => {\n const type = uniformType(value, isMatrix)\n self.frame(() => {\n const loc = self.location(key)\n if (isMatrix) self.gl[type](loc, false, value)\n else self.gl[type](loc, value)\n })\n }\n\n const _attribute = (\n key: string,\n value: number[],\n iboValue?: number[]\n ) => {\n self.frame(() => {\n const loc = self.location(key, true)\n const vbo = createVbo(self.gl, value)\n const ibo = createIbo(self.gl, iboValue)\n const n = self.count\n const stride = vertexStride(n, value, iboValue)\n createAttribute(self.gl, stride, loc, vbo, ibo)\n })\n }\n\n self.frame = queue()\n self.texture = durable(_texture)\n self.uniform = durable(_uniform)\n self.attribute = durable(_attribute)\n\n return self\n}\n\nexport const gl = createGL()\n\nexport const createTF = (props?: Partial<GL>, self = gl) => {\n const mount = () => {\n tf(props)\n tf.el = self.el\n tf.gl = self.gl\n tf.frame = self.frame\n tf.init()\n self({ resize: tf.resize, mousemove: tf.mousemove })\n }\n\n const clean = () => {\n tf(props)\n self({ resize: tf.resize, mousemove: tf.mousemove })\n }\n\n const tf = createGL()\n\n tf({ mount, clean })\n return tf\n}\n\nexport default self\n","/**\n * utils\n */\nexport const uniformType = (value: number | number[], isMatrix = false) => {\n let length = typeof value === 'number' ? 0 : value?.length\n if (!length) return `uniform1f`\n if (!isMatrix) return `uniform${length}fv`\n length = Math.sqrt(length) << 0\n return `uniformMatrix${length}fv`\n}\n\nexport const vertexStride = (\n count: number,\n value: number[],\n iboValue?: number[]\n) => {\n if (iboValue) count = Math.max(...iboValue) + 1\n const stride = value.length / count\n if (stride !== stride << 0)\n console.warn(`Vertex Stride Error: count ${count} is mismatch`)\n return stride << 0\n}\n\n/**\n * graphics\n */\nexport const createShader = (gl: any, source: string, type: unknown) => {\n const shader = gl.createShader(type)\n gl.shaderSource(shader, source)\n gl.compileShader(shader)\n if (gl.getShaderParameter(shader, gl.COMPILE_STATUS)) {\n return shader\n } else throw 'Could not compile glsl\\n\\n' + gl.getShaderInfoLog(shader)\n}\n\nexport const createProgram = (gl: any, vs: any, fs: any) => {\n const program = gl.createProgram()\n gl.attachShader(program, vs)\n gl.attachShader(program, fs)\n gl.linkProgram(program)\n if (gl.getProgramParameter(program, gl.LINK_STATUS)) {\n gl.useProgram(program)\n return program\n } else {\n console.log(gl.getProgramInfoLog(program))\n return null\n }\n}\n\nexport const createTfProgram = (gl: any, vs: any, fs: any, varyings?: any) => {\n const pg = gl.createProgram()\n gl.attachShader(pg, vs)\n gl.attachShader(pg, fs)\n gl.transformFeedbackVaryings(pg, varyings, gl.SEPARATE_ATTRIBS)\n gl.linkProgram(pg)\n if (gl.getProgramParameter(pg, gl.LINK_STATUS)) {\n gl.useProgram(pg)\n return pg\n } else {\n console.warn(gl.getProgramInfoLog(pg))\n return null\n }\n}\n\nexport const createVbo = (gl: any, data: number[]) => {\n if (!data) return\n const vbo = gl.createBuffer()\n gl.bindBuffer(gl.ARRAY_BUFFER, vbo)\n gl.bufferData(gl.ARRAY_BUFFER, new Float32Array(data), gl.STATIC_DRAW)\n gl.bindBuffer(gl.ARRAY_BUFFER, null)\n return vbo\n}\n\nexport const createIbo = (gl: any, data?: number[]) => {\n if (!data) return\n const ibo = gl.createBuffer()\n gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, ibo)\n gl.bufferData(\n gl.ELEMENT_ARRAY_BUFFER,\n new Int16Array(data),\n gl.STATIC_DRAW\n )\n gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, null)\n return ibo\n}\n\nexport const createAttribute = (\n gl: any,\n stride: number,\n location: any,\n vbo: any,\n ibo: any\n) => {\n gl.bindBuffer(gl.ARRAY_BUFFER, vbo)\n gl.enableVertexAttribArray(location)\n gl.vertexAttribPointer(location, stride, gl.FLOAT, false, 0, 0)\n if (ibo) gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, ibo)\n}\n\nexport const createFramebuffer = (gl: any, width: number, height: number) => {\n const frameBuffer = gl.createFramebuffer()\n gl.bindFramebuffer(gl.FRAMEBUFFER, frameBuffer)\n const renderBuffer = gl.createRenderbuffer()\n gl.bindRenderbuffer(gl.RENDERBUFFER, renderBuffer)\n gl.renderbufferStorage(\n gl.RENDERBUFFER,\n gl.DEPTH_COMPONENT16,\n width,\n height\n )\n gl.framebufferRenderbuffer(\n gl.FRAMEBUFFER,\n gl.DEPTH_ATTACHMENT,\n gl.RENDERBUFFER,\n renderBuffer\n )\n const texture = gl.createTexture()\n gl.bindTexture(gl.TEXTURE_2D, texture)\n gl.texImage2D(\n gl.TEXTURE_2D,\n 0,\n gl.RGBA,\n width,\n height,\n 0,\n gl.RGBA,\n gl.UNSIGNED_BYTE,\n null\n )\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.LINEAR)\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.LINEAR)\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.framebufferTexture2D(\n gl.FRAMEBUFFER,\n gl.COLOR_ATTACHMENT0,\n gl.TEXTURE_2D,\n texture,\n 0\n )\n gl.bindTexture(gl.TEXTURE_2D, null)\n gl.bindRenderbuffer(gl.RENDERBUFFER, null)\n gl.bindFramebuffer(gl.FRAMEBUFFER, null)\n return { frameBuffer, renderBuffer, texture }\n}\n\nexport const createFramebufferFloat = (\n gl: any,\n ext: any,\n width: number,\n height: number\n) => {\n const flg =\n ext.textureFloat != null\n ? gl.FLOAT\n : ext.textureHalfFloat.HALF_FLOAT_OES\n const frameBuffer = gl.createFramebuffer()\n const texture = gl.createTexture()\n gl.bindFramebuffer(gl.FRAMEBUFFER, frameBuffer)\n gl.bindTexture(gl.TEXTURE_2D, texture)\n gl.texImage2D(\n gl.TEXTURE_2D,\n 0,\n gl.RGBA,\n width,\n height,\n 0,\n gl.RGBA,\n flg,\n null\n )\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.NEAREST)\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.NEAREST)\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.framebufferTexture2D(\n gl.FRAMEBUFFER,\n gl.COLOR_ATTACHMENT0,\n gl.TEXTURE_2D,\n texture,\n 0\n )\n gl.bindTexture(gl.TEXTURE_2D, null)\n gl.bindFramebuffer(gl.FRAMEBUFFER, null)\n return { frameBuffer, texture }\n}\n\nexport const createTexture = (gl: any, img: any) => {\n const texture = gl.createTexture()\n gl.bindTexture(gl.TEXTURE_2D, texture)\n gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, gl.RGBA, gl.UNSIGNED_BYTE, img)\n gl.generateMipmap(gl.TEXTURE_2D)\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.LINEAR)\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.LINEAR)\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.bindTexture(gl.TEXTURE_2D, null)\n return texture\n}\n\nexport const activeTexture = (\n gl: any,\n location: any,\n activeUnit: any,\n texture: any\n) => {\n gl.uniform1i(location, activeUnit)\n gl.activeTexture(gl['TEXTURE' + activeUnit])\n gl.bindTexture(gl.TEXTURE_2D, texture)\n}\n"],"mappings":"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","names":["useEffect","useMemo","Dimensions","useMutable","event","durable","nested","queue","frame","uniformType","value","isMatrix","length","vertexStride","count","iboValue","stride","createShader","gl","source","type","shader","createProgram","vs","fs","program","createTfProgram","varyings","pg","createVbo","data","vbo","createIbo","ibo","createAttribute","location","createTexture","gl","img","texture","activeTexture","location","activeUnit","a_position","_defaultVertex","_defaultFragment","iTime","iPrevTime","iDeltaTime","createGL","props","self","event","gl","_v","_f","vs","createShader","fs","frame","createTfProgram","createProgram","nested","key","isAttribute","_e","width","height","x","y","w","h","top","left","_","image","loc","unit","tex","createTexture","activeTexture","size","mode","type","_texture","alt","src","crossOrigin","callback","_uniform","value","isMatrix","uniformType","_attribute","iboValue","vbo","createVbo","ibo","createIbo","n","stride","vertexStride","createAttribute","queue","durable","createTF","mount","tf","clean","frame","useGL","props","self","gl","change","memo1","useMutable","memo2","Dimensions","useEffect","useMemo","useTF","memo","tf","createTF","useTexture","useAttribute","useUniform","useFrame","fun","ref"]}
|
package/dist/react.d.ts
ADDED
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
import * as reev_types from 'reev/types';
|
|
2
|
+
import * as refr from 'refr';
|
|
3
|
+
import { Fun } from 'refr';
|
|
4
|
+
import { G as GL, P as PrecisionMode, U as Uniform, A as Attribute, a as GLClearMode, b as GLDrawMode } from './types-20446758.js';
|
|
5
|
+
import 'refr/types';
|
|
6
|
+
|
|
7
|
+
declare const useGL: (props?: Partial<GL>, self?: GL) => reev_types.default<{
|
|
8
|
+
id: string;
|
|
9
|
+
width: number;
|
|
10
|
+
height: number;
|
|
11
|
+
size: [number, number];
|
|
12
|
+
mouse: [number, number];
|
|
13
|
+
count: number;
|
|
14
|
+
vs: string;
|
|
15
|
+
fs: string;
|
|
16
|
+
vert: string;
|
|
17
|
+
frag: string;
|
|
18
|
+
vertex: string;
|
|
19
|
+
fragment: string;
|
|
20
|
+
varying: string;
|
|
21
|
+
int: PrecisionMode;
|
|
22
|
+
float: PrecisionMode;
|
|
23
|
+
sampler2D: PrecisionMode;
|
|
24
|
+
samplerCube: PrecisionMode;
|
|
25
|
+
lastActiveUnit: number;
|
|
26
|
+
gl: any;
|
|
27
|
+
pg: any;
|
|
28
|
+
el: any;
|
|
29
|
+
frame: refr.Queue;
|
|
30
|
+
target: any;
|
|
31
|
+
stride: reev_types.Nested<number, any[]>;
|
|
32
|
+
location: reev_types.Nested<any, any[]>;
|
|
33
|
+
activeUnit: reev_types.Nested<number, any[]>;
|
|
34
|
+
default: any;
|
|
35
|
+
ref?: any;
|
|
36
|
+
init(varying?: string[]): void;
|
|
37
|
+
mount(): void;
|
|
38
|
+
clean(): void;
|
|
39
|
+
render(): void;
|
|
40
|
+
mousemove(e: Event): void;
|
|
41
|
+
resize(e?: Event, width?: number, height?: number): void;
|
|
42
|
+
load(e?: Event, image?: HTMLImageElement): void;
|
|
43
|
+
uniform(key: string, value: Uniform): GL;
|
|
44
|
+
uniform(target: {
|
|
45
|
+
[key: string]: Uniform;
|
|
46
|
+
}): GL;
|
|
47
|
+
texture(key: string, value: string): GL;
|
|
48
|
+
texture(target: {
|
|
49
|
+
[key: string]: string;
|
|
50
|
+
}): GL;
|
|
51
|
+
attribute(key: string, value: Attribute, iboValue?: Attribute): GL;
|
|
52
|
+
attribute(target: {
|
|
53
|
+
[key: string]: Attribute;
|
|
54
|
+
}): GL;
|
|
55
|
+
clear(key?: GLClearMode): void;
|
|
56
|
+
viewport(size?: [number, number]): void;
|
|
57
|
+
drawArrays(key?: GLDrawMode): void;
|
|
58
|
+
drawElements(key?: GLDrawMode): void;
|
|
59
|
+
}, any[] | unknown[]>;
|
|
60
|
+
declare const useTF: (props: Partial<GL>, self?: GL) => GL;
|
|
61
|
+
declare const useTexture: (props: any, self?: GL) => GL;
|
|
62
|
+
declare const useAttribute: (props: any, self?: GL) => GL;
|
|
63
|
+
declare const useUniform: (props: any, self?: GL) => GL;
|
|
64
|
+
declare const useFrame: (fun: Fun, self?: GL) => GL;
|
|
65
|
+
|
|
66
|
+
export { useAttribute, useFrame, useGL, useTF, useTexture, useUniform };
|
package/dist/react.js
ADDED
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
var b=Object.defineProperty;var z=Object.getOwnPropertyDescriptor;var H=Object.getOwnPropertyNames;var Y=Object.prototype.hasOwnProperty;var W=(e,t)=>{for(var n in t)b(e,n,{get:t[n],enumerable:!0})},k=(e,t,n,o)=>{if(t&&typeof t=="object"||typeof t=="function")for(let a of H(t))!Y.call(e,a)&&a!==n&&b(e,a,{get:()=>t[a],enumerable:!(o=z(t,a))||o.enumerable});return e};var V=e=>k(b({},"__esModule",{value:!0}),e);var ee={};W(ee,{useAttribute:()=>Z,useFrame:()=>g,useGL:()=>j,useTF:()=>J,useTexture:()=>Q,useUniform:()=>l});module.exports=V(ee);var f=require("react");var c=require("reev"),d=require("refr");var P=(e,t=!1)=>{let n=typeof e=="number"?0:e?.length;return n?t?(n=Math.sqrt(n)<<0,`uniformMatrix${n}fv`):`uniform${n}fv`:"uniform1f"},L=(e,t,n)=>{n&&(e=Math.max(...n)+1);let o=t.length/e;return o!==o<<0&&console.warn(`Vertex Stride Error: count ${e} is mismatch`),o<<0},x=(e,t,n)=>{let o=e.createShader(n);if(e.shaderSource(o,t),e.compileShader(o),e.getShaderParameter(o,e.COMPILE_STATUS))return o;throw`Could not compile glsl
|
|
2
|
+
|
|
3
|
+
`+e.getShaderInfoLog(o)},D=(e,t,n)=>{let o=e.createProgram();return e.attachShader(o,t),e.attachShader(o,n),e.linkProgram(o),e.getProgramParameter(o,e.LINK_STATUS)?(e.useProgram(o),o):(console.log(e.getProgramInfoLog(o)),null)},y=(e,t,n,o)=>{let a=e.createProgram();return e.attachShader(a,t),e.attachShader(a,n),e.transformFeedbackVaryings(a,o,e.SEPARATE_ATTRIBS),e.linkProgram(a),e.getProgramParameter(a,e.LINK_STATUS)?(e.useProgram(a),a):(console.warn(e.getProgramInfoLog(a)),null)},v=(e,t)=>{if(!t)return;let n=e.createBuffer();return e.bindBuffer(e.ARRAY_BUFFER,n),e.bufferData(e.ARRAY_BUFFER,new Float32Array(t),e.STATIC_DRAW),e.bindBuffer(e.ARRAY_BUFFER,null),n},B=(e,t)=>{if(!t)return;let n=e.createBuffer();return e.bindBuffer(e.ELEMENT_ARRAY_BUFFER,n),e.bufferData(e.ELEMENT_ARRAY_BUFFER,new Int16Array(t),e.STATIC_DRAW),e.bindBuffer(e.ELEMENT_ARRAY_BUFFER,null),n},X=(e,t,n,o,a)=>{e.bindBuffer(e.ARRAY_BUFFER,o),e.enableVertexAttribArray(n),e.vertexAttribPointer(n,t,e.FLOAT,!1,0,0),a&&e.bindBuffer(e.ELEMENT_ARRAY_BUFFER,a)};var S=(e,t)=>{let n=e.createTexture();return e.bindTexture(e.TEXTURE_2D,n),e.texImage2D(e.TEXTURE_2D,0,e.RGBA,e.RGBA,e.UNSIGNED_BYTE,t),e.generateMipmap(e.TEXTURE_2D),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_MIN_FILTER,e.LINEAR),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_MAG_FILTER,e.LINEAR),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_S,e.CLAMP_TO_EDGE),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_T,e.CLAMP_TO_EDGE),e.bindTexture(e.TEXTURE_2D,null),n},I=(e,t,n,o)=>{e.uniform1i(t,n),e.activeTexture(e["TEXTURE"+n]),e.bindTexture(e.TEXTURE_2D,o)};var $=[-1,-1,1,-1,-1,1,-1,1,1,-1,1,1],q=`
|
|
4
|
+
attribute vec4 a_position;
|
|
5
|
+
void main() {
|
|
6
|
+
gl_Position = a_position;
|
|
7
|
+
}
|
|
8
|
+
`,K=`
|
|
9
|
+
precision mediump float;
|
|
10
|
+
uniform vec2 iResolution;
|
|
11
|
+
void main() {
|
|
12
|
+
gl_FragColor = vec4(fract(gl_FragCoord.xy / iResolution), 0, 1);
|
|
13
|
+
}
|
|
14
|
+
`,A=performance.now(),U=0,M=0,G=e=>{let r=(0,c.event)({vertex:q,fragment:K,size:[0,0],mouse:[0,0],count:6,counter:0,init:()=>{r(e);let i=r.gl,u=r.vs||r.vert||r.vertex,m=r.fs||r.frag||r.fragment,E=x(i,u,i.VERTEX_SHADER),T=x(i,m,i.FRAGMENT_SHADER);r.count===6&&r.attribute({a_position:$}),(0,d.frame)(()=>void r.render()||1),r.pg=r.varying?y(i,E,T,r.varying):D(i,E,T),r.lastActiveUnit=0,r.activeUnit=(0,c.nested)(()=>r.lastActiveUnit++),r.location=(0,c.nested)((s,_=!1)=>_?i?.getAttribLocation(r.pg,s):i?.getUniformLocation(r.pg,s))},render:()=>{r.gl.useProgram(r.pg),r.frame.flush(),U=A,A=performance.now()/1e3,M=A-U,r.uniform({iTime:A,iPrevTime:U,iDeltaTime:M})},resize:(i,u=r.width||window.innerWidth,m=r.height||window.innerHeight)=>{r.size[0]=r.el.width=u,r.size[1]=r.el.height=m,r.uniform("iResolution",r.size)},mousemove:(i,u=i.clientX,m=i.clientY)=>{let[E,T]=r.size,{top:s,left:_}=r.el.getBoundingClientRect();r.mouse[0]=(u-s-E/2)/(E/2),r.mouse[1]=-(m-_-T/2)/(T/2),r.uniform("iMouse",r.mouse)},load:(i,u)=>{r.frame(()=>{let m=r.location(u.alt),E=r.activeUnit(u.alt),T=S(r.gl,u);r.frame(()=>(I(r.gl,m,E,T),!0))})},clear:(i="COLOR_BUFFER_BIT")=>{r.gl.clear(r.gl[i])},viewport:(i=r.size)=>{r.gl.viewport(0,0,...i)},drawArrays:(i="TRIANGLES")=>{r.gl.drawArrays(r.gl[i],0,r.count)},drawElements:(i="TRIANGLES",u="UNSIGNED_SHORT")=>{i=r.gl[i],u=r.gl[u],r.gl.drawElements(i,r.count,u,0)}}),w=(i,u,m="anonymous")=>{if(typeof window>"u")return;let E=new Image,T=s=>r.load(s,E);E.addEventListener("load",T,!1),Object.assign(E,{src:u,alt:i,crossOrigin:m})},h=(i,u=0,m=!1)=>{let E=P(u,m);r.frame(()=>{let T=r.location(i);m?r.gl[E](T,!1,u):r.gl[E](T,u)})},C=(i,u,m)=>{r.frame(()=>{let E=r.location(i,!0),T=v(r.gl,u),s=B(r.gl,m),_=r.count,O=L(_,u,m);X(r.gl,O,E,T,s)})};return r.frame=(0,d.queue)(),r.texture=(0,c.durable)(w),r.uniform=(0,c.durable)(h),r.attribute=(0,c.durable)(C),r},R=G(),N=(e,t=R)=>{let n=()=>{a(e),a.el=t.el,a.gl=t.gl,a.frame=t.frame,a.init(),t({resize:a.resize,mousemove:a.mousemove})},o=()=>{a(e),t({resize:a.resize,mousemove:a.mousemove})},a=G();return a({mount:n,clean:o}),a};var p=require("refr"),F=require("reev/react"),j=(e={},t=R)=>{let n=(0,F.useMutable)(e),o=(0,F.useMutable)({ref(a){a?(t.target=a,t.mount()):t.clean()},mount(){t.el=t.target,t.gl=t.target.getContext("webgl2"),t.init(),t.resize(),p.frame.start(),window.addEventListener("resize",t.resize),t.el.addEventListener("mousemove",t.mousemove)},clean(){t(o)(n),p.frame.cancel(),window.removeEventListener("resize",t.resize)}});return(0,f.useMemo)(()=>t(o)(n),[t,n,o])},J=(e,t=R)=>{let n=(0,F.useMutable)(e),o=(0,f.useMemo)(()=>N(n,t),[n,t]);return(0,f.useEffect)(()=>void o.mount()||o.clean,[t]),o},Q=(e,t=R)=>t.texture(e),Z=(e,t=R)=>t.attribute(e),l=(e,t=R)=>t.uniform(e),g=(e,t=R)=>((0,f.useEffect)(()=>void t.frame(e),[]),(0,f.useEffect)(()=>()=>t.frame(e),[]),t);0&&(module.exports={useAttribute,useFrame,useGL,useTF,useTexture,useUniform});
|
|
15
|
+
//# sourceMappingURL=react.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../react.ts","../index.ts","../utils.ts"],"sourcesContent":["import { useEffect, useMemo } from 'react'\nimport { createTF, gl } from './index'\nimport { frame } from 'refr'\nimport { useMutable } from 'reev/react'\nimport type { GL } from './types'\nimport type { Fun } from 'refr'\n\nexport const useGL = (props: Partial<GL> = {}, self = gl) => {\n const memo1 = useMutable(props) as Partial<GL>\n const memo2 = useMutable({\n ref(target: unknown) {\n if (target) {\n self.target = target\n self.mount()\n } else self.clean()\n },\n mount() {\n self.el = self.target\n self.gl = self.target.getContext('webgl2')\n self.init()\n self.resize()\n frame.start()\n window.addEventListener('resize', self.resize)\n self.el.addEventListener('mousemove', self.mousemove)\n },\n clean() {\n self(memo2)(memo1)\n frame.cancel()\n window.removeEventListener('resize', self.resize)\n },\n }) as Partial<GL>\n\n return useMemo(() => self(memo2)(memo1), [self, memo1, memo2])\n}\n\nexport const useTF = (props: Partial<GL>, self = gl) => {\n const memo = useMutable(props) as Partial<GL>\n const tf = useMemo(() => createTF(memo, self), [memo, self])\n useEffect(() => void tf.mount() || tf.clean, [self])\n return tf\n}\n\nexport const useTexture = (props: any, self = gl) => {\n return self.texture(props)\n}\n\nexport const useAttribute = (props: any, self = gl) => {\n return self.attribute(props)\n}\n\nexport const useUniform = (props: any, self = gl) => {\n return self.uniform(props)\n}\n\nexport const useFrame = (fun: Fun, self = gl) => {\n useEffect(() => void self.frame(fun), [])\n useEffect(() => () => self.frame(fun), [])\n return self\n}\n","import { event, durable, nested } from 'reev'\nimport { queue, frame } from 'refr'\nimport {\n uniformType,\n vertexStride,\n createProgram,\n createTfProgram,\n createShader,\n createAttribute,\n createTexture,\n createVbo,\n createIbo,\n activeTexture,\n} from './utils'\nimport type { GL } from './types'\n\nconst a_position = [-1, -1, 1, -1, -1, 1, -1, 1, 1, -1, 1, 1]\n\nconst _defaultVertex = `\n attribute vec4 a_position;\n void main() {\n gl_Position = a_position;\n }\n`\n\nconst _defaultFragment = `\n precision mediump float;\n uniform vec2 iResolution;\n void main() {\n gl_FragColor = vec4(fract(gl_FragCoord.xy / iResolution), 0, 1);\n }\n`\n\nlet iTime = performance.now(),\n iPrevTime = 0,\n iDeltaTime = 0\n\nexport const createGL = (props?: Partial<GL>) => {\n const init = () => {\n self(props)\n const gl = self.gl\n const _v = self.vs || self.vert || self.vertex\n const _f = self.fs || self.frag || self.fragment\n const vs = createShader(gl, _v, gl.VERTEX_SHADER)\n const fs = createShader(gl, _f, gl.FRAGMENT_SHADER)\n if (self.count === 6) self.attribute({ a_position })\n frame(() => void self.render() || 1)\n self.pg = self.varying\n ? createTfProgram(gl, vs, fs, self.varying)\n : createProgram(gl, vs, fs)\n self.lastActiveUnit = 0\n self.activeUnit = nested(() => self.lastActiveUnit++)\n self.location = nested((key, isAttribute = false) => {\n return isAttribute\n ? gl?.getAttribLocation(self.pg, key)\n : gl?.getUniformLocation(self.pg, key)\n })\n }\n\n const render = () => {\n self.gl.useProgram(self.pg)\n self.frame.flush()\n iPrevTime = iTime\n iTime = performance.now() / 1000\n iDeltaTime = iTime - iPrevTime\n self.uniform({ iTime, iPrevTime, iDeltaTime })\n }\n\n const resize = (\n _e: any,\n width = self.width || window.innerWidth,\n height = self.height || window.innerHeight\n ) => {\n self.size[0] = self.el.width = width\n self.size[1] = self.el.height = height\n self.uniform('iResolution', self.size)\n }\n\n const mousemove = (_e: any, x = _e.clientX, y = _e.clientY) => {\n const [w, h] = self.size\n const { top, left } = self.el.getBoundingClientRect()\n self.mouse[0] = (x - top - w / 2) / (w / 2)\n self.mouse[1] = -(y - left - h / 2) / (h / 2)\n self.uniform('iMouse', self.mouse)\n }\n\n const load = (_: any, image: any) => {\n self.frame(() => {\n const loc = self.location(image.alt)\n const unit = self.activeUnit(image.alt)\n const tex = createTexture(self.gl, image)\n self.frame(() => {\n activeTexture(self.gl, loc, unit, tex)\n return true\n })\n })\n }\n\n const clear = (key = 'COLOR_BUFFER_BIT') => {\n self.gl.clear(self.gl[key])\n }\n\n const viewport = (size: number[] = self.size) => {\n self.gl.viewport(0, 0, ...size)\n }\n\n const drawArrays = (mode = 'TRIANGLES') => {\n self.gl.drawArrays(self.gl[mode], 0, self.count)\n }\n\n const drawElements = (mode = 'TRIANGLES', type = 'UNSIGNED_SHORT') => {\n mode = self.gl[mode]\n type = self.gl[type]\n self.gl.drawElements(mode, self.count, type, 0)\n }\n\n const self = event<Partial<GL>>({\n vertex: _defaultVertex,\n fragment: _defaultFragment,\n size: [0, 0],\n mouse: [0, 0],\n count: 6,\n counter: 0,\n init,\n render,\n resize,\n mousemove,\n load,\n clear,\n viewport,\n drawArrays,\n drawElements,\n }) as GL\n\n const _texture = (\n alt: string,\n src: string,\n crossOrigin = 'anonymous'\n ) => {\n if (typeof window === 'undefined') return\n const image = new Image()\n const callback = (_: any) => self.load(_, image)\n image.addEventListener('load', callback, false)\n Object.assign(image, { src, alt, crossOrigin })\n }\n\n const _uniform = (key: string, value = 0, isMatrix = false) => {\n const type = uniformType(value, isMatrix)\n self.frame(() => {\n const loc = self.location(key)\n if (isMatrix) self.gl[type](loc, false, value)\n else self.gl[type](loc, value)\n })\n }\n\n const _attribute = (\n key: string,\n value: number[],\n iboValue?: number[]\n ) => {\n self.frame(() => {\n const loc = self.location(key, true)\n const vbo = createVbo(self.gl, value)\n const ibo = createIbo(self.gl, iboValue)\n const n = self.count\n const stride = vertexStride(n, value, iboValue)\n createAttribute(self.gl, stride, loc, vbo, ibo)\n })\n }\n\n self.frame = queue()\n self.texture = durable(_texture)\n self.uniform = durable(_uniform)\n self.attribute = durable(_attribute)\n\n return self\n}\n\nexport const gl = createGL()\n\nexport const createTF = (props?: Partial<GL>, self = gl) => {\n const mount = () => {\n tf(props)\n tf.el = self.el\n tf.gl = self.gl\n tf.frame = self.frame\n tf.init()\n self({ resize: tf.resize, mousemove: tf.mousemove })\n }\n\n const clean = () => {\n tf(props)\n self({ resize: tf.resize, mousemove: tf.mousemove })\n }\n\n const tf = createGL()\n\n tf({ mount, clean })\n return tf\n}\n\nexport default self\n","/**\n * utils\n */\nexport const uniformType = (value: number | number[], isMatrix = false) => {\n let length = typeof value === 'number' ? 0 : value?.length\n if (!length) return `uniform1f`\n if (!isMatrix) return `uniform${length}fv`\n length = Math.sqrt(length) << 0\n return `uniformMatrix${length}fv`\n}\n\nexport const vertexStride = (\n count: number,\n value: number[],\n iboValue?: number[]\n) => {\n if (iboValue) count = Math.max(...iboValue) + 1\n const stride = value.length / count\n if (stride !== stride << 0)\n console.warn(`Vertex Stride Error: count ${count} is mismatch`)\n return stride << 0\n}\n\n/**\n * graphics\n */\nexport const createShader = (gl: any, source: string, type: unknown) => {\n const shader = gl.createShader(type)\n gl.shaderSource(shader, source)\n gl.compileShader(shader)\n if (gl.getShaderParameter(shader, gl.COMPILE_STATUS)) {\n return shader\n } else throw 'Could not compile glsl\\n\\n' + gl.getShaderInfoLog(shader)\n}\n\nexport const createProgram = (gl: any, vs: any, fs: any) => {\n const program = gl.createProgram()\n gl.attachShader(program, vs)\n gl.attachShader(program, fs)\n gl.linkProgram(program)\n if (gl.getProgramParameter(program, gl.LINK_STATUS)) {\n gl.useProgram(program)\n return program\n } else {\n console.log(gl.getProgramInfoLog(program))\n return null\n }\n}\n\nexport const createTfProgram = (gl: any, vs: any, fs: any, varyings?: any) => {\n const pg = gl.createProgram()\n gl.attachShader(pg, vs)\n gl.attachShader(pg, fs)\n gl.transformFeedbackVaryings(pg, varyings, gl.SEPARATE_ATTRIBS)\n gl.linkProgram(pg)\n if (gl.getProgramParameter(pg, gl.LINK_STATUS)) {\n gl.useProgram(pg)\n return pg\n } else {\n console.warn(gl.getProgramInfoLog(pg))\n return null\n }\n}\n\nexport const createVbo = (gl: any, data: number[]) => {\n if (!data) return\n const vbo = gl.createBuffer()\n gl.bindBuffer(gl.ARRAY_BUFFER, vbo)\n gl.bufferData(gl.ARRAY_BUFFER, new Float32Array(data), gl.STATIC_DRAW)\n gl.bindBuffer(gl.ARRAY_BUFFER, null)\n return vbo\n}\n\nexport const createIbo = (gl: any, data?: number[]) => {\n if (!data) return\n const ibo = gl.createBuffer()\n gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, ibo)\n gl.bufferData(\n gl.ELEMENT_ARRAY_BUFFER,\n new Int16Array(data),\n gl.STATIC_DRAW\n )\n gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, null)\n return ibo\n}\n\nexport const createAttribute = (\n gl: any,\n stride: number,\n location: any,\n vbo: any,\n ibo: any\n) => {\n gl.bindBuffer(gl.ARRAY_BUFFER, vbo)\n gl.enableVertexAttribArray(location)\n gl.vertexAttribPointer(location, stride, gl.FLOAT, false, 0, 0)\n if (ibo) gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, ibo)\n}\n\nexport const createFramebuffer = (gl: any, width: number, height: number) => {\n const frameBuffer = gl.createFramebuffer()\n gl.bindFramebuffer(gl.FRAMEBUFFER, frameBuffer)\n const renderBuffer = gl.createRenderbuffer()\n gl.bindRenderbuffer(gl.RENDERBUFFER, renderBuffer)\n gl.renderbufferStorage(\n gl.RENDERBUFFER,\n gl.DEPTH_COMPONENT16,\n width,\n height\n )\n gl.framebufferRenderbuffer(\n gl.FRAMEBUFFER,\n gl.DEPTH_ATTACHMENT,\n gl.RENDERBUFFER,\n renderBuffer\n )\n const texture = gl.createTexture()\n gl.bindTexture(gl.TEXTURE_2D, texture)\n gl.texImage2D(\n gl.TEXTURE_2D,\n 0,\n gl.RGBA,\n width,\n height,\n 0,\n gl.RGBA,\n gl.UNSIGNED_BYTE,\n null\n )\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.LINEAR)\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.LINEAR)\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.framebufferTexture2D(\n gl.FRAMEBUFFER,\n gl.COLOR_ATTACHMENT0,\n gl.TEXTURE_2D,\n texture,\n 0\n )\n gl.bindTexture(gl.TEXTURE_2D, null)\n gl.bindRenderbuffer(gl.RENDERBUFFER, null)\n gl.bindFramebuffer(gl.FRAMEBUFFER, null)\n return { frameBuffer, renderBuffer, texture }\n}\n\nexport const createFramebufferFloat = (\n gl: any,\n ext: any,\n width: number,\n height: number\n) => {\n const flg =\n ext.textureFloat != null\n ? gl.FLOAT\n : ext.textureHalfFloat.HALF_FLOAT_OES\n const frameBuffer = gl.createFramebuffer()\n const texture = gl.createTexture()\n gl.bindFramebuffer(gl.FRAMEBUFFER, frameBuffer)\n gl.bindTexture(gl.TEXTURE_2D, texture)\n gl.texImage2D(\n gl.TEXTURE_2D,\n 0,\n gl.RGBA,\n width,\n height,\n 0,\n gl.RGBA,\n flg,\n null\n )\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.NEAREST)\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.NEAREST)\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.framebufferTexture2D(\n gl.FRAMEBUFFER,\n gl.COLOR_ATTACHMENT0,\n gl.TEXTURE_2D,\n texture,\n 0\n )\n gl.bindTexture(gl.TEXTURE_2D, null)\n gl.bindFramebuffer(gl.FRAMEBUFFER, null)\n return { frameBuffer, texture }\n}\n\nexport const createTexture = (gl: any, img: any) => {\n const texture = gl.createTexture()\n gl.bindTexture(gl.TEXTURE_2D, texture)\n gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, gl.RGBA, gl.UNSIGNED_BYTE, img)\n gl.generateMipmap(gl.TEXTURE_2D)\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.LINEAR)\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.LINEAR)\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.bindTexture(gl.TEXTURE_2D, null)\n return texture\n}\n\nexport const activeTexture = (\n gl: any,\n location: any,\n activeUnit: any,\n texture: any\n) => {\n gl.uniform1i(location, activeUnit)\n gl.activeTexture(gl['TEXTURE' + activeUnit])\n gl.bindTexture(gl.TEXTURE_2D, texture)\n}\n"],"mappings":"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","names":["react_exports","__export","useAttribute","useFrame","useGL","useTF","useTexture","useUniform","__toCommonJS","import_react","import_reev","import_refr","uniformType","value","isMatrix","length","vertexStride","count","iboValue","stride","createShader","gl","source","type","shader","createProgram","vs","fs","program","createTfProgram","varyings","pg","createVbo","data","vbo","createIbo","ibo","createAttribute","location","createTexture","gl","img","texture","activeTexture","location","activeUnit","a_position","_defaultVertex","_defaultFragment","iTime","iPrevTime","iDeltaTime","createGL","props","self","gl","_v","_f","vs","createShader","fs","createTfProgram","createProgram","key","isAttribute","_e","width","height","x","y","w","h","top","left","_","image","loc","unit","tex","createTexture","activeTexture","size","mode","type","_texture","alt","src","crossOrigin","callback","_uniform","value","isMatrix","uniformType","_attribute","iboValue","vbo","createVbo","ibo","createIbo","n","stride","vertexStride","createAttribute","createTF","mount","tf","clean","import_refr","import_react","useGL","props","self","gl","memo1","memo2","target","useTF","memo","tf","createTF","useTexture","useAttribute","useUniform","useFrame","fun"]}
|
package/dist/react.mjs
ADDED
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import{useEffect as F,useMemo as N}from"react";import{event as z,durable as A,nested as X}from"reev";import{queue as H,frame as Y}from"refr";var x=(e,t=!1)=>{let n=typeof e=="number"?0:e?.length;return n?t?(n=Math.sqrt(n)<<0,`uniformMatrix${n}fv`):`uniform${n}fv`:"uniform1f"},U=(e,t,n)=>{n&&(e=Math.max(...n)+1);let o=t.length/e;return o!==o<<0&&console.warn(`Vertex Stride Error: count ${e} is mismatch`),o<<0},_=(e,t,n)=>{let o=e.createShader(n);if(e.shaderSource(o,t),e.compileShader(o),e.getShaderParameter(o,e.COMPILE_STATUS))return o;throw`Could not compile glsl
|
|
2
|
+
|
|
3
|
+
`+e.getShaderInfoLog(o)},p=(e,t,n)=>{let o=e.createProgram();return e.attachShader(o,t),e.attachShader(o,n),e.linkProgram(o),e.getProgramParameter(o,e.LINK_STATUS)?(e.useProgram(o),o):(console.log(e.getProgramInfoLog(o)),null)},P=(e,t,n,o)=>{let i=e.createProgram();return e.attachShader(i,t),e.attachShader(i,n),e.transformFeedbackVaryings(i,o,e.SEPARATE_ATTRIBS),e.linkProgram(i),e.getProgramParameter(i,e.LINK_STATUS)?(e.useProgram(i),i):(console.warn(e.getProgramInfoLog(i)),null)},L=(e,t)=>{if(!t)return;let n=e.createBuffer();return e.bindBuffer(e.ARRAY_BUFFER,n),e.bufferData(e.ARRAY_BUFFER,new Float32Array(t),e.STATIC_DRAW),e.bindBuffer(e.ARRAY_BUFFER,null),n},D=(e,t)=>{if(!t)return;let n=e.createBuffer();return e.bindBuffer(e.ELEMENT_ARRAY_BUFFER,n),e.bufferData(e.ELEMENT_ARRAY_BUFFER,new Int16Array(t),e.STATIC_DRAW),e.bindBuffer(e.ELEMENT_ARRAY_BUFFER,null),n},y=(e,t,n,o,i)=>{e.bindBuffer(e.ARRAY_BUFFER,o),e.enableVertexAttribArray(n),e.vertexAttribPointer(n,t,e.FLOAT,!1,0,0),i&&e.bindBuffer(e.ELEMENT_ARRAY_BUFFER,i)};var v=(e,t)=>{let n=e.createTexture();return e.bindTexture(e.TEXTURE_2D,n),e.texImage2D(e.TEXTURE_2D,0,e.RGBA,e.RGBA,e.UNSIGNED_BYTE,t),e.generateMipmap(e.TEXTURE_2D),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_MIN_FILTER,e.LINEAR),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_MAG_FILTER,e.LINEAR),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_S,e.CLAMP_TO_EDGE),e.texParameteri(e.TEXTURE_2D,e.TEXTURE_WRAP_T,e.CLAMP_TO_EDGE),e.bindTexture(e.TEXTURE_2D,null),n},B=(e,t,n,o)=>{e.uniform1i(t,n),e.activeTexture(e["TEXTURE"+n]),e.bindTexture(e.TEXTURE_2D,o)};var W=[-1,-1,1,-1,-1,1,-1,1,1,-1,1,1],k=`
|
|
4
|
+
attribute vec4 a_position;
|
|
5
|
+
void main() {
|
|
6
|
+
gl_Position = a_position;
|
|
7
|
+
}
|
|
8
|
+
`,V=`
|
|
9
|
+
precision mediump float;
|
|
10
|
+
uniform vec2 iResolution;
|
|
11
|
+
void main() {
|
|
12
|
+
gl_FragColor = vec4(fract(gl_FragCoord.xy / iResolution), 0, 1);
|
|
13
|
+
}
|
|
14
|
+
`,f=performance.now(),d=0,S=0,I=e=>{let r=z({vertex:k,fragment:V,size:[0,0],mouse:[0,0],count:6,counter:0,init:()=>{r(e);let a=r.gl,u=r.vs||r.vert||r.vertex,m=r.fs||r.frag||r.fragment,E=_(a,u,a.VERTEX_SHADER),T=_(a,m,a.FRAGMENT_SHADER);r.count===6&&r.attribute({a_position:W}),Y(()=>void r.render()||1),r.pg=r.varying?P(a,E,T,r.varying):p(a,E,T),r.lastActiveUnit=0,r.activeUnit=X(()=>r.lastActiveUnit++),r.location=X((c,R=!1)=>R?a?.getAttribLocation(r.pg,c):a?.getUniformLocation(r.pg,c))},render:()=>{r.gl.useProgram(r.pg),r.frame.flush(),d=f,f=performance.now()/1e3,S=f-d,r.uniform({iTime:f,iPrevTime:d,iDeltaTime:S})},resize:(a,u=r.width||window.innerWidth,m=r.height||window.innerHeight)=>{r.size[0]=r.el.width=u,r.size[1]=r.el.height=m,r.uniform("iResolution",r.size)},mousemove:(a,u=a.clientX,m=a.clientY)=>{let[E,T]=r.size,{top:c,left:R}=r.el.getBoundingClientRect();r.mouse[0]=(u-c-E/2)/(E/2),r.mouse[1]=-(m-R-T/2)/(T/2),r.uniform("iMouse",r.mouse)},load:(a,u)=>{r.frame(()=>{let m=r.location(u.alt),E=r.activeUnit(u.alt),T=v(r.gl,u);r.frame(()=>(B(r.gl,m,E,T),!0))})},clear:(a="COLOR_BUFFER_BIT")=>{r.gl.clear(r.gl[a])},viewport:(a=r.size)=>{r.gl.viewport(0,0,...a)},drawArrays:(a="TRIANGLES")=>{r.gl.drawArrays(r.gl[a],0,r.count)},drawElements:(a="TRIANGLES",u="UNSIGNED_SHORT")=>{a=r.gl[a],u=r.gl[u],r.gl.drawElements(a,r.count,u,0)}}),w=(a,u,m="anonymous")=>{if(typeof window>"u")return;let E=new Image,T=c=>r.load(c,E);E.addEventListener("load",T,!1),Object.assign(E,{src:u,alt:a,crossOrigin:m})},h=(a,u=0,m=!1)=>{let E=x(u,m);r.frame(()=>{let T=r.location(a);m?r.gl[E](T,!1,u):r.gl[E](T,u)})},C=(a,u,m)=>{r.frame(()=>{let E=r.location(a,!0),T=L(r.gl,u),c=D(r.gl,m),R=r.count,O=U(R,u,m);y(r.gl,O,E,T,c)})};return r.frame=H(),r.texture=A(w),r.uniform=A(h),r.attribute=A(C),r},s=I(),M=(e,t=s)=>{let n=()=>{i(e),i.el=t.el,i.gl=t.gl,i.frame=t.frame,i.init(),t({resize:i.resize,mousemove:i.mousemove})},o=()=>{i(e),t({resize:i.resize,mousemove:i.mousemove})},i=I();return i({mount:n,clean:o}),i};import{frame as G}from"refr";import{useMutable as b}from"reev/react";var ae=(e={},t=s)=>{let n=b(e),o=b({ref(i){i?(t.target=i,t.mount()):t.clean()},mount(){t.el=t.target,t.gl=t.target.getContext("webgl2"),t.init(),t.resize(),G.start(),window.addEventListener("resize",t.resize),t.el.addEventListener("mousemove",t.mousemove)},clean(){t(o)(n),G.cancel(),window.removeEventListener("resize",t.resize)}});return N(()=>t(o)(n),[t,n,o])},ie=(e,t=s)=>{let n=b(e),o=N(()=>M(n,t),[n,t]);return F(()=>void o.mount()||o.clean,[t]),o},ue=(e,t=s)=>t.texture(e),Ee=(e,t=s)=>t.attribute(e),me=(e,t=s)=>t.uniform(e),Te=(e,t=s)=>(F(()=>void t.frame(e),[]),F(()=>()=>t.frame(e),[]),t);export{Ee as useAttribute,Te as useFrame,ae as useGL,ie as useTF,ue as useTexture,me as useUniform};
|
|
15
|
+
//# sourceMappingURL=react.mjs.map
|