Giter Site home page Giter Site logo

cherrytree56567 / drizzle3d Goto Github PK

View Code? Open in Web Editor NEW
6.0 1.0 2.0 781.24 MB

A Simple 3D Game Engine made in C++, GLFW, ImGui, GLM, Stb_Image and GLAD

License: Other

C++ 84.98% GLSL 10.75% C 0.01% Shell 4.02% Batchfile 0.25%
3d game-engine 3d-game-engine glad glfw graphics imgui stb stb-image cpp

drizzle3d's Introduction

Drizzle3D

MSBuild CodeQL
Drizzle3D is a 3D Game Engine created for educational and hobbyist purposes and will hopefully be used to create some games. Drizzle3D is Built upon C++20, Glfw, ImGui and Glad.

Preview

Features:

  • Event System
  • Resource Manager
  • GLFW
  • ImGui
  • Layers
  • Cameras
  • First Person Camera
  • Lighting
  • Objects
  • Skybox
  • Materials

drizzle3d's People

Contributors

cherrytree56567 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar

drizzle3d's Issues

Hide and Show Functionality for Object Structs

Is your feature request related to a problem? Please describe.
Hide and Show functionality is essential for the performance and functionality of some games and while removing the object and then adding it back in as Hide and Show works, this complexity could be removed just by adding the Hide bool.

Describe the solution you'd like
I would like to have a Hide bool in the Object Struct. Then, when the Object's are rendered, the render function can block out Object's that have true in the hide bool.

Describe alternatives you've considered
I have considered removing the object and then adding it back in to act as Hide and Show but using a Hide bool would remove this complexity.

Additional context
. -

Migrate to Linux

Is your feature request related to a problem? Please describe.
N/A

Describe the solution you'd like
The Drizzle3D and ExampleProject projects should be able to run on Linux without any Windows Subsystem or Runtimes eg: Wine.

Describe alternatives you've considered
N/A

Additional context
N\A

Custom Arguments for Custom Shaders

Is your feature request related to a problem? Please describe.
Custom Arguments for Custom Shaders would allow games made in Drizzle3D to be created easier and would lift a lot of limitations.

Describe the solution you'd like
I would like to have a vector that could hold parameters that are parsed to the custom shader in the Material class. The dev/user can then choose the limit of args that are parsed to the shader.

Describe alternatives you've considered
. -

Additional context
The modifications would need to be made in Material.h and Material.cpp

2D Renderer for Drizzle3D

Is your feature request related to a problem? Please describe.
This feature request is not related to a problem.

Describe the solution you'd like
The 2D Renderer should have a tiling based system where maps and characters are implemented to make a game. Furthermore, the 2D Renderer should also be able to have it's own customizable shaders.

Describe alternatives you've considered
I have considered making a completely different project for this, but the integration's of a 3D and a 2D Render would lessen the complexity of using 2 different repositories greatly.

Additional context
The 2D Renderer should use OpenGL, and should be located in the Renderer2D.cpp and Renderer2D.h files. The 2D Renderer should use a tiling based system where you have maps and tile maps and characters as images to make a 2D Game. It should also be able to have HUD (Head-up Display) Functionality.

Physics Support

Is your feature request related to a problem? Please describe.
Physics Support would improve the game engine and would support multiple games.

Describe the solution you'd like
I would like to use the Physics Class in each Object Struct.

Describe alternatives you've considered
N/A

Additional context
The physics class must be in namespace Drizzle3D and has to export public functions and has to be added to vs inside a filter called Physics. Remember to add the ENTIRE class into Drizzle3D.h in the Exampleproject/vendor/Drizzle3D.

Vulkan Support for Drizzle3D Renderer

Is your feature request related to a problem? Please describe.
Vulkan Support for Drizzle3D would allow Drizzle3D to be used for more modern devices and would allow for more advanced graphics.

Describe the solution you'd like
Drizzle3D should be able to use Vulkan when the code below is called.

Drizzle3D::App app = std::make_shared<Drizzle3D::App>(Drizzle3D::RenderingAPI::Vulkan);

Describe alternatives you've considered
I have considered DirectX but that is only supported for Windows and would complicate the porting of the project to Linux.

Additional context
Comments are included in the Vulkan.cpp file and will be the main thing to be modified.
The OpenGL.cpp file is an example of how it should look like, but except for OpenGL.
Another file that would need to modified is the RenderingLayer.h, specifically the RenderingLayer Class and the Object Struct.
Multiple Vulkan guides are avaliable online, such as vulkan-tutorial and the recommended vkguide.
It is recommended to use vkguide as a starting point and to use the Vulkan Bootstrap.

Thanks for all your help!

DirectX Support

DX11 Supported is being Experimented in the DirectX Branch. Do Not Merge The DirectX Branch With Master!

Logs

Day 1: Implemented Basic Things with DX11 but It doesn't work!

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.