Coder Social home page Coder Social logo

ajweeks / flexengine Goto Github PK

View Code? Open in Web Editor NEW
966.0 34.0 49.0 1.23 GB

Cross-platform game engine with Vulkan backend

Home Page: http://ajweeks.com/flex-engine

License: MIT License

C++ 85.71% GLSL 0.85% Lua 0.05% C 12.47% Python 0.10% CMake 0.82%
vulkan cpp glsl rendering-engine game-engine personal-game-engine flex-engine

flexengine's Introduction

linux MIT licensed

Flex Engine is a personal game engine I began work on in early 2017. I use it as a playground for learning about real-time rendering and simulation techniques. Flex Engine is not a commercial game engine nor is it intended for public use.

Building Flex

See build.md

Notable Features

  • Vulkan rendering backend (VulkanRenderer.cpp)
  • In-game scripting language compiler/editor & virtual machine (VirtualMachine.cpp)
  • Conditional checksum-based shader recompilation (ShaderCompiler.cpp)
  • File modification monitoring for textures, meshes, prefabs, shaders, config files, etc. (ResourceManager.cpp)
  • Scene editor with serialization (BaseScene.cpp)
  • Editor tools (transform gizmo, property editor, keybinding editor, etc.) (Editor.cpp)
  • Basic profiling capture/inspection tools
  • Support for Windows & linux
  • Rendering:
    • Marching cubes terrain generator & renderer
    • Gerstner wave ocean renderer
    • Rectangular area lights (direct-only diffuse & specular)
    • Physically-based shading model
    • Image-based lighting
    • Screen-space ambient occlusion
    • Stable cascaded shadow mapping
    • Temporal anti-aliasing
    • Signed distance field (SDF) font generation & rendering
    • GPU-based particle simulation

Procedural terrain generated on the GPU

Gerstner wave ocean simulation

Cascaded Shadow Mapping

Two million particles simulated and rendered entirely on the GPU

Profiler overlay showing a breakdown the CPU-time of a single frame

Some editor windows

Screen-Space Ambient Occlusion (SSAO)

GBuffer (top-left to bottom-right): position, albedo, normal, final image, depth, metallic, AO, roughness

View into editor

See more screenshots here

Dependencies

Flex Engine uses the following open-source libraries:

  • Bullet - Collision detection & rigid body simulation
  • FreeType - Font loading
  • glfw - Window creation, input handling
  • glm - Math operations
  • ImGui - User interface
  • OpenAL - Audio loading and playback
  • stb - Image loading
  • cgltf - Mesh loading
  • volk - Vulkan meta-loader

License

Flex engine is licensed under the MIT license. See LICENSE.md for details.

Acknowledgements

A huge thank you must be given to the following individuals and organizations for their incredibly useful resources:

Blog

Stay (somewhat) up to date about this project on my blog at ajweeks.com/blog

flexengine's People

Contributors

ajweeks avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

flexengine's Issues

Only Engine Code

Thank you for sharing this. It would be great if it was possible to only get your code (excluding all the binaries and dependencies). That would be maybe a couple of MB's. Now I have to wait for a GB's worth of data to download. Maybe there's a Git option for this that I'm unaware of.

Website down

Just wanted to let know know that your website is down.

linux portability

Hi @ajweeks I'm quite new in game/graphics programming and I started reading your blog with the interest put on how a rendering engine works. I'm using linux based system, the question if is there is possible to export a CMakeLists.txt config file from your project in order to give it a try with cmake. Thanks in advance

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.