Jackalope / jen (public) (License: GPLv3 or later version) (since 2018-10-24) (hash sha1)
----> ABOUT:

3D rendering and computing framework based on Vulkan API.

Libraries:
- simdcpp submodule (see my simdcpp repo)
- jmath submodule (see my jmath repo)
- mesh (constexpr generation of cubes, spheres, icosahedrons subdivisions)
- atlas (1D lines and 2D rectangles cutting)
- jlib submodule (see my jlib repo)
- jrf submodule (see my jrf repo)
- vkw (Vulkan API C++ wrapper)
Modules:
- compute (run compute shaders on gpu)
- graphics (draw models with clustered forward rendering and onscreen text)
- resource manager (load meshes, models, textures, scene data from
files and create related objects in graphics module)

----> INSTALLING:

To download all the parts of this framework it's enough to launch
git clone with recursive flag:

$ git clone —recursive ssh://rocketgit@ssh.rocketgit.com/user/Jackalope/jen

After this look at git tags:

$ git tag

It is recommended to use a tagged version instead of the latest commit,
because the first commit after the tagged one mostly includes incompatible
parts of future changes for the next version.

$ git checkout v0.1.0

----> DEPENDENCIES:

To use JEN as CMake subdirectory and successfully build programs with it
you need to make sure you have all of its dependencies:
- compiler: Clang or GCC, support for C++17. Clang 10+ or GCC 9+ is recommended,
compiling on Windows OS is tricky and requires something like MinGW with MSYS,
there are also some complications to go through to make dependencies work;
- GLFW3 library, supported version is 3.2.1;
- FreeType library, if graphics module will be used;
- Vulkan API headers, and optional validation layers to debug sneaky problems,
you also need Vulkan support in your graphics driver to run compiled programs;
- LibZip can be necessary, if JRF is used to read zip files;
- CMake, for obvious reasons;
- glslangValidator to compile shader for the graphics module.

CMake must be able to find GLFW3, Vulkan and FreeType (for graphics)
with find_package().

----> HOW TO USE IT:

To use JEN, you need to add it as a subdirectory:

add_subdirecroty(${PATH_TO_JEN})

There are several configuration options:
- JEN_MODULE_COMPUTE - turn compute module on for compiling and including;
- JEN_MODULE_GRAPHICS - turn graphics module on ...;
- JEN_MULTITHREADED_DRAW_FRAME - draw_frame function will use thread pool queue
instead of linear executing;
- JEN_MODULE_RESOURCE_MANAGER - resource manager module ON, if graphics is ON;
- JEN_VLK_VALIDATION - enable Vulkan Validation Layers to debug some errors
related to JEN. This will often produce false-positive,
as well as true-positive errors.

Look in CMakeLists.txt at JenExamples repo for details on how to use and
configure JEN automatically:

$ git clone ssh://rocketgit@ssh.rocketgit.com/user/Jackalope/JenExamples

Also I recommend to compile and run examples to make sure it works correctly.

----> SUPPORTED HARDWARE:

JEN has not been tested well, because it requires running it on large amount of
different hardware to do so. It must work with mesa driver and modern
Intel i965 GPUs as well as AMD GPUs.


----> DOCUMENTATION:

You can generate Doxygen documentation, to do so
turn on any of JEN_DOXYGEN_* options and run documentation target in cmake:

$ cmake -G %1 -DJEN_DOXYGEN_HTML=ON -DJEN_DOXYGEN_LATEX=ON
$ cmake —build —target documentation

