Releases: oframe/ogpu
Releases · oframe/ogpu
Release list
v0.1.3
webgpu-spec-lookup: cached local W3C spec + grep
W3C spec lookups now run against a preprocessed local copy refreshed at most once per day, instead of a WebFetch of the 4.5 MB spec page per question.
- New
update_spec.pydownloads https://www.w3.org/TR/webgpu/ only when the cached copy's date differs from today, strips it to ~628 KB of greppable text, and prefixes every heading with its[#anchor]so a grep hit traces back to a spec section. - Benefit: spec answers go from slow, lossy whole-page fetches to near-instant local
grep— exact identifiers and limit values (GPUFeatureName,GPUSupportedLimits, defaults) come back verbatim, and repeat lookups reuse the same-day cache. - Chrome "What's New" lookups still use
WebFetch. The downloaded cache is gitignored.
v0.1.2 — skinning + glTF PBR
Focused on the skinning and glTF paths.
Highlights
Skinning + glTF
GLTFLoader.getSkinnedMesh({ code, ibl })— new turnkey getter that returns a fully-wired skinned, PBR-lit mesh: it builds theSkin(compute buffers) and itsAnimation, decodes the glTF material maps (with factor-only fallbacks for the maps a file lacks), and binds everything — skin buffers, IBL, material factors — against the skinned-PBR shader layout. Returns{ mesh, skin, animation }; driveanimation.elapsed+skin.update()per frame.- Skinning examples split into JSON + glTF (PBR) — the hand-built JSON rig and the glTF/Mixamo path are now separate examples. The new
skinninggltfexample deliberately keeps the manual wiring (geometry, material maps, IBL bindings) to show how to unfold a glTF mesh yourself; PBR shading was folded in via the pbr-shading skill.getSkinnedMeshis the one-liner alternative. - Real-time shadow mapping in
skinninggltf— the glTF example now renders a depth-pass shadow map: a vertex-only caster pulls skinned positions from theSkincompute buffer (so the cast shadow tracks the animation) into an orthographic light's depth target, and the character + a floor sample it back with 3×3 PCF for a soft contact shadow and self-shadowing. - glTF inverse-bind matrices are read straight from the file (authoritative bind-inverse), with FK-from-bind-pose only as the fallback for hand-built rigs.
- Skeleton-ancestor nodes (Blender armature / Mixamo
Neo_Reference) are rebuilt as animatable transforms so baked root motion plays back correctly.
PBR / IBL
createBrdfLUTutil — the split-sum BRDF LUT is now a shared helper, deduped across the PBR/skinning examples instead of being rebuilt per example.- glTF textures go through the engine
Textureclass instead of raw WebGPU calls (sRGB-correct, mipmapped).
Skills (agent tooling)
shadow-mappingskill — folds real-time shadow mapping (depth-pass caster + comparison-sampled PCF receiver) into any existingRenderPipeline/shader, covering the static, skinned/compute-positioned, and IBL-only cases. Companion to thepbr-shadingskill; it's the skill theskinninggltfshadow pass above was built with.
Performance
- Skinning animation sampling sped up; added a high-mesh-count example to exercise it.
- glTF primitives share
RenderPipelines keyed by cull/blend state (typically 1–2 pipelines per file). - Meshes skip redundant
setPipelinevia per-pass bookkeeping.
Full diff: v0.1.1...v0.1.2
v0.1.1 — repomap tooling normalization
Tooling
- Repomap path separators normalized to POSIX.
build-module-graph.mjsandbuild-api-digest.mjsemitted OS-native separators, so a repomap regenerated on Windows differed from one on mac/Linux on every path — churning the drift gate and blocking cross-platform commits. Both generators now route every repo-relative id through arel()helper that forces/. Output is unchanged on mac/Linux; the fix is preventive for Windows contributors. (eda299e)
Full changelog: v0.1.0...v0.1.1
v0.1.0
First tagged release.
Highlights:
- New High Mesh Count performance example (one pipeline + shared box geometry, N meshes each with own bind group; mesh count live-tunable via GUI).
- New Performance gallery section.
- Faster skinning example animation.
- glTF (fix): previously created one pipeline per node — now shared across nodes by cull/blend state, cutting redundant pipeline objects per model. Pull to pick up.
- Shadowmapping refactor; shared vertex-buffer layout when a pipeline draws multiple geometries.