Skip to content

Open source game engine written in C/C++/Lua

Notifications You must be signed in to change notification settings

anthofoxo/hyperengine

Repository files navigation

HyperEngine

HyperEngine is an early-stage interactive application and rendering engine for Windows and Linux.

Getting Started

Visual Studio 2019 or 2022 is recommended.

1. Downloading the repo:

Start by cloning the repo. git clone --recurse-submodules https://github.com/anthofoxo/hyperengine.

If the repository was cloned non-recursively previously, use git submodule update --init to clone the necessary submodules.

2. Configuring wayland dependencies: (Linux only)

HyperEngine supports wayland via GLFW which requires generating headers. Run ./scripts/xdg.sh to generate the xdg headers.

3. Building:

We use Premake5 as a build system. Have this installed. Once installed use premake5 vs2019 or premake5 vs2022 to generate Visual Studio project files or premake5 gmake2 to generate makefiles. When using make use the config option to select the build configuration. Eg: make config=debug.

Debugging Features

RenderDoc

HyperEngine has builtin RenderDoc support. If RenderDoc can be found on your system then HyperEngine will automatically attach RenderDoc.

The default overlays are disable but will still be functional. F12 will still capture frames by default. You can attach it to HyperEngine at any time via RenderDoc with the File>Attach to Running Instance.

Tracy

Tracy is a frame profiler that is default supported. You can attach the tracy profiler at anytime.

Shaders

All shader files should begin with #inject, This will cause the HyperEngine shader engine to include the #version directive and proper #defines.

  • VERT is defined if the source is being passed to the vertex shader compiler.
  • FRAG is defined if the source is being passed to the fragment shader compiler.

You can use #include in your shaders. This will include files from the ./shaders directory. You likely want to #include "common" at the top of all your shaders.

HyperEngine can read back values from the shader using @ pragmas. Operates similarly to #pragma but with unique syntax for parsing.

0 = false ; 1 = true

Enable or disable backface culling, Enabled by default @property cull = 0|1

Give the editor hints on how to render the uniform @edithint <uniform> = hidden|color

hidden will completely remove the control from the property panel. This is generally used for uniforms the engine runtime fills in.

color will present a color gui instead of float sliders.

You can #define FAST after the #inject to trigger your shader to run lower quality. This currently affects shadow sampling and terrain texture mapping

Example:

#inject
#define FAST
#include "common"
...

See shader sources in ./working for examples.

Dependencies

HyperEngine has a few dependencies listed below. If you cloned with submodules then you already have them all.

In source tree

Submodules

About

Open source game engine written in C/C++/Lua

Resources

Stars

Watchers

Forks