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