Skip to content

Edo022/Lynx

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Lynx Engine

A 3D software engine with volume rendering and advanced physics.
The engine features:

  • Ray tracing volume rendering

    • No textures or UVs required
    • Better performance in physics simulations
    • Runtime destruction physics
    • High quality renders
  • Node-based runtime procedural object generation

    • Minimal disk usage
    • Short loading time
    • Multiple outputs from a single object
  • Global thread pool

  • Per-thread memory pool

  • Global VRAM pool


//TODO add cool images



Getting started

Software requirements The engine is meant to be used on Linux systems only.
We do not provide any support for developement on Windows or MacOS.
Software Version
Linux 4.4
g++ 11.1.1
glslang 10:11.0.0
spirv-tools 2020.7

Install the required packages Some softwares and libraries are required in order to build applications with the engine.
You can install them with those commands:

Fedora:
sudo dnf install gcc-c++ glslang spirv-tools
sudo dnf install vulkan-devel glfw-devel libX11-devel libXcursor-devel libXrandr-devel libXinerama-devel libXi-devel freeglut-devel libasan libubsan

Arch:
sudo pacman -S gcc glslang
sudo pacman -S vulkan-devel glfw-x11 libx11 libxcursor libxrandr libxinerama libxi freeglut gcc-libs
//TODO add software for wayland

Additionally, Windows builds require the mingw executable
//TODO add mingw commands

Download the LynxEngine SDK Clone the repository from GitHub:
git clone https://github.com/Edo022/Lynx.git




Build applications

Application project structure

The minimal application project contains one source file and a generated .engine directory.
The .engine directory is used to build the application and is generated when linking the project to an SDK.
An application project can be linked to the SDK by running its Setup script:

mkdir MyApp; cd MyApp
touch main.cpp //TODO add an option to the setup script to make it generate a main.cpp
<path_to_sdk>/Tools/Setup/Setup -vsc
code .

The -vsc option tells the setup script to generate configuration files for Visual Studio Code.
Support for other editors will be added in future versions. a
//TODO update image. use a rendered output for the hello world
//TODO link to include paths details
The source file must define a main function, like any C++ program.

Build system Applications are built using the <path_to_sdk>/Tools/Build/Build executable, which is an Alloy wrapper that parses the provided arguments, adds everything the engine needs and forwards them to the build system.
The source files and other flags can be specified in the .engine/Application.lnxbuild.sh file. See //TODO link to syntax details
//TODO 'fancy g++'

//TODO show vscode build tasks
The Build executable allows 2 build configurations:
  • Debug

    • The code is not optimized and contains any available debug, gdb and gprof information.
    • The engine enables Vulkan validation layers and Lynx runtime validation tests.
      Any error reported by those systems must be fixed before shipping, as they indicate a bug in the application.
    • Additional tools and key bindings are built into your application to help debugging it
  • Release

    • The code is optimized for speed by using -Ofast and other compiler specific options and contains no debug informations.
    • No validation layers, no runtime tests.


Selectors can be used to enable different arguments based on the target platform and active configuration.
See <path_to_sdk>/Tools/Build/Build -h for more informations.

e.g. <path_to_sdk>/Tools/Build/Build -m=ld -r: -O3 -g0 -d: -O0 -g3 -a: main.cpp
Examples are located in <path_to_sdk>/Examples/ and contain the source code, the executable and the commands used to build it.




Configure and modify an SDK

//TODO The same system can use multiple versions of the SDK.

Each version can be used by multiple applications at the same time.
Any modification to a version will affect all the applications linked to it.



Support the developers

uwu