Resource manager is not documented because it still requires large enhancements.
List of commits:
Subject Hash Author Date (UTC)
added project information to cmake 2db949aaf90729d4226511773815eb19a314dc35 Jackalope 2020-05-12 18:42:50
Improved cmake scripts c38f2da172d553d519f0cee5d9b6b3f904234806 Jackalope 2020-05-12 07:02:26
license added c72e7e36f528ca69e96e970acf1e732734621f63 Jackalope 2020-05-12 05:25:34
Doxygen documentation improvements 5e8201cd9a74707457ae97a10bed6681d091f10e Jackalope 2020-05-11 23:49:58
added Button state helper 15729a25a75a73f464b33e7f17d6cc7f609a3eb1 Jackalope 2020-05-11 09:05:05
bug fixes 504ff4b14e1b5a1b0cd21b10d7d867596b5b5ada Jackalope 2020-05-11 08:29:03
fixed issues with mesh lib 92c9562548dffacefaff5daadd1e39504810a633 Jackalope 2020-05-11 08:16:40
jrf update, added 2 formats to gpu_transfer b88f688303205c2e44078220f858761b84de045c Jackalope 2020-05-11 07:51:30
Doxygen documentation 34da4d6ff049e1315d58a34d8b42306dca16d89d Jackalope 2020-05-11 03:49:22
jlib update c4e0f05cd2479b8da334cd681337771dc579899d Jackalope 2020-05-09 23:32:14
math libriary update (renamed to jmath) 44798c932745bd021f5c11d018d09a055a7a1903 Jackalope 2020-05-09 19:18:59
moved window to jen namespace, moved settings update to settings member function 1541c40679cfc28f2d0f173499196f458a11f952 Jackalope 2020-05-09 17:07:23
more configuration options b4e5770306ccb9c49fa4c348a670c901a7c98047 Jackalope 2020-05-09 16:14:40
libs update 7caad27c596db2e8d84e44cdc5c0ddeb1730c20d Jackalope 2020-05-08 23:37:50
compute wait flags bug fix f13273d79b899ee717b69f6d4a745c33f7589bbe Jackalope 2020-05-08 23:37:39
improvements for previous commit changes 994a9c60c1598862b80e0480ca65a8f527e07a07 Jackalope 2020-05-08 22:40:36
huge jen interface refactoring, added configuration options fabb80119c23c204118af1f4f697e74e8cbd61b8 Jackalope 2020-05-08 21:59:31
added settings, changed some namespaces and type names f0766a6b35304740cb39f93e601447ad7be7e143 Jackalope 2020-05-07 23:48:11
compute storage image support eaffc4ea4768fb67f063102793ca5d781bafb0c8 Jackalope 2020-05-04 17:48:33
get size of vkFormat pixel function 41e309467955bc2e1361a1f9689367f961040bf7 Jackalope 2020-05-04 17:48:08
Commit 2db949aaf90729d4226511773815eb19a314dc35 - added project information to cmake
Author: Jackalope
Author date (UTC): 2020-05-12 18:42
Committer name: Jackalope
Committer date (UTC): 2020-05-12 18:42
Parent(s): c38f2da172d553d519f0cee5d9b6b3f904234806
Signer:
Signing key:
Signing status: N
Tree: b1ba5461f4feaf7a76a75d86e2d10a94a26d4ae7
File Lines added Lines deleted
CMakeLists.txt 17 9
Doxyfile.in 3 3
File CMakeLists.txt changed (mode: 100644) (index 43d1c8a..f004471)
1 1 cmake_minimum_required(VERSION 3.5) cmake_minimum_required(VERSION 3.5)
2 project(jen)
2 project(JEN
3 DESCRIPTION "Rendering engine and compute framework"
4 VERSION 0.1.0
5 LANGUAGES CXX
6 )
7 set(JEN_VERSION_MAJOR ${PROJECT_VERSION_MAJOR} PARENT_SCOPE)
8 set(JEN_VERSION_MINOR ${PROJECT_VERSION_MINOR} PARENT_SCOPE)
9 set(JEN_VERSION_PATCH ${PROJECT_VERSION_PATCH} PARENT_SCOPE)
10 set(JEN_VERSION ${PROJECT_VERSION} PARENT_SCOPE)
11 set(JEN_NAME ${PROJECT_NAME} PARENT_SCOPE)
12 set(JEN_DESCRIPTION ${PROJECT_DESCRIPTION} PARENT_SCOPE)
3 13
4 14 find_package(glfw3 REQUIRED) find_package(glfw3 REQUIRED)
5 15 find_package(Vulkan REQUIRED) find_package(Vulkan REQUIRED)
 
... ... option_define01(PRIVATE JEN_VLK_VALIDATION)
101 111 option(JEN_MULTITHREADED_DRAW_FRAME "Use thread pool for draw_frame") option(JEN_MULTITHREADED_DRAW_FRAME "Use thread pool for draw_frame")
102 112 option_define01(PRIVATE JEN_MULTITHREADED_DRAW_FRAME) option_define01(PRIVATE JEN_MULTITHREADED_DRAW_FRAME)
103 113
104 set(JEN_VERSION_MAJOR 0)
105 set(JEN_VERSION_MINOR 1)
106 set(JEN_VERSION_PATCH 0)
107 set(JEN_NAME "JEN")
108 114 target_compile_definitions(JEN PUBLIC target_compile_definitions(JEN PUBLIC
109 JEN_NAME="${JEN_NAME}"
110 JEN_VERSION_MAJOR=${JEN_VERSION_MAJOR}
111 JEN_VERSION_MINOR=${JEN_VERSION_MINOR}
112 JEN_VERSION_PATCH=${JEN_VERSION_PATCH}
115 JEN_NAME="${PROJECT_NAME}"
116 JEN_VERSION_MAJOR=${PROJECT_VERSION_MAJOR}
117 JEN_VERSION_MINOR=${PROJECT_VERSION_MINOR}
118 JEN_VERSION_PATCH=${PROJECT_VERSION_PATCH}
119 JEN_VERSION=${PROJECT_VERSION}
120 JEN_DESCRIPTION=${PROJECT_DESCRIPTION}
113 121 ) )
114 122
115 123 configure_file(resources/fonts/IBMPlexMono.ttf configure_file(resources/fonts/IBMPlexMono.ttf
File Doxyfile.in changed (mode: 100644) (index 04b41b9..6879e17)
1 PROJECT_NAME = ${JEN_NAME}
2 PROJECT_NUMBER = ${JEN_VERSION_MAJOR}.${JEN_VERSION_MINOR}.${JEN_VERSION_PATCH}
3 PROJECT_BRIEF = "Rendering engine and compute framework"
1 PROJECT_NAME = "${PROJECT_NAME}"
2 PROJECT_NUMBER = ${PROJECT_VERSION}
3 PROJECT_BRIEF = "${PROJECT_DESCRIPTION}"
4 4 #PROJECT_LOGO = #PROJECT_LOGO =
5 5 OUTPUT_DIRECTORY = ${DOXYGEN_OUTPUT} OUTPUT_DIRECTORY = ${DOXYGEN_OUTPUT}
6 6 INLINE_INHERITED_MEMB = YES INLINE_INHERITED_MEMB = YES
Hints:
Before first commit, do not forget to setup your git environment:
git config --global user.name "your_name_here"
git config --global user.email "your@email_here"

Clone this repository using HTTP(S):
git clone https://rocketgit.com/user/Jackalope/jen

Clone this repository using ssh (do not forget to upload a key first):
git clone ssh://rocketgit@ssh.rocketgit.com/user/Jackalope/jen

Clone this repository using git:
git clone git://git.rocketgit.com/user/Jackalope/jen

You are allowed to anonymously push to this repository.
This means that your pushed commits will automatically be transformed into a merge request:
... clone the repository ...
... make some changes and some commits ...
git push origin main