glre 0.15.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/types.ts CHANGED
@@ -1,98 +1,98 @@
1
- import type { Queue } from 'refr/types'
2
- import type { Nested, EventState } from 'reev/types'
3
-
4
- export type Uniform = number | number[]
5
-
6
- export type Attribute = number[]
7
-
8
- export type Attributes = Record<string, Attribute>
9
-
10
- export type Uniforms = Record<string, Uniform>
11
-
12
- export type GL = EventState<{
13
- /**
14
- * initial value
15
- */
16
- id: string
17
- size: [number, number]
18
- mouse: [number, number]
19
- count: number
20
- vs: string
21
- fs: string
22
- vert: string
23
- frag: string
24
- vertex: string
25
- fragment: string
26
- int: PrecisionMode
27
- float: PrecisionMode
28
- sampler2D: PrecisionMode
29
- samplerCube: PrecisionMode
30
- lastActiveUnit: number
31
-
32
- /**
33
- * core state
34
- */
35
- gl: any
36
- pg: any
37
- el: any
38
- frame: Queue
39
- target: any
40
- stride: Nested<number>
41
- // @TODO Nested<(key: string, value: number: number[], ibo: number[]) => number>
42
- location: Nested<any>
43
- activeUnit: Nested<number>
44
- default: any
45
-
46
- /**
47
- * events
48
- */
49
- ref?: any
50
- init(varying?: string[]): void
51
- mount(): void
52
- clean(): void
53
- render(): void
54
- mousemove(e: Event): void
55
- resize(e?: Event, width?: number, height?: number): void
56
- load(e?: Event, image?: HTMLImageElement): void
57
-
58
- /**
59
- * setter
60
- */
61
- _uniform(key: string, value: Uniform): GL
62
- uniform(key: string, value: Uniform): GL
63
- uniform(target: { [key: string]: Uniform }): GL
64
- _texture(key: string, value: string): GL
65
- texture(key: string, value: string): GL
66
- texture(target: { [key: string]: string }): GL
67
- _attribute(key: string, value: Attribute, iboValue?: Attribute): GL
68
- attribute(key: string, value: Attribute, iboValue?: Attribute): GL
69
- attribute(target: { [key: string]: Attribute }): GL
70
- // config(key?: keyof GL, value?: GL[keyof GL]): GL
71
- // config(target?: Partial<GL>): GL
72
-
73
- /**
74
- * short hands
75
- */
76
- clear(key?: GLClearMode): void
77
- viewport(size?: [number, number]): void
78
- drawArrays(key?: GLDrawMode): void
79
- drawElements(key?: GLDrawMode): void
80
- }>
81
-
82
- export type PrecisionMode = 'highp' | 'mediump' | 'lowp'
83
-
84
- export type GLClearMode =
85
- | 'COLOR_BUFFER_BIT'
86
- | 'DEPTH_BUFFER_BIT'
87
- | 'STENCIL_BUFFER_BIT'
88
-
89
- export type GLDrawMode =
90
- | 'POINTS'
91
- | 'LINE_STRIP'
92
- | 'LINE_LOOP'
93
- | 'LINES'
94
- | 'TRIANGLE_STRIP'
95
- | 'TRIANGLE_FAN'
96
- | 'TRIANGLES'
97
-
98
- export type GLDrawType = 'UNSIGNED_BYTE' | 'UNSIGNED_SHORT' | 'UNSIGNED_INT'
1
+ import type { Queue } from 'refr/types'
2
+ import type { Nested, EventState } from 'reev/types'
3
+
4
+ export type Uniform = number | number[]
5
+
6
+ export type Attribute = number[]
7
+
8
+ export type Attributes = Record<string, Attribute>
9
+
10
+ export type Uniforms = Record<string, Uniform>
11
+
12
+ export type GL = EventState<{
13
+ /**
14
+ * initial value
15
+ */
16
+ id: string
17
+ width: number
18
+ height: number
19
+ size: [number, number]
20
+ mouse: [number, number]
21
+ count: number
22
+ vs: string
23
+ fs: string
24
+ vert: string
25
+ frag: string
26
+ vertex: string
27
+ fragment: string
28
+ varying: string
29
+ int: PrecisionMode
30
+ float: PrecisionMode
31
+ sampler2D: PrecisionMode
32
+ samplerCube: PrecisionMode
33
+ lastActiveUnit: number
34
+
35
+ /**
36
+ * core state
37
+ */
38
+ gl: any
39
+ pg: any
40
+ el: any
41
+ frame: Queue
42
+ target: any
43
+ stride: Nested<number>
44
+ // @TODO Nested<(key: string, value: number: number[], ibo: number[]) => number>
45
+ location: Nested<any>
46
+ activeUnit: Nested<number>
47
+ default: any
48
+
49
+ /**
50
+ * events
51
+ */
52
+ ref?: any
53
+ init(varying?: string[]): void
54
+ mount(): void
55
+ clean(): void
56
+ render(): void
57
+ mousemove(e: Event): void
58
+ resize(e?: Event, width?: number, height?: number): void
59
+ load(e?: Event, image?: HTMLImageElement): void
60
+
61
+ /**
62
+ * setter
63
+ */
64
+ uniform(key: string, value: Uniform): GL
65
+ uniform(target: { [key: string]: Uniform }): GL
66
+ texture(key: string, value: string): GL
67
+ texture(target: { [key: string]: string }): GL
68
+ attribute(key: string, value: Attribute, iboValue?: Attribute): GL
69
+ attribute(target: { [key: string]: Attribute }): GL
70
+ // config(key?: keyof GL, value?: GL[keyof GL]): GL
71
+ // config(target?: Partial<GL>): GL
72
+
73
+ /**
74
+ * short hands
75
+ */
76
+ clear(key?: GLClearMode): void
77
+ viewport(size?: [number, number]): void
78
+ drawArrays(key?: GLDrawMode): void
79
+ drawElements(key?: GLDrawMode): void
80
+ }>
81
+
82
+ export type PrecisionMode = 'highp' | 'mediump' | 'lowp'
83
+
84
+ export type GLClearMode =
85
+ | 'COLOR_BUFFER_BIT'
86
+ | 'DEPTH_BUFFER_BIT'
87
+ | 'STENCIL_BUFFER_BIT'
88
+
89
+ export type GLDrawMode =
90
+ | 'POINTS'
91
+ | 'LINE_STRIP'
92
+ | 'LINE_LOOP'
93
+ | 'LINES'
94
+ | 'TRIANGLE_STRIP'
95
+ | 'TRIANGLE_FAN'
96
+ | 'TRIANGLES'
97
+
98
+ export type GLDrawType = 'UNSIGNED_BYTE' | 'UNSIGNED_SHORT' | 'UNSIGNED_INT'
package/utils.ts CHANGED
@@ -1,210 +1,210 @@
1
- /**
2
- * utils
3
- */
4
- export function uniformType(value: number | number[], isMatrix = false) {
5
- let length = typeof value === 'number' ? 0 : value?.length
6
- if (!length) return `uniform1f`
7
- if (!isMatrix) return `uniform${length}fv`
8
- length = Math.sqrt(length) << 0
9
- return `uniformMatrix${length}fv`
10
- }
11
-
12
- export function vertexStride(
13
- count: number,
14
- value: number[],
15
- iboValue?: number[]
16
- ) {
17
- if (iboValue) count = Math.max(...iboValue) + 1
18
- const stride = value.length / count
19
- if (stride !== stride << 0)
20
- console.warn(`Vertex Stride Error: count ${count} is mismatch`)
21
- return stride << 0
22
- }
23
-
24
- /**
25
- * graphics
26
- */
27
- export function createShader(gl: any, source: string, type: unknown) {
28
- const shader = gl.createShader(type)
29
- gl.shaderSource(shader, source)
30
- gl.compileShader(shader)
31
- if (gl.getShaderParameter(shader, gl.COMPILE_STATUS)) {
32
- return shader
33
- } else console.warn(gl.getShaderInfoLog(shader))
34
- }
35
-
36
- export function createProgram(gl: any, vs: any, fs: any) {
37
- const program = gl.createProgram()
38
- gl.attachShader(program, vs)
39
- gl.attachShader(program, fs)
40
- gl.linkProgram(program)
41
- if (gl.getProgramParameter(program, gl.LINK_STATUS)) {
42
- gl.useProgram(program)
43
- return program
44
- } else {
45
- console.log(gl.getProgramInfoLog(program))
46
- return null
47
- }
48
- }
49
-
50
- export function createTfProgram(gl: any, vs: any, fs: any, varyings?: any) {
51
- const pg = gl.createProgram()
52
- gl.attachShader(pg, vs)
53
- gl.attachShader(pg, fs)
54
- gl.transformFeedbackVaryings(pg, varyings, gl.SEPARATE_ATTRIBS)
55
- gl.linkProgram(pg)
56
- if (gl.getProgramParameter(pg, gl.LINK_STATUS)) {
57
- gl.useProgram(pg)
58
- return pg
59
- } else {
60
- console.warn(gl.getProgramInfoLog(pg))
61
- return null
62
- }
63
- }
64
-
65
- export function createVbo(gl: any, data: number[]) {
66
- if (!data) return
67
- const vbo = gl.createBuffer()
68
- gl.bindBuffer(gl.ARRAY_BUFFER, vbo)
69
- gl.bufferData(gl.ARRAY_BUFFER, new Float32Array(data), gl.STATIC_DRAW)
70
- gl.bindBuffer(gl.ARRAY_BUFFER, null)
71
- return vbo
72
- }
73
-
74
- export function createIbo(gl: any, data?: number[]) {
75
- if (!data) return
76
- const ibo = gl.createBuffer()
77
- gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, ibo)
78
- gl.bufferData(
79
- gl.ELEMENT_ARRAY_BUFFER,
80
- new Int16Array(data),
81
- gl.STATIC_DRAW
82
- )
83
- gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, null)
84
- return ibo
85
- }
86
-
87
- export function createAttribute(
88
- gl: any,
89
- stride: number,
90
- location: any,
91
- vbo: any,
92
- ibo: any
93
- ) {
94
- gl.bindBuffer(gl.ARRAY_BUFFER, vbo)
95
- gl.enableVertexAttribArray(location)
96
- gl.vertexAttribPointer(location, stride, gl.FLOAT, false, 0, 0)
97
- if (ibo) gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, ibo)
98
- }
99
-
100
- export function createFramebuffer(gl: any, width: number, height: number) {
101
- const frameBuffer = gl.createFramebuffer()
102
- gl.bindFramebuffer(gl.FRAMEBUFFER, frameBuffer)
103
- const renderBuffer = gl.createRenderbuffer()
104
- gl.bindRenderbuffer(gl.RENDERBUFFER, renderBuffer)
105
- gl.renderbufferStorage(
106
- gl.RENDERBUFFER,
107
- gl.DEPTH_COMPONENT16,
108
- width,
109
- height
110
- )
111
- gl.framebufferRenderbuffer(
112
- gl.FRAMEBUFFER,
113
- gl.DEPTH_ATTACHMENT,
114
- gl.RENDERBUFFER,
115
- renderBuffer
116
- )
117
- const texture = gl.createTexture()
118
- gl.bindTexture(gl.TEXTURE_2D, texture)
119
- gl.texImage2D(
120
- gl.TEXTURE_2D,
121
- 0,
122
- gl.RGBA,
123
- width,
124
- height,
125
- 0,
126
- gl.RGBA,
127
- gl.UNSIGNED_BYTE,
128
- null
129
- )
130
- gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.LINEAR)
131
- gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.LINEAR)
132
- gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE)
133
- gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE)
134
- gl.framebufferTexture2D(
135
- gl.FRAMEBUFFER,
136
- gl.COLOR_ATTACHMENT0,
137
- gl.TEXTURE_2D,
138
- texture,
139
- 0
140
- )
141
- gl.bindTexture(gl.TEXTURE_2D, null)
142
- gl.bindRenderbuffer(gl.RENDERBUFFER, null)
143
- gl.bindFramebuffer(gl.FRAMEBUFFER, null)
144
- return { frameBuffer, renderBuffer, texture }
145
- }
146
-
147
- export function createFramebufferFloat(
148
- gl: any,
149
- ext: any,
150
- width: number,
151
- height: number
152
- ) {
153
- const flg =
154
- ext.textureFloat != null
155
- ? gl.FLOAT
156
- : ext.textureHalfFloat.HALF_FLOAT_OES
157
- const frameBuffer = gl.createFramebuffer()
158
- const texture = gl.createTexture()
159
- gl.bindFramebuffer(gl.FRAMEBUFFER, frameBuffer)
160
- gl.bindTexture(gl.TEXTURE_2D, texture)
161
- gl.texImage2D(
162
- gl.TEXTURE_2D,
163
- 0,
164
- gl.RGBA,
165
- width,
166
- height,
167
- 0,
168
- gl.RGBA,
169
- flg,
170
- null
171
- )
172
- gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.NEAREST)
173
- gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.NEAREST)
174
- gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE)
175
- gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE)
176
- gl.framebufferTexture2D(
177
- gl.FRAMEBUFFER,
178
- gl.COLOR_ATTACHMENT0,
179
- gl.TEXTURE_2D,
180
- texture,
181
- 0
182
- )
183
- gl.bindTexture(gl.TEXTURE_2D, null)
184
- gl.bindFramebuffer(gl.FRAMEBUFFER, null)
185
- return { frameBuffer, texture }
186
- }
187
-
188
- export function createTexture(gl: any, img: any) {
189
- const texture = gl.createTexture()
190
- gl.bindTexture(gl.TEXTURE_2D, texture)
191
- gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, gl.RGBA, gl.UNSIGNED_BYTE, img)
192
- gl.generateMipmap(gl.TEXTURE_2D)
193
- gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.LINEAR)
194
- gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.LINEAR)
195
- gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE)
196
- gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE)
197
- gl.bindTexture(gl.TEXTURE_2D, null)
198
- return texture
199
- }
200
-
201
- export function activeTexture(
202
- gl: any,
203
- location: any,
204
- activeUnit: any,
205
- texture: any
206
- ) {
207
- gl.uniform1i(location, activeUnit)
208
- gl.activeTexture(gl['TEXTURE' + activeUnit])
209
- gl.bindTexture(gl.TEXTURE_2D, texture)
210
- }
1
+ /**
2
+ * utils
3
+ */
4
+ export const uniformType = (value: number | number[], isMatrix = false) => {
5
+ let length = typeof value === 'number' ? 0 : value?.length
6
+ if (!length) return `uniform1f`
7
+ if (!isMatrix) return `uniform${length}fv`
8
+ length = Math.sqrt(length) << 0
9
+ return `uniformMatrix${length}fv`
10
+ }
11
+
12
+ export const vertexStride = (
13
+ count: number,
14
+ value: number[],
15
+ iboValue?: number[]
16
+ ) => {
17
+ if (iboValue) count = Math.max(...iboValue) + 1
18
+ const stride = value.length / count
19
+ if (stride !== stride << 0)
20
+ console.warn(`Vertex Stride Error: count ${count} is mismatch`)
21
+ return stride << 0
22
+ }
23
+
24
+ /**
25
+ * graphics
26
+ */
27
+ export const createShader = (gl: any, source: string, type: unknown) => {
28
+ const shader = gl.createShader(type)
29
+ gl.shaderSource(shader, source)
30
+ gl.compileShader(shader)
31
+ if (gl.getShaderParameter(shader, gl.COMPILE_STATUS)) {
32
+ return shader
33
+ } else throw 'Could not compile glsl\n\n' + gl.getShaderInfoLog(shader)
34
+ }
35
+
36
+ export const createProgram = (gl: any, vs: any, fs: any) => {
37
+ const program = gl.createProgram()
38
+ gl.attachShader(program, vs)
39
+ gl.attachShader(program, fs)
40
+ gl.linkProgram(program)
41
+ if (gl.getProgramParameter(program, gl.LINK_STATUS)) {
42
+ gl.useProgram(program)
43
+ return program
44
+ } else {
45
+ console.log(gl.getProgramInfoLog(program))
46
+ return null
47
+ }
48
+ }
49
+
50
+ export const createTfProgram = (gl: any, vs: any, fs: any, varyings?: any) => {
51
+ const pg = gl.createProgram()
52
+ gl.attachShader(pg, vs)
53
+ gl.attachShader(pg, fs)
54
+ gl.transformFeedbackVaryings(pg, varyings, gl.SEPARATE_ATTRIBS)
55
+ gl.linkProgram(pg)
56
+ if (gl.getProgramParameter(pg, gl.LINK_STATUS)) {
57
+ gl.useProgram(pg)
58
+ return pg
59
+ } else {
60
+ console.warn(gl.getProgramInfoLog(pg))
61
+ return null
62
+ }
63
+ }
64
+
65
+ export const createVbo = (gl: any, data: number[]) => {
66
+ if (!data) return
67
+ const vbo = gl.createBuffer()
68
+ gl.bindBuffer(gl.ARRAY_BUFFER, vbo)
69
+ gl.bufferData(gl.ARRAY_BUFFER, new Float32Array(data), gl.STATIC_DRAW)
70
+ gl.bindBuffer(gl.ARRAY_BUFFER, null)
71
+ return vbo
72
+ }
73
+
74
+ export const createIbo = (gl: any, data?: number[]) => {
75
+ if (!data) return
76
+ const ibo = gl.createBuffer()
77
+ gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, ibo)
78
+ gl.bufferData(
79
+ gl.ELEMENT_ARRAY_BUFFER,
80
+ new Int16Array(data),
81
+ gl.STATIC_DRAW
82
+ )
83
+ gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, null)
84
+ return ibo
85
+ }
86
+
87
+ export const createAttribute = (
88
+ gl: any,
89
+ stride: number,
90
+ location: any,
91
+ vbo: any,
92
+ ibo: any
93
+ ) => {
94
+ gl.bindBuffer(gl.ARRAY_BUFFER, vbo)
95
+ gl.enableVertexAttribArray(location)
96
+ gl.vertexAttribPointer(location, stride, gl.FLOAT, false, 0, 0)
97
+ if (ibo) gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, ibo)
98
+ }
99
+
100
+ export const createFramebuffer = (gl: any, width: number, height: number) => {
101
+ const frameBuffer = gl.createFramebuffer()
102
+ gl.bindFramebuffer(gl.FRAMEBUFFER, frameBuffer)
103
+ const renderBuffer = gl.createRenderbuffer()
104
+ gl.bindRenderbuffer(gl.RENDERBUFFER, renderBuffer)
105
+ gl.renderbufferStorage(
106
+ gl.RENDERBUFFER,
107
+ gl.DEPTH_COMPONENT16,
108
+ width,
109
+ height
110
+ )
111
+ gl.framebufferRenderbuffer(
112
+ gl.FRAMEBUFFER,
113
+ gl.DEPTH_ATTACHMENT,
114
+ gl.RENDERBUFFER,
115
+ renderBuffer
116
+ )
117
+ const texture = gl.createTexture()
118
+ gl.bindTexture(gl.TEXTURE_2D, texture)
119
+ gl.texImage2D(
120
+ gl.TEXTURE_2D,
121
+ 0,
122
+ gl.RGBA,
123
+ width,
124
+ height,
125
+ 0,
126
+ gl.RGBA,
127
+ gl.UNSIGNED_BYTE,
128
+ null
129
+ )
130
+ gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.LINEAR)
131
+ gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.LINEAR)
132
+ gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE)
133
+ gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE)
134
+ gl.framebufferTexture2D(
135
+ gl.FRAMEBUFFER,
136
+ gl.COLOR_ATTACHMENT0,
137
+ gl.TEXTURE_2D,
138
+ texture,
139
+ 0
140
+ )
141
+ gl.bindTexture(gl.TEXTURE_2D, null)
142
+ gl.bindRenderbuffer(gl.RENDERBUFFER, null)
143
+ gl.bindFramebuffer(gl.FRAMEBUFFER, null)
144
+ return { frameBuffer, renderBuffer, texture }
145
+ }
146
+
147
+ export const createFramebufferFloat = (
148
+ gl: any,
149
+ ext: any,
150
+ width: number,
151
+ height: number
152
+ ) => {
153
+ const flg =
154
+ ext.textureFloat != null
155
+ ? gl.FLOAT
156
+ : ext.textureHalfFloat.HALF_FLOAT_OES
157
+ const frameBuffer = gl.createFramebuffer()
158
+ const texture = gl.createTexture()
159
+ gl.bindFramebuffer(gl.FRAMEBUFFER, frameBuffer)
160
+ gl.bindTexture(gl.TEXTURE_2D, texture)
161
+ gl.texImage2D(
162
+ gl.TEXTURE_2D,
163
+ 0,
164
+ gl.RGBA,
165
+ width,
166
+ height,
167
+ 0,
168
+ gl.RGBA,
169
+ flg,
170
+ null
171
+ )
172
+ gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.NEAREST)
173
+ gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.NEAREST)
174
+ gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE)
175
+ gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE)
176
+ gl.framebufferTexture2D(
177
+ gl.FRAMEBUFFER,
178
+ gl.COLOR_ATTACHMENT0,
179
+ gl.TEXTURE_2D,
180
+ texture,
181
+ 0
182
+ )
183
+ gl.bindTexture(gl.TEXTURE_2D, null)
184
+ gl.bindFramebuffer(gl.FRAMEBUFFER, null)
185
+ return { frameBuffer, texture }
186
+ }
187
+
188
+ export const createTexture = (gl: any, img: any) => {
189
+ const texture = gl.createTexture()
190
+ gl.bindTexture(gl.TEXTURE_2D, texture)
191
+ gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, gl.RGBA, gl.UNSIGNED_BYTE, img)
192
+ gl.generateMipmap(gl.TEXTURE_2D)
193
+ gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.LINEAR)
194
+ gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.LINEAR)
195
+ gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE)
196
+ gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE)
197
+ gl.bindTexture(gl.TEXTURE_2D, null)
198
+ return texture
199
+ }
200
+
201
+ export const activeTexture = (
202
+ gl: any,
203
+ location: any,
204
+ activeUnit: any,
205
+ texture: any
206
+ ) => {
207
+ gl.uniform1i(location, activeUnit)
208
+ gl.activeTexture(gl['TEXTURE' + activeUnit])
209
+ gl.bindTexture(gl.TEXTURE_2D, texture)
210
+ }
package/index.cjs.js DELETED
@@ -1 +0,0 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("reev"),r=require("refr");function t(e,r,t){var n=e.createShader(t);if(e.shaderSource(n,r),e.compileShader(n),e.getShaderParameter(n,e.COMPILE_STATUS))return n;console.warn(e.getShaderInfoLog(n))}var n=[-1,-1,1,-1,-1,1,-1,1,1,-1,1,1],i=performance.now(),o=0,a=0,u=e.event({vertex:"\n attribute vec4 a_position;\n void main() {\n gl_Position = a_position;\n }\n",fragment:"\n precision mediump float;\n uniform vec2 iResolution;\n void main() {\n gl_FragColor = vec4(fract(gl_FragCoord.xy / iResolution), 0, 1);\n }\n",size:[0,0],mouse:[0,0],count:6,counter:0,init:function(i){var o=u.gl,a=u.vs||u.vert||u.vertex,f=u.fs||u.frag||u.fragment,c=t(o,a,o.VERTEX_SHADER),l=t(o,f,o.FRAGMENT_SHADER);6===u.count&&u.attribute({a_position:n}),r.frame((function(){return void u.render()||1})),u.pg=i?function(e,r,t,n){var i=e.createProgram();return e.attachShader(i,r),e.attachShader(i,t),e.transformFeedbackVaryings(i,n,e.SEPARATE_ATTRIBS),e.linkProgram(i),e.getProgramParameter(i,e.LINK_STATUS)?(e.useProgram(i),i):(console.warn(e.getProgramInfoLog(i)),null)}(o,c,l,i):function(e,r,t){var n=e.createProgram();return e.attachShader(n,r),e.attachShader(n,t),e.linkProgram(n),e.getProgramParameter(n,e.LINK_STATUS)?(e.useProgram(n),n):(console.log(e.getProgramInfoLog(n)),null)}(o,c,l),u.lastActiveUnit=0,u.activeUnit=e.nested((function(){return u.lastActiveUnit++})),u.location=e.nested((function(e,r){return void 0===r&&(r=!1),r?null==o?void 0:o.getAttribLocation(u.pg,e):null==o?void 0:o.getUniformLocation(u.pg,e)}))},render:function(){u.gl.useProgram(u.pg),u.frame.flush(),o=i,i=performance.now()/1e3,a=i-o,u.uniform({iTime:i,iPrevTime:o,iDeltaTime:a})},_uniform:function(e,r,t){void 0===r&&(r=0),void 0===t&&(t=!1);var n=function(e,r){void 0===r&&(r=!1);var t="number"==typeof e?0:null==e?void 0:e.length;return t?r?"uniformMatrix"+(t=Math.sqrt(t)<<0)+"fv":"uniform"+t+"fv":"uniform1f"}(r,t);u.frame((function(){var i=u.location(e);t?u.gl[n](i,!1,r):u.gl[n](i,r)}))},_attribute:function(e,r,t){u.frame((function(){var n=u.location(e,!0),i=function(e,r){if(r){var t=e.createBuffer();return e.bindBuffer(e.ARRAY_BUFFER,t),e.bufferData(e.ARRAY_BUFFER,new Float32Array(r),e.STATIC_DRAW),e.bindBuffer(e.ARRAY_BUFFER,null),t}}(u.gl,r),o=function(e,r){if(r){var t=e.createBuffer();return e.bindBuffer(e.ELEMENT_ARRAY_BUFFER,t),e.bufferData(e.ELEMENT_ARRAY_BUFFER,new Int16Array(r),e.STATIC_DRAW),e.bindBuffer(e.ELEMENT_ARRAY_BUFFER,null),t}}(u.gl,t),a=function(e,r,t){t&&(e=Math.max.apply(Math,t)+1);var n=r.length/e;return n!==n<<0&&console.warn("Vertex Stride Error: count "+e+" is mismatch"),n<<0}(u.count,r,t);!function(e,r,t,n,i){e.bindBuffer(e.ARRAY_BUFFER,n),e.enableVertexAttribArray(t),e.vertexAttribPointer(t,r,e.FLOAT,!1,0,0),i&&e.bindBuffer(e.ELEMENT_ARRAY_BUFFER,i)}(u.gl,a,n,i,o)}))},_texture:function(e,r){if("undefined"!=typeof window){var t=new Image;t.addEventListener("load",(function(e){return u.load(e,t)}),!1),Object.assign(t,{src:r,alt:e,crossOrigin:"anonymous"})}},resize:function(e,r,t){void 0===r&&(r=window.innerWidth),void 0===t&&(t=window.innerHeight),u.size[0]=u.el.width=r,u.size[1]=u.el.height=t,u.uniform("iResolution",u.size)},mousemove:function(e,r,t){void 0===r&&(r=e.clientX),void 0===t&&(t=e.clientY);var n=u.size,i=n[0],o=n[1];u.mouse[0]=(r-i/2)/(i/2),u.mouse[1]=-(t-o/2)/(o/2),u.uniform("iMouse",u.mouse)},load:function(e,r){u.frame((function(){var e=u.location(r.alt),t=u.activeUnit(r.alt),n=function(e,r){var t=e.createTexture();return e.bindTexture(e.TEXTURE_2D,t),e.texImage2D(e.TEXTURE_2D,0,e.RGBA,e.RGBA,e.UNSIGNED_BYTE,r),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}(u.gl,r);u.frame((function(){return function(e,r,t,n){e.uniform1i(r,t),e.activeTexture(e["TEXTURE"+t]),e.bindTexture(e.TEXTURE_2D,n)}(u.gl,e,t,n),!0}))}))},clear:function(e){void 0===e&&(e="COLOR_BUFFER_BIT"),u.gl.clear(u.gl[e])},viewport:function(e){var r;void 0===e&&(e=u.size),(r=u.gl).viewport.apply(r,[0,0].concat(e))},drawArrays:function(e){void 0===e&&(e="TRIANGLES"),u.gl.drawArrays(u.gl[e],0,u.count)},drawElements:function(e,r){void 0===e&&(e="TRIANGLES"),void 0===r&&(r="UNSIGNED_SHORT"),u.gl.drawElements(u.gl[e],u.count,u.gl[r],0)}});u.frame=r.queue(),u.texture=e.durable(u._texture),u.uniform=e.durable(u._uniform),u.attribute=e.durable(u._attribute),exports.default=u,exports.gl=u;
package/index.develop.js DELETED
@@ -1 +0,0 @@
1
- !function(e,r){"object"==typeof exports&&"undefined"!=typeof module?r(exports,require("reev"),require("refr")):"function"==typeof define&&define.amd?define(["exports","reev","refr"],r):r(((e="undefined"!=typeof globalThis?globalThis:e||self).index=e.index||{},e.index.ts={}),e.reev,e.refr)}(this,(function(e,r,n){"use strict";function t(e,r,n){var t=e.createShader(n);if(e.shaderSource(t,r),e.compileShader(t),e.getShaderParameter(t,e.COMPILE_STATUS))return t;console.warn(e.getShaderInfoLog(t))}var i=[-1,-1,1,-1,-1,1,-1,1,1,-1,1,1],o=performance.now(),a=0,u=0,f=r.event({vertex:"\n attribute vec4 a_position;\n void main() {\n gl_Position = a_position;\n }\n",fragment:"\n precision mediump float;\n uniform vec2 iResolution;\n void main() {\n gl_FragColor = vec4(fract(gl_FragCoord.xy / iResolution), 0, 1);\n }\n",size:[0,0],mouse:[0,0],count:6,counter:0,init:function(e){var o=f.gl,a=f.vs||f.vert||f.vertex,u=f.fs||f.frag||f.fragment,l=t(o,a,o.VERTEX_SHADER),c=t(o,u,o.FRAGMENT_SHADER);6===f.count&&f.attribute({a_position:i}),n.frame((function(){return void f.render()||1})),f.pg=e?function(e,r,n,t){var i=e.createProgram();return e.attachShader(i,r),e.attachShader(i,n),e.transformFeedbackVaryings(i,t,e.SEPARATE_ATTRIBS),e.linkProgram(i),e.getProgramParameter(i,e.LINK_STATUS)?(e.useProgram(i),i):(console.warn(e.getProgramInfoLog(i)),null)}(o,l,c,e):function(e,r,n){var t=e.createProgram();return e.attachShader(t,r),e.attachShader(t,n),e.linkProgram(t),e.getProgramParameter(t,e.LINK_STATUS)?(e.useProgram(t),t):(console.log(e.getProgramInfoLog(t)),null)}(o,l,c),f.lastActiveUnit=0,f.activeUnit=r.nested((function(){return f.lastActiveUnit++})),f.location=r.nested((function(e,r){return void 0===r&&(r=!1),r?null==o?void 0:o.getAttribLocation(f.pg,e):null==o?void 0:o.getUniformLocation(f.pg,e)}))},render:function(){f.gl.useProgram(f.pg),f.frame.flush(),a=o,o=performance.now()/1e3,u=o-a,f.uniform({iTime:o,iPrevTime:a,iDeltaTime:u})},_uniform:function(e,r,n){void 0===r&&(r=0),void 0===n&&(n=!1);var t=function(e,r){void 0===r&&(r=!1);var n="number"==typeof e?0:null==e?void 0:e.length;return n?r?"uniformMatrix"+(n=Math.sqrt(n)<<0)+"fv":"uniform"+n+"fv":"uniform1f"}(r,n);f.frame((function(){var i=f.location(e);n?f.gl[t](i,!1,r):f.gl[t](i,r)}))},_attribute:function(e,r,n){f.frame((function(){var t=f.location(e,!0),i=function(e,r){if(r){var n=e.createBuffer();return e.bindBuffer(e.ARRAY_BUFFER,n),e.bufferData(e.ARRAY_BUFFER,new Float32Array(r),e.STATIC_DRAW),e.bindBuffer(e.ARRAY_BUFFER,null),n}}(f.gl,r),o=function(e,r){if(r){var n=e.createBuffer();return e.bindBuffer(e.ELEMENT_ARRAY_BUFFER,n),e.bufferData(e.ELEMENT_ARRAY_BUFFER,new Int16Array(r),e.STATIC_DRAW),e.bindBuffer(e.ELEMENT_ARRAY_BUFFER,null),n}}(f.gl,n),a=function(e,r,n){n&&(e=Math.max.apply(Math,n)+1);var t=r.length/e;return t!==t<<0&&console.warn("Vertex Stride Error: count "+e+" is mismatch"),t<<0}(f.count,r,n);!function(e,r,n,t,i){e.bindBuffer(e.ARRAY_BUFFER,t),e.enableVertexAttribArray(n),e.vertexAttribPointer(n,r,e.FLOAT,!1,0,0),i&&e.bindBuffer(e.ELEMENT_ARRAY_BUFFER,i)}(f.gl,a,t,i,o)}))},_texture:function(e,r){if("undefined"!=typeof window){var n=new Image;n.addEventListener("load",(function(e){return f.load(e,n)}),!1),Object.assign(n,{src:r,alt:e,crossOrigin:"anonymous"})}},resize:function(e,r,n){void 0===r&&(r=window.innerWidth),void 0===n&&(n=window.innerHeight),f.size[0]=f.el.width=r,f.size[1]=f.el.height=n,f.uniform("iResolution",f.size)},mousemove:function(e,r,n){void 0===r&&(r=e.clientX),void 0===n&&(n=e.clientY);var t=f.size,i=t[0],o=t[1];f.mouse[0]=(r-i/2)/(i/2),f.mouse[1]=-(n-o/2)/(o/2),f.uniform("iMouse",f.mouse)},load:function(e,r){f.frame((function(){var e=f.location(r.alt),n=f.activeUnit(r.alt),t=function(e,r){var n=e.createTexture();return e.bindTexture(e.TEXTURE_2D,n),e.texImage2D(e.TEXTURE_2D,0,e.RGBA,e.RGBA,e.UNSIGNED_BYTE,r),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}(f.gl,r);f.frame((function(){return function(e,r,n,t){e.uniform1i(r,n),e.activeTexture(e["TEXTURE"+n]),e.bindTexture(e.TEXTURE_2D,t)}(f.gl,e,n,t),!0}))}))},clear:function(e){void 0===e&&(e="COLOR_BUFFER_BIT"),f.gl.clear(f.gl[e])},viewport:function(e){var r;void 0===e&&(e=f.size),(r=f.gl).viewport.apply(r,[0,0].concat(e))},drawArrays:function(e){void 0===e&&(e="TRIANGLES"),f.gl.drawArrays(f.gl[e],0,f.count)},drawElements:function(e,r){void 0===e&&(e="TRIANGLES"),void 0===r&&(r="UNSIGNED_SHORT"),f.gl.drawElements(f.gl[e],f.count,f.gl[r],0)}});f.frame=n.queue(),f.texture=r.durable(f._texture),f.uniform=r.durable(f._uniform),f.attribute=r.durable(f._attribute),e.default=f,e.gl=f,Object.defineProperty(e,"__esModule",{value:!0})}));
package/index.js DELETED
@@ -1 +0,0 @@
1
- import{event as r,nested as e,durable as n}from"reev";import{frame as t,queue as i}from"refr";function o(r,e,n){var t=r.createShader(n);if(r.shaderSource(t,e),r.compileShader(t),r.getShaderParameter(t,r.COMPILE_STATUS))return t;console.warn(r.getShaderInfoLog(t))}var a=[-1,-1,1,-1,-1,1,-1,1,1,-1,1,1],u=performance.now(),f=0,c=0,l=r({vertex:"\n attribute vec4 a_position;\n void main() {\n gl_Position = a_position;\n }\n",fragment:"\n precision mediump float;\n uniform vec2 iResolution;\n void main() {\n gl_FragColor = vec4(fract(gl_FragCoord.xy / iResolution), 0, 1);\n }\n",size:[0,0],mouse:[0,0],count:6,counter:0,init:function(r){var n=l.gl,i=l.vs||l.vert||l.vertex,u=l.fs||l.frag||l.fragment,f=o(n,i,n.VERTEX_SHADER),c=o(n,u,n.FRAGMENT_SHADER);6===l.count&&l.attribute({a_position:a}),t((function(){return void l.render()||1})),l.pg=r?function(r,e,n,t){var i=r.createProgram();return r.attachShader(i,e),r.attachShader(i,n),r.transformFeedbackVaryings(i,t,r.SEPARATE_ATTRIBS),r.linkProgram(i),r.getProgramParameter(i,r.LINK_STATUS)?(r.useProgram(i),i):(console.warn(r.getProgramInfoLog(i)),null)}(n,f,c,r):function(r,e,n){var t=r.createProgram();return r.attachShader(t,e),r.attachShader(t,n),r.linkProgram(t),r.getProgramParameter(t,r.LINK_STATUS)?(r.useProgram(t),t):(console.log(r.getProgramInfoLog(t)),null)}(n,f,c),l.lastActiveUnit=0,l.activeUnit=e((function(){return l.lastActiveUnit++})),l.location=e((function(r,e){return void 0===e&&(e=!1),e?null==n?void 0:n.getAttribLocation(l.pg,r):null==n?void 0:n.getUniformLocation(l.pg,r)}))},render:function(){l.gl.useProgram(l.pg),l.frame.flush(),f=u,u=performance.now()/1e3,c=u-f,l.uniform({iTime:u,iPrevTime:f,iDeltaTime:c})},_uniform:function(r,e,n){void 0===e&&(e=0),void 0===n&&(n=!1);var t=function(r,e){void 0===e&&(e=!1);var n="number"==typeof r?0:null==r?void 0:r.length;return n?e?"uniformMatrix"+(n=Math.sqrt(n)<<0)+"fv":"uniform"+n+"fv":"uniform1f"}(e,n);l.frame((function(){var i=l.location(r);n?l.gl[t](i,!1,e):l.gl[t](i,e)}))},_attribute:function(r,e,n){l.frame((function(){var t=l.location(r,!0),i=function(r,e){if(e){var n=r.createBuffer();return r.bindBuffer(r.ARRAY_BUFFER,n),r.bufferData(r.ARRAY_BUFFER,new Float32Array(e),r.STATIC_DRAW),r.bindBuffer(r.ARRAY_BUFFER,null),n}}(l.gl,e),o=function(r,e){if(e){var n=r.createBuffer();return r.bindBuffer(r.ELEMENT_ARRAY_BUFFER,n),r.bufferData(r.ELEMENT_ARRAY_BUFFER,new Int16Array(e),r.STATIC_DRAW),r.bindBuffer(r.ELEMENT_ARRAY_BUFFER,null),n}}(l.gl,n),a=function(r,e,n){n&&(r=Math.max.apply(Math,n)+1);var t=e.length/r;return t!==t<<0&&console.warn("Vertex Stride Error: count "+r+" is mismatch"),t<<0}(l.count,e,n);!function(r,e,n,t,i){r.bindBuffer(r.ARRAY_BUFFER,t),r.enableVertexAttribArray(n),r.vertexAttribPointer(n,e,r.FLOAT,!1,0,0),i&&r.bindBuffer(r.ELEMENT_ARRAY_BUFFER,i)}(l.gl,a,t,i,o)}))},_texture:function(r,e){if("undefined"!=typeof window){var n=new Image;n.addEventListener("load",(function(r){return l.load(r,n)}),!1),Object.assign(n,{src:e,alt:r,crossOrigin:"anonymous"})}},resize:function(r,e,n){void 0===e&&(e=window.innerWidth),void 0===n&&(n=window.innerHeight),l.size[0]=l.el.width=e,l.size[1]=l.el.height=n,l.uniform("iResolution",l.size)},mousemove:function(r,e,n){void 0===e&&(e=r.clientX),void 0===n&&(n=r.clientY);var t=l.size,i=t[0],o=t[1];l.mouse[0]=(e-i/2)/(i/2),l.mouse[1]=-(n-o/2)/(o/2),l.uniform("iMouse",l.mouse)},load:function(r,e){l.frame((function(){var r=l.location(e.alt),n=l.activeUnit(e.alt),t=function(r,e){var n=r.createTexture();return r.bindTexture(r.TEXTURE_2D,n),r.texImage2D(r.TEXTURE_2D,0,r.RGBA,r.RGBA,r.UNSIGNED_BYTE,e),r.generateMipmap(r.TEXTURE_2D),r.texParameteri(r.TEXTURE_2D,r.TEXTURE_MIN_FILTER,r.LINEAR),r.texParameteri(r.TEXTURE_2D,r.TEXTURE_MAG_FILTER,r.LINEAR),r.texParameteri(r.TEXTURE_2D,r.TEXTURE_WRAP_S,r.CLAMP_TO_EDGE),r.texParameteri(r.TEXTURE_2D,r.TEXTURE_WRAP_T,r.CLAMP_TO_EDGE),r.bindTexture(r.TEXTURE_2D,null),n}(l.gl,e);l.frame((function(){return function(r,e,n,t){r.uniform1i(e,n),r.activeTexture(r["TEXTURE"+n]),r.bindTexture(r.TEXTURE_2D,t)}(l.gl,r,n,t),!0}))}))},clear:function(r){void 0===r&&(r="COLOR_BUFFER_BIT"),l.gl.clear(l.gl[r])},viewport:function(r){var e;void 0===r&&(r=l.size),(e=l.gl).viewport.apply(e,[0,0].concat(r))},drawArrays:function(r){void 0===r&&(r="TRIANGLES"),l.gl.drawArrays(l.gl[r],0,l.count)},drawElements:function(r,e){void 0===r&&(r="TRIANGLES"),void 0===e&&(e="UNSIGNED_SHORT"),l.gl.drawElements(l.gl[r],l.count,l.gl[e],0)}});l.frame=i(),l.texture=n(l._texture),l.uniform=n(l._uniform),l.attribute=n(l._attribute);export{l as default,l as gl};