HyperEngine is an early-stage interactive application and rendering engine for Windows and Linux.
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
.
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 is a frame profiler that is default supported. You can attach the tracy profiler at anytime.
All shader files should begin with #inject
,
This will cause the HyperEngine shader engine to include the #version
directive and proper #define
s.
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.
HyperEngine has a few dependencies listed below. If you cloned with submodules then you already have them all.