Skip to content
This repository has been archived by the owner on Nov 11, 2024. It is now read-only.
/ GraphicEngine Public archive

Serves as starting point for my rendering research/projects in modern OpenGL.

License

Notifications You must be signed in to change notification settings

Kataglyphis/GraphicEngine

Repository files navigation

NOTE: I moved development of this repo to my graphics engine that also supports Vulkan (see here).


OpenGLEngine
Cataglyphis Engine

OpenGLEngine OpenGLEngine

A graphics engine built on top of OpenGL .

Windows Linux codecov Donate Donate Twitter YouTube

Key FeaturesHow To UseDownloadRelatedLicenseLiterature

Table of Contents
  1. About The Project
  2. Getting Started
  3. Tests
  4. Roadmap
  5. Contributing
  6. License
  7. Contact
  8. Acknowledgements
  9. Literature

About The Project


VulkanEngine VulkanEngine
VulkanEngine VulkanEngine

This project provides me a solid modern OpenGL renderer starting point for implementing modern established rendering techniques and getting quickly started in own research topics.
Frequently tested under

  • [latest windows and ubuntu version]
  • [GCC/CLANG/MSVC]

Key Features

Feature Implement Status
Directional Lights ✔️
Point Lights ✔️
Spot Lights ✔️
Directional Shadow Mapping ✔️
Omni-Directional Shadow Mapping ✔️
Cascaded Shadow Mapping ✔️
Cloud system ✔️
3D-worley noise generation ✔️
.obj Model loading ✔️
PBR support (UE4,disney,phong, etc.) ✔️
Support for #include directives in shaders. ✔️
Sky box ✔️
Supporting compute shader ✔️
On the fly 3D worley/perlin noise creation ✔️

Built With

With the provided CMake file you are able to built the project on Linux (Ubuntu is tested) and Windows. I do not provide support for MacOS. Be aware of the dependencies:

Useful tools (you might also considering :) )

Getting Started

You might only clone the repo and get to go immediately :)

Prerequisites

Dependencies to libraries are stated above.
C 20 or higher required.
C17 or higher required.
CMake 3.20 or higher required.

NOTE: This project relies on the newest OpenGL version and their features.

Installation

  1. Clone the repo

    $ git clone --recurse-submodules [email protected]:Kataglyphis/GraphicEngine.git

    Important for init the submodules.

    NOTE: With powershell in Windows git has currently a problem with cloning recursively. You might consider using the git bash.

  2. Then build your solution with [CMAKE] (https://cmake.org/)
    Here the recommended way over command line after cloning the repo:
    (for clarity: Assumption you are in the dir you have cloned the repo into)

$ mkdir build ; cd build
# enlisting all available presets
$ cmake --list-presets=all ../
$ cmake --preset <configurePreset-name> ../
$ cmake --build --preset <buildPreset-name> .
# necessary for making Resources available to test framework
$ cmake -E copy_directory ../Resources/ Test/Resources/

Alternatively you can use the build scripts I use for my standard configuration:

  • [buildEngine.sh]
  • [buildEngine.bat]
$ {WORKING_DIR}/GraphicsEngine/buildEngine[.sh/.bat]

Tests

Code coverage results

VulkanEngine VulkanEngine

Roadmap

Watch the refman generated by doxygen.

Contributing

Contributions are what make the open source community such an amazing place to be learn, inspire, and create. Any contributions you make are greatly appreciated.

  1. Fork the Project
  2. Create your Feature Branch (git checkout -b feature/AmazingFeature)
  3. Commit your Changes (git commit -m 'Add some AmazingFeature')
  4. Push to the Branch (git push origin feature/AmazingFeature)
  5. Open a Pull Request

License

Distributed under the GPL-3.0 License. See LICENSE for more information.

Contact

Jonas Heinle - @Cataglyphis_ - [email protected]

Project Link: https://github.com/Kataglyphis/GraphicsEngine

Acknowledgements

I want to thank my partner Kansei who worked with me on a project. This project arised from this university project.

Thanks for free 3D Models:

Literature

Some very helpful literature, tutorials, etc.

CMake/C

OpenGL

Clouds

Noise

Physically Based Shading