Skip to content

Feature/capture tool - #68

Draft
tippesi wants to merge 54 commits into
feature/editor-terrain-integrationfrom
feature/capture-tool
Draft

tippesi wants to merge 54 commits into
feature/editor-terrain-integrationfrom
feature/capture-tool

Conversation

@tippesi

@tippesi tippesi commented Oct 18, 2026

Copy link
Copy Markdown
Owner

No description provided.

Generate glyph SDFs and kerning in parallel, store only non-zero
kerning pairs and upload all glyph layers at once. Render text with
the unjittered projection to avoid shaking.
@tippesi
tippesi added this pull request to stack #69 October 18, 2026 15:34
@YanbingXu

YanbingXu commented Oct 18, 2026 via email

Copy link
Copy Markdown

@codacy-production

codacy-production Bot commented Oct 18, 2026 •

Copy link
Copy Markdown

Up to standards ✅

🟢 Issues 0 issues

Results:
0 new issues

View in Codacy

NEW Get contextual insights on your PRs based on Codacy's metrics, along with PR and Jira context, without leaving GitHub. Enable AI reviewer
TIP This summary will be updated as you push new changes.

SetGlobal sets the world matrix right away and derives the local matrix,
keeping the matrix of the last frame for motion vectors. The editor uses
both instead of its own helper, and moving a selection no longer moves
children of selected entities twice. Both are exposed to Lua.
IsFullyLoaded also waits for the terrain and counts resources that failed
to load as finished. The ocean animates with the scene time, and the
smooth brush leaves holes and texels without valid neighbors unchanged.
The search job gets the search text, the filter and the component pools
as copies, so the scene can update while it runs.
Methods of component references are forwarded in Lua and created once
per method, errors propagate as Lua errors instead of C++ exceptions.
The glyph range started at the font's byte offset. Removes the load time
log and shortens a cloud shader comment.
--serve keeps scenes loaded and runs jobs from a command folder
(loadScene, reloadScene, unloadScene, run, stop). --pipeline builds a
scene with a sequence of edit jobs and keeps snapshots of each step, so
only the steps after a change run again.

New edit operations: terrain copies and brushes, scatter, clearArea,
prefabs made from scenes or parts of them, mesh and material copies,
mesh settings and material replacement, dry runs and edit queries. New
queries: terrain, terrainSample, terrainMap, route and buried. Manual
cameras can be placed relative to the ground.
Ignored bodies are filtered in the Jolt query. Continuing the ray behind
them started inside of convex shapes, which count as solid, so rays gave
up after an ignored capsule and missed the terrain below it.

The mesh pass of Scene::CastRay only tests the meshes in the octree nodes
along the ray instead of all meshes of the scene. Ground rays of scripts
in large scenes took several milliseconds per frame.
The coverage only depends on its resolution and restoring a scene backup
recreates the same height field, both were generated again each time.
Topmost entity lookups, hierarchy collection, the ground below an entity,
lights, mesh bodies and placement are shared between operations, checks
and queries. Pass targets are recreated after a resize.
SSGI swaps its history textures instead of copying them.
The froxels are an alternative to the ray marching. Lights are culled per froxel cluster and the in-scattering is accumulated over time. Temporary tuning options are only in the fog panel and are not saved with the scene.
…from device buffers and a frame scoped upload buffer pool
…y tracing instances on the GPU with bindless
The TLAS is created by the scene update and built while rendering. The update of a frame that
isn't rendered is dropped, its TLAS stayed unbuilt and was bound by the next frame, which crashed
in the driver (DDGI tracing on a scene that was reused without an update).
…stabilize the reflection history

Downsampled data belongs to one pixel of its 2x2 block, missed reflection rays no longer report an
infinite hit distance and the temporal pass rejects history by the distance to the surface plane.
… one shot sounds

Streams can be panned and spatialized directly, one shot streams play to their end without an owner.
… with a smooth falloff

The terrain stores the path of its shore line map, the ocean map is generated with a distance
transform from loaded cells of a matching level of detail. Material arrays grow with the written
slots and terrain normals take the texel resolution into account.
…and coyote time

The hidden mouse uses relative mode, so every motion turns the camera.
…o to the engine, use them in the editor

- Entity::SetParent, Scene::GetRootEntity and Scene::GetHierarchyBounds replace the hand written
  parenting and the lookup of the root by its name in the editor
- PrimitiveBatch draws boxes, frustums, spheres, rectangles, crosses, cylinders and axes, the editor
  wrapper only selects the batch with or without depth test
- Scene::PlayAudio plays sounds at a location, ray casts report the hit side and use a fixed
  candidate order, duplicates keep their parent
- Image fill, blend and blit, Texture2D::GetImage, AABB triangle tests, wildcard matching and
  polygon helpers for tools
- Serializers reset removed maps, materials, impostors, shadows and probes when reading into existing
  objects, matrices are stored as flat arrays (old files still load)
- Lua bindings for post processing, RTGI, the ocean, the audio manager and more player and scene state
- Imported models reuse loaded textures and set invertUVs, physics mesh shapes of .aemesh files use
  the mesh loader, the text renderer grows its instance buffer, the octree has one level more
…on, mesh replacement and texture compression

- Edit operations, queries, terrain brushes and server commands are functions registered in tables
  by their name
- Timeline events are parsed into typed events, keys and controller input share one path
- Timeline, Report and Server are split from App, the pipeline keeps track of its current step
- Jobs only render frames whose scene was updated, a job on a reused scene no longer binds data of a
  skipped update
- New edit operations terrainCreate, shoreLine, meshBodies, replaceMesh, replaceWithPrefab and
  compressTextures, a fill brush, flatten with a smooth falloff and scatter items with scaleY and flatness
- Controller and end events, --fast, --sound, CPU frame times in the profile and GPU memory in the report
…traversal

- A rejected instance left the ray in its object space, the following TLAS tests used the wrong ray
…move shadow maps from ray tracing

- DDGI, RTGI and RT reflections write their shadow rays into a compacted buffer, a lean kernel traces
  them, which keeps the hit shaders at a higher occupancy (-12% frame time in the Ancient scene)
- RTGI and reflections resolve the samples with the per sample radiance clamp after the shadow pass
- The useShadowMap option is removed from DDGI, RTGI and reflections, only cloud shadows are still
  applied from a map
…ir ktx conversion

- Mesh import, material import and image conversion run as high priority job groups
- The source image data is released as soon as its ktx2 image exists
- The ktx loader logs loaded files and conversions
…acking, clipboard, occlusion and timing code

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants