ris-framework 0.1.0-dev.9 → 0.2.0-dev.11

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 (217) hide show
  1. package/CHANGELOG.md +49 -1
  2. package/README.md +15 -4
  3. package/dist/Framework.d.ts +9 -3
  4. package/dist/Framework.d.ts.map +1 -1
  5. package/dist/api/IFramework.d.ts +7 -6
  6. package/dist/api/IFramework.d.ts.map +1 -1
  7. package/dist/api/_export.d.ts +2 -0
  8. package/dist/api/_export.d.ts.map +1 -1
  9. package/dist/api/camera/CameraFactory.d.ts +3 -2
  10. package/dist/api/camera/CameraFactory.d.ts.map +1 -1
  11. package/dist/api/camera/ICamera.d.ts +5 -0
  12. package/dist/api/camera/ICamera.d.ts.map +1 -1
  13. package/dist/api/camera/ICameraFactory.d.ts +5 -6
  14. package/dist/api/camera/ICameraFactory.d.ts.map +1 -1
  15. package/dist/api/camera/OrthographicCamera.d.ts +7 -0
  16. package/dist/api/camera/OrthographicCamera.d.ts.map +1 -1
  17. package/dist/api/camera/PerspectiveCamera.d.ts +30 -6
  18. package/dist/api/camera/PerspectiveCamera.d.ts.map +1 -1
  19. package/dist/api/content/ContentManager.d.ts +67 -2
  20. package/dist/api/content/ContentManager.d.ts.map +1 -1
  21. package/dist/api/content/IContentManager.d.ts +32 -1
  22. package/dist/api/content/IContentManager.d.ts.map +1 -1
  23. package/dist/api/content/ShaderModuleContent.d.ts.map +1 -1
  24. package/dist/api/data/Color.d.ts +5 -0
  25. package/dist/api/data/Color.d.ts.map +1 -1
  26. package/dist/api/geometry/BaseGeometry.d.ts +9 -0
  27. package/dist/api/geometry/BaseGeometry.d.ts.map +1 -1
  28. package/dist/api/geometry/GeometryBuilder.d.ts +3 -1
  29. package/dist/api/geometry/GeometryBuilder.d.ts.map +1 -1
  30. package/dist/api/geometry/IGeometryBuilder.d.ts +24 -0
  31. package/dist/api/geometry/IGeometryBuilder.d.ts.map +1 -1
  32. package/dist/api/geometry/_export-geometry.d.ts +1 -0
  33. package/dist/api/geometry/_export-geometry.d.ts.map +1 -1
  34. package/dist/api/input/InputManager.d.ts +4 -0
  35. package/dist/api/input/InputManager.d.ts.map +1 -1
  36. package/dist/api/lights/AmbientLight.d.ts +35 -0
  37. package/dist/api/lights/AmbientLight.d.ts.map +1 -0
  38. package/dist/api/lights/DirectionalLight.d.ts +40 -0
  39. package/dist/api/lights/DirectionalLight.d.ts.map +1 -0
  40. package/dist/api/lights/LightFactory.d.ts +18 -0
  41. package/dist/api/lights/LightFactory.d.ts.map +1 -0
  42. package/dist/api/lights/LightId.d.ts +6 -0
  43. package/dist/api/lights/LightId.d.ts.map +1 -0
  44. package/dist/api/lights/LightsBuffer.d.ts +70 -0
  45. package/dist/api/lights/LightsBuffer.d.ts.map +1 -0
  46. package/dist/api/lights/PointLight.d.ts +59 -0
  47. package/dist/api/lights/PointLight.d.ts.map +1 -0
  48. package/dist/api/lights/_export.d.ts +6 -0
  49. package/dist/api/lights/_export.d.ts.map +1 -0
  50. package/dist/api/loaders/ObjGeometryMapper.d.ts +19 -0
  51. package/dist/api/loaders/ObjGeometryMapper.d.ts.map +1 -0
  52. package/dist/api/loaders/_export.d.ts +1 -0
  53. package/dist/api/loaders/_export.d.ts.map +1 -1
  54. package/dist/api/loaders/obj/ObjLoader.d.ts +29 -0
  55. package/dist/api/loaders/obj/ObjLoader.d.ts.map +1 -0
  56. package/dist/api/loaders/obj/ObjTypes.d.ts +103 -0
  57. package/dist/api/loaders/obj/ObjTypes.d.ts.map +1 -0
  58. package/dist/api/loaders/obj/index.d.ts +3 -0
  59. package/dist/api/loaders/obj/index.d.ts.map +1 -0
  60. package/dist/api/material/ForwardBlinnPhongMaterial.d.ts +127 -0
  61. package/dist/api/material/ForwardBlinnPhongMaterial.d.ts.map +1 -0
  62. package/dist/api/material/IMaterial.d.ts +15 -6
  63. package/dist/api/material/IMaterial.d.ts.map +1 -1
  64. package/dist/api/material/IMaterialFactory.d.ts +17 -2
  65. package/dist/api/material/IMaterialFactory.d.ts.map +1 -1
  66. package/dist/api/material/InspectTextureMipsMaterial.d.ts +16 -7
  67. package/dist/api/material/InspectTextureMipsMaterial.d.ts.map +1 -1
  68. package/dist/api/material/MaterialFactory.d.ts +6 -0
  69. package/dist/api/material/MaterialFactory.d.ts.map +1 -1
  70. package/dist/api/material/SpriteMaterial.d.ts +51 -0
  71. package/dist/api/material/SpriteMaterial.d.ts.map +1 -0
  72. package/dist/api/material/UnlitMaterial.d.ts +28 -10
  73. package/dist/api/material/UnlitMaterial.d.ts.map +1 -1
  74. package/dist/api/material/_export.d.ts +2 -0
  75. package/dist/api/material/_export.d.ts.map +1 -1
  76. package/dist/api/meshes/IMesh.d.ts +35 -5
  77. package/dist/api/meshes/IMesh.d.ts.map +1 -1
  78. package/dist/api/meshes/IMeshFactory.d.ts +25 -4
  79. package/dist/api/meshes/IMeshFactory.d.ts.map +1 -1
  80. package/dist/api/meshes/Mesh.d.ts +58 -6
  81. package/dist/api/meshes/Mesh.d.ts.map +1 -1
  82. package/dist/api/meshes/MeshFactory.d.ts +7 -3
  83. package/dist/api/meshes/MeshFactory.d.ts.map +1 -1
  84. package/dist/api/meshes/QuadMesh.d.ts +5 -1
  85. package/dist/api/meshes/QuadMesh.d.ts.map +1 -1
  86. package/dist/api/meshes/SubMesh.d.ts +47 -0
  87. package/dist/api/meshes/SubMesh.d.ts.map +1 -0
  88. package/dist/api/meshes/_export.d.ts +1 -0
  89. package/dist/api/meshes/_export.d.ts.map +1 -1
  90. package/dist/api/rendering/render-pipelines/IForwardBlinnPhongRenderPipeline.d.ts +56 -0
  91. package/dist/api/rendering/render-pipelines/IForwardBlinnPhongRenderPipeline.d.ts.map +1 -0
  92. package/dist/api/rendering/render-pipelines/IRenderPipeline.d.ts +3 -0
  93. package/dist/api/rendering/render-pipelines/IRenderPipeline.d.ts.map +1 -1
  94. package/dist/api/rendering/render-pipelines/IRenderPipelineFactory.d.ts +29 -0
  95. package/dist/api/rendering/render-pipelines/IRenderPipelineFactory.d.ts.map +1 -1
  96. package/dist/api/rendering/render-pipelines/_export-render-pipelines.d.ts +1 -0
  97. package/dist/api/rendering/render-pipelines/_export-render-pipelines.d.ts.map +1 -1
  98. package/dist/api/scene/Scene.d.ts +104 -0
  99. package/dist/api/scene/Scene.d.ts.map +1 -0
  100. package/dist/api/shader/IShaderModuleLoader.d.ts +4 -1
  101. package/dist/api/shader/IShaderModuleLoader.d.ts.map +1 -1
  102. package/dist/api/shader/{shader-loader.d.ts → ShaderLoader.d.ts} +1 -1
  103. package/dist/api/shader/ShaderLoader.d.ts.map +1 -0
  104. package/dist/api/sprites/SpriteBatchDrawable.d.ts +1 -1
  105. package/dist/api/sprites/SpriteBatchDrawable.d.ts.map +1 -1
  106. package/dist/api/sprites/SpriteBatchMesh.d.ts +14 -1
  107. package/dist/api/sprites/SpriteBatchMesh.d.ts.map +1 -1
  108. package/dist/api/utilities/GeometryUtilities.d.ts.map +1 -1
  109. package/dist/api/window/WindowManager.d.ts +4 -0
  110. package/dist/api/window/WindowManager.d.ts.map +1 -1
  111. package/dist/core/rendering/vertex-buffer-layout.d.ts +1 -0
  112. package/dist/core/rendering/vertex-buffer-layout.d.ts.map +1 -1
  113. package/dist/index.js +2252 -260
  114. package/dist/webgl/WebGlGraphicsDevice.d.ts.map +1 -1
  115. package/dist/webgl/lights/WebGlAmbientLightFactory.d.ts +17 -0
  116. package/dist/webgl/lights/WebGlAmbientLightFactory.d.ts.map +1 -0
  117. package/dist/webgl/lights/WebGlLightsBuffer.d.ts +55 -0
  118. package/dist/webgl/lights/WebGlLightsBuffer.d.ts.map +1 -0
  119. package/dist/webgl/render-pipelines/AWebGlRenderPipeline.d.ts +3 -1
  120. package/dist/webgl/render-pipelines/AWebGlRenderPipeline.d.ts.map +1 -1
  121. package/dist/webgl/render-pipelines/WebGlMainRenderTargetRenderPipeline.d.ts +3 -0
  122. package/dist/webgl/render-pipelines/WebGlMainRenderTargetRenderPipeline.d.ts.map +1 -1
  123. package/dist/webgl/render-pipelines/WebGlRenderPipelineFactory.d.ts +3 -1
  124. package/dist/webgl/render-pipelines/WebGlRenderPipelineFactory.d.ts.map +1 -1
  125. package/dist/webgl/render-pipelines/inspect/WebGlInspectTextureMipsRenderPipeline.d.ts +3 -1
  126. package/dist/webgl/render-pipelines/inspect/WebGlInspectTextureMipsRenderPipeline.d.ts.map +1 -1
  127. package/dist/webgl/render-pipelines/material/WebGlBlinnPhongRenderPipeline.d.ts +88 -0
  128. package/dist/webgl/render-pipelines/material/WebGlBlinnPhongRenderPipeline.d.ts.map +1 -0
  129. package/dist/webgl/render-pipelines/material/WebGlUnlitRenderPipeline.d.ts +3 -1
  130. package/dist/webgl/render-pipelines/material/WebGlUnlitRenderPipeline.d.ts.map +1 -1
  131. package/dist/webgl/render-pipelines/sprite/WebGlSpriteRenderPipeline.d.ts +3 -1
  132. package/dist/webgl/render-pipelines/sprite/WebGlSpriteRenderPipeline.d.ts.map +1 -1
  133. package/dist/webgl/shader/WebGlShaderModule.d.ts +4 -1
  134. package/dist/webgl/shader/WebGlShaderModule.d.ts.map +1 -1
  135. package/dist/webgl/shader/WebGlShaderModuleLoader.d.ts +16 -5
  136. package/dist/webgl/shader/WebGlShaderModuleLoader.d.ts.map +1 -1
  137. package/dist/webgl/texture/WebGlTexture2D.d.ts +8 -1
  138. package/dist/webgl/texture/WebGlTexture2D.d.ts.map +1 -1
  139. package/dist/webgl/utilities/webgl-filter-anisotropic-utilities.d.ts +0 -1
  140. package/dist/webgl/utilities/webgl-filter-anisotropic-utilities.d.ts.map +1 -1
  141. package/package.json +4 -4
  142. package/shaders/glsl/forward_blinn_phong_material_fs.glsl +110 -0
  143. package/shaders/glsl/forward_blinn_phong_material_vs.glsl +32 -0
  144. package/shaders/glsl/sprite_fs.glsl +1 -1
  145. package/shaders/glsl/unlit_material_fs.glsl +1 -1
  146. package/src/Framework.ts +37 -13
  147. package/src/api/IFramework.ts +8 -6
  148. package/src/api/_export.ts +2 -0
  149. package/src/api/camera/CameraFactory.ts +6 -6
  150. package/src/api/camera/ICamera.ts +6 -0
  151. package/src/api/camera/ICameraFactory.ts +5 -10
  152. package/src/api/camera/OrthographicCamera.ts +23 -1
  153. package/src/api/camera/PerspectiveCamera.ts +60 -15
  154. package/src/api/content/ContentManager.ts +201 -5
  155. package/src/api/content/IContentManager.ts +33 -1
  156. package/src/api/content/ShaderModuleContent.ts +9 -0
  157. package/src/api/data/Color.ts +7 -1
  158. package/src/api/geometry/BaseGeometry.ts +23 -0
  159. package/src/api/geometry/GeometryBuilder.ts +14 -2
  160. package/src/api/geometry/IGeometryBuilder.ts +31 -1
  161. package/src/api/geometry/_export-geometry.ts +2 -1
  162. package/src/api/input/InputManager.ts +14 -5
  163. package/src/api/lights/AmbientLight.ts +53 -0
  164. package/src/api/lights/DirectionalLight.ts +60 -0
  165. package/src/api/lights/LightFactory.ts +21 -0
  166. package/src/api/lights/LightId.ts +9 -0
  167. package/src/api/lights/LightsBuffer.ts +87 -0
  168. package/src/api/lights/PointLight.ts +91 -0
  169. package/src/api/lights/_export.ts +5 -0
  170. package/src/api/loaders/ObjGeometryMapper.ts +28 -0
  171. package/src/api/loaders/_export.ts +2 -1
  172. package/src/api/loaders/obj/ObjLoader.ts +270 -0
  173. package/src/api/loaders/obj/ObjTypes.ts +124 -0
  174. package/src/api/loaders/obj/index.ts +5 -0
  175. package/src/api/material/ForwardBlinnPhongMaterial.ts +302 -0
  176. package/src/api/material/IMaterial.ts +16 -6
  177. package/src/api/material/IMaterialFactory.ts +19 -2
  178. package/src/api/material/InspectTextureMipsMaterial.ts +63 -24
  179. package/src/api/material/MaterialFactory.ts +12 -0
  180. package/src/api/material/SpriteMaterial.ts +83 -0
  181. package/src/api/material/UnlitMaterial.ts +101 -29
  182. package/src/api/material/_export.ts +3 -1
  183. package/src/api/meshes/IMesh.ts +45 -6
  184. package/src/api/meshes/IMeshFactory.ts +27 -4
  185. package/src/api/meshes/Mesh.ts +163 -41
  186. package/src/api/meshes/MeshFactory.ts +30 -6
  187. package/src/api/meshes/QuadMesh.ts +6 -2
  188. package/src/api/meshes/SubMesh.ts +71 -0
  189. package/src/api/meshes/_export.ts +1 -0
  190. package/src/api/rendering/render-pipelines/IForwardBlinnPhongRenderPipeline.ts +66 -0
  191. package/src/api/rendering/render-pipelines/IRenderPipeline.ts +4 -0
  192. package/src/api/rendering/render-pipelines/IRenderPipelineFactory.ts +39 -0
  193. package/src/api/rendering/render-pipelines/_export-render-pipelines.ts +2 -1
  194. package/src/api/scene/Scene.ts +264 -0
  195. package/src/api/shader/IShaderModuleLoader.ts +2 -1
  196. package/src/api/sprites/SpriteBatchDrawable.ts +12 -16
  197. package/src/api/sprites/SpriteBatchMesh.ts +23 -4
  198. package/src/api/utilities/GeometryUtilities.ts +2 -0
  199. package/src/api/window/WindowManager.ts +22 -2
  200. package/src/core/rendering/vertex-buffer-layout.ts +32 -1
  201. package/src/main.ts +0 -1
  202. package/src/webgl/WebGlGraphicsDevice.ts +0 -1
  203. package/src/webgl/lights/WebGlAmbientLightFactory.ts +35 -0
  204. package/src/webgl/lights/WebGlLightsBuffer.ts +215 -0
  205. package/src/webgl/render-pipelines/AWebGlRenderPipeline.ts +7 -1
  206. package/src/webgl/render-pipelines/WebGlMainRenderTargetRenderPipeline.ts +3 -0
  207. package/src/webgl/render-pipelines/WebGlRenderPipelineFactory.ts +24 -2
  208. package/src/webgl/render-pipelines/inspect/WebGlInspectTextureMipsRenderPipeline.ts +16 -6
  209. package/src/webgl/render-pipelines/material/WebGlBlinnPhongRenderPipeline.ts +300 -0
  210. package/src/webgl/render-pipelines/material/WebGlUnlitRenderPipeline.ts +16 -6
  211. package/src/webgl/render-pipelines/sprite/WebGlSpriteRenderPipeline.ts +11 -7
  212. package/src/webgl/shader/WebGlShaderModule.ts +11 -4
  213. package/src/webgl/shader/WebGlShaderModuleLoader.ts +29 -10
  214. package/src/webgl/texture/WebGlTexture2D.ts +19 -5
  215. package/src/webgl/utilities/webgl-filter-anisotropic-utilities.ts +9 -6
  216. package/dist/api/shader/shader-loader.d.ts.map +0 -1
  217. /package/src/api/shader/{shader-loader.ts → ShaderLoader.ts} +0 -0
