Releases: awakekt/awake
Releases · awakekt/awake
Release list
v0.1.0-alpha.4 — Pacing, State Restoration & Skybox Pipeline
Added
- Named scene entity creation helper. Added
SceneAppLifecycleRuntime.findOrCreateEntity(name)to retrieve or instantiate and label missing scene entities during runtime authoring and testing. - Autonomous 3D scene dirtiness tracking and frame loop pacing override. Added
isRealtimeProviderandisDirtyProviderparameters toRenderSystem3DanddefaultInfrastructureSystemswith allocation-free primitive camera and viewport change tracking, enabling the engine to bypass full scene re-planning and draw call compilation on static viewports. AddedframeRateOverridetoDesktopFrameLoopto allow host applications to dynamically rebind target frame rates at runtime. - Window focus throttling and background frame rate pacing. Added
throttleCpuWhenNotForegroundand configurablebackgroundFrameRatetoWindowConfigandAppWindowConfigBuilder, bound GLFW window focus querying (glfwGetWindowAttrib(window, GLFW_FOCUSED)), and wired focus-adaptive frame pacing intoDesktopFrameLoopandVulkanDesktopHostto eliminate unnecessary CPU/GPU battery drain when unfocused. - MutableState and mutableStateOf restoration. Restored
State<T>,MutableState<T>, andmutableStateOf(initial)with Kotlin property delegation (getValue/setValue) and destructuring operators in:awake:compose:runtime, providing standard, idiomatic local state containers forrememberacross all Compose UI targets. - Sealed skybox mode hierarchy, cubemap orientation, and clip-space math helpers. Refactored
Skybox.modeinto a sealed interface (Procedural,Cubemap,SolidColor) with backward-compatible property delegates, introducedCubemapFacesorientation definitions and 90° FOV lens projection, addedunprojectFarRayandunprojectClipToWorldinshader-dsl, and scoped the clip space decision matrix to engine skills. - Cubemap texture and runtime shader pipeline. Added 6-face cubemap metadata validation and packing in
TextureAsset, cubemap binding contracts inResourceBinding, ASLtextureCuberesource bindings andtextureSampleCube/textureSampleLevelCubebuiltins inshader-dsl, hardware cubemap image view creation for Vulkan (VK_IMAGE_VIEW_TYPE_CUBE) and WebGPU (GPUTextureViewDimension.Cube), andSkyboxCubemapShaderwith uniform layout packing inshader-pack. - Pull request governance and milestone policy. Added CI verification and agent workflow invariants requiring every pull request to be linked to an active milestone and to update
CHANGELOG.md. - Version-one project contract. Added the shared
awake.project.jsonandassets.lock.jsonmodels and structural validators for Core and Studio consumers, including project-relative path, plugin, version, and SHA-256 pin checks. - Portable SHA-256 content digest. Added a multiplatform Core IO digest utility for reusable content identity and integrity verification.
- Derived project compatibility metadata. Canonical project manifests can declare an explicit
minEngineVersion, while the published project module exposes the Git-derived engine version without hardcoded defaults; Central releases now publish automatically after validation.
Fixed
- Rotation-invariant shadow cascade stabilization and allocation-free chart rendering. Derived analytical bounding spheres for frustum cascades in
ShadowCascadesMathto eliminate projection scaling wobble on camera rotation/orbit, corrected cascade containment and border PCF clamping inAslShadowShaders, and addedshowDots = falseoption with direct path evaluation inShadcnLineChartto eliminate per-frame allocations and canvas draw call spikes. - Selective shadow depth pre-pass recording. Restrict Vulkan and WebGPU depth pre-pass loops to only active directional cascades and authored subpasses instead of clearing and submitting passes across all 28 shadow array layers each frame.
v0.1.0-alpha.3
What's Changed
- Mature physics and skeletal sockets by @ronjunevaldoz in #4
- Run engine-showcase common tests across supported targets by @ronjunevaldoz in #5
- fix(ui): complete showcase parity and interaction polish by @ronjunevaldoz in #7
- fix: quiet MoltenVK configuration logging by @ronjunevaldoz in #9
- fix: derive template consumer version from Gradle by @ronjunevaldoz in #8
- fix: align scene rendering with editor viewport by @ronjunevaldoz in #11
- docs(github): add pull request template by @ronjunevaldoz in #13
- fix(webgpu): retain unchanged UI upload buffers by @ronjunevaldoz in #16
- test(rendering): ignore point-light shadow passes by @ronjunevaldoz in #10
- fix(render): align ClipSpace across desktop picking and shaders by @ronjunevaldoz in #19
- fix(render): retain unchanged UI staging spans by @ronjunevaldoz in #18
- docs: simplify public library README by @ronjunevaldoz in #15
- fix(render): restore desktop environment and group separators by @ronjunevaldoz in #20
- feat(scene): persist PBR color factors by @ronjunevaldoz in #21
- feat(core): extract portable storage and asset capabilities by @ronjunevaldoz in #22
- fix(ci): streamline snapshot publishing and verification by @ronjunevaldoz in #23
- docs: add contribution and security policies by @ronjunevaldoz in #24
- feat(ui): expose slider drag completion callback by @ronjunevaldoz in #26
- feat(runtime): select an isolated render world by @ronjunevaldoz in #27
- fix(render): make debug overlays depth-independent on Vulkan by @ronjunevaldoz in #25
- chore(agents): purge legacy .claude and standardize on .agents by @ronjunevaldoz in #28
- feat(shadcn): support shortcut badges and trigger modifier in menubar by @ronjunevaldoz in #29
- feat(showcase): add interactive gestures page by @ronjunevaldoz in #30
- feat(asset): add RawHeightmapCodec, SplatWeightMapCodec, and TerrainMaterial by @ronjunevaldoz in #31
- feat(audio): implement playback lifecycle, dynamic spatial updates, and loop support by @ronjunevaldoz in #32
- feat(shadcn): add Ghost variant for containerless tab bars by @ronjunevaldoz in #33
- fix(ui,render): dismiss context menu on secondary press and stabilize shadow map texel snapping by @ronjunevaldoz in #34
- chore(release): cut v0.1.0-alpha.3 by @ronjunevaldoz in #35
New Contributors
- @ronjunevaldoz made their first contribution in #4
Full Changelog: v0.1.0-alpha.2...v0.1.0-alpha.3
v0.1.0-alpha.2
Full Changelog: v0.1.0-alpha.1...v0.1.0-alpha.2
v0.1.0-alpha.1 — First Public Maven Release
Awake Engine v0.1.0-alpha.1 — First Public Maven Release
Highlights
- First Public Maven Central Distribution: Published under coordinates
com.awakekt.awake:*across Android, Desktop JVM, iOS, Web/Wasm, and multiplatform root publications. - Multi-OS Native Prebuilts: Vulkan bindings and Jolt Physics C++ libraries prebuilt and packaged for macOS ARM64, macOS x86_64, and Linux x86_64.
- Verified Consumer Integration: Validated against the
awake-templatestandalone multiplatform consumer project.
Added
- Frame rate pacing & FPS control (
FrameRateMode): IntroducedFrameRateMode(Unlimited,DisplaySync,TargetFps(fps)) in:awake:engine:platformallowing explicit frame rate capping, display VSync locking, or unlimited rendering across all target platforms. - Interactive FramebufferDebugger & render diagnostics: Added visual render target diagnostics, depth/color buffer inspection, and diagnostics tooling to sample showcases.
- ECS family caching and component storage optimization: Optimized query family matching, sparse set lookups, and system iteration performance.
Changed
- Deprecated legacy scene-shaped renderer and offscreen overloads in favor of resolved
GpuPassInputpackets. - Routed
RenderSystemscene frames throughGpuSceneFrame.toPassInput, carrying directional and point-light payloads plus planned shadow subpasses through the generic render contract. - Vulkan's generic packet executor forwards planned shadow matrices into depth pre-pass recorders for onscreen and offscreen submissions.
- Generic Vulkan and WebGPU offscreen packet preparation consumes authored lighting payloads instead of falling back to default directional light values.
Fixed
- Frame loop timing and delta measurement: Corrected frame loop implementations (
DesktopFrameLoop,AndroidFrameLoop,IOSFrameLoop) to measure delta time from frame start to frame start, preventing runaway/infinite FPS calculations. - Jolt Physics buoyancy evaluation: Fixed body lock validation order in
applyBuoyancyto prevent JVM assertion errors (assert succeeded();) on destroyed bodies. - Heightfield tumbling cross-architecture variance: Hardened physical simulation verification invariants across ARM64 (macOS) and x86_64 GCC (Linux).