From 1b330a83159aea7acd64a2bb313dea654c34bac3 Mon Sep 17 00:00:00 2001 From: Svjatoslav Agejenko Date: Tue, 12 May 2026 22:09:30 +0300 Subject: [PATCH] feat(demos): add RGB cube demo, light source demo, and extended benchmark Add RGBCubeDemo: volumetric 10x10x10 color cube with textured triangles and per-cell color mapping (X=Red, Y=Green, Z=Blue). Add LightSourceDemo: white sphere illuminated by two colored lights (yellow + blue) demonstrating multiple light contribution and shading. Extend GraphicsBenchmark with short/extended test modes. Extended mode measures thread scaling from 1 to available cores with a 1.5x step factor, outputting a matrix of FPS per test x thread count. Update AGENTS.md to reflect current code organization. Remove ArrowDemo.java and doc/overview.png. Add screenshots for lights and RGB cube. Move inline TODOs from index.org to sixth-3d/TODO.org. Update TexturedCubesTest to use TextureGenerator.glowingBorder instead of inline AWT texture creation. --- AGENTS.md | 28 ++- doc/Screenshots/Essentials/Lights.png | Bin 0 -> 13961 bytes doc/Screenshots/RGB cube.png | Bin 0 -> 122770 bytes doc/index.org | 218 +++++++++++++++--- doc/overview.png | Bin 28715 -> 0 bytes .../sixth/e3d/examples/ArrowDemo.java | 131 ----------- .../sixth/e3d/examples/RGBCubeDemo.java | 170 ++++++++++++++ .../examples/benchmark/GraphicsBenchmark.java | 194 ++++++++++++++-- .../e3d/examples/benchmark/TestResult.java | 9 +- .../examples/benchmark/TexturedCubesTest.java | 32 +-- .../examples/essentials/LightSourceDemo.java | 164 +++++++++++++ .../launcher/ApplicationListPanel.java | 29 +++ 12 files changed, 754 insertions(+), 221 deletions(-) create mode 100644 doc/Screenshots/Essentials/Lights.png create mode 100644 doc/Screenshots/RGB cube.png delete mode 100644 doc/overview.png delete mode 100644 src/main/java/eu/svjatoslav/sixth/e3d/examples/ArrowDemo.java create mode 100644 src/main/java/eu/svjatoslav/sixth/e3d/examples/RGBCubeDemo.java create mode 100644 src/main/java/eu/svjatoslav/sixth/e3d/examples/essentials/LightSourceDemo.java diff --git a/AGENTS.md b/AGENTS.md index d5e1345..363b0b6 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -52,22 +52,40 @@ src/main/java/eu/svjatoslav/sixth/e3d/examples/ │ ├── Cell.java │ ├── Matrix.java │ └── Star.java -├── terrain_demo/ - Procedural terrain generation demo +├── terrain_demo/ - Procedural terrain generation demo │ ├── DiamondSquareTerrain.java │ ├── FractalTree.java +│ ├── Branch.java │ └── TerrainDemo.java ├── galaxy_demo/ - Galaxy simulation demo │ ├── Galaxy.java │ └── PointCloudDemo.java -├── RandomPolygonsDemo.java -├── OctreeDemo.java -├── graph_demo/ - 3D graph visualization demos +├── graph_demo/ - 3D graph visualization demos │ ├── MathGraphsDemo.java │ └── SurfaceGraph3D.java +├── benchmark/ - Graphics benchmark +│ ├── GraphicsBenchmark.java +│ ├── BenchmarkTest.java +│ ├── TestResult.java +│ ├── SolidCubesTest.java +│ ├── LitSolidCubesTest.java +│ ├── TexturedCubesTest.java +│ ├── TexturedCube.java +│ ├── WireframeCubesTest.java +│ └── StarGridTest.java +├── essentials/ - Essential/tutorial demos +│ ├── MinimalExample.java +│ ├── CoordinateSystemDemo.java +│ ├── WindingOrderDemo.java +│ ├── ShapeGalleryDemo.java +│ ├── CSGDemo.java +│ └── LightSourceDemo.java +├── RGBCubeDemo.java +├── OctreeDemo.java +├── SineHeightmap.java ├── TextEditorDemo.java ├── TextEditorDemo2.java ├── RainingNumbersDemo.java -├── WindingOrderDemo.java - Tests winding order & backface culling └── package-info.java ``` diff --git a/doc/Screenshots/Essentials/Lights.png b/doc/Screenshots/Essentials/Lights.png new file mode 100644 index 0000000000000000000000000000000000000000..91272de7fac00a9405d7d1c026c5c7a62b19328a GIT binary patch literal 13961 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

Ah4S_j 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

{-FSJD~50Cg9T;1^72MuyK6HK?Gx%>jf<32d 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

7F{Rq2j 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

h#`xT3vrb3gpQ3NS_Q8goMn4}(udSw4&KuL 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 txz(o-jdPJ2q&vuvag00!{J$@wQRsxj2w$iHE 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 I-#Oxc04DirF#rGn diff --git a/src/main/java/eu/svjatoslav/sixth/e3d/examples/ArrowDemo.java b/src/main/java/eu/svjatoslav/sixth/e3d/examples/ArrowDemo.java deleted file mode 100644 index 3b45854..0000000 --- a/src/main/java/eu/svjatoslav/sixth/e3d/examples/ArrowDemo.java +++ /dev/null @@ -1,131 +0,0 @@ -/* - * Sixth 3D engine demos. Author: Svjatoslav Agejenko. - * This project is released under Creative Commons Zero (CC0) license. - */ -package eu.svjatoslav.sixth.e3d.examples; - -import eu.svjatoslav.sixth.e3d.geometry.Point3D; -import eu.svjatoslav.sixth.e3d.gui.ViewFrame; -import eu.svjatoslav.sixth.e3d.gui.ViewPanel; -import eu.svjatoslav.sixth.e3d.renderer.raster.Color; -import eu.svjatoslav.sixth.e3d.renderer.raster.ShapeCollection; -import eu.svjatoslav.sixth.e3d.renderer.raster.shapes.basic.line.LineAppearance; -import eu.svjatoslav.sixth.e3d.renderer.raster.shapes.composite.solid.SolidPolygonArrow; -import eu.svjatoslav.sixth.e3d.renderer.raster.shapes.composite.solid.SolidPolygonCone; -import eu.svjatoslav.sixth.e3d.renderer.raster.shapes.composite.wireframe.Grid3D; - -import static eu.svjatoslav.sixth.e3d.geometry.Point3D.point; -import static eu.svjatoslav.sixth.e3d.renderer.raster.Color.hex; - -/** - * Demo showcasing the SolidPolygonArrow shape with various colors, sizes, - * orientations, and transparency levels. - * - *

This demo displays arrows pointing in different directions to demonstrate - * the flexibility of the arrow shape. A 3D grid provides spatial reference.

- */ -public class ArrowDemo { - - /** - * Entry point for the arrow demo. - * - * @param args command line arguments (ignored) - */ - public static void main(final String[] args) { - final ViewFrame viewFrame = new ViewFrame("Arrow Demo"); - final ViewPanel viewPanel = viewFrame.getViewPanel(); - final ShapeCollection shapes = viewPanel.getRootShapeCollection(); - - // Position camera to view the scene - viewPanel.getCamera().getTransform().setTranslation(point(0, -200, -600)); - - // Add a 3D grid for spatial reference - final LineAppearance gridAppearance = new LineAppearance(1, hex("64646450")); - final Grid3D grid = new Grid3D( - point(-300, -200, -300), - point(300, 200, 300), - 100, - gridAppearance - ); - shapes.addShape(grid); - - // Create arrows pointing in different directions with different properties - - // Red arrow pointing up (negative Y direction) - final SolidPolygonArrow redArrow = new SolidPolygonArrow( - point(0, 150, 0), - point(0, -150, 0), - 8, Color.RED - ); - shapes.addShape(redArrow); - - // Green arrow pointing along positive X - final SolidPolygonArrow greenArrow = new SolidPolygonArrow( - point(-200, 0, 0), - point(0, 0, 0), - 6, Color.GREEN - ); - shapes.addShape(greenArrow); - - // Blue arrow pointing along positive Z - final SolidPolygonArrow blueArrow = new SolidPolygonArrow( - point(0, 0, -200), - point(0, 0, 0), - 6, Color.BLUE - ); - shapes.addShape(blueArrow); - - // Yellow arrow pointing diagonally - final SolidPolygonArrow yellowArrow = new SolidPolygonArrow( - point(100, 100, 100), - point(300, -100, 300), - 10, Color.YELLOW - ); - shapes.addShape(yellowArrow); - - // Semi-transparent cyan arrow (50% opacity) - final SolidPolygonArrow transparentCyanArrow = new SolidPolygonArrow( - point(-150, 50, -100), - point(-50, -100, 100), - 8, hex("00FFFF80") - ); - shapes.addShape(transparentCyanArrow); - - // Semi-transparent magenta arrow (25% opacity) - final SolidPolygonArrow transparentMagentaArrow = new SolidPolygonArrow( - point(50, 200, 50), - point(50, 0, 50), - 12, hex("FF00FF40") - ); - shapes.addShape(transparentMagentaArrow); - - // Small white arrows forming a circle pattern - for (int i = 0; i < 8; i++) { - final double angle = i * Math.PI / 4; - final double radius = 250; - final double startX = radius * Math.cos(angle); - final double startZ = radius * Math.sin(angle); - final double endX = (radius + 80) * Math.cos(angle); - final double endZ = (radius + 80) * Math.sin(angle); - - final SolidPolygonArrow circleArrow = new SolidPolygonArrow( - point(startX, -80, startZ), - point(endX, -80, endZ), - 4, Color.WHITE - ); - shapes.addShape(circleArrow); - } - - // A standalone cone to demonstrate SolidPolygonCone - final SolidPolygonCone standaloneCone = new SolidPolygonCone( - point(-300, 0, 0), - 40, - 80, - 16, - hex("FF8000FF") - ); - shapes.addShape(standaloneCone); - - viewPanel.repaintDuringNextViewUpdate(); - } -} \ No newline at end of file diff --git a/src/main/java/eu/svjatoslav/sixth/e3d/examples/RGBCubeDemo.java b/src/main/java/eu/svjatoslav/sixth/e3d/examples/RGBCubeDemo.java new file mode 100644 index 0000000..752a225 --- /dev/null +++ b/src/main/java/eu/svjatoslav/sixth/e3d/examples/RGBCubeDemo.java @@ -0,0 +1,170 @@ +/* + * Sixth 3D engine demos. Author: Svjatoslav Agejenko. + * This project is released under Creative Commons Zero (CC0) license. + * + */ + +package eu.svjatoslav.sixth.e3d.examples; + +import eu.svjatoslav.sixth.e3d.geometry.Point2D; +import eu.svjatoslav.sixth.e3d.geometry.Point3D; +import eu.svjatoslav.sixth.e3d.gui.ViewFrame; +import eu.svjatoslav.sixth.e3d.math.Vertex; +import eu.svjatoslav.sixth.e3d.renderer.raster.Color; +import eu.svjatoslav.sixth.e3d.renderer.raster.ShapeCollection; +import eu.svjatoslav.sixth.e3d.renderer.raster.shapes.basic.texturedpolygon.TexturedTriangle; +import eu.svjatoslav.sixth.e3d.renderer.raster.texture.Texture; +import eu.svjatoslav.sixth.e3d.renderer.raster.texture.TextureGenerator; + +import static eu.svjatoslav.sixth.e3d.geometry.Point3D.point; + +/** + * Demo showing a 3D cube of colored square plates where each axis represents a color channel. + *

+ * Creates a 10x10x10 grid of square plates arranged as flat XY planes. + * Each plate is rendered as two textured triangles using a solid-color texture + * with a black border. Color is determined by the plate's 3D grid position: + *

+ *
    + *
  • X position → Red intensity (0-255)
  • + *
  • Y position → Green intensity (0-255)
  • + *
  • Z position → Blue intensity (0-255)
  • + *
+ *

+ * The black border around each plate visually separates individual cells. + * The result is a volumetric RGB color cube that can be explored by flying around. + *

+ */ +public class RGBCubeDemo { + + /** Number of squares per dimension. */ + private static final int GRID_SIZE = 10; + + /** Size of each square in world units. */ + private static final double SQUARE_SIZE = 40; + + /** Spacing between square centers (20% gap = 1.25 × square size). */ + private static final double SPACING = SQUARE_SIZE * 1.25; + + /** Half the grid size for centering calculations. */ + private static final double HALF_GRID = GRID_SIZE / 2.0; + + /** Camera distance from the cube center. */ + private static final double CAMERA_DISTANCE = 600; + + /** Texture size in pixels for each square. */ + private static final int TEXTURE_SIZE = 32; + + /** Width of the black border around each square in pixels. */ + private static final int BORDER_WIDTH = 3; + + /** Border color (black) applied to all squares. */ + private static final Color BORDER_COLOR = new Color(0, 0, 0); + + /** + * Entry point for the RGB cube demo. + * + * @param args command line arguments (ignored) + */ + public static void main(final String[] args) { + final ViewFrame viewFrame = new ViewFrame("RGB Cube"); + + viewFrame.getViewPanel().getCamera().getTransform().set(-405.73, -407.15, -713.60, -0.64, -0.42, 0.00); + + + final ShapeCollection geometryCollection = viewFrame.getViewPanel() + .getRootShapeCollection(); + + createRGBCube(geometryCollection); + + viewFrame.getViewPanel().repaintDuringNextViewUpdate(); + } + + /** + * Creates the RGB color cube composed of colored square plates. + *

+ * Generates 10 Z-layers, each containing a 10x10 grid of square plates. + * Each plate consists of two textured triangles with a solid-color texture + * bordered in black. Color is calculated from normalized grid position. + *

+ * + * @param shapeCollection the collection to add plates to + */ + private static void createRGBCube(final ShapeCollection shapeCollection) { + final double maxIndex = GRID_SIZE - 1; + + for (int gz = 0; gz < GRID_SIZE; gz++) { + for (int gy = 0; gy < GRID_SIZE; gy++) { + for (int gx = 0; gx < GRID_SIZE; gx++) { + createSquare(shapeCollection, gx, gy, gz, maxIndex); + } + } + } + } + + /** + * Creates a single textured square plate at the specified grid position. + *

+ * The plate is built from two textured triangles positioned in world space + * and colored based on normalized grid coordinates. A black border surrounds + * each plate to make individual cells visually distinct. + *

+ * + * @param shapeCollection the collection to add the plate to + * @param gx grid X position (0 to GRID_SIZE-1) + * @param gy grid Y position (0 to GRID_SIZE-1) + * @param gz grid Z position (0 to GRID_SIZE-1) + * @param maxIndex maximum grid index (GRID_SIZE - 1) + */ + private static void createSquare(final ShapeCollection shapeCollection, + final int gx, final int gy, final int gz, + final double maxIndex) { + final double x = (gx - HALF_GRID) * SPACING + SPACING / 2; + final double y = (gy - HALF_GRID) * SPACING + SPACING / 2; + final double z = (gz - HALF_GRID) * SPACING + SPACING / 2; + + final int r = (int) ((gx / maxIndex) * 255); + final int g = (int) ((gy / maxIndex) * 255); + final int b = (int) ((gz / maxIndex) * 255); + + final Color fillColor = new Color(r, g, b); + + final Texture texture = TextureGenerator.solidWithBorder( + TEXTURE_SIZE, fillColor, BORDER_COLOR, BORDER_WIDTH, 0); + + final double halfSize = SQUARE_SIZE / 2; + + final Point3D p1 = point(x - halfSize, y - halfSize, z); + final Point3D p2 = point(x + halfSize, y - halfSize, z); + final Point3D p3 = point(x + halfSize, y + halfSize, z); + final Point3D p4 = point(x - halfSize, y + halfSize, z); + + final Point2D t00 = new Point2D(0, 0); + final Point2D t10 = new Point2D(TEXTURE_SIZE, 0); + final Point2D t01 = new Point2D(0, TEXTURE_SIZE); + final Point2D t11 = new Point2D(TEXTURE_SIZE, TEXTURE_SIZE); + + // Correct winding order for CCW in Y-down screen coords (front-facing) + // Following WindingOrderDemo pattern: upper → lower-left → lower-right + // Triangle 1: p1 (upper-left) → p4 (lower-left) → p3 (lower-right) + final TexturedTriangle tri1 = new TexturedTriangle( + new Vertex(p1, t00), + new Vertex(p4, t01), + new Vertex(p3, t11), + texture + ); + tri1.setBackfaceCulling(false); + + // Triangle 2: p1 (upper-left) → p3 (lower-right) → p2 (upper-right) + final TexturedTriangle tri2 = new TexturedTriangle( + new Vertex(p1, t00), + new Vertex(p3, t11), + new Vertex(p2, t10), + texture + ); + tri2.setBackfaceCulling(false); + + shapeCollection.addShape(tri1); + shapeCollection.addShape(tri2); + } +} diff --git a/src/main/java/eu/svjatoslav/sixth/e3d/examples/benchmark/GraphicsBenchmark.java b/src/main/java/eu/svjatoslav/sixth/e3d/examples/benchmark/GraphicsBenchmark.java index f44bd6e..cbe2377 100644 --- a/src/main/java/eu/svjatoslav/sixth/e3d/examples/benchmark/GraphicsBenchmark.java +++ b/src/main/java/eu/svjatoslav/sixth/e3d/examples/benchmark/GraphicsBenchmark.java @@ -51,6 +51,9 @@ public class GraphicsBenchmark implements FrameListener, KeyboardInputHandler { private static final double WOBBLE_AMPLITUDE = 800; private static final int TEST_DURATION_MS = 30000; + /** Benchmark mode: short (single run) or extended (multiple thread counts). */ + private enum BenchmarkMode { SHORT, EXTENDED } + private ViewFrame viewFrame; private ViewPanel viewPanel; private ShapeCollection shapes; @@ -65,6 +68,12 @@ public class GraphicsBenchmark implements FrameListener, KeyboardInputHandler { private boolean pendingTestTransition = false; private final List results = new ArrayList<>(); private final List tests = new ArrayList<>(); + private BenchmarkMode mode; + + // Extended mode state + private int currentThreadCount = 1; + private int threadCountIndex = 0; + private final List threadCounts = new ArrayList<>(); /** * Entry point for the graphics benchmark. @@ -72,13 +81,14 @@ public class GraphicsBenchmark implements FrameListener, KeyboardInputHandler { */ public static void main(String[] args) { SwingUtilities.invokeLater(() -> { - if (showIntroDialog()) { - new GraphicsBenchmark(); + BenchmarkMode choice = showIntroDialog(); + if (choice != null) { + new GraphicsBenchmark(choice); } }); } - private static boolean showIntroDialog() { + private static BenchmarkMode showIntroDialog() { String message = "
" + "

Graphics Benchmark

" + @@ -89,27 +99,88 @@ public class GraphicsBenchmark implements FrameListener, KeyboardInputHandler { "(skipping reduces measurement precision)" + "
  • A summary will be shown at the end
  • " + "" + + "

    Extended test runs all tests multiple times with increasing " + + "thread counts (1 to " + Runtime.getRuntime().availableProcessors() + " cores) " + + "to measure threading scaling.

    " + "
    "; - int choice = JOptionPane.showConfirmDialog( - null, - message, - "Graphics Benchmark", - JOptionPane.OK_CANCEL_OPTION, - JOptionPane.INFORMATION_MESSAGE - ); + JButton shortButton = new JButton("Short Test"); + JButton extendedButton = new JButton("Extended Test"); + JButton cancelButton = new JButton("Cancel"); + + JPanel buttonPanel = new JPanel(new FlowLayout(FlowLayout.CENTER, 10, 0)); + buttonPanel.add(shortButton); + buttonPanel.add(extendedButton); + buttonPanel.add(cancelButton); + + final BenchmarkMode[] result = {null}; + + shortButton.addActionListener(e -> { + result[0] = BenchmarkMode.SHORT; + Window w = SwingUtilities.getWindowAncestor(shortButton); + if (w != null) w.dispose(); + }); + extendedButton.addActionListener(e -> { + result[0] = BenchmarkMode.EXTENDED; + Window w = SwingUtilities.getWindowAncestor(extendedButton); + if (w != null) w.dispose(); + }); + cancelButton.addActionListener(e -> { + Window w = SwingUtilities.getWindowAncestor(cancelButton); + if (w != null) w.dispose(); + }); + + JPanel panel = new JPanel(new BorderLayout(0, 10)); + panel.add(new JLabel(message), BorderLayout.CENTER); + panel.add(buttonPanel, BorderLayout.SOUTH); + panel.setBorder(BorderFactory.createEmptyBorder(10, 10, 10, 10)); - return choice == JOptionPane.OK_OPTION; + JDialog dialog = new JDialog((Frame) null, "Graphics Benchmark", true); + dialog.setContentPane(panel); + dialog.pack(); + dialog.setLocationRelativeTo(null); + dialog.setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE); + dialog.setVisible(true); + + return result[0]; } /** * Constructs and runs the graphics benchmark. + * + * @param mode SHORT for single run, EXTENDED for multi-thread-count run */ - public GraphicsBenchmark() { + public GraphicsBenchmark(BenchmarkMode mode) { + this.mode = mode; + if (mode == BenchmarkMode.EXTENDED) { + buildThreadCountList(); + } registerTests(); initializeWindow(); } + /** + * Builds the list of thread counts for extended mode. + * Starts at 1, each step multiplies by 1.5 and rounds to nearest integer, + * always increasing by at least 1. Stops when reaching available processors. + */ + private void buildThreadCountList() { + int maxCores = Runtime.getRuntime().availableProcessors(); + int count = 1; + threadCounts.add(count); + while (count < maxCores) { + int next = (int) Math.round(count * 1.5); + if (next <= count) { + next = count + 1; + } + if (next > maxCores) { + next = maxCores; + } + threadCounts.add(next); + count = next; + } + } + private void initializeWindow() { viewFrame = new ViewFrame("Graphics Benchmark", WINDOW_WIDTH, WINDOW_HEIGHT); viewPanel = viewFrame.getViewPanel(); @@ -133,13 +204,29 @@ public class GraphicsBenchmark implements FrameListener, KeyboardInputHandler { } private void startNextTest() { - int nextIndex = results.size(); - if (nextIndex >= tests.size()) { - scheduleBenchmarkFinish(); - return; + int testIndex; + if (mode == BenchmarkMode.EXTENDED) { + // In extended mode, cycle through: test0@threads[0], test1@threads[0], ..., testN@threads[0], + // then test0@threads[1], test1@threads[1], ..., testN@threads[1], etc. + testIndex = results.size() % tests.size(); + int roundNumber = results.size() / tests.size(); + + if (roundNumber >= threadCounts.size()) { + scheduleBenchmarkFinish(); + return; + } + + currentThreadCount = threadCounts.get(roundNumber); + viewPanel.setNumRenderThreads(currentThreadCount); + } else { + testIndex = results.size(); + if (testIndex >= tests.size()) { + scheduleBenchmarkFinish(); + return; + } } - currentTest = tests.get(nextIndex); + currentTest = tests.get(testIndex); testFinished = false; orbitAngle = 0; frameCount = 0; @@ -157,7 +244,8 @@ public class GraphicsBenchmark implements FrameListener, KeyboardInputHandler { testFinished = true; long elapsed = System.currentTimeMillis() - testStartTime; double durationSeconds = elapsed / 1000.0; - results.add(new TestResult(currentTest.getName(), frameCount, durationSeconds)); + int threads = (mode == BenchmarkMode.EXTENDED) ? currentThreadCount : viewPanel.getNumRenderThreads(); + results.add(new TestResult(currentTest.getName(), frameCount, durationSeconds, threads)); pendingTestTransition = true; } @@ -198,7 +286,10 @@ public class GraphicsBenchmark implements FrameListener, KeyboardInputHandler { sb.append("Resolution: ").append(WINDOW_WIDTH).append("x").append(WINDOW_HEIGHT).append("\n"); sb.append("Cubes: ").append(GRID_SIZE * GRID_SIZE * GRID_SIZE) .append(" (").append(GRID_SIZE).append("x").append(GRID_SIZE).append("x").append(GRID_SIZE).append(" grid)\n"); - sb.append("Duration: ").append(TEST_DURATION_MS / 1000).append(" seconds per test\n"); + sb.append("Duration: ").append( + mode == BenchmarkMode.EXTENDED ? "5" : String.valueOf(TEST_DURATION_MS / 1000)) + .append(" seconds per test\n"); + sb.append("Mode: ").append(mode == BenchmarkMode.EXTENDED ? "Extended (multi-thread)" : "Short").append("\n"); sb.append("\n"); sb.append(thinSeparator).append("\n"); sb.append("SYSTEM INFORMATION\n"); @@ -207,6 +298,19 @@ public class GraphicsBenchmark implements FrameListener, KeyboardInputHandler { sb.append("Arch: ").append(System.getProperty("os.arch")).append("\n"); sb.append("CPU cores: ").append(runtime.availableProcessors()).append("\n"); sb.append("\n"); + + if (mode == BenchmarkMode.EXTENDED) { + formatExtendedResults(sb, thinSeparator); + } else { + formatShortResults(sb, thinSeparator); + } + + sb.append(separator).append("\n"); + + return sb.toString(); + } + + private void formatShortResults(StringBuilder sb, String thinSeparator) { sb.append(thinSeparator).append("\n"); sb.append(String.format("%-28s %s%n", "Test", "Avg FPS")); sb.append(thinSeparator).append("\n"); @@ -214,10 +318,55 @@ public class GraphicsBenchmark implements FrameListener, KeyboardInputHandler { for (TestResult result : results) { sb.append(String.format("%-28s %.2f%n", result.testName, result.averageFps)); } + } - sb.append(separator).append("\n"); + private void formatExtendedResults(StringBuilder sb, String thinSeparator) { + // Build a 2D matrix: rows = test names, columns = thread counts + // Collect unique test names in order and thread counts in order + List testNames = tests.stream().map(BenchmarkTest::getName).toList(); - return sb.toString(); + // Column width: enough for FPS values like "1234.56" + int nameWidth = 28; + int colWidth = 10; + + // Header row + sb.append(thinSeparator).append("\n"); + sb.append("THREAD SCALING RESULTS (Avg FPS)\n"); + sb.append(thinSeparator).append("\n"); + + StringBuilder header = new StringBuilder(String.format("%-" + nameWidth + "s", "Test \\ Threads")); + for (int tc : threadCounts) { + header.append(String.format("%" + colWidth + "d", tc)); + } + sb.append(header).append("\n"); + sb.append(thinSeparator).append("\n"); + + // Data rows + for (String testName : testNames) { + StringBuilder row = new StringBuilder(String.format("%-" + nameWidth + "s", testName)); + for (int tc : threadCounts) { + double fps = findFps(testName, tc); + if (fps >= 0) { + row.append(String.format("%" + colWidth + ".2f", fps)); + } else { + row.append(String.format("%" + colWidth + "s", "-")); + } + } + sb.append(row).append("\n"); + } + } + + /** + * Finds the FPS for a given test name and thread count from the results. + * @return average FPS, or -1 if not found + */ + private double findFps(String testName, int threadCount) { + for (TestResult result : results) { + if (result.testName.equals(testName) && result.threadCount == threadCount) { + return result.averageFps; + } + } + return -1; } private void showResultsDialog() { @@ -312,7 +461,8 @@ public class GraphicsBenchmark implements FrameListener, KeyboardInputHandler { frameCount++; long elapsed = System.currentTimeMillis() - testStartTime; - if (elapsed >= TEST_DURATION_MS && !testFinished) { + int testDuration = (mode == BenchmarkMode.EXTENDED) ? 5000 : TEST_DURATION_MS; + if (elapsed >= testDuration && !testFinished) { finishCurrentTest(); } diff --git a/src/main/java/eu/svjatoslav/sixth/e3d/examples/benchmark/TestResult.java b/src/main/java/eu/svjatoslav/sixth/e3d/examples/benchmark/TestResult.java index 9c7eef2..669ffb0 100644 --- a/src/main/java/eu/svjatoslav/sixth/e3d/examples/benchmark/TestResult.java +++ b/src/main/java/eu/svjatoslav/sixth/e3d/examples/benchmark/TestResult.java @@ -22,16 +22,21 @@ public class TestResult { /** Average frames per second achieved during the test. */ public final double averageFps; + /** Number of render threads used during this test. */ + public final int threadCount; + /** * Creates a test result record. * @param testName the name of the test * @param frameCount total frames rendered * @param durationSeconds test duration in seconds + * @param threadCount number of render threads used */ - public TestResult(String testName, long frameCount, double durationSeconds) { + public TestResult(String testName, long frameCount, double durationSeconds, int threadCount) { this.testName = testName; this.frameCount = frameCount; this.durationSeconds = durationSeconds; this.averageFps = frameCount / durationSeconds; + this.threadCount = threadCount; } -} \ No newline at end of file +} diff --git a/src/main/java/eu/svjatoslav/sixth/e3d/examples/benchmark/TexturedCubesTest.java b/src/main/java/eu/svjatoslav/sixth/e3d/examples/benchmark/TexturedCubesTest.java index 887b29d..1b2107f 100644 --- a/src/main/java/eu/svjatoslav/sixth/e3d/examples/benchmark/TexturedCubesTest.java +++ b/src/main/java/eu/svjatoslav/sixth/e3d/examples/benchmark/TexturedCubesTest.java @@ -6,8 +6,10 @@ package eu.svjatoslav.sixth.e3d.examples.benchmark; import eu.svjatoslav.sixth.e3d.geometry.Point3D; +import eu.svjatoslav.sixth.e3d.renderer.raster.Color; import eu.svjatoslav.sixth.e3d.renderer.raster.ShapeCollection; import eu.svjatoslav.sixth.e3d.renderer.raster.texture.Texture; +import eu.svjatoslav.sixth.e3d.renderer.raster.texture.TextureGenerator; import java.util.ArrayList; import java.util.List; @@ -80,11 +82,12 @@ public class TexturedCubesTest implements BenchmarkTest { private void initializeTextures() { textures = new Texture[TEXTURE_COUNT]; for (int i = 0; i < TEXTURE_COUNT; i++) { - textures[i] = createGlowTexture( + final Color color = new Color( 50 + random.nextInt(200), 50 + random.nextInt(200), 50 + random.nextInt(200) ); + textures[i] = TextureGenerator.glowingBorder(64, color, 6, 120, true, 2); } } @@ -96,29 +99,4 @@ public class TexturedCubesTest implements BenchmarkTest { } } - private Texture createGlowTexture(int r, int g, int b) { - int texSize = 64; - Texture texture = new Texture(texSize, texSize, 2); - - java.awt.Graphics2D gr = texture.graphics; - gr.setBackground(new java.awt.Color(r, g, b, 30)); - gr.clearRect(0, 0, texSize, texSize); - - int glowWidth = 6; - for (int i = 0; i < glowWidth; i++) { - int intensity = (int) (120.0 * (glowWidth - i) / glowWidth); - java.awt.Color glowColor = new java.awt.Color( - Math.min(255, r + intensity), - Math.min(255, g + intensity), - Math.min(255, b + intensity), - 50 - i * 8 - ); - gr.setColor(glowColor); - gr.drawRect(i, i, texSize - 1 - 2 * i, texSize - 1 - 2 * i); - } - - gr.dispose(); - texture.resetResampledBitmapCache(); - return texture; - } -} \ No newline at end of file + } \ No newline at end of file diff --git a/src/main/java/eu/svjatoslav/sixth/e3d/examples/essentials/LightSourceDemo.java b/src/main/java/eu/svjatoslav/sixth/e3d/examples/essentials/LightSourceDemo.java new file mode 100644 index 0000000..07b683b --- /dev/null +++ b/src/main/java/eu/svjatoslav/sixth/e3d/examples/essentials/LightSourceDemo.java @@ -0,0 +1,164 @@ +/* + * Sixth 3D engine demos. Author: Svjatoslav Agejenko. + * This project is released under Creative Commons Zero (CC0) license. + * + */ +package eu.svjatoslav.sixth.e3d.examples.essentials; + +import eu.svjatoslav.sixth.e3d.geometry.Point3D; +import eu.svjatoslav.sixth.e3d.gui.ViewFrame; +import eu.svjatoslav.sixth.e3d.gui.ViewPanel; +import eu.svjatoslav.sixth.e3d.renderer.raster.ShapeCollection; +import eu.svjatoslav.sixth.e3d.renderer.raster.lighting.LightSource; +import eu.svjatoslav.sixth.e3d.renderer.raster.shapes.composite.LightSourceMarker; +import eu.svjatoslav.sixth.e3d.renderer.raster.shapes.composite.solid.SolidPolygonSphere; + +import static eu.svjatoslav.sixth.e3d.geometry.Point3D.origin; +import static eu.svjatoslav.sixth.e3d.geometry.Point3D.point; +import static eu.svjatoslav.sixth.e3d.renderer.raster.Color.BLUE; +import static eu.svjatoslav.sixth.e3d.renderer.raster.Color.WHITE; +import static eu.svjatoslav.sixth.e3d.renderer.raster.Color.YELLOW; +import static eu.svjatoslav.sixth.e3d.renderer.raster.Color.hex; + +/** + * Demo showcasing light sources and their effect on shaded surfaces. + * + *

    This demo displays a white sphere illuminated by two colored light sources: + * a bright yellow light on the right side and a dim blue light on the left side. + * The white sphere base color allows the light colors to mix visibly on the + * surface, demonstrating how multiple light sources contribute to shading.

    + * + *

    Run this demo:

    + *
    {@code
    + * java -cp target/sixth-3d-demos.jar eu.svjatoslav.sixth.e3d.examples.essentials.LightSourceDemo
    + * }
    + * + *

    Key concepts demonstrated:

    + *
      + *
    • LightSource creation with position, color, and intensity
    • + *
    • LightSourceMarker for visualizing light positions
    • + *
    • ShadingEnabled on SolidPolygonSphere
    • + *
    • Ambient light configuration
    • + *
    • Multiple lights adding their contributions
    • + *
    + * + * @see LightSource + * @see LightSourceMarker + * @see eu.svjatoslav.sixth.e3d.renderer.raster.lighting.LightingManager + */ +public class LightSourceDemo { + + /** + * Sphere radius in world units. + */ + private static final double SPHERE_RADIUS = 100; + + /** + * Number of segments for smooth sphere rendering. + */ + private static final int SPHERE_SEGMENTS = 16; + + /** + * Distance from sphere center to light sources. + */ + private static final double LIGHT_DISTANCE = 200; + + /** + * Entry point for the light sources demo. + * + * @param args command line arguments (ignored) + */ + public static void main(final String[] args) { + final ViewFrame viewFrame = new ViewFrame("Light Sources Demo"); + final ViewPanel viewPanel = viewFrame.getViewPanel(); + final ShapeCollection shapes = viewPanel.getRootShapeCollection(); + + // Position camera to view sphere from front + viewPanel.getCamera().getTransform().set(0, 0, -500, 0, 0, 0); + + // Low ambient light for dramatic contrast between lit and unlit areas + viewPanel.getLightingManager().setAmbientLight(hex("1E1E1E")); + + // Create white sphere with shading enabled + createSphere(shapes); + + // Create yellow light on the right side (bright) + createYellowLight(viewPanel, shapes); + + // Create blue light on the left side (dim) + createBlueLight(viewPanel, shapes); + + viewPanel.repaintDuringNextViewUpdate(); + } + + /** + * Creates the white sphere centered at origin. + * + *

    The white base color allows light colors to be visible on the surface. + * Shading is enabled so the sphere responds to light sources, and backface + * culling is enabled since it's a closed mesh.

    + * + * @param shapes the shape collection to add the sphere to + */ + private static void createSphere(final ShapeCollection shapes) { + final SolidPolygonSphere sphere = new SolidPolygonSphere( + origin(), + SPHERE_RADIUS, + SPHERE_SEGMENTS, + WHITE); + + sphere.setShadingEnabled(true); + sphere.setBackfaceCulling(true); + shapes.addShape(sphere); + } + + /** + * Creates a bright yellow light source directly above the sphere. + * + *

    Position: directly above (-Y in Sixth 3D coordinate system). + * Intensity is set to 2.0 for extra brightness.

    + * + * @param viewPanel the view panel to add the light to its lighting manager + * @param shapes the shape collection to add the light marker to + */ + private static void createYellowLight(final ViewPanel viewPanel, final ShapeCollection shapes) { + // Position: directly above the sphere + final Point3D yellowPosition = point(0, -LIGHT_DISTANCE * 1.5, 0); + + final LightSource yellowLight = new LightSource( + yellowPosition, + YELLOW, + 2.0 // extra bright + ); + + viewPanel.getLightingManager().addLight(yellowLight); + + // Visual marker showing light position + shapes.addShape(new LightSourceMarker(yellowPosition, YELLOW)); + } + + /** + * Creates a dim blue light source on the left side of the sphere. + * + *

    Position: left (-X), below (+Y), close to camera (-Z). + * Intensity is set to 0.5 for dim illumination.

    + * + * @param viewPanel the view panel to add the light to its lighting manager + * @param shapes the shape collection to add the light marker to + */ + private static void createBlueLight(final ViewPanel viewPanel, final ShapeCollection shapes) { + // Position: left, below, close to camera + final Point3D bluePosition = point(-LIGHT_DISTANCE, LIGHT_DISTANCE / 4, -LIGHT_DISTANCE); + + final LightSource blueLight = new LightSource( + bluePosition, + BLUE, + 1.5 // dim + ); + + viewPanel.getLightingManager().addLight(blueLight); + + // Visual marker showing light position + shapes.addShape(new LightSourceMarker(bluePosition, BLUE)); + } +} \ No newline at end of file diff --git a/src/main/java/eu/svjatoslav/sixth/e3d/examples/launcher/ApplicationListPanel.java b/src/main/java/eu/svjatoslav/sixth/e3d/examples/launcher/ApplicationListPanel.java index 86ed1da..30d2620 100644 --- a/src/main/java/eu/svjatoslav/sixth/e3d/examples/launcher/ApplicationListPanel.java +++ b/src/main/java/eu/svjatoslav/sixth/e3d/examples/launcher/ApplicationListPanel.java @@ -49,6 +49,10 @@ class ApplicationListPanel extends JPanel { new DemoEntry("CSG demo", "Boolean operations: union, subtract, intersect on 3D shapes", new ShowCSG()), + + new DemoEntry("Light sources", + "Sphere illuminated by 2 colored lights (yellow + blue)", + new ShowLightSources()), }; private static final DemoEntry[] OTHER_DEMOS = { @@ -89,6 +93,9 @@ class ApplicationListPanel extends JPanel { new DemoEntry("Procedural Terrain", "Procedural mountains with 3 colored light sources", new ShowTerrainDemo()), + new DemoEntry("RGB cube", + "10x10x10 grid of textured square plates (X=Red, Y=Green, Z=Blue)", + new ShowRGBCube()), new DemoEntry("Graphics benchmark", "Automated performance measuring FPS across modes", new ShowGraphicsBenchmark()), @@ -342,4 +349,26 @@ class ApplicationListPanel extends JPanel { CSGDemo.main(null); } } + + private static class ShowRGBCube extends AbstractAction { + ShowRGBCube() { + putValue(NAME, "RGB cube"); + } + + @Override + public void actionPerformed(final ActionEvent e) { + RGBCubeDemo.main(null); + } + } + + private static class ShowLightSources extends AbstractAction { + ShowLightSources() { + putValue(NAME, "Light sources"); + } + + @Override + public void actionPerformed(final ActionEvent e) { + LightSourceDemo.main(null); + } + } } \ No newline at end of file -- 2.20.1