hilo3d 1.19.1-alpha.0 → 2.0.0-alpha.1

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.
package/CHANGELOG.md CHANGED
@@ -1,372 +1,804 @@
1
- ## [1.19.1-alpha.0](https://github.com/hiloteam/Hilo3d/compare/1.19.0...1.19.1-alpha.0) (2023-06-02)
2
-
1
+ # 2.0.0-alpha.1 (2026-07-25)
2
+
3
+ ### Breaking changes
4
+
5
+ - Replace the public abstract/concrete renderer split with one public `Renderer`. Create every
6
+ backend through `await Renderer.create(...)`; direct `new Renderer()` and `new Stage()`
7
+ construction are unavailable so initialization always has one explicit asynchronous boundary.
8
+ - Remove the public `WebGLRenderer`, `WebGPURenderer`, `WebGLRenderTarget`, and `WebGPURenderTarget`
9
+ classes and their backend-specific parameter and lifecycle types. The sole offscreen surface
10
+ remains the backend-neutral `RenderTarget` returned by Renderer.
11
+ - Replace the backend-class support probe with `Renderer.isBackendSupported('webgpu', options)`.
12
+ Explicit backend requests remain fail-closed; `auto` still probes WebGPU without requesting a
13
+ device or allocating GPU resources.
14
+ - Move the render frontend to `src/render` and the RHI to `src/render/rhi/{webgl2,webgpu}`. Remove
15
+ the legacy `src/renderer` and `src/rhi` source trees and do not provide compatibility re-export
16
+ paths.
17
+
18
+ ### Changes
19
+
20
+ - Add a portable `build-hilo3d-games` Agent Skill with strict TypeScript/Vite starters for 2D, 3D,
21
+ and hybrid games, stable-first `2.0.0` dependency resolution, focused public-API references, and
22
+ repository checks that keep bundled examples and version-selection behavior valid.
23
+ - Separate the full release gate from npm's publish lifecycle: `npm run release:check` retains the
24
+ complete validation matrix, while `prepublishOnly` performs only fast deterministic checks before
25
+ `prepack` builds the tarball, avoiding repeated browser suites and expired publish OTPs.
26
+ - Make the releasable-texture example deterministic by always installing a replacement CPU image
27
+ before marking the texture for upload, removing a random page error from the WebGL2/WebGPU UI
28
+ release gate.
29
+ - Add a shared 2D frontend with atlas-backed `Sprite`, `SpriteFrame` sequence animation,
30
+ Canvas-2D-backed `Text2D`, pixel-space `Camera2D`, actual-size sprite pointer hit tests, and
31
+ automatic portable instance batches capped at 128 sprites per draw. Sprite raster uses one GLSL ES
32
+ 3.00 source through native WebGL 2 or the existing Naga WGSL pipeline.
33
+ - Add ordered multi-camera Stage composition through `Camera.priority`, per-camera color/depth/
34
+ stencil clear policy, and `Camera.visibility & Node.layer` filtering for Mesh, Light, scriptable
35
+ culling, and pointer input. All cameras record into one Render Graph/RHI frame; Camera2D defaults
36
+ to the dedicated 2D layer and preserves prior 3D color.
37
+ - Redesign the examples gallery with categorized metadata, search, responsive navigation, accessible
38
+ controls, isolated per-example query parameters, source/direct links, loading states, and a shared
39
+ renderer statistics panel that reports the active WebGL 2 or WebGPU backend.
40
+ - Add renderer-local scriptable render pipelines through `RendererCommonOptions.renderPipeline`,
41
+ reusable `RenderPipelineFactory` configurations, frame-scoped culling/renderer-list handles, a
42
+ narrow `ScriptableRenderGraph`, retained pass-parameter pools, recovery-aware persistent targets,
43
+ and shared scene, shadow, fullscreen, copy, and present pass primitives.
44
+ - Add `ForwardRenderPipelineFactory` feature injection with per-Renderer feature runtimes and
45
+ creation-time capability/limit/format requirements. The empty default feature set retains the
46
+ existing direct forward recorder with no intermediate scene target or public-facade draw cost.
47
+ WebGPU-only `storage-buffer`, `storage-texture`, `compute-pass`, and `indirect-draw` requirements
48
+ now participate in backend selection and device capability/limit/format validation.
49
+ - Add the WebGPU compute/storage foundation on the shared renderer path: WGSL host-shareable
50
+ `StorageLayout`, renderer-owned `StorageBuffer` upload/readback/recovery semantics, public graph
51
+ buffer access, Direct WGSL `ComputeShader` validation through Naga, immutable `ComputeKernel`,
52
+ `ComputeRenderPass`, and uniform/storage/complete-2D sampled or write-only-storage-texture
53
+ bindings. Compute is a dedicated pass model rather than a `Material` subtype.
54
+ - Add portable RHI compute pipeline/pass contracts, direct and indirect dispatch, buffer clear,
55
+ direct/indexed indirect draw, compute/storage limits and diagnostics, a one-hop WebGPU backend,
56
+ and a WebGL 2 negative implementation that fails before native GL work instead of emulating
57
+ storage or compute. Creation-time pipeline requirements now prevent compute/storage pipelines from
58
+ falling back to WebGL 2.
59
+ - Add the storage-aware raster path with constrained GLSL ES 3.10 translated through Naga, readonly
60
+ graphics storage bindings, graph vertex/index/indirect inputs, `GPUDrivenRenderPass`, and
61
+ `SceneRenderPass` group-3 pass-global storage variants. Scene variants reuse ordinary renderer
62
+ lists and deterministically expand instanced batches to direct per-mesh draws.
63
+ - Add a polished deterministic WebGPU showcase and acceptance example: depth prepass → sampled-depth
64
+ tile culling → Scene group-3 storage shading, Gaussian cull/reorder/indirect draw, and a
65
+ 1024-particle Hilo3D wordmark driven by Direct WGSL fractal value/curl noise, breathing, swirl,
66
+ return motion, compaction, GPU-generated indirect draw, and additive glow. GPU-produced counts,
67
+ indices, and draw arguments remain GPU-only. The Forward+/Gaussian algorithms are acceptance-scale
68
+ proofs, and the page is not a production performance baseline.
69
+ - Add a standalone interactive WebGPU compute-physics showcase with 65,536 persistent GPU bodies
70
+ split between a readable Hilo3D word lattice and an independent deep-field collision layer of
71
+ size-tiered stars, drifting aurora/nebula particles, and cyber-dune grains. Three-octave
72
+ value/curl noise, magnetic/shockwave/vortex pointer fields, meteor-head collisions and wake
73
+ forces, boundary physics, GPU-authored indirect arguments, and three particle raster layers stay
74
+ on the public Render Graph/RHI path. Its deterministic test mode drives real pointer input without
75
+ reading particle state back to the CPU.
76
+ - Keep first-release compute textures limited to complete 2D graph resources, with transient
77
+ write-only storage textures and no persistent storage-texture or layer/mip-view API. Persistent
78
+ state uses externally owned renderer `StorageBuffer` objects imported per frame; each Renderer
79
+ accepts one pending storage-buffer readback. `cpu-shadow` recovery restores CPU bytes rather than
80
+ later GPU mutations, and Direct WGSL `f16` remains fail-closed until the Naga validation path can
81
+ validate it end to end. Storage-aware graphics retains broader Material/Scene texture reflection,
82
+ while `GPUDrivenRenderPass` rejects non-2D graph texture bindings before backend execution.
83
+ - Expose the built-in forward culling results to features, reject feature runtimes shared across
84
+ Renderers, and preserve selected RenderTarget color/depth/stencil clear/load/store operations
85
+ across feature-enabled scene, intermediate-color, and output passes.
86
+ - Reject pre-opaque scene-color sampling and keep the built-in forward feature's `sampledDepth`
87
+ option fail-closed; a custom SRP can explicitly compose depth prepass, compute culling, and a
88
+ storage-aware Scene pass for Forward+.
89
+ - Add backend-neutral `Renderer.waitForIdle()` for application completion fences. Native WebGL 2 or
90
+ WebGPU interoperability is opt-in through `Renderer.getExtension()` instead of public `gl` or
91
+ `gpuDevice` fields.
92
+ - Harden scriptable rendering with role-specific sampled/copy texture usage, pre-frame exact-copy
93
+ validation, explicit resolve terminal tracking, per-invocation shadow binding isolation,
94
+ effective-material transparent depth sorting, filterable fullscreen capability checks, complete
95
+ recovery capability-superset validation, non-revivable per-invocation/per-callback lease facades
96
+ over reusable internal storage, and an internal-only pass-pool acquisition path.
97
+ - Route `renderToTarget()` through the configured pipeline, make public graph handles unique across
98
+ invocations, reject nested rendering through record/prepare/execute, add transactional per-key
99
+ persistent-target release, preserve pre-draw Mesh event mutation before draw preparation, and
100
+ align after-scene events/face counts with every renderer-list occurrence actually drawn by live
101
+ graph passes.
102
+ - Keep backend selection outside the draw loop and preserve the existing native fast paths, state
103
+ caches, prepared resources, and pass-level execution so the unified public surface adds no
104
+ per-draw dispatch or allocation cost.
105
+ - Add one internal `RHIFactory` composition root for concrete RHI construction and support probes;
106
+ backend drivers receive the concrete RHI directly rather than a command-forwarding facade.
107
+
108
+ ### Fixes
109
+
110
+ - Keep the full WebGL2/WebGPU Playwright matrix in local/release validation, while GitHub hosted CI
111
+ runs the stable WebGL2 UI/visual matrix and the native/offscreen WebGPU RHI lane instead of
112
+ pretending its SwiftShader environment supports reliable canvas presentation.
113
+ - Route ShaderToy's two backend cases through its dedicated offscreen pixel/hash interaction gate
114
+ instead of loading the same continuous ray-march page again in the generic gate, while retaining
115
+ native draw/submit, GPU health, page, network, console, DevTools graphics, and stable-frame
116
+ checks.
117
+ - Keep the portable RHI benchmark smoke bounded to a single-draw production scenario and isolate
118
+ every scenario/backend in fresh Chromium. PR CI runs the stable WebGL 2 production smoke while
119
+ WebGPU remains covered by dedicated RHI/browser lanes and the enrolled physical-GPU benchmark;
120
+ local non-evidence WebGPU smoke avoids the physical-rig-only timestamp-query feature and uses the
121
+ stable Playwright transport.
122
+ - Clear handled old-generation submission-fence failures across every renderer submission tracker
123
+ only after successful device recovery, so a recovered renderer's `waitForIdle()` observes new
124
+ failures without hiding tracker/collection errors.
125
+ - Restore the full portable Playwright UI, WebGPU, and visual matrix to `validate:ci`; the
126
+ physical-GPU lane remains a separate manual workflow.
127
+ - Remove the production handwritten WebGPU mipmap WGSL module. Renderer initialization reuses its
128
+ compiler and supplies required GLSL/Naga artifacts through the WebGPU RHI creation contract, while
129
+ native shader, pipeline, view, and bind-group creation completes before frame execution.
130
+ - Preserve WebGL2 buffer capacity and portable texture-copy orientation, restore browser-managed
131
+ external-image color conversion, reject unsupported WebGL2 stencil uploads and depth/stencil
132
+ readbacks before native commands, validate render-attachment subresources and depth/stencil
133
+ operations before backend execution, mark unused WebGPU combined depth/stencil sibling aspects
134
+ read-only, reject pipelines that read an unavailable aspect or write a read-only/unused aspect,
135
+ and reject partial WebGL2 compressed buffer uploads whose opaque blocks cannot preserve the
136
+ portable top-left row contract without format-specific recompression.
137
+ - Make render-target release, replacement, and destroy cleanup resumable per handle so a cleanup
138
+ failure retains its owner/record, never double-releases completed handles, and never leaks a
139
+ staged replacement allocation.
140
+ - Elide unchanged vertex-buffer bindings between adjacent prepared draws and keep WebGPU
141
+ buffer-range validation paths static, removing draw-count-amplified hot-path allocations without
142
+ weakening the backend validation contract.
143
+
144
+ ## Earlier 2.0.0 development baseline (2026-07-14)
145
+
146
+ ### Breaking changes
147
+
148
+ - Replace the renderer-interface-only `Renderer` export with an abstract shared renderer base and a
149
+ separate `RendererContract` type. Backend implementations now inherit common frame planning,
150
+ render/light queues, diagnostics, and resource ownership from that base; the protected result is
151
+ available as the exported `RenderGraphFramePlan` type for custom subclasses.
152
+ - Add the required synchronous `Renderer.renderFrame(callback)` application-frame boundary. Custom
153
+ renderer implementations must provide it; callbacks may not return a Promise or retain the frame
154
+ facade after returning.
155
+ - Make `UniformBuffer` a backend-neutral CPU/std140 object. Remove its WebGL-native `getBuffer()`,
156
+ `bind()`, and `destroy()` methods; native allocations now belong to renderer-local WebGL/WebGPU
157
+ managers and are released through renderer resource ownership.
158
+ - Make `Texture` a backend-neutral CPU descriptor. Remove `Texture.getCache()`, `reset()`,
159
+ `getGLTexture()`, `setGLTexture()`, `updateTexture()`, the protected WebGL upload hooks, and the
160
+ root `TextureWebGLState` type; WebGL allocation, upload revision, descriptor snapshot, and native
161
+ cache ownership now belong to the renderer's texture manager/uploader.
162
+ - Restrict `TextureBinding` and `MaterialTexture` to engine `Texture<unknown>` objects so both
163
+ backends consume one real resource contract. Remove the WebGL-native `location`, `type`, `size`,
164
+ and `glTypeInfo` fields from `ProgramBindingInfo`.
165
+ - Change `Shader.reset(gl?)` to backend-independent `Shader.reset()`. Change `RendererFrameCallback`
166
+ to return `unknown`; the runtime rejects Promise-like results and escaped frame facades rather
167
+ than allowing asynchronous recording.
168
+ - Remove the unused WebGL-native `GeometryData.glBuffer` field. Geometry data now exposes only CPU
169
+ content/revisions, while each backend owns its buffer variants.
170
+ - Make WebGPU manager/target suspend, device-rebind, and atomic attachment-replacement operations
171
+ renderer-internal. Public `WebGPUTextureManager` mutations now preserve render-target ownership;
172
+ `registerExternal()` rejects target-owned textures instead of creating detached allocations.
173
+ - Require Node.js 22.22.2 and npm 12 for development and releases.
174
+ - Publish a single ES2022 ESM package entry and remove CommonJS/UMD, global-script, and namespace
175
+ declaration variants.
176
+ - Remove the dynamic `Class.create`/`Class.mix` and `EventMixin` APIs in favor of native classes and
177
+ `EventDispatcher`; use backend-neutral `releaseGPUResources()` for renderer resource lifecycles.
178
+ - Require WebGL 2 when the WebGL backend is selected and native GLSL ES 3.00 for shader sources;
179
+ remove WebGL 1 contexts, compatibility shader rewriting, and extension adapters for WebGL 2 core
180
+ features.
181
+ - Change asynchronous `Stage.create()` to default to `backend: 'auto'`. Auto selection uses the
182
+ public, device- and GPU-resource-free `WebGPURenderer.isSupported()` adapter probe and prefers
183
+ WebGPU when the fallback-adapter policy, required features/limits, and engine minimum limits are
184
+ satisfied; it otherwise creates WebGL 2 directly. The probe never requests a device or canvas
185
+ context and never initializes the shader compiler, pipelines, or resources. Supplying
186
+ `preserveDrawingBuffer` or requesting `alpha: true, premultipliedAlpha: false` straight-alpha
187
+ compositing selects WebGL 2 directly. Synchronous `new Stage()` remains WebGL 2 by default because
188
+ it cannot await adapter discovery.
189
+ - Keep explicit `backend: 'webgpu'` fail-closed with no fallback. Once auto has selected WebGPU,
190
+ device/context creation, compiler, pipeline, and resource initialization errors also reject
191
+ directly instead of being reinterpreted as capability failures.
192
+ - Make `Renderer`/`RenderTarget` the backend-neutral offscreen contract for WebGL 2 and WebGPU,
193
+ including MRT, 1×/4× MSAA, sampleable attachments, target rendering, resize, and asynchronous
194
+ readback. `MeshPicker` now accepts a `Stage` and returns `Promise<Mesh[]>` from a backend-neutral
195
+ GPU object-ID pass with no CPU fallback.
196
+ - Remove the public `Framebuffer`, `LightShadow`, and `CubeLightShadow` types, public light
197
+ `lightShadow` fields, renderer-owned `useFramebuffer`/`framebufferOption`, implicit render-target
198
+ creation, and backend-specific framebuffer example. Native framebuffer and shadow allocation are
199
+ renderer internals; the replacement example uses the shared `RenderTarget` contract.
200
+ - Remove the WebGL-cache-specific `logGLResource()` export. Use
201
+ `renderer.resourceManager.getDiagnostics(rootNode?)` for stable backend-neutral ownership counts.
202
+ - Remove the context-blind `capabilities` and `extensions` singletons. WebGL 2 callers use the
203
+ owning `WebGLRenderer.capabilities` and `WebGLRenderer.extensions`; remaining public low-level
204
+ Program/Buffer/VAO cache inspection requires `getCache(gl)`, while Texture native caches are
205
+ backend-private.
206
+ - Restrict shadow construction to directional, spot, and point lights through
207
+ `ShadowCastingLightParameters`. Area, ambient, and base lights reject shadow configuration before
208
+ backend selection instead of allowing a backend to ignore it.
209
+ - Require low-level `WebGPUTextureManager` construction to receive an already initialized
210
+ `NagaShaderTranslator`; the optional resource-destroy callback moves to the third argument.
211
+ - Narrow `KTXLoadRequest` texture overrides to the exported `KTXTextureOptions` contract. Callers
212
+ may set sampler, lifecycle, name, UV, and anisotropy options, but container-owned texel format,
213
+ extent, image, mipmap, and compression metadata can no longer be overridden.
214
+ - Move every non-sampler shader value to the fixed std140 `FrameBlock`, `CameraBlock`, `SceneBlock`,
215
+ `LightBlock`, `MaterialBlock`, `ModelBlock`, `GeometryBlock`, `SkinningBlock`, or `MorphBlock`
216
+ ABI. Custom `ShaderMaterial` numeric uniforms must migrate to a registered UBO; samplers are the
217
+ only classic uniform exception.
218
+ - Remove `KHR_techniques_webgl` loading and its GLSL 1.00 sample assets because the extension's
219
+ arbitrary classic-uniform shader interface is incompatible with the fixed WebGL 2 UBO ABI.
220
+ - Remove the example-only Draco adapter and assets instead of retaining its build-time UMD/CommonJS
221
+ wrapper rewrite; future decoder integrations must provide directly consumable ESM and strict
222
+ TypeScript declarations.
223
+ - Remove the backend-specific `Texture.colorSpaceConversion` boolean. External images now always use
224
+ the browser-standard sRGB-managed path, while raw TypedArray/DataView pixels remain explicit
225
+ untagged values on both backends.
226
+ - Replace `Texture.updateSubTexture(xOffset, yOffset, image)` with the sole descriptor form
227
+ `updateSubTexture({ mipLevel, face?, layer?, z?, x, y, width, height, depth?, image })`. The
228
+ positional overload has been removed.
229
+ - Correct legacy public API spellings: `SkinedMesh` is now `SkinnedMesh`, `needBasicUnifroms` is
230
+ `needBasicUniforms`, `ignoreTranparent` is `ignoreTransparent`, and the
231
+ diffuse-environment/ambient-light material flag now uses its correctly spelled name.
232
+ - Replace the legacy Gulp, Webpack, Mocha, JSDoc and Electron toolchain with Vite, strict
233
+ TypeScript, Vitest Browser Mode, Playwright, TypeDoc and ESLint flat config.
234
+
235
+ ### Changes
236
+
237
+ - Add a WebGPU-shaped RHI with separate thin native WebGPU and immediate, state-cached WebGL 2
238
+ implementations. It covers device resources, prepared shader modules, pipeline/layout/bind-group
239
+ objects, render passes, command encoders, queues, surfaces, explicit features/limits, and
240
+ device/context recovery without importing engine scene semantics.
241
+ - Split rendering code into explicit `renderer/common`, `renderer/shader`, `renderer/webgl`,
242
+ `renderer/webgpu`, `rhi/webgl`, and `rhi/webgpu` boundaries. Move GLSL-to-WGSL compilation above
243
+ the RHI, move WebGL shadow allocation under its renderer backend, and keep common frame planning
244
+ free of native graphics handles.
245
+ - Give RHI devices bounded immutable sampler, bind-group-layout, pipeline-layout, and
246
+ render-pipeline caches with fixed-field keys and deterministic loss/destroy invalidation. Keep
247
+ material, Mesh, shader-variant, binding-set, and upload caches in Renderer; do not
248
+ descriptor-deduplicate buffers, textures, shader modules, or bind groups in the RHI.
249
+ - Record resource-ready WebGPU scene, shadow, target, and presentation passes through an explicit
250
+ application frame. One submission uses revision-snapshotted UBO slots so each camera/pass observes
251
+ its own data; recording failures poison the frame instead of submitting partial commands.
252
+ - Add bounded per-group bind-group layout/resource caches, WebGPU sampler/snapshot and numeric-depth
253
+ specialization LRUs, presentation bind-group reuse, pooled UBO submission slots, dirty-range
254
+ instance uploads, and per-pass command-state deduplication.
255
+ - Move WebGL texture allocation/upload into a per-state manager and backend uploader, detect
256
+ descriptor changes without replacing stable framebuffer texture objects, and release native
257
+ allocations through an internal lifecycle channel that public events cannot cancel.
258
+ - Add a bounded immutable WebGLSampler cache with per-texture descriptor-key memoization and
259
+ per-unit bindings. Numeric and comparison reads can share one depth texture without mutating its
260
+ global state, and active samplers are never evicted from a texture unit.
261
+ - Track render-target attachment allocation generations across WebGL 2 and WebGPU. Texture target
262
+ changes, failed uploads, and public attachment destruction now invalidate the previous allocation;
263
+ targets rebuild or reattach before reuse and reject stale native handles.
264
+ - Protect pending WebGPU submissions from early target, buffer, texture, and shadow-atlas
265
+ destruction; defer native retirement until submission ends and reject same-submission geometry or
266
+ instance-buffer mutation instead of rewriting resources already referenced by recorded passes.
267
+ - Replace serialized shader variant keys with a bounded, structured dual-lane 64-bit hash, exact
268
+ collision buckets, stable-draw revision snapshots, source-aware custom shader keys, and
269
+ generation-safe cache release. GLSL ES 3.00 remains the only authored portable raster language;
270
+ WebGPU-only compute/storage use the constrained source contracts described above.
271
+ - Migrate all maintained engine, test, example and tooling code to checked TypeScript without
272
+ type-checking bypasses.
273
+ - Split TypeScript into referenced library, test, example and Node projects with strict shared
274
+ rules.
275
+ - Generate bundled public declarations and API reports directly from the checked source.
276
+ - Add repository-wide typed linting, deterministic formatting and enforced browser coverage.
277
+ - Add Vite multi-page example builds and an automatically collected 80-HTML Playwright matrix.
278
+ Seventy-eight pages run through WebGL 2 and WebGPU; `webxr.html` is explicitly WebGL 2-only while
279
+ browsers expose XR presentation through `XRWebGLLayer`, and `compute_gpu_driven.html` is
280
+ explicitly WebGPU-only because its required capabilities are not simulated on WebGL 2.
281
+ - Gate the same deterministic lit PBR readback and screenshot through both backends, and exercise
282
+ fractional-DPR resizing, life-game and ShaderToy input, glTF Viewer load/replace/release, live
283
+ post-process changes, native compressed textures, and GPU mesh picking on both backends. The first
284
+ WebGL 2 and WebGPU frames must be byte-for-byte identical.
285
+ - Validate the packed package with publint, Are the Types Wrong, Bundler and NodeNext consumers, and
286
+ ESM runtime loading.
287
+ - Generate and deploy the API documentation and examples site from TypeDoc and Vite in CI.
288
+ - Run the existing engine suite in headless Chromium with real WebGL contexts.
289
+ - Bundle the area-light LTC lookup data and skybox textures locally so rendering never depends on
290
+ third-party runtime URLs.
291
+ - Remove obsolete `OES_standard_derivatives` and `WEBGL_depth_texture` requests because both are
292
+ WebGL 2 core features, and enforce this class of WebGL 1 extension wrapper in the modernity gate.
293
+ - Add type-safe std140 layout packing, stable global uniform-block bindings, reflected range-size
294
+ validation, partial dirty uploads, and static/runtime rejection of legacy shader interfaces.
295
+ - Keep GLSL ES 3.00 as the single portable raster shader source, prepare active variants as Vulkan
296
+ GLSL 4.50, and translate them through Naga WASM to WGSL. Preparation assigns IO locations,
297
+ separates texture and sampler bindings, maps the four WebGPU bind groups, and converts clip-space
298
+ depth.
299
+ - Route renderer-owned fullscreen presentation and WebGPU mipmap generation through that same GLSL
300
+ preprocessing and Naga path. Both consume translated sampler metadata and have no handwritten or
301
+ fallback WGSL module; the modernity gate rejects graphics WGSL entry points and only permits
302
+ Direct WGSL `@compute` structurally associated with `ComputeShader` validation.
303
+ - Express the shared std140 ABI in generated WGSL with explicit `@align`/`@size` wrappers that work
304
+ with WebGPU's default language features; do not request or depend on the optional
305
+ `uniform_buffer_standard_layout` feature.
306
+ - Load Naga through a dynamic ESM boundary so WebGL 2 consumers do not download its JavaScript/WASM
307
+ graph; package smoke initializes Naga and translates GLSL from the installed tarball.
308
+ - Add WebGPU buffer, texture, uniform, bind-group, render-state, pipeline, and resource-lifecycle
309
+ managers with device-limit validation and deterministic caches.
310
+ - Complete the GLSL ES 3.00 texture surface across WebGL 2 and WebGPU: `sampler3D`,
311
+ `sampler2DArray`, `sampler2DArrayShadow`, and every signed/unsigned integer sampler family for 2D,
312
+ 3D, cube, and 2D-array textures now pass through Naga into dimension- and sample-type-correct bind
313
+ groups. Managed `Texture` supports 2D, cube, 3D, and 2D-array targets plus signed/unsigned integer
314
+ formats. Integer textures require nearest-only sampling, anisotropy 1, and explicit complete mip
315
+ chains; mipmapped 3D textures also require explicit complete chains. Both backends reject
316
+ compressed 3D textures before allocation, while native compressed 2D-array textures remain
317
+ supported.
318
+ - Preserve dynamically-uniform sampler-array indexing by lowering flattened texture/sampler pairs
319
+ into typed dispatch functions, including texture builtins, sampler function parameters, and
320
+ multiple arrays. Add ordinary-sampler numeric depth reads by specializing Naga WGSL bindings to
321
+ `texture_depth_*`; WebGPU enforces nearest-only non-filtering depth samplers, while WebGL 2
322
+ selects comparison mode from reflected sampler types.
323
+ - Complete the shader preprocessing frontend with function-like macros, strict recursive expansion,
324
+ bitwise/shift/ternary conditional expressions, named interface blocks, arrays, multi-declarations,
325
+ reordered std140 layout qualifiers, and projective sampler operations. Reject builtins outside the
326
+ GLSL ES 3.00/WebGL 2 contract before backend selection, and derive depth-only Naga variants that
327
+ preserve discard/depth side effects without declaring dummy color outputs.
328
+ - Support descriptor-based subresource updates for 2D, cube, 3D, and 2D-array textures across both
329
+ backends, including raw, external-image, and legal compressed block updates. Define cube mip
330
+ chains as six entries per level in canonical `+X, -X, +Y, -Y, +Z, -Z` order; add portable raw
331
+ depth16/depth32float and feature-gated depth32float-stencil8 uploads; reject nonportable raw depth
332
+ tuples before allocation; and use physical 4×4 upload extents for compressed 2×2/1×1 mip tails.
333
+ - Cap each texture's sub-update journal at 64 entries while maintaining an exact full-content
334
+ checkpoint. Independently paced WebGL contexts and WebGPU devices replay the checkpoint when
335
+ behind and then resume incremental revisions. Route CubeTexture, DataTexture, and LazyTexture
336
+ construction through the base validation contract and preserve loaded LazyTexture depth/wrapR.
337
+ - Make geometry, material, texture, and partial-upload revisions backend-local; add bounded cache
338
+ eviction, transactional GPU resource replacement, immutable descriptor-keyed samplers, and
339
+ destroy-during-initialization cleanup.
340
+ - Scope WebGL 2 program, buffer, vertex-array, texture, framebuffer, custom uniform-buffer,
341
+ capability, extension, and current-binding state to the owning context. Multiple renderers no
342
+ longer reuse native handles or destroy each other's allocations during release or context
343
+ restoration; `Texture.needDestroy` invalidates old allocations across every WebGL context and
344
+ WebGPU device instead of being consumed by only the first backend.
345
+ - Detect `MaterialBlock` changes from a reusable snapshot of the final std140 bytes, including
346
+ direct mutations of nested color/matrix and texture-derived values, without requiring manual
347
+ `isDirty`; unchanged bytes do not advance revisions or upload again.
348
+ - Give raw texture uploads one backend-neutral, tightly packed row contract; WebGL 2 and WebGPU now
349
+ apply `flipY` to TypedArray/DataView sources in the same deterministic byte order.
350
+ - Upload WebGPU `HTMLVideoElement` textures from decoded-frame callbacks through a private staging
351
+ canvas. Queue completion fences prevent the canvas from changing during a copy; source changes,
352
+ release, and device recovery cancel and rebuild observation without a WebGL or placeholder
353
+ fallback.
354
+ - Bound backend-neutral UBO dirty history with full-upload recovery for slow consumers. Own render
355
+ state by `mesh → pass owner → material/shader/instancing variant`, cap each mesh at 32 variants
356
+ with LRU eviction, atomically union resources across passes, and reclaim failed-frame and replaced
357
+ identity resources without destroying shared final references.
358
+ - Upload dynamic WebGPU interleaved attributes and Uint8/16/32 indices by precise dirty ranges,
359
+ including matrix columns, normalized/strided sources, discrete regions, 4-byte copy alignment,
360
+ primitive-restart conversion, history-expiry fallback, buffer resize, and deterministic old-buffer
361
+ destruction.
362
+ - Isolate shader structural/precision cache keys per geometry and renderer; keep pending pipeline
363
+ compilations deduplicated outside the settled LRU and allow Naga initialization to retry after a
364
+ transient failure. Remove the mutable global shader header and include canonical `commonOptions`
365
+ snapshots in every header and shader-variant key.
366
+ - Recover automatically after WebGPU device loss: emit `webgpuDeviceLost`, safely skip renders,
367
+ request a fresh equivalent adapter with the frozen initial options, revalidate the fallback policy
368
+ plus all required features and limits, and request a replacement device with the same effective
369
+ descriptor. Rebuild context/managers while preserving selected `RenderTarget` and attachment
370
+ identities, then emit `webgpuDeviceRestored`. Emit `webgpuDeviceRecoveryFailed` and make later
371
+ renders throw explicitly on failure; renderer destruction cancels in-flight or stale-generation
372
+ recovery.
373
+ - Preserve engine-private, `Texture`-identity recovery backings for `isImageCanRelease` textures,
374
+ including immutable raw/cube/mipmap/sub-texture snapshots and private external-source references,
375
+ so a new WebGL 2 context allocation or WebGPU device can replay uploads without restoring access
376
+ to the released public image.
377
+ - Keep `releaseGPUResources()` reusable on WebGPU by rebuilding main-canvas depth/MSAA attachments
378
+ immediately instead of tearing down the device. Scope shadow cameras and debug helpers per
379
+ renderer/light and prune them when debug, shadow, enabled, stage membership, release, recovery, or
380
+ destruction changes ownership.
381
+ - Reject cross-stage UBO layout mismatches before Naga and keep generated entry-point
382
+ post-processing correct when custom GLSL returns early.
383
+ - Add shared WebGL 2/WebGPU render targets with MRT, 1×/4× MSAA resolve, optional sampleable
384
+ depth/stencil, explicit ownership/presentation, resize, and tightly packed asynchronous color
385
+ readback. Attachment `Texture` identities survive resize and context/device recovery; WebGL 2
386
+ resize updates every draw/resolve/depth attachment transactionally. Both backends present through
387
+ fullscreen texture-load pipelines; WebGL 2 restores canvas and saved framebuffer state on every
388
+ clear/resolve failure instead of blitting into an antialiased default framebuffer. WebGPU keeps
389
+ its required 256-byte row alignment internal to the implementation.
390
+ - Build post-processing ping-pong passes and asynchronous `MeshPicker` exclusively on the shared
391
+ render-target contract, with dual-backend interaction tests and no hidden fallback path.
392
+ - Normalize `LINE_LOOP` and `TRIANGLE_FAN` to explicit `LINES` and `TRIANGLES` indices before upload
393
+ for indexed, non-indexed, and glTF-loaded geometry, so WebGL 2 and WebGPU consume the same
394
+ topology.
395
+ - Add shared compressed-texture capability queries. WebGPU enables adapter-exposed BC, ETC2, and
396
+ ASTC device features, maps all ten WebGL 2 core ETC2/EAC formats, and explicitly rejects PVRTC
397
+ instead of substituting or decoding it. Both backends require an exact, dimensionally valid mip
398
+ chain when a mipmap filter is selected, while the KTX loader continues to accept legal base-only
399
+ and partial chains for non-mipmap sampling. KTX1 parsing honors container endianness for headers
400
+ and mip sizes, rejects truncation, and keeps container texel metadata authoritative over request
401
+ options.
402
+ - Replace WebGL cache logging with backend-neutral tracked/used/pending resource diagnostics.
403
+ - Partition WebGPU resources by update frequency: global/pass resources in group 0, material and
404
+ texture resources in group 1, object/geometry/pose resources in group 2, and custom blocks in
405
+ group 3. Instanced transforms use the bounded `InstanceBlock` instead of matrix vertex attributes.
406
+ - Add Naga compilation coverage for the built-in shader feature corpus and a dedicated Playwright
407
+ test that creates a real Chromium WebGPU adapter/device/pipeline and exercises Basic/PBR,
408
+ instancing, indexed strips with partial updates, mipmapped texture replacement, three shadow-light
409
+ kinds, 4× MSAA/stencil, MRT, presentation, and readback through SwiftShader. This fixture actively
410
+ destroys the device, verifies fresh adapter/device recovery, released-texture replay, selected
411
+ `RenderTarget` identity, and exact pre/post-recovery readback. It supplements the full
412
+ example-gallery WebGPU matrix; it is not the only WebGPU UI path.
413
+ - Extend that real-browser WebGPU gate with managed 3D, 2D-array, integer-array, and depth-array
414
+ textures. It translates the extended sampler set through Naga, builds the actual bind groups and
415
+ pipeline, draws and submits without shader-compilation or GPU-validation errors, and requires the
416
+ exact `[64, 128, 200, 255]` pixel readback.
417
+ - Require all 155 page/backend cases to observe a real WebGL draw or WebGPU canvas acquisition,
418
+ render-pass draw, and queue submission, with page, network, console, GPU validation, uncaptured
419
+ error, and unexpected device-loss failures promoted to release-gate failures. After the
420
+ stable-frame window, fence every observed real `GPUQueue` with `onSubmittedWorkDone()` before the
421
+ final instrumentation sample so delayed validation events cannot arrive after a passing result.
422
+ Interaction gates additionally require action-local draw/submit progress and GPU readback changes
423
+ for life-game attachment updates, ShaderToy pointer input, post-process kernels, and glTF Viewer
424
+ replacement. WebGPU color render-target allocations include `COPY_DST`, so public attachment
425
+ `updateSubTexture()` writes are real GPU updates rather than ignored validation errors.
426
+ - Add an explicit optional native WebGPU Playwright project and manual self-hosted GPU workflow. It
427
+ requests `forceFallbackAdapter: false`, disables Chromium's software rasterizer, rejects fallback
428
+ and known software adapters, and reuses the production draw/recovery/readback fixture without
429
+ pretending that physical GPU availability is a portable PR or release requirement. WebXR remains
430
+ excluded from the WebGPU gate.
431
+ - Expand WebGL 2 instanced matrix attributes into legal column locations, preserve independent read
432
+ and draw framebuffer bindings across reset/check/bind/unbind transactions, reject cross-context
433
+ framebuffer copies, and route reflected `ivec*`/`uvec*` inputs through strictly typed
434
+ `vertexAttribIPointer` calls. Keep point-shadow cube attachments square and complete. Refresh
435
+ `CameraBlock` for each of the six point-shadow faces even though the shadow camera object is
436
+ reused. Prepare ShaderToy derivatives in uniform control flow so the same GLSL compiles cleanly
437
+ through Naga and Dawn.
438
+ - Render WebGPU directional, spot, and point-light shadows through a comparison depth atlas whose
439
+ rects, matrices, and bias data live in `LightBlock`. Restrict shadow parameters to those three
440
+ light kinds and reject Area/Ambient/base-light shadow assignment before backend selection.
441
+ - Make package entry evaluation safe in non-browser runtimes.
442
+ - Fix the `COPY_WRITE_BUFFER_BINDING` WebGL2 constant.
443
+
444
+ ## [1.19.1](https://github.com/hiloteam/Hilo3d/compare/1.19.0...1.19.1) (2025-10-15)
3
445
 
