-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
JungerBoyo
authored and
JungerBoyo
committed
Feb 29, 2024
1 parent
3f67479
commit beeb8c9
Showing
6 changed files
with
38 additions
and
3 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,2 +1,34 @@ | ||
# VE-001 | ||
[![ci](https://github.com/JungerBoyo/VE-001/actions/workflows/ci.yml/badge.svg)](https://github.com/JungerBoyo/VE-001/actions/workflows/ci.yml) | ||
|
||
VE-001 is simple minecraft-like (also called chunk based, or boxel based) rendering engine in the form of C++ static library. It was written as a topic of my bachelor degree thesis/senior project. | ||
|
||
Engine uses OpenGL 4.5 core API. It utilizes: | ||
|
||
- OpenGL DSA. | ||
- OpenGL command buffers. | ||
- OpenGL synchronization using fences. | ||
- OpenGL persistent+coherent memory mapping. | ||
- OpenGL compute shaders. | ||
- C++ thread std library (threads, futures, promises ...). | ||
|
||
Engine's memory management system is heavily based on one presented [here](https://nickmcd.me/2021/04/04/high-performance-voxel-engine/). Implementation extends mentioned idea by: | ||
|
||
- Dynamic vertex pool resizing based on voxel data characteristics (greedy meshing algorithm feedback). | ||
- Greedy meshing algorithm in OpenGL compute shaders. | ||
- Optimal management of chunk visibility region defined by an ellipsoid based on data structure where each chunk holds reference to its neighbours. | ||
- Flexible data generator integration (chunk data streamer + generators). | ||
|
||
It's not the most performant engine out there, there are lots of ways in which it can be improved such as adding LOD system, better memory managment to increase active memory usage, generated terrain/data I/O to disk, allow chunk modification, better parallelized mesh generation. | ||
|
||
Below two screenshots were presented. One how does it look from camera 1st person view and second from orthographic 3rd person view to show visibility region, back face culling and frustum culling effect. | ||
|
||
[Here](https://youtu.be/AE6F0OGAWK4) is practical presentation of the engine in sandbox/test application. | ||
|
||
|
||
Projection camera view | Ortographic 3rd person view | ||
:-------------------------:|:-------------------------: | ||
![](showcase/_1.png) | ![](showcase/_2.png) | ||
|
||
|
||
Thesis can be found [here](thesis/19-INFDZN19-43614-80723-109969%20(watermarked).pdf), but be aware - it's in polish. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,5 +1,5 @@ | ||
conan install . --output-folder=build-rel -pr:b conanprofile.linux.txt -pr:h conanprofile.linux.txt -o --build=missing && \ | ||
cmake -S . -B build-rel-glfw3 -DCMAKE_TOOLCHAIN_FILE=conan_toolchain.cmake -DCMAKE_BUILD_TYPE=Release && \ | ||
conan install . --output-folder=build-rel -g CMakeToolchain -pr:b conanprofile.linux.txt -pr:h conanprofile.linux.txt -o --build=missing && \ | ||
cmake -S . -B build-rel-glfw3 -G Ninja -DCMAKE_TOOLCHAIN_FILE=conan_toolchain.cmake -DCMAKE_BUILD_TYPE=Release && \ | ||
cmake --build build-rel-glfw3 | ||
|
||
|
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file not shown.