@@ -1,20 +1,27 @@
1
1
  /**
2
2
  * The mesh is a building class for a world shape.
3
3
  */
4
+ import { mat4, vec3 } from "gl-matrix";
4
5
  import { State } from "../data/State.js";
5
6
  import type { IVertexBuffer } from "../rendering/buffers/IVertexBuffer.js";
6
7
  import type { IIndexBuffer } from "../rendering/buffers/IIndexBuffer.js";
8
+ import type { IUniformBuffer } from "../rendering/buffers/IUniformBuffer.js";
7
9
  import type { IFramework } from "../IFramework.js";
8
10
  import type { IMesh } from "./IMesh.js";
9
11
  import { BufferUsage } from "../rendering/buffers/BufferUsage.js";
10
12
  import type { IGeometry } from "../geometry/IGeometry.js";
11
- import { GeometryFormat } from "../geometry/GeometryFormat.js";
12
13
  import { MeshParameters } from "./MeshParameters.js";
14
+ import type { IMaterial } from "../material/IMaterial.js";
15
+ import type { GeometryFormat } from "../geometry/GeometryFormat.js";
16
+ import { SubMesh } from "./SubMesh.js";
17
+ import type { Scene } from "../scene/Scene.js";
13
18
  /**
14
19
  * The mesh.
15
20
  */