4
446
  ### Bug Fixes
5
447
 
6
- * The stencilMask method should be passed a numeric parameter ([a3cb62c](https://github.com/hiloteam/Hilo3d/commit/a3cb62ce06513a5430d3281867c7f07e10fbad7e))
448
+ - Fix WebGLResourceManager.destroyUnusedResource typo
449
+ ([c8c9075](https://github.com/hiloteam/Hilo3d/commit/c8c9075fd0ece73c5c65adb28e997d2229e35b5c))
450
+ - github workflows node not found
451
+ ([c1d1eea](https://github.com/hiloteam/Hilo3d/commit/c1d1eea617bd7b873beb0bd7618072849fd95bff))
452
+ - remove uc browser game mode support
453
+ ([58401a5](https://github.com/hiloteam/Hilo3d/commit/58401a54f596f8c60c595a50c25bb8dd823e8a2f))
454
+ - return a white texture when the texture is missing in semantic.handlerTexture
455
+ ([f38bd14](https://github.com/hiloteam/Hilo3d/commit/f38bd1456e7d258c73b5022930401fa38f29b72c))
456
+ - The stencilMask method should be passed a numeric parameter
457
+ ([33f71d9](https://github.com/hiloteam/Hilo3d/commit/33f71d9482dab23eea107a4669475c71c4aa425a))
7
458
 
459
+ ### Features
8
460
 
461
+ - add webxr demo
462
+ ([7610e68](https://github.com/hiloteam/Hilo3d/commit/7610e682299690da1d2bd5d18770fd2974bc52da))
463
+ - fire event while render mesh
464
+ ([85923a7](https://github.com/hiloteam/Hilo3d/commit/85923a727c798e0904e881d51c3e4a50a4869eed))
9
465
 
10
466
  # [1.19.0](https://github.com/hiloteam/Hilo3d/compare/1.18.0...1.19.0) (2023-05-05)
11
467
 
12
-
13
468
  ### Bug Fixes
14
469
 
15
- * Fix Framebuffer unbind bug ([bd8557c](https://github.com/hiloteam/Hilo3d/commit/bd8557cac5b669b1c09cea411f463c6e349f632f))
16
- * Implement the transpose function only in webgl1 ([012a4f7](https://github.com/hiloteam/Hilo3d/commit/012a4f7cda33b76a03932c17525b5fafc40c0efc))
17
-
470
+ - Fix Framebuffer unbind bug
471
+ ([bd8557c](https://github.com/hiloteam/Hilo3d/commit/bd8557cac5b669b1c09cea411f463c6e349f632f))
472
+ - Implement the transpose function only in webgl1
473
+ ([012a4f7](https://github.com/hiloteam/Hilo3d/commit/012a4f7cda33b76a03932c17525b5fafc40c0efc))
18
474
 
19
475
  ### Features
20
476
 
21
- * Add material.getShadowMaterial to allow users to customize shadow material ([21fde64](https://github.com/hiloteam/Hilo3d/commit/21fde64c332f544f0acf43c0981841040bab9587))
22
- * Add the ability to visualize shadow camera for debug ([a327a69](https://github.com/hiloteam/Hilo3d/commit/a327a69247b48637b3e72104644b4dbaf8f75236))
23
- * Add the enableShadow property to lightManager to control whether to generate shadow map ([fe1b99c](https://github.com/hiloteam/Hilo3d/commit/fe1b99ceb644eabe5fc64952f16a950ebeb60be3))
24
- * Add the ILightManager interface, which allows users to implement their own lighting controls ([8075db3](https://github.com/hiloteam/Hilo3d/commit/8075db3f128362ed188976a81839773f46724dc7))
25
- * Add the onlySyncQuaternion attribute of Node to optimize performance ([0739e6a](https://github.com/hiloteam/Hilo3d/commit/0739e6ad9198cd6b91e6cd381986a8686b936a76))
26
- * Add worldMatrixVersion attribute to node for performance optimization ([6f8d76b](https://github.com/hiloteam/Hilo3d/commit/6f8d76b70ae563c69c5d1d89549e7f638dd663d6))
27
- * Store shadow map Z in four channels to optimize precision ([5bba760](https://github.com/hiloteam/Hilo3d/commit/5bba76065d8ac081a2515026f7dd9b638af07fb9))
28
-
477
+ - Add material.getShadowMaterial to allow users to customize shadow material
478
+ ([21fde64](https://github.com/hiloteam/Hilo3d/commit/21fde64c332f544f0acf43c0981841040bab9587))
479
+ - Add the ability to visualize shadow camera for debug
480
+ ([a327a69](https://github.com/hiloteam/Hilo3d/commit/a327a69247b48637b3e72104644b4dbaf8f75236))
481
+ - Add the enableShadow property to lightManager to control whether to generate shadow map
482
+ ([fe1b99c](https://github.com/hiloteam/Hilo3d/commit/fe1b99ceb644eabe5fc64952f16a950ebeb60be3))
483
+ - Add the ILightManager interface, which allows users to implement their own lighting controls
484
+ ([8075db3](https://github.com/hiloteam/Hilo3d/commit/8075db3f128362ed188976a81839773f46724dc7))
485
+ - Add the onlySyncQuaternion attribute of Node to optimize performance
486
+ ([0739e6a](https://github.com/hiloteam/Hilo3d/commit/0739e6ad9198cd6b91e6cd381986a8686b936a76))
487
+ - Add worldMatrixVersion attribute to node for performance optimization
488
+ ([6f8d76b](https://github.com/hiloteam/Hilo3d/commit/6f8d76b70ae563c69c5d1d89549e7f638dd663d6))
489
+ - Store shadow map Z in four channels to optimize precision
490
+ ([5bba760](https://github.com/hiloteam/Hilo3d/commit/5bba76065d8ac081a2515026f7dd9b638af07fb9))
29
491
 
30
492
  ### Performance Improvements
31
493
 
32
- * Optimize the performance of node transform changes ([5a263cf](https://github.com/hiloteam/Hilo3d/commit/5a263cfdb4366295c9b749a1d205fb56495a4c98))
33
-
34
-
494
+ - Optimize the performance of node transform changes
495
+ ([5a263cf](https://github.com/hiloteam/Hilo3d/commit/5a263cfdb4366295c9b749a1d205fb56495a4c98))
35
496
 
36
497
  # [1.18.0](https://github.com/hiloteam/Hilo3d/compare/1.17.0...1.18.0) (2023-01-29)
37
498
 
38
-
39
499
  ### Bug Fixes
40
500
 
41
- * Fix Texture reset internalFormat bug ([2b3f534](https://github.com/hiloteam/Hilo3d/commit/2b3f534a4af77e3c3ee717879776b5feab5b591e))
42
- * framebuffer resize should resize all attachments ([2b8aa0b](https://github.com/hiloteam/Hilo3d/commit/2b8aa0b38df7b0ec745d40c3861733cea6e7595a))
43
-
501
+ - Fix Texture reset internalFormat bug
502
+ ([2b3f534](https://github.com/hiloteam/Hilo3d/commit/2b3f534a4af77e3c3ee717879776b5feab5b591e))
503
+ - framebuffer resize should resize all attachments
504
+ ([2b8aa0b](https://github.com/hiloteam/Hilo3d/commit/2b8aa0b38df7b0ec745d40c3861733cea6e7595a))
44
505
 
45
506
  ### Features
46
507
 
47
- * add framebuffer drawBuffers ([2f68dc1](https://github.com/hiloteam/Hilo3d/commit/2f68dc101b9848d3252e4112fbea9eb441870f10))
48
- * add uniform buffer object support ([03d2fa3](https://github.com/hiloteam/Hilo3d/commit/03d2fa3630664c04b79a163c969e443e95594070))
49
-
50
-
508
+ - add framebuffer drawBuffers
509
+ ([2f68dc1](https://github.com/hiloteam/Hilo3d/commit/2f68dc101b9848d3252e4112fbea9eb441870f10))
510
+ - add uniform buffer object support
511
+ ([03d2fa3](https://github.com/hiloteam/Hilo3d/commit/03d2fa3630664c04b79a163c969e443e95594070))
51
512
 
52
513
  # [1.17.0](https://github.com/hiloteam/Hilo3d/compare/1.16.4...1.17.0) (2022-12-19)
53
514
 
54
-
55
515
  ### Features
56
516
 
57
- * Add WebGL2 support ([#40](https://github.com/hiloteam/Hilo3d/issues/40)) ([3dc82ec](https://github.com/hiloteam/Hilo3d/commit/3dc82ec8f0ce8880413e6e756a57108baa81b77e))
58
-
59
-
517
+ - Add WebGL2 support ([#40](https://github.com/hiloteam/Hilo3d/issues/40))
518
+ ([3dc82ec](https://github.com/hiloteam/Hilo3d/commit/3dc82ec8f0ce8880413e6e756a57108baa81b77e))
60
519
 
61
520
  ## [1.16.4](https://github.com/hiloteam/Hilo3d/compare/1.16.3...1.16.4) (2022-11-14)
62
521
 
63
-
64
522
  ### Bug Fixes
65
523
 
66
- * add TypedArray forEach polyfill to fix iOS9 bug ([59bf238](https://github.com/hiloteam/Hilo3d/commit/59bf238e12a63fc58e937f083ed77f2204e0bbce))
67
- * Fix the bug of destroying mesh when using multiple materials ([e9e0175](https://github.com/hiloteam/Hilo3d/commit/e9e0175036631ec7649aaf16bac06b4a5e9599a9))
68
- * wrong value in get shadow pcf while pos out of range ([#39](https://github.com/hiloteam/Hilo3d/issues/39)) ([f8a425a](https://github.com/hiloteam/Hilo3d/commit/f8a425a0aaf4ad7cc8f177af9ead230f90902e0e))
69
-
70
-
524
+ - add TypedArray forEach polyfill to fix iOS9 bug
525
+ ([59bf238](https://github.com/hiloteam/Hilo3d/commit/59bf238e12a63fc58e937f083ed77f2204e0bbce))
526
+ - Fix the bug of destroying mesh when using multiple materials
527
+ ([e9e0175](https://github.com/hiloteam/Hilo3d/commit/e9e0175036631ec7649aaf16bac06b4a5e9599a9))
528
+ - wrong value in get shadow pcf while pos out of range
529
+ ([#39](https://github.com/hiloteam/Hilo3d/issues/39))
530
+ ([f8a425a](https://github.com/hiloteam/Hilo3d/commit/f8a425a0aaf4ad7cc8f177af9ead230f90902e0e))
71
531
 
72
532
  ## [1.16.3](https://github.com/hiloteam/Hilo3d/compare/1.16.2...1.16.3) (2022-08-24)
73
533
 
74
-
75
534
  ### Bug Fixes
76
535
 
77
- * Fix animation normalization bug ([35b5d19](https://github.com/hiloteam/Hilo3d/commit/35b5d194777e8d7fc3b5b3c1adc853a372e50d68))
78
- * Fix pointerChildren value judgment error during node raycast ([4eee579](https://github.com/hiloteam/Hilo3d/commit/4eee5798cc5eefe7451af8d8317ecc1fe3d6e333))
79
- * Fix frontface should be set in all cases ([6ccc39d](https://github.com/hiloteam/Hilo3d/commit/6ccc39de8ad048acd2602e5005c942422ac320fe))
80
- * Fix in some cases, detecting the supportTransform property will report an error ([9215ba6](https://github.com/hiloteam/Hilo3d/commit/9215ba663bb44a4838cfe71ddf300be0dd8ef2b4))
81
-
536
+ - Fix animation normalization bug
537
+ ([35b5d19](https://github.com/hiloteam/Hilo3d/commit/35b5d194777e8d7fc3b5b3c1adc853a372e50d68))
538
+ - Fix pointerChildren value judgment error during node raycast
539
+ ([4eee579](https://github.com/hiloteam/Hilo3d/commit/4eee5798cc5eefe7451af8d8317ecc1fe3d6e333))
540
+ - Fix frontface should be set in all cases
541
+ ([6ccc39d](https://github.com/hiloteam/Hilo3d/commit/6ccc39de8ad048acd2602e5005c942422ac320fe))
542
+ - Fix in some cases, detecting the supportTransform property will report an error
543
+ ([9215ba6](https://github.com/hiloteam/Hilo3d/commit/9215ba663bb44a4838cfe71ddf300be0dd8ef2b4))
82
544
 
83
545
  ### Features
84
546
 
85
- * add lightManager.updateCustomInfo ([cc6d95b](https://github.com/hiloteam/Hilo3d/commit/cc6d95bae1b1d8732e066314a7511a13dbe71991))
86
-
87
-
547
+ - add lightManager.updateCustomInfo
548
+ ([cc6d95b](https://github.com/hiloteam/Hilo3d/commit/cc6d95bae1b1d8732e066314a7511a13dbe71991))
88
549
 
89
550
  ## [1.16.2](https://github.com/hiloteam/Hilo3d/compare/1.16.1...1.16.2) (2022-03-24)
90
551
 
91
-
92
552
  ### Bug Fixes
93
553
 
94
- * in KHR_techniques_webgl, premultiplyAlpha of material default value should be false ([bdf4100](https://github.com/hiloteam/Hilo3d/commit/bdf41003b803c50fad7e43ec9992c6fc33a14111))
95
-
96
-
554
+ - in KHR_techniques_webgl, premultiplyAlpha of material default value should be false
555
+ ([bdf4100](https://github.com/hiloteam/Hilo3d/commit/bdf41003b803c50fad7e43ec9992c6fc33a14111))
97
556
 
98
557
  ## [1.16.1](https://github.com/hiloteam/Hilo3d/compare/1.16.0...1.16.1) (2022-03-23)
99
558
 
100
-
101
559
  ### Features
102
560
 
103
- * add _Time semantic ([4a9a43d](https://github.com/hiloteam/Hilo3d/commit/4a9a43de486e295a50863d3c064e6687098a44f1))
104
- * add material.shaderName ([25b1880](https://github.com/hiloteam/Hilo3d/commit/25b1880aaf56c6e0b172e19c984741cc7a17a0b0))
105
- * imporve parsing of glTF KHR_techniques_webgl extension ([ca69682](https://github.com/hiloteam/Hilo3d/commit/ca6968209eada71714591122a3ee64d74a482c71))
106
-
107
-
561
+ - add _Time semantic
562
+ ([4a9a43d](https://github.com/hiloteam/Hilo3d/commit/4a9a43de486e295a50863d3c064e6687098a44f1))
563
+ - add material.shaderName
564
+ ([25b1880](https://github.com/hiloteam/Hilo3d/commit/25b1880aaf56c6e0b172e19c984741cc7a17a0b0))
565
+ - imporve parsing of glTF KHR_techniques_webgl extension
566
+ ([ca69682](https://github.com/hiloteam/Hilo3d/commit/ca6968209eada71714591122a3ee64d74a482c71))
108
567
 
109
568
  # [1.16.0](https://github.com/hiloteam/Hilo3d/compare/1.15.20...1.16.0) (2022-01-04)
110
569
 
111
-
112
570
  ### Bug Fixes
113
571
 
114
- * KHR_techniques_webgl parse texture bug ([f45879e](https://github.com/hiloteam/Hilo3d/commit/f45879ed7b826eb6049e14069120f0c2e3192f6b))
115
- * pbr shader texture lod bug ([8256991](https://github.com/hiloteam/Hilo3d/commit/825699140ccc44bf7b9bbc83769526a5fac9584c))
116
- * the nextTick callback of ticker should pass in the dt parameter ([db267cb](https://github.com/hiloteam/Hilo3d/commit/db267cb06d40bdb8ad63a3db7d14ca3ed1a43f71))
117
- * unlit material transparency bug ([1006c60](https://github.com/hiloteam/Hilo3d/commit/1006c60340c511a908fd90d5ef8f331b1749d468))
118
-
572
+ - KHR_techniques_webgl parse texture bug
573
+ ([f45879e](https://github.com/hiloteam/Hilo3d/commit/f45879ed7b826eb6049e14069120f0c2e3192f6b))
574
+ - pbr shader texture lod bug
575
+ ([8256991](https://github.com/hiloteam/Hilo3d/commit/825699140ccc44bf7b9bbc83769526a5fac9584c))
576
+ - the nextTick callback of ticker should pass in the dt parameter
577
+ ([db267cb](https://github.com/hiloteam/Hilo3d/commit/db267cb06d40bdb8ad63a3db7d14ca3ed1a43f71))
578
+ - unlit material transparency bug
579
+ ([1006c60](https://github.com/hiloteam/Hilo3d/commit/1006c60340c511a908fd90d5ef8f331b1749d468))
119
580
 
120
581
  ### Features
121
582
 
122
- * add JOINT & WEIGHT semantic ([2a9da6a](https://github.com/hiloteam/Hilo3d/commit/2a9da6aa59113c8e5f0d7cd4df46a938cd2e7d15))
123
- * Add the function of dynamically modifying the targetFPS of the ticker ([e41f6cf](https://github.com/hiloteam/Hilo3d/commit/e41f6cf521040b0ffa0bf32b980eca1de0c15f84))
124
-
125
-
583
+ - add JOINT & WEIGHT semantic
584
+ ([2a9da6a](https://github.com/hiloteam/Hilo3d/commit/2a9da6aa59113c8e5f0d7cd4df46a938cd2e7d15))
585
+ - Add the function of dynamically modifying the targetFPS of the ticker
586
+ ([e41f6cf](https://github.com/hiloteam/Hilo3d/commit/e41f6cf521040b0ffa0bf32b980eca1de0c15f84))
126
587
 
127
588
  ## [1.15.20](https://github.com/hiloteam/Hilo3d/compare/1.15.19...1.15.20) (2021-07-19)
128
589
 
129
-
130
590
  ### Bug Fixes
131
591
 
132
- * the webglContextLost & webglContextRestored event should be triggered last ([87c9d2d](https://github.com/hiloteam/Hilo3d/commit/87c9d2d8ed9b2005f990db6acdab2e1e107058d9))
133
-
134
-
592
+ - the webglContextLost & webglContextRestored event should be triggered last
593
+ ([87c9d2d](https://github.com/hiloteam/Hilo3d/commit/87c9d2d8ed9b2005f990db6acdab2e1e107058d9))
135
594
 
136
595
  ## [1.15.19](https://github.com/hiloteam/Hilo3d/compare/1.15.18...1.15.19) (2021-05-20)
137
596
 
138
-
139
597
  ### Features
140
598
 
141
- * add wrapS & wrapT property of the framebuffer ([eaae512](https://github.com/hiloteam/Hilo3d/commit/eaae5129fc4324ece40d652bf7b76c625ef36d9b))
142
-
143
-
599
+ - add wrapS & wrapT property of the framebuffer
600
+ ([eaae512](https://github.com/hiloteam/Hilo3d/commit/eaae5129fc4324ece40d652bf7b76c625ef36d9b))
144
601
 
145
602
  ## [1.15.18](https://github.com/hiloteam/Hilo3d/compare/1.15.17...1.15.18) (2021-05-14)
146
- * update doc & .d.ts
147
603
 
604
+ - update doc & .d.ts
148
605
 
149
606
  ## [1.15.17](https://github.com/hiloteam/Hilo3d/compare/1.15.16...1.15.17) (2021-02-22)
150
607
 
151
-
152
608
  ### Bug Fixes
153
609
 
154
- * glTF texture should ignore texture colorspace conversion, fix [#32](https://github.com/hiloteam/Hilo3d/issues/32) ([08f1252](https://github.com/hiloteam/Hilo3d/commit/08f1252e4658131f425419f25c21313859645aea))
155
-
610
+ - glTF texture should ignore texture colorspace conversion, fix
611
+ [#32](https://github.com/hiloteam/Hilo3d/issues/32)
612
+ ([08f1252](https://github.com/hiloteam/Hilo3d/commit/08f1252e4658131f425419f25c21313859645aea))
156
613
 
157
614
  ### Features
158
615
 
159
- * add colorSpaceConversion property of the texture ([ddd170b](https://github.com/hiloteam/Hilo3d/commit/ddd170be451b7f76103f54d31ab934398254da2b))
160
- * add PBRMaterial emissionFactor support ([de7cf25](https://github.com/hiloteam/Hilo3d/commit/de7cf25fd36cbc845fa829f7270f95e8f7aaa795))
161
-
162
-
616
+ - add colorSpaceConversion property of the texture
617
+ ([ddd170b](https://github.com/hiloteam/Hilo3d/commit/ddd170be451b7f76103f54d31ab934398254da2b))
618
+ - add PBRMaterial emissionFactor support
619
+ ([de7cf25](https://github.com/hiloteam/Hilo3d/commit/de7cf25fd36cbc845fa829f7270f95e8f7aaa795))
163
620
 
164
621
  ## [1.15.16](https://github.com/hiloteam/Hilo3d/compare/1.15.15...1.15.16) (2021-01-20)
165
622
 
166
- * update doc & .d.ts
167
- * refactor: optimize multiple destroy framebuffer ([c68599e](https://github.com/hiloteam/Hilo3d/commit/c68599e131c2f1b258d5675884cdcc06fcdda279))
623
+ - update doc & .d.ts
624
+ - refactor: optimize multiple destroy framebuffer
625
+ ([c68599e](https://github.com/hiloteam/Hilo3d/commit/c68599e131c2f1b258d5675884cdcc06fcdda279))
168
626
 
169
627
  ## [1.15.15](https://github.com/hiloteam/Hilo3d/compare/1.15.14...1.15.15) (2021-01-05)
170
628
 
171
-
172
629
  ### Bug Fixes
173
630
 
174
- * Animation.clipTime should be updated while updating the animStatesList ([447ae1e](https://github.com/hiloteam/Hilo3d/commit/447ae1e75a2213865a9ed42ac08a048ecf0ac9a5))
175
-
176
-
631
+ - Animation.clipTime should be updated while updating the animStatesList
632
+ ([447ae1e](https://github.com/hiloteam/Hilo3d/commit/447ae1e75a2213865a9ed42ac08a048ecf0ac9a5))
177
633
 
178
634
  ## [1.15.14](https://github.com/hiloteam/Hilo3d/compare/1.15.13...1.15.14) (2020-12-15)
179
635
 
180
-
181
636
  ### Features
182
637
 
183
- * add LoadCache.getLoaded ([302c690](https://github.com/hiloteam/Hilo3d/commit/302c690b341c30537510f8b1b56cccc491a217b8))
184
- * add Loader.preHandlerUrl ([ed7ff87](https://github.com/hiloteam/Hilo3d/commit/ed7ff8715701bbd5d81278985d88b76597297171))
185
-
186
-
638
+ - add LoadCache.getLoaded
639
+ ([302c690](https://github.com/hiloteam/Hilo3d/commit/302c690b341c30537510f8b1b56cccc491a217b8))
640
+ - add Loader.preHandlerUrl
641
+ ([ed7ff87](https://github.com/hiloteam/Hilo3d/commit/ed7ff8715701bbd5d81278985d88b76597297171))
187
642
 
188
643
  ## [1.15.13](https://github.com/hiloteam/Hilo3d/compare/1.15.12...1.15.13) (2020-11-18)
189
644
 
190
-
191
645
  ### Bug Fixes
192
646
 
193
- * RenderList.useInstanced should update after renderer init ([d91293e](https://github.com/hiloteam/Hilo3d/commit/d91293ec2cefb7041ceb727aa07db7b37f229ba4))
194
-
195
-
647
+ - RenderList.useInstanced should update after renderer init
648
+ ([d91293e](https://github.com/hiloteam/Hilo3d/commit/d91293ec2cefb7041ceb727aa07db7b37f229ba4))
196
649
 
197
650
  ## [1.15.12](https://github.com/hiloteam/Hilo3d/compare/1.15.11...1.15.12) (2020-11-05)
198
651
 
199
-
200
652
  ### Bug Fixes
201
653
 
202
- * Semantic Tangent data should also be returned when there is no normal map ([c7b261b](https://github.com/hiloteam/Hilo3d/commit/c7b261b08803b6c4a0b185a9bac26e8725cf3e5d))
203
-
654
+ - Semantic Tangent data should also be returned when there is no normal map
655
+ ([c7b261b](https://github.com/hiloteam/Hilo3d/commit/c7b261b08803b6c4a0b185a9bac26e8725cf3e5d))
204
656
 
205
657
  ### Features
206
658
 
207
- * Add GLTFLoader KHR_materials_clearcoat extension support ([0cfa90c](https://github.com/hiloteam/Hilo3d/commit/0cfa90c5109f8cd06aaa0478cc93fae1e4aeed00))
208
- * Add material stencil support, close [#30](https://github.com/hiloteam/Hilo3d/issues/30) ([6dbb2c1](https://github.com/hiloteam/Hilo3d/commit/6dbb2c1530e47ba8a5ab5e148cdc4565a921cded))
209
- * Add PBRMaterial Clearcoat support, close [#15](https://github.com/hiloteam/Hilo3d/issues/15) ([b83cbe6](https://github.com/hiloteam/Hilo3d/commit/b83cbe62dd243e1987573ab85871c5f64aaef68e))
210
-
211
-
659
+ - Add GLTFLoader KHR_materials_clearcoat extension support
660
+ ([0cfa90c](https://github.com/hiloteam/Hilo3d/commit/0cfa90c5109f8cd06aaa0478cc93fae1e4aeed00))
661
+ - Add material stencil support, close [#30](https://github.com/hiloteam/Hilo3d/issues/30)
662
+ ([6dbb2c1](https://github.com/hiloteam/Hilo3d/commit/6dbb2c1530e47ba8a5ab5e148cdc4565a921cded))
663
+ - Add PBRMaterial Clearcoat support, close [#15](https://github.com/hiloteam/Hilo3d/issues/15)
664
+ ([b83cbe6](https://github.com/hiloteam/Hilo3d/commit/b83cbe62dd243e1987573ab85871c5f64aaef68e))
212
665
 
213
666
  ## [1.15.11](https://github.com/hiloteam/Hilo3d/compare/1.15.10...1.15.11) (2020-10-19)
214
667
 
215
-
216
668
  ### Bug Fixes
217
669
 
218
- * attribute pointer should use GeometryData.size ([bdab767](https://github.com/hiloteam/Hilo3d/commit/bdab767f621b17cb5fdd00ce633c1571383f91b0))
219
-
220
-
670
+ - attribute pointer should use GeometryData.size
671
+ ([bdab767](https://github.com/hiloteam/Hilo3d/commit/bdab767f621b17cb5fdd00ce633c1571383f91b0))
221
672
 
222
673
  ## [1.15.10](https://github.com/hiloteam/Hilo3d/compare/1.15.9...1.15.10) (2020-10-13)
223
674
 
224
-
225
675
  ### Bug Fixes
226
676
 
227
- * Add light.isDirty and fix the bug that directionalLight lignt shadow does not update ([d808a89](https://github.com/hiloteam/Hilo3d/commit/d808a8992366c9d7537a26836f472bfd4ae1d051))
228
-
677
+ - Add light.isDirty and fix the bug that directionalLight lignt shadow does not update
678
+ ([d808a89](https://github.com/hiloteam/Hilo3d/commit/d808a8992366c9d7537a26836f472bfd4ae1d051))
229
679
 
230
680
  ### Features
231
681
 
232
- * add material.frontFace ([ef85b56](https://github.com/hiloteam/Hilo3d/commit/ef85b56f2eb1170ac2763deee2d059d514c08297))
233
-
234
-
682
+ - add material.frontFace
683
+ ([ef85b56](https://github.com/hiloteam/Hilo3d/commit/ef85b56f2eb1170ac2763deee2d059d514c08297))
235
684
 
236
685
  ## [1.15.9](https://github.com/hiloteam/Hilo3d/compare/1.15.8...1.15.9) (2020-09-10)
237
686
 
238
-
239
687
  ### Bug Fixes
240
688
 
241
- * capabilities remove duplicate MAX_COMBINED_TEXTURE_IMAGE_UNITS ([f601071](https://github.com/hiloteam/Hilo3d/commit/f6010717e78dcf3e96e482797016bf71143e8d32))
242
-
689
+ - capabilities remove duplicate MAX_COMBINED_TEXTURE_IMAGE_UNITS
690
+ ([f601071](https://github.com/hiloteam/Hilo3d/commit/f6010717e78dcf3e96e482797016bf71143e8d32))
243
691
 
244
692
  ### Features
245
693
 
246
- * add userData property to Node,Geometry,Material and Skeleton ([40db285](https://github.com/hiloteam/Hilo3d/commit/40db285bfd5e3299b8e94931bed453b2a583d964))
247
-
248
-
694
+ - add userData property to Node,Geometry,Material and Skeleton
695
+ ([40db285](https://github.com/hiloteam/Hilo3d/commit/40db285bfd5e3299b8e94931bed453b2a583d964))
249
696
 
250
697
  ## [1.15.8](https://github.com/hiloteam/Hilo3d/compare/1.15.7...1.15.8) (2020-09-01)
251
- * update doc & .d.ts
252
-
253
698
 
699
+ - update doc & .d.ts
254
700
 
255
701
  ## [1.15.7](https://github.com/hiloteam/Hilo3d/compare/1.15.6...1.15.7) (2020-08-31)
256
702
 
257
-
258
703
  ### Bug Fixes
259
704
 
260
- * iOS 9 doesn't support TypedArray slice, add polyfill ([7ad428a](https://github.com/hiloteam/Hilo3d/commit/7ad428ac71cd8a72ed8f601dd8e43097de7075ee))
261
-
262
-
705
+ - iOS 9 doesn't support TypedArray slice, add polyfill
706
+ ([7ad428a](https://github.com/hiloteam/Hilo3d/commit/7ad428ac71cd8a72ed8f601dd8e43097de7075ee))
263
707
 
264
708
  ## [1.15.6](https://github.com/hiloteam/Hilo3d/compare/1.15.5...1.15.6) (2020-08-26)
265
- * update doc & .d.ts
266
709
 
710
+ - update doc & .d.ts
267
711
 
268
712
  ## [1.15.5](https://github.com/hiloteam/Hilo3d/compare/1.15.4...1.15.5) (2020-07-31)
269
713
 
270
-
271
714
  ### Bug Fixes
272
715
 
273
- * vao.getResources miss checking whether the attribute is empty ([40ea681](https://github.com/hiloteam/Hilo3d/commit/40ea681bc8189081a784600522977d17e48a8486))
274
-
716
+ - vao.getResources miss checking whether the attribute is empty
717
+ ([40ea681](https://github.com/hiloteam/Hilo3d/commit/40ea681bc8189081a784600522977d17e48a8486))
275
718
 
276
719
  ### Features
277
720
 
278
- * add pbrMaterial.isSpecularEnvMapIncludeMipmaps ([#23](https://github.com/hiloteam/Hilo3d/issues/23)) ([fea3cdf](https://github.com/hiloteam/Hilo3d/commit/fea3cdfaded3c34452ba7bcf2273e74fd5fa76cb))
279
-
280
-
721
+ - add pbrMaterial.isSpecularEnvMapIncludeMipmaps
722
+ ([#23](https://github.com/hiloteam/Hilo3d/issues/23))
723
+ ([fea3cdf](https://github.com/hiloteam/Hilo3d/commit/fea3cdfaded3c34452ba7bcf2273e74fd5fa76cb))
281
724
 
282
725
  ## [1.15.4](https://github.com/hiloteam/Hilo3d/compare/1.15.3...1.15.4) (2020-07-07)
283
726
 
284
-
285
727
  ### Bug Fixes
286
728
 
287
- * skeleton.clone should also clone jointNames ([8168c64](https://github.com/hiloteam/Hilo3d/commit/8168c6457fb51f5d5df1119dde202956b0a5ac8e))
288
-
289
-
729
+ - skeleton.clone should also clone jointNames
730
+ ([8168c64](https://github.com/hiloteam/Hilo3d/commit/8168c6457fb51f5d5df1119dde202956b0a5ac8e))
290
731
 
291
732
  ## [1.15.3](https://github.com/hiloteam/Hilo3d/compare/1.15.2...1.15.3) (2020-07-03)
292
733
 
293
-
294
734
  ### Bug Fixes
295
735
 
296
- * skinnedMesh bone position is wrong under special circumstances ([cccd91e](https://github.com/hiloteam/Hilo3d/commit/cccd91e0dc2c552922c0083293532530ee56428d))
297
-
298
-
736
+ - skinnedMesh bone position is wrong under special circumstances
737
+ ([cccd91e](https://github.com/hiloteam/Hilo3d/commit/cccd91e0dc2c552922c0083293532530ee56428d))
299
738
 
300
739
  ## [1.15.2](https://github.com/hiloteam/Hilo3d/compare/1.15.1...1.15.2) (2020-06-30)
301
740
 
302
-
303
741
  ### Bug Fixes
304
742
 
305
- * ResourceManager.destroyUnsuedResource parameter become optional ([3e15fbe](https://github.com/hiloteam/Hilo3d/commit/3e15fbe9d6c141e580e85bfe97bd11cb253c4d0d))
306
-
307
-
743
+ - ResourceManager.destroyUnsuedResource parameter become optional
744
+ ([3e15fbe](https://github.com/hiloteam/Hilo3d/commit/3e15fbe9d6c141e580e85bfe97bd11cb253c4d0d))
308
745
 
309
746
  ## [1.15.1](https://github.com/hiloteam/Hilo3d/compare/1.15.0...1.15.1) (2020-06-24)
310
747
 
311
-
312
748
  ### Features
313
749
 
314
- * add skeleton.resetJointNamesByNodeName ([91418e4](https://github.com/hiloteam/Hilo3d/commit/91418e4e3521a33e9b3dcf5a05df0da7f4460dee))
315
-
316
-
750
+ - add skeleton.resetJointNamesByNodeName
751
+ ([91418e4](https://github.com/hiloteam/Hilo3d/commit/91418e4e3521a33e9b3dcf5a05df0da7f4460dee))
317
752
 
318
753
  # [1.15.0](https://github.com/hiloteam/Hilo3d/compare/1.14.0...1.15.0) (2020-06-24)
319
754
 
320
-
321
755
  ### Bug Fixes
322
756
 
323
- * cubic spline interpolation for quaternions is wrong ([47a93ab](https://github.com/hiloteam/Hilo3d/commit/47a93abef05435236dab150146e37031476c113c))
324
- * geometryData bindLayout change should repoint attribute ([25d1282](https://github.com/hiloteam/Hilo3d/commit/25d12826b77dbfdff51ff647aaca90dcbea0be93))
325
-
757
+ - cubic spline interpolation for quaternions is wrong
758
+ ([47a93ab](https://github.com/hiloteam/Hilo3d/commit/47a93abef05435236dab150146e37031476c113c))
759
+ - geometryData bindLayout change should repoint attribute
760
+ ([25d1282](https://github.com/hiloteam/Hilo3d/commit/25d12826b77dbfdff51ff647aaca90dcbea0be93))
326
761
 
327
762
  ### Features
328
763
 
329
- * Add easier log level control ([b0a2870](https://github.com/hiloteam/Hilo3d/commit/b0a28708be3fbfa5714c4daeee6bbd1965d4a094))
330
- * add Skeleton ([#9](https://github.com/hiloteam/Hilo3d/issues/9)) ([7944d70](https://github.com/hiloteam/Hilo3d/commit/7944d70eed88a694875e4a8842c53131a490f982))
331
- * add SkinedMesh.resetJointNamesByNodeName ([14f095b](https://github.com/hiloteam/Hilo3d/commit/14f095b49de7a8819563b2ddc331069019e0bbeb))
332
- * add skinedMesh.resetSkinIndices ([b7df689](https://github.com/hiloteam/Hilo3d/commit/b7df689785484f731fb1952ad9783926850d8ee8))
333
-
764
+ - Add easier log level control
765
+ ([b0a2870](https://github.com/hiloteam/Hilo3d/commit/b0a28708be3fbfa5714c4daeee6bbd1965d4a094))
766
+ - add Skeleton ([#9](https://github.com/hiloteam/Hilo3d/issues/9))
767
+ ([7944d70](https://github.com/hiloteam/Hilo3d/commit/7944d70eed88a694875e4a8842c53131a490f982))
768
+ - add SkinedMesh.resetJointNamesByNodeName
769
+ ([14f095b](https://github.com/hiloteam/Hilo3d/commit/14f095b49de7a8819563b2ddc331069019e0bbeb))
770
+ - add skinedMesh.resetSkinIndices
771
+ ([b7df689](https://github.com/hiloteam/Hilo3d/commit/b7df689785484f731fb1952ad9783926850d8ee8))
334
772
 
335
773
  ### Performance Improvements
336
774
 
337
- * improve resource management performance ([#10](https://github.com/hiloteam/Hilo3d/issues/10)) ([6ff8cbd](https://github.com/hiloteam/Hilo3d/commit/6ff8cbd73f622ac2d47a895e797dabfca37084aa))
338
-
339
-
775
+ - improve resource management performance ([#10](https://github.com/hiloteam/Hilo3d/issues/10))
776
+ ([6ff8cbd](https://github.com/hiloteam/Hilo3d/commit/6ff8cbd73f622ac2d47a895e797dabfca37084aa))
340
777
 
341
778
  # [1.14.0](https://github.com/hiloteam/Hilo3d/compare/1.13.47...1.14.0) (2020-05-06)
342
779
 
343
-
344
780
  ### Bug Fixes
345
781
 
346
- * GLTFParser.getImageType use indexOf check support type ([262dfb8](https://github.com/hiloteam/Hilo3d/commit/262dfb8d931b421a0d56b2bb7ef1522e6c6f8682))
347
-
782
+ - GLTFParser.getImageType use indexOf check support type
783
+ ([262dfb8](https://github.com/hiloteam/Hilo3d/commit/262dfb8d931b421a0d56b2bb7ef1522e6c6f8682))
348
784
 
349
785
  ### Features
350
786
 
351
- * add GeometryData.getCopy ([4a03269](https://github.com/hiloteam/Hilo3d/commit/4a0326911c0cd83dcb362ef5c2d19a0c9614ab36))
352
- * AnimationStates support custom State handler register ([cda1d01](https://github.com/hiloteam/Hilo3d/commit/cda1d012e0596c7114a0f8eac9ab3e83f7ad1141))
353
-
354
-
787
+ - add GeometryData.getCopy
788
+ ([4a03269](https://github.com/hiloteam/Hilo3d/commit/4a0326911c0cd83dcb362ef5c2d19a0c9614ab36))
789
+ - AnimationStates support custom State handler register
790
+ ([cda1d01](https://github.com/hiloteam/Hilo3d/commit/cda1d012e0596c7114a0f8eac9ab3e83f7ad1141))
355
791
 
356
792
  ## [1.13.47](https://github.com/hiloteam/Hilo3d/compare/1.13.46...1.13.47) (2020-01-07)
357
793
 
358
-
359
794
  ### Bug Fixes
360
795
 
361
- * LazyTexture release ktx image buffer data has not work ([321f017](https://github.com/hiloteam/Hilo3d/commit/321f017c20f6ef49b91704def1901831626f3b4a))
362
-
363
-
796
+ - LazyTexture release ktx image buffer data has not work
797
+ ([321f017](https://github.com/hiloteam/Hilo3d/commit/321f017c20f6ef49b91704def1901831626f3b4a))
364
798
 
365
799
  ## [1.13.46](https://github.com/hiloteam/Hilo3d/compare/1.13.45...1.13.46) (2019-12-31)
366
800
 
367
-
368
801
  ### Performance Improvements
369
802
 
370
- * optimize Buffer.uploadGeometryData ([152ec21](https://github.com/hiloteam/Hilo3d/commit/152ec2156002b02ca11a3a4dd8d23ce735176d44))
371
-
372
-
803
+ - optimize Buffer.uploadGeometryData
804
+ ([152ec21](https://github.com/hiloteam/Hilo3d/commit/152ec2156002b02ca11a3a4dd8d23ce735176d44))