ris-framework 0.1.0 → 0.2.0-dev.12

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 (383) hide show
  1. package/CHANGELOG.md +42 -1
  2. package/README.md +27 -4
  3. package/dist/Framework.d.ts +34 -10
  4. package/dist/Framework.d.ts.map +1 -1
  5. package/dist/api/IFramework.d.ts +50 -6
  6. package/dist/api/IFramework.d.ts.map +1 -1
  7. package/dist/api/_export.d.ts +3 -1
  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 +15 -2
  20. package/dist/api/content/ContentManager.d.ts.map +1 -1
  21. package/dist/api/content/IContentManager.d.ts +35 -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 +77 -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/ObjLoader.d.ts +61 -0
  53. package/dist/api/loaders/ObjLoader.d.ts.map +1 -0
  54. package/dist/api/loaders/_export.d.ts +2 -0
  55. package/dist/api/loaders/_export.d.ts.map +1 -1
  56. package/dist/api/loaders/obj/ObjParser.d.ts +44 -0
  57. package/dist/api/loaders/obj/ObjParser.d.ts.map +1 -0
  58. package/dist/api/loaders/obj/ObjTypes.d.ts +119 -0
  59. package/dist/api/loaders/obj/ObjTypes.d.ts.map +1 -0
  60. package/dist/api/loaders/obj/index.d.ts +3 -0
  61. package/dist/api/loaders/obj/index.d.ts.map +1 -0
  62. package/dist/api/material/ForwardBlinnPhongMaterial.d.ts +138 -0
  63. package/dist/api/material/ForwardBlinnPhongMaterial.d.ts.map +1 -0
  64. package/dist/api/material/ICameraMaterial.d.ts +18 -0
  65. package/dist/api/material/ICameraMaterial.d.ts.map +1 -0
  66. package/dist/api/material/ILightsMaterial.d.ts +26 -0
  67. package/dist/api/material/ILightsMaterial.d.ts.map +1 -0
  68. package/dist/api/material/IMaterial.d.ts +13 -10
  69. package/dist/api/material/IMaterial.d.ts.map +1 -1
  70. package/dist/api/material/IMaterialFactory.d.ts +17 -2
  71. package/dist/api/material/IMaterialFactory.d.ts.map +1 -1
  72. package/dist/api/material/InspectTextureMipsMaterial.d.ts +18 -9
  73. package/dist/api/material/InspectTextureMipsMaterial.d.ts.map +1 -1
  74. package/dist/api/material/MaterialFactory.d.ts +6 -0
  75. package/dist/api/material/MaterialFactory.d.ts.map +1 -1
  76. package/dist/api/material/SpriteMaterial.d.ts +51 -0
  77. package/dist/api/material/SpriteMaterial.d.ts.map +1 -0
  78. package/dist/api/material/UnlitMaterial.d.ts +32 -13
  79. package/dist/api/material/UnlitMaterial.d.ts.map +1 -1
  80. package/dist/api/material/_export.d.ts +4 -0
  81. package/dist/api/material/_export.d.ts.map +1 -1
  82. package/dist/api/meshes/IMesh.d.ts +31 -6
  83. package/dist/api/meshes/IMesh.d.ts.map +1 -1
  84. package/dist/api/meshes/IMeshFactory.d.ts +30 -4
  85. package/dist/api/meshes/IMeshFactory.d.ts.map +1 -1
  86. package/dist/api/meshes/IRenderableMesh.d.ts +47 -0
  87. package/dist/api/meshes/IRenderableMesh.d.ts.map +1 -0
  88. package/dist/api/meshes/Mesh.d.ts +14 -8
  89. package/dist/api/meshes/Mesh.d.ts.map +1 -1
  90. package/dist/api/meshes/MeshFactory.d.ts +10 -3
  91. package/dist/api/meshes/MeshFactory.d.ts.map +1 -1
  92. package/dist/api/meshes/QuadMesh.d.ts +5 -3
  93. package/dist/api/meshes/QuadMesh.d.ts.map +1 -1
  94. package/dist/api/meshes/RenderableMesh.d.ts +95 -0
  95. package/dist/api/meshes/RenderableMesh.d.ts.map +1 -0
  96. package/dist/api/meshes/_export.d.ts +2 -0
  97. package/dist/api/meshes/_export.d.ts.map +1 -1
  98. package/dist/api/rendering/IGraphicsDeviceFeatures.d.ts +8 -2
  99. package/dist/api/rendering/IGraphicsDeviceFeatures.d.ts.map +1 -1
  100. package/dist/api/rendering/IRenderer.d.ts +28 -1
  101. package/dist/api/rendering/IRenderer.d.ts.map +1 -1
  102. package/dist/api/rendering/enums.d.ts +7 -0
  103. package/dist/api/rendering/enums.d.ts.map +1 -1
  104. package/dist/api/rendering/render-pipelines/IForwardBlinnPhongRenderPipeline.d.ts +56 -0
  105. package/dist/api/rendering/render-pipelines/IForwardBlinnPhongRenderPipeline.d.ts.map +1 -0
  106. package/dist/api/rendering/render-pipelines/IRenderPipeline.d.ts +3 -0
  107. package/dist/api/rendering/render-pipelines/IRenderPipeline.d.ts.map +1 -1
  108. package/dist/api/rendering/render-pipelines/IRenderPipelineFactory.d.ts +29 -0
  109. package/dist/api/rendering/render-pipelines/IRenderPipelineFactory.d.ts.map +1 -1
  110. package/dist/api/rendering/render-pipelines/_export-render-pipelines.d.ts +1 -0
  111. package/dist/api/rendering/render-pipelines/_export-render-pipelines.d.ts.map +1 -1
  112. package/dist/api/rendering/renderer-interface.d.ts +1 -31
  113. package/dist/api/rendering/renderer-interface.d.ts.map +1 -1
  114. package/dist/api/rendering/renderpass/RenderPassDescriptor.d.ts +2 -6
  115. package/dist/api/rendering/renderpass/RenderPassDescriptor.d.ts.map +1 -1
  116. package/dist/api/rendering/swapchain/ISwapChain.d.ts +1 -3
  117. package/dist/api/rendering/swapchain/ISwapChain.d.ts.map +1 -1
  118. package/dist/api/rendering/texture/TextureFormat.d.ts +88 -14
  119. package/dist/api/rendering/texture/TextureFormat.d.ts.map +1 -1
  120. package/dist/api/rendering/texture/TextureUtilities.d.ts +23 -0
  121. package/dist/api/rendering/texture/TextureUtilities.d.ts.map +1 -1
  122. package/dist/api/scene/Scene.d.ts +113 -0
  123. package/dist/api/scene/Scene.d.ts.map +1 -0
  124. package/dist/api/scene/SceneMesh.d.ts +27 -0
  125. package/dist/api/scene/SceneMesh.d.ts.map +1 -0
  126. package/dist/api/shader/IShaderModuleLoader.d.ts +4 -1
  127. package/dist/api/shader/IShaderModuleLoader.d.ts.map +1 -1
  128. package/dist/api/shader/{shader-loader.d.ts → ShaderLoader.d.ts} +1 -1
  129. package/dist/api/shader/ShaderLoader.d.ts.map +1 -0
  130. package/dist/api/sprites/SpriteBatchDrawable.d.ts +1 -1
  131. package/dist/api/sprites/SpriteBatchDrawable.d.ts.map +1 -1
  132. package/dist/api/sprites/SpriteBatchMesh.d.ts +14 -1
  133. package/dist/api/sprites/SpriteBatchMesh.d.ts.map +1 -1
  134. package/dist/api/utilities/AlignUtilities.d.ts.map +1 -1
  135. package/dist/api/utilities/GeometryUtilities.d.ts.map +1 -1
  136. package/dist/api/window/WindowManager.d.ts +4 -0
  137. package/dist/api/window/WindowManager.d.ts.map +1 -1
  138. package/dist/core/rendering/ARenderer.d.ts +5 -5
  139. package/dist/core/rendering/ARenderer.d.ts.map +1 -1
  140. package/dist/core/rendering/vertex-buffer-layout.d.ts +1 -0
  141. package/dist/core/rendering/vertex-buffer-layout.d.ts.map +1 -1
  142. package/dist/index.d.ts +0 -1
  143. package/dist/index.d.ts.map +1 -1
  144. package/dist/index.js +9238 -4595
  145. package/dist/webgl/WebGLGraphicsDeviceFeatures.d.ts +4 -0
  146. package/dist/webgl/WebGLGraphicsDeviceFeatures.d.ts.map +1 -1
  147. package/dist/webgl/WebGlGraphicsDevice.d.ts.map +1 -1
  148. package/dist/webgl/WebGlRenderer.d.ts +1 -3
  149. package/dist/webgl/WebGlRenderer.d.ts.map +1 -1
  150. package/dist/webgl/lights/WebGlAmbientLightFactory.d.ts +17 -0
  151. package/dist/webgl/lights/WebGlAmbientLightFactory.d.ts.map +1 -0
  152. package/dist/webgl/lights/WebGlLightsBuffer.d.ts +59 -0
  153. package/dist/webgl/lights/WebGlLightsBuffer.d.ts.map +1 -0
  154. package/dist/webgl/render-pipelines/AWebGlRenderPipeline.d.ts +3 -1
  155. package/dist/webgl/render-pipelines/AWebGlRenderPipeline.d.ts.map +1 -1
  156. package/dist/webgl/render-pipelines/WebGlMainRenderTargetRenderPipeline.d.ts +5 -0
  157. package/dist/webgl/render-pipelines/WebGlMainRenderTargetRenderPipeline.d.ts.map +1 -1
  158. package/dist/webgl/render-pipelines/WebGlRenderPipelineFactory.d.ts +3 -1
  159. package/dist/webgl/render-pipelines/WebGlRenderPipelineFactory.d.ts.map +1 -1
  160. package/dist/webgl/render-pipelines/inspect/WebGlInspectTextureMipsRenderPipeline.d.ts +3 -1
  161. package/dist/webgl/render-pipelines/inspect/WebGlInspectTextureMipsRenderPipeline.d.ts.map +1 -1
  162. package/dist/webgl/render-pipelines/material/WebGlBlinnPhongRenderPipeline.d.ts +88 -0
  163. package/dist/webgl/render-pipelines/material/WebGlBlinnPhongRenderPipeline.d.ts.map +1 -0
  164. package/dist/webgl/render-pipelines/material/WebGlUnlitRenderPipeline.d.ts +3 -1
  165. package/dist/webgl/render-pipelines/material/WebGlUnlitRenderPipeline.d.ts.map +1 -1
  166. package/dist/webgl/render-pipelines/sprite/WebGlSpriteRenderPipeline.d.ts +3 -1
  167. package/dist/webgl/render-pipelines/sprite/WebGlSpriteRenderPipeline.d.ts.map +1 -1
  168. package/dist/webgl/shader/WebGlShaderModule.d.ts +4 -1
  169. package/dist/webgl/shader/WebGlShaderModule.d.ts.map +1 -1
  170. package/dist/webgl/shader/WebGlShaderModuleLoader.d.ts +16 -5
  171. package/dist/webgl/shader/WebGlShaderModuleLoader.d.ts.map +1 -1
  172. package/dist/webgl/swap-chain/WebGlSwapChain.d.ts +3 -2
  173. package/dist/webgl/swap-chain/WebGlSwapChain.d.ts.map +1 -1
  174. package/dist/webgl/texture/WebGlTexture2D.d.ts +8 -1
  175. package/dist/webgl/texture/WebGlTexture2D.d.ts.map +1 -1
  176. package/dist/webgl/texture/WebGlTextureFactory.d.ts +7 -0
  177. package/dist/webgl/texture/WebGlTextureFactory.d.ts.map +1 -1
  178. package/dist/webgl/utilities/WebGlConstants.d.ts +91 -0
  179. package/dist/webgl/utilities/WebGlConstants.d.ts.map +1 -0
  180. package/dist/webgl/utilities/WebGlConverter.d.ts +0 -7
  181. package/dist/webgl/utilities/WebGlConverter.d.ts.map +1 -1
  182. package/dist/webgl/utilities/WebGlErrorUtilities.d.ts +10 -0
  183. package/dist/webgl/utilities/WebGlErrorUtilities.d.ts.map +1 -0
  184. package/dist/webgl/utilities/WebGlTextureUtilities.d.ts.map +1 -1
  185. package/dist/webgl/utilities/WebGlUtilities.d.ts +3 -0
  186. package/dist/webgl/utilities/WebGlUtilities.d.ts.map +1 -1
  187. package/dist/webgl/utilities/webgl-filter-anisotropic-utilities.d.ts +0 -1
  188. package/dist/webgl/utilities/webgl-filter-anisotropic-utilities.d.ts.map +1 -1
  189. package/dist/webgpu/WebGpuGpuInfo.d.ts +28 -0
  190. package/dist/webgpu/WebGpuGpuInfo.d.ts.map +1 -0
  191. package/dist/webgpu/WebGpuGraphicsDevice.d.ts +80 -0
  192. package/dist/webgpu/WebGpuGraphicsDevice.d.ts.map +1 -0
  193. package/dist/webgpu/WebGpuGraphicsDeviceFeatures.d.ts +26 -0
  194. package/dist/webgpu/WebGpuGraphicsDeviceFeatures.d.ts.map +1 -0
  195. package/dist/webgpu/WebGpuRenderer.d.ts +26 -0
  196. package/dist/webgpu/WebGpuRenderer.d.ts.map +1 -0
  197. package/dist/webgpu/WebGpuTypes.d.ts +355 -0
  198. package/dist/webgpu/WebGpuTypes.d.ts.map +1 -0
  199. package/dist/webgpu/blending/WebGpuBlendState.d.ts +30 -0
  200. package/dist/webgpu/blending/WebGpuBlendState.d.ts.map +1 -0
  201. package/dist/webgpu/buffers/WebGpuBuffersFactory.d.ts +20 -0
  202. package/dist/webgpu/buffers/WebGpuBuffersFactory.d.ts.map +1 -0
  203. package/dist/webgpu/buffers/WebGpuIndexBuffer.d.ts +46 -0
  204. package/dist/webgpu/buffers/WebGpuIndexBuffer.d.ts.map +1 -0
  205. package/dist/webgpu/buffers/WebGpuUniformBuffer.d.ts +43 -0
  206. package/dist/webgpu/buffers/WebGpuUniformBuffer.d.ts.map +1 -0
  207. package/dist/webgpu/buffers/WebGpuVertexBuffer.d.ts +49 -0
  208. package/dist/webgpu/buffers/WebGpuVertexBuffer.d.ts.map +1 -0
  209. package/dist/webgpu/primitive/WebGpuPrimitiveState.d.ts +32 -0
  210. package/dist/webgpu/primitive/WebGpuPrimitiveState.d.ts.map +1 -0
  211. package/dist/webgpu/render-pass/WebGpuRenderPass.d.ts +28 -0
  212. package/dist/webgpu/render-pass/WebGpuRenderPass.d.ts.map +1 -0
  213. package/dist/webgpu/render-pipelines/AWebGpuRenderPipeline.d.ts +50 -0
  214. package/dist/webgpu/render-pipelines/AWebGpuRenderPipeline.d.ts.map +1 -0
  215. package/dist/webgpu/render-pipelines/WebGpuMainRenderTargetRenderPipeline.d.ts +34 -0
  216. package/dist/webgpu/render-pipelines/WebGpuMainRenderTargetRenderPipeline.d.ts.map +1 -0
  217. package/dist/webgpu/render-pipelines/WebGpuRenderPipelineFactory.d.ts +26 -0
  218. package/dist/webgpu/render-pipelines/WebGpuRenderPipelineFactory.d.ts.map +1 -0
  219. package/dist/webgpu/render-pipelines/material/AWebGpuMeshRenderPipeline.d.ts +72 -0
  220. package/dist/webgpu/render-pipelines/material/AWebGpuMeshRenderPipeline.d.ts.map +1 -0
  221. package/dist/webgpu/render-pipelines/material/WebGpuUnlitRenderPipeline.d.ts +40 -0
  222. package/dist/webgpu/render-pipelines/material/WebGpuUnlitRenderPipeline.d.ts.map +1 -0
  223. package/dist/webgpu/sampler/WebGpuSampler.d.ts +39 -0
  224. package/dist/webgpu/sampler/WebGpuSampler.d.ts.map +1 -0
  225. package/dist/webgpu/shader/WebGpuShaderModule.d.ts +29 -0
  226. package/dist/webgpu/shader/WebGpuShaderModule.d.ts.map +1 -0
  227. package/dist/webgpu/shader/WebGpuShaderModuleLoader.d.ts +21 -0
  228. package/dist/webgpu/shader/WebGpuShaderModuleLoader.d.ts.map +1 -0
  229. package/dist/webgpu/shader/WgslShaderContent.d.ts +9 -0
  230. package/dist/webgpu/shader/WgslShaderContent.d.ts.map +1 -0
  231. package/dist/webgpu/swap-chain/WebGpuSwapChain.d.ts +41 -0
  232. package/dist/webgpu/swap-chain/WebGpuSwapChain.d.ts.map +1 -0
  233. package/dist/webgpu/texture/WebGpuTexture2D.d.ts +47 -0
  234. package/dist/webgpu/texture/WebGpuTexture2D.d.ts.map +1 -0
  235. package/dist/webgpu/texture/WebGpuTextureFactory.d.ts +21 -0
  236. package/dist/webgpu/texture/WebGpuTextureFactory.d.ts.map +1 -0
  237. package/dist/webgpu/texture/WebGpuTextureView.d.ts +25 -0
  238. package/dist/webgpu/texture/WebGpuTextureView.d.ts.map +1 -0
  239. package/dist/webgpu/utilities/WebGpuConverter.d.ts +45 -0
  240. package/dist/webgpu/utilities/WebGpuConverter.d.ts.map +1 -0
  241. package/package.json +4 -4
  242. package/shaders/glsl/forward_blinn_phong_material_fs.glsl +110 -0
  243. package/shaders/glsl/forward_blinn_phong_material_vs.glsl +32 -0
  244. package/shaders/glsl/main_render_target_flip_y_fs.glsl +35 -1
  245. package/shaders/glsl/sprite_fs.glsl +1 -1
  246. package/shaders/glsl/unlit_material_fs.glsl +1 -1
  247. package/shaders/wgsl/forward_blinn_phong_material.wgsl +150 -0
  248. package/shaders/wgsl/inspect_texture_mips.wgsl +51 -0
  249. package/shaders/wgsl/main_frame_buffer.wgsl +35 -0
  250. package/shaders/wgsl/main_render_target_flip_y.wgsl +35 -0
  251. package/shaders/wgsl/sprite.wgsl +40 -0
  252. package/shaders/wgsl/unlit_material.wgsl +49 -0
  253. package/src/Framework.ts +156 -48
  254. package/src/api/IFramework.ts +63 -6
  255. package/src/api/_export.ts +3 -1
  256. package/src/api/camera/CameraFactory.ts +6 -6
  257. package/src/api/camera/ICamera.ts +6 -0
  258. package/src/api/camera/ICameraFactory.ts +5 -10
  259. package/src/api/camera/OrthographicCamera.ts +23 -1
  260. package/src/api/camera/PerspectiveCamera.ts +60 -15
  261. package/src/api/content/ContentManager.ts +78 -16
  262. package/src/api/content/IContentManager.ts +37 -1
  263. package/src/api/content/ShaderModuleContent.ts +9 -0
  264. package/src/api/data/Color.ts +7 -1
  265. package/src/api/geometry/BaseGeometry.ts +23 -0
  266. package/src/api/geometry/GeometryBuilder.ts +14 -2
  267. package/src/api/geometry/IGeometryBuilder.ts +31 -1
  268. package/src/api/geometry/_export-geometry.ts +2 -1
  269. package/src/api/input/InputManager.ts +14 -5
  270. package/src/api/lights/AmbientLight.ts +53 -0
  271. package/src/api/lights/DirectionalLight.ts +60 -0
  272. package/src/api/lights/LightFactory.ts +21 -0
  273. package/src/api/lights/LightId.ts +9 -0
  274. package/src/api/lights/LightsBuffer.ts +94 -0
  275. package/src/api/lights/PointLight.ts +91 -0
  276. package/src/api/lights/_export.ts +5 -0
  277. package/src/api/loaders/ObjGeometryMapper.ts +28 -0
  278. package/src/api/loaders/ObjLoader.ts +126 -0
  279. package/src/api/loaders/_export.ts +3 -1
  280. package/src/api/loaders/obj/ObjParser.ts +301 -0
  281. package/src/api/loaders/obj/ObjTypes.ts +142 -0
  282. package/src/api/loaders/obj/index.ts +5 -0
  283. package/src/api/material/ForwardBlinnPhongMaterial.ts +328 -0
  284. package/src/api/material/ICameraMaterial.ts +22 -0
  285. package/src/api/material/ILightsMaterial.ts +32 -0
  286. package/src/api/material/IMaterial.ts +13 -10
  287. package/src/api/material/IMaterialFactory.ts +19 -2
  288. package/src/api/material/InspectTextureMipsMaterial.ts +65 -26
  289. package/src/api/material/MaterialFactory.ts +12 -0
  290. package/src/api/material/SpriteMaterial.ts +83 -0
  291. package/src/api/material/UnlitMaterial.ts +105 -32
  292. package/src/api/material/_export.ts +5 -1
  293. package/src/api/meshes/IMesh.ts +40 -6
  294. package/src/api/meshes/IMeshFactory.ts +33 -4
  295. package/src/api/meshes/IRenderableMesh.ts +58 -0
  296. package/src/api/meshes/Mesh.ts +50 -43
  297. package/src/api/meshes/MeshFactory.ts +37 -4
  298. package/src/api/meshes/QuadMesh.ts +6 -4
  299. package/src/api/meshes/RenderableMesh.ts +207 -0
  300. package/src/api/meshes/_export.ts +6 -4
  301. package/src/api/rendering/IGraphicsDeviceFeatures.ts +28 -21
  302. package/src/api/rendering/IRenderer.ts +34 -1
  303. package/src/api/rendering/enums.ts +10 -0
  304. package/src/api/rendering/render-pipelines/IForwardBlinnPhongRenderPipeline.ts +66 -0
  305. package/src/api/rendering/render-pipelines/IRenderPipeline.ts +4 -0
  306. package/src/api/rendering/render-pipelines/IRenderPipelineFactory.ts +39 -0
  307. package/src/api/rendering/render-pipelines/_export-render-pipelines.ts +2 -1
  308. package/src/api/rendering/renderer-interface.ts +1 -36
  309. package/src/api/rendering/renderpass/RenderPassDescriptor.ts +10 -14
  310. package/src/api/rendering/swapchain/ISwapChain.ts +1 -3
  311. package/src/api/rendering/texture/TextureFormat.ts +128 -14
  312. package/src/api/rendering/texture/TextureUtilities.ts +225 -10
  313. package/src/api/scene/Scene.ts +297 -0
  314. package/src/api/scene/SceneMesh.ts +61 -0
  315. package/src/api/shader/IShaderModuleLoader.ts +2 -1
  316. package/src/api/sprites/SpriteBatchDrawable.ts +12 -16
  317. package/src/api/sprites/SpriteBatchMesh.ts +22 -3
  318. package/src/api/utilities/AlignUtilities.ts +2 -1
  319. package/src/api/utilities/GeometryUtilities.ts +2 -0
  320. package/src/api/window/WindowManager.ts +23 -3
  321. package/src/core/rendering/ARenderer.ts +24 -15
  322. package/src/core/rendering/vertex-buffer-layout.ts +32 -1
  323. package/src/index.ts +0 -1
  324. package/src/main.ts +2 -4
  325. package/src/webgl/WebGLGraphicsDeviceFeatures.ts +12 -2
  326. package/src/webgl/WebGlGpuInfo.ts +1 -1
  327. package/src/webgl/WebGlGraphicsDevice.ts +0 -1
  328. package/src/webgl/WebGlRenderer.ts +2 -5
  329. package/src/webgl/lights/WebGlAmbientLightFactory.ts +35 -0
  330. package/src/webgl/lights/WebGlLightsBuffer.ts +225 -0
  331. package/src/webgl/render-pipelines/AWebGlRenderPipeline.ts +7 -1
  332. package/src/webgl/render-pipelines/WebGlMainRenderTargetRenderPipeline.ts +21 -1
  333. package/src/webgl/render-pipelines/WebGlRenderPipelineFactory.ts +24 -2
  334. package/src/webgl/render-pipelines/inspect/WebGlInspectTextureMipsRenderPipeline.ts +16 -6
  335. package/src/webgl/render-pipelines/material/WebGlBlinnPhongRenderPipeline.ts +300 -0
  336. package/src/webgl/render-pipelines/material/WebGlUnlitRenderPipeline.ts +16 -6
  337. package/src/webgl/render-pipelines/sprite/WebGlSpriteRenderPipeline.ts +11 -7
  338. package/src/webgl/shader/WebGlShaderModule.ts +11 -4
  339. package/src/webgl/shader/WebGlShaderModuleLoader.ts +29 -10
  340. package/src/webgl/swap-chain/WebGlSwapChain.ts +7 -6
  341. package/src/webgl/texture/WebGlTexture2D.ts +19 -5
  342. package/src/webgl/texture/WebGlTextureFactory.ts +49 -7
  343. package/src/webgl/utilities/WebGlConstants.ts +136 -0
  344. package/src/webgl/utilities/WebGlConverter.ts +91 -22
  345. package/src/webgl/utilities/WebGlErrorUtilities.ts +15 -0
  346. package/src/webgl/utilities/WebGlTextureUtilities.ts +5 -2
  347. package/src/webgl/utilities/WebGlUtilities.ts +4 -0
  348. package/src/webgl/utilities/webgl-filter-anisotropic-utilities.ts +9 -6
  349. package/src/webgpu/WebGpuGpuInfo.ts +61 -0
  350. package/src/webgpu/WebGpuGraphicsDevice.ts +199 -0
  351. package/src/webgpu/WebGpuGraphicsDeviceFeatures.ts +41 -0
  352. package/src/webgpu/WebGpuRenderer.ts +49 -0
  353. package/src/webgpu/WebGpuTypes.ts +288 -0
  354. package/src/webgpu/blending/WebGpuBlendState.ts +53 -0
  355. package/src/webgpu/buffers/WebGpuBuffersFactory.ts +46 -0
  356. package/src/webgpu/buffers/WebGpuIndexBuffer.ts +118 -0
  357. package/src/webgpu/buffers/WebGpuUniformBuffer.ts +102 -0
  358. package/src/webgpu/buffers/WebGpuVertexBuffer.ts +119 -0
  359. package/src/webgpu/primitive/WebGpuPrimitiveState.ts +52 -0
  360. package/src/webgpu/render-pass/WebGpuRenderPass.ts +131 -0
  361. package/src/webgpu/render-pipelines/AWebGpuRenderPipeline.ts +123 -0
  362. package/src/webgpu/render-pipelines/WebGpuMainRenderTargetRenderPipeline.ts +119 -0
  363. package/src/webgpu/render-pipelines/WebGpuRenderPipelineFactory.ts +66 -0
  364. package/src/webgpu/render-pipelines/material/AWebGpuMeshRenderPipeline.ts +249 -0
  365. package/src/webgpu/render-pipelines/material/WebGpuUnlitRenderPipeline.ts +101 -0
  366. package/src/webgpu/sampler/WebGpuSampler.ts +84 -0
  367. package/src/webgpu/shader/WebGpuShaderModule.ts +65 -0
  368. package/src/webgpu/shader/WebGpuShaderModuleLoader.ts +38 -0
  369. package/src/webgpu/shader/WgslShaderContent.ts +20 -0
  370. package/src/webgpu/swap-chain/WebGpuSwapChain.ts +93 -0
  371. package/src/webgpu/texture/WebGpuTexture2D.ts +197 -0
  372. package/src/webgpu/texture/WebGpuTextureFactory.ts +118 -0
  373. package/src/webgpu/texture/WebGpuTextureView.ts +43 -0
  374. package/src/webgpu/utilities/WebGpuConverter.ts +299 -0
  375. package/src/wgsl-raw.d.ts +4 -0
  376. package/dist/api/FrameworkConfiguration.d.ts +0 -23
  377. package/dist/api/FrameworkConfiguration.d.ts.map +0 -1
  378. package/dist/api/IFrameworkConfiguration.d.ts +0 -25
  379. package/dist/api/IFrameworkConfiguration.d.ts.map +0 -1
  380. package/dist/api/shader/shader-loader.d.ts.map +0 -1
  381. package/src/api/FrameworkConfiguration.ts +0 -29
  382. package/src/api/IFrameworkConfiguration.ts +0 -30
  383. /package/src/api/shader/{shader-loader.ts → ShaderLoader.ts} +0 -0
@@ -0,0 +1,21 @@
1
+ import type {AmbientLight, AmbientLightDescriptor} from "./AmbientLight.ts";
2
+ import type {Scene} from "../scene/Scene.ts";
3
+ import type {LightsBuffer, LightsBufferDescriptor} from "./LightsBuffer.ts";
4
+
5
+ /** The light factory */
6
+ export interface AmbientLightFactory {
7
+
8
+ /**
9
+ * Creates the ambient light.
10
+ * @param desc The descriptor for ambient light. The colour defaults to a dim grey; the id is assigned automatically.
11
+ * @param scene The optional scene to register the light with.
12
+ */
13
+ createAmbientLight(desc?: AmbientLightDescriptor, scene?: Scene): AmbientLight;
14
+
15
+ /**
16
+ * Creates a lights buffer, which owns the uniform buffer with all lights for shaders.
17
+ * @param desc The optional descriptor with the initial lights and directional light count.
18
+ */
19
+ __createLightsBuffer(desc?: LightsBufferDescriptor): LightsBuffer;
20
+
21
+ }
@@ -0,0 +1,9 @@
1
+ let nextLightId = 1;
2
+
3
+ /**
4
+ * Returns a new unique light id. Light constructors call this when no id is given.
5
+ * @internal
6
+ */
7
+ export function createLightId(): number {
8
+ return nextLightId++;
9
+ }
@@ -0,0 +1,94 @@
1
+ import type {AmbientLight} from "./AmbientLight.ts";
2
+ import type {DirectionalLight} from "./DirectionalLight.ts";
3
+ import type {PointLight} from "./PointLight.ts";
4
+ import type {IUniformBuffer} from "../rendering/buffers/IUniformBuffer.ts";
5
+ import type {IDisposable} from "../core/IDisposable.ts";
6
+
7
+ /** The number of directional lights the lights buffer and the Blinn-Phong shader hold by default. */
8
+ export const DEFAULT_DIRECTIONAL_LIGHTS_COUNT = 3;
9
+
10
+ /** The number of point lights the lights buffer and the Blinn-Phong shader hold by default. */
11
+ export const DEFAULT_POINT_LIGHTS_COUNT = 3;
12
+
13
+ /** The descriptor for a lights buffer. */
14
+ export interface LightsBufferDescriptor {
15
+
16
+ /** The ambient light. Defaults to a black ambient light. */
17
+ ambientLight?: AmbientLight;
18
+
19
+ /** The initial directional lights. More than {@link maxDirectionalLights} throws. */
20
+ directionalLights?: DirectionalLight[];
21
+
22
+ /**
23
+ * The number of directional light slots. Must match `DIRECTIONAL_LIGHTS_COUNT` in the shader.
24
+ * Defaults to {@link DEFAULT_DIRECTIONAL_LIGHTS_COUNT}.
25
+ */
26
+ maxDirectionalLights?: number;
27
+
28
+ /** The initial point lights. More than {@link maxPointLights} throws. */
29
+ pointLights?: PointLight[];
30
+
31
+ /**
32
+ * The number of point light slots. Must match `POINT_LIGHTS_COUNT` in the shader.
33
+ * Defaults to {@link DEFAULT_POINT_LIGHTS_COUNT}.
34
+ */
35
+ maxPointLights?: number;
36
+ }
37
+
38
+ /**
39
+ * Holds lights and owns the uniform buffer that shaders read them from.
40
+ * Each lit material (`ForwardBlinnPhongMaterial`) owns one.
41
+ *
42
+ *
43
+ * std140 layout of the `LightsBuffer` block:
44
+ * Every light colour is written premultiplied by its intensity, so the layout has no intensity field.
45
+ * - `vec3 u_ambientLight` at offset 0, padded to 16 bytes.
46
+ * - `DirectionalLight u_directionalLight[N]` from offset 16, 32 bytes each:
47
+ * `vec3 light` at +0 and `vec3 direction` at +16.
48
+ * - `PointLight u_pointLight[M]` after the directional lights, 48 bytes each:
49
+ * `vec3 light` at +0, `float constant` at +12, `vec3 position` at +16, `float linear` at +28, `float quadratic` at +32.
50
+ */
51
+ export interface LightsBuffer extends IDisposable {
52
+
53
+ /** The ambient light written to the buffer. */
54
+ ambientLight: AmbientLight;
55
+
56
+ /**
57
+ * The directional lights written to the buffer. Can be replaced by another list, which is then used by reference
58
+ * (a lit material uses the scene's list). Only the first {@link maxDirectionalLights} are written; unused slots are black.
59
+ */
60
+ directionalLights: DirectionalLight[];
61
+
62
+ /** The number of directional light slots in the buffer. */
63
+ readonly maxDirectionalLights: number;
64
+
65
+ /**
66
+ * The point lights written to the buffer. Can be replaced by another list, which is then used by reference.
67
+ * Only the first {@link maxPointLights} are written; unused slots are black.
68
+ */
69
+ pointLights: PointLight[];
70
+
71
+ /** The number of point light slots in the buffer. */
72
+ readonly maxPointLights: number;
73
+
74
+ /**
75
+ * The uniform buffer holding the lights for shaders.
76
+ * NOTE: Intended to be used internally, never set this value manually.
77
+ */
78
+ readonly buffer: IUniformBuffer;
79
+
80
+ /**
81
+ * Adds a directional or point light. Adding a light that is already in the buffer does nothing.
82
+ * @throws Error when all slots for that kind of light are in use.
83
+ */
84
+ add(light: DirectionalLight | PointLight): void;
85
+
86
+ /**
87
+ * Removes a directional or point light.
88
+ * @returns True when the light was in the buffer.
89
+ */
90
+ remove(light: DirectionalLight | PointLight): boolean;
91
+
92
+ /** Writes the lights to {@link buffer} if anything changed since the last update. Call once per frame before rendering. */
93
+ update(): void;
94
+ }
@@ -0,0 +1,91 @@
1
+ import {vec3} from "gl-matrix";
2
+ import {Color} from "../data/Color.ts";
3
+ import {createLightId} from "./LightId.ts";
4
+ import type {Scene} from "../scene/Scene.ts";
5
+
6
+ /** The descriptor for a point light. All fields are optional. */
7
+ export interface PointLightDescriptor {
8
+ /** The unique id. Assigned automatically when omitted. */
9
+ id?: number;
10
+
11
+ /** The optional name for a light. */
12
+ name?: string;
13
+
14
+ /** The light colour. Alpha is ignored. Defaults to white. */
15
+ color?: Color;
16
+
17
+ /** Multiplies the colour. Defaults to 1. */
18
+ intensity?: number;
19
+
20
+ /** World-space position. Defaults to the origin. */
21
+ position?: vec3;
22
+
23
+ /** Constant attenuation term. Defaults to 1. */
24
+ constant?: number;
25
+
26
+ /** Linear attenuation term. Defaults to 0.09 (about 50 units of range). */
27
+ linear?: number;
28
+
29
+ /** Quadratic attenuation term. Defaults to 0.032 (about 50 units of range). */
30
+ quadratic?: number;
31
+ }
32
+
33
+ /**
34
+ * The point light. Plain data: it has no GPU resources.
35
+ * Attenuation is `1 / (constant + linear * d + quadratic * d²)` for distance `d`.
36
+ * @public
37
+ */
38
+ export class PointLight {
39
+
40
+ /** The default constant attenuation. */
41
+ public static readonly DEFAULT_CONSTANT = 1;
42
+
43
+ /** The default linear attenuation. */
44
+ public static readonly DEFAULT_LINEAR = 0.09;
45
+
46
+ /** The default quadratic attenuation. */
47
+ public static readonly DEFAULT_QUADRATIC = 0.032;
48
+
49
+ /**
50
+ * The constructor.
51
+ * @param descriptor The optional descriptor. Colour and position are copied.
52
+ * @param scene The optional scene; the light adds itself via {@link Scene.add}.
53
+ * @throws Error when the scene has no free point light slot left (the light is then not in the scene).
54
+ */
55
+ public constructor(descriptor?: PointLightDescriptor, scene?: Scene) {
56
+ this.id = descriptor?.id ?? createLightId();
57
+ this.name = descriptor?.name;
58
+ this.color = descriptor?.color?.copy() ?? Color.white();
59
+ this.intensity = descriptor?.intensity ?? 1;
60
+ this.position = descriptor?.position ? vec3.clone(descriptor.position) : vec3.create();
61
+ this.constant = descriptor?.constant ?? PointLight.DEFAULT_CONSTANT;
62
+ this.linear = descriptor?.linear ?? PointLight.DEFAULT_LINEAR;
63
+ this.quadratic = descriptor?.quadratic ?? PointLight.DEFAULT_QUADRATIC;
64
+
65
+ scene?.add(this);
66
+ }
67
+
68
+ /** The unique id of this light. */
69
+ public readonly id: number;
70
+
71
+ /** The optional name for a light. */
72
+ public name?: string;
73
+
74
+ /** The light colour. Alpha is ignored. */
75
+ public color: Color;
76
+
77
+ /** Multiplies {@link color} when written to the lights buffer. */
78
+ public intensity: number;
79
+
80
+ /** World-space position of the light. */
81
+ public position: vec3;
82
+
83
+ /** Constant attenuation term. */
84
+ public constant: number;
85
+
86
+ /** Linear attenuation term. */
87
+ public linear: number;
88
+
89
+ /** Quadratic attenuation term. */
90
+ public quadratic: number;
91
+ }
@@ -0,0 +1,5 @@
1
+ export * from "./AmbientLight.ts";
2
+ export * from "./DirectionalLight.ts";
3
+ export * from "./PointLight.ts";
4
+ export * from "./LightsBuffer.ts";
5
+ export * from "./LightFactory.ts";
@@ -0,0 +1,28 @@
1
+ import type {GeometryDescriptor} from "../geometry/IGeometryBuilder.ts";
2
+ import type {ObjGeometryDefinition} from "./obj/index.ts";
3
+
4
+ /**
5
+ * Maps plain OBJ geometry definitions from {@link ObjParser} onto the framework's {@link GeometryDescriptor}.
6
+ * Pass the result to `geometryBuilder.create`.
7
+ * Not part of the public API: `content.loadMeshAsync` and `content.loadBlinnPhongMeshAsync` use it.
8
+ * @internal
9
+ */
10
+ export class ObjGeometryMapper {
11
+
12
+ /**
13
+ * Creates a geometry descriptor from an OBJ geometry definition.
14
+ * @param definition The geometry definition, e.g. `result.geometry` from `ObjParser.loadAsync`.
15
+ * @param useMaterialColors True keeps the loader's per-vertex `Kd` colours; false (the default) uses white,
16
+ * for when each submesh's material carries the colour instead.
17
+ * @returns The descriptor. It references the definition's arrays; `geometryBuilder.create` copies them.
18
+ */
19
+ public static toDescriptor(definition: ObjGeometryDefinition, useMaterialColors = false): GeometryDescriptor {
20
+ return {
21
+ positions: definition.positions,
22
+ indices: definition.indices,
23
+ normals: definition.normals,
24
+ textureCoords: definition.textureCoords,
25
+ colors: useMaterialColors ? definition.colors : undefined,
26
+ };
27
+ }
28
+ }
@@ -0,0 +1,126 @@
1
+ import type {IFramework} from "../IFramework.ts";
2
+ import type {IRenderableMesh} from "../meshes/IRenderableMesh.ts";
3
+ import {RenderableMesh} from "../meshes/RenderableMesh.ts";
4
+ import type {IMaterial} from "../material/IMaterial.ts";
5
+ import {ForwardBlinnPhongMaterialDescriptor} from "../material/ForwardBlinnPhongMaterial.ts";
6
+ import {Color} from "../data/Color.ts";
7
+ import {ObjParser} from "./obj/ObjParser.ts";
8
+ import type {ObjLoadOptions, ObjModel, ObjSubMesh} from "./obj/ObjTypes.ts";
9
+ import {ObjGeometryMapper} from "./ObjGeometryMapper.ts";
10
+
11
+ /** Creates the material for one OBJ sub mesh (`usemtl` range). */
12
+ export type ObjMaterialFactory = (subMesh: ObjSubMesh) => IMaterial;
13
+
14
+ /**
15
+ * Loads OBJ (Wavefront) models into renderable meshes (C# `ObjLoader`). Available as `framework.objLoader`.
16
+ *
17
+ * The returned root mesh has no material and owns the vertex and index buffers; each `usemtl` range is a sub mesh
18
+ * with its own material (ranges with the same material name share one material instance).
19
+ * Vertex colours are white, the materials carry the colour. Parsing is done by the engine-independent {@link ObjParser}.
20
+ * @public
21
+ */
22
+ export class ObjLoader {
23
+
24
+ /** Default specular colour when the .mtl has no `Ks` (0.5 grey). */
25
+ public static readonly DEFAULT_SPECULAR = 0.5;
26
+
27
+ /** Default shininess when the .mtl has no `Ns`. */
28
+ public static readonly DEFAULT_SHININESS = 32;
29
+
30
+ /**
31
+ * The constructor.
32
+ * @param _framework The framework.
33
+ */
34
+ public constructor(private readonly _framework: IFramework) {
35
+ }
36
+
37
+ /**
38
+ * Parses an .obj file (and its .mtl files) into plain data. Creates no GPU resources (C# `ObjLoader.Parse`).
39
+ * @param path The .obj URL.
40
+ * @param options Optional: how to resolve `mtllib` names, or skip materials.
41
+ * @returns The model.
42
+ */
43
+ public static parseAsync(path: string, options?: ObjLoadOptions): Promise<ObjModel> {
44
+ return new ObjParser().parseAsync(path, options);
45
+ }
46
+
47
+ /**
48
+ * Loads an .obj file into a renderable mesh with one Blinn-Phong material per `usemtl` range.
49
+ * The .mtl values map onto `ForwardBlinnPhongMaterial`: `Kd` (with `d` as alpha) → diffuse colour (white when missing),
50
+ * `Ka` → ambient colour (falls back to `Kd`), `Ks` → specular colour (0.5 grey), `Ns` → shininess (32).
51
+ * @param path The .obj URL. A relative `mtllib` is resolved against it.
52
+ * @param descriptor The descriptor every material is created with (camera buffers, primitive state).
53
+ * @param options Optional parser options.
54
+ * @returns The root mesh.
55
+ */
56
+ public loadAsync(path: string, descriptor: ForwardBlinnPhongMaterialDescriptor, options?: ObjLoadOptions): Promise<IRenderableMesh>;
57
+
58
+ /**
59
+ * Loads an .obj file into a renderable mesh, creating each sub mesh's material with a callback.
60
+ * @param path The .obj URL.
61
+ * @param createMaterial Called once per distinct `usemtl` name.
62
+ * @param options Optional parser options.
63
+ * @returns The root mesh.
64
+ */
65
+ public loadAsync(path: string, createMaterial: ObjMaterialFactory, options?: ObjLoadOptions): Promise<IRenderableMesh>;
66
+
67
+ public async loadAsync(path: string,
68
+ materialSource: ForwardBlinnPhongMaterialDescriptor | ObjMaterialFactory,
69
+ options?: ObjLoadOptions): Promise<IRenderableMesh> {
70
+ // Validate before fetching, so a bad descriptor fails fast.
71
+ const createMaterial: ObjMaterialFactory = typeof materialSource === "function"
72
+ ? materialSource
73
+ : this._blinnPhongFactory(materialSource);
74
+ const model = await ObjLoader.parseAsync(path, options);
75
+ return this.createMesh(model, createMaterial);
76
+ }
77
+
78
+ /**
79
+ * Creates a renderable mesh from a parsed model.
80
+ * @param model The model, e.g. from {@link parseAsync}.
81
+ * @param createMaterial Creates the material per distinct `usemtl` name.
82
+ * @returns The root mesh, without a material, with one sub mesh per range.
83
+ */
84
+ public createMesh(model: ObjModel, createMaterial: ObjMaterialFactory): IRenderableMesh {
85
+ if (model.subMeshes.length == 0) {
86
+ throw new Error("ObjLoader: the model has no faces.");
87
+ }
88
+ const materialsByName = new Map<string | undefined, IMaterial>();
89
+ const materials = model.subMeshes.map(subMesh => {
90
+ let material = materialsByName.get(subMesh.materialName);
91
+ if (!material) {
92
+ material = createMaterial(subMesh);
93
+ materialsByName.set(subMesh.materialName, material);
94
+ }
95
+ return material;
96
+ });
97
+ const format = materials[0].geometryFormat;
98
+ if (materials.some(m => m.geometryFormat != format)) {
99
+ throw new Error("ObjLoader: all materials must use the same geometry format, as the sub meshes share one vertex buffer.");
100
+ }
101
+
102
+ const geometry = this._framework.geometryBuilder.create(ObjGeometryMapper.toDescriptor(model.geometry));
103
+ const root = new RenderableMesh(this._framework);
104
+ root.setGeometry(geometry, format);
105
+ model.subMeshes.forEach((subMesh, i) => root.addSubMesh(materials[i], subMesh.indexStart, subMesh.indexCount));
106
+ return root;
107
+ }
108
+
109
+ private _blinnPhongFactory(descriptor: ForwardBlinnPhongMaterialDescriptor): ObjMaterialFactory {
110
+ if (!descriptor?.projectionViewBuffer || !descriptor?.cameraPositionBuffer) {
111
+ throw new Error("ObjLoader.loadAsync: the Blinn-Phong descriptor needs projectionViewBuffer and cameraPositionBuffer (e.g. camera.projectionViewBuffer and camera.positionBuffer).");
112
+ }
113
+ return subMesh => {
114
+ const definition = subMesh.material;
115
+ const material = this._framework.materialFactory.createForwardBlinnPhongMaterial(descriptor);
116
+ const diffuse = definition?.diffuseColor ?? [1, 1, 1];
117
+ const ambient = definition?.ambientColor ?? diffuse;
118
+ const specular = definition?.specularColor ?? [ObjLoader.DEFAULT_SPECULAR, ObjLoader.DEFAULT_SPECULAR, ObjLoader.DEFAULT_SPECULAR];
119
+ material.diffuseColor = new Color(diffuse[0], diffuse[1], diffuse[2], definition?.opacity ?? 1);
120
+ material.ambientColor = new Color(ambient[0], ambient[1], ambient[2]);
121
+ material.specularColor = new Color(specular[0], specular[1], specular[2]);
122
+ material.shininess = definition?.specularExponent ?? ObjLoader.DEFAULT_SHININESS;
123
+ return material;
124
+ };
125
+ }
126
+ }
@@ -1,2 +1,4 @@
1
1
  export * from "./IImageLoader.ts"
2
- export * from "./ImageLoader.ts"
2
+ export * from "./ImageLoader.ts"
3
+ export * from "./obj/index.ts"
4
+ export * from "./ObjLoader.ts"