glre 0.19.0 → 0.20.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/README.md ADDED
@@ -0,0 +1,250 @@
1
+ # 🌇 glre
2
+
3
+ <strong>
4
+ <samp>
5
+
6
+ <p align="center">
7
+
8
+ [![ npm version ](https://img.shields.io/npm/v/glre?style=flat&colorA=000&colorB=000)](https://www.npmjs.com/package/glre)
9
+ [![ downloads ](https://img.shields.io/npm/dm/glre.svg?style=flat&colorA=000&colorB=000)](https://www.npmtrends.com/glre)
10
+ [![ license MIT ](https://img.shields.io/npm/l/glre?style=flat&colorA=000&colorB=000)](https://github.com/tseijp/glre)
11
+ [![ docs available ](https://img.shields.io/badge/docs-available-000.svg?style=flat&colorA=000)](https://glre.tsei.jp/>)
12
+ [![ bundle size ](https://img.shields.io/bundlephobia/minzip/glre?style=flat&colorA=000&colorB=000)](https://bundlephobia.com/package/glre@latest)
13
+
14
+ glre is a simple glsl Reactive Engine on the web and native via TypeScript, React, Solid and more.
15
+
16
+ </p>
17
+ <p align="center" valign="top">
18
+ <a href="https://codesandbox.io/s/glre-test1-skyl9p">
19
+ <img alt="test1" width="256" src="https://user-images.githubusercontent.com/40712342/212297558-15a1e721-55d6-4b6f-aab4-9f5d7cede2cb.gif"></img>
20
+ </a>
21
+ <a href="https://codesandbox.io/s/glre-test2-c1syho">
22
+ <img alt="test2" width="256" src="https://user-images.githubusercontent.com/40712342/212297576-e12cef1b-b0e0-40cb-ac0f-7fb387ae6da8.gif"></img>
23
+ </a>
24
+ <a href="https://codesandbox.io/s/glre-test3-ntlk3l">
25
+ <img alt="test3" width="256" src="https://user-images.githubusercontent.com/40712342/212297587-0227d536-5cef-447a-be3e-4c93dad002a2.gif"></img>
26
+ </a>
27
+ <a href="https://codesandbox.io/s/glre-raymarch-test-q8pyxv" target="_blank" rel="noopener">
28
+ <img alt="raymarch1" width="256" src="https://user-images.githubusercontent.com/40712342/215024903-90f25934-1018-4f2a-81e6-f16e5c64c378.gif"></img>
29
+ </a>
30
+ <a href="https://codesandbox.io/s/glre-raymarch-test2-fcds29" target="_blank" rel="noopener">
31
+ <img alt="raymarch2" width="256" src="https://user-images.githubusercontent.com/40712342/215024942-27766b2b-7b85-4725-bb3d-865bf137ea29.gif"></img>
32
+ </a>
33
+ <a href="https://codesandbox.io/s/glre-raymarch-test3-nx6ggi" target="_blank" rel="noopener">
34
+ <img alt="raymarch3" width="256" src="https://user-images.githubusercontent.com/40712342/215025052-c2fa46e5-5e0e-4de8-baee-869ca6135a61.gif"></img>
35
+ </a>
36
+ <a href="https://codesandbox.io/s/glre-raymarch-test4-cy1wpp" target="_blank" rel="noopener">
37
+ <img alt="raymarch4" width="256" src="https://user-images.githubusercontent.com/40712342/215025289-132b4213-aabc-48f2-bbe3-05764a8dae42.gif"></img>
38
+ </a>
39
+ <a href="https://codesandbox.io/s/glre-raymarch-test5-19v0g7" target="_blank" rel="noopener">
40
+ <img alt="raymarch5" width="256" src="https://user-images.githubusercontent.com/40712342/215025456-8ab75328-ca7a-41f6-b5fe-98dd58410b38.gif"></img>
41
+ </a>
42
+ <a href="https://codesandbox.io/s/glre-raymarch-test6-jew0it" target="_blank" rel="noopener">
43
+ <img alt="raymarch6" width="256" src="https://user-images.githubusercontent.com/40712342/215025517-343fdfbf-af54-497c-a759-267acc450366.gif"></img>
44
+ </a>
45
+ </p>
46
+
47
+ ## Installation
48
+
49
+ ```ruby
50
+ npm install glre
51
+ ```
52
+
53
+ <table>
54
+ <td width="1000px" valign="top">
55
+
56
+ ## Documentation
57
+
58
+ ###### [Docs][docs] : glre Introduction
59
+
60
+ ###### [API][api] : glre API and feature
61
+
62
+ ###### [Guide][guide] : Creating a scene
63
+
64
+ [docs]: https://glre.tsei.jp/docs
65
+ [api]: https://glre.tsei.jp/api
66
+ [guide]: https://glre.tsei.jp/guide
67
+
68
+ </td>
69
+ <td width="1000px" valign="top">
70
+
71
+ ## Ecosystem
72
+
73
+ ###### ⛪️ [reev][reev]: reactive event state manager
74
+
75
+ ###### 🔮 [refr][refr]: request animation frame
76
+
77
+ [reev]: https://github.com/tseijp/reev
78
+ [refr]: https://github.com/tseijp/refr
79
+
80
+ </td>
81
+ <td width="1000px" valign="top">
82
+
83
+ ## Staying informed
84
+
85
+ ###### [github discussions][github] welcome✨
86
+
87
+ ###### [@tseijp][twitter] twitter
88
+
89
+ ###### [tsei.jp][articles] articles
90
+
91
+ [github]: https://github.com/tseijp/glre/discussions
92
+ [twitter]: https://twitter.com/tseijp
93
+ [articles]: https://tsei.jp/articles
94
+
95
+ </td>
96
+ </table>
97
+
98
+ ## PRs
99
+
100
+ ###### welcome✨
101
+
102
+ ## What does it look like?
103
+
104
+ <table>
105
+ <tr>
106
+ <td width="7500px" align="center" valign="center">
107
+ glre simplifies glsl programming via TypeScript, React, Solid and more (<a href="https://codesandbox.io/s/glre-basic-demo-ppzo3d">live demo</a>).
108
+ </td>
109
+ <td width="2500px" valign="top">
110
+ <a href="https://codesandbox.io/s/glre-basic-demo-ppzo3d">
111
+ <img alt="4" src="https://i.imgur.com/Lb3h9fs.jpg"></img>
112
+ </a>
113
+ </td>
114
+ </tr>
115
+ </table>
116
+
117
+ ```ts
118
+ import { createRoot } from 'react-dom/client'
119
+ import { useGL, useFrame } from 'glre/react'
120
+
121
+ const fragment = `
122
+ precision highp float;
123
+ uniform vec2 iResolution;
124
+ void main() {
125
+ gl_FragColor = vec4(fract(gl_FragCoord.xy / iResolution), 0, 1);
126
+ }
127
+ `
128
+
129
+ const App = () => {
130
+ const gl = useGL({ fragment })
131
+ useFrame(() => {
132
+ gl.clear()
133
+ gl.viewport()
134
+ gl.drawArrays()
135
+ })
136
+ return <canvas ref={gl.ref} />
137
+ }
138
+
139
+ createRoot(document.getElementById('root')).render(<App />)
140
+ ```
141
+
142
+ <details>
143
+ <summary>
144
+
145
+ react-native supported ([codesandbox demo](https://codesandbox.io/p/sandbox/glre-react-native-test-k2vfvk))
146
+
147
+ </summary>
148
+
149
+ ```ts
150
+ import { GLView } from 'expo-gl'
151
+ import { useGL, useFrame } from 'glre/native'
152
+ import { registerRootComponent } from 'expo'
153
+
154
+ const fragment = `
155
+ precision highp float;
156
+ uniform vec2 iResolution;
157
+ void main() {
158
+ gl_FragColor = vec4(fract(gl_FragCoord.xy / iResolution), 0, 1);
159
+ }
160
+ `
161
+
162
+ const App = () => {
163
+ const self = useGL({ fragment })
164
+ useFrame(() => {
165
+ self.clear()
166
+ self.viewport()
167
+ self.drawArrays()
168
+ self.gl.flush()
169
+ self.gl.endFrameEXP()
170
+ })
171
+ return <GLView style={{ flex: 1 }} onContextCreate={self.ref} />
172
+ }
173
+
174
+ registerRootComponent(App)
175
+ ```
176
+
177
+ </details>
178
+ <details>
179
+ <summary>
180
+
181
+ solid js supported ([codesandbox demo](https://codesandbox.io/p/sandbox/glre-solid-test-qgzhxh))
182
+
183
+ </summary>
184
+
185
+ ```ts
186
+ import { render } from 'solid-js/web'
187
+ import { onGL, onFrame } from 'glre/solid'
188
+
189
+ const fragment = `
190
+ precision highp float;
191
+ uniform vec2 iResolution;
192
+ void main() {
193
+ gl_FragColor = vec4(fract(gl_FragCoord.xy / iResolution), 0, 1);
194
+ }
195
+ `
196
+
197
+ const App = () => {
198
+ const gl = onGL({ fragment })
199
+ onFrame(() => {
200
+ gl.clear()
201
+ gl.viewport()
202
+ gl.drawArrays()
203
+ })
204
+ return <canvas ref={gl.ref} />
205
+ }
206
+
207
+ render(() => <App />, document.getElementById('root'))
208
+ ```
209
+
210
+ </details>
211
+ <details>
212
+ <summary>
213
+
214
+ pure js supported ([codesandbox demo](https://codesandbox.io/s/glre-basic-demo3-3bhr3y))
215
+
216
+ </summary>
217
+
218
+ ```html
219
+ <canvas id="id" style="top: 0; left: 0; position: fixed" />
220
+ <script type="module">
221
+ import self from 'https://cdn.skypack.dev/glre@latest'
222
+ const fragment = `
223
+ precision highp float;
224
+ uniform vec2 iResolution;
225
+ void main() {
226
+ gl_FragColor = vec4(fract(gl_FragCoord.xy / iResolution), 0, 1);
227
+ }
228
+ `
229
+ function setup() {
230
+ const el = document.getElementById('id')
231
+ const gl = el.getContext('webgl2')
232
+ self({ el, gl, fragment })
233
+ self.init()
234
+ self.resize()
235
+ draw()
236
+ }
237
+ function draw() {
238
+ requestAnimationFrame(draw)
239
+ self.render()
240
+ self.clear()
241
+ self.viewport()
242
+ self.drawArrays()
243
+ }
244
+ document.addEventListener('DOMContentLoaded', setup)
245
+ </script>
246
+ ```
247
+
248
+ </details>
249
+ </samp>
250
+ </strong>
package/dist/index.d.ts CHANGED
@@ -1,9 +1,320 @@
1
- import { G as GL } from './types-20446758.js';
2
- import 'refr/types';
3
- import 'reev/types';
1
+ import * as refr from 'refr';
2
+ import { P as PrecisionMode, U as Uniform, A as Attribute, G as GLClearMode, a as GLDrawMode } from './types-2792569d.js';
4
3
 
5
- declare const createGL: (props?: Partial<GL>) => GL;
6
- declare const gl: GL;
7
- declare const createTF: (props?: Partial<GL>, self?: GL) => GL;
4
+ declare const createGL: (props?: EventState<{
5
+ id: string;
6
+ width: number;
7
+ height: number;
8
+ size: [number, number];
9
+ mouse: [number, number];
10
+ count: number;
11
+ vs: string;
12
+ fs: string;
13
+ vert: string;
14
+ frag: string;
15
+ vertex: string;
16
+ fragment: string;
17
+ varying: string;
18
+ int: PrecisionMode;
19
+ float: PrecisionMode;
20
+ sampler2D: PrecisionMode;
21
+ samplerCube: PrecisionMode;
22
+ lastActiveUnit: number;
23
+ gl: any;
24
+ pg: any;
25
+ el: any;
26
+ frame: refr.Queue;
27
+ target: any;
28
+ stride: Nested<number>;
29
+ location: Nested<any>;
30
+ activeUnit: Nested<number>;
31
+ default: any;
32
+ ref?: any;
33
+ init(varying?: string[]): void;
34
+ mount(): void;
35
+ clean(): void;
36
+ render(): void;
37
+ mousemove(e: Event): void;
38
+ resize(e?: Event, width?: number, height?: number): void;
39
+ load(e?: Event, image?: HTMLImageElement): void;
40
+ uniform(key: string, value: Uniform): EventState<any>;
41
+ uniform(target: {
42
+ [key: string]: Uniform;
43
+ }): EventState<any>;
44
+ texture(key: string, value: string): EventState<any>;
45
+ texture(target: {
46
+ [key: string]: string;
47
+ }): EventState<any>;
48
+ attribute(key: string, value: Attribute, iboValue?: Attribute): EventState<any>;
49
+ attribute(target: {
50
+ [key: string]: Attribute;
51
+ }): EventState<any>;
52
+ clear(key?: GLClearMode): void;
53
+ viewport(size?: [number, number]): void;
54
+ drawArrays(key?: GLDrawMode): void;
55
+ drawElements(key?: GLDrawMode): void;
56
+ }>) => EventState<{
57
+ id: string;
58
+ width: number;
59
+ height: number;
60
+ size: [number, number];
61
+ mouse: [number, number];
62
+ count: number;
63
+ vs: string;
64
+ fs: string;
65
+ vert: string;
66
+ frag: string;
67
+ vertex: string;
68
+ fragment: string;
69
+ varying: string;
70
+ int: PrecisionMode;
71
+ float: PrecisionMode;
72
+ sampler2D: PrecisionMode;
73
+ samplerCube: PrecisionMode;
74
+ lastActiveUnit: number;
75
+ gl: any;
76
+ pg: any;
77
+ el: any;
78
+ frame: refr.Queue;
79
+ target: any;
80
+ stride: Nested<number>;
81
+ location: Nested<any>;
82
+ activeUnit: Nested<number>;
83
+ default: any;
84
+ ref?: any;
85
+ init(varying?: string[]): void;
86
+ mount(): void;
87
+ clean(): void;
88
+ render(): void;
89
+ mousemove(e: Event): void;
90
+ resize(e?: Event, width?: number, height?: number): void;
91
+ load(e?: Event, image?: HTMLImageElement): void;
92
+ uniform(key: string, value: Uniform): EventState<any>;
93
+ uniform(target: {
94
+ [key: string]: Uniform;
95
+ }): EventState<any>;
96
+ texture(key: string, value: string): EventState<any>;
97
+ texture(target: {
98
+ [key: string]: string;
99
+ }): EventState<any>;
100
+ attribute(key: string, value: Attribute, iboValue?: Attribute): EventState<any>;
101
+ attribute(target: {
102
+ [key: string]: Attribute;
103
+ }): EventState<any>;
104
+ clear(key?: GLClearMode): void;
105
+ viewport(size?: [number, number]): void;
106
+ drawArrays(key?: GLDrawMode): void;
107
+ drawElements(key?: GLDrawMode): void;
108
+ }>;
109
+ declare const gl: EventState<{
110
+ id: string;
111
+ width: number;
112
+ height: number;
113
+ size: [number, number];
114
+ mouse: [number, number];
115
+ count: number;
116
+ vs: string;
117
+ fs: string;
118
+ vert: string;
119
+ frag: string;
120
+ vertex: string;
121
+ fragment: string;
122
+ varying: string;
123
+ int: PrecisionMode;
124
+ float: PrecisionMode;
125
+ sampler2D: PrecisionMode;
126
+ samplerCube: PrecisionMode;
127
+ lastActiveUnit: number;
128
+ gl: any;
129
+ pg: any;
130
+ el: any;
131
+ frame: refr.Queue;
132
+ target: any;
133
+ stride: Nested<number>;
134
+ location: Nested<any>;
135
+ activeUnit: Nested<number>;
136
+ default: any;
137
+ ref?: any;
138
+ init(varying?: string[]): void;
139
+ mount(): void;
140
+ clean(): void;
141
+ render(): void;
142
+ mousemove(e: Event): void;
143
+ resize(e?: Event, width?: number, height?: number): void;
144
+ load(e?: Event, image?: HTMLImageElement): void;
145
+ uniform(key: string, value: Uniform): EventState<any>;
146
+ uniform(target: {
147
+ [key: string]: Uniform;
148
+ }): EventState<any>;
149
+ texture(key: string, value: string): EventState<any>;
150
+ texture(target: {
151
+ [key: string]: string;
152
+ }): EventState<any>;
153
+ attribute(key: string, value: Attribute, iboValue?: Attribute): EventState<any>;
154
+ attribute(target: {
155
+ [key: string]: Attribute;
156
+ }): EventState<any>;
157
+ clear(key?: GLClearMode): void;
158
+ viewport(size?: [number, number]): void;
159
+ drawArrays(key?: GLDrawMode): void;
160
+ drawElements(key?: GLDrawMode): void;
161
+ }>;
162
+ declare const createTF: (props?: EventState<{
163
+ id: string;
164
+ width: number;
165
+ height: number;
166
+ size: [number, number];
167
+ mouse: [number, number];
168
+ count: number;
169
+ vs: string;
170
+ fs: string;
171
+ vert: string;
172
+ frag: string;
173
+ vertex: string;
174
+ fragment: string;
175
+ varying: string;
176
+ int: PrecisionMode;
177
+ float: PrecisionMode;
178
+ sampler2D: PrecisionMode;
179
+ samplerCube: PrecisionMode;
180
+ lastActiveUnit: number;
181
+ gl: any;
182
+ pg: any;
183
+ el: any;
184
+ frame: refr.Queue;
185
+ target: any;
186
+ stride: Nested<number>;
187
+ location: Nested<any>;
188
+ activeUnit: Nested<number>;
189
+ default: any;
190
+ ref?: any;
191
+ init(varying?: string[]): void;
192
+ mount(): void;
193
+ clean(): void;
194
+ render(): void;
195
+ mousemove(e: Event): void;
196
+ resize(e?: Event, width?: number, height?: number): void;
197
+ load(e?: Event, image?: HTMLImageElement): void;
198
+ uniform(key: string, value: Uniform): EventState<any>;
199
+ uniform(target: {
200
+ [key: string]: Uniform;
201
+ }): EventState<any>;
202
+ texture(key: string, value: string): EventState<any>;
203
+ texture(target: {
204
+ [key: string]: string;
205
+ }): EventState<any>;
206
+ attribute(key: string, value: Attribute, iboValue?: Attribute): EventState<any>;
207
+ attribute(target: {
208
+ [key: string]: Attribute;
209
+ }): EventState<any>;
210
+ clear(key?: GLClearMode): void;
211
+ viewport(size?: [number, number]): void;
212
+ drawArrays(key?: GLDrawMode): void;
213
+ drawElements(key?: GLDrawMode): void;
214
+ }>, self?: EventState<{
215
+ id: string;
216
+ width: number;
217
+ height: number;
218
+ size: [number, number];
219
+ mouse: [number, number];
220
+ count: number;
221
+ vs: string;
222
+ fs: string;
223
+ vert: string;
224
+ frag: string;
225
+ vertex: string;
226
+ fragment: string;
227
+ varying: string;
228
+ int: PrecisionMode;
229
+ float: PrecisionMode;
230
+ sampler2D: PrecisionMode;
231
+ samplerCube: PrecisionMode;
232
+ lastActiveUnit: number;
233
+ gl: any;
234
+ pg: any;
235
+ el: any;
236
+ frame: refr.Queue;
237
+ target: any;
238
+ stride: Nested<number>;
239
+ location: Nested<any>;
240
+ activeUnit: Nested<number>;
241
+ default: any;
242
+ ref?: any;
243
+ init(varying?: string[]): void;
244
+ mount(): void;
245
+ clean(): void;
246
+ render(): void;
247
+ mousemove(e: Event): void;
248
+ resize(e?: Event, width?: number, height?: number): void;
249
+ load(e?: Event, image?: HTMLImageElement): void;
250
+ uniform(key: string, value: Uniform): EventState<any>;
251
+ uniform(target: {
252
+ [key: string]: Uniform;
253
+ }): EventState<any>;
254
+ texture(key: string, value: string): EventState<any>;
255
+ texture(target: {
256
+ [key: string]: string;
257
+ }): EventState<any>;
258
+ attribute(key: string, value: Attribute, iboValue?: Attribute): EventState<any>;
259
+ attribute(target: {
260
+ [key: string]: Attribute;
261
+ }): EventState<any>;
262
+ clear(key?: GLClearMode): void;
263
+ viewport(size?: [number, number]): void;
264
+ drawArrays(key?: GLDrawMode): void;
265
+ drawElements(key?: GLDrawMode): void;
266
+ }>) => EventState<{
267
+ id: string;
268
+ width: number;
269
+ height: number;
270
+ size: [number, number];
271
+ mouse: [number, number];
272
+ count: number;
273
+ vs: string;
274
+ fs: string;
275
+ vert: string;
276
+ frag: string;
277
+ vertex: string;
278
+ fragment: string;
279
+ varying: string;
280
+ int: PrecisionMode;
281
+ float: PrecisionMode;
282
+ sampler2D: PrecisionMode;
283
+ samplerCube: PrecisionMode;
284
+ lastActiveUnit: number;
285
+ gl: any;
286
+ pg: any;
287
+ el: any;
288
+ frame: refr.Queue;
289
+ target: any;
290
+ stride: Nested<number>;
291
+ location: Nested<any>;
292
+ activeUnit: Nested<number>;
293
+ default: any;
294
+ ref?: any;
295
+ init(varying?: string[]): void;
296
+ mount(): void;
297
+ clean(): void;
298
+ render(): void;
299
+ mousemove(e: Event): void;
300
+ resize(e?: Event, width?: number, height?: number): void;
301
+ load(e?: Event, image?: HTMLImageElement): void;
302
+ uniform(key: string, value: Uniform): EventState<any>;
303
+ uniform(target: {
304
+ [key: string]: Uniform;
305
+ }): EventState<any>;
306
+ texture(key: string, value: string): EventState<any>;
307
+ texture(target: {
308
+ [key: string]: string;
309
+ }): EventState<any>;
310
+ attribute(key: string, value: Attribute, iboValue?: Attribute): EventState<any>;
311
+ attribute(target: {
312
+ [key: string]: Attribute;
313
+ }): EventState<any>;
314
+ clear(key?: GLClearMode): void;
315
+ viewport(size?: [number, number]): void;
316
+ drawArrays(key?: GLDrawMode): void;
317
+ drawElements(key?: GLDrawMode): void;
318
+ }>;
8
319
 
9
320
  export { createGL, createTF, gl as default, gl };
package/dist/index.js CHANGED
@@ -1,4 +1,4 @@
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:()=>U});module.exports=H(q);var s=require("reev"),_=require("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"},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},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
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:()=>U});module.exports=H(q);var s=require("reev"),_=require("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"},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
2
 
3
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)},p=(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 Y=[-1,-1,1,-1,-1,1,-1,1,1,-1,1,1],W=`
4
4
  attribute vec4 a_position;
@@ -11,5 +11,5 @@ var A=Object.defineProperty;var G=Object.getOwnPropertyDescriptor;var w=Object.g
11
11
  void main() {
12
12
  gl_FragColor = vec4(fract(gl_FragCoord.xy / iResolution), 0, 1);
13
13
  }
14
- `,m=performance.now(),d=0,v=0,b=e=>{let r=(0,s.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),c=F(E,u,E.FRAGMENT_SHADER);r.count===6&&r.attribute({a_position:Y}),(0,_.frame)(()=>void r.render()||1),r.pg=r.varying?p(E,T,c,r.varying):D(E,T,c),r.lastActiveUnit=0,r.activeUnit=(0,s.nested)(()=>r.lastActiveUnit++),r.location=(0,s.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,v=m-d,r.uniform({iTime:m,iPrevTime:d,iDeltaTime:v})},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,c]=r.size,{top:f,left:R}=r.el.getBoundingClientRect();r.mouse[0]=(i-f-T/2)/(T/2),r.mouse[1]=-(u-R-c/2)/(c/2),r.uniform("iMouse",r.mouse)},load:(E,i)=>{r.frame(()=>{let u=r.location(i.alt),T=r.activeUnit(i.alt),c=X(r.gl,i);r.frame(()=>(S(r.gl,u,T,c),!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,c=f=>r.load(f,T);T.addEventListener("load",c,!1),Object.assign(T,{src:i,alt:E,crossOrigin:u})},M=(E,i=0,u=!1)=>{let T=x(i,u);r.frame(()=>{let c=r.location(E);u?r.gl[T](c,!1,i):r.gl[T](c,i)})},N=(E,i,u)=>{r.frame(()=>{let T=r.location(E,!0),c=L(r.gl,i),f=y(r.gl,u),R=r.count,h=P(R,i,u);B(r.gl,h,T,c,f)})};return r.frame=(0,_.queue)(),r.texture=(0,s.durable)(I),r.uniform=(0,s.durable)(M),r.attribute=(0,s.durable)(N),r},U=b(),k=(e,t=U)=>{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},$=U;0&&(module.exports={createGL,createTF,gl});
14
+ `,R=performance.now(),F=0,v=0,b=e=>{let r=(0,s.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=d(E,i,E.VERTEX_SHADER),c=d(E,u,E.FRAGMENT_SHADER);r.count===6&&r.attribute({a_position:Y}),(0,_.frame)(()=>void r.render()||1),r.pg=r.varying?p(E,T,c,r.varying):D(E,T,c),r.lastActiveUnit=0,r.activeUnit=(0,s.nested)(()=>r.lastActiveUnit++),r.location=(0,s.nested)((f,m=!1)=>m?E?.getAttribLocation(r.pg,f):E?.getUniformLocation(r.pg,f))},render:()=>{r.gl.useProgram(r.pg),r.frame.flush(),F=R,R=performance.now()/1e3,v=R-F,r.uniform({iTime:R,iPrevTime:F,iDeltaTime:v})},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,c]=r.size,{top:f,left:m}=r.el.getBoundingClientRect();r.mouse[0]=(i-f-T/2)/(T/2),r.mouse[1]=-(u-m-c/2)/(c/2),r.uniform("iMouse",r.mouse)},load:(E,i)=>{r.frame(()=>{let u=r.location(i.alt),T=r.activeUnit(i.alt),c=X(r.gl,i);r.frame(()=>(S(r.gl,u,T,c),!0))})},clear:(E="COLOR_BUFFER_BIT")=>{r.frame(()=>void r.gl.clear(r.gl[E]))},viewport:(E=r.size)=>{r.frame(()=>void r.gl.viewport(0,0,...E))},drawArrays:(E="TRIANGLES")=>{r.frame(()=>{r.gl.drawArrays(r.gl[E],0,r.count)})},drawElements:(E="TRIANGLES",i="UNSIGNED_SHORT")=>{r.frame(()=>{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,c=f=>r.load(f,T);T.addEventListener("load",c,!1),Object.assign(T,{src:i,alt:E,crossOrigin:u})},M=(E,i=0,u=!1)=>{let T=x(i,u);r.frame(()=>{let c=r.location(E);u?r.gl[T](c,!1,i):r.gl[T](c,i)})},N=(E,i,u)=>{r.frame(()=>{let T=r.location(E,!0),c=L(r.gl,i),f=y(r.gl,u),m=r.count,h=P(m,i,u);B(r.gl,h,T,c,f)})};return r.frame=(0,_.queue)(),r.texture=(0,s.durable)(I),r.uniform=(0,s.durable)(M),r.attribute=(0,s.durable)(N),r},U=b(),k=(e,t=U)=>{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},$=U;0&&(module.exports={createGL,createTF,gl});
15
15
  //# sourceMappingURL=index.js.map