Coder Social home page Coder Social logo

vetux / xng Goto Github PK

View Code? Open in Web Editor NEW
3.0 2.0 0.0 22.04 MB

Experimental Game Engine Library

License: GNU Lesser General Public License v3.0

CMake 0.94% C++ 74.58% C 20.67% GLSL 3.81%
game-engine opengl deferred-rendering 3d-graphics vulkan

xng's Introduction

CODE_LINES LICENSE

xEngine

xEngine is a cross-platform c++ game engine library.

xng-editor - Editor application to simplify and accelerate the game creation workflow

Features

  • 3D Frame Graph Renderer
    • Physically Based Lighting
    • Shadow Mapping
  • 2D Renderer with object-oriented SDL like interface
  • Resource system
    • Uri Resource addressing
    • Multithreaded Resource streaming
    • Automatic Resource Lifetime handling
  • ECS using data oriented architecture
  • Text Rendering
  • Sprite Animation
  • Skeletal Animation
  • Canvas layout engine
  • PAK file format with compression, chunking and encryption support

Planned Features

  • Vulkan GPU driver
  • Image Based Environment Lighting for the PBR Model (Need a math wizard person)

Drivers

Drivers are implementations of interfaces (For example through 3rd party libraries) that can be optionally compiled into the engine library. If a driver interface implementation type is instantiated in an application the corresponding driver must be defined by the linked engine library by enabling the corresponding cmake option/s in drivers.cmake when compiling the engine library.

  • Display Manager
    • GLFW
  • 3D AudioData
    • OpenAL-Soft
  • GPU (Render, Compute, Raytracing)
    • OpenGL
  • Shader Compiler
    • GLSLang
  • Shader Decompiler
    • SPIRV-Cross
  • Font Rendering
    • FreeType
  • Physics Simulation
    • Box2D
    • Bullet3
  • Resource Importers
    • AssImp
    • libSndFile

Building

Supported Platforms

  • Linux
    • Tested Compiler: GCC 12.2.0 64bit
  • Windows
    • Tested Compilers:
      • MSVC 2022 64bit
        • Build warnings are emitted due to the fact that xng uses STL types in dllexport types.
        • Users must ensure that their application is built with the same compiler version as the linked library because windows uses multiple STL dll files and allows loading of multiple STL version dlls into the same process. If the user links to a different STL version than the one used for building the engine dll there can be problems when passing types through the dll interface.
      • MinGW-w64 11
  • Android
    • Tested Compiler: Android NDK r25c

Build Instructions

Check BUILDING.md for detailed building instructions.

Notes

Assimp Importer and Blender FBX Export

When exporting rigged meshes from blender to be imported with the assimp importer driver make sure to:

  • Set the "Apply Scalings" to fbx unit scale.
  • Rotate the mesh and the rig -90 degrees in the X axis and apply the rotation.
  • Set the forward and up axis in the fbx exporter settings to Y forward and Z up to match blenders coordinate system.
  • Uncheck "Key All Bones" and "Force Start/End Keyframes"
    • "Key All Bones" appears to do nothing at all
    • "Force Start/End Keyframes" creates invalid keyframes inside an animation for bones which are not keyframed in the animation.
  • Run "Limit Total" in weight paint mode to ensure that there is no more than 4 bones per vertex.

HDR Colors

This engine will not follow the HDR FAD that for some reason certain graphics programmers accept without using logical reasoning. Colors are represented using a maximum of 8 bit per channel by default in the rendering code because display and camera light sensor technology currently and probably for the forseeable future can barely reach 8 bit depth in the real world already so having higher bit depth colours just adds bandwidth overhead for no reason.

PBR Shading

Because I do not have or know anyone with a math degree I am dependent on tutorials for the lighting equations. This means the frame graph PBR lighting might not be fully accurate and have missing features.

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.