Skip to content

galliume/poulpeEngine

Repository files navigation

Poulpe Engine

Game Engine with a vulkan renderer

CI Service Build Status
GitHub Actions PoulpeEngine

This project is a never ending educationnal exercice about game engine and vulkan.

Mr Poulpe blog

State of the project

In video

To compile && execute

You will need a recent version of Clang (20.x) and CMake (3.31 or 4.x), c++23 is needed.

For Windows you will need mingw64 https://www.mingw-w64.org/ and add the bin folder into your PATH. (you do not need any MSVC stuff.)

Install the latest Vulkan SDK https://vulkan.lunarg.com/ and be sure to have the env variable VULKAN_SDK properly set to your Vulkan SDK installation folder.

The editor (Windows only for the moment) is using TCL/TK 9.0, the easiest installation for Windows is to install via the MagicSplat installer

Or download the source and compile it yourself.

On Linux you can install it easily via your favorite package manager.

Compile shaders (Windows && Linux) :

bin/shaders_compil.sh

List existing presets

cmake --list-presets

"windows-debug"              - Debug
"windows-release"            - Release
"linux-debug"                - Debug
"linux-release"              - Release

Configure with a preset

cmake --preset windows-release

Compile with a preset

cmake --build --preset windows-dereleasebug

Launch from the root directory

build/windows-release/PoulpeEngine.exe

or to run the editor (Windows only)

build/windows-release/PoulpeEngine.exe -E

Or open the project with a cmake able IDE (VS 2022, VS Code...)

All meshes can be found here:

glTF samples can be fetch here: glTF-Sample-Assets

or

from Morgan McGuire's Computer Graphics Archive

Just download, unzip and copy paste in assets/mesh.

All levels are described in config/levels, for those meshes they should be fine as it is.

To change the level update config/poulpeEngine.json key defaultLevel, copy/paste the file name of the level to be loaded.

help to configure the project

Keyboard shortcuts (azerty)

free / lock mouse : left ctrl

forward : Z

backward : Q

left : Q

right : D

up : E

down : A

glTF tests

  • AlphaBlendModeTest
  • AnisotropyRotationTest
  • AnisotropyStrengthTest
  • ClearCoatTest
  • CompareAlphaCoverage
  • CompareAmbientOcclusion
  • CompareAnisotropy
  • CompareBaseColor
  • CompareClearcoat
  • CompareDispersion
  • CompareEmissiveStrength
  • CompareIor
  • CompareIridescence
  • CompareMetallic
  • CompareNormal
  • CompareRoughness
  • CompareSheen
  • CompareSpecular
  • CompareTransmission
  • CompareVolume
  • DispersionTest
  • EmissiveStrengthTest
  • EnvironmentTest
  • InterpolationTest
  • IORTestGrid
  • MorphPrimitivesTest
  • MorphStressTest
  • MultiUVTest
  • NegativeScaleTest
  • NodePerformanceTest
  • NormalTangentMirrorTest
  • NormalTangentTest
  • OrientationTest
  • PlaysetLightTest
  • PrimitiveModeNormalsTest
  • SheenTestGrid
  • SpecularTest
  • TextureCoordinateTest
  • TextureEncodingTest
  • TextureLinearInterpolationTest
  • TextureSettingsTest
  • TextureTransformMultiTest
  • TextureTransformTest
  • TransmissionRoughnessTest
  • TransmissionTest
  • TransmissionThinwallTestGrid
  • UnlitTest

Resources

Vulkan Programming Guide

Game Engine Architecture

Vulkan API

Vulkan API Samples

LunarG Vulkan

Foundations of Game Engine Development (vol 1&2)

Vulkan Tutorial

Efficient Vulkan Renderer

Vulkan in 30 minutes

Do's and Don't

About

Exercice about graphics programming and game engine. Made with Vulkan and C++

Topics

Resources

License

Stars

Watchers

Forks

Contributors 2

  •  
  •