summary |
shortlog | log |
commit |
commitdiff |
tree
first ⋅ prev ⋅ next
Svjatoslav Agejenko [Sun, 27 Sep 2026 19:02:50 +0000 (22:02 +0300)]
feat: phased progressive GI scheduling and Wavefront OBJ loading
Replace the flat round-robin GI scheduler with a three-phase
progressive pipeline ordered near-to-far from the camera: phase A
stamps ambient + direct light at polygon centroids so the scene
lights up as a visible wave; phase B converges multi-bounce
indirect light at centroids scene-wide; phase C refines lightmaps
per texel. Phases B and C run on a bounded 256-entry active window
that graduates calm entries, re-sorting pending work when the
camera moves more than 25 world units. Graduated lightmaps keep
recompositing through a display-freeze tail so no centroid-stamp
bias survives as visible seams. The legacy scheduler stays
available via -De3d.gi.phases=false. ViewPanel now feeds the
camera position into the GI system, and a torn-read guard prevents
converging partial snapshots.
Add a Wavefront OBJ loader (ObjLoader/ObjModel/ObjMaterial):
vertices, faces in all index forms including negative and forward
references, usemtl/mtllib resolution, and MTL Kd diffuse color
with d/Tr opacity. Faces become SolidPolygons inside an ObjModel
composite, so shading, culling and transforms work as for any
composite.
Extend Transform with a uniform scale applied before rotation
(negative values mirror geometry and flip winding; zero and
non-finite values are rejected). TransformStack bakes the scale
into the composed matrix at push time, so per-vertex render cost
is unchanged and unscaled scenes render bit-identically.
Light two-sided polygons per side: SolidPolygon computes a
reverse-side shaded color from the negated normal, and
LightmappedCompositeShape emits a reversed solid back triangle for
unculled polygons so undersides no longer show the front side's
light.
Add udev rules for RayNeo XR glasses and the 3Dconnexion
SpaceNavigator, tests for transform scaling and OBJ loading, and
documentation pages for octree ray tracing, GUI components,
SpaceMouse input, configuration and subpixel culling.
Svjatoslav Agejenko [Sat, 26 Sep 2026 07:26:35 +0000 (10:26 +0300)]
initial commit