glre 0.18.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 +250 -0
- package/dist/index.d.ts +317 -6
- package/dist/index.js +2 -2
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +2 -2
- package/dist/index.mjs.map +1 -1
- package/dist/native.d.ts +485 -19
- package/dist/native.js +3 -3
- package/dist/native.js.map +1 -1
- package/dist/native.mjs +3 -3
- package/dist/native.mjs.map +1 -1
- package/dist/react.d.ts +433 -19
- package/dist/react.js +2 -2
- package/dist/react.js.map +1 -1
- package/dist/react.mjs +2 -2
- package/dist/react.mjs.map +1 -1
- package/dist/solid.d.ts +380 -19
- package/dist/solid.js +2 -2
- package/dist/solid.js.map +1 -1
- package/dist/solid.mjs +3 -3
- package/dist/solid.mjs.map +1 -1
- package/dist/types-2792569d.d.ts +7 -0
- package/package.json +6 -1
- package/dist/types-20446758.d.ts +0 -78
- package/index.ts +0 -202
- package/native.ts +0 -64
- package/qwik.ts +0 -42
- package/react.ts +0 -59
- package/solid.ts +0 -52
- package/test/index.test.ts +0 -5
- package/test/utils.test.ts +0 -43
- package/tsup.config.ts +0 -16
- package/types.ts +0 -98
- package/utils.ts +0 -210
package/README.md
ADDED
|
@@ -0,0 +1,250 @@
|
|
|
1
|
+
# 🌇 glre
|
|
2
|
+
|
|
3
|
+
<strong>
|
|
4
|
+
<samp>
|
|
5
|
+
|
|
6
|
+
<p align="center">
|
|
7
|
+
|
|
8
|
+
[](https://www.npmjs.com/package/glre)
|
|
9
|
+
[](https://www.npmtrends.com/glre)
|
|
10
|
+
[](https://github.com/tseijp/glre)
|
|
11
|
+
[](https://glre.tsei.jp/>)
|
|
12
|
+
[](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
|
|
2
|
-
import '
|
|
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?:
|
|
6
|
-
|
|
7
|
-
|
|
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},
|
|
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
|
-
`,
|
|
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
|