GithubHelp home page GithubHelp logo

petiaccja / inline-engine Goto Github PK

View Code? Open in Web Editor NEW
251.0 28.0 25.0 129.22 MB

Game engine written in C++ with ease of use and next-gen parallel computing in focus.

License: Other

C++ 69.32% C 28.76% Objective-C 0.01% HLSL 1.72% Batchfile 0.01% Lua 0.01% CMake 0.17%
game-engine graphics directx-12 game-development

inline-engine's Introduction

Inline Engine

Codacy Badge Build status

Introduction

Inline-Engine is a modern game engine that emphasizes the latest technologies and innovation in order to bring the most to the table regardless of weather you are a gamer, a developer or a game designer. It got its name from the overuse of inline methods to speed up the software, however, it only aims to live up to the performance expectations not the poor coding style.

  • C++17 brings elegant coding solutions
  • Built for parallelism from the ground up
  • Build for DirectX 12 and Vulkan
  • Modular, hackable design
  • Highly configurable even without hacking

Platforms

  1. Windows (supported)
  2. Linux (planned)
  3. XBoxOne (planned)
  4. PS4 (planned)

How To Build

Visual Studio solution files:

  1. Download Visual Studio 2017 or 2019 preview with the latest updates
  2. Download the latest CMake (3.10 or newer)
  3. Generate Visual Studio 2017/2019 Win64 solution files via CMake for Inline-Engine/CMakeLists.txt
  4. Open solution files and build

CMake via IDE:

  1. Install latest MSVC 19 toolchain
  2. Download a CMake compatible IDE (e.g. Visual Studio or CLion)
  3. Open Inline-Engine/CMakeLists.txt
  4. Configure CMake within IDE to use the MSVC toolset
  5. Build

CMake via Ninja or makefiles:

  1. Install latest MSVC 19 toolchain
  2. Download the latest CMake (3.10 or newer)
  3. Generate Ninja or Makefile for Inline-Engine/CMakeLists.txt
  4. Build

Note: you can not compile it with the GNU toolchain because the Direct3D libraries won't compile, and Vulkan is not supported yet.

Note: you don't need any additional dependencies, all libraries are packed with the project.

Note: 32-bit build are not supported

Rendering core ideas

High-level interface

The engine exposes geometries, material, and textures to work with. These are used as properties to describe an entity. Entities are grouped into multiple scenes that act like a virtual world. One might put terrain entities, lights, geometries or other types of objects into a scene. The purpose of having multiple scenes is to achieve the separation of 3D world, GUI and debug draw objects. With this, one might define completely different ways of rendering each scene, and can quickly toggle whether to display a scene at all. The results of each scene can be freely combined with desired final output.

Visual render pipeline scripting

Inspired by CryEngine's flow graph and Unreal's BluePrint, users can leverage the power of task graphs to visually assemble the render pipeline. The task graph's tasks have access to the scenes and the objects inside them, so they can render it. The data flow from one task to the other allows the transport of opacity or depth maps which make combining scenes in an arbitrary fashion a breeze.

Adding your own rendering algorithms

The above-mentioned rendering task graph provides an interface to implement custom task nodes. The nodes inputs and outputs are defined, and the programmer can code the data transform performed on the inputs. The node can access the underlying Direct3D 12 API through a simplified interface. The framework that executes the task graph takes the responsibility of distributing work across multiple CPU cores and the scheduling of generated GPU command lists.

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.