From 307a71dd604773c6c7113a562f80d5591f99cec2 Mon Sep 17 00:00:00 2001 From: Svjatoslav Agejenko Date: Sun, 20 Sep 2026 11:46:18 +0300 Subject: [PATCH] Package relocation: make package structure real and acyclic Moved (git mv, move-only, no behavior change): - gui -> renderer.raster: RenderingContext, SegmentRenderingContext, HiZPyramid, CullingStatistics, StereoEye, Frustum, Vertex (math) - gui -> diag: ThreadActivityRecorder, DebugLogBuffer - gui -> geometry: Camera (decoupled from gui.FrameListener: dead ViewPanel param dropped, panel registers a lambda adapter) - geometry -> renderer.raster.shapes.composite.base: Plane, BspTree, PolygonType (CSG machinery, used only by shapes) - renderer.octree -> geometry: IntegerPoint (zero-dep coordinate type) - ShapeCollection's ViewPanel overloads deleted (trivial delegates; callers pass getCamera()); RenderingContext.bufferedImage made public (AWT shell blits it); javadoc {@link}s re-qualified. Resulting layering: math <- geometry <- renderer.raster <- gui, with diag a standalone leaf. Remaining known renderer->gui edges (next refactor): DeveloperTools field + mouse-picking API types (MouseEvent/MouseInteractionController/ViewSpaceTracker/TextPointer) and demo-only RayTracer->ViewPanel. Verified: engine 37/37 tests, all 3 consumer repos (demos, aukio, aukio-environment-fo4) compile, demo goldens bit-identical to the pre-relocation run. --- AGENTS.org | 4 +- Documentation/index.org | 16 ++++---- .../e3d/{gui => diag}/DebugLogBuffer.java | 6 +-- .../{gui => diag}/ThreadActivityRecorder.java | 2 +- .../aukio/e3d/{gui => geometry}/Camera.java | 18 ++++++--- .../octree => geometry}/IntegerPoint.java | 2 +- .../aukio/e3d/geometry/Point3D.java | 4 +- .../svjatoslav/aukio/e3d/gui/BugReport.java | 1 + .../aukio/e3d/gui/DeveloperToolsPanel.java | 5 +++ .../e3d/gui/ThreadTimelineComponent.java | 1 + .../svjatoslav/aukio/e3d/gui/ViewPanel.java | 10 ++++- .../aukio/e3d/gui/ViewSpaceTracker.java | 3 +- .../e3d/gui/humaninput/InputManager.java | 2 +- .../gui/humaninput/KeyboardFocusStack.java | 1 + .../WorldNavigationUserInputTracker.java | 2 +- .../aukio/e3d/gui/package-info.java | 7 ++-- .../gui/spacemouse/SpaceMouseController.java | 2 +- .../aukio/e3d/headless/SceneDump.java | 2 +- .../aukio/e3d/headless/Snapshot.java | 4 +- .../e3d/renderer/octree/OctreeVolume.java | 1 + .../e3d/renderer/octree/package-info.java | 3 +- .../renderer/octree/raytracer/CameraView.java | 2 +- .../octree/raytracer/RaytracingCamera.java | 2 +- .../raster}/CullingStatistics.java | 8 ++-- .../raster}/Frustum.java | 7 +++- .../{gui => renderer/raster}/HiZPyramid.java | 2 +- .../raster/ParallelTransformCoordinator.java | 14 +++---- .../e3d/renderer/raster/RadixLongSort.java | 6 +-- .../e3d/renderer/raster/RenderAggregator.java | 9 ++--- .../raster}/RenderingContext.java | 12 +++--- .../raster}/SegmentRenderingContext.java | 2 +- .../e3d/renderer/raster/ShapeCollection.java | 39 +++---------------- .../{gui => renderer/raster}/StereoEye.java | 2 +- .../e3d/{math => renderer/raster}/Vertex.java | 4 +- .../raster/gi/LightmappedTriangle.java | 2 +- .../shapes/AbstractCoordinateShape.java | 4 +- .../renderer/raster/shapes/AbstractShape.java | 2 +- .../raster/shapes/basic/Billboard.java | 4 +- .../raster/shapes/basic/line/Line.java | 4 +- .../basic/solidpolygon/SolidPolygon.java | 6 +-- .../basic/texturedpolygon/MeshTriangle.java | 2 +- .../texturedpolygon/TexturedTriangle.java | 4 +- .../texturedpolygon/TriangleMeshBlock.java | 6 +-- .../shapes/composite/TexturedRectangle.java | 2 +- .../base/AbstractCompositeShape.java | 7 ++-- .../shapes/composite/base}/BspTree.java | 2 +- .../raster/shapes/composite/base}/Plane.java | 5 ++- .../shapes/composite/base}/PolygonType.java | 2 +- .../e3d/renderer/raster/texture/Texture.java | 2 +- .../e3d/headless/HeadlessToolkitTest.java | 2 +- .../raster/ParallelTransformTest.java | 10 ++--- .../renderer/raster/SegmentBinningTest.java | 8 ++-- .../TexturedTriangleBlendTest.java | 4 +- .../TexturedTrianglePerspectiveTest.java | 4 +- 54 files changed, 145 insertions(+), 142 deletions(-) rename src/main/java/eu/svjatoslav/aukio/e3d/{gui => diag}/DebugLogBuffer.java (93%) rename src/main/java/eu/svjatoslav/aukio/e3d/{gui => diag}/ThreadActivityRecorder.java (99%) rename src/main/java/eu/svjatoslav/aukio/e3d/{gui => geometry}/Camera.java (93%) rename src/main/java/eu/svjatoslav/aukio/e3d/{renderer/octree => geometry}/IntegerPoint.java (94%) rename src/main/java/eu/svjatoslav/aukio/e3d/{gui => renderer/raster}/CullingStatistics.java (88%) rename src/main/java/eu/svjatoslav/aukio/e3d/{geometry => renderer/raster}/Frustum.java (97%) rename src/main/java/eu/svjatoslav/aukio/e3d/{gui => renderer/raster}/HiZPyramid.java (99%) rename src/main/java/eu/svjatoslav/aukio/e3d/{gui => renderer/raster}/RenderingContext.java (98%) rename src/main/java/eu/svjatoslav/aukio/e3d/{gui => renderer/raster}/SegmentRenderingContext.java (98%) rename src/main/java/eu/svjatoslav/aukio/e3d/{gui => renderer/raster}/StereoEye.java (90%) rename src/main/java/eu/svjatoslav/aukio/e3d/{math => renderer/raster}/Vertex.java (99%) rename src/main/java/eu/svjatoslav/aukio/e3d/{geometry => renderer/raster/shapes/composite/base}/BspTree.java (99%) rename src/main/java/eu/svjatoslav/aukio/e3d/{geometry => renderer/raster/shapes/composite/base}/Plane.java (98%) rename src/main/java/eu/svjatoslav/aukio/e3d/{geometry => renderer/raster/shapes/composite/base}/PolygonType.java (95%) diff --git a/AGENTS.org b/AGENTS.org index f383da2..df9f9b9 100644 --- a/AGENTS.org +++ b/AGENTS.org @@ -18,7 +18,7 @@ navigation. |-------------------------------+-----------------------------------------------------+-----------------------------------------------------------| | *Create a window* | ~ViewFrame~ (~gui/ViewFrame.java~) | ~new ViewFrame()~ → ~.getViewPanel()~ | | *Add shapes to scene* | ~ShapeCollection~ (~raster/ShapeCollection.java~) | ~viewPanel.getRootShapeCollection().addShape(shape)~ | -| *Position camera* | ~Camera~ (~gui/Camera.java~) | ~camera.getTransform().setTranslation(Point3D)~ | +| *Position camera* | ~Camera~ (~geometry/Camera.java~) | ~camera.getTransform().setTranslation(Point3D)~ | | *Create a wireframe cube* | ~WireframeCube~ (~shapes/composite/wireframe/~) | ~new WireframeCube(center, halfSize, appearance)~ | | *Create a solid cube* | ~SolidPolygonCube~ (~shapes/composite/solid/~) | ~new SolidPolygonCube(center, halfSize, color)~ | | *Create a line* | ~Line~ (~shapes/basic/line/~) | ~new Line(p1, p2, color, width)~ | @@ -344,7 +344,7 @@ scene.addShape(clickableCube); |-----------------+--------------------------+------------------------------+--------------------------------------------------------------------------------------------------------| | ~ViewPanel~ | ~gui/ViewPanel.java~ | AWT Canvas, render loop | ~.getRootShapeCollection()~, ~.getCamera()~, ~.getLightingManager()~, ~.addFrameListener()~, ~.stop()~ | | ~ViewFrame~ | ~gui/ViewFrame.java~ | JFrame wrapper | ~new ViewFrame()~ → ~.getViewPanel()~ | -| ~Camera~ | ~gui/Camera.java~ | Viewer position/orientation | ~.getTransform()~, ~.setTransform()~ | +| ~Camera~ | ~geometry/Camera.java~ | Viewer position/orientation | ~.getTransform()~, ~.setTransform()~ | | ~FrameListener~ | ~gui/FrameListener.java~ | Per-frame callback interface | ~.onFrame(panel, deltaMs)~ → return true to repaint | ** Input (~gui/humaninput/~) diff --git a/Documentation/index.org b/Documentation/index.org index 4068d09..c40ce32 100644 --- a/Documentation/index.org +++ b/Documentation/index.org @@ -238,7 +238,7 @@ p1.rotate(new Point3D(0,0,0), Math.PI/4, 0); // Rotate p1 in place, *** Vertex — Rendering-Ready Coordinates -[[https://www3.svjatoslav.eu/projects/aukio-3d/apidocs/eu/svjatoslav/aukio/e3d/math/Vertex.html][Vertex]] wraps a =Point3D= and adds the coordinate spaces needed during +[[https://www3.svjatoslav.eu/projects/aukio-3d/apidocs/eu/svjatoslav/aukio/e3d/renderer/raster/Vertex.html][Vertex]] wraps a =Point3D= and adds the coordinate spaces needed during rendering. As a shape transforms through the render pipeline, each vertex tracks its position in multiple spaces: @@ -304,7 +304,7 @@ visible when surfaces are not rendered. A triangle has 3 edges, a cube has 12 edges, and complex meshes have thousands. In *Aukio 3D*, the [[https://www3.svjatoslav.eu/projects/aukio-3d/apidocs/eu/svjatoslav/aukio/e3d/renderer/raster/shapes/basic/line/Line.html][Line]] class implements edges as renderable shapes. Each -Line connects two [[https://www3.svjatoslav.eu/projects/aukio-3d/apidocs/eu/svjatoslav/aukio/e3d/math/Vertex.html][Vertex]] endpoints and stores two properties: a +Line connects two [[https://www3.svjatoslav.eu/projects/aukio-3d/apidocs/eu/svjatoslav/aukio/e3d/renderer/raster/Vertex.html][Vertex]] endpoints and stores two properties: a [[https://www3.svjatoslav.eu/projects/aukio-3d/apidocs/eu/svjatoslav/aukio/e3d/renderer/raster/shapes/basic/line/Line.html#width][width]] in world units (adjusted for perspective during rendering) and a [[https://www3.svjatoslav.eu/projects/aukio-3d/apidocs/eu/svjatoslav/aukio/e3d/renderer/raster/shapes/basic/line/Line.html#color][color]] with alpha transparency. The rendering algorithm switches between two modes based on the projected screen width: thin lines below @@ -434,14 +434,14 @@ determines how bright a surface appears. | Use case | API | Computation | Location | |----------------------+----------------------------------------------+----------------------------+-------------------| -| BSP/CSG operations | [[https://www3.svjatoslav.eu/projects/aukio-3d/apidocs/eu/svjatoslav/aukio/e3d/renderer/raster/shapes/basic/solidpolygon/SolidPolygon.html#getPlane()][SolidPolygon.getPlane()]] → [[https://www3.svjatoslav.eu/projects/aukio-3d/apidocs/eu/svjatoslav/aukio/e3d/geometry/Plane.html#normal][Plane.normal]] | Lazy-cached once | =Plane= | -| Per-frame shading | [[https://www3.svjatoslav.eu/projects/aukio-3d/apidocs/eu/svjatoslav/aukio/e3d/geometry/Plane.html#computeNormal()][Plane.computeNormal()]] → =cachedNormal= field | Recomputed every frame | =SolidPolygon= | +| BSP/CSG operations | [[https://www3.svjatoslav.eu/projects/aukio-3d/apidocs/eu/svjatoslav/aukio/e3d/renderer/raster/shapes/basic/solidpolygon/SolidPolygon.html#getPlane()][SolidPolygon.getPlane()]] → [[https://www3.svjatoslav.eu/projects/aukio-3d/apidocs/eu/svjatoslav/aukio/e3d/renderer/raster/shapes/composite/base/Plane.html#normal][Plane.normal]] | Lazy-cached once | =Plane= | +| Per-frame shading | [[https://www3.svjatoslav.eu/projects/aukio-3d/apidocs/eu/svjatoslav/aukio/e3d/renderer/raster/shapes/composite/base/Plane.html#computeNormal()][Plane.computeNormal()]] → =cachedNormal= field | Recomputed every frame | =SolidPolygon= | | Lighting calculation | [[https://www3.svjatoslav.eu/projects/aukio-3d/apidocs/eu/svjatoslav/aukio/e3d/renderer/raster/lighting/LightingManager.html#computeLighting()][LightingManager.computeLighting()]] | Uses normal via =dot(L,N)= | =LightingManager= | **Implementation notes:** -- [[https://www3.svjatoslav.eu/projects/aukio-3d/apidocs/eu/svjatoslav/aukio/e3d/geometry/Plane.html#computeNormal()][Plane.computeNormal()]]: shared zero-allocation helper for computing normals from three points -- [[https://www3.svjatoslav.eu/projects/aukio-3d/apidocs/eu/svjatoslav/aukio/e3d/geometry/Plane.html][Plane]]: stores normals in Hesse normal form (normal + distance) for BSP spatial partitioning -- [[https://www3.svjatoslav.eu/projects/aukio-3d/apidocs/eu/svjatoslav/aukio/e3d/math/Vertex.html#normal][Vertex.normal]]: optional field for CSG polygon splitting (not used for rendering) +- [[https://www3.svjatoslav.eu/projects/aukio-3d/apidocs/eu/svjatoslav/aukio/e3d/renderer/raster/shapes/composite/base/Plane.html#computeNormal()][Plane.computeNormal()]]: shared zero-allocation helper for computing normals from three points +- [[https://www3.svjatoslav.eu/projects/aukio-3d/apidocs/eu/svjatoslav/aukio/e3d/renderer/raster/shapes/composite/base/Plane.html][Plane]]: stores normals in Hesse normal form (normal + distance) for BSP spatial partitioning +- [[https://www3.svjatoslav.eu/projects/aukio-3d/apidocs/eu/svjatoslav/aukio/e3d/renderer/raster/Vertex.html#normal][Vertex.normal]]: optional field for CSG polygon splitting (not used for rendering) ** Mesh :PROPERTIES: @@ -1200,7 +1200,7 @@ the rendered screenshots. | [[https://www3.svjatoslav.eu/projects/aukio-3d/apidocs/eu/svjatoslav/aukio/e3d/headless/GoldenImage.html][GoldenImage]] | Golden-PNG comparison, diff writer, CLI | | [[https://www3.svjatoslav.eu/projects/aukio-3d/apidocs/eu/svjatoslav/aukio/e3d/headless/SceneDump.html][SceneDump]] | Scene state as a reproducible text block | | [[https://www3.svjatoslav.eu/projects/aukio-3d/apidocs/eu/svjatoslav/aukio/e3d/renderer/raster/ShapeCollection.html][ShapeCollection]] | ~transformShapes(Camera, ...)~ headless overload | -| [[https://www3.svjatoslav.eu/projects/aukio-3d/apidocs/eu/svjatoslav/aukio/e3d/gui/RenderingContext.html][RenderingContext]] | ~getImage()~ exposes the painted frame | +| [[https://www3.svjatoslav.eu/projects/aukio-3d/apidocs/eu/svjatoslav/aukio/e3d/renderer/raster/RenderingContext.html][RenderingContext]] | ~getImage()~ exposes the painted frame | * Source code :PROPERTIES: diff --git a/src/main/java/eu/svjatoslav/aukio/e3d/gui/DebugLogBuffer.java b/src/main/java/eu/svjatoslav/aukio/e3d/diag/DebugLogBuffer.java similarity index 93% rename from src/main/java/eu/svjatoslav/aukio/e3d/gui/DebugLogBuffer.java rename to src/main/java/eu/svjatoslav/aukio/e3d/diag/DebugLogBuffer.java index 5104b37..ba81b5b 100644 --- a/src/main/java/eu/svjatoslav/aukio/e3d/gui/DebugLogBuffer.java +++ b/src/main/java/eu/svjatoslav/aukio/e3d/diag/DebugLogBuffer.java @@ -2,7 +2,7 @@ * Aukio 3D engine. Author: Svjatoslav Agejenko. * This project is released under Creative Commons Zero (CC0) license. */ -package eu.svjatoslav.aukio.e3d.gui; +package eu.svjatoslav.aukio.e3d.diag; import java.time.LocalDateTime; import java.time.format.DateTimeFormatter; @@ -13,13 +13,13 @@ import java.util.List; * Circular buffer for debug log messages. * *

Captures log messages to a fixed-size circular buffer for display - * in the {@link DeveloperToolsPanel}.

+ * in the {@link eu.svjatoslav.aukio.e3d.gui.DeveloperToolsPanel}.

* *

This allows capturing early initialization logs before the user opens * the Developer Tools panel. When the panel is opened, the buffered history * becomes immediately visible.

* - * @see DeveloperToolsPanel + * @see eu.svjatoslav.aukio.e3d.gui.DeveloperToolsPanel */ public class DebugLogBuffer { diff --git a/src/main/java/eu/svjatoslav/aukio/e3d/gui/ThreadActivityRecorder.java b/src/main/java/eu/svjatoslav/aukio/e3d/diag/ThreadActivityRecorder.java similarity index 99% rename from src/main/java/eu/svjatoslav/aukio/e3d/gui/ThreadActivityRecorder.java rename to src/main/java/eu/svjatoslav/aukio/e3d/diag/ThreadActivityRecorder.java index eff1e39..203d061 100644 --- a/src/main/java/eu/svjatoslav/aukio/e3d/gui/ThreadActivityRecorder.java +++ b/src/main/java/eu/svjatoslav/aukio/e3d/diag/ThreadActivityRecorder.java @@ -2,7 +2,7 @@ * Aukio 3D engine. Author: Svjatoslav Agejenko. * This project is released under Creative Commons Zero (CC0) license. */ -package eu.svjatoslav.aukio.e3d.gui; +package eu.svjatoslav.aukio.e3d.diag; import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.CopyOnWriteArrayList; diff --git a/src/main/java/eu/svjatoslav/aukio/e3d/gui/Camera.java b/src/main/java/eu/svjatoslav/aukio/e3d/geometry/Camera.java similarity index 93% rename from src/main/java/eu/svjatoslav/aukio/e3d/gui/Camera.java rename to src/main/java/eu/svjatoslav/aukio/e3d/geometry/Camera.java index a212821..c4c534b 100644 --- a/src/main/java/eu/svjatoslav/aukio/e3d/gui/Camera.java +++ b/src/main/java/eu/svjatoslav/aukio/e3d/geometry/Camera.java @@ -2,7 +2,7 @@ * Aukio 3D engine. Author: Svjatoslav Agejenko. * This project is released under Creative Commons Zero (CC0) license. */ -package eu.svjatoslav.aukio.e3d.gui; +package eu.svjatoslav.aukio.e3d.geometry; import eu.svjatoslav.aukio.e3d.geometry.Point3D; import eu.svjatoslav.aukio.e3d.math.Matrix3x3; @@ -35,10 +35,10 @@ import eu.svjatoslav.aukio.e3d.math.Transform; * Camera snapshot = new Camera(camera); * } * - * @see ViewPanel#getCamera() + * @see eu.svjatoslav.aukio.e3d.gui.ViewPanel#getCamera() * @see eu.svjatoslav.aukio.e3d.gui.humaninput.WorldNavigationUserInputTracker default keyboard navigation */ -public class Camera implements FrameListener { +public class Camera { /** * Camera movement speed limit, relative to the world. When camera coordinates are @@ -96,8 +96,16 @@ public class Camera implements FrameListener { this.transform = transform; } - @Override - public boolean onFrame(final ViewPanel viewPanel, final int millisecondsSinceLastFrame) { + /** + * Per-frame camera physics tick (movement integration, friction). + * Registered on the panel via a {@code FrameListener} adapter in + * {@code ViewPanel} — decoupled from the gui interface so the camera + * stays in the geometry package. + * + * @param millisecondsSinceLastFrame frame delta in milliseconds + * @return true when the camera moved enough to need a repaint + */ + public boolean onFrame(final int millisecondsSinceLastFrame) { previousLocation.clone(transform.getTranslation()); translateCameraLocationBasedOnMovementVector(millisecondsSinceLastFrame); diff --git a/src/main/java/eu/svjatoslav/aukio/e3d/renderer/octree/IntegerPoint.java b/src/main/java/eu/svjatoslav/aukio/e3d/geometry/IntegerPoint.java similarity index 94% rename from src/main/java/eu/svjatoslav/aukio/e3d/renderer/octree/IntegerPoint.java rename to src/main/java/eu/svjatoslav/aukio/e3d/geometry/IntegerPoint.java index 01acee1..955267b 100644 --- a/src/main/java/eu/svjatoslav/aukio/e3d/renderer/octree/IntegerPoint.java +++ b/src/main/java/eu/svjatoslav/aukio/e3d/geometry/IntegerPoint.java @@ -2,7 +2,7 @@ * Aukio 3D engine. Author: Svjatoslav Agejenko. * This project is released under Creative Commons Zero (CC0) license. */ -package eu.svjatoslav.aukio.e3d.renderer.octree; +package eu.svjatoslav.aukio.e3d.geometry; /** * Point in 3D space with integer coordinates. Used for octree voxel positions. diff --git a/src/main/java/eu/svjatoslav/aukio/e3d/geometry/Point3D.java b/src/main/java/eu/svjatoslav/aukio/e3d/geometry/Point3D.java index 91f7aa9..8b227c6 100755 --- a/src/main/java/eu/svjatoslav/aukio/e3d/geometry/Point3D.java +++ b/src/main/java/eu/svjatoslav/aukio/e3d/geometry/Point3D.java @@ -4,7 +4,7 @@ */ package eu.svjatoslav.aukio.e3d.geometry; -import eu.svjatoslav.aukio.e3d.renderer.octree.IntegerPoint; +import eu.svjatoslav.aukio.e3d.geometry.IntegerPoint; import static java.lang.Math.*; @@ -57,7 +57,7 @@ import static java.lang.Math.*; * } * * @see Point2D the 2D equivalent - * @see eu.svjatoslav.aukio.e3d.math.Vertex wraps a Point3D with transform support + * @see eu.svjatoslav.aukio.e3d.renderer.raster.Vertex wraps a Point3D with transform support */ public class Point3D implements Cloneable { diff --git a/src/main/java/eu/svjatoslav/aukio/e3d/gui/BugReport.java b/src/main/java/eu/svjatoslav/aukio/e3d/gui/BugReport.java index e684fe4..665b7cb 100644 --- a/src/main/java/eu/svjatoslav/aukio/e3d/gui/BugReport.java +++ b/src/main/java/eu/svjatoslav/aukio/e3d/gui/BugReport.java @@ -3,6 +3,7 @@ * This project is released under Creative Commons Zero (CC0) license. */ package eu.svjatoslav.aukio.e3d.gui; +import eu.svjatoslav.aukio.e3d.geometry.Camera; import eu.svjatoslav.aukio.e3d.diag.EngineConfig; import eu.svjatoslav.aukio.e3d.diag.PersistentLog; diff --git a/src/main/java/eu/svjatoslav/aukio/e3d/gui/DeveloperToolsPanel.java b/src/main/java/eu/svjatoslav/aukio/e3d/gui/DeveloperToolsPanel.java index b8b5a3a..179a4f0 100644 --- a/src/main/java/eu/svjatoslav/aukio/e3d/gui/DeveloperToolsPanel.java +++ b/src/main/java/eu/svjatoslav/aukio/e3d/gui/DeveloperToolsPanel.java @@ -3,6 +3,11 @@ * This project is released under Creative Commons Zero (CC0) license. */ package eu.svjatoslav.aukio.e3d.gui; +import eu.svjatoslav.aukio.e3d.diag.DebugLogBuffer; +import eu.svjatoslav.aukio.e3d.diag.ThreadActivityRecorder; +import eu.svjatoslav.aukio.e3d.geometry.Camera; +import eu.svjatoslav.aukio.e3d.renderer.raster.CullingStatistics; +import eu.svjatoslav.aukio.e3d.renderer.raster.RenderingContext; import eu.svjatoslav.aukio.e3d.geometry.Point3D; diff --git a/src/main/java/eu/svjatoslav/aukio/e3d/gui/ThreadTimelineComponent.java b/src/main/java/eu/svjatoslav/aukio/e3d/gui/ThreadTimelineComponent.java index aafa7ae..ad9bf35 100644 --- a/src/main/java/eu/svjatoslav/aukio/e3d/gui/ThreadTimelineComponent.java +++ b/src/main/java/eu/svjatoslav/aukio/e3d/gui/ThreadTimelineComponent.java @@ -3,6 +3,7 @@ * This project is released under Creative Commons Zero (CC0) license. */ package eu.svjatoslav.aukio.e3d.gui; +import eu.svjatoslav.aukio.e3d.diag.ThreadActivityRecorder; import javax.swing.*; import java.awt.*; diff --git a/src/main/java/eu/svjatoslav/aukio/e3d/gui/ViewPanel.java b/src/main/java/eu/svjatoslav/aukio/e3d/gui/ViewPanel.java index 96bd4bf..0a69725 100755 --- a/src/main/java/eu/svjatoslav/aukio/e3d/gui/ViewPanel.java +++ b/src/main/java/eu/svjatoslav/aukio/e3d/gui/ViewPanel.java @@ -3,6 +3,12 @@ * This project is released under Creative Commons Zero (CC0) license. */ package eu.svjatoslav.aukio.e3d.gui; +import eu.svjatoslav.aukio.e3d.diag.DebugLogBuffer; +import eu.svjatoslav.aukio.e3d.diag.ThreadActivityRecorder; +import eu.svjatoslav.aukio.e3d.geometry.Camera; +import eu.svjatoslav.aukio.e3d.renderer.raster.StereoEye; +import eu.svjatoslav.aukio.e3d.renderer.raster.SegmentRenderingContext; +import eu.svjatoslav.aukio.e3d.renderer.raster.RenderingContext; import eu.svjatoslav.aukio.e3d.diag.Diagnostics; import eu.svjatoslav.aukio.e3d.diag.EngineConfig; @@ -317,7 +323,7 @@ public class ViewPanel extends Canvas { * Creates a new view panel with default settings. */ public ViewPanel() { - frameListeners.add(camera); + frameListeners.add((panel, deltaMs) -> camera.onFrame(deltaMs)); frameListeners.add(inputManager); // persistent log + telemetry (idempotent); the view telemetry @@ -1117,7 +1123,7 @@ public class ViewPanel extends Canvas { // Walks the tree and forks heavy composites into chunk tasks, // but does NOT wait for them: draining happens inside the // pass's continuation on a worker thread. - rootShapeCollection.transformShapesBegin(this, passContext); + rootShapeCollection.transformShapesBegin(getCamera(), passContext); return passContext; } finally { location.x = originalX; diff --git a/src/main/java/eu/svjatoslav/aukio/e3d/gui/ViewSpaceTracker.java b/src/main/java/eu/svjatoslav/aukio/e3d/gui/ViewSpaceTracker.java index 40f602a..24ddb36 100644 --- a/src/main/java/eu/svjatoslav/aukio/e3d/gui/ViewSpaceTracker.java +++ b/src/main/java/eu/svjatoslav/aukio/e3d/gui/ViewSpaceTracker.java @@ -3,10 +3,11 @@ * This project is released under Creative Commons Zero (CC0) license. */ package eu.svjatoslav.aukio.e3d.gui; +import eu.svjatoslav.aukio.e3d.renderer.raster.RenderingContext; import eu.svjatoslav.aukio.e3d.geometry.Point3D; import eu.svjatoslav.aukio.e3d.math.TransformStack; -import eu.svjatoslav.aukio.e3d.math.Vertex; +import eu.svjatoslav.aukio.e3d.renderer.raster.Vertex; /** * Tracks an object's position in view/camera space for distance and angle calculations. diff --git a/src/main/java/eu/svjatoslav/aukio/e3d/gui/humaninput/InputManager.java b/src/main/java/eu/svjatoslav/aukio/e3d/gui/humaninput/InputManager.java index cd7db6c..b0b7d29 100644 --- a/src/main/java/eu/svjatoslav/aukio/e3d/gui/humaninput/InputManager.java +++ b/src/main/java/eu/svjatoslav/aukio/e3d/gui/humaninput/InputManager.java @@ -5,7 +5,7 @@ package eu.svjatoslav.aukio.e3d.gui.humaninput; import eu.svjatoslav.aukio.e3d.geometry.Point2D; -import eu.svjatoslav.aukio.e3d.gui.Camera; +import eu.svjatoslav.aukio.e3d.geometry.Camera; import eu.svjatoslav.aukio.e3d.gui.FrameListener; import eu.svjatoslav.aukio.e3d.gui.ViewFrame; import eu.svjatoslav.aukio.e3d.gui.ViewPanel; diff --git a/src/main/java/eu/svjatoslav/aukio/e3d/gui/humaninput/KeyboardFocusStack.java b/src/main/java/eu/svjatoslav/aukio/e3d/gui/humaninput/KeyboardFocusStack.java index dc9360f..f89d60e 100644 --- a/src/main/java/eu/svjatoslav/aukio/e3d/gui/humaninput/KeyboardFocusStack.java +++ b/src/main/java/eu/svjatoslav/aukio/e3d/gui/humaninput/KeyboardFocusStack.java @@ -3,6 +3,7 @@ * This project is released under Creative Commons Zero (CC0) license. */ package eu.svjatoslav.aukio.e3d.gui.humaninput; +import eu.svjatoslav.aukio.e3d.geometry.Camera; import eu.svjatoslav.aukio.e3d.gui.ViewPanel; diff --git a/src/main/java/eu/svjatoslav/aukio/e3d/gui/humaninput/WorldNavigationUserInputTracker.java b/src/main/java/eu/svjatoslav/aukio/e3d/gui/humaninput/WorldNavigationUserInputTracker.java index dcdc78b..152e69c 100644 --- a/src/main/java/eu/svjatoslav/aukio/e3d/gui/humaninput/WorldNavigationUserInputTracker.java +++ b/src/main/java/eu/svjatoslav/aukio/e3d/gui/humaninput/WorldNavigationUserInputTracker.java @@ -4,7 +4,7 @@ */ package eu.svjatoslav.aukio.e3d.gui.humaninput; -import eu.svjatoslav.aukio.e3d.gui.Camera; +import eu.svjatoslav.aukio.e3d.geometry.Camera; import eu.svjatoslav.aukio.e3d.gui.ViewPanel; import eu.svjatoslav.aukio.e3d.gui.FrameListener; diff --git a/src/main/java/eu/svjatoslav/aukio/e3d/gui/package-info.java b/src/main/java/eu/svjatoslav/aukio/e3d/gui/package-info.java index 1dc70e4..1bb7041 100644 --- a/src/main/java/eu/svjatoslav/aukio/e3d/gui/package-info.java +++ b/src/main/java/eu/svjatoslav/aukio/e3d/gui/package-info.java @@ -13,12 +13,13 @@ * * * @see eu.svjatoslav.aukio.e3d.gui.ViewPanel - * @see eu.svjatoslav.aukio.e3d.gui.Camera + * @see eu.svjatoslav.aukio.e3d.geometry.Camera */ -package eu.svjatoslav.aukio.e3d.gui; \ No newline at end of file +package eu.svjatoslav.aukio.e3d.gui; +import eu.svjatoslav.aukio.e3d.geometry.Camera; diff --git a/src/main/java/eu/svjatoslav/aukio/e3d/gui/spacemouse/SpaceMouseController.java b/src/main/java/eu/svjatoslav/aukio/e3d/gui/spacemouse/SpaceMouseController.java index 89469c6..1951873 100644 --- a/src/main/java/eu/svjatoslav/aukio/e3d/gui/spacemouse/SpaceMouseController.java +++ b/src/main/java/eu/svjatoslav/aukio/e3d/gui/spacemouse/SpaceMouseController.java @@ -4,7 +4,7 @@ */ package eu.svjatoslav.aukio.e3d.gui.spacemouse; -import eu.svjatoslav.aukio.e3d.gui.Camera; +import eu.svjatoslav.aukio.e3d.geometry.Camera; import eu.svjatoslav.aukio.e3d.gui.FrameListener; import eu.svjatoslav.aukio.e3d.gui.ViewPanel; import eu.svjatoslav.aukio.e3d.math.Matrix3x3; diff --git a/src/main/java/eu/svjatoslav/aukio/e3d/headless/SceneDump.java b/src/main/java/eu/svjatoslav/aukio/e3d/headless/SceneDump.java index 3d32901..5c4d781 100644 --- a/src/main/java/eu/svjatoslav/aukio/e3d/headless/SceneDump.java +++ b/src/main/java/eu/svjatoslav/aukio/e3d/headless/SceneDump.java @@ -9,7 +9,7 @@ import eu.svjatoslav.aukio.e3d.renderer.raster.lighting.LightSource; import eu.svjatoslav.aukio.e3d.renderer.raster.lighting.LightingManager; import eu.svjatoslav.aukio.e3d.renderer.raster.shapes.AbstractShape; import eu.svjatoslav.aukio.e3d.renderer.raster.ShapeCollection; -import eu.svjatoslav.aukio.e3d.gui.Camera; +import eu.svjatoslav.aukio.e3d.geometry.Camera; import java.util.Locale; diff --git a/src/main/java/eu/svjatoslav/aukio/e3d/headless/Snapshot.java b/src/main/java/eu/svjatoslav/aukio/e3d/headless/Snapshot.java index 010c15e..d91db0a 100644 --- a/src/main/java/eu/svjatoslav/aukio/e3d/headless/Snapshot.java +++ b/src/main/java/eu/svjatoslav/aukio/e3d/headless/Snapshot.java @@ -5,8 +5,8 @@ package eu.svjatoslav.aukio.e3d.headless; import eu.svjatoslav.aukio.e3d.geometry.Point3D; -import eu.svjatoslav.aukio.e3d.gui.Camera; -import eu.svjatoslav.aukio.e3d.gui.RenderingContext; +import eu.svjatoslav.aukio.e3d.geometry.Camera; +import eu.svjatoslav.aukio.e3d.renderer.raster.RenderingContext; import eu.svjatoslav.aukio.e3d.renderer.raster.ShapeCollection; import eu.svjatoslav.aukio.e3d.renderer.raster.lighting.LightingManager; diff --git a/src/main/java/eu/svjatoslav/aukio/e3d/renderer/octree/OctreeVolume.java b/src/main/java/eu/svjatoslav/aukio/e3d/renderer/octree/OctreeVolume.java index 5ae69d8..d07f08d 100755 --- a/src/main/java/eu/svjatoslav/aukio/e3d/renderer/octree/OctreeVolume.java +++ b/src/main/java/eu/svjatoslav/aukio/e3d/renderer/octree/OctreeVolume.java @@ -3,6 +3,7 @@ * This project is released under Creative Commons Zero (CC0) license. */ package eu.svjatoslav.aukio.e3d.renderer.octree; +import eu.svjatoslav.aukio.e3d.geometry.IntegerPoint; import eu.svjatoslav.aukio.e3d.geometry.Point3D; import eu.svjatoslav.aukio.e3d.renderer.octree.raytracer.Ray; diff --git a/src/main/java/eu/svjatoslav/aukio/e3d/renderer/octree/package-info.java b/src/main/java/eu/svjatoslav/aukio/e3d/renderer/octree/package-info.java index 4509e7e..f79029e 100755 --- a/src/main/java/eu/svjatoslav/aukio/e3d/renderer/octree/package-info.java +++ b/src/main/java/eu/svjatoslav/aukio/e3d/renderer/octree/package-info.java @@ -9,7 +9,7 @@ * * @@ -17,4 +17,5 @@ */ package eu.svjatoslav.aukio.e3d.renderer.octree; +import eu.svjatoslav.aukio.e3d.geometry.IntegerPoint; diff --git a/src/main/java/eu/svjatoslav/aukio/e3d/renderer/octree/raytracer/CameraView.java b/src/main/java/eu/svjatoslav/aukio/e3d/renderer/octree/raytracer/CameraView.java index fa36212..5813889 100644 --- a/src/main/java/eu/svjatoslav/aukio/e3d/renderer/octree/raytracer/CameraView.java +++ b/src/main/java/eu/svjatoslav/aukio/e3d/renderer/octree/raytracer/CameraView.java @@ -5,7 +5,7 @@ package eu.svjatoslav.aukio.e3d.renderer.octree.raytracer; import eu.svjatoslav.aukio.e3d.geometry.Point3D; -import eu.svjatoslav.aukio.e3d.gui.Camera; +import eu.svjatoslav.aukio.e3d.geometry.Camera; import eu.svjatoslav.aukio.e3d.math.Matrix3x3; import static eu.svjatoslav.aukio.e3d.renderer.octree.raytracer.RaytracingCamera.SIZE; diff --git a/src/main/java/eu/svjatoslav/aukio/e3d/renderer/octree/raytracer/RaytracingCamera.java b/src/main/java/eu/svjatoslav/aukio/e3d/renderer/octree/raytracer/RaytracingCamera.java index ed67441..d4721d0 100755 --- a/src/main/java/eu/svjatoslav/aukio/e3d/renderer/octree/raytracer/RaytracingCamera.java +++ b/src/main/java/eu/svjatoslav/aukio/e3d/renderer/octree/raytracer/RaytracingCamera.java @@ -5,7 +5,7 @@ package eu.svjatoslav.aukio.e3d.renderer.octree.raytracer; import eu.svjatoslav.aukio.e3d.geometry.Point3D; -import eu.svjatoslav.aukio.e3d.gui.Camera; +import eu.svjatoslav.aukio.e3d.geometry.Camera; import eu.svjatoslav.aukio.e3d.math.Matrix3x3; import eu.svjatoslav.aukio.e3d.math.Transform; import eu.svjatoslav.aukio.e3d.renderer.raster.Color; diff --git a/src/main/java/eu/svjatoslav/aukio/e3d/gui/CullingStatistics.java b/src/main/java/eu/svjatoslav/aukio/e3d/renderer/raster/CullingStatistics.java similarity index 88% rename from src/main/java/eu/svjatoslav/aukio/e3d/gui/CullingStatistics.java rename to src/main/java/eu/svjatoslav/aukio/e3d/renderer/raster/CullingStatistics.java index 3b112c5..95bfc4e 100644 --- a/src/main/java/eu/svjatoslav/aukio/e3d/gui/CullingStatistics.java +++ b/src/main/java/eu/svjatoslav/aukio/e3d/renderer/raster/CullingStatistics.java @@ -2,7 +2,7 @@ * Aukio 3D engine. Author: Svjatoslav Agejenko. * This project is released under Creative Commons Zero (CC0) license. */ -package eu.svjatoslav.aukio.e3d.gui; +package eu.svjatoslav.aukio.e3d.renderer.raster; import java.util.concurrent.atomic.AtomicInteger; @@ -18,11 +18,11 @@ import java.util.concurrent.atomic.AtomicInteger; *

Thread safety: counters are {@link AtomicInteger} because the parallel * transform phase increments them from multiple worker threads.

* - *

Displayed in the {@link DeveloperToolsPanel} to help developers understand + *

Displayed in the {@link eu.svjatoslav.aukio.e3d.gui.DeveloperToolsPanel} to help developers understand * culling efficiency and optimize scene graphs.

* - * @see DeveloperToolsPanel - * @see eu.svjatoslav.aukio.e3d.geometry.Frustum + * @see eu.svjatoslav.aukio.e3d.gui.DeveloperToolsPanel + * @see eu.svjatoslav.aukio.e3d.renderer.raster.Frustum */ public class CullingStatistics { diff --git a/src/main/java/eu/svjatoslav/aukio/e3d/geometry/Frustum.java b/src/main/java/eu/svjatoslav/aukio/e3d/renderer/raster/Frustum.java similarity index 97% rename from src/main/java/eu/svjatoslav/aukio/e3d/geometry/Frustum.java rename to src/main/java/eu/svjatoslav/aukio/e3d/renderer/raster/Frustum.java index d1075c6..47f7f39 100644 --- a/src/main/java/eu/svjatoslav/aukio/e3d/geometry/Frustum.java +++ b/src/main/java/eu/svjatoslav/aukio/e3d/renderer/raster/Frustum.java @@ -2,9 +2,12 @@ * Aukio 3D engine. Author: Svjatoslav Agejenko. * This project is released under Creative Commons Zero (CC0) license. */ -package eu.svjatoslav.aukio.e3d.geometry; +package eu.svjatoslav.aukio.e3d.renderer.raster; +import eu.svjatoslav.aukio.e3d.geometry.Point3D; +import eu.svjatoslav.aukio.e3d.geometry.Box; +import eu.svjatoslav.aukio.e3d.renderer.raster.shapes.composite.base.Plane; -import eu.svjatoslav.aukio.e3d.gui.Camera; +import eu.svjatoslav.aukio.e3d.geometry.Camera; /** * View frustum for frustum culling - eliminates objects outside the camera's view. diff --git a/src/main/java/eu/svjatoslav/aukio/e3d/gui/HiZPyramid.java b/src/main/java/eu/svjatoslav/aukio/e3d/renderer/raster/HiZPyramid.java similarity index 99% rename from src/main/java/eu/svjatoslav/aukio/e3d/gui/HiZPyramid.java rename to src/main/java/eu/svjatoslav/aukio/e3d/renderer/raster/HiZPyramid.java index a12608b..e04e579 100644 --- a/src/main/java/eu/svjatoslav/aukio/e3d/gui/HiZPyramid.java +++ b/src/main/java/eu/svjatoslav/aukio/e3d/renderer/raster/HiZPyramid.java @@ -1,4 +1,4 @@ -package eu.svjatoslav.aukio.e3d.gui; +package eu.svjatoslav.aukio.e3d.renderer.raster; import java.util.Arrays; import java.util.concurrent.atomic.AtomicLong; diff --git a/src/main/java/eu/svjatoslav/aukio/e3d/renderer/raster/ParallelTransformCoordinator.java b/src/main/java/eu/svjatoslav/aukio/e3d/renderer/raster/ParallelTransformCoordinator.java index 2a48f08..54f544f 100644 --- a/src/main/java/eu/svjatoslav/aukio/e3d/renderer/raster/ParallelTransformCoordinator.java +++ b/src/main/java/eu/svjatoslav/aukio/e3d/renderer/raster/ParallelTransformCoordinator.java @@ -95,7 +95,7 @@ public final class ParallelTransformCoordinator { * Frame parity captured at construction, stamped onto recorded * timeline intervals so overlapping frames keep distinct colors. */ - private final int traceParity = eu.svjatoslav.aukio.e3d.gui.ThreadActivityRecorder.frameParity(); + private final int traceParity = eu.svjatoslav.aukio.e3d.diag.ThreadActivityRecorder.frameParity(); /** * Frame-wide cap on chunk tasks. Deep hierarchies of heavy composites @@ -133,15 +133,15 @@ public final class ParallelTransformCoordinator { * @param task transforms a chunk of children into a private aggregator */ public void submit(final Callable task) { - if (eu.svjatoslav.aukio.e3d.gui.ThreadActivityRecorder.isEnabled()) { + if (eu.svjatoslav.aukio.e3d.diag.ThreadActivityRecorder.isEnabled()) { final int parity = traceParity; futures.add(executor.submit(() -> { final long t0 = System.nanoTime(); try { return task.call(); } finally { - eu.svjatoslav.aukio.e3d.gui.ThreadActivityRecorder.record( - eu.svjatoslav.aukio.e3d.gui.ThreadActivityRecorder.KIND_TRANSFORM + parity, + eu.svjatoslav.aukio.e3d.diag.ThreadActivityRecorder.record( + eu.svjatoslav.aukio.e3d.diag.ThreadActivityRecorder.KIND_TRANSFORM + parity, t0, System.nanoTime()); } })); @@ -173,7 +173,7 @@ public final class ParallelTransformCoordinator { * @param target the root aggregator to merge results into */ public void drainAndMergeInto(final RenderAggregator target) { - final boolean trace = eu.svjatoslav.aukio.e3d.gui.ThreadActivityRecorder.isEnabled(); + final boolean trace = eu.svjatoslav.aukio.e3d.diag.ThreadActivityRecorder.isEnabled(); final java.util.List parts = new java.util.ArrayList<>(); Future future; while ((future = futures.poll()) != null) { @@ -181,8 +181,8 @@ public final class ParallelTransformCoordinator { final long t0 = trace ? System.nanoTime() : 0; parts.add(future.get()); if (trace) { - eu.svjatoslav.aukio.e3d.gui.ThreadActivityRecorder.record( - eu.svjatoslav.aukio.e3d.gui.ThreadActivityRecorder.KIND_AWAIT, + eu.svjatoslav.aukio.e3d.diag.ThreadActivityRecorder.record( + eu.svjatoslav.aukio.e3d.diag.ThreadActivityRecorder.KIND_AWAIT, t0, System.nanoTime()); } } catch (final InterruptedException e) { diff --git a/src/main/java/eu/svjatoslav/aukio/e3d/renderer/raster/RadixLongSort.java b/src/main/java/eu/svjatoslav/aukio/e3d/renderer/raster/RadixLongSort.java index ed0f794..f8701ba 100644 --- a/src/main/java/eu/svjatoslav/aukio/e3d/renderer/raster/RadixLongSort.java +++ b/src/main/java/eu/svjatoslav/aukio/e3d/renderer/raster/RadixLongSort.java @@ -194,14 +194,14 @@ final class RadixLongSort { final int to = Math.min(n, from + chunk); futures.add(executor.submit(() -> { final boolean trace = - eu.svjatoslav.aukio.e3d.gui.ThreadActivityRecorder.isEnabled(); + eu.svjatoslav.aukio.e3d.diag.ThreadActivityRecorder.isEnabled(); final long t0 = trace ? System.nanoTime() : 0; try { work.run(ti, f, to); } finally { if (trace) - eu.svjatoslav.aukio.e3d.gui.ThreadActivityRecorder.record( - eu.svjatoslav.aukio.e3d.gui.ThreadActivityRecorder.KIND_SORT, + eu.svjatoslav.aukio.e3d.diag.ThreadActivityRecorder.record( + eu.svjatoslav.aukio.e3d.diag.ThreadActivityRecorder.KIND_SORT, t0, System.nanoTime()); } })); diff --git a/src/main/java/eu/svjatoslav/aukio/e3d/renderer/raster/RenderAggregator.java b/src/main/java/eu/svjatoslav/aukio/e3d/renderer/raster/RenderAggregator.java index 698a51b..1e9ab17 100644 --- a/src/main/java/eu/svjatoslav/aukio/e3d/renderer/raster/RenderAggregator.java +++ b/src/main/java/eu/svjatoslav/aukio/e3d/renderer/raster/RenderAggregator.java @@ -4,7 +4,6 @@ */ package eu.svjatoslav.aukio.e3d.renderer.raster; -import eu.svjatoslav.aukio.e3d.gui.RenderingContext; import eu.svjatoslav.aukio.e3d.renderer.raster.shapes.AbstractCoordinateShape; import java.io.Serializable; @@ -546,9 +545,9 @@ public class RenderAggregator { final boolean parallel, final ExecutorService executor) { final int size = sortedCount; - final boolean trace = eu.svjatoslav.aukio.e3d.gui.ThreadActivityRecorder.isEnabled(); - final int traceKind = eu.svjatoslav.aukio.e3d.gui.ThreadActivityRecorder.KIND_BIN - + eu.svjatoslav.aukio.e3d.gui.ThreadActivityRecorder.frameParity(); + final boolean trace = eu.svjatoslav.aukio.e3d.diag.ThreadActivityRecorder.isEnabled(); + final int traceKind = eu.svjatoslav.aukio.e3d.diag.ThreadActivityRecorder.KIND_BIN + + eu.svjatoslav.aukio.e3d.diag.ThreadActivityRecorder.frameParity(); final java.util.List> futures = parallel ? new java.util.ArrayList<>(chunkCount) : null; for (int c = 0; c < chunkCount; c++) { @@ -563,7 +562,7 @@ public class RenderAggregator { chunk * tileCount, countMode); } finally { if (trace) - eu.svjatoslav.aukio.e3d.gui.ThreadActivityRecorder.record( + eu.svjatoslav.aukio.e3d.diag.ThreadActivityRecorder.record( traceKind, t0, System.nanoTime()); } }; diff --git a/src/main/java/eu/svjatoslav/aukio/e3d/gui/RenderingContext.java b/src/main/java/eu/svjatoslav/aukio/e3d/renderer/raster/RenderingContext.java similarity index 98% rename from src/main/java/eu/svjatoslav/aukio/e3d/gui/RenderingContext.java rename to src/main/java/eu/svjatoslav/aukio/e3d/renderer/raster/RenderingContext.java index 627bc81..3ba085b 100644 --- a/src/main/java/eu/svjatoslav/aukio/e3d/gui/RenderingContext.java +++ b/src/main/java/eu/svjatoslav/aukio/e3d/renderer/raster/RenderingContext.java @@ -2,9 +2,10 @@ * Aukio 3D engine. Author: Svjatoslav Agejenko. * This project is released under Creative Commons Zero (CC0) license. */ -package eu.svjatoslav.aukio.e3d.gui; +package eu.svjatoslav.aukio.e3d.renderer.raster; +import eu.svjatoslav.aukio.e3d.diag.DebugLogBuffer; +import eu.svjatoslav.aukio.e3d.gui.DeveloperTools; -import eu.svjatoslav.aukio.e3d.geometry.Frustum; import eu.svjatoslav.aukio.e3d.geometry.Point2D; import eu.svjatoslav.aukio.e3d.gui.humaninput.MouseEvent; import eu.svjatoslav.aukio.e3d.gui.humaninput.MouseInteractionController; @@ -36,7 +37,7 @@ import java.util.function.Consumer; * back-to-front, each shape can report itself as the object under the mouse cursor. * After painting completes, the topmost shape receives the mouse event.

* - * @see ViewPanel the panel that creates and manages this context + * @see eu.svjatoslav.aukio.e3d.gui.ViewPanel the panel that creates and manages this context * @see eu.svjatoslav.aukio.e3d.renderer.raster.shapes.AbstractCoordinateShape#paint(RenderingContext) */ public class RenderingContext { @@ -53,7 +54,7 @@ public class RenderingContext { * bands off a shared ticket until all bands are done, so a thread * that finishes a cheap band immediately picks up more work. * Derived from the render thread count via - * {@link ViewPanel#setNumRenderThreads(int)}. + * {@link eu.svjatoslav.aukio.e3d.gui.ViewPanel#setNumRenderThreads(int)}. * *

Equals {@code tilesX * tilesY * viewportCount}: the tile grid * covers one viewport, and in stereo mode a second grid covers the @@ -155,7 +156,8 @@ public class RenderingContext { */ public final int renderMaxY; - final BufferedImage bufferedImage; + /** The backing image (public: the AWT shell in {@code gui} blits it directly). */ + public final BufferedImage bufferedImage; /** * Unique id of the current transform cycle, assigned by * {@code ShapeCollection.transformShapes()} from a global counter. diff --git a/src/main/java/eu/svjatoslav/aukio/e3d/gui/SegmentRenderingContext.java b/src/main/java/eu/svjatoslav/aukio/e3d/renderer/raster/SegmentRenderingContext.java similarity index 98% rename from src/main/java/eu/svjatoslav/aukio/e3d/gui/SegmentRenderingContext.java rename to src/main/java/eu/svjatoslav/aukio/e3d/renderer/raster/SegmentRenderingContext.java index a7cc17b..567bdcb 100644 --- a/src/main/java/eu/svjatoslav/aukio/e3d/gui/SegmentRenderingContext.java +++ b/src/main/java/eu/svjatoslav/aukio/e3d/renderer/raster/SegmentRenderingContext.java @@ -2,7 +2,7 @@ * Aukio 3D engine. Author: Svjatoslav Agejenko. * This project is released under Creative Commons Zero (CC0) license. */ -package eu.svjatoslav.aukio.e3d.gui; +package eu.svjatoslav.aukio.e3d.renderer.raster; import eu.svjatoslav.aukio.e3d.gui.humaninput.MouseEvent; import eu.svjatoslav.aukio.e3d.gui.humaninput.MouseInteractionController; diff --git a/src/main/java/eu/svjatoslav/aukio/e3d/renderer/raster/ShapeCollection.java b/src/main/java/eu/svjatoslav/aukio/e3d/renderer/raster/ShapeCollection.java index 5856d6b..da63431 100755 --- a/src/main/java/eu/svjatoslav/aukio/e3d/renderer/raster/ShapeCollection.java +++ b/src/main/java/eu/svjatoslav/aukio/e3d/renderer/raster/ShapeCollection.java @@ -4,12 +4,8 @@ */ package eu.svjatoslav.aukio.e3d.renderer.raster; -import eu.svjatoslav.aukio.e3d.geometry.Frustum; import eu.svjatoslav.aukio.e3d.geometry.Point3D; -import eu.svjatoslav.aukio.e3d.gui.CullingStatistics; -import eu.svjatoslav.aukio.e3d.gui.Camera; -import eu.svjatoslav.aukio.e3d.gui.RenderingContext; -import eu.svjatoslav.aukio.e3d.gui.ViewPanel; +import eu.svjatoslav.aukio.e3d.geometry.Camera; import eu.svjatoslav.aukio.e3d.math.Quaternion; import eu.svjatoslav.aukio.e3d.math.Transform; import eu.svjatoslav.aukio.e3d.math.TransformStack; @@ -64,7 +60,7 @@ import java.util.concurrent.ExecutorService; *

The {@link #addShape} method is synchronized, making it safe to add shapes from * any thread while the rendering loop is active.

* - * @see ViewPanel#getRootShapeCollection() + * @see eu.svjatoslav.aukio.e3d.gui.ViewPanel#getRootShapeCollection() * @see AbstractShape the base class for all shapes * @see AbstractCompositeShape the root composite that stores and processes all shapes * @see RenderAggregator handles depth sorting and painting @@ -267,15 +263,9 @@ public class ShapeCollection { * @param viewPanel the view panel providing the camera state * @param renderingContext the rendering context with frame metadata */ - public synchronized void transformShapes(final ViewPanel viewPanel, - final RenderingContext renderingContext) { - transformShapesBegin(viewPanel, renderingContext); - drainTransformShapes(renderingContext); - } - /** - * Camera-based variant of {@link #transformShapes(ViewPanel, RenderingContext)} - * for headless rendering without a {@link ViewPanel} (off-screen snapshots, + * Camera-based variant of {@link #transformShapes(Camera, RenderingContext)} + * for headless rendering without a {@link eu.svjatoslav.aukio.e3d.gui.ViewPanel} (off-screen snapshots, * golden-image tests, GI scene setup). * * @param camera the camera providing position and orientation @@ -288,25 +278,8 @@ public class ShapeCollection { } /** - * First half of {@link #transformShapes}: resets the frame's - * aggregator, computes the frustum and walks the scene tree, - * forking heavy composites into chunk tasks on the frame's - * coordinator. Returns WITHOUT waiting for the chunk tasks; the - * caller hands the coordinator to {@link #drainTransformShapes} - * later (the pipeline drains it inside the asynchronous - * sort/bin/paint continuation on a worker thread). - * - * @param viewPanel the view panel providing the camera state - * @param renderingContext the pass rendering context - */ - public synchronized void transformShapesBegin(final ViewPanel viewPanel, - final RenderingContext renderingContext) { - transformShapesBegin(viewPanel.getCamera(), renderingContext); - } - - /** - * Camera-based variant of {@link #transformShapesBegin(ViewPanel, RenderingContext)} - * for headless rendering without a {@link ViewPanel}. + * Camera-based variant of {@link #transformShapesBegin(Camera, RenderingContext)} + * for headless rendering without a {@link eu.svjatoslav.aukio.e3d.gui.ViewPanel}. * * @param camera the camera providing position and orientation * @param renderingContext the pass rendering context diff --git a/src/main/java/eu/svjatoslav/aukio/e3d/gui/StereoEye.java b/src/main/java/eu/svjatoslav/aukio/e3d/renderer/raster/StereoEye.java similarity index 90% rename from src/main/java/eu/svjatoslav/aukio/e3d/gui/StereoEye.java rename to src/main/java/eu/svjatoslav/aukio/e3d/renderer/raster/StereoEye.java index aa9c99f..39ceafb 100644 --- a/src/main/java/eu/svjatoslav/aukio/e3d/gui/StereoEye.java +++ b/src/main/java/eu/svjatoslav/aukio/e3d/renderer/raster/StereoEye.java @@ -2,7 +2,7 @@ * Aukio 3D engine. Author: Svjatoslav Agejenko. * This project is released under Creative Commons Zero (CC0) license. */ -package eu.svjatoslav.aukio.e3d.gui; +package eu.svjatoslav.aukio.e3d.renderer.raster; /** * Identifies which eye is being rendered in stereoscopic mode. diff --git a/src/main/java/eu/svjatoslav/aukio/e3d/math/Vertex.java b/src/main/java/eu/svjatoslav/aukio/e3d/renderer/raster/Vertex.java similarity index 99% rename from src/main/java/eu/svjatoslav/aukio/e3d/math/Vertex.java rename to src/main/java/eu/svjatoslav/aukio/e3d/renderer/raster/Vertex.java index 0eb8bcd..9ee819d 100644 --- a/src/main/java/eu/svjatoslav/aukio/e3d/math/Vertex.java +++ b/src/main/java/eu/svjatoslav/aukio/e3d/renderer/raster/Vertex.java @@ -2,11 +2,11 @@ * Aukio 3D engine. Author: Svjatoslav Agejenko. * This project is released under Creative Commons Zero (CC0) license. */ -package eu.svjatoslav.aukio.e3d.math; +package eu.svjatoslav.aukio.e3d.renderer.raster; +import eu.svjatoslav.aukio.e3d.math.TransformStack; import eu.svjatoslav.aukio.e3d.geometry.Point2D; import eu.svjatoslav.aukio.e3d.geometry.Point3D; -import eu.svjatoslav.aukio.e3d.gui.RenderingContext; /** * A vertex in 3D space with transformation and screen projection support. diff --git a/src/main/java/eu/svjatoslav/aukio/e3d/renderer/raster/gi/LightmappedTriangle.java b/src/main/java/eu/svjatoslav/aukio/e3d/renderer/raster/gi/LightmappedTriangle.java index e285b97..0df0d60 100644 --- a/src/main/java/eu/svjatoslav/aukio/e3d/renderer/raster/gi/LightmappedTriangle.java +++ b/src/main/java/eu/svjatoslav/aukio/e3d/renderer/raster/gi/LightmappedTriangle.java @@ -6,7 +6,7 @@ package eu.svjatoslav.aukio.e3d.renderer.raster.gi; import eu.svjatoslav.aukio.e3d.geometry.Point2D; import eu.svjatoslav.aukio.e3d.geometry.Point3D; -import eu.svjatoslav.aukio.e3d.math.Vertex; +import eu.svjatoslav.aukio.e3d.renderer.raster.Vertex; import eu.svjatoslav.aukio.e3d.renderer.raster.Color; import eu.svjatoslav.aukio.e3d.renderer.raster.shapes.basic.texturedpolygon.TexturedTriangle; diff --git a/src/main/java/eu/svjatoslav/aukio/e3d/renderer/raster/shapes/AbstractCoordinateShape.java b/src/main/java/eu/svjatoslav/aukio/e3d/renderer/raster/shapes/AbstractCoordinateShape.java index 94fafb0..5d18d0a 100644 --- a/src/main/java/eu/svjatoslav/aukio/e3d/renderer/raster/shapes/AbstractCoordinateShape.java +++ b/src/main/java/eu/svjatoslav/aukio/e3d/renderer/raster/shapes/AbstractCoordinateShape.java @@ -7,9 +7,9 @@ package eu.svjatoslav.aukio.e3d.renderer.raster.shapes; import eu.svjatoslav.aukio.e3d.geometry.Box; import eu.svjatoslav.aukio.e3d.geometry.Point2D; import eu.svjatoslav.aukio.e3d.geometry.Point3D; -import eu.svjatoslav.aukio.e3d.gui.RenderingContext; +import eu.svjatoslav.aukio.e3d.renderer.raster.RenderingContext; import eu.svjatoslav.aukio.e3d.math.TransformStack; -import eu.svjatoslav.aukio.e3d.math.Vertex; +import eu.svjatoslav.aukio.e3d.renderer.raster.Vertex; import eu.svjatoslav.aukio.e3d.renderer.raster.RenderAggregator; import java.util.ArrayList; diff --git a/src/main/java/eu/svjatoslav/aukio/e3d/renderer/raster/shapes/AbstractShape.java b/src/main/java/eu/svjatoslav/aukio/e3d/renderer/raster/shapes/AbstractShape.java index f6e81a3..633a3bd 100644 --- a/src/main/java/eu/svjatoslav/aukio/e3d/renderer/raster/shapes/AbstractShape.java +++ b/src/main/java/eu/svjatoslav/aukio/e3d/renderer/raster/shapes/AbstractShape.java @@ -6,7 +6,7 @@ package eu.svjatoslav.aukio.e3d.renderer.raster.shapes; import eu.svjatoslav.aukio.e3d.geometry.Box; import eu.svjatoslav.aukio.e3d.geometry.Point3D; -import eu.svjatoslav.aukio.e3d.gui.RenderingContext; +import eu.svjatoslav.aukio.e3d.renderer.raster.RenderingContext; import eu.svjatoslav.aukio.e3d.gui.humaninput.MouseInteractionController; import eu.svjatoslav.aukio.e3d.math.TransformStack; import eu.svjatoslav.aukio.e3d.renderer.raster.RenderAggregator; diff --git a/src/main/java/eu/svjatoslav/aukio/e3d/renderer/raster/shapes/basic/Billboard.java b/src/main/java/eu/svjatoslav/aukio/e3d/renderer/raster/shapes/basic/Billboard.java index 1924793..77f08f5 100644 --- a/src/main/java/eu/svjatoslav/aukio/e3d/renderer/raster/shapes/basic/Billboard.java +++ b/src/main/java/eu/svjatoslav/aukio/e3d/renderer/raster/shapes/basic/Billboard.java @@ -6,8 +6,8 @@ package eu.svjatoslav.aukio.e3d.renderer.raster.shapes.basic; import eu.svjatoslav.aukio.e3d.geometry.Point2D; import eu.svjatoslav.aukio.e3d.geometry.Point3D; -import eu.svjatoslav.aukio.e3d.gui.RenderingContext; -import eu.svjatoslav.aukio.e3d.math.Vertex; +import eu.svjatoslav.aukio.e3d.renderer.raster.RenderingContext; +import eu.svjatoslav.aukio.e3d.renderer.raster.Vertex; import eu.svjatoslav.aukio.e3d.renderer.raster.shapes.AbstractCoordinateShape; import eu.svjatoslav.aukio.e3d.renderer.raster.texture.Texture; import eu.svjatoslav.aukio.e3d.renderer.raster.texture.TextureBitmap; diff --git a/src/main/java/eu/svjatoslav/aukio/e3d/renderer/raster/shapes/basic/line/Line.java b/src/main/java/eu/svjatoslav/aukio/e3d/renderer/raster/shapes/basic/line/Line.java index d327c38..7b1e7a4 100644 --- a/src/main/java/eu/svjatoslav/aukio/e3d/renderer/raster/shapes/basic/line/Line.java +++ b/src/main/java/eu/svjatoslav/aukio/e3d/renderer/raster/shapes/basic/line/Line.java @@ -6,8 +6,8 @@ package eu.svjatoslav.aukio.e3d.renderer.raster.shapes.basic.line; import eu.svjatoslav.aukio.e3d.geometry.Point2D; import eu.svjatoslav.aukio.e3d.geometry.Point3D; -import eu.svjatoslav.aukio.e3d.gui.RenderingContext; -import eu.svjatoslav.aukio.e3d.math.Vertex; +import eu.svjatoslav.aukio.e3d.renderer.raster.RenderingContext; +import eu.svjatoslav.aukio.e3d.renderer.raster.Vertex; import eu.svjatoslav.aukio.e3d.renderer.raster.Color; import eu.svjatoslav.aukio.e3d.renderer.raster.shapes.AbstractCoordinateShape; diff --git a/src/main/java/eu/svjatoslav/aukio/e3d/renderer/raster/shapes/basic/solidpolygon/SolidPolygon.java b/src/main/java/eu/svjatoslav/aukio/e3d/renderer/raster/shapes/basic/solidpolygon/SolidPolygon.java index 6dd3b19..313b66b 100644 --- a/src/main/java/eu/svjatoslav/aukio/e3d/renderer/raster/shapes/basic/solidpolygon/SolidPolygon.java +++ b/src/main/java/eu/svjatoslav/aukio/e3d/renderer/raster/shapes/basic/solidpolygon/SolidPolygon.java @@ -4,13 +4,13 @@ */ package eu.svjatoslav.aukio.e3d.renderer.raster.shapes.basic.solidpolygon; -import eu.svjatoslav.aukio.e3d.geometry.Plane; +import eu.svjatoslav.aukio.e3d.renderer.raster.shapes.composite.base.Plane; import eu.svjatoslav.aukio.e3d.geometry.Point2D; import eu.svjatoslav.aukio.e3d.geometry.Point3D; -import eu.svjatoslav.aukio.e3d.gui.RenderingContext; +import eu.svjatoslav.aukio.e3d.renderer.raster.RenderingContext; import eu.svjatoslav.aukio.e3d.gui.humaninput.MouseInteractionController; import eu.svjatoslav.aukio.e3d.math.TransformStack; -import eu.svjatoslav.aukio.e3d.math.Vertex; +import eu.svjatoslav.aukio.e3d.renderer.raster.Vertex; import eu.svjatoslav.aukio.e3d.renderer.raster.Color; import eu.svjatoslav.aukio.e3d.renderer.raster.RenderAggregator; import eu.svjatoslav.aukio.e3d.renderer.raster.shapes.AbstractCoordinateShape; diff --git a/src/main/java/eu/svjatoslav/aukio/e3d/renderer/raster/shapes/basic/texturedpolygon/MeshTriangle.java b/src/main/java/eu/svjatoslav/aukio/e3d/renderer/raster/shapes/basic/texturedpolygon/MeshTriangle.java index 9e040eb..391b17d 100644 --- a/src/main/java/eu/svjatoslav/aukio/e3d/renderer/raster/shapes/basic/texturedpolygon/MeshTriangle.java +++ b/src/main/java/eu/svjatoslav/aukio/e3d/renderer/raster/shapes/basic/texturedpolygon/MeshTriangle.java @@ -1,7 +1,7 @@ package eu.svjatoslav.aukio.e3d.renderer.raster.shapes.basic.texturedpolygon; import eu.svjatoslav.aukio.e3d.geometry.Point2D; -import eu.svjatoslav.aukio.e3d.gui.RenderingContext; +import eu.svjatoslav.aukio.e3d.renderer.raster.RenderingContext; import eu.svjatoslav.aukio.e3d.renderer.raster.RenderAggregator; import eu.svjatoslav.aukio.e3d.math.TransformStack; diff --git a/src/main/java/eu/svjatoslav/aukio/e3d/renderer/raster/shapes/basic/texturedpolygon/TexturedTriangle.java b/src/main/java/eu/svjatoslav/aukio/e3d/renderer/raster/shapes/basic/texturedpolygon/TexturedTriangle.java index 648baec..76f4b29 100644 --- a/src/main/java/eu/svjatoslav/aukio/e3d/renderer/raster/shapes/basic/texturedpolygon/TexturedTriangle.java +++ b/src/main/java/eu/svjatoslav/aukio/e3d/renderer/raster/shapes/basic/texturedpolygon/TexturedTriangle.java @@ -5,8 +5,8 @@ package eu.svjatoslav.aukio.e3d.renderer.raster.shapes.basic.texturedpolygon; import eu.svjatoslav.aukio.e3d.geometry.Point2D; -import eu.svjatoslav.aukio.e3d.gui.RenderingContext; -import eu.svjatoslav.aukio.e3d.math.Vertex; +import eu.svjatoslav.aukio.e3d.renderer.raster.RenderingContext; +import eu.svjatoslav.aukio.e3d.renderer.raster.Vertex; import eu.svjatoslav.aukio.e3d.renderer.raster.shapes.AbstractCoordinateShape; import eu.svjatoslav.aukio.e3d.renderer.raster.texture.Texture; import eu.svjatoslav.aukio.e3d.renderer.raster.texture.TextureBitmap; diff --git a/src/main/java/eu/svjatoslav/aukio/e3d/renderer/raster/shapes/basic/texturedpolygon/TriangleMeshBlock.java b/src/main/java/eu/svjatoslav/aukio/e3d/renderer/raster/shapes/basic/texturedpolygon/TriangleMeshBlock.java index 94d8195..5220870 100644 --- a/src/main/java/eu/svjatoslav/aukio/e3d/renderer/raster/shapes/basic/texturedpolygon/TriangleMeshBlock.java +++ b/src/main/java/eu/svjatoslav/aukio/e3d/renderer/raster/shapes/basic/texturedpolygon/TriangleMeshBlock.java @@ -3,9 +3,9 @@ package eu.svjatoslav.aukio.e3d.renderer.raster.shapes.basic.texturedpolygon; import eu.svjatoslav.aukio.e3d.geometry.Box; import eu.svjatoslav.aukio.e3d.geometry.Point2D; import eu.svjatoslav.aukio.e3d.geometry.Point3D; -import eu.svjatoslav.aukio.e3d.gui.HiZPyramid; -import eu.svjatoslav.aukio.e3d.gui.RenderingContext; -import eu.svjatoslav.aukio.e3d.gui.StereoEye; +import eu.svjatoslav.aukio.e3d.renderer.raster.HiZPyramid; +import eu.svjatoslav.aukio.e3d.renderer.raster.RenderingContext; +import eu.svjatoslav.aukio.e3d.renderer.raster.StereoEye; import eu.svjatoslav.aukio.e3d.renderer.raster.RenderAggregator; import eu.svjatoslav.aukio.e3d.renderer.raster.shapes.AbstractShape; import eu.svjatoslav.aukio.e3d.renderer.raster.texture.Texture; diff --git a/src/main/java/eu/svjatoslav/aukio/e3d/renderer/raster/shapes/composite/TexturedRectangle.java b/src/main/java/eu/svjatoslav/aukio/e3d/renderer/raster/shapes/composite/TexturedRectangle.java index 89e8d79..a6b5db3 100644 --- a/src/main/java/eu/svjatoslav/aukio/e3d/renderer/raster/shapes/composite/TexturedRectangle.java +++ b/src/main/java/eu/svjatoslav/aukio/e3d/renderer/raster/shapes/composite/TexturedRectangle.java @@ -7,7 +7,7 @@ package eu.svjatoslav.aukio.e3d.renderer.raster.shapes.composite; import eu.svjatoslav.aukio.e3d.geometry.Point2D; import eu.svjatoslav.aukio.e3d.geometry.Point3D; import eu.svjatoslav.aukio.e3d.math.Transform; -import eu.svjatoslav.aukio.e3d.math.Vertex; +import eu.svjatoslav.aukio.e3d.renderer.raster.Vertex; import eu.svjatoslav.aukio.e3d.renderer.raster.shapes.basic.texturedpolygon.TexturedTriangle; import eu.svjatoslav.aukio.e3d.renderer.raster.shapes.composite.base.AbstractCompositeShape; import eu.svjatoslav.aukio.e3d.renderer.raster.texture.Texture; diff --git a/src/main/java/eu/svjatoslav/aukio/e3d/renderer/raster/shapes/composite/base/AbstractCompositeShape.java b/src/main/java/eu/svjatoslav/aukio/e3d/renderer/raster/shapes/composite/base/AbstractCompositeShape.java index 46724bb..fa0ca38 100644 --- a/src/main/java/eu/svjatoslav/aukio/e3d/renderer/raster/shapes/composite/base/AbstractCompositeShape.java +++ b/src/main/java/eu/svjatoslav/aukio/e3d/renderer/raster/shapes/composite/base/AbstractCompositeShape.java @@ -5,15 +5,14 @@ package eu.svjatoslav.aukio.e3d.renderer.raster.shapes.composite.base; import eu.svjatoslav.aukio.e3d.geometry.Box; -import eu.svjatoslav.aukio.e3d.geometry.BspTree; -import eu.svjatoslav.aukio.e3d.geometry.Frustum; +import eu.svjatoslav.aukio.e3d.renderer.raster.Frustum; import eu.svjatoslav.aukio.e3d.geometry.Point3D; -import eu.svjatoslav.aukio.e3d.gui.RenderingContext; +import eu.svjatoslav.aukio.e3d.renderer.raster.RenderingContext; import eu.svjatoslav.aukio.e3d.gui.ViewSpaceTracker; import eu.svjatoslav.aukio.e3d.gui.humaninput.MouseInteractionController; import eu.svjatoslav.aukio.e3d.math.Transform; import eu.svjatoslav.aukio.e3d.math.TransformStack; -import eu.svjatoslav.aukio.e3d.math.Vertex; +import eu.svjatoslav.aukio.e3d.renderer.raster.Vertex; import eu.svjatoslav.aukio.e3d.renderer.raster.Color; import eu.svjatoslav.aukio.e3d.renderer.raster.ParallelTransformCoordinator; import eu.svjatoslav.aukio.e3d.renderer.raster.shapes.AbstractCoordinateShape; diff --git a/src/main/java/eu/svjatoslav/aukio/e3d/geometry/BspTree.java b/src/main/java/eu/svjatoslav/aukio/e3d/renderer/raster/shapes/composite/base/BspTree.java similarity index 99% rename from src/main/java/eu/svjatoslav/aukio/e3d/geometry/BspTree.java rename to src/main/java/eu/svjatoslav/aukio/e3d/renderer/raster/shapes/composite/base/BspTree.java index f6542b2..6b92eca 100644 --- a/src/main/java/eu/svjatoslav/aukio/e3d/geometry/BspTree.java +++ b/src/main/java/eu/svjatoslav/aukio/e3d/renderer/raster/shapes/composite/base/BspTree.java @@ -2,7 +2,7 @@ * Aukio 3D engine. Author: Svjatoslav Agejenko. * This project is released under Creative Commons Zero (CC0) license. */ -package eu.svjatoslav.aukio.e3d.geometry; +package eu.svjatoslav.aukio.e3d.renderer.raster.shapes.composite.base; import eu.svjatoslav.aukio.e3d.renderer.raster.shapes.basic.solidpolygon.SolidPolygon; diff --git a/src/main/java/eu/svjatoslav/aukio/e3d/geometry/Plane.java b/src/main/java/eu/svjatoslav/aukio/e3d/renderer/raster/shapes/composite/base/Plane.java similarity index 98% rename from src/main/java/eu/svjatoslav/aukio/e3d/geometry/Plane.java rename to src/main/java/eu/svjatoslav/aukio/e3d/renderer/raster/shapes/composite/base/Plane.java index 1d5c289..d405b42 100644 --- a/src/main/java/eu/svjatoslav/aukio/e3d/geometry/Plane.java +++ b/src/main/java/eu/svjatoslav/aukio/e3d/renderer/raster/shapes/composite/base/Plane.java @@ -2,9 +2,10 @@ * Aukio 3D engine. Author: Svjatoslav Agejenko. * This project is released under Creative Commons Zero (CC0) license. */ -package eu.svjatoslav.aukio.e3d.geometry; +package eu.svjatoslav.aukio.e3d.renderer.raster.shapes.composite.base; +import eu.svjatoslav.aukio.e3d.geometry.Point3D; -import eu.svjatoslav.aukio.e3d.math.Vertex; +import eu.svjatoslav.aukio.e3d.renderer.raster.Vertex; import eu.svjatoslav.aukio.e3d.renderer.raster.shapes.basic.solidpolygon.SolidPolygon; import java.util.ArrayList; diff --git a/src/main/java/eu/svjatoslav/aukio/e3d/geometry/PolygonType.java b/src/main/java/eu/svjatoslav/aukio/e3d/renderer/raster/shapes/composite/base/PolygonType.java similarity index 95% rename from src/main/java/eu/svjatoslav/aukio/e3d/geometry/PolygonType.java rename to src/main/java/eu/svjatoslav/aukio/e3d/renderer/raster/shapes/composite/base/PolygonType.java index effc9d4..506c9db 100644 --- a/src/main/java/eu/svjatoslav/aukio/e3d/geometry/PolygonType.java +++ b/src/main/java/eu/svjatoslav/aukio/e3d/renderer/raster/shapes/composite/base/PolygonType.java @@ -2,7 +2,7 @@ * Aukio 3D engine. Author: Svjatoslav Agejenko. * This project is released under Creative Commons Zero (CC0) license. */ -package eu.svjatoslav.aukio.e3d.geometry; +package eu.svjatoslav.aukio.e3d.renderer.raster.shapes.composite.base; /** * Classification of a polygon's position relative to a plane. diff --git a/src/main/java/eu/svjatoslav/aukio/e3d/renderer/raster/texture/Texture.java b/src/main/java/eu/svjatoslav/aukio/e3d/renderer/raster/texture/Texture.java index 92d69b9..5792de1 100644 --- a/src/main/java/eu/svjatoslav/aukio/e3d/renderer/raster/texture/Texture.java +++ b/src/main/java/eu/svjatoslav/aukio/e3d/renderer/raster/texture/Texture.java @@ -139,7 +139,7 @@ public class Texture { * Creates a new texture with the specified dimensions and upscale capacity. * *

The underlying {@link java.awt.image.BufferedImage} is created using - * {@link eu.svjatoslav.aukio.e3d.gui.RenderingContext#bufferedImageType} for + * {@link eu.svjatoslav.aukio.e3d.renderer.raster.RenderingContext#bufferedImageType} for * compatibility with the raster rendering pipeline.

* * @param width the width of the primary bitmap in pixels diff --git a/src/test/java/eu/svjatoslav/aukio/e3d/headless/HeadlessToolkitTest.java b/src/test/java/eu/svjatoslav/aukio/e3d/headless/HeadlessToolkitTest.java index c648bdd..c75d42c 100644 --- a/src/test/java/eu/svjatoslav/aukio/e3d/headless/HeadlessToolkitTest.java +++ b/src/test/java/eu/svjatoslav/aukio/e3d/headless/HeadlessToolkitTest.java @@ -5,7 +5,7 @@ package eu.svjatoslav.aukio.e3d.headless; import eu.svjatoslav.aukio.e3d.geometry.Point3D; -import eu.svjatoslav.aukio.e3d.gui.Camera; +import eu.svjatoslav.aukio.e3d.geometry.Camera; import eu.svjatoslav.aukio.e3d.renderer.raster.Color; import eu.svjatoslav.aukio.e3d.renderer.raster.ShapeCollection; import eu.svjatoslav.aukio.e3d.renderer.raster.shapes.basic.solidpolygon.SolidPolygon; diff --git a/src/test/java/eu/svjatoslav/aukio/e3d/renderer/raster/ParallelTransformTest.java b/src/test/java/eu/svjatoslav/aukio/e3d/renderer/raster/ParallelTransformTest.java index 0d6fea0..6eb00d5 100644 --- a/src/test/java/eu/svjatoslav/aukio/e3d/renderer/raster/ParallelTransformTest.java +++ b/src/test/java/eu/svjatoslav/aukio/e3d/renderer/raster/ParallelTransformTest.java @@ -5,7 +5,7 @@ package eu.svjatoslav.aukio.e3d.renderer.raster; import eu.svjatoslav.aukio.e3d.geometry.Point3D; -import eu.svjatoslav.aukio.e3d.gui.RenderingContext; +import eu.svjatoslav.aukio.e3d.renderer.raster.RenderingContext; import eu.svjatoslav.aukio.e3d.gui.ViewPanel; import eu.svjatoslav.aukio.e3d.math.Transform; import eu.svjatoslav.aukio.e3d.renderer.raster.shapes.AbstractCoordinateShape; @@ -115,7 +115,7 @@ public class ParallelTransformTest { // Serial run: no executor -> serial fallback path final RenderingContext serialCtx = new RenderingContext(W, H, 1); serialCtx.prepareForNewFrameRendering(); - scene.transformShapes(panel, serialCtx); + scene.transformShapes(panel.getCamera(), serialCtx); scene.sortShapes(); final int[] serialIds = snapshotIds(scene); final double[] serialZs = snapshotZs(scene); @@ -128,7 +128,7 @@ public class ParallelTransformTest { parallelCtx.transformExecutor = executor; parallelCtx.prepareForNewFrameRendering(); parallelCtx.prepareForNewFrameRendering(); // distinct frameNumber -> full re-transform - scene.transformShapes(panel, parallelCtx); + scene.transformShapes(panel.getCamera(), parallelCtx); scene.sortShapes(); final int[] parallelIds = snapshotIds(scene); final double[] parallelZs = snapshotZs(scene); @@ -183,7 +183,7 @@ public class ParallelTransformTest { // Serial run final RenderingContext serialCtx = new RenderingContext(W, H, 1); serialCtx.prepareForNewFrameRendering(); - scene.transformShapes(panel, serialCtx); + scene.transformShapes(panel.getCamera(), serialCtx); scene.sortShapes(); final int[] serialIds = snapshotIds(scene); final double[] serialZs = snapshotZs(scene); @@ -194,7 +194,7 @@ public class ParallelTransformTest { parallelCtx.transformExecutor = executor; parallelCtx.prepareForNewFrameRendering(); parallelCtx.prepareForNewFrameRendering(); - scene.transformShapes(panel, parallelCtx); + scene.transformShapes(panel.getCamera(), parallelCtx); scene.sortShapes(); final int[] parallelIds = snapshotIds(scene); final double[] parallelZs = snapshotZs(scene); diff --git a/src/test/java/eu/svjatoslav/aukio/e3d/renderer/raster/SegmentBinningTest.java b/src/test/java/eu/svjatoslav/aukio/e3d/renderer/raster/SegmentBinningTest.java index ef7c9af..a93dec7 100644 --- a/src/test/java/eu/svjatoslav/aukio/e3d/renderer/raster/SegmentBinningTest.java +++ b/src/test/java/eu/svjatoslav/aukio/e3d/renderer/raster/SegmentBinningTest.java @@ -6,11 +6,11 @@ package eu.svjatoslav.aukio.e3d.renderer.raster; import eu.svjatoslav.aukio.e3d.geometry.Point2D; import eu.svjatoslav.aukio.e3d.geometry.Point3D; -import eu.svjatoslav.aukio.e3d.gui.RenderingContext; -import eu.svjatoslav.aukio.e3d.gui.SegmentRenderingContext; +import eu.svjatoslav.aukio.e3d.renderer.raster.RenderingContext; +import eu.svjatoslav.aukio.e3d.renderer.raster.SegmentRenderingContext; import eu.svjatoslav.aukio.e3d.gui.ViewPanel; import eu.svjatoslav.aukio.e3d.math.Transform; -import eu.svjatoslav.aukio.e3d.math.Vertex; +import eu.svjatoslav.aukio.e3d.renderer.raster.Vertex; import eu.svjatoslav.aukio.e3d.renderer.raster.shapes.AbstractCoordinateShape; import eu.svjatoslav.aukio.e3d.renderer.raster.shapes.basic.GlowingPoint; import eu.svjatoslav.aukio.e3d.renderer.raster.shapes.basic.line.Line; @@ -182,7 +182,7 @@ public class SegmentBinningTest { private void transformAndSort(final ViewPanel panel, final ShapeCollection scene, final RenderingContext context) { context.prepareForNewFrameRendering(); - scene.transformShapes(panel, context); + scene.transformShapes(panel.getCamera(), context); scene.sortShapes(); } diff --git a/src/test/java/eu/svjatoslav/aukio/e3d/renderer/raster/shapes/basic/texturedpolygon/TexturedTriangleBlendTest.java b/src/test/java/eu/svjatoslav/aukio/e3d/renderer/raster/shapes/basic/texturedpolygon/TexturedTriangleBlendTest.java index 881e716..50b9418 100644 --- a/src/test/java/eu/svjatoslav/aukio/e3d/renderer/raster/shapes/basic/texturedpolygon/TexturedTriangleBlendTest.java +++ b/src/test/java/eu/svjatoslav/aukio/e3d/renderer/raster/shapes/basic/texturedpolygon/TexturedTriangleBlendTest.java @@ -6,8 +6,8 @@ package eu.svjatoslav.aukio.e3d.renderer.raster.shapes.basic.texturedpolygon; import eu.svjatoslav.aukio.e3d.geometry.Point2D; import eu.svjatoslav.aukio.e3d.geometry.Point3D; -import eu.svjatoslav.aukio.e3d.gui.RenderingContext; -import eu.svjatoslav.aukio.e3d.math.Vertex; +import eu.svjatoslav.aukio.e3d.renderer.raster.RenderingContext; +import eu.svjatoslav.aukio.e3d.renderer.raster.Vertex; import eu.svjatoslav.aukio.e3d.renderer.raster.texture.TextureBitmap; import org.junit.Test; diff --git a/src/test/java/eu/svjatoslav/aukio/e3d/renderer/raster/shapes/basic/texturedpolygon/TexturedTrianglePerspectiveTest.java b/src/test/java/eu/svjatoslav/aukio/e3d/renderer/raster/shapes/basic/texturedpolygon/TexturedTrianglePerspectiveTest.java index 0c04e7f..4fe9ef3 100644 --- a/src/test/java/eu/svjatoslav/aukio/e3d/renderer/raster/shapes/basic/texturedpolygon/TexturedTrianglePerspectiveTest.java +++ b/src/test/java/eu/svjatoslav/aukio/e3d/renderer/raster/shapes/basic/texturedpolygon/TexturedTrianglePerspectiveTest.java @@ -6,8 +6,8 @@ package eu.svjatoslav.aukio.e3d.renderer.raster.shapes.basic.texturedpolygon; import eu.svjatoslav.aukio.e3d.geometry.Point2D; import eu.svjatoslav.aukio.e3d.geometry.Point3D; -import eu.svjatoslav.aukio.e3d.gui.RenderingContext; -import eu.svjatoslav.aukio.e3d.math.Vertex; +import eu.svjatoslav.aukio.e3d.renderer.raster.RenderingContext; +import eu.svjatoslav.aukio.e3d.renderer.raster.Vertex; import eu.svjatoslav.aukio.e3d.renderer.raster.texture.TextureBitmap; import org.junit.Test; -- 2.20.1