Skip to content

A barebones OpenGL rendering engine utilizing GLFW for windowing/input and ImGUI for editing

License

Notifications You must be signed in to change notification settings

sardormirk/RNDEngine

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

10 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Contributors Forks Issues


RNDEngine - A 3D Graphics Rendering Engine

A C++ 3D graphics engine using OpenGL, GLFW, ImGUI, and Assimp. Features real-time scene editing, face culling for performance, deferred shading, and model loading/editing.
Explore the docs »

View Demo · Report Bug · Request Feature

Table of Contents
  1. About The Project
  2. Getting Started
  3. Usage
  4. Roadmap
  5. Contributing
  6. Acknowledgments

About The Project

Showcase

Key Features
  1. Real-Time Scene Editing: Dynamic modification of scenes for efficient development.
  2. Face Culling: Improved rendering performance by skipping non-visible faces.
  3. Deferred Shading: Enhanced rendering efficiency with realistic lighting effects.
  4. Model Loading/Editing: Seamless 3D model integration and in-app editing with Assimp.

(back to top)

Built With

  • C++
  • Make
  • OpenGL

(back to top)

Getting Started

The following instructions are a general installation guide for MacOS/Linux. To install on windows, download visual studio and create a new project using this repo's code as existing files.

Prerequisites

  • Cmake MacOS/Linux
    brew install cmake
    sudo apt-get install cmake
  • Visual Studio (latest version) - Windows
  • Community Version Download

Installation

  1. Clone the repo
    git clone https://github.com/voidblob/RNDEngine.git
  2. Go into the Build directory and run the following commands
    cmake ..
    make
    ./main
On Windows
  1. Create a new project with existing files (selecting the root folder of this repo)
  2. In solution settings, add all include directories, library directories, and source directories to the file path

(back to top)

Usage

To use the engine, load in your own models by putting them in /resources/model_folder_name/.

  1. Edit the model file path in Source.cpp
const string modelPath = "RNDEngine/resources/model_folder_name/model_name.obj";

To change the skybox, load your cubemap texture by putting each face in resources/skybox/

  1. Edit the cubemap file path vector in Source.cpp
 vector<std::string> faces
    {
        "RNDEngine/resources/skybox/your_skybox/right.jpg",
        "RNDEngine/resources/skybox/your_skybox/left.jpg",
        "RNDEngine/resources/skybox/your_skybox/top.jpg",
        "RNDEngine/resources/skybox/your_skybox/bottom.jpg",
        "RNDEngine/resources/skybox/your_skybox/front.jpg",
        "RNDEngine/resources/skybox/your_skybox/back.jpg"

    };

If you want to change the code yourself (add more objects/create your own scene),

  1. You can create and load your own shaders using the Shader class:
 Shader MyShader(MyShaderPath);
//Set uniforms
 MyShader.SetVec3(some uniform);
 MyShader.setMat4(some uniform);
//Etc
  1. You can create your own model and load it using the Model class:
 Model MyModel(MyModelPath);
//Draw model using built-in model shader or your own
 while(!window.shouldClose()){
 ...
 MyModel.draw(MyShader);
 ...

 }

(back to top)

Roadmap

  • Better portability/build system
  • More customizability by adding more configurable options in the ImGUI menu
  • Level-generation

See the open issues for a full list of proposed features (and known issues).

(back to top)

Contributing

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

If you have a suggestion that would make this better, please fork the repo and create a pull request. You can also simply open an issue with the tag "enhancement". Don't forget to give the project a star! Thanks again!

  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

(back to top)

Acknowledgments

(back to top)

About

A barebones OpenGL rendering engine utilizing GLFW for windowing/input and ImGUI for editing

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published