glint_engine 0.2.1 copy "glint_engine: ^0.2.1" to clipboard
glint_engine: ^0.2.1 copied to clipboard

A Flutter-first 3D engine on Flutter GPU: glTF models, PBR + HDRI lighting, skeletal animation, physics, tap picking, anchored widgets, and a real-time game loop.

0.2.1 #

  • Migrate the Flutter GPU backend to the current flutter_gpu API so Glint builds on recent Flutter master SDKs again. Vertex and index counts moved from bindVertexBuffer/bindIndexBuffer to draw/drawIndexed, RenderPass.draw now takes an explicit vertex count, and TextureCoordinateSystem was removed upstream.
  • Load shader bundles through the now-asynchronous ShaderLibrary.fromAsset. GlintGameView resolves its engine and shader-graph libraries once at the top of each frame and caches them, so the per-instance draw loop stays synchronous.
  • Recompile shaders/glint.shaderbundle with the current impellerc. Impeller now requires shader bundle format version 2 and rejects the version 1 bundle that 0.2.0 shipped with, so the engine failed at ShaderLibrary init on recent SDKs even once the Dart API changes were in place.
  • Fix Label3D anchors never appearing on a static scene. The model metadata labels project through only becomes available after the first asynchronous render, and the only setState in the GPU viewport is the render scheduler, so nothing rebuilt the label layer once it landed. Anchored widgets stayed invisible until a gesture or an autoRotate tick happened to rebuild — which meant they never showed at all through Scene3D, where autoRotate defaults to false.
  • Await the decode in GlintTexturePixels.fromAsset so a failure is wrapped as a GlintTextureException instead of escaping the surrounding try block unwrapped.

0.2.0 #

  • Complete skeletal skinning handoff: render static skins through their rig, validate joint limits and indices, accept normalized integer weights, avoid bind-pose culling errors, preserve authored float weights, and add live GPU regression coverage with the Fox asset. Batch opaque skinned geometry ahead of static geometry to prevent Flutter GPU vertex-layout state leakage.
  • Add glTF CUBICSPLINE animation sampling and optional one-shot playback.
  • Add a full animation runtime with interruption-safe crossfades, additive and override layers, descendant/name bone masks, timeline events, reverse playback, loop-safe root motion, and parameter-driven state machines. Allow GlintGameInstance to consume evaluated poses directly and reuse those transforms for skin matrices.
  • Add a backend-neutral full 3D physics contract: quaternion transforms, angular dynamics, compound/convex/mesh/heightfield shapes, joints, CCD, triggers, events, spatial queries, body exclusion, and interpolation.
  • Add the optional native glint_box3d backend and a reusable raycast vehicle controller with suspension, tire grip, anti-roll, gears, aero, and boost. Expose collider materials to queries, validate vehicle configurations, use relative contact velocity, apply equal forces to dynamic driving surfaces, and provide correctly steered/spinning wheel poses.
  • Add backend-neutral in-memory rollback snapshots covering the simulation clock, bodies, gravity, and registered gameplay systems. Add fixed-tick input recording, portable JSON replay tapes, quantized state digests with exact divergence reporting, and a seeded body/contact/query/vehicle stress runner.
  • Add skinned-character and arcade-physics showcase pages.
  • Add deterministic pooled particle simulation and GPU billboard rendering: point/box/sphere/cone shapes, bursts, curves, gradients, sprite sheets, local/world simulation, noise, sorting, alpha/additive blending, events, and backend-neutral physics collision queries.
  • Add a backend-neutral audio facade with cached asset/file/network/memory sources, streamed loading policy, buses, voice controls, spatial attenuation, moving listeners/sources, and Doppler. Add the optional native glint_soloud SoLoud/miniaudio backend.
  • Add validated KTX2 parsing, uncompressed RGBA/RGB/BGRA decode, mip selection, KHR_texture_basisu GLB resolution, and the optional native glint_basis package using the official Basis Universal transcoder on a background isolate.
  • Add typed JSON shader graphs with cycle/type validation, parameters, custom textures, offline Flutter GPU bundle compilation, and runtime PBR materials for both static and skinned instances.
  • Add an advanced-systems showcase combining custom graph materials, pooled particles, and generated in-memory spatial audio.
  • Add a backend-neutral capsule character motor with acceleration, gravity, slopes, sweep-and-slide movement, step climbing, moving-platform velocity, ground snapping, jumping, and rollback state.
  • Add declarative skeletal ragdolls with arbitrary node mappings, fixed/hinge/ spherical constraints, animation-driven kinematic mode, dynamic activation, per-part impulses, and partial animation/physics pose blending.
  • Track active contacts and triggers in the core world, aggregate compound shape pairs, emit fixed-tick contact-stay events, clean up destroyed pairs, and expose per-step callback/backend timings and workload counters.

0.1.2 #

  • Explicitly declare supported platforms (iOS, macOS, Android) in pubspec.yaml. Pana's automatic detection reports 0/6 platforms for any package depending on flutter_gpu, because its dart:nativewrappers import chain isn't statically resolvable — declaring platforms overrides that detection instead of waiting on it.

0.1.1 #

  • Rewrite the README: pub.dev badges, quick-nav links, and an FAQ covering platform support and the flutter_scene comparison directly.

0.1.0 #

The first complete Glint release: a pure-Dart 3D engine on Flutter GPU.

  • Render binary glTF 2.0 models from assets or network: scene hierarchy, node transforms, generated or authored normals, 16/32-bit indices.
  • Per-primitive material batches with embedded base-color textures (decoded with a 1K cap for mobile memory), factors, metallic, roughness.
  • GGX metallic-roughness PBR with directional lighting, HDRI image-based lighting (built-in Radiance .hdr decoder and CPU prefiltering), and distance fog.
  • glTF node animation playback: translation/rotation/scale channels, LINEAR/STEP sampling, quaternion slerp, automatic looping.
  • Scene3D declarative API: scenes route to the GPU renderer, materials update live through setState, hot reload rebuilds shaders.
  • Tap picking via CPU raycasting, and Label3D — Flutter widgets anchored to model surfaces with fade/hide occlusion policies.
  • Scroll-aware gesture routing so scenes cooperate with scrollable pages.
  • GlintGameView game loop: unlimited model instances with per-node transforms, free look-at camera, translucent blob-shadow pass, per-frame frustum culling, and an allocation-free draw loop (validated at 60 fps on iPhone with ~160 draws per frame).
  • Live FPS/frame-time/draw/triangle diagnostics and typed, actionable errors for every asset failure.
  • Four runnable examples: an endless-runner game, a product configurator, a minimal viewer, and an anchored-labels demo.

0.0.1 #

  • Establish the Glint package and declarative Scene3D(scene:) API.
  • Add the pure-Dart bootstrap renderer, orbit gestures, and overlay demo.
  • Add indexed, depth-tested, textured flutter_gpu rendering.
  • Add PNG/JPEG asset decoding with actionable texture errors.
18
likes
160
points
286
downloads

Documentation

API reference

Publisher

verified publisherkiddobuild.dev

Weekly Downloads

A Flutter-first 3D engine on Flutter GPU: glTF models, PBR + HDRI lighting, skeletal animation, physics, tap picking, anchored widgets, and a real-time game loop.

Homepage
Repository (GitHub)
View/report issues
Contributing

Topics

#gltf #game-engine #rendering #graphics #flutter-gpu

License

MIT (license)

Dependencies

flutter, flutter_gpu, flutter_gpu_shaders, hooks, vector_math

More

Packages that depend on glint_engine