Giter Club home page Giter Club logo

lu15w1r7h / lwirth-lib Goto Github PK

View Code? Open in Web Editor NEW
0.0 1.0 0.0 37.74 MB

*ABANDONED/UNFINISHED* The lwirth-lib is a general purpose library written in C++17, including a game-/simulation-engine and using the Vulkan-API.

License: MIT License

C++ 99.09% GLSL 0.29% Batchfile 0.06% CMake 0.56%
cpp game-engine 3d rendering vulkan vulkan-api vulkan-game-engine library api tools math physics simulation cmake mutli-platform gpu cpp17 linear-algebra machine-learning neural-network

lwirth-lib's Introduction

  • ABANDONED/UNFINISHED

lwirth-lib

The lwirth-lib is a general purpose library written in C++17 by Luis Wirth. It includes a game-/simulation-engine and uses the Vulkan-API.

Purpose

The lwirth-lib is general purpose. It is made up of the following separate components: Math, Graphics, Physics, Memory management and Artifical Intelligence. All of this combines to form a game-engine.

Components

Graphics (Vulkan)

GLFW is in charge of creating the window and fetching all keyboard and mouse inputs. The responsible class for this is the lw::Frame.

As previously stated the library utilizes Vulkan for rendering. For most Vulkan modules there are wrappers, e.g VK::Pipeline or VK::Device to simplify their use. In the core, higher-level classes use these wrappers to form actual renderers, e.g. the lw::SimpleBrush2D.

The lw::RenderWindow takes care of handling all of these abilities. It is very easy to create an instance of this class and get started on rendering.

Math

Linear Algebra

As of this time, it is not recommended to use the linear algebra build into the lwirth-lib but instead to utilize Eigen, which is innately available.

The lwirth-lib supports basic linear algebra like vectors and matrices. These can be of any dimensions due to the classes being templated. For the lw::Vec2, lw::Vec3 and lw::Vec4 template specializations do exist and provide extra functionality.

(Vector-)Geometry

Some basic geometry is also built into the library, which mainly is vector-geometry. You can perform many actions on lw::Lines and lw::Planes and compute useful data.

How to get started/Setting up the project

The project uses CMake therefor you can build the project on any platform. As of now CMake works fine for Windows but not yet for Mac. Mac support is currently work in progress.

All the necessary dependencies for the lwirth-lib are in the libraries directory. They are automatically included and linked by the CMake-Project. Therefor there is no need to download any third-party dependencies.

Third-party libraries include the following:

Code example

#include "lwirth.hpp"

int main()
{
  lw::println("Code example coming soon");
}

Plans for the future

  • utilize clang-format
  • utilize clang-tidy
  • use best practices (e.g. Jason Turner)
  • MacOS support
  • Linux support
  • finish CMake setup
  • work on 2D-rendering (textures, shaders, more components, ...)
  • start 3D-rendering
  • implement more math
  • implement physics (based on physics studies)
  • expand machine learning

How you can help

Contributors

Up to now the only contributor to this project has been Luis Wirth.

lwirth-lib's People

Contributors

luiswirth avatar

Watchers

 avatar

lwirth-lib's Issues

readBinFile() doesn't work properly

The function readBinFile() is incapable of reading a binary file and instead returns a buffer of correct size but without any content. This prohibits vulkan from correctly loading the shaders (spv files).

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.