16
21
  export declare class Mesh implements IMesh {
17
22
  protected readonly _framework: IFramework;
23
+ readonly scene: Scene | null;
24
+ protected _material?: IMaterial | undefined;
18
25
  protected _bufferUsage: BufferUsage;
19
26
  protected _state: State;
20
27
  protected _vertexData?: number[];
@@ -25,11 +32,55 @@ export declare class Mesh implements IMesh {
25
32
  protected _normals?: number[];
26
33
  protected _vertexBuffer?: IVertexBuffer;
27
34
  protected _indexBuffer?: IIndexBuffer;
35
+ protected _subMeshes: SubMesh[];
36
+ private readonly _modelMatrix;
37
+ private readonly _rotationQuat;
38
+ private readonly _lastPosition;
39
+ private readonly _lastRotation;
40
+ private readonly _lastScale;
41
+ private _modelBuffer?;
42
+ /** The matrix last uploaded to the model buffer. */
43
+ private readonly _uploadedMatrix;
44
+ /** @inheritDoc */
45
+ position: vec3;
46
+ /** @inheritDoc */
47
+ rotation: vec3;
48
+ /** @inheritDoc */
49
+ scale: vec3;
50
+ /** @inheritDoc */
51
+ get modelMatrix(): mat4;
52
+ /** @inheritDoc Created on first access and disposed with the mesh. */
53
+ get modelBuffer(): IUniformBuffer;
54
+ /** Uploads the model matrix when the transform changed since the last upload. */
55
+ private _updateModelBuffer;
56
+ /**
57
+ * Assigns this mesh's model buffer to a material that uses one (has a `modelBuffer` property),
58
+ * only when it differs. Materials without one (e.g. sprites) are skipped and no buffer is created for them.
59
+ * @internal
60
+ */
61
+ __assignModelBuffer(material: IMaterial): void;
28
62
  /**
29
63
  * The constructor.
30
- * @param framework The framework.
64
+ * @param _framework The framework.
65
+ * @param scene The scene. The mesh adds itself to it and removes itself on dispose.
66
+ * `null` only for internal meshes drawn outside a scene (e.g. the sprite batch).
67
+ * @param _material The material. Optional for a mesh that only holds submeshes.
68
+ */
69
+ constructor(_framework: IFramework, scene: Scene | null, _material?: IMaterial | undefined);
70
+ /** The material. Undefined for a mesh drawn through its submeshes. */
71
+ get material(): IMaterial | undefined;
72
+ /** Sets the material. */
73
+ set material(material: IMaterial | undefined);
74
+ /** The submeshes. They share this mesh's vertex and index buffers. */
75
+ get subMeshes(): SubMesh[];
76
+ /**
77
+ * Adds a submesh that draws a range of this mesh's index buffer with its own material.
78
+ * @param material The material of the submesh.
79
+ * @param indexStart The first index of the range.
80
+ * @param indexCount The number of indices in the range.
81
+ * @returns The submesh.
31
82
  */
32
- constructor(framework: IFramework);
83
+ addSubMesh(material: IMaterial, indexStart: number, indexCount: number): SubMesh;
33
84
  /**
34
85
  * The state of a mesh.
35
86
  */
@@ -75,16 +126,17 @@ export declare class Mesh implements IMesh {
75
126
  * Sets the mesh from a geometry.
76
127
  *
77
128
  * This will create vertex buffer and index buffer from geometry.
78
- * Positions, Colors, TextureCoordinates and Normals will be ignored.
79
129
  * @param geometry - The geometry.
80
- * @param format - The format for geometry.
130
+ * @param geometryFormat - The vertex layout. Defaults to the material's geometry format.
81
131
  */
82
- setGeometry(geometry: IGeometry, format: GeometryFormat): void;
132
+ setGeometry(geometry: IGeometry, geometryFormat?: GeometryFormat): void;
83
133
  /**
84
134
  * Sets the mesh from parameters.
85
135
  * @param meshParameters - The parameters.
86
136
  */
87
137
  setMesh(meshParameters: MeshParameters): void;
138
+ /** @inheritDoc */
139
+ render(): void;
88
140
  /**
89
141
  * Dispose of the mesh.
90
142
  */
@@ -1 +1 @@
1
- {"version":3,"file":"Mesh.d.ts","sourceRoot":"","sources":["../../../src/api/meshes/Mesh.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAC,KAAK,EAAC,MAAM,kBAAkB,CAAC;AACvC,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,uCAAuC,CAAC;AAC3E,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,sCAAsC,CAAC;AACzE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACxC,OAAO,EAAC,WAAW,EAAC,MAAM,qCAAqC,CAAC;AAChE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AAC1D,OAAO,EAAC,cAAc,EAAC,MAAM,+BAA+B,CAAC;AAC7D,OAAO,EAAC,cAAc,EAAC,MAAM,qBAAqB,CAAC;AAGnD;;GAEG;AACH,qBAAa,IAAK,YAAW,KAAK;IAE9B,SAAS,CAAC,QAAQ,CAAC,UAAU,EAAE,UAAU,CAAC;IAC1C,SAAS,CAAC,YAAY,cAAsB;IAC5C,SAAS,CAAC,MAAM,QAAiB;IACjC,SAAS,CAAC,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IACjC,SAAS,CAAC,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IAChC,SAAS,CAAC,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IAC9B,SAAS,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IAC7B,SAAS,CAAC,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;IACpC,SAAS,CAAC,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IAC9B,SAAS,CAAC,aAAa,CAAC,EAAE,aAAa,CAAC;IACxC,SAAS,CAAC,YAAY,CAAC,EAAE,YAAY,CAAC;IAEtC;;;OAGG;gBACgB,SAAS,EAAE,UAAU;IAIxC;;OAEG;IACH,IAAW,KAAK,IAAI,KAAK,CAExB;IAED;;OAEG;IACH,IAAW,SAAS,IAAI,MAAM,EAAE,GAAG,SAAS,CAE3C;IAED;;OAEG;IACH,IAAW,OAAO,IAAI,MAAM,EAAE,GAAG,SAAS,CAEzC;IAED;;OAEG;IACH,IAAW,MAAM,IAAI,MAAM,EAAE,GAAG,SAAS,CAExC;IAED;;OAEG;IACH,IAAW,aAAa,IAAI,MAAM,EAAE,GAAG,SAAS,CAE/C;IAED;;OAEG;IACH,IAAW,OAAO,IAAI,MAAM,EAAE,GAAG,SAAS,CAEzC;IAED;;OAEG;IACH,IAAW,YAAY,IAAI,aAAa,GAAG,SAAS,CAEnD;IAED;;OAEG;IACH,IAAW,WAAW,IAAI,YAAY,GAAG,SAAS,CAEjD;IAED;;OAEG;IACI,UAAU,IAAI,IAAI;IAIzB,OAAO,CAAC,WAAW;IA4BnB;;OAEG;IACI,YAAY;IAkEnB;;;;;;;OAOG;IACI,WAAW,CAAC,QAAQ,EAAE,SAAS,EAAE,MAAM,EAAE,cAAc,GAAG,IAAI;IA2BrE;;;OAGG;IACI,OAAO,CAAC,cAAc,EAAE,cAAc,GAAG,IAAI;IAQpD;;OAEG;IACI,OAAO,IAAI,IAAI;CAMzB"}
1
+ {"version":3,"file":"Mesh.d.ts","sourceRoot":"","sources":["../../../src/api/meshes/Mesh.ts"],"names":[],"mappings":"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"}
@@ -1,10 +1,12 @@
1
+ import type { Scene } from "../scene/Scene.js";
1
2
  import type { IMeshFactory } from "./IMeshFactory.js";
2
3
  import type { IGeometry } from "../geometry/IGeometry.js";
3
- import { GeometryFormat } from "../geometry/GeometryFormat.js";
4
4
  import type { IMesh } from "./IMesh.js";
5
5
  import { QuadMesh } from "./QuadMesh.js";
6
6
  import type { IFramework } from "../IFramework.js";
7
7
  import { vec2 } from "gl-matrix";
8
+ import type { IMaterial } from "../material/IMaterial.js";
9
+ import type { SubMeshDescriptor } from "./IMeshFactory.js";
8
10
  /**
9
11
  * The implementation of the mesh factory interface.
10
12
  */
@@ -16,8 +18,10 @@ export declare class MeshFactory implements IMeshFactory {
16
18
  */
17
19
  constructor(_framework: IFramework);
18
20
  /** @inheritDoc */
19
- create(geometry: IGeometry, geometryFormat: GeometryFormat): IMesh;
21
+ create(scene: Scene, geometry: IGeometry, material: IMaterial): IMesh;
20
22
  /** @inheritDoc */
21
- createQuadMesh(isUpdatable: boolean, scale?: vec2): QuadMesh;
23
+ createWithSubMeshes(scene: Scene, geometry: IGeometry, subMeshes: SubMeshDescriptor[]): IMesh;
24
+ /** @inheritDoc */
25
+ createQuadMesh(_isUpdatable: boolean, _scale?: vec2): QuadMesh;
22
26
  }
23
27
  //# sourceMappingURL=MeshFactory.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"MeshFactory.d.ts","sourceRoot":"","sources":["../../../src/api/meshes/MeshFactory.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AAC1D,OAAO,EAAC,cAAc,EAAC,MAAM,+BAA+B,CAAC;AAC7D,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACxC,OAAO,EAAC,QAAQ,EAAC,MAAM,eAAe,CAAC;AACvC,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAEnD,OAAO,EAAC,IAAI,EAAC,MAAM,WAAW,CAAC;AAE/B;;GAEG;AACH,qBAAa,WAAY,YAAW,YAAY;IAMzB,OAAO,CAAC,QAAQ,CAAC,UAAU;IAJ9C;;;OAGG;gBACiC,UAAU,EAAE,UAAU;IAG1D,kBAAkB;IACX,MAAM,CAAC,QAAQ,EAAE,SAAS,EAAE,cAAc,EAAE,cAAc,GAAG,KAAK;IAMzE,kBAAkB;IACX,cAAc,CAAC,WAAW,EAAE,OAAO,EAAE,KAAK,CAAC,EAAE,IAAI,GAAG,QAAQ;CAMtE"}
1
+ {"version":3,"file":"MeshFactory.d.ts","sourceRoot":"","sources":["../../../src/api/meshes/MeshFactory.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,KAAK,EAAC,MAAM,mBAAmB,CAAC;AAC7C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AAC1D,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACxC,OAAO,EAAC,QAAQ,EAAC,MAAM,eAAe,CAAC;AACvC,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAEnD,OAAO,EAAC,IAAI,EAAC,MAAM,WAAW,CAAC;AAC/B,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AAC1D,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAE3D;;GAEG;AACH,qBAAa,WAAY,YAAW,YAAY;IAMzB,OAAO,CAAC,QAAQ,CAAC,UAAU;IAJ9C;;;OAGG;gBACiC,UAAU,EAAE,UAAU;IAG1D,kBAAkB;IACX,MAAM,CAAC,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,QAAQ,EAAE,SAAS,GAAG,KAAK;IAM5E,kBAAkB;IACX,mBAAmB,CAAC,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAE,iBAAiB,EAAE,GAAG,KAAK;IAiBpG,kBAAkB;IACX,cAAc,CAAC,YAAY,EAAE,OAAO,EAAE,MAAM,CAAC,EAAE,IAAI,GAAG,QAAQ;CAUxE"}
@@ -2,6 +2,8 @@ import { Mesh } from "./Mesh.js";
2
2
  import { Rect } from "../data/Rect.js";
3
3
  import type { IFramework } from "../IFramework.js";
4
4
  import { vec2 } from "gl-matrix";
5
+ import type { IMaterial } from "../material/IMaterial.js";
6
+ import type { Scene } from "../scene/Scene.js";
5
7
  /**
6
8
  * The mesh of a quad.
7
9
  */
@@ -13,10 +15,12 @@ export declare class QuadMesh extends Mesh {
13
15
  /**
14
16
  * The constructor.
15
17
  * @param framework The framework.
18
+ * @param scene The scene the quad adds itself to.
19
+ * @param material The material.
16
20
  * @param _isUpdatable Makes mesh updatable.
17
21
  * @param scale The scale factor for geometry. If not set, it is set to (1,1).
18
22
  */
19
- constructor(framework: IFramework, _isUpdatable: boolean, scale?: vec2);
23
+ constructor(framework: IFramework, scene: Scene, material: IMaterial, _isUpdatable: boolean, scale?: vec2);
20
24
  /** @inheritDoc*/
21
25
  initialize(): void;
22
26
  /** @inheritDoc*/
@@ -1 +1 @@
1
- {"version":3,"file":"QuadMesh.d.ts","sourceRoot":"","sources":["../../../src/api/meshes/QuadMesh.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,IAAI,EAAC,MAAM,WAAW,CAAC;AAC/B,OAAO,EAAC,IAAI,EAAC,MAAM,iBAAiB,CAAC;AACrC,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,EAAC,IAAI,EAAC,MAAM,WAAW,CAAC;AAG/B;;GAEG;AACH,qBAAa,QAAS,SAAQ,IAAI;IAYY,OAAO,CAAC,YAAY;IAV9D,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAK;IACxC,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAK;IACrC,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAK;IAErC;;;;;OAKG;gBACgB,SAAS,EAAE,UAAU,EAAU,YAAY,EAAE,OAAO,EAAE,KAAK,CAAC,EAAE,IAAI;IA4CrF,iBAAiB;IACV,UAAU,IAAI,IAAI;IAKzB,iBAAiB;IACV,YAAY,IAAI,IAAI;IAS3B;;;;;;OAMG;IACI,mBAAmB,CAAC,WAAW,EAAE,IAAI,GAAG,IAAI;CAetD"}
1
+ {"version":3,"file":"QuadMesh.d.ts","sourceRoot":"","sources":["../../../src/api/meshes/QuadMesh.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,IAAI,EAAC,MAAM,WAAW,CAAC;AAC/B,OAAO,EAAC,IAAI,EAAC,MAAM,iBAAiB,CAAC;AACrC,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,EAAC,IAAI,EAAC,MAAM,WAAW,CAAC;AAE/B,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,0BAA0B,CAAC;AACxD,OAAO,KAAK,EAAC,KAAK,EAAC,MAAM,mBAAmB,CAAC;AAE7C;;GAEG;AACH,qBAAa,QAAS,SAAQ,IAAI;IAc+C,OAAO,CAAC,YAAY;IAZjG,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAK;IACxC,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAK;IACrC,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAK;IAErC;;;;;;;OAOG;gBACgB,SAAS,EAAE,UAAU,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAU,YAAY,EAAE,OAAO,EAAE,KAAK,CAAC,EAAE,IAAI;IA4CxH,iBAAiB;IACV,UAAU,IAAI,IAAI;IAKzB,iBAAiB;IACV,YAAY,IAAI,IAAI;IAS3B;;;;;;OAMG;IACI,mBAAmB,CAAC,WAAW,EAAE,IAAI,GAAG,IAAI;CAetD"}
@@ -0,0 +1,47 @@
1
+ import type { mat4, vec3 } from "gl-matrix";
2
+ import type { IMesh } from "./IMesh.js";
3
+ import type { Mesh } from "./Mesh.js";
4
+ import type { IUniformBuffer } from "../rendering/buffers/IUniformBuffer.js";
5
+ import type { IMaterial } from "../material/IMaterial.js";
6
+ import type { IVertexBuffer } from "../rendering/buffers/IVertexBuffer.js";
7
+ import type { IIndexBuffer } from "../rendering/buffers/IIndexBuffer.js";
8
+ /**
9
+ * A part of a mesh drawn with its own material.
10
+ * It shares the parent's vertex and index buffers and draws only its index range.
11
+ */
12
+ export declare class SubMesh implements IMesh {
13
+ readonly parent: Mesh;
14
+ material: IMaterial;
15
+ readonly indexStart: number;
16
+ readonly indexCount: number;
17
+ /**
18
+ * The constructor.
19
+ * @param parent The mesh that owns the buffers.
20
+ * @param material The material of this submesh.
21
+ * @param indexStart The first index of the range.
22
+ * @param indexCount The number of indices in the range.
23
+ */
24
+ constructor(parent: Mesh, material: IMaterial, indexStart: number, indexCount: number);
25
+ /** The parent's vertex buffer. */
26
+ get vertexBuffer(): IVertexBuffer | undefined;
27
+ /** The parent's index buffer. */
28
+ get indexBuffer(): IIndexBuffer | undefined;
29
+ /** The parent's position; setting it sets the parent's. */
30
+ get position(): vec3;
31
+ set position(value: vec3);
32
+ /** The parent's rotation; setting it sets the parent's. */
33
+ get rotation(): vec3;
34
+ set rotation(value: vec3);
35
+ /** The parent's scale; setting it sets the parent's. */
36
+ get scale(): vec3;
37
+ set scale(value: vec3);
38
+ /** The parent's model matrix. */
39
+ get modelMatrix(): mat4;
40
+ /** The parent's model buffer. */
41
+ get modelBuffer(): IUniformBuffer;
42
+ /** Draws this submesh with its material, using the parent's transform (model buffer). */
43
+ render(): void;
44
+ /** Does nothing: the buffers belong to the parent and the material to the caller. */
45
+ dispose(): void;
46
+ }
47
+ //# sourceMappingURL=SubMesh.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SubMesh.d.ts","sourceRoot":"","sources":["../../../src/api/meshes/SubMesh.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAC5C,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACxC,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACtC,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,wCAAwC,CAAC;AAC7E,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AAC1D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,uCAAuC,CAAC;AAC3E,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,sCAAsC,CAAC;AAEzE;;;GAGG;AACH,qBAAa,OAAQ,YAAW,KAAK;aAUb,MAAM,EAAE,IAAI;IACrB,QAAQ,EAAE,SAAS;aACV,UAAU,EAAE,MAAM;aAClB,UAAU,EAAE,MAAM;IAXtC;;;;;;OAMG;gBAEiB,MAAM,EAAE,IAAI,EACrB,QAAQ,EAAE,SAAS,EACV,UAAU,EAAE,MAAM,EAClB,UAAU,EAAE,MAAM;IAGtC,kCAAkC;IAClC,IAAW,YAAY,IAAI,aAAa,GAAG,SAAS,CAEnD;IAED,iCAAiC;IACjC,IAAW,WAAW,IAAI,YAAY,GAAG,SAAS,CAEjD;IAED,2DAA2D;IAC3D,IAAW,QAAQ,IAAI,IAAI,CAAiC;IAC5D,IAAW,QAAQ,CAAC,KAAK,EAAE,IAAI,EAAmC;IAElE,2DAA2D;IAC3D,IAAW,QAAQ,IAAI,IAAI,CAAiC;IAC5D,IAAW,QAAQ,CAAC,KAAK,EAAE,IAAI,EAAmC;IAElE,wDAAwD;IACxD,IAAW,KAAK,IAAI,IAAI,CAA8B;IACtD,IAAW,KAAK,CAAC,KAAK,EAAE,IAAI,EAAgC;IAE5D,iCAAiC;IACjC,IAAW,WAAW,IAAI,IAAI,CAE7B;IAED,iCAAiC;IACjC,IAAW,WAAW,IAAI,cAAc,CAEvC;IAED,yFAAyF;IAClF,MAAM,IAAI,IAAI;IAMrB,qFAAqF;IAC9E,OAAO,IAAI,IAAI;CAEzB"}
@@ -1,6 +1,7 @@
1
1
  export * from "./IMeshFactory.js";
2
2
  export * from "./IMesh.js";
3
3
  export * from "./Mesh.js";
4
+ export * from "./SubMesh.js";
4
5
  export * from "./QuadMesh.js";
5
6
  export * from "./MeshParameters.js";
6
7
  export * from "./MeshFactory.js";
@@ -1 +1 @@
1
- {"version":3,"file":"_export.d.ts","sourceRoot":"","sources":["../../../src/api/meshes/_export.ts"],"names":[],"mappings":"AAAA,cAAc,mBAAmB,CAAC;AAClC,cAAc,YAAY,CAAA;AAC1B,cAAc,WAAW,CAAA;AACzB,cAAc,eAAe,CAAC;AAC9B,cAAc,qBAAqB,CAAA;AACnC,cAAc,kBAAkB,CAAC"}
1
+ {"version":3,"file":"_export.d.ts","sourceRoot":"","sources":["../../../src/api/meshes/_export.ts"],"names":[],"mappings":"AAAA,cAAc,mBAAmB,CAAC;AAClC,cAAc,YAAY,CAAA;AAC1B,cAAc,WAAW,CAAA;AACzB,cAAc,cAAc,CAAA;AAC5B,cAAc,eAAe,CAAC;AAC9B,cAAc,qBAAqB,CAAA;AACnC,cAAc,kBAAkB,CAAC"}
@@ -0,0 +1,56 @@
1
+ import type { ITexture2D } from "../texture/ITexture2D.js";
2
+ import type { ISampler } from "../sampler/ISampler.js";
3
+ import type { IRenderPipeline } from "./IRenderPipeline.js";
4
+ import type { IUniformBuffer } from "../buffers/IUniformBuffer.js";
5
+ /**
6
+ * The Blinn-Phong render pipeline with forward lighting.
7
+ */
8
+ export interface IForwardBlinnPhongRenderPipeline extends IRenderPipeline {
9
+ /**
10
+ * The diffuse texture.
11
+ */
12
+ diffuseTexture: ITexture2D;
13
+ /**
14
+ * The texture sampler.
15
+ */
16
+ diffuseTextureSampler?: ISampler;
17
+ /**
18
+ * The projection view uniform buffer.
19
+ * Contains a single matrix representing the projection view matrix.
20
+ */
21
+ projectionViewBuffer: IUniformBuffer;
22
+ /**
23
+ * The world matrix uniform buffer.
24
+ * Contains a single matrix representing the world matrix.
25
+ */
26
+ modelBuffer: IUniformBuffer;
27
+ /**
28
+ * The material buffer that contains the material properties.
29
+ * - vec3 ambientColor
30
+ * - vec3 diffuseColor
31
+ * - vec3 specularColor
32
+ * - float shininess
33
+ */
34
+ materialBuffer: IUniformBuffer;
35
+ /** The camera position buffer: std140 `vec3` world-space eye, e.g. `camera.positionBuffer`. */
36
+ cameraPositionBuffer: IUniformBuffer;
37
+ /**
38
+ * The lights buffer, `LightsBuffer.buffer`, bound to the shader's `LightsBuffer` block.
39
+ * - vec3 ambientLight
40
+ * - DirectionalLight[DIRECTIONAL_LIGHTS_COUNT] { vec3 light; vec3 direction; }
41
+ * - PointLight[POINT_LIGHTS_COUNT] { vec3 light; float constant; vec3 position; float linear; float quadratic; }
42
+ */
43
+ lightsBuffer: IUniformBuffer;
44
+ /** The directional light slots the shader was compiled with. */
45
+ readonly maxDirectionalLights: number;
46
+ /** The point light slots the shader was compiled with. */
47
+ readonly maxPointLights: number;
48
+ /**
49
+ * Sets the light slot counts. They must match the lights buffer (`LightsBuffer.maxDirectionalLights`/`maxPointLights`).
50
+ * When they change after initialization the shader variant for the new counts is loaded.
51
+ * @param maxDirectionalLights The directional light slots.
52
+ * @param maxPointLights The point light slots.
53
+ */
54
+ setLightCounts(maxDirectionalLights: number, maxPointLights: number): void;
55
+ }
56
+ //# sourceMappingURL=IForwardBlinnPhongRenderPipeline.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"IForwardBlinnPhongRenderPipeline.d.ts","sourceRoot":"","sources":["../../../../src/api/rendering/render-pipelines/IForwardBlinnPhongRenderPipeline.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AAC3D,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AACvD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAC5D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAEnE;;GAEG;AACH,MAAM,WAAW,gCAAiC,SAAQ,eAAe;IAErE;;OAEG;IACH,cAAc,EAAE,UAAU,CAAC;IAE3B;;OAEG;IACH,qBAAqB,CAAC,EAAE,QAAQ,CAAC;IAEjC;;;OAGG;IACH,oBAAoB,EAAE,cAAc,CAAC;IAErC;;;OAGG;IACH,WAAW,EAAE,cAAc,CAAC;IAE5B;;;;;;OAMG;IACH,cAAc,EAAE,cAAc,CAAC;IAE/B,+FAA+F;IAC/F,oBAAoB,EAAE,cAAc,CAAC;IAErC;;;;;OAKG;IACH,YAAY,EAAE,cAAc,CAAC;IAE7B,gEAAgE;IAChE,QAAQ,CAAC,oBAAoB,EAAE,MAAM,CAAC;IAEtC,0DAA0D;IAC1D,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAEhC;;;;;OAKG;IACH,cAAc,CAAC,oBAAoB,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;CAC9E"}
@@ -4,6 +4,7 @@ import type { IPrimitiveState } from "../primitive/IPrimitiveState.js";
4
4
  import type { IVertexBufferLayout } from "../buffers/IVertexBufferLayout.js";
5
5
  import type { IIndexBuffer } from "../buffers/IIndexBuffer.js";
6
6
  import type { IVertexBuffer } from "../buffers/IVertexBuffer.js";
7
+ import type { GeometryFormat } from "../../geometry/GeometryFormat.js";
7
8
  /**
8
9
  * The render pipeline interface.
9
10
  * Render pipelines are responsible for defining the rendering process, including the shaders,
@@ -22,6 +23,8 @@ export interface IRenderPipeline extends IDisposable {
22
23
  * The vertex buffer layout of the render pipeline.
23
24
  */
24
25
  readonly vertexBufferLayouts: IVertexBufferLayout[];
26
+ /** The geometry format required by the render pipeline. */
27
+ readonly geometryFormat: GeometryFormat;
25
28
  /**
26
29
  * Initializes the render pipeline.
27
30
  * This method is called by the renderer when the pipeline is added to the renderer.
@@ -1 +1 @@
1
- {"version":3,"file":"IRenderPipeline.d.ts","sourceRoot":"","sources":["../../../../src/api/rendering/render-pipelines/IRenderPipeline.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AAC9D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AAC7D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAC;AACvE,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,mCAAmC,CAAC;AAC7E,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC/D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAEjE;;;;GAIG;AACH,MAAM,WAAW,eAAgB,SAAQ,WAAW;IAEhD;;OAEG;IACH,QAAQ,CAAC,UAAU,EAAE,WAAW,CAAC;IAEjC;;OAEG;IACH,QAAQ,CAAC,cAAc,EAAE,eAAe,CAAC;IAEzC;;OAEG;IACH,QAAQ,CAAC,mBAAmB,EAAE,mBAAmB,EAAE,CAAC;IAEpD;;;OAGG;IACH,UAAU,IAAI,IAAI,CAAC;IAEnB;;;;;;OAMG;IACH,MAAM,CAAC,YAAY,EAAE,aAAa,EAAE,WAAW,EAAE,YAAY,EACtD,YAAY,CAAC,EAAE,MAAM,EAAE,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAG/D"}
1
+ {"version":3,"file":"IRenderPipeline.d.ts","sourceRoot":"","sources":["../../../../src/api/rendering/render-pipelines/IRenderPipeline.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AAC9D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AAC7D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAC;AACvE,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,mCAAmC,CAAC;AAC7E,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC/D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AACjE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kCAAkC,CAAC;AAEvE;;;;GAIG;AACH,MAAM,WAAW,eAAgB,SAAQ,WAAW;IAEhD;;OAEG;IACH,QAAQ,CAAC,UAAU,EAAE,WAAW,CAAC;IAEjC;;OAEG;IACH,QAAQ,CAAC,cAAc,EAAE,eAAe,CAAC;IAEzC;;OAEG;IACH,QAAQ,CAAC,mBAAmB,EAAE,mBAAmB,EAAE,CAAC;IAEpD,2DAA2D;IAC3D,QAAQ,CAAC,cAAc,EAAE,cAAc,CAAC;IAExC;;;OAGG;IACH,UAAU,IAAI,IAAI,CAAC;IAEnB;;;;;;OAMG;IACH,MAAM,CAAC,YAAY,EAAE,aAAa,EAAE,WAAW,EAAE,YAAY,EACtD,YAAY,CAAC,EAAE,MAAM,EAAE,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAG/D"}
@@ -5,6 +5,29 @@ import type { ISpriteRenderPipeline } from "./ISpriteRenderPipeline.js";
5
5
  import type { IInspectTextureMipsRenderPipeline } from "./IInspectTextureMipsRenderPipeline.js";
6
6
  import type { IUnlitRenderPipeline } from "./IUnlitRenderPipeline.js";
7
7
  import type { IPrimitiveState } from "../primitive/IPrimitiveState.js";
8
+ import type { IForwardBlinnPhongRenderPipeline } from "./IForwardBlinnPhongRenderPipeline.js";
9
+ /** The descriptor for the forward Blinn-Phong render pipeline. */
10
+ export interface ForwardBlinnPhongRenderPipelineDescriptor {
11
+ /** The projection view buffer, e.g. `camera.projectionViewBuffer`. */
12
+ projectionViewBuffer: IUniformBuffer;
13
+ /** The world buffer. */
14
+ modelBuffer: IUniformBuffer;
15
+ /** The camera position buffer, e.g. `camera.positionBuffer`: std140 `vec3` world-space eye. */
16
+ cameraPositionBuffer: IUniformBuffer;
17
+ /** The material buffer (ambient and diffuse color). */
18
+ materialBuffer: IUniformBuffer;
19
+ /**
20
+ * The lights buffer, e.g. `lightsBuffer.buffer`.
21
+ * Optional: it can be set later through `pipeline.lightsBuffer`.
22
+ */
23
+ lightsBuffer?: IUniformBuffer;
24
+ /** Directional light slots to compile the shader with; must match the lights buffer. Defaults to `DEFAULT_DIRECTIONAL_LIGHTS_COUNT`. */
25
+ maxDirectionalLights?: number;
26
+ /** Point light slots to compile the shader with; must match the lights buffer. Defaults to `DEFAULT_POINT_LIGHTS_COUNT`. */
27
+ maxPointLights?: number;
28
+ /** The primitive state. */
29
+ primitiveState?: IPrimitiveState;
30
+ }
8
31
  /**
9
32
  * The pipeline factory.
10
33
  */
@@ -38,5 +61,11 @@ export interface IRenderPipelineFactory {
38
61
  * @returns The unlit render pipeline.
39
62
  */
40
63
  createUnlitRenderPipeline(projectionViewBuffer: IUniformBuffer, modelBuffer: IUniformBuffer, materialBuffer: IUniformBuffer, primitiveState?: IPrimitiveState): IUnlitRenderPipeline;
64
+ /**
65
+ * Creates the forward Blinn-Phong render pipeline.
66
+ * @param descriptor - The buffers and primitive state for the pipeline.
67
+ * @returns The forward Blinn-Phong render pipeline.
68
+ */
69
+ createForwardBlinnPhongRenderPipeline(descriptor: ForwardBlinnPhongRenderPipelineDescriptor): IForwardBlinnPhongRenderPipeline;
41
70
  }
42
71
  //# sourceMappingURL=IRenderPipelineFactory.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"IRenderPipelineFactory.d.ts","sourceRoot":"","sources":["../../../../src/api/rendering/render-pipelines/IRenderPipelineFactory.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AAC3D,OAAO,KAAK,EAAE,+BAA+B,EAAE,MAAM,sCAAsC,CAAC;AAC5F,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AACnE,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AACxE,OAAO,KAAK,EAAE,iCAAiC,EAAE,MAAM,wCAAwC,CAAC;AAChG,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AACtE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAC;AAEvE;;GAEG;AACH,MAAM,WAAW,sBAAsB;IAEnC;;;;OAIG;IACH,6BAA6B,CAAC,eAAe,EAAE,UAAU,GAAG,+BAA+B,CAAC;IAE5F;;;;OAIG;IACH,0BAA0B,CAAC,oBAAoB,EAAE,cAAc,GAAG,qBAAqB,CAAC;IAExF;;;;;;OAMG;IACH,sCAAsC,CAAC,oBAAoB,EAAE,cAAc,EAAE,WAAW,EAAE,cAAc,EAAE,sBAAsB,EAAE,cAAc,GAAG,iCAAiC,CAAC;IAGrL;;;;;;;OAOG;IACH,yBAAyB,CAAC,oBAAoB,EAAE,cAAc,EACpC,WAAW,EAAE,cAAc,EAC3B,cAAc,EAAE,cAAc,EAC9B,cAAc,CAAC,EAAE,eAAe,GAC7B,oBAAoB,CAAC;CAErD"}
1
+ {"version":3,"file":"IRenderPipelineFactory.d.ts","sourceRoot":"","sources":["../../../../src/api/rendering/render-pipelines/IRenderPipelineFactory.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AAC3D,OAAO,KAAK,EAAE,+BAA+B,EAAE,MAAM,sCAAsC,CAAC;AAC5F,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AACnE,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AACxE,OAAO,KAAK,EAAE,iCAAiC,EAAE,MAAM,wCAAwC,CAAC;AAChG,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AACtE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAC;AACvE,OAAO,KAAK,EAAE,gCAAgC,EAAE,MAAM,uCAAuC,CAAC;AAE9F,kEAAkE;AAClE,MAAM,WAAW,yCAAyC;IAEtD,sEAAsE;IACtE,oBAAoB,EAAE,cAAc,CAAC;IAErC,wBAAwB;IACxB,WAAW,EAAE,cAAc,CAAC;IAE5B,+FAA+F;IAC/F,oBAAoB,EAAE,cAAc,CAAC;IAErC,uDAAuD;IACvD,cAAc,EAAE,cAAc,CAAC;IAE/B;;;OAGG;IACH,YAAY,CAAC,EAAE,cAAc,CAAC;IAE9B,wIAAwI;IACxI,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAE9B,4HAA4H;IAC5H,cAAc,CAAC,EAAE,MAAM,CAAC;IAExB,2BAA2B;IAC3B,cAAc,CAAC,EAAE,eAAe,CAAC;CACpC;AAED;;GAEG;AACH,MAAM,WAAW,sBAAsB;IAEnC;;;;OAIG;IACH,6BAA6B,CAAC,eAAe,EAAE,UAAU,GAAG,+BAA+B,CAAC;IAE5F;;;;OAIG;IACH,0BAA0B,CAAC,oBAAoB,EAAE,cAAc,GAAG,qBAAqB,CAAC;IAExF;;;;;;OAMG;IACH,sCAAsC,CAAC,oBAAoB,EAAE,cAAc,EAAE,WAAW,EAAE,cAAc,EAAE,sBAAsB,EAAE,cAAc,GAAG,iCAAiC,CAAC;IAGrL;;;;;;;OAOG;IACH,yBAAyB,CAAC,oBAAoB,EAAE,cAAc,EACpC,WAAW,EAAE,cAAc,EAC3B,cAAc,EAAE,cAAc,EAC9B,cAAc,CAAC,EAAE,eAAe,GAC7B,oBAAoB,CAAC;IAElD;;;;OAIG;IACH,qCAAqC,CAAC,UAAU,EAAE,yCAAyC,GAAG,gCAAgC,CAAC;CAElI"}
@@ -4,4 +4,5 @@ export * from "./IRenderPipelineFactory.js";
4
4
  export * from "./IRenderPipeline.js";
5
5
  export * from "./IInspectTextureMipsRenderPipeline.js";
6
6
  export * from "./IUnlitRenderPipeline.js";
7
+ export * from "./IForwardBlinnPhongRenderPipeline.js";
7
8
  //# sourceMappingURL=_export-render-pipelines.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"_export-render-pipelines.d.ts","sourceRoot":"","sources":["../../../../src/api/rendering/render-pipelines/_export-render-pipelines.ts"],"names":[],"mappings":"AAAA,cAAc,4BAA4B,CAAC;AAC3C,cAAc,sCAAsC,CAAC;AACrD,cAAc,6BAA6B,CAAC;AAC5C,cAAc,sBAAsB,CAAC;AACrC,cAAc,wCAAwC,CAAA;AACtD,cAAc,2BAA2B,CAAA"}
1
+ {"version":3,"file":"_export-render-pipelines.d.ts","sourceRoot":"","sources":["../../../../src/api/rendering/render-pipelines/_export-render-pipelines.ts"],"names":[],"mappings":"AAAA,cAAc,4BAA4B,CAAC;AAC3C,cAAc,sCAAsC,CAAC;AACrD,cAAc,6BAA6B,CAAC;AAC5C,cAAc,sBAAsB,CAAC;AACrC,cAAc,wCAAwC,CAAA;AACtD,cAAc,2BAA2B,CAAA;AACzC,cAAc,uCAAuC,CAAA"}
@@ -0,0 +1,104 @@
1
+ import { AmbientLight } from "../lights/AmbientLight.js";
2
+ import { DirectionalLight } from "../lights/DirectionalLight.js";
3
+ import { PointLight } from "../lights/PointLight.js";
4
+ import type { IDisposable } from "../core/IDisposable.js";
5
+ import type { LightsBuffer } from "../lights/LightsBuffer.js";
6
+ import type { IFramework } from "../IFramework.js";
7
+ import type { IMesh } from "../meshes/IMesh.js";
8
+ import type { GameTime } from "../time/GameTime.js";
9
+ import type { ICamera } from "../camera/ICamera.js";
10
+ /** Anything a scene can hold: a mesh, a light (ambient, directional, point) or a camera. */
11
+ export type SceneItem = IMesh | AmbientLight | DirectionalLight | PointLight | ICamera;
12
+ /**
13
+ * The scene. Meshes, lights and cameras given a scene in their constructor add themselves through {@link add};
14
+ * meshes remove themselves when disposed. Call {@link update} once per frame and {@link render} in the render listener.
15
+ */
16
+ export declare class Scene implements IDisposable {
17
+ private readonly _meshes;
18
+ private _activeAmbientLight;
19
+ private _disposed;
20
+ private _activeCamera?;
21
+ /**
22
+ * The camera the scene renders with; undefined until one is set or added.
23
+ * Setting it assigns it to the materials of every mesh (and submesh) whose camera differs;
24
+ * {@link update} also assigns it to meshes and submeshes added later.
25
+ */
26
+ get camera(): ICamera | undefined;
27
+ set camera(value: ICamera | undefined);
28
+ /** The ambient lights registered with this scene. */
29
+ readonly ambientLights: AmbientLight[];
30
+ /**
31
+ * The constructor.
32
+ * @param framework The framework.
33
+ */
34
+ constructor(framework: IFramework);
35
+ /**
36
+ * The lights buffer used for forward shading.
37
+ * @internal
38
+ */
39
+ __forwardLightsBuffer: LightsBuffer;
40
+ /** The meshes in this scene, in the order they were added. */
41
+ get meshes(): readonly IMesh[];
42
+ /** The directional lights in this scene. */
43
+ get directionalLights(): readonly DirectionalLight[];
44
+ /** The point lights in this scene. */
45
+ get pointLights(): readonly PointLight[];
46
+ /**
47
+ * Gets the active ambient light.
48
+ */
49
+ get activeAmbientLight(): AmbientLight;
50
+ /** Sets the active ambient light; it is added to {@link ambientLights} if needed. */
51
+ set activeAmbientLight(value: AmbientLight);
52
+ /**
53
+ * Adds a mesh, a light or a camera. Adding an item that is already in the scene does nothing.
54
+ * - Mesh: drawn by {@link render}; gets the scene camera.
55
+ * - Ambient light: added to {@link ambientLights} (use {@link activeAmbientLight} to make it the lit one).
56
+ * - Directional / point light: added to the lights buffer.
57
+ * - Camera: becomes the scene {@link camera}.
58
+ * Constructors given a scene (meshes, lights, the perspective camera) call this themselves.
59
+ * @param item The item to add.
60
+ * @throws Error when all slots for a light kind are in use (3 directional, 5 point), or for an unsupported item.
61
+ */
62
+ add(item: SceneItem): void;
63
+ /**
64
+ * Removes a mesh, a light or a camera. The mesh is not disposed.
65
+ * Removing the active camera clears {@link camera}.
66
+ * @param item The item to remove.
67
+ * @returns True when the item was in the scene (for a camera: was the active camera).
68
+ * @throws Error when removing the active ambient light (set another {@link activeAmbientLight} first), or for an unsupported item.
69
+ */
70
+ remove(item: SceneItem): boolean;
71
+ /**
72
+ * Adds a directional or point light.
73
+ * @deprecated Use {@link add}.
74
+ * @throws Error when all slots for that kind are in use (3 directional, 5 point).
75
+ */
76
+ addLight(light: DirectionalLight | PointLight): void;
77
+ /**
78
+ * Removes a directional or point light.
79
+ * @deprecated Use {@link remove}.
80
+ * @returns True when the light was in the scene.
81
+ */
82
+ removeLight(light: DirectionalLight | PointLight): boolean;
83
+ private _addAmbientLight;
84
+ private static _removeFrom;
85
+ /** Cameras have the camera buffers and updateBuffers(); meshes and lights do not. */
86
+ private static _isCamera;
87
+ /** Meshes have render() and a material slot or submeshes. */
88
+ private static _isMesh;
89
+ /**
90
+ * Updates the scene: assigns {@link camera} to the mesh materials that don't have it yet, and uploads changed lights.
91
+ * @param _time The game time.
92
+ * @public
93
+ */
94
+ update(_time: GameTime): void;
95
+ private static _assignCameraToMesh;
96
+ private static _assignCamera;
97
+ /**
98
+ * Renders the meshes.
99
+ */
100
+ render(): void;
101
+ /** Disposes the meshes still in the scene and the lights buffer. Calling it twice does nothing. */
102
+ dispose(): void;
103
+ }
104
+ //# sourceMappingURL=Scene.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Scene.d.ts","sourceRoot":"","sources":["../../../src/api/scene/Scene.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,YAAY,EAAC,MAAM,2BAA2B,CAAC;AACvD,OAAO,EAAC,gBAAgB,EAAC,MAAM,+BAA+B,CAAC;AAC/D,OAAO,EAAC,UAAU,EAAC,MAAM,yBAAyB,CAAC;AACnD,OAAO,KAAK,EAAC,WAAW,EAAC,MAAM,wBAAwB,CAAC;AACxD,OAAO,KAAK,EAAC,YAAY,EAAC,MAAM,2BAA2B,CAAC;AAC5D,OAAO,KAAK,EAAC,UAAU,EAAC,MAAM,kBAAkB,CAAC;AACjD,OAAO,KAAK,EAAC,KAAK,EAAC,MAAM,oBAAoB,CAAC;AAC9C,OAAO,KAAK,EAAC,QAAQ,EAAC,MAAM,qBAAqB,CAAC;AAClD,OAAO,KAAK,EAAC,OAAO,EAAC,MAAM,sBAAsB,CAAC;AAGlD,4FAA4F;AAC5F,MAAM,MAAM,SAAS,GAAG,KAAK,GAAG,YAAY,GAAG,gBAAgB,GAAG,UAAU,GAAG,OAAO,CAAC;AAEvF;;;GAGG;AACH,qBAAa,KAAM,YAAW,WAAW;IAErC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAe;IACvC,OAAO,CAAC,mBAAmB,CAAe;IAC1C,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,aAAa,CAAC,CAAU;IAEhC;;;;OAIG;IACH,IAAW,MAAM,IAAI,OAAO,GAAG,SAAS,CAEvC;IAED,IAAW,MAAM,CAAC,KAAK,EAAE,OAAO,GAAG,SAAS,EAQ3C;IAED,qDAAqD;IACrD,SAAgB,aAAa,EAAE,YAAY,EAAE,CAAM;IAEnD;;;OAGG;gBACgB,SAAS,EAAE,UAAU;IAaxC;;;OAGG;IACH,qBAAqB,EAAE,YAAY,CAAC;IAEpC,8DAA8D;IAC9D,IAAW,MAAM,IAAI,SAAS,KAAK,EAAE,CAEpC;IAED,4CAA4C;IAC5C,IAAW,iBAAiB,IAAI,SAAS,gBAAgB,EAAE,CAE1D;IAED,sCAAsC;IACtC,IAAW,WAAW,IAAI,SAAS,UAAU,EAAE,CAE9C;IAED;;OAEG;IACH,IAAW,kBAAkB,IAAI,YAAY,CAE5C;IAED,qFAAqF;IACrF,IAAW,kBAAkB,CAAC,KAAK,EAAE,YAAY,EAIhD;IAED;;;;;;;;;OASG;IACI,GAAG,CAAC,IAAI,EAAE,SAAS,GAAG,IAAI;IAmBjC;;;;;;OAMG;IACI,MAAM,CAAC,IAAI,EAAE,SAAS,GAAG,OAAO;IAuBvC;;;;OAIG;IACI,QAAQ,CAAC,KAAK,EAAE,gBAAgB,GAAG,UAAU,GAAG,IAAI;IAI3D;;;;OAIG;IACI,WAAW,CAAC,KAAK,EAAE,gBAAgB,GAAG,UAAU,GAAG,OAAO;IAIjE,OAAO,CAAC,gBAAgB;IAMxB,OAAO,CAAC,MAAM,CAAC,WAAW;IAS1B,qFAAqF;IACrF,OAAO,CAAC,MAAM,CAAC,SAAS;IAMxB,6DAA6D;IAC7D,OAAO,CAAC,MAAM,CAAC,OAAO;IAMtB;;;;OAIG;IACH,MAAM,CAAC,KAAK,EAAE,QAAQ,GAAG,IAAI;IAU7B,OAAO,CAAC,MAAM,CAAC,mBAAmB;IAOlC,OAAO,CAAC,MAAM,CAAC,aAAa;IAY5B;;OAEG;IACH,MAAM,IAAI,IAAI;IAQd,mGAAmG;IAC5F,OAAO,IAAI,IAAI;CAYzB"}
@@ -6,8 +6,11 @@ export interface IShaderModuleLoader {
6
6
  /**
7
7
  * Loads a shader module.
8
8
  * @param shaderModuleId - The shader module id.
9
+ * @param keyValueDictionary - If present, tries to find key in shader such that it replaced ##DIRECTIONAL_LIGHT_COUNT## by given value for key DIRECTIONAL_LIGHST_COUNT.
9
10
  * @returns The shader module.
10
11
  */
11
- load(shaderModuleId: string): IShaderModule;
12
+ load(shaderModuleId: string, keyValueDictionary?: {
13
+ [id: string]: number;
14
+ }): IShaderModule;
12
15
  }
13
16
  //# sourceMappingURL=IShaderModuleLoader.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"IShaderModuleLoader.d.ts","sourceRoot":"","sources":["../../../src/api/shader/IShaderModuleLoader.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAExD;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAEpC;;;;OAIG;IACD,IAAI,CAAC,cAAc,EAAE,MAAM,GAAG,aAAa,CAAC;CAE7C"}
1
+ {"version":3,"file":"IShaderModuleLoader.d.ts","sourceRoot":"","sources":["../../../src/api/shader/IShaderModuleLoader.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAExD;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAEpC;;;;;OAKG;IACD,IAAI,CAAC,cAAc,EAAE,MAAM,EAAE,kBAAkB,CAAC,EAAE;QAAC,CAAC,EAAE,EAAC,MAAM,GAAG,MAAM,CAAA;KAAC,GAAG,aAAa,CAAC;CAEzF"}
@@ -9,4 +9,4 @@ export declare class ShaderLoader {
9
9
  */
10
10
  load(shaderFilePath: string, renderingBackend: RenderingBackend, stages: ShaderStage[]): Promise<string>;
11
11
  }
12
- //# sourceMappingURL=shader-loader.d.ts.map
12
+ //# sourceMappingURL=ShaderLoader.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ShaderLoader.d.ts","sourceRoot":"","sources":["../../../src/api/shader/ShaderLoader.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,gBAAgB,EAAE,KAAK,WAAW,EAAC,MAAM,aAAa,CAAC;AAE/D,qBAAa,YAAY;IAErB;;;;;;OAMG;IACU,IAAI,CAAC,cAAc,EAAE,MAAM,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,EAAE,WAAW,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC;CAexH"}
@@ -9,7 +9,7 @@ export declare class SpriteBatchDrawable implements IDisposable {
9
9
  private readonly _sampler;
10
10
  private _maxBatchSize;
11
11
  private _drawingMesh;
12
- private _renderPipeline;
12
+ private _material;
13
13
  private _needsResize;
14
14
  private _fromInstance;
15
15
  private _toInstance;
@@ -1 +1 @@
1
- {"version":3,"file":"SpriteBatchDrawable.d.ts","sourceRoot":"","sources":["../../../src/api/sprites/SpriteBatchDrawable.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACR,UAAU,EAEV,UAAU,EACV,cAAc,EACd,KAAK,EACL,WAAW,EAAE,QAAQ,EACxB,MAAM,aAAa,CAAC;AAErB,OAAO,KAAK,EAAC,IAAI,EAAE,IAAI,EAAC,MAAM,WAAW,CAAC;AAE1C;;GAEG;AACH,qBAAa,mBAAoB,YAAW,WAAW;IAEnD,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAa;IACxC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAa;IACtC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAW;IACpC,OAAO,CAAC,aAAa,CAAS;IAC9B,OAAO,CAAC,YAAY,CAA0B;IAC9C,OAAO,CAAC,eAAe,CAAgC;IAEvD,OAAO,CAAC,YAAY,CAAS;IAE7B,OAAO,CAAC,aAAa,CAAK;IAC1B,OAAO,CAAC,WAAW,CAAK;IAExB;;;;;;;OAOG;gBAEC,SAAS,EAAE,UAAU,EACrB,OAAO,EAAE,UAAU,EACnB,OAAO,EAAE,QAAQ,EACjB,oBAAoB,EAAE,cAAc,EACpC,YAAY,EAAE,MAAM;IAQxB;;OAEG;IACH,SAAgB,oBAAoB,EAAE,cAAc,CAAC;IAErD,8BAA8B;IACvB,UAAU,IAAI,IAAI;IAWzB;;OAEG;IACI,KAAK,IAAI,IAAI;IAMpB;;;;;;;;;;;OAWG;IACI,WAAW,CACd,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EACxC,EAAE,SAAI,EAAE,EAAE,SAAI,EAAE,EAAE,SAAI,EAAE,EAAE,SAAI,EAC9B,KAAK,UAAQ,GACd,IAAI;IAaP,qBAAqB;IACd,IAAI,IAAI,IAAI;IAuBnB;;OAEG;IACI,QAAQ,IAAI,IAAI;IASvB,kBAAkB;IACX,OAAO,IAAI,IAAI;CAIzB"}
1
+ {"version":3,"file":"SpriteBatchDrawable.d.ts","sourceRoot":"","sources":["../../../src/api/sprites/SpriteBatchDrawable.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACR,UAAU,EACV,UAAU,EACV,cAAc,EACd,KAAK,EACL,WAAW,EAAE,QAAQ,EACxB,MAAM,aAAa,CAAC;AAGrB,OAAO,KAAK,EAAC,IAAI,EAAE,IAAI,EAAC,MAAM,WAAW,CAAC;AAE1C;;GAEG;AACH,qBAAa,mBAAoB,YAAW,WAAW;IAEnD,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAa;IACxC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAa;IACtC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAW;IACpC,OAAO,CAAC,aAAa,CAAS;IAC9B,OAAO,CAAC,YAAY,CAA0B;IAC9C,OAAO,CAAC,SAAS,CAAyB;IAE1C,OAAO,CAAC,YAAY,CAAS;IAE7B,OAAO,CAAC,aAAa,CAAK;IAC1B,OAAO,CAAC,WAAW,CAAK;IAExB;;;;;;;OAOG;gBAEC,SAAS,EAAE,UAAU,EACrB,OAAO,EAAE,UAAU,EACnB,OAAO,EAAE,QAAQ,EACjB,oBAAoB,EAAE,cAAc,EACpC,YAAY,EAAE,MAAM;IAQxB;;OAEG;IACH,SAAgB,oBAAoB,EAAE,cAAc,CAAC;IAErD,8BAA8B;IACvB,UAAU,IAAI,IAAI;IAWzB;;OAEG;IACI,KAAK,IAAI,IAAI;IAMpB;;;;;;;;;;;OAWG;IACI,WAAW,CACd,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EACxC,EAAE,SAAI,EAAE,EAAE,SAAI,EAAE,EAAE,SAAI,EAAE,EAAE,SAAI,EAC9B,KAAK,UAAQ,GACd,IAAI;IAaP,qBAAqB;IACd,IAAI,IAAI,IAAI;IAmBnB;;OAEG;IACI,QAAQ,IAAI,IAAI;IASvB,kBAAkB;IACX,OAAO,IAAI,IAAI;CAIzB"}
@@ -1,5 +1,6 @@
1
1
  import type { vec2, vec3 } from "gl-matrix";
2
2
  import { type Color, type IFramework, Mesh } from "../index.js";
3
+ import type { SpriteMaterial } from "../material/SpriteMaterial.js";
3
4
  /**
4
5
  * The sprite batch mesh.
5
6
  */
@@ -11,13 +12,25 @@ export declare class SpriteBatchMesh extends Mesh {
11
12
  static readonly TOTAL_FLOATS_PER_VERTEX = 9;
12
13
  /** The total number of floats in a sprite. 4 for each vertex * 9 floats per vertex (xyz rgba uv). */
13
14
  static readonly TOTAL_FLOATS_IN_SPRITE: number;
15
+ private readonly _spriteMaterial;
14
16
  private _maxInstances;
15
17
  private _lastIndex;
18
+ /** The offset of the first index to draw. Defaults to 0. */
19
+ indicesOffset: number;
20
+ /** The number of indices to draw. If -1 draws all indices. */
21
+ indicesCount: number;
16
22
  /**
17
23
  * The constructor for the batch sprite mesh.
24
+ * @param framework - The framework.
25
+ * @param material - The material.
26
+ * @param numberOfInstances - The number of instances.
18
27
  */
19
- constructor(framework: IFramework, numberOfInstances: number);
28
+ constructor(framework: IFramework, material: SpriteMaterial, numberOfInstances: number);
20
29
  private _setupIndices;
30
+ /**
31
+ * Draws the mesh with its sprite material, using {@link indicesCount} and {@link indicesOffset}.
32
+ */
33
+ draw(): void;
21
34
  /** The maximum number of instances that can be batched. */
22
35
  get maxInstances(): number;
23
36
  /** @inheritDoc */
@@ -1 +1 @@
1
- {"version":3,"file":"SpriteBatchMesh.d.ts","sourceRoot":"","sources":["../../../src/api/sprites/SpriteBatchMesh.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,IAAI,EAAE,IAAI,EAAC,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAc,KAAK,KAAK,EAAE,KAAK,UAAU,EAAE,IAAI,EAAC,MAAM,aAAa,CAAC;AAE3E;;GAEG;AACH,qBAAa,eAAgB,SAAQ,IAAI;IAErC;;;OAGG;IACH,MAAM,CAAC,QAAQ,CAAC,uBAAuB,KAAK;IAE5C,qGAAqG;IACrG,MAAM,CAAC,QAAQ,CAAC,sBAAsB,SAAoC;IAE1E,OAAO,CAAC,aAAa,CAAK;IAC1B,OAAO,CAAC,UAAU,CAAM;IAExB;;OAEG;gBACgB,SAAS,EAAE,UAAU,EAAE,iBAAiB,EAAE,MAAM;IASnE,OAAO,CAAC,aAAa;IAkBrB,2DAA2D;IAC3D,IAAW,YAAY,WAEtB;IAED,kBAAkB;IACF,UAAU,IAAI,IAAI;IAalC,wEAAwE;IACjE,MAAM,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IA8BpC,kBAAkB;IACX,WAAW,CACd,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EACxC,EAAE,SAAI,EAAE,EAAE,SAAI,EAAE,EAAE,SAAI,EAAE,EAAE,SAAI,EAAE,KAAK,UAAQ;IAgIjD,kBAAkB;IACF,YAAY,IAAI,IAAI;CAavC"}
1
+ {"version":3,"file":"SpriteBatchMesh.d.ts","sourceRoot":"","sources":["../../../src/api/sprites/SpriteBatchMesh.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,IAAI,EAAE,IAAI,EAAC,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAc,KAAK,KAAK,EAAE,KAAK,UAAU,EAAE,IAAI,EAAC,MAAM,aAAa,CAAC;AAC3E,OAAO,KAAK,EAAC,cAAc,EAAC,MAAM,+BAA+B,CAAC;AAElE;;GAEG;AACH,qBAAa,eAAgB,SAAQ,IAAI;IAErC;;;OAGG;IACH,MAAM,CAAC,QAAQ,CAAC,uBAAuB,KAAK;IAE5C,qGAAqG;IACrG,MAAM,CAAC,QAAQ,CAAC,sBAAsB,SAAoC;IAE1E,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAiB;IACjD,OAAO,CAAC,aAAa,CAAK;IAC1B,OAAO,CAAC,UAAU,CAAM;IAExB,4DAA4D;IACrD,aAAa,SAAK;IAEzB,8DAA8D;IACvD,YAAY,SAAM;IAEzB;;;;;OAKG;gBACgB,SAAS,EAAE,UAAU,EAAE,QAAQ,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM;IAW7F,OAAO,CAAC,aAAa;IAkBrB;;OAEG;IACI,IAAI,IAAI,IAAI;IAInB,2DAA2D;IAC3D,IAAW,YAAY,WAEtB;IAED,kBAAkB;IACF,UAAU,IAAI,IAAI;IAalC,wEAAwE;IACjE,MAAM,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IA8BpC,kBAAkB;IACX,WAAW,CACd,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EACxC,EAAE,SAAI,EAAE,EAAE,SAAI,EAAE,EAAE,SAAI,EAAE,EAAE,SAAI,EAAE,KAAK,UAAQ;IAgIjD,kBAAkB;IACF,YAAY,IAAI,IAAI;CAYvC"}
@@ -1 +1 @@
1
- {"version":3,"file":"GeometryUtilities.d.ts","sourceRoot":"","sources":["../../../src/api/utilities/GeometryUtilities.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,cAAc,EAAC,MAAM,+BAA+B,CAAC;AAE7D;;GAEG;AACH,qBAAa,iBAAiB;IAC1B;;;;OAIG;WACW,MAAM,CAAC,cAAc,EAAE,cAAc,GAAG,MAAM;CAQ/D"}
1
+ {"version":3,"file":"GeometryUtilities.d.ts","sourceRoot":"","sources":["../../../src/api/utilities/GeometryUtilities.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,cAAc,EAAC,MAAM,+BAA+B,CAAC;AAE7D;;GAEG;AACH,qBAAa,iBAAiB;IAC1B;;;;OAIG;WACW,MAAM,CAAC,cAAc,EAAE,cAAc,GAAG,MAAM;CAU/D"}