Skip to content
/ Tetrium Public

Tetrachromacy display engine, Vulkan backend

Notifications You must be signed in to change notification settings

D7ry/Tetrium

Repository files navigation

___  ___ ___  __
 |  |__   |  |__) | |  |  |\/|
 |  |___  |  |  \ | \__/  |  |

Vulkan-based tetrachromacy display engine.

Engine Architecture

Developing Applications

Refer to App.h for details and documentations on developing self-contained applications that writes to both RGB and OCV color spaces.

Backend

Engine backend consists of core logic on vulkan rendering, presentation, and even-odd frame synchronization.

Even-Odd Frame Synchronization

To determine even/odd-ness of the frame to present, the engine relies on the total number of vertical blanking periods % 2. This information is obtained using vkGetSwapchainCounterEXT, when the engine runs under kEvenOddHardwareSync.

kEvenOddSoftwareSync mode provides an inaccurate simulation for frame synchronization, useful for developing on devices without discrete GPU.

Requirements

All Systems

  • CMake
  • Vulkan SDK
  • make or ninja
  • openAL
  • libsndfile
  • openSSL

Hardware Even-odd frame sync

  • NVIDIA GPU supporting VK_EXT_display_surface_counter

Build

Apple

set VULKAN_LIB_PATH and MOLTENVK_LIB_PATH in CMakeLists.txt to your own path after installing Vulkan SDK

FreeType

brew install freetype

validate that /opt/homebrew/include/freetype2 and /opt/homebrew/lib/libfreetype.dylib contains freetype library and include files.

Linux

install X11 and Xrandr for direct display access, for hardware even-odd frame sync

install freetype

sudo apt-get install libfreetype6-dev

Windows

tbd...

Run

Config loading is not supported yet. To configure run option, modify Tetrium::InitOptions options field to set display mode.

References

Theory of Human Tetrachromatic Color Experience and Printing

TetraPolyscope

About

Tetrachromacy display engine, Vulkan backend

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published