1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
|
define(function(require, exports){
exports.getType = function(type){
if(type === null) return 'void'
var name = this.typemap[type.id] || type.id
return name
},
exports.extensions = {
OES_texture_float:1,
OES_texture_half_float:1,
WEBGL_lose_context:1,
OES_standard_derivatives:1,
OES_vertex_array_object:1,
WEBGL_debug_renderer_info:1,
WEBGL_debug_shaders:1,
WEBGL_compressed_texture_s3tc:1,
WEBGL_depth_texture:1,
OES_element_index_uint:1,
EXT_texture_filter_anisotropic:1,
EXT_frag_depth:1,
WEBGL_draw_buffers:1,
ANGLE_instanced_arrays:1,
OES_texture_float_linear:1,
OES_texture_half_float_linear:1,
EXT_blend_minmax:1,
EXT_shader_texture_lod:1,
},
exports.variables = {
gl_PointCoord:vec2,
gl_FrontFacing:bool,
gl_FragCoord:vec4,
gl_Position:vec4,
gl_PointSize:float32,
gl_ClipDistance:float32,
gl_VertexID:int32,
gl_InstanceID:int32,
gl_MaxVertexAttribs:int32,
gl_MaxVertexUniformVectors:int32,
gl_MaxVaryingVectors:int32,
gl_MaxVertexTextureImageUnits:int32,
gl_MaxCombinedTextureImageUnits:int32,
gl_MaxTextureImageUnits:int32,
gl_MaxFragmentUniformVectors:int32,
gl_MaxDrawBuffers:int32,
PickGuid:float,
discard:int32
},
exports.typemap = {
bool:'bool',
float32:'float',
float64:'double',
int16:'short',
int32:'int'
},
exports.uniforms = {
bool:function(gl, loc, v){ gl.uniform1i(loc, v) },
float:function(gl, loc, v){ gl.uniform1f(loc, v) },
double:function(gl, loc, v){ gl.uniform1f(loc, v) },
short:function(gl, loc, v){ gl.uniform1i(loc, v) },
int:function(gl, loc, v){ gl.uniform1i(loc, v) },
vec2:function(gl, loc, v){ gl.uniform2f(loc, v[0], v[1]) },
vec3:function(gl, loc, v){ gl.uniform3f(loc, v[0], v[1], v[2]) },
vec4:function(gl, loc, v){ gl.uniform4f(loc, v[0], v[1], v[2], v[3]) },
ivec2:function(gl, loc, v){ gl.uniform2i(loc, v[0], v[1]) },
ivec3:function(gl, loc, v){ gl.uniform3i(loc, v[0], v[1], v[2]) },
ivec4:function(gl, loc, v){ gl.uniform4i(loc, v[0], v[1], v[2], v[3]) },
bvec2:function(gl, loc, v){ gl.uniform2i(loc, v[0]) },
bvec3:function(gl, loc, v){ gl.uniform3i(loc, v[0], v[1], v[2]) },
bvec4:function(gl, loc, v){ gl.uniform4i(loc, v[0], v[1], v[2], v[3]) },
mat2:function(gl, loc, v){ gl.uniformMatrix2fv(loc, false, v) },
mat3:function(gl, loc, v){ gl.uniformMatrix3fv(loc, false, v) },
mat4:function(gl, loc, v){ gl.uniformMatrix4fv(loc, false, v) }
},
exports.uniform_gen = {
bool:{call:'uniform1i', args:1},
float:{call:'uniform1f', args:1},
double:{call:'uniform1f', args:1},
short:{call:'uniform1i', args:1},
int:{call:'uniform1i', args:1},
vec2:{call:'uniform2f', args:2},
vec3:{call:'uniform3f', args:3},
vec4:{call:'uniform4f', args:4},
ivec2:{call:'uniform2i', args:2},
ivec3:{call:'uniform3i', args:3},
ivec4:{call:'uniform4i', args:4},
bvec2:{call:'uniform2i', args:2},
bvec3:{call:'uniform3i', args:3},
bvec4:{call:'uniform4i', args:4},
mat2:{call:'uniformMatrix2fv', args:1, mat:1},
mat3:{call:'uniformMatrix3fv', args:1, mat:1},
mat4:{call:'uniformMatrix4fv', args:1, mat:1},
}
exports.functions = {
typeof:1, sizeof:int32, debug:1, radians:1, degrees:1,
sin:1, cos:1, tan:1,
asin:1, acos:1, atan:1,
pow:1, exp:1, log:1, exp2:1, log2:1,
sqrt:1, inversesqrt:1,
abs:1, sign:1, floor:1, ceil:1, fract:1,
mod:1, min:1, max:1, clamp:1,
mix:1, step:2, smoothstep:3,
length:float32, distance:float32,
dot:float32, cross:1, normalize:1,
faceforward:1, reflect:1, refract:1,
matrixCompMult:1,
lessThan:bool, lessThanEqual:bool,
greaterThan:bool, greaterThanEqual:bool,
equal:bool, notEqual:bool,
any:bool, all:bool, not:bool,
dFdx:1, dFdy:1,
texture2DLod:vec4,
texture2DProjLod:vec4,
textureCubeLod:vec4,
texture2D:vec4,
texture2DProj:vec4,
textureCube:vec4
}
exports.gl = {
DEPTH_BUFFER_BIT:0x100,STENCIL_BUFFER_BIT:0x400,COLOR_BUFFER_BIT:0x4000,
POINTS:0x0,LINES:0x1,LINE_LOOP:0x2,LINE_STRIP:0x3,TRIANGLES:0x4,TRIANGLE_STRIP:0x5,TRIANGLE_FAN:0x6,
ZERO:0x0,ONE:0x1,SRC_COLOR:0x300,ONE_MINUS_SRC_COLOR:0x301,SRC_ALPHA:0x302,ONE_MINUS_SRC_ALPHA:0x303,DST_ALPHA:0x304,ONE_MINUS_DST_ALPHA:0x305,
DST_COLOR:0x306,ONE_MINUS_DST_COLOR:0x307,SRC_ALPHA_SATURATE:0x308,FUNC_ADD:0x8006,BLEND_EQUATION:0x8009,
BLEND_EQUATION_RGB:0x8009,BLEND_EQUATION_ALPHA:0x883d,FUNC_SUBTRACT:0x800a,FUNC_REVERSE_SUBTRACT:0x800b,
BLEND_DST_RGB:0x80c8,BLEND_SRC_RGB:0x80c9,BLEND_DST_ALPHA:0x80ca,BLEND_SRC_ALPHA:0x80cb,CONSTANT_COLOR:0x8001,
ONE_MINUS_CONSTANT_COLOR:0x8002,CONSTANT_ALPHA:0x8003,ONE_MINUS_CONSTANT_ALPHA:0x8004,BLEND_COLOR:0x8005,
ARRAY_BUFFER:0x8892,ELEMENT_ARRAY_BUFFER:0x8893,ARRAY_BUFFER_BINDING:0x8894,ELEMENT_ARRAY_BUFFER_BINDING:0x8895,
STREAM_DRAW:0x88e0,STATIC_DRAW:0x88e4,DYNAMIC_DRAW:0x88e8,BUFFER_SIZE:0x8764,BUFFER_USAGE:0x8765,
CURRENT_VERTEX_ATTRIB:0x8626,FRONT:0x404,BACK:0x405,FRONT_AND_BACK:0x408,
TEXTURE_2D:0xde1,CULL_FACE:0xb44,
BLEND:0xbe2,DITHER:0xbd0,STENCIL_TEST:0xb90,DEPTH_TEST:0xb71,SCISSOR_TEST:0xc11,POLYGON_OFFSET_FILL:0x8037,
SAMPLE_ALPHA_TO_COVERAGE:0x809e,SAMPLE_COVERAGE:0x80a0,NO_ERROR:0x0,
INVALID_ENUM:0x500,INVALID_VALUE:0x501,
INVALID_OPERATION:0x502,OUT_OF_MEMORY:0x505,
CW:0x900,CCW:0x901,LINE_WIDTH:0xb21,ALIASED_POINT_SIZE_RANGE:0x846d,
ALIASED_LINE_WIDTH_RANGE:0x846e,
CULL_FACE_MODE:0xb45,FRONT_FACE:0xb46,
DEPTH_RANGE:0xb70,DEPTH_WRITEMASK:0xb72,
DEPTH_CLEAR_VALUE:0xb73,DEPTH_FUNC:0xb74,
STENCIL_CLEAR_VALUE:0xb91,STENCIL_FUNC:0xb92,STENCIL_FAIL:0xb94,
STENCIL_PASS_DEPTH_FAIL:0xb95,STENCIL_PASS_DEPTH_PASS:0xb96,STENCIL_REF:0xb97,STENCIL_VALUE_MASK:0xb93,
STENCIL_WRITEMASK:0xb98,STENCIL_BACK_FUNC:0x8800,STENCIL_BACK_FAIL:0x8801,STENCIL_BACK_PASS_DEPTH_FAIL:0x8802,
STENCIL_BACK_PASS_DEPTH_PASS:0x8803,STENCIL_BACK_REF:0x8ca3,STENCIL_BACK_VALUE_MASK:0x8ca4,
STENCIL_BACK_WRITEMASK:0x8ca5,
VIEWPORT:0xba2,SCISSOR_BOX:0xc10,COLOR_CLEAR_VALUE:0xc22,COLOR_WRITEMASK:0xc23,
UNPACK_ALIGNMENT:0xcf5,PACK_ALIGNMENT:0xd05,
MAX_TEXTURE_SIZE:0xd33,MAX_VIEWPORT_DIMS:0xd3a,
SUBPIXEL_BITS:0xd50,RED_BITS:0xd52,GREEN_BITS:0xd53,BLUE_BITS:0xd54,ALPHA_BITS:0xd55,DEPTH_BITS:0xd56,STENCIL_BITS:0xd57,
POLYGON_OFFSET_UNITS:0x2a00,POLYGON_OFFSET_FACTOR:0x8038,TEXTURE_BINDING_2D:0x8069,
SAMPLE_BUFFERS:0x80a8,SAMPLES:0x80a9,SAMPLE_COVERAGE_VALUE:0x80aa,SAMPLE_COVERAGE_INVERT:0x80ab,
COMPRESSED_TEXTURE_FORMATS:0x86a3,
DONT_CARE:0x1100,FASTEST:0x1101,NICEST:0x1102,GENERATE_MIPMAP_HINT:0x8192,
BYTE:0x1400,UNSIGNED_BYTE:0x1401,
SHORT:0x1402,UNSIGNED_SHORT:0x1403,INT:0x1404,UNSIGNED_INT:0x1405,FLOAT:0x1406,DEPTH_COMPONENT:0x1902,
ALPHA:0x1906,RGB:0x1907,RGBA:0x1908,LUMINANCE:0x1909,LUMINANCE_ALPHA:0x190a,UNSIGNED_SHORT_4_4_4_4:0x8033,
UNSIGNED_SHORT_5_5_5_1:0x8034,UNSIGNED_SHORT_5_6_5:0x8363,
FRAGMENT_SHADER:0x8b30,VERTEX_SHADER:0x8b31,
MAX_VERTEX_ATTRIBS:0x8869,MAX_VERTEX_UNIFORM_VECTORS:0x8dfb,MAX_VARYING_VECTORS:0x8dfc,
MAX_COMBINED_TEXTURE_IMAGE_UNITS:0x8b4d,MAX_VERTEX_TEXTURE_IMAGE_UNITS:0x8b4c,MAX_TEXTURE_IMAGE_UNITS:0x8872,
MAX_FRAGMENT_UNIFORM_VECTORS:0x8dfd,SHADER_TYPE:0x8b4f,DELETE_STATUS:0x8b80,LINK_STATUS:0x8b82,
VALIDATE_STATUS:0x8b83,ATTACHED_SHADERS:0x8b85,ACTIVE_UNIFORMS:0x8b86,ACTIVE_ATTRIBUTES:0x8b89,
SHADING_LANGUAGE_VERSION:0x8b8c,CURRENT_PROGRAM:0x8b8d,NEVER:0x200,LESS:0x201,EQUAL:0x202,LEQUAL:0x203,
GREATER:0x204,NOTEQUAL:0x205,GEQUAL:0x206,ALWAYS:0x207,KEEP:0x1e00,REPLACE:0x1e01,INCR:0x1e02,DECR:0x1e03,
INVERT:0x150a,INCR_WRAP:0x8507,DECR_WRAP:0x8508,VENDOR:0x1f00,RENDERER:0x1f01,VERSION:0x1f02,NEAREST:0x2600,
LINEAR:0x2601,NEAREST_MIPMAP_NEAREST:0x2700,LINEAR_MIPMAP_NEAREST:0x2701,NEAREST_MIPMAP_LINEAR:0x2702,
LINEAR_MIPMAP_LINEAR:0x2703,TEXTURE_MAG_FILTER:0x2800,TEXTURE_MIN_FILTER:0x2801,TEXTURE_WRAP_S:0x2802,
TEXTURE_WRAP_T:0x2803,TEXTURE:0x1702,TEXTURE_CUBE_MAP:0x8513,TEXTURE_BINDING_CUBE_MAP:0x8514,
TEXTURE_CUBE_MAP_POSITIVE_X:0x8515,TEXTURE_CUBE_MAP_NEGATIVE_X:0x8516,TEXTURE_CUBE_MAP_POSITIVE_Y:0x8517,
TEXTURE_CUBE_MAP_NEGATIVE_Y:0x8518,TEXTURE_CUBE_MAP_POSITIVE_Z:0x8519,TEXTURE_CUBE_MAP_NEGATIVE_Z:0x851a,
MAX_CUBE_MAP_TEXTURE_SIZE:0x851c,TEXTURE0:0x84c0,TEXTURE1:0x84c1,TEXTURE2:0x84c2,TEXTURE3:0x84c3,TEXTURE4:0x84c4,
TEXTURE5:0x84c5,TEXTURE6:0x84c6,TEXTURE7:0x84c7,TEXTURE8:0x84c8,TEXTURE9:0x84c9,TEXTURE10:0x84ca,TEXTURE11:0x84cb,
TEXTURE12:0x84cc,TEXTURE13:0x84cd,TEXTURE14:0x84ce,TEXTURE15:0x84cf,TEXTURE16:0x84d0,TEXTURE17:0x84d1,
TEXTURE18:0x84d2,TEXTURE19:0x84d3,TEXTURE20:0x84d4,TEXTURE21:0x84d5,TEXTURE22:0x84d6,TEXTURE23:0x84d7,
TEXTURE24:0x84d8,TEXTURE25:0x84d9,TEXTURE26:0x84da,TEXTURE27:0x84db,TEXTURE28:0x84dc,TEXTURE29:0x84dd,
TEXTURE30:0x84de,TEXTURE31:0x84df,ACTIVE_TEXTURE:0x84e0,REPEAT:0x2901,CLAMP_TO_EDGE:0x812f,MIRRORED_REPEAT:0x8370,
FLOAT_VEC2:0x8b50,FLOAT_VEC3:0x8b51,FLOAT_VEC4:0x8b52,INT_VEC2:0x8b53,INT_VEC3:0x8b54,INT_VEC4:0x8b55,BOOL:0x8b56,
BOOL_VEC2:0x8b57,BOOL_VEC3:0x8b58,BOOL_VEC4:0x8b59,FLOAT_MAT2:0x8b5a,FLOAT_MAT3:0x8b5b,FLOAT_MAT4:0x8b5c,
SAMPLER_2D:0x8b5e,SAMPLER_CUBE:0x8b60,VERTEX_ATTRIB_ARRAY_ENABLED:0x8622,VERTEX_ATTRIB_ARRAY_SIZE:0x8623,
VERTEX_ATTRIB_ARRAY_STRIDE:0x8624,VERTEX_ATTRIB_ARRAY_TYPE:0x8625,VERTEX_ATTRIB_ARRAY_NORMALIZED:0x886a,
VERTEX_ATTRIB_ARRAY_POINTER:0x8645,VERTEX_ATTRIB_ARRAY_BUFFER_BINDING:0x889f,COMPILE_STATUS:0x8b81,LOW_FLOAT:0x8df0,
MEDIUM_FLOAT:0x8df1,HIGH_FLOAT:0x8df2,LOW_INT:0x8df3,MEDIUM_INT:0x8df4,HIGH_INT:0x8df5,FRAMEBUFFER:0x8d40,
RENDERBUFFER:0x8d41,RGBA4:0x8056,RGB5_A1:0x8057,RGB565:0x8d62,DEPTH_COMPONENT16:0x81a5,STENCIL_INDEX:0x1901,
STENCIL_INDEX8:0x8d48,DEPTH_STENCIL:0x84f9,
RENDERBUFFER_WIDTH:0x8d42,RENDERBUFFER_HEIGHT:0x8d43,
RENDERBUFFER_INTERNAL_FORMAT:0x8d44,RENDERBUFFER_RED_SIZE:0x8d50,RENDERBUFFER_GREEN_SIZE:0x8d51,
RENDERBUFFER_BLUE_SIZE:0x8d52,RENDERBUFFER_ALPHA_SIZE:0x8d53,RENDERBUFFER_DEPTH_SIZE:0x8d54,
RENDERBUFFER_STENCIL_SIZE:0x8d55,
FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE:0x8cd0,FRAMEBUFFER_ATTACHMENT_OBJECT_NAME:0x8cd1,
FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL:0x8cd2,FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE:0x8cd3,
COLOR_ATTACHMENT0:0x8ce0,DEPTH_ATTACHMENT:0x8d00,STENCIL_ATTACHMENT:0x8d20,DEPTH_STENCIL_ATTACHMENT:0x821a,
NONE:0x0,FRAMEBUFFER_COMPLETE:0x8cd5,FRAMEBUFFER_INCOMPLETE_ATTACHMENT:0x8cd6,
FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT:0x8cd7,FRAMEBUFFER_INCOMPLETE_DIMENSIONS:0x8cd9,
FRAMEBUFFER_UNSUPPORTED:0x8cdd,FRAMEBUFFER_BINDING:0x8ca6,RENDERBUFFER_BINDING:0x8ca7,
MAX_RENDERBUFFER_SIZE:0x84e8,INVALID_FRAMEBUFFER_OPERATION:0x506,UNPACK_FLIP_Y_WEBGL:0x9240,
UNPACK_PREMULTIPLY_ALPHA_WEBGL:0x9241,CONTEXT_LOST_WEBGL:0x9242,UNPACK_COLORSPACE_CONVERSION_WEBGL:0x9243,
BROWSER_DEFAULT_WEBGL:0x9244
}
exports.compare = {
'<':exports.gl.LESS,
'<=':exports.gl.LEQUAL,
'>':exports.gl.GREATER,
'>=':exports.gl.GEQUAL,
'!==':exports.gl.NOTEQUAL,
'!=':exports.gl.NOTEQUAL,
'==':exports.gl.EQUAL,
'===':exports.gl.EQUAL
}
exports.complement = {
'<':exports.gl.GEQUAL,
'<=':exports.gl.GREATER,
'>':exports.gl.LEQUAL,
'>=':exports.gl.LESS,
'!==':exports.gl.NOTEQUAL,
'!=':exports.gl.NOTEQUAL,
'==':exports.gl.EQUAL,
'===':exports.gl.EQUAL
}
}) |