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
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
---@meta
---@alias BlendMode "normal"|"add"|"subtract"|"multiply"
---@alias Topology "triangles"|"lines"|"points"
---@class DrawModule
local Draw =
---Set the target surface and optionally clear it with a single color. If `None` is passed
---as the surface, the window will be drawn to. If `None` is passed as the clear color, then
---the surface will not be cleared, drawing will instead be appended to its current pixels.
---@param surface Surface?
---@param clear_color Color?
---Set the target layer. For the most part you will be rendering to the default layer `0`
---but in rare cases you may want to use layers to improve render batching.
---@param layer integer
---Set the shader future drawing methods will use. If the shader is already in use, nothing
---will happen. If not, the shader will switch and all the new shader's parameters will be
---initialized with their default values.Methods
---@param shader Shader?
---Set an `i32` parameter.
---@param name string
---@param value integer
---Set a `u32` parameter.
---@param name string
---@param value integer
---Set an `f32` parameter.
---@param name string
---@param value number
---Set a `vec2f` parameter.
---@param name string
---@param value Vec2
---Set a `vec3f` parameter.
---@param name string
---@param value Vec3
---Set a `vec4f` parameter.
---@param name string
---@param value Vec4
---Set a `mat2f` parameter.
---@param name string
---@param value Mat2
---Set a `mat3f` parameter.
---@param name string
---@param value Mat3
---Set a `mat4f` parameter.
---@param name string
---@param value Mat4
---Set a `texture_2d<f32>` parameter.
---@param name string
---@param value Texture
---Set a `sampler` parameter.
---@param name string
---@param value Sampler
---Set the view matrix.
---@param value Mat4
---The current main sampler.
---@return Sampler
---@nodiscard
---Set the main sampler.
---@param value Sampler
---The current blend mode.
---@return Sampler
---@nodiscard
---Set the blend mode.
---@param value BlendMode
---The current clip rectangle.
---@return Rect
---@nodiscard
---Set the clip rectangle.
---@param value Rect
---The current transform.
---@return Affine2
---@nodiscard
---Concatenate and push a transform to the stack.
---@param matrix Affine2
---Push a new transform value to the top of the stack.
---@param matrix Affine2
---Set the value of the top transform.
---@param matrix Affine2
---Concatenate and push a translation matrix.
---@param amount Vec2
---Concatenate and push a rotation matrix.
---@param radians number
---Concatenate and push a scaling matrix.
---@param scale Vec2|number
---Concatenate and push a translation/rotation/scaling matrix.
---@param translation Vec2
---@param rotation number
---@param scale Vec2|number
---Pop a transform off the top of the stack.
---Pop a number of transforms off the top of the stack.
---@param count integer
---Draw a quad filled with a texture.
---@param texture Texture
---@param quad Quad
---@param color Color?
---@param mode ColorMode?
---@param flip_x boolean?
---@param flip_y boolean?
---Draw a texture with the top-left at the provided position.
---@param texture Texture
---@param pos Vec2
---@param color Color?
---@param mode ColorMode?
---@param flip_x boolean?
---@param flip_y boolean?
---Draw a single point.
---@param point Vec2
---@param color Color
---Draw a single point.
---@param x number
---@param y number
---@param color Color
---Draw a set of points.
---@param points Vec2[]
---@param color Color
---Draw a line.
---@param x1 number
---@param y1 number
---@param x2 number
---@param y2 number
---@param color Color
---Draw a line.
---@param from Vec2
---@param to Vec2
---@param color Color
---Draw a line.
---@param line Line
---@param color Color
---Draw lines connecting the series of points into a chain, optionally looping to the start.
---@param points Vec2[]
---@param color Color
---@param loops boolean
---Draw a filled triangle.
---@param a Vec2
---@param b Vec2
---@param c Vec2
---@param color Color
---Draw a filled triangle.
---@param tri Triangle
---@param color Color
---Draw a triangle outline.
---@param a Vec2
---@param b Vec2
---@param c Vec2
---@param color Color
---Draw a triangle outline.
---@param tri Triangle
---@param color Color
---Draw a filled quad.
---@param a Vec2
---@param b Vec2
---@param c Vec2
---@param d Vec2
---@param color Color
---Draw a filled quad.
---@param quad Quad
---@param color Color
---Draw a quad outline.
---@param a Vec2
---@param b Vec2
---@param c Vec2
---@param d Vec2
---@param color Color
---Draw a quad outline.
---@param quad Quad
---@param color Color
---Draw a filled rectangle.
---@param x number
---@param y number
---@param w number
---@param h number
---@param color Color
---Draw a filled rectangle.
---@param rect Rect
---@param color Color
---Draw a rectangle outline.
---@param x number
---@param y number
---@param w number
---@param h number
---@param color Color
---Draw a rectangle outline.
---@param rect Rect
---@param color Color
---Draw a filled polygon.
---@param poly Polygon
---@param color Color
---Draw a polygon outline.
---@param poly Polygon
---@param color Color
---Draw a filled circle.
---@param x number
---@param y number
---@param radius number
---@param color Color
---@param seg_count integer?
---Draw a filled circle.
---@param center Vec2
---@param radius number
---@param color Color
---@param seg_count integer?
---Draw a filled circle.
---@param circ Circle
---@param color Color
---@param seg_count integer?
---Draw a circle outline.
---@param x number
---@param y number
---@param radius number
---@param color Color
---@param seg_count integer?
---Draw a circle outline.
---@param center Vec2
---@param radius number
---@param color Color
---@param seg_count integer?
---Draw a circle outline.
---@param circ Circle
---@param color Color
---@param seg_count integer?
---Draw a subtexture.
---@param sub SubTexture
---@param dst Quad
---@param color Color?
---@param mode ColorMode?
---@param flip_x boolean?
---@param flip_y boolean?
---Draw a subtexture.
---@param sub SubTexture
---@param pos Vec2
---@param color Color?
---@param mode ColorMode?
---@param flip_x boolean?
---@param flip_y boolean?
---Draw text with the provided font and size.Methods
---@param text string
---@param pos Vec2
---@param font Font
---@param color Color?
---@param size number?
---Draw text with the provided font and size.Methods
---@param text string
---@param x number
---@param y number
---@param font Font
---@param color Color?
---@param size number?
---Draw a custom set of vertices & indices.
---@param texture Texture?
---@param topology Topology
---@param vertices Vertex[]
---@param indices integer[]
---Draw the provided vertex & index buffers.
---@param texture Texture?
---@param topology Topology
---@param vertices VertexBuffer
---@param indices IndexBuffer
return Draw