New Features
- WebGPU Compute shader support by @mvaligursky in #6258, #6226, #6268, #6186 and #6201
- Khronos PBR Neutral tone mapper for e-commerce by @mvaligursky in #6271 and #6272
- Add convex hull support to CollisionComponent by @willeastcott in #6267
- Support for KHR_materials_dispersion glTF extension by @mvaligursky in #6151
- Support for sharpening inside the compose render pass, needed for TAA by @mvaligursky in #6144
- Support for dithering using interleaved gradient noise by @mvaligursky in #6166
- Tri class to core engine by @kpal81xd in #6203
- Mesh can be created and used without vertex attributes by @mvaligursky in #6232
Other changes
- Refactored VertexBuffer constructor to hide more params into options by @mvaligursky in #6240
- LightComponent properties port to get/set by @kpal81xd in #6114
- Migrate input unit tests from Karma to Node by @willeastcott in #6133
- Remove JSDoc by @willeastcott in #6132
- Refactor input-related code by @willeastcott in #6134
- Removed class replacement typefix by @kpal81xd in #6140
- Component properties port to get/set by @kpal81xd in #6145
- Add extras.mjs to exported files by @marklundin in #6153
- Add publint by @marklundin in #6154
- Appbase Callbacks JSDoc by @kpal81xd in #6149
- WIP - dither transparency with TAA by @mvaligursky in #6159
- Typedoc hide exported classes by @kpal81xd in #6161
- ParticleSystemComponent properties port to get/set by @kpal81xd in #6141
- Hide data getter overrides in LightComponent and ParticleSystemComponent by @kpal81xd in #6162
- ButtonComponent properties port to get/set by @kpal81xd in #6163
- CollisionComponent properties port to get/set by @kpal81xd in #6164
- Removes vertex-format type fix by @kpal81xd in #6124
- Small refactor in preparation of context lost handling for WebGPU by @mvaligursky in #6170
- ElementComponent properties port to get/set by @kpal81xd in #6169
- removed excess tsignores by @kpal81xd in #6173
- Update package-lock.json by @willeastcott in #6174
- Tidy up Karma tests by @willeastcott in #6175
- Remove @Augments JSDoc tag by @willeastcott in #6176
- Use @ignore over @hideconstructor by @willeastcott in #6177
- Misc type fixes by @willeastcott in #6178
- Improve typing for Anim APIs by @willeastcott in #6179
- Improve docs for Entity#destroy by @willeastcott in #6180
- ScrollViewComponent & ScrollbarComponent properties port to get/set by @kpal81xd in #6182
- More docs and types improvements by @willeastcott in #6185
- Remove json model mesh splitting to work around uniform limits by @mvaligursky in #6188
- Dispatch multiple compute shaders in a single compute pass by @mvaligursky in #6187
- Update mesh.js by @IRobot1 in #6194
- Upgrade Chai to 5.x by @willeastcott in #6197
- Regenerate package-lock.json by @willeastcott in #6198
- Simplify jsdocs types for the Mesh and VertexIterators API by @mvaligursky in #6202
- Use indexed rendering for gplats by @mvaligursky in #6204
- Removed VoxParser by @kpal81xd in #6207
- Update createTree to use correct parameters by @benbean303 in #6211
- GSplat rendering no longer uses instancing by @mvaligursky in #6213
- Compute shader bind group can specify textures without samplers by @mvaligursky in #6216
- Simplified BindGroup constructor by @mvaligursky in #6221
- Renamed BindBufferFormat to BindUniformBufferFormat by @mvaligursky in #6222
- Engine build rework by @kpal81xd in #6219
- Sourcemap revert to inline by @kpal81xd in #6227
- ESM attributes rename by @marklundin in #6229
- Build wrapper by @kpal81xd in #6239
- Add CORS header by @marklundin in #6243
- ESM Attributes check by @marklundin in #6245
- The Preprocessor class now handles includes by @mvaligursky in #6242
- ESM Scripts lower camel case by @marklundin in #6251
- Basic shader generation refactoring by @mvaligursky in #6250
- Add Script alias by @marklundin in #6237
- Updated handling of defines specified by a shader definition by @mvaligursky in #6253
- Do not create a sky shader variant based on skyIntensity being equal to 1 by @mvaligursky in #6254
- Exposed gizmo color alpha by @kpal81xd in #6249
- Extras merged into engine by @kpal81xd in #6228
- ES6 createScript by @kpal81xd in #6147
- Split primitives.js into separate modules by @mvaligursky in #6259
- Procedural geometry refactoring, createMesh and similar deprecation by @mvaligursky in #6261
- WebGPU - skip unsupported device limits when creating device by @mvaligursky in #6263
- DomeGeometry for the skydome rendering - refactor by @mvaligursky in #6266
- Converted skydome shader generator to use defines and includes by @mvaligursky in #6269
Fixes
- WebXR XRSession.enabledFeatures missing workaround by @Maksims in #6181
- Fix omni lights shadows on WebGPU by @mvaligursky in #6165
- [Fix] Fix the shader linking after the lost context has been restored. by @mvaligursky in #6146
- [Fix] reset internal cached state for face culling when the device is restored by @mvaligursky in #6155
- Removed circular self dependency by @kpal81xd in #6168
- Fix the incorrectly exposed PostEffect type parameter by @mvaligursky in #6167
- Small fixes to jsdocs by @mvaligursky in #6200
- Engine Watch fix by @kpal81xd in #6205
- Clear vertex buffer on empty instance buffer inside drawInstance by @heretique in #6208
- JSDoc import dollar fixes by @kpal81xd in #6215
- Handle a render pass debug logging issue where index is not provided by @mvaligursky in #6238
- Fix color buffer clear when using partial viewport by @mvaligursky in #6241
- Fix to recent VertexBuffer refactoring by @mvaligursky in #6246
- checks rollup args for if environment flag is included by @kpal81xd in #6247
- WebXR fix overlaping rAF callbacks by @Maksims in #6244
- Require all supported WebGPU limits when creating a device by @mvaligursky in #6255
- Fix crash in GsplatMany example on WebGL due to no WebGL1 splat support by @mvaligursky in #6264
Examples
- WebXR Hands Example - AR/VR modes by @Maksims in #6189
- WebXR Example - UI by @Maksims in #6190
- Add example to test normals and tangents (and fix WebGL) by @erikdubbelboer in #5924
- Examples root path fix by @kpal81xd in #6137
- Examples develop speedup by @kpal81xd in #6139
- Added pre-build dispersion example thumbnails by @mvaligursky in #6156
- Adjust camera clip plane distances for the dispersion example by @mvaligursky in #6158
- A simple compute example, support for compute parameters by @mvaligursky in #6183
- Fix example linting and remove unused packages by @willeastcott in #6192
- Removed undollar script by @kpal81xd in #6206
- Missing example thumbnails by @mvaligursky in #6220
- Particles example using compute shader simulation by @mvaligursky in #6233
- Particle example thumbnails by @mvaligursky in #6235
- WebXR fix picking example by @Maksims in #6248
- Mark WebGPU compute examples public by @mvaligursky in #6256
- Example build fixes by @kpal81xd in #6257
- Examples error handling by @kpal81xd in #6260
New Contributors
- @IRobot1 made their first contribution in #6194
- @benbean303 made their first contribution in #6211
Full Changelog: v1.69.2...v1.70.0