Serialized Form

  • Package eu.svjatoslav.sixth.e3d.gui

    • Class eu.svjatoslav.sixth.e3d.gui.DeveloperToolsPanel

      class DeveloperToolsPanel extends JFrame implements Serializable
      • Serialized Fields

        • cameraLabel
          JLabel cameraLabel
          The label showing camera position.
        • culledCompositesLabel
          JLabel culledCompositesLabel
          The label showing culled composites count.
        • culledPercentLabel
          JLabel culledPercentLabel
          The label showing culled percentage.
        • debugLogBuffer
          DebugLogBuffer debugLogBuffer
          The log buffer being displayed.
        • developerTools
          DeveloperTools developerTools
          The developer tools being controlled.
        • lockedFPS
          int lockedFPS
          Target FPS to restore when re-locking after an unlock.
        • logArea
          JTextArea logArea
          The text area showing log messages.
        • measuredFpsLabel
          JLabel measuredFpsLabel
          The label showing the measured FPS.
        • recordTimelineButton
          JToggleButton recordTimelineButton
          Toggle button enabling thread activity recording.
        • renderThreadsLabel
          JLabel renderThreadsLabel
          The label showing current render thread count.
        • targetFpsLabel
          JLabel targetFpsLabel
          The label showing the current target FPS.
        • threadTimeline
          ThreadTimelineComponent threadTimeline
          The per-thread activity timeline.
        • totalCompositesLabel
          JLabel totalCompositesLabel
          The label showing total composites count.
        • unlockFpsButton
          JToggleButton unlockFpsButton
          Toggle button switching between target FPS and unlimited FPS.
        • updateTimer
          Timer updateTimer
          Timer for periodic updates.
        • updating
          boolean updating
          Flag to prevent concurrent updates.
        • viewPanel
          ViewPanel viewPanel
          The view panel whose camera is being displayed.
    • Class eu.svjatoslav.sixth.e3d.gui.ThreadTimelineComponent

      class ThreadTimelineComponent extends JComponent implements Serializable
      • Serialized Fields

        • scrollBackNanos
          long scrollBackNanos
          How far back from the latest recorded interval the window ends, nanoseconds. Always 0 (live edge) while recording; user-adjustable on a frozen capture.
        • scrollBar
          JScrollBar scrollBar
          Scrollbar for navigating a frozen capture, in milliseconds scrolled back from the latest recorded interval. Owned here so the component can keep the model in sync with the capture length; the parent panel adds it below the timeline.
        • updatingScrollBar
          boolean updatingScrollBar
          True while the scrollbar model is being updated programmatically.
        • windowNanos
          long windowNanos
          Time window shown, in nanoseconds. Adjustable with ctrl+wheel.
    • Class eu.svjatoslav.sixth.e3d.gui.ViewFrame

      class ViewFrame extends JFrame implements Serializable
      serialVersionUID:
      -7037635097739548470L
      • Serialized Fields

        • fullscreen
          boolean fullscreen
          Whether the frame is currently in fullscreen exclusive mode.
        • previousBounds
          Rectangle previousBounds
          Saved window bounds before entering fullscreen, used to restore on exit.
        • previousExtendedState
          int previousExtendedState
          Saved extended state before entering fullscreen.
        • viewPanel
          ViewPanel viewPanel
          The embedded 3D view panel.
    • Class eu.svjatoslav.sixth.e3d.gui.ViewPanel

      class ViewPanel extends Canvas implements Serializable
      serialVersionUID:
      1683277888885045387L
      • Serialized Fields

        • backgroundColor
          Color backgroundColor
          The background color of the view.
        • bufferStrategy
          BufferStrategy bufferStrategy
          The buffer strategy for page-flipping rendering (also read by the present thread).
        • bufferStrategyInitialized
          boolean bufferStrategyInitialized
          Whether the buffer strategy has been initialized.
        • camera
          Camera camera
          The camera representing the viewer's position and orientation.
        • debugLogBuffer
          DebugLogBuffer debugLogBuffer
          Debug log buffer for capturing diagnostic output.
        • developerTools
          DeveloperTools developerTools
          Developer tools for this view panel.
        • developerToolsPanel
          DeveloperToolsPanel developerToolsPanel
          The developer tools panel popup, or null if not currently shown.
        • fpsWindowFrames
          int fpsWindowFrames
          Frames blitted in the current FPS measurement window (render thread only).
        • fpsWindowStartNanos
          long fpsWindowStartNanos
          Start of the current FPS measurement window, nanoseconds (render thread only).
        • frameContexts
          RenderingContext[] frameContexts
          Double-buffered frame contexts, indexed by frame parity. While frame N is still being painted from one buffer, frame N+1 already transforms into the other, so paint threads never idle waiting for the transform phase and transform threads never wait for the last tile.
        • frameListeners
          Set<FrameListener> frameListeners
          The set of frame listeners notified before each frame.
        • frameParity
          int frameParity
          Parity (0/1) of the frame currently being prepared.
        • globalIllumination
          GlobalIllumination globalIllumination
          Progressive GI system, created by ViewPanel.enableGlobalIllumination().
        • inputManager
          InputManager inputManager
          The input manager handling mouse and keyboard events.
        • keyboardFocusStack
          KeyboardFocusStack keyboardFocusStack
          The stack managing keyboard focus for GUI components.
        • lastUpdateMillis
          long lastUpdateMillis
          Stores milliseconds when the last frame was updated. This is needed to calculate the time delta between frames. Time delta is used to calculate smooth animation.
        • lightingManager
          LightingManager lightingManager
          Global lighting manager for the scene. Contains all light sources and ambient light settings. Shaded polygons access this via the RenderingContext during paint(). Add lights here to illuminate the world.
        • mailboxFrame
          AtomicReference<eu.svjatoslav.sixth.e3d.gui.ViewPanel.PresentJob> mailboxFrame
          Mailbox holding the newest completed frame awaiting presentation. Only the latest frame is kept: when the display path (X server at 4K, tens of MB per blit) is slower than production, stale frames are dropped instead of piling up latency — swapchain "mailbox mode". The render thread never blocks on the display: it deposits here and the dedicated present thread does the blitting.
        • measuredFPS
          double measuredFPS
          Most recently measured display rate (frames blitted per second).
        • nextFrameTime
          long nextFrameTime
          Timestamp for the next scheduled frame.
        • numRenderThreads
          int numRenderThreads
          Number of render threads. Can be changed at runtime via ViewPanel.setNumRenderThreads(int).
        • passCounter
          long passCounter
          Counts render passes (one per eye in stereo). A pass's projection buffer slot is passCounter % 3: with three slots, transform of pass P only conflicts with paint of pass P-3, so it can run while the two previous passes' paints are still in flight.
        • pendingPaints
          ArrayDeque<eu.svjatoslav.sixth.e3d.gui.ViewPanel.PendingPaint> pendingPaints
          Paint passes that were submitted to the shared executor but not yet awaited, oldest first. Depth stays at most 2: the pass being transformed now overlaps the previously submitted one, and freed workers flow from the tail of the older pass's tiles straight into the newer pass's tiles — consecutive passes' paints overlap on purpose (they write different parity framebuffers and read different parity vertex slots, so no ordering between them is required).
        • pipelineEnabled
          boolean pipelineEnabled
          When false, each paint pass is awaited immediately after submission, restoring the old strictly-sequential phase order. Kill switch for benchmarking and regression hunting; also toggled at runtime from developer tools if needed.
        • presentSignal
          Semaphore presentSignal
          Signals the present thread that a frame was deposited.
        • presentThread
          Thread presentThread
          Daemon thread performing all BufferStrategy blits.
        • presentThreadRunning
          boolean presentThreadRunning
          Run flag for the present thread.
        • renderExecutor
          ExecutorService renderExecutor
          The executor service for parallel rendering.
        • renderingContext
          RenderingContext renderingContext
          The current rendering context for the active frame.
        • renderThread
          Thread renderThread
          Render thread that runs the continuous frame generation loop.
        • renderThreadRunning
          boolean renderThreadRunning
          Flag to control whether the render thread should keep running.
        • rootShapeCollection
          ShapeCollection rootShapeCollection
          The root shape collection containing all 3D shapes in the scene.
        • stereoIPD
          double stereoIPD
          Inter-pupillary distance in world units, configurable at runtime.
        • stereoModeEnabled
          boolean stereoModeEnabled
          Whether side-by-side stereoscopic rendering is enabled.
        • targetFPS
          int targetFPS
          Currently target frames per second rate for this view. Target FPS can be changed at runtime. 3D engine tries to be smart and only repaints screen when there are visible changes. A value of 0 or less means unlimited FPS (benchmark mode).
        • transformExecutor
          ExecutorService transformExecutor
          Executor for the parallel transform phase, sized to all available cores. Created lazily on the render thread; daemon threads so it never blocks JVM exit.
        • viewRepaintNeeded
          boolean viewRepaintNeeded
          Set to true if it is known than next frame needs to be painted. Flag is cleared immediately after frame got updated.