@defold-typescript/types 0.38.0 → 0.40.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.
Files changed (109) hide show
  1. package/api-availability.json +117 -0
  2. package/api-signatures.json +586 -480
  3. package/examples/translations.json +356 -180
  4. package/generated/b2d_body.d.ts +7 -4
  5. package/generated/b2d_shape.d.ts +23 -1
  6. package/generated/buffer.d.ts +34 -19
  7. package/generated/camera.d.ts +3 -2
  8. package/generated/collectionfactory.d.ts +17 -12
  9. package/generated/collectionproxy.d.ts +2 -2
  10. package/generated/compute.d.ts +1 -1
  11. package/generated/factory.d.ts +2 -1
  12. package/generated/go.d.ts +150 -91
  13. package/generated/graphics.d.ts +54 -0
  14. package/generated/gui.d.ts +117 -71
  15. package/generated/html5.d.ts +4 -2
  16. package/generated/http.d.ts +8 -2
  17. package/generated/image.d.ts +24 -15
  18. package/generated/kinds/gui-script.d.ts +1 -0
  19. package/generated/kinds/render-script.d.ts +1 -0
  20. package/generated/kinds/script.d.ts +1 -0
  21. package/generated/material.d.ts +1 -1
  22. package/generated/model.d.ts +41 -7
  23. package/generated/particlefx.d.ts +1 -1
  24. package/generated/physics.d.ts +29 -20
  25. package/generated/profiler.d.ts +10 -3
  26. package/generated/render.d.ts +293 -111
  27. package/generated/resource.d.ts +243 -226
  28. package/generated/socket.d.ts +33 -18
  29. package/generated/sound.d.ts +6 -5
  30. package/generated/sprite.d.ts +9 -1
  31. package/generated/sys.d.ts +44 -27
  32. package/generated/tilemap.d.ts +25 -19
  33. package/generated/timer.d.ts +33 -24
  34. package/generated/versions/defold-1.12.4/buffer.d.ts +34 -19
  35. package/generated/versions/defold-1.12.4/camera.d.ts +3 -2
  36. package/generated/versions/defold-1.12.4/collectionfactory.d.ts +17 -12
  37. package/generated/versions/defold-1.12.4/collectionproxy.d.ts +1 -1
  38. package/generated/versions/defold-1.12.4/factory.d.ts +2 -1
  39. package/generated/versions/defold-1.12.4/go.d.ts +150 -91
  40. package/generated/versions/defold-1.12.4/graphics.d.ts +2 -0
  41. package/generated/versions/defold-1.12.4/gui.d.ts +109 -69
  42. package/generated/versions/defold-1.12.4/html5.d.ts +4 -2
  43. package/generated/versions/defold-1.12.4/http.d.ts +8 -2
  44. package/generated/versions/defold-1.12.4/image.d.ts +24 -15
  45. package/generated/versions/defold-1.12.4/index.d.ts +1 -0
  46. package/generated/versions/defold-1.12.4/model.d.ts +41 -7
  47. package/generated/versions/defold-1.12.4/particlefx.d.ts +1 -1
  48. package/generated/versions/defold-1.12.4/physics.d.ts +29 -20
  49. package/generated/versions/defold-1.12.4/profiler.d.ts +10 -3
  50. package/generated/versions/defold-1.12.4/render.d.ts +292 -110
  51. package/generated/versions/defold-1.12.4/resource.d.ts +243 -226
  52. package/generated/versions/defold-1.12.4/socket.d.ts +33 -18
  53. package/generated/versions/defold-1.12.4/sound.d.ts +6 -5
  54. package/generated/versions/defold-1.12.4/sprite.d.ts +9 -1
  55. package/generated/versions/defold-1.12.4/sys.d.ts +44 -27
  56. package/generated/versions/defold-1.12.4/tilemap.d.ts +25 -19
  57. package/generated/versions/defold-1.12.4/timer.d.ts +33 -24
  58. package/generated/versions/defold-1.12.4/vmath.d.ts +18 -10
  59. package/generated/versions/defold-1.12.4/window.d.ts +5 -3
  60. package/generated/versions/defold-1.13.0/b2d_body.d.ts +7 -4
  61. package/generated/versions/defold-1.13.0/b2d_shape.d.ts +23 -1
  62. package/generated/versions/defold-1.13.0/buffer.d.ts +34 -19
  63. package/generated/versions/defold-1.13.0/camera.d.ts +3 -2
  64. package/generated/versions/defold-1.13.0/collectionfactory.d.ts +17 -12
  65. package/generated/versions/defold-1.13.0/collectionproxy.d.ts +1 -1
  66. package/generated/versions/defold-1.13.0/compute.d.ts +1 -1
  67. package/generated/versions/defold-1.13.0/factory.d.ts +2 -1
  68. package/generated/versions/defold-1.13.0/go.d.ts +150 -91
  69. package/generated/versions/defold-1.13.0/graphics.d.ts +50 -0
  70. package/generated/versions/defold-1.13.0/gui.d.ts +109 -69
  71. package/generated/versions/defold-1.13.0/html5.d.ts +4 -2
  72. package/generated/versions/defold-1.13.0/http.d.ts +8 -2
  73. package/generated/versions/defold-1.13.0/image.d.ts +24 -15
  74. package/generated/versions/defold-1.13.0/index.d.ts +1 -0
  75. package/generated/versions/defold-1.13.0/material.d.ts +1 -1
  76. package/generated/versions/defold-1.13.0/model.d.ts +41 -7
  77. package/generated/versions/defold-1.13.0/particlefx.d.ts +1 -1
  78. package/generated/versions/defold-1.13.0/physics.d.ts +29 -20
  79. package/generated/versions/defold-1.13.0/profiler.d.ts +10 -3
  80. package/generated/versions/defold-1.13.0/render.d.ts +293 -111
  81. package/generated/versions/defold-1.13.0/resource.d.ts +243 -226
  82. package/generated/versions/defold-1.13.0/socket.d.ts +33 -18
  83. package/generated/versions/defold-1.13.0/sound.d.ts +6 -5
  84. package/generated/versions/defold-1.13.0/sprite.d.ts +9 -1
  85. package/generated/versions/defold-1.13.0/sys.d.ts +44 -27
  86. package/generated/versions/defold-1.13.0/tilemap.d.ts +25 -19
  87. package/generated/versions/defold-1.13.0/timer.d.ts +33 -24
  88. package/generated/versions/defold-1.13.0/vmath.d.ts +18 -10
  89. package/generated/versions/defold-1.13.0/window.d.ts +5 -3
  90. package/generated/vmath.d.ts +18 -10
  91. package/generated/window.d.ts +5 -3
  92. package/index.d.ts +1 -0
  93. package/package.json +2 -1
  94. package/scripts/generate-api-signatures.ts +2 -1
  95. package/scripts/prose-constants.ts +96 -0
  96. package/scripts/regen.ts +6 -2
  97. package/src/api-doc.ts +8 -0
  98. package/src/component-properties.d.ts +33 -0
  99. package/src/core-types.ts +4 -2
  100. package/src/custom-messages.d.ts +4 -3
  101. package/src/doc-comment.ts +247 -43
  102. package/src/emit-dts.ts +958 -57
  103. package/src/engine-globals.d.ts +2 -2
  104. package/src/example-store.ts +26 -0
  105. package/src/go-overloads.d.ts +11 -10
  106. package/src/index.ts +9 -0
  107. package/src/param-correction-provenance.ts +67 -0
  108. package/src/render-overloads.d.ts +15 -17
  109. package/src/script-api.ts +3 -1
@@ -6,9 +6,10 @@ declare global {
6
6
  * Rendering API documentation
7
7
  */
8
8
  namespace render {
9
- type constant_buffer = Opaque<"constant_buffer">;
9
+ type constant_buffer = Opaque<"constant_buffer"> & { [name: string]: Vector4 | Matrix4 | Vector4[] | Matrix4[] };
10
10
  type render_target = Opaque<"render_target">;
11
11
  type texture = Opaque<"texture">;
12
+ type ClearBufferKey = typeof graphics.BUFFER_TYPE_COLOR0_BIT | typeof graphics.BUFFER_TYPE_DEPTH_BIT | typeof graphics.BUFFER_TYPE_STENCIL_BIT;
12
13
  const FRUSTUM_PLANES_ALL: number & { readonly __brand: "render.FRUSTUM_PLANES_ALL" };
13
14
  const FRUSTUM_PLANES_SIDES: number & { readonly __brand: "render.FRUSTUM_PLANES_SIDES" };
14
15
  const RENDER_TARGET_DEFAULT: number & { readonly __brand: "render.RENDER_TARGET_DEFAULT" };
@@ -44,7 +45,7 @@ declare global {
44
45
  * render.clear(buffers);
45
46
  * ```
46
47
  */
47
- function clear(buffers: LuaMap<number & { readonly __brand: "graphics.BUFFER_TYPE_COLOR0_BIT" } | number & { readonly __brand: "graphics.BUFFER_TYPE_DEPTH_BIT" } | number & { readonly __brand: "graphics.BUFFER_TYPE_STENCIL_BIT" }, number | Vector4>): void;
48
+ function clear(buffers: LuaMap<render.ClearBufferKey, number | Vector4>): void;
48
49
  /**
49
50
  * Constant buffers are used to set shader program variables and are optionally passed to the `render.draw()` function.
50
51
  * The buffer's constant elements can be indexed like an ordinary Lua table, but you can't iterate over them with pairs() or ipairs().
@@ -52,33 +53,41 @@ declare global {
52
53
  * @returns new constant buffer
53
54
  * @example
54
55
  * ```ts
55
- * // Set a "tint" constant in a constant buffer in the render script:
56
- * const constants = render.constant_buffer();
57
- * constants.tint = vmath.vector4(1, 1, 1, 1);
56
+ * export default defineRenderScript({
57
+ * init() {
58
+ * return { my_pred: render.predicate([hash("my_tag")]) };
59
+ * },
58
60
  *
59
- * // Then use the constant buffer when drawing a predicate:
60
- * render.draw(self.my_pred, { constants });
61
- *
62
- * // The constant buffer also supports array values by specifying constants in an array:
63
- * const constants2 = render.constant_buffer();
64
- * constants2.light_colors = [];
65
- * constants2.light_colors[0] = vmath.vector4(1, 0, 0, 1);
66
- * constants2.light_colors[1] = vmath.vector4(0, 1, 0, 1);
67
- * constants2.light_colors[2] = vmath.vector4(0, 0, 1, 1);
68
- *
69
- * // You can also create the array by passing the vectors directly:
70
- * const constants3 = render.constant_buffer();
71
- * constants3.light_colors = [
72
- * vmath.vector4(1, 0, 0, 1),
73
- * vmath.vector4(0, 1, 0, 1),
74
- * vmath.vector4(0, 0, 1, 1),
75
- * ];
76
- *
77
- * // Add more constants to the array
78
- * constants3.light_colors[3] = vmath.vector4(1, 1, 1, 1);
61
+ * update(self, dt) {
62
+ * // Set a "tint" constant in a constant buffer in the render script:
63
+ * const constants = render.constant_buffer();
64
+ * constants.tint = vmath.vector4(1, 1, 1, 1);
65
+ *
66
+ * // Then use the constant buffer when drawing a predicate:
67
+ * render.draw(self.my_pred, { constants });
68
+ *
69
+ * // The constant buffer also supports array values by specifying constants in an array:
70
+ * const constants2 = render.constant_buffer();
71
+ * constants2.light_colors = [];
72
+ * constants2.light_colors[0] = vmath.vector4(1, 0, 0, 1);
73
+ * constants2.light_colors[1] = vmath.vector4(0, 1, 0, 1);
74
+ * constants2.light_colors[2] = vmath.vector4(0, 0, 1, 1);
75
+ *
76
+ * // You can also create the array by passing the vectors directly:
77
+ * const constants3 = render.constant_buffer();
78
+ * constants3.light_colors = [
79
+ * vmath.vector4(1, 0, 0, 1),
80
+ * vmath.vector4(0, 1, 0, 1),
81
+ * vmath.vector4(0, 0, 1, 1),
82
+ * ];
83
+ *
84
+ * // Add more constants to the array
85
+ * constants3.light_colors[3] = vmath.vector4(1, 1, 1, 1);
86
+ * },
87
+ * });
79
88
  * ```
80
89
  */
81
- function constant_buffer(): Opaque<"constant_buffer">;
90
+ function constant_buffer(): Opaque<"constant_buffer"> & { [name: string]: Vector4 | Matrix4 | Vector4[] | Matrix4[] };
82
91
  /**
83
92
  * Deletes a render target created by a render script.
84
93
  * You cannot delete a render target resource.
@@ -86,8 +95,16 @@ declare global {
86
95
  * @param render_target - render target to delete
87
96
  * @example
88
97
  * ```ts
89
- * // How to delete a render target:
90
- * render.delete_render_target(self.my_render_target);
98
+ * export default defineRenderScript({
99
+ * init() {
100
+ * return { my_render_target: render.render_target("my_target", {}) };
101
+ * },
102
+ *
103
+ * final(self) {
104
+ * // How to delete a render target:
105
+ * render.delete_render_target(self.my_render_target);
106
+ * },
107
+ * });
91
108
  * ```
92
109
  */
93
110
  function delete_render_target(render_target: Opaque<"render_target">): void;
@@ -98,10 +115,18 @@ declare global {
98
115
  *
99
116
  * @example
100
117
  * ```ts
101
- * // Enable material named "glow", then draw my_pred with it.
102
- * render.enable_material("glow");
103
- * render.draw(self.my_pred);
104
- * render.disable_material();
118
+ * export default defineRenderScript({
119
+ * init() {
120
+ * return { my_pred: render.predicate([hash("my_tag")]) };
121
+ * },
122
+ *
123
+ * update(self, dt) {
124
+ * // Enable material named "glow", then draw my_pred with it.
125
+ * render.enable_material("glow");
126
+ * render.draw(self.my_pred);
127
+ * render.disable_material();
128
+ * },
129
+ * });
105
130
  * ```
106
131
  */
107
132
  function disable_material(): void;
@@ -123,19 +148,39 @@ declare global {
123
148
  * - `graphics.STATE_POLYGON_OFFSET_FILL`
124
149
  * @example
125
150
  * ```ts
126
- * // Disable face culling when drawing the tile predicate:
127
- * render.disable_state(graphics.STATE_CULL_FACE);
128
- * render.draw(self.tile_pred);
151
+ * export default defineRenderScript({
152
+ * init() {
153
+ * return { tile_pred: render.predicate([hash("tile")]) };
154
+ * },
155
+ *
156
+ * update(self, dt) {
157
+ * // Disable face culling when drawing the tile predicate:
158
+ * render.disable_state(graphics.STATE_CULL_FACE);
159
+ * render.draw(self.tile_pred);
160
+ * },
161
+ * });
129
162
  * ```
130
163
  */
131
- function disable_state(state: number & { readonly __brand: "graphics.STATE_DEPTH_TEST" } | number & { readonly __brand: "graphics.STATE_STENCIL_TEST" } | number & { readonly __brand: "graphics.STATE_BLEND" } | number & { readonly __brand: "graphics.STATE_ALPHA_TEST" } | number & { readonly __brand: "graphics.STATE_CULL_FACE" } | number & { readonly __brand: "graphics.STATE_POLYGON_OFFSET_FILL" }): void;
164
+ function disable_state(state: graphics.State): void;
132
165
  /**
133
166
  * Disables a texture that has previourly been enabled.
134
167
  *
135
168
  * @param binding - texture binding, either by texture unit, string or hash that should be disabled
136
169
  * @example
137
170
  * ```ts
138
- * export default defineScript({
171
+ * export default defineRenderScript({
172
+ * init() {
173
+ * const color_params = {
174
+ * format: graphics.TEXTURE_FORMAT_RGBA,
175
+ * width: render.get_window_width(),
176
+ * height: render.get_window_height(),
177
+ * };
178
+ * return {
179
+ * my_render_target: render.render_target({ [graphics.BUFFER_TYPE_COLOR0_BIT]: color_params }),
180
+ * my_pred: render.predicate([hash("my_tag")]),
181
+ * };
182
+ * },
183
+ *
139
184
  * update(self, dt) {
140
185
  * render.enable_texture(0, self.my_render_target, graphics.BUFFER_TYPE_COLOR0_BIT);
141
186
  * // draw a predicate with the render target available as texture 0 in the predicate
@@ -147,7 +192,7 @@ declare global {
147
192
  * });
148
193
  * ```
149
194
  */
150
- function disable_texture(binding: Opaque<"texture"> | string | Hash): void;
195
+ function disable_texture(binding: Opaque<"texture"> | string | Hash | number): void;
151
196
  /**
152
197
  * Dispatches the currently enabled compute program. The dispatch call takes three arguments x,y,z which constitutes
153
198
  * the 'global working group' of the compute dispatch. Together with the 'local working group' specified in the compute shader
@@ -164,7 +209,7 @@ declare global {
164
209
  * constant_buffer optional constants to use while rendering
165
210
  * @example
166
211
  * ```ts
167
- * export default defineScript({
212
+ * export default defineRenderScript({
168
213
  * init() {
169
214
  * const color_params = {
170
215
  * format: graphics.TEXTURE_FORMAT_RGBA,
@@ -172,6 +217,7 @@ declare global {
172
217
  * height: render.get_window_height(),
173
218
  * };
174
219
  * return {
220
+ * backing_texture: resource.get_texture_info("/main/backing.texturec").handle,
175
221
  * scene_rt: render.render_target({ [graphics.BUFFER_TYPE_COLOR0_BIT]: color_params }),
176
222
  * };
177
223
  * },
@@ -191,7 +237,7 @@ declare global {
191
237
  * render.dispatch_compute(32, 32, 32, { constants });
192
238
  * ```
193
239
  */
194
- function dispatch_compute(x: number, y: number, z: number, options?: { constants?: Opaque<"constant_buffer"> }): void;
240
+ function dispatch_compute(x: number, y: number, z: number, options?: { constants?: Opaque<"constant_buffer"> & { [name: string]: Vector4 | Matrix4 | Vector4[] | Matrix4[] } }): void;
195
241
  /**
196
242
  * Draws all objects that match a specified predicate. An optional constant buffer can be
197
243
  * provided to override the default constants. If no constants buffer is provided, a default
@@ -216,33 +262,37 @@ declare global {
216
262
  * int How to sort draw order for world-ordered entries. Default uses the renderer's preferred world sorting (back-to-front).
217
263
  * @example
218
264
  * ```ts
219
- * export default defineScript({
265
+ * export default defineRenderScript({
220
266
  * init() {
221
- * // define a predicate matching anything with material tag "my_tag"
222
- * return { my_pred: render.predicate([hash("my_tag")]) };
267
+ * return {
268
+ * // define a predicate matching anything with material tag "my_tag"
269
+ * my_pred: render.predicate([hash("my_tag")]),
270
+ * proj: vmath.matrix4_perspective(math.rad(45), render.get_window_width() / render.get_window_height(), 0.1, 1000),
271
+ * view: vmath.matrix4_look_at(vmath.vector3(0, 0, 10), vmath.vector3(0, 0, 0), vmath.vector3(0, 1, 0)),
272
+ * };
223
273
  * },
224
274
  *
225
275
  * update(self, dt) {
226
276
  * // draw everything in the my_pred predicate
227
277
  * render.draw(self.my_pred);
228
- * },
229
- * });
230
278
  *
231
- * // Draw predicate with constants:
232
- * const constants = render.constant_buffer();
233
- * constants.tint = vmath.vector4(1, 1, 1, 1);
234
- * render.draw(self.my_pred, { constants });
279
+ * // Draw predicate with constants:
280
+ * const constants = render.constant_buffer();
281
+ * constants.tint = vmath.vector4(1, 1, 1, 1);
282
+ * render.draw(self.my_pred, { constants });
235
283
  *
236
- * // Draw with predicate and frustum culling (without near+far planes):
237
- * const frustum = self.proj.mul(self.view);
238
- * render.draw(self.my_pred, { frustum });
284
+ * // Draw with predicate and frustum culling (without near+far planes):
285
+ * const frustum = self.proj.mul(self.view);
286
+ * render.draw(self.my_pred, { frustum });
239
287
  *
240
- * // Draw with predicate and frustum culling (with near+far planes):
241
- * const frustum2 = self.proj.mul(self.view);
242
- * render.draw(self.my_pred, { frustum: frustum2, frustum_planes: render.FRUSTUM_PLANES_ALL });
288
+ * // Draw with predicate and frustum culling (with near+far planes):
289
+ * const frustum2 = self.proj.mul(self.view);
290
+ * render.draw(self.my_pred, { frustum: frustum2, frustum_planes: render.FRUSTUM_PLANES_ALL });
291
+ * },
292
+ * });
243
293
  * ```
244
294
  */
245
- function draw(predicate: number, options?: { frustum?: Matrix4; frustum_planes?: number; constants?: Opaque<"constant_buffer">; sort_order?: number }): void;
295
+ function draw(predicate: number, options?: { frustum?: Matrix4; frustum_planes?: number; constants?: Opaque<"constant_buffer"> & { [name: string]: Vector4 | Matrix4 | Vector4[] | Matrix4[] }; sort_order?: number }): void;
246
296
  /**
247
297
  * Draws all 3d debug graphics such as lines drawn with "draw_line" messages and physics visualization.
248
298
  *
@@ -258,7 +308,7 @@ declare global {
258
308
  * - render.FRUSTUM_PLANES_ALL : All sides of the frustum.
259
309
  * @example
260
310
  * ```ts
261
- * export default defineScript({
311
+ * export default defineRenderScript({
262
312
  * update(self, dt) {
263
313
  * // draw debug visualization
264
314
  * render.draw_debug3d();
@@ -276,10 +326,18 @@ declare global {
276
326
  * @param material_id - material id to enable
277
327
  * @example
278
328
  * ```ts
279
- * // Enable material named "glow", then draw my_pred with it.
280
- * render.enable_material("glow");
281
- * render.draw(self.my_pred);
282
- * render.disable_material();
329
+ * export default defineRenderScript({
330
+ * init() {
331
+ * return { my_pred: render.predicate([hash("my_tag")]) };
332
+ * },
333
+ *
334
+ * update(self, dt) {
335
+ * // Enable material named "glow", then draw my_pred with it.
336
+ * render.enable_material("glow");
337
+ * render.draw(self.my_pred);
338
+ * render.disable_material();
339
+ * },
340
+ * });
283
341
  * ```
284
342
  */
285
343
  function enable_material(material_id: string | Hash): void;
@@ -301,13 +359,21 @@ declare global {
301
359
  * - `graphics.STATE_POLYGON_OFFSET_FILL`
302
360
  * @example
303
361
  * ```ts
304
- * // Enable stencil test when drawing the gui predicate, then disable it:
305
- * render.enable_state(graphics.STATE_STENCIL_TEST);
306
- * render.draw(self.gui_pred);
307
- * render.disable_state(graphics.STATE_STENCIL_TEST);
362
+ * export default defineRenderScript({
363
+ * init() {
364
+ * return { gui_pred: render.predicate([hash("gui")]) };
365
+ * },
366
+ *
367
+ * update(self, dt) {
368
+ * // Enable stencil test when drawing the gui predicate, then disable it:
369
+ * render.enable_state(graphics.STATE_STENCIL_TEST);
370
+ * render.draw(self.gui_pred);
371
+ * render.disable_state(graphics.STATE_STENCIL_TEST);
372
+ * },
373
+ * });
308
374
  * ```
309
375
  */
310
- function enable_state(state: number & { readonly __brand: "graphics.STATE_DEPTH_TEST" } | number & { readonly __brand: "graphics.STATE_STENCIL_TEST" } | number & { readonly __brand: "graphics.STATE_BLEND" } | number & { readonly __brand: "graphics.STATE_ALPHA_TEST" } | number & { readonly __brand: "graphics.STATE_CULL_FACE" } | number & { readonly __brand: "graphics.STATE_POLYGON_OFFSET_FILL" }): void;
376
+ function enable_state(state: graphics.State): void;
311
377
  /**
312
378
  * Sets the specified texture handle for a render target attachment or a regular texture
313
379
  * that should be used for rendering. The texture can be bound to either a texture unit
@@ -345,7 +411,19 @@ declare global {
345
411
  * - `graphics.BUFFER_TYPE_COLOR3_BIT`
346
412
  * @example
347
413
  * ```ts
348
- * export default defineScript({
414
+ * export default defineRenderScript({
415
+ * init() {
416
+ * const color_params = {
417
+ * format: graphics.TEXTURE_FORMAT_RGBA,
418
+ * width: render.get_window_width(),
419
+ * height: render.get_window_height(),
420
+ * };
421
+ * return {
422
+ * my_render_target: render.render_target({ [graphics.BUFFER_TYPE_COLOR0_BIT]: color_params }),
423
+ * my_pred: render.predicate([hash("my_tag")]),
424
+ * };
425
+ * },
426
+ *
349
427
  * update(self, dt) {
350
428
  * // enable target so all drawing is done to it
351
429
  * render.set_render_target(self.my_render_target);
@@ -362,9 +440,15 @@ declare global {
362
440
  * render.draw(self.my_pred);
363
441
  * },
364
442
  * });
365
- *
443
+ * ```
444
+ * @example
445
+ * ```ts
366
446
  * // Or enable a render target by resource id:
367
- * export default defineScript({
447
+ * export default defineRenderScript({
448
+ * init() {
449
+ * return { my_pred: render.predicate([hash("my_tag")]) };
450
+ * },
451
+ *
368
452
  * update(self, dt) {
369
453
  * render.set_render_target("my_rt_resource");
370
454
  * render.draw(self.my_pred);
@@ -376,9 +460,15 @@ declare global {
376
460
  * render.draw(self.my_pred);
377
461
  * },
378
462
  * });
379
- *
463
+ * ```
464
+ * @example
465
+ * ```ts
380
466
  * // Or bind a texture handle directly:
381
- * export default defineScript({
467
+ * export default defineRenderScript({
468
+ * init() {
469
+ * return { my_texture_handle: resource.get_texture_info("/main/my_texture.texturec").handle };
470
+ * },
471
+ *
382
472
  * update(self, dt) {
383
473
  * // bind a texture to the texture unit 0
384
474
  * render.enable_texture(0, self.my_texture_handle);
@@ -388,7 +478,7 @@ declare global {
388
478
  * });
389
479
  * ```
390
480
  */
391
- function enable_texture(binding: number | string | Hash, handle_or_name: Opaque<"texture"> | string | Hash, buffer_type?: number & { readonly __brand: "graphics.BUFFER_TYPE_COLOR0_BIT" } | number & { readonly __brand: "graphics.BUFFER_TYPE_COLOR1_BIT" } | number & { readonly __brand: "graphics.BUFFER_TYPE_COLOR2_BIT" } | number & { readonly __brand: "graphics.BUFFER_TYPE_COLOR3_BIT" } | number & { readonly __brand: "graphics.BUFFER_TYPE_DEPTH_BIT" } | number & { readonly __brand: "graphics.BUFFER_TYPE_STENCIL_BIT" }): void;
481
+ function enable_texture(binding: number | string | Hash, handle_or_name: Opaque<"texture"> | string | Hash | Opaque<"render_target"> | number, buffer_type?: graphics.BufferType): void;
392
482
  /**
393
483
  * Returns the logical window height that is set in the "game.project" settings.
394
484
  * Note that the actual window pixel size can change, either by device constraints
@@ -416,13 +506,35 @@ declare global {
416
506
  * @returns the height of the render target buffer texture
417
507
  * @example
418
508
  * ```ts
419
- * // get the height of the render target color buffer
420
- * const h = render.get_render_target_height(self.target_right, graphics.BUFFER_TYPE_COLOR0_BIT);
421
- * // get the height of a render target resource
422
- * const w = render.get_render_target_height("my_rt_resource", graphics.BUFFER_TYPE_COLOR0_BIT);
509
+ * export default defineRenderScript({
510
+ * init() {
511
+ * // render target buffer parameters
512
+ * const color_params = {
513
+ * format: graphics.TEXTURE_FORMAT_RGBA,
514
+ * width: render.get_window_width(),
515
+ * height: render.get_window_height(),
516
+ * min_filter: graphics.TEXTURE_FILTER_LINEAR,
517
+ * mag_filter: graphics.TEXTURE_FILTER_LINEAR,
518
+ * u_wrap: graphics.TEXTURE_WRAP_CLAMP_TO_EDGE,
519
+ * v_wrap: graphics.TEXTURE_WRAP_CLAMP_TO_EDGE,
520
+ * };
521
+ * return {
522
+ * target_right: render.render_target("right", {
523
+ * [graphics.BUFFER_TYPE_COLOR0_BIT]: color_params,
524
+ * }),
525
+ * };
526
+ * },
527
+ *
528
+ * update(self, dt) {
529
+ * // get the height of the render target color buffer
530
+ * const h = render.get_render_target_height(self.target_right, graphics.BUFFER_TYPE_COLOR0_BIT);
531
+ * // get the height of a render target resource
532
+ * const w = render.get_render_target_height("my_rt_resource", graphics.BUFFER_TYPE_COLOR0_BIT);
533
+ * },
534
+ * });
423
535
  * ```
424
536
  */
425
- function get_render_target_height(render_target: Opaque<"render_target">, buffer_type: number & { readonly __brand: "graphics.BUFFER_TYPE_COLOR0_BIT" } | number & { readonly __brand: "graphics.BUFFER_TYPE_COLOR1_BIT" } | number & { readonly __brand: "graphics.BUFFER_TYPE_COLOR2_BIT" } | number & { readonly __brand: "graphics.BUFFER_TYPE_COLOR3_BIT" } | number & { readonly __brand: "graphics.BUFFER_TYPE_DEPTH_BIT" } | number & { readonly __brand: "graphics.BUFFER_TYPE_STENCIL_BIT" }): number;
537
+ function get_render_target_height(render_target: Opaque<"render_target"> | string | Hash, buffer_type: graphics.BufferType): number;
426
538
  /**
427
539
  * Returns the specified buffer width from a render target.
428
540
  *
@@ -439,13 +551,35 @@ declare global {
439
551
  * @returns the width of the render target buffer texture
440
552
  * @example
441
553
  * ```ts
442
- * // get the width of the render target color buffer
443
- * const w = render.get_render_target_width(self.target_right, graphics.BUFFER_TYPE_COLOR0_BIT);
444
- * // get the width of a render target resource
445
- * const w2 = render.get_render_target_width("my_rt_resource", graphics.BUFFER_TYPE_COLOR0_BIT);
554
+ * export default defineRenderScript({
555
+ * init() {
556
+ * // render target buffer parameters
557
+ * const color_params = {
558
+ * format: graphics.TEXTURE_FORMAT_RGBA,
559
+ * width: render.get_window_width(),
560
+ * height: render.get_window_height(),
561
+ * min_filter: graphics.TEXTURE_FILTER_LINEAR,
562
+ * mag_filter: graphics.TEXTURE_FILTER_LINEAR,
563
+ * u_wrap: graphics.TEXTURE_WRAP_CLAMP_TO_EDGE,
564
+ * v_wrap: graphics.TEXTURE_WRAP_CLAMP_TO_EDGE,
565
+ * };
566
+ * return {
567
+ * target_right: render.render_target("right", {
568
+ * [graphics.BUFFER_TYPE_COLOR0_BIT]: color_params,
569
+ * }),
570
+ * };
571
+ * },
572
+ *
573
+ * update(self, dt) {
574
+ * // get the width of the render target color buffer
575
+ * const w = render.get_render_target_width(self.target_right, graphics.BUFFER_TYPE_COLOR0_BIT);
576
+ * // get the width of a render target resource
577
+ * const w2 = render.get_render_target_width("my_rt_resource", graphics.BUFFER_TYPE_COLOR0_BIT);
578
+ * },
579
+ * });
446
580
  * ```
447
581
  */
448
- function get_render_target_width(render_target: Opaque<"render_target">, buffer_type: number & { readonly __brand: "graphics.BUFFER_TYPE_COLOR0_BIT" } | number & { readonly __brand: "graphics.BUFFER_TYPE_COLOR1_BIT" } | number & { readonly __brand: "graphics.BUFFER_TYPE_COLOR2_BIT" } | number & { readonly __brand: "graphics.BUFFER_TYPE_COLOR3_BIT" } | number & { readonly __brand: "graphics.BUFFER_TYPE_DEPTH_BIT" } | number & { readonly __brand: "graphics.BUFFER_TYPE_STENCIL_BIT" }): number;
582
+ function get_render_target_width(render_target: Opaque<"render_target"> | string | Hash, buffer_type: graphics.BufferType): number;
449
583
  /**
450
584
  * Returns the logical window width that is set in the "game.project" settings.
451
585
  * Note that the actual window pixel size can change, either by device constraints
@@ -629,20 +763,28 @@ declare global {
629
763
  * boolean If true, the renderer will use the cameras view-projection matrix for frustum culling (default: false)
630
764
  * @example
631
765
  * ```ts
632
- * // Set the current camera to be used for rendering
633
- * render.set_camera("main:/my_go#camera");
634
- * render.draw(self.my_pred);
635
- * render.set_camera(undefined);
636
- *
637
- * // Use the camera frustum for frustum culling together with a specific frustum plane option for the draw command
638
- * // The camera frustum will take precedence over the frustum plane option in render.draw
639
- * render.set_camera("main:/my_go#camera", { use_frustum: true });
640
- * // However, we can still customize the frustum planes regardless of the camera option!
641
- * render.draw(self.my_pred, { frustum_planes: render.FRUSTUM_PLANES_ALL });
642
- * render.set_camera();
766
+ * export default defineRenderScript({
767
+ * init() {
768
+ * return { my_pred: render.predicate([hash("my_tag")]) };
769
+ * },
770
+ *
771
+ * update(self, dt) {
772
+ * // Set the current camera to be used for rendering
773
+ * render.set_camera("main:/my_go#camera");
774
+ * render.draw(self.my_pred);
775
+ * render.set_camera(undefined);
776
+ *
777
+ * // Use the camera frustum for frustum culling together with a specific frustum plane option for the draw command
778
+ * // The camera frustum will take precedence over the frustum plane option in render.draw
779
+ * render.set_camera("main:/my_go#camera", { use_frustum: true });
780
+ * // However, we can still customize the frustum planes regardless of the camera option!
781
+ * render.draw(self.my_pred, { frustum_planes: render.FRUSTUM_PLANES_ALL });
782
+ * render.set_camera();
783
+ * },
784
+ * });
643
785
  * ```
644
786
  */
645
- function set_camera(camera?: Url | number, options?: { use_frustum?: boolean }): void;
787
+ function set_camera(camera?: Url | number | string, options?: { use_frustum?: boolean }): void;
646
788
  /**
647
789
  * Specifies whether the individual color components in the frame buffer is enabled for writing (`true`) or disabled (`false`). For example, if `blue` is `false`, nothing is written to the blue component of any pixel in any of the color buffers, regardless of the drawing operation attempted. Note that writing are either enabled or disabled for entire color components, not the individual bits of a component.
648
790
  * The component masks are all initially `true`.
@@ -666,11 +808,19 @@ declare global {
666
808
  * @param compute - compute id to use, or nil to disable
667
809
  * @example
668
810
  * ```ts
669
- * // Enable compute program named "fractals", then dispatch it.
670
- * render.set_compute("fractals");
671
- * render.enable_texture(0, self.backing_texture);
672
- * render.dispatch_compute(128, 128, 1);
673
- * render.set_compute();
811
+ * export default defineRenderScript({
812
+ * init() {
813
+ * return { backing_texture: "my_texture_resource" };
814
+ * },
815
+ *
816
+ * update(self, dt) {
817
+ * // Enable compute program named "fractals", then dispatch it.
818
+ * render.set_compute("fractals");
819
+ * render.enable_texture(0, self.backing_texture);
820
+ * render.dispatch_compute(128, 128, 1);
821
+ * render.set_compute();
822
+ * },
823
+ * });
674
824
  * ```
675
825
  */
676
826
  function set_compute(compute?: string | Hash): void;
@@ -760,7 +910,7 @@ declare global {
760
910
  * ```ts
761
911
  * // Set listener and handle render context events.
762
912
  * // custom.render_script
763
- * export default defineScript({
913
+ * export default defineRenderScript({
764
914
  * init() {
765
915
  * render.set_listener((self, event_type) => {
766
916
  * if (event_type === render.CONTEXT_EVENT_CONTEXT_LOST) {
@@ -784,7 +934,7 @@ declare global {
784
934
  * offset for each polygon. The initial value is `0`.
785
935
  * `units` is multiplied by an implementation-specific value to create a
786
936
  * constant depth offset. The initial value is `0`.
787
- * The value of the offset is computed as `factor` &times; `DZ` + `r` &times; `units`
937
+ * The value of the offset is computed as `factor` × `DZ` + `r` × `units`
788
938
  * `DZ` is a measurement of the depth slope of the polygon which is the change in z (depth)
789
939
  * values divided by the change in either x or y coordinates, as you traverse a polygon.
790
940
  * The depth values are in window coordinates, clamped to the range [0, 1].
@@ -833,10 +983,24 @@ declare global {
833
983
  *
834
984
  * - `graphics.BUFFER_TYPE_STENCIL_BIT`
835
985
  * @example
986
+ * How to set a render target and draw to it and then switch back to the default render target
987
+ * The render target defines the depth/stencil buffers as transient, when set_render_target is called the next time the buffers may be invalidated and allow for optimisations depending on driver support
836
988
  * ```ts
837
989
  * // How to set a render target and draw to it and then switch back to the default render target
838
990
  * // The render target defines the depth/stencil buffers as transient, when set_render_target is called the next time the buffers may be invalidated and allow for optimisations depending on driver support
839
- * export default defineScript({
991
+ * export default defineRenderScript({
992
+ * init() {
993
+ * const color_params = {
994
+ * format: graphics.TEXTURE_FORMAT_RGBA,
995
+ * width: render.get_window_width(),
996
+ * height: render.get_window_height(),
997
+ * };
998
+ * return {
999
+ * my_render_target: render.render_target({ [graphics.BUFFER_TYPE_COLOR0_BIT]: color_params }),
1000
+ * my_pred: render.predicate([hash("my_tag")]),
1001
+ * };
1002
+ * },
1003
+ *
840
1004
  * update(self, dt) {
841
1005
  * // set render target so all drawing is done to it
842
1006
  * render.set_render_target(self.my_render_target, {
@@ -851,9 +1015,15 @@ declare global {
851
1015
  * render.set_render_target(render.RENDER_TARGET_DEFAULT);
852
1016
  * },
853
1017
  * });
854
- *
1018
+ * ```
1019
+ * @example
1020
+ * ```ts
855
1021
  * // Or set the render target by a render target resource identifier:
856
- * export default defineScript({
1022
+ * export default defineRenderScript({
1023
+ * init() {
1024
+ * return { my_pred: render.predicate([hash("my_tag")]) };
1025
+ * },
1026
+ *
857
1027
  * update(self, dt) {
858
1028
  * render.set_render_target("my_rt_resource");
859
1029
  *
@@ -866,7 +1036,7 @@ declare global {
866
1036
  * });
867
1037
  * ```
868
1038
  */
869
- function set_render_target(render_target: Opaque<"render_target">, options?: { transient?: Record<string | number, unknown> }): void;
1039
+ function set_render_target(render_target: Opaque<"render_target"> | string | Hash | typeof render.RENDER_TARGET_DEFAULT, options?: { transient?: graphics.BufferType[] }): void;
870
1040
  /**
871
1041
  * Sets the render target size for a render target created from
872
1042
  * either a render script, or from a render target resource.
@@ -876,12 +1046,20 @@ declare global {
876
1046
  * @param height - new render target height
877
1047
  * @example
878
1048
  * ```ts
879
- * // Resize render targets to the current window size:
880
- * render.set_render_target_size(self.my_render_target, render.get_window_width(), render.get_window_height());
881
- * render.set_render_target_size("my_rt_resource", render.get_window_width(), render.get_window_height());
1049
+ * export default defineRenderScript({
1050
+ * init() {
1051
+ * return { my_render_target: render.render_target("my_target", {}) };
1052
+ * },
1053
+ *
1054
+ * update(self, dt) {
1055
+ * // Resize render targets to the current window size:
1056
+ * render.set_render_target_size(self.my_render_target, render.get_window_width(), render.get_window_height());
1057
+ * render.set_render_target_size("my_rt_resource", render.get_window_width(), render.get_window_height());
1058
+ * },
1059
+ * });
882
1060
  * ```
883
1061
  */
884
- function set_render_target_size(render_target: Opaque<"render_target">, width: number, height: number): void;
1062
+ function set_render_target_size(render_target: Opaque<"render_target"> | string | Hash, width: number, height: number): void;
885
1063
  /**
886
1064
  * Stenciling is similar to depth-buffering as it enables and disables drawing on a
887
1065
  * per-pixel basis. First, GL drawing primitives are drawn into the stencil planes.
@@ -992,7 +1170,7 @@ declare global {
992
1170
  * ```ts
993
1171
  * // How to set the view and projection matrices according to
994
1172
  * // the values supplied by a camera.
995
- * export default defineScript({
1173
+ * export default defineRenderScript({
996
1174
  * init() {
997
1175
  * return {
998
1176
  * view: vmath.matrix4(),
@@ -1007,7 +1185,11 @@ declare global {
1007
1185
  * },
1008
1186
  *
1009
1187
  * on_message(self, message_id, message) {
1010
- * if (message_id === hash("set_view_projection")) {
1188
+ * if (
1189
+ * message_id === hash("set_view_projection") &&
1190
+ * types.is_matrix4(message.view) &&
1191
+ * types.is_matrix4(message.projection)
1192
+ * ) {
1011
1193
  * // camera view and projection arrives here.
1012
1194
  * self.view = message.view;
1013
1195
  * self.projection = message.projection;