Master thesis: distributed rendering in Vulkan
  • C++ 92.7%
  • CMake 4.4%
  • GLSL 1.9%
  • Shell 0.8%
  • Makefile 0.1%
Find a file
2019-01-23 09:36:01 +01:00
cmake add DEBUG_RELEASE build mode 2018-08-17 16:03:22 +02:00
data add data 2018-08-18 11:31:27 +02:00
doc add tesi_structure 2018-07-24 11:00:37 +02:00
models add cat 2018-07-01 10:23:43 +02:00
shaders models on demand start working 2018-07-20 12:28:03 +02:00
src rollback concurrent udp updating 2018-08-22 17:21:14 +02:00
textures couple of fixes on windows 2018-06-27 19:14:45 +02:00
.clang-format done multiple descriptorsets, but not working 2018-06-06 16:20:03 +02:00
.gitignore stuff 2018-07-13 13:13:50 +02:00
.travis.yml add travis.yml 2018-06-11 15:40:28 +02:00
.ycm_extra_conf.py first commit 2018-02-23 09:58:55 +01:00
.ycm_extra_conf.pyc textures 2018-02-23 12:38:25 +01:00
client make client and server symlinks 2018-03-31 14:35:13 +02:00
CMakeLists.txt start sending udp after all tcp transaction 2018-07-20 15:52:49 +02:00
CMakeSettings.json some fixes + some work on client 2018-04-23 12:36:17 +02:00
compile.sh models on demand start working 2018-07-20 12:28:03 +02:00
covbuild.sh fix some coverity-discovered bugs 2018-06-12 09:20:58 +02:00
flamegraph.sh add compile-time logging guards 2018-07-18 12:32:01 +02:00
laptop_win_cmake.sh further optimize buffers memory access 2018-05-17 12:38:41 +02:00
main.cpp fix some errors server-size 2018-03-12 11:42:45 +01:00
main_orig.cpp fix wrong culling of screen quad 2018-04-24 12:14:25 +02:00
orig.mk fix wrong culling of screen quad 2018-04-24 12:14:25 +02:00
README.md Create README.md 2019-01-23 09:36:01 +01:00
server make client and server symlinks 2018-03-31 14:35:13 +02:00
server.win.mk make server compile on windows 2018-03-31 10:27:57 +02:00
valid_err.txt checkpoint before messing things up 2018-04-26 13:41:28 +02:00

Abstract

My Master Thesis project, written in C++14 using the Vulkan API. Runs on Linux and Windows.

This project explores the concept of a “distributed rendering engine” for videogames with the aim to split the graphics pipeline between a server and a client. My goal is to create a hybrid model between the "classic heavyweight client" model (where the client makes all the processing needed for rendering) and the more recent "streaming" model (where the server does all the processing and sends the stream of rendered frames to the client).

In my project, models, textures and shaders live on the server, which does most of the application-stage work. Then, rather than rendering models and sending frames to the client, it sends preprocessed geometry data to it, which in turn runs all the following pipeline stages.

Building

Requirements:

  • CMake >= 2.8
  • Vulkan
  • GLFW
  • GLM
  • Assimp

Linux: the usual cmake . && make should suffice. Executables will be under the build/ directory. Maybe the models and shaders directories must be symlinked/copied under the correct path in order to run.

Windows: you can build with Visual Studio by first running cmake -G "Visual Studio [version]" (same caveats for the directories as Linux).