# bigmanmanu/3d-rendering-engine architecture

> Architecture diagram of the GitHub repository bigmanmanu/3d-rendering-engine, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-28). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/bigmanmanu/3d-rendering-engine
- Repository: https://github.com/bigmanmanu/3d-rendering-engine

## Overview

This repository is a small LWJGL 3D game-engine demo. Its main workflow creates a display and GPU loader, prepares textured models and heightmap terrain, updates a player and camera each frame, submits entities and terrain for rendering, and updates the display. Terrain supplies height queries used for placement and player grounding. The tree also contains entity/terrain rendering, shader, and GUI subsystems; GUI rendering is present but its call in the main loop is commented out. The README is empty, and most renderer internals were not sampled, so their dispatch relationships are omitted.

Main entry points: [`GameEngine/src/engineTester/MainGameLoop.java`](https://github.com/bigmanmanu/3d-rendering-engine/blob/main/GameEngine/src/engineTester/MainGameLoop.java) (Game loop), [`GameEngine/src/entities/Player.java`](https://github.com/bigmanmanu/3d-rendering-engine/blob/main/GameEngine/src/entities/Player.java) (Player control), [`GameEngine/src/terrains/Terrain.java`](https://github.com/bigmanmanu/3d-rendering-engine/blob/main/GameEngine/src/terrains/Terrain.java) (Heightmap terrain), [`GameEngine/src/renderEngine/Loader.java`](https://github.com/bigmanmanu/3d-rendering-engine/blob/main/GameEngine/src/renderEngine/Loader.java) (GPU loader)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_runtime["Runtime and world"]
  node_main["Game loop<br/>[MainGameLoop.java]"]
  node_display["Display manager"]
  node_player["Player control<br/>[Player.java]"]
  node_camera["Camera<br/>[Camera.java]"]
  node_terrain["Heightmap terrain<br/>[Terrain.java]"]
  node_entity["World entity<br/>[Entity.java]"]
  node_light["Scene light<br/>[Light.java]"]
end

subgraph group_assets["Assets and models"]
  node_loader["GPU loader<br/>[Loader.java]"]
  node_objloader["OBJ importer<br/>[OBJLoader.java]"]
  node_rawmodel["Raw model<br/>[RawModel.java]"]
  node_texturemodel["Textured model<br/>[TextureModel.java]"]
  node_modeltexture["Model texture<br/>[ModelTexture.java]"]
  node_terraintextures["Terrain textures"]
end

subgraph group_render["Rendering"]
  node_master["Render coordinator"]
  node_entityrenderer["Entity renderer"]
  node_terrainrenderer["Terrain renderer"]
  node_shaderprogram["Shader program<br/>[ShaderProgram.java]"]
  node_staticshader["Static shader<br/>[StaticShader.java]"]
  node_terrainshader["Terrain shader<br/>[TerrainShader.java]"]
end

subgraph group_interface["GUI"]
  node_guitexture["GUI texture<br/>[GuiTexture.java]"]
  node_guirenderer["GUI renderer<br/>[GuiRenderer.java]"]
end

node_user(("Player"))

node_main -->|"creates and updates"| node_display
node_main -->|"loads assets"| node_loader
node_main -->|"imports models"| node_objloader
node_main -->|"creates terrain"| node_terrain
node_main -->|"updates movement"| node_player
node_main -->|"moves camera"| node_camera
node_main -->|"submits scene"| node_master
node_main -->|"creates GUI"| node_guitexture
node_main -->|"constructs renderer"| node_guirenderer
node_player -->|"queries height"| node_terrain
node_player -->|"reads frame time"| node_display
node_terrain -->|"uploads mesh"| node_loader
node_objloader -->|"uploads mesh"| node_loader
node_user -->|"keyboard input"| node_player

click node_main "https://github.com/bigmanmanu/3d-rendering-engine/blob/main/GameEngine/src/engineTester/MainGameLoop.java"
click node_display "https://github.com/bigmanmanu/3d-rendering-engine/blob/main/GameEngine/src/renderEngine/DisplayManager.java"
click node_player "https://github.com/bigmanmanu/3d-rendering-engine/blob/main/GameEngine/src/entities/Player.java"
click node_camera "https://github.com/bigmanmanu/3d-rendering-engine/blob/main/GameEngine/src/entities/Camera.java"
click node_terrain "https://github.com/bigmanmanu/3d-rendering-engine/blob/main/GameEngine/src/terrains/Terrain.java"
click node_entity "https://github.com/bigmanmanu/3d-rendering-engine/blob/main/GameEngine/src/entities/Entity.java"
click node_light "https://github.com/bigmanmanu/3d-rendering-engine/blob/main/GameEngine/src/entities/Light.java"
click node_loader "https://github.com/bigmanmanu/3d-rendering-engine/blob/main/GameEngine/src/renderEngine/Loader.java"
click node_objloader "https://github.com/bigmanmanu/3d-rendering-engine/blob/main/GameEngine/src/renderEngine/OBJLoader.java"
click node_rawmodel "https://github.com/bigmanmanu/3d-rendering-engine/blob/main/GameEngine/src/models/RawModel.java"
click node_texturemodel "https://github.com/bigmanmanu/3d-rendering-engine/blob/main/GameEngine/src/models/TextureModel.java"
click node_modeltexture "https://github.com/bigmanmanu/3d-rendering-engine/blob/main/GameEngine/src/textures/ModelTexture.java"
click node_terraintextures "https://github.com/bigmanmanu/3d-rendering-engine/blob/main/GameEngine/src/textures/TerrainTexturePack.java"
click node_master "https://github.com/bigmanmanu/3d-rendering-engine/blob/main/GameEngine/src/renderEngine/MasterRenderer.java"
click node_entityrenderer "https://github.com/bigmanmanu/3d-rendering-engine/blob/main/GameEngine/src/renderEngine/EntityRenderer.java"
click node_terrainrenderer "https://github.com/bigmanmanu/3d-rendering-engine/blob/main/GameEngine/src/renderEngine/TerrainRenderer.java"
click node_shaderprogram "https://github.com/bigmanmanu/3d-rendering-engine/blob/main/GameEngine/src/shaders/ShaderProgram.java"
click node_staticshader "https://github.com/bigmanmanu/3d-rendering-engine/blob/main/GameEngine/src/shaders/StaticShader.java"
click node_terrainshader "https://github.com/bigmanmanu/3d-rendering-engine/blob/main/GameEngine/src/shaders/TerrainShader.java"
click node_guitexture "https://github.com/bigmanmanu/3d-rendering-engine/blob/main/GameEngine/src/guis/GuiTexture.java"
click node_guirenderer "https://github.com/bigmanmanu/3d-rendering-engine/blob/main/GameEngine/src/guis/GuiRenderer.java"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_main,node_display,node_player,node_camera,node_terrain,node_entity,node_light toneBlue
class node_loader,node_objloader,node_rawmodel,node_texturemodel,node_modeltexture,node_terraintextures toneAmber
class node_master,node_entityrenderer,node_terrainrenderer,node_shaderprogram,node_staticshader,node_terrainshader toneMint
class node_guitexture,node_guirenderer toneRose
class node_user toneIndigo
```

## Components

### Runtime and world

- [Game loop](https://github.com/bigmanmanu/3d-rendering-engine/blob/main/GameEngine/src/engineTester/MainGameLoop.java): `GameEngine/src/engineTester/MainGameLoop.java`
- [Display manager](https://github.com/bigmanmanu/3d-rendering-engine/blob/main/GameEngine/src/renderEngine/DisplayManager.java): `GameEngine/src/renderEngine/DisplayManager.java`
- [Player control](https://github.com/bigmanmanu/3d-rendering-engine/blob/main/GameEngine/src/entities/Player.java): `GameEngine/src/entities/Player.java`
- [Camera](https://github.com/bigmanmanu/3d-rendering-engine/blob/main/GameEngine/src/entities/Camera.java): `GameEngine/src/entities/Camera.java`
- [Heightmap terrain](https://github.com/bigmanmanu/3d-rendering-engine/blob/main/GameEngine/src/terrains/Terrain.java): `GameEngine/src/terrains/Terrain.java`
- [World entity](https://github.com/bigmanmanu/3d-rendering-engine/blob/main/GameEngine/src/entities/Entity.java): `GameEngine/src/entities/Entity.java`
- [Scene light](https://github.com/bigmanmanu/3d-rendering-engine/blob/main/GameEngine/src/entities/Light.java): `GameEngine/src/entities/Light.java`

### Assets and models

- [GPU loader](https://github.com/bigmanmanu/3d-rendering-engine/blob/main/GameEngine/src/renderEngine/Loader.java): `GameEngine/src/renderEngine/Loader.java`
- [OBJ importer](https://github.com/bigmanmanu/3d-rendering-engine/blob/main/GameEngine/src/renderEngine/OBJLoader.java): `GameEngine/src/renderEngine/OBJLoader.java`
- [Raw model](https://github.com/bigmanmanu/3d-rendering-engine/blob/main/GameEngine/src/models/RawModel.java): `GameEngine/src/models/RawModel.java`
- [Textured model](https://github.com/bigmanmanu/3d-rendering-engine/blob/main/GameEngine/src/models/TextureModel.java): `GameEngine/src/models/TextureModel.java`
- [Model texture](https://github.com/bigmanmanu/3d-rendering-engine/blob/main/GameEngine/src/textures/ModelTexture.java): `GameEngine/src/textures/ModelTexture.java`
- [Terrain textures](https://github.com/bigmanmanu/3d-rendering-engine/blob/main/GameEngine/src/textures/TerrainTexturePack.java): `GameEngine/src/textures/TerrainTexturePack.java`

### Rendering

- [Render coordinator](https://github.com/bigmanmanu/3d-rendering-engine/blob/main/GameEngine/src/renderEngine/MasterRenderer.java): `GameEngine/src/renderEngine/MasterRenderer.java`
- [Entity renderer](https://github.com/bigmanmanu/3d-rendering-engine/blob/main/GameEngine/src/renderEngine/EntityRenderer.java): `GameEngine/src/renderEngine/EntityRenderer.java`
- [Terrain renderer](https://github.com/bigmanmanu/3d-rendering-engine/blob/main/GameEngine/src/renderEngine/TerrainRenderer.java): `GameEngine/src/renderEngine/TerrainRenderer.java`
- [Shader program](https://github.com/bigmanmanu/3d-rendering-engine/blob/main/GameEngine/src/shaders/ShaderProgram.java): `GameEngine/src/shaders/ShaderProgram.java`
- [Static shader](https://github.com/bigmanmanu/3d-rendering-engine/blob/main/GameEngine/src/shaders/StaticShader.java): `GameEngine/src/shaders/StaticShader.java`
- [Terrain shader](https://github.com/bigmanmanu/3d-rendering-engine/blob/main/GameEngine/src/shaders/TerrainShader.java): `GameEngine/src/shaders/TerrainShader.java`

### GUI

- [GUI texture](https://github.com/bigmanmanu/3d-rendering-engine/blob/main/GameEngine/src/guis/GuiTexture.java): `GameEngine/src/guis/GuiTexture.java`
- [GUI renderer](https://github.com/bigmanmanu/3d-rendering-engine/blob/main/GameEngine/src/guis/GuiRenderer.java): `GameEngine/src/guis/GuiRenderer.java`

### Other components

- **Player**

## Connections

- Game loop → Display manager: creates and updates
- Game loop → GPU loader: loads assets
- Game loop → OBJ importer: imports models
- Game loop → Heightmap terrain: creates terrain
- Game loop → Player control: updates movement
- Game loop → Camera: moves camera
- Game loop → Render coordinator: submits scene
- Game loop → GUI texture: creates GUI
- Game loop → GUI renderer: constructs renderer
- Player control → Heightmap terrain: queries height
- Player control → Display manager: reads frame time
- Heightmap terrain → GPU loader: uploads mesh
- OBJ importer → GPU loader: uploads mesh
- Player → Player control: keyboard input
