Code Monkey home page Code Monkey logo

inline-engine's Introduction

Inline Engine

Build status

Introduction

Inline Engine is a modern game engine built with latest C++ that provides/will provide solutions to existing common industrial problems:

  • Smoother Editor User Experience
    (Achieved by our experience from multiple big engine editors + GUI lib written from scratch)

  • Higher Performance Editor & Engine
    (Whole Editor will be async thus making you more productive + Heavy experience with optimizations )

  • Better Stability & More Focus On The Community
    (Will give smaller percent time for feature implementation compared to bug fixes)

  • Better PBR Graphics than the typical industrial PBR equations
    (W.I.P state of the art researches (already have great results))

The Engine leverages the power of DirectX 12 and similar APIs. It got its name from the overuse of inline methods to speed up the software, however, it's not a victim of such behavior. The Engine is component based so you can tear it to pieces and for example integrate the Graphics, Network, Physics, etc modules individually into an another complete game engine or real-time simulation environments.

Platforms

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

How To Build

Recommended:

Prerequisites: Visual Studio 2017 with latest updates, CMake 3.10 or later

  1. Generate Visual Studio solution files via CMake for Inline-Engine/CMakeLists.txt
  2. Open and build solution files

Alternatively:

Prerequisites: latest MSVC 19 toolchain, CMake compatible IDE (e.g. Visual Studio, CLion)

  1. Open the folder Inline-Engine with the CMakeLists.txt
  2. Build from the IDE

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.

What to do after build: You can run QC_Simulator and play around flying a quadcopter. That project tests the rendering pipeline, and effect can be seen in action.

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.

inline-engine's People

Contributors

arturkovacs avatar guilhermestrice avatar hsdxpro avatar karkid avatar ludonope avatar petiaccja avatar yours3lf avatar

Watchers

 avatar

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.