Coder Social home page Coder Social logo

vulkan's Introduction

Lucre

A Vulkan Render Engine




Features:

  • A Vulkan renderer with support for 2D and 3D scenes
  • Support for 3D file formats Obj Wavefront, glTF, and FBX
  • Physically-based rendering (PBR), materials based on Blender's roughness-metallic workflow, normal mapping
  • Point lights, directional lights with shadows, and deferred shading, instancing of models on the GPU
  • Post-processing (Bloom), skeletal animations
  • Scene management with scene descriptions, background loading, and scene saving
  • Sound support and desktop volume settings (Linux only)
  • Hotplug gamepad support based on SDL2 and a controller database
  • Cross-platform resource system (Windows/Linux)
  • Particle system
  • Event system for mouse, keyboard, controller, window, and game events
  • Settings manager and a message logger
  • Entity component system based on EnTT
  • Physics simulator based on Box2D
  • In-game GUI with two themes and debug GUI based on ImGUI
  • Sprite sheets, a sprite sheet generator, sprite sheet animations
  • Render-API abstraction and engine/application separation
  • Profiling JSON output file for chrome://tracing

Usage:

  • Press "f" to toggle fullscreen and "m" to toggle the debug imgui window.
  • Use the left and right sticks on the controller to move some objects around and scale them.
  • Use the AWSD keys to move the camera. Q and E are for up and down
  • Use the arrow keys to look around.
  • Use the mouse wheel to zoom.
  • The A button plays a test sound.
  • Press ESC or the guide button on the controller to exit.
  • Press "g" to fire the volcano and "r" to reset the scene.

To blacklist a GPU, enter its name or a substring in engine.cfg.

Contributions: Please use https://en.wikipedia.org/wiki/Indentation_style#Allman_style and four spaces to indent.

How to clone the repository


The repository contains larger 3D files and git may abort its download. If you experience this problem, follow these instructions.

In particular, add these lines to your global git configuration file, which is .gitconfig in your user home directory (~/.gitconfig), in order to fix this problem:
[core] 
    packedGitLimit = 512m 
    packedGitWindowSize = 512m 
[pack] 
    deltaCacheSize = 2047m 
    packSizeLimit = 2047m 
    windowMemory = 2047m

Then run:

git clone --recurse-submodules https://github.com/beaumanvienna/vulkan

Build Instructions

Ubuntu Build Instructions


Open a terminal

(Info: ppa:beauman/marley provides premake5)
sudo add-apt-repository ppa:beauman/marley
sudo add-apt-repository universe
sudo apt-get update
sudo apt install premake5 git build-essential xorg-dev libxrandr-dev libvulkan-dev libpulse-dev
sudo apt install libibus-1.0-dev libglib2.0-dev libsamplerate0-dev libasound2-dev libudev-dev

Get the Vulkan SDK from here:
https://vulkan.lunarg.com/doc/view/latest/linux/getting_started_ubuntu.html

Install the source code:

git clone --recurse-submodules https://github.com/beaumanvienna/vulkan
cd vulkan

Create project files for gcc:

premake5 gmake2


Define the number of CPU cores to be used for compiling
e.g. "-j4"
To use all available CPU cores, say:
export MAKEFLAGS=-j$(nproc)

You may want to add the export MAKEFLAGS=-j$(nproc) command to ~/.bashrc to always use multiple CPU cores for compiling a makefile.


Compile and run debug target:

make verbose=1 && ./bin/Debug/lucre

Compile and run release target:

make config=release verbose=1 && ./bin/Release/lucre

MacOSX Build Instructions

Install Dependencies

Download and install MacOS Vulkan sdk
Download and install Homebrew

Open a terminal

To install Xcode, type git

Install dependencies (note that premake5 is installed as premake, but called in the terminal as premake5):

brew install premake glib gtk+ sfml sdl2 sdl2_mixer libvorbis libogg glfw

Install the source code:
git clone --recurse-submodules https://github.com/beaumanvienna/vulkan
cd vulkan

Create project files for clang:
premake5 gmake2


Define the number of CPU cores to be used for compiling
e.g. "-j8" to use eight CPU cores
To use all available CPU cores, say:
export MAKEFLAGS=-j$(sysctl -n hw.ncpu)

To find out, how many cores your Mac has, say:

sysctl -n hw.ncpu

You may want to add the export MAKEFLAGS=-j8 command to ~/.zshrc to always use multiple CPU cores for compiling a makefile.


Compile and run debug target:

make verbose=1 && ./bin/Debug/lucre

Compile and run release target:

make config=release verbose=1 && ./bin/Release/lucre

Windows Build Instructions


Dependencies: gitbash, premake5, Visual Studio

Download the Vulkan SDK from lunarg.com, install it, then copy "C:\VulkanSDK\1.3.204.1" (path and version may differ) to vendor/VulkanSDK. The version number is omitted in the path.


Open gitbash


Install the source code:

git clone --recurse-submodules https://github.com/beaumanvienna/vulkan
cd vulkan

If you have Visual Studio 2022:

premake5.exe vs2022

If you have Visual Studio 2022, use instead:
premake5.exe vs2022

Open the solution for Vulkan, switch to Release, and hit F5

Clean Instruction


To clean all temporary files (including the spv-files, engine.cfg, imgui.ini, and the scene files in the top directory), use:
premake5 clean

Update Instruction


To pull in the latest changes for the repository, use:
git pull && git submodule update --init --recursive

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.