Find a file
2026-08-31 19:14:56 +05:00
android redesign, more gore 2026-08-27 07:08:26 +05:00
imgui@7e0de0e411 по идее imgui как сабмодуль 2026-08-31 19:14:56 +05:00
openxr THE SHITFUCK 2026-08-26 03:40:00 +05:00
scripts/waflib фикс ебанутой тряски головы, фиксы фбт (не тестировал) ну и что то по компаньону 2026-08-29 22:23:54 +05:00
xpack Tune xpack to improve bc1 compression performance a little (possibly breaks format) 2024-11-11 11:17:24 +03:00
.gitignore driver 2026-08-31 13:03:38 +05:00
.gitmodules по идее imgui как сабмодуль 2026-08-31 19:14:56 +05:00
AGENTS.md по идее imgui как сабмодуль 2026-08-31 19:14:56 +05:00
analyze_rate_control.comp Workaround for older glslc versions 2025-11-21 02:42:20 +03:00
analyze_rate_control_finalize.comp Upload pyrowave shaders 2025-11-20 21:37:35 +00:00
audio_opensles.h почти доделал пиздец 2026-08-26 15:51:40 +05:00
audio_pipe.cpp почистил компаньон от говна и ещё сделал наконец то автодетект шлема в локалке 2026-08-31 12:04:47 +05:00
bitstream.h Optimize slice header building 2024-10-12 02:20:47 +03:00
block_packing.comp Workaround for older glslc versions 2025-11-21 02:42:20 +03:00
comp.comp Demo from https://github.com/Erkaman/vulkan_minimal_compute/, remove STL and fix validation layer 2024-09-25 20:08:35 +03:00
compress-bc1.comp Add betsy bc1 compression (ugly, not tuned) 2024-11-07 09:47:00 +03:00
compress_bc1.h Fix wrong pipeline stage in gpu-to-host barriers, use compute-to-transfer barrier for staging buffer case 2026-05-06 23:20:31 +00:00
compress_xpack.h THE SHITFUCK 2026-08-26 03:40:00 +05:00
config_test.cpp Add server config (not used yet) 2025-09-16 20:44:24 +00:00
constants.h Add missing pyrowave files 2025-11-20 21:41:15 +00:00
conversion.glsl около идеальный в целом 2026-08-26 11:23:43 +05:00
decoder_ffmpeg.h Add single-plane color config for pyrowave idwtfragment 2026-04-15 12:58:32 +03:00
decoder_mediacodec.h фикс ебанутой тряски головы, фиксы фбт (не тестировал) ну и что то по компаньону 2026-08-29 22:23:54 +05:00
decompose.comp PW444 support, implement manual multi-planar ycbcr conversion 2026-04-10 02:52:14 +00:00
decomposer.h около идеальный в целом 2026-08-26 11:23:43 +05:00
dwt.comp Upload pyrowave shaders 2025-11-20 21:37:35 +00:00
dwt_common.h Upload pyrowave shaders 2025-11-20 21:37:35 +00:00
dwt_quant_scale.h Upload pyrowave shaders 2025-11-20 21:37:35 +00:00
dwt_swizzle.h Upload pyrowave shaders 2025-11-20 21:37:35 +00:00
filter.sh Update filter-branch script 2025-09-11 11:48:41 +00:00
fovcenter.vert около идеальный в целом 2026-08-26 11:23:43 +05:00
fovrec.frag фикс ебанутой тряски головы, фиксы фбт (не тестировал) ну и что то по компаньону 2026-08-29 22:23:54 +05:00
fovsimple.frag Prepare reconstruction pipelines for foveated reconstruction/rendering 2025-03-10 04:56:15 +03:00
fractal-image.comp Pass most shader parameters into combos 2025-11-20 21:34:56 +00:00
fxaa.glsl Move fxaa code to separate file 2025-10-04 05:36:18 +03:00
gen_shader_bundle.py фикс ебанутой тряски головы, фиксы фбт (не тестировал) ну и что то по компаньону 2026-08-29 22:23:54 +05:00
glsl_shared.h Pass most shader parameters into combos 2025-11-20 21:34:56 +00:00
idwt.comp Add missing pyrowave files 2025-11-20 21:41:15 +00:00
idwt.frag Add single-plane color config for pyrowave idwtfragment 2026-04-15 12:58:32 +03:00
idwt.vert Add missing pyrowave files 2025-11-20 21:41:15 +00:00
image-decomposite.comp Pass most shader parameters into combos 2025-11-20 21:34:56 +00:00
image.comp Restore 10 bit switch 2024-10-12 02:44:21 +03:00
imgui_virtual_keyboard.h Relative imgui include for keyboard 2025-02-21 00:02:41 +03:00
LICENSE Initial commit 2024-09-25 18:58:58 +02:00
nodecompose.comp Fix nodecompose shader, set separatePlanes before decoder init 2026-04-15 20:01:16 +00:00
octogon.vert Try sgsr rgby mode, improve reconstruction upscaling 2025-10-07 06:23:15 +03:00
octogon2.vert Try sgsr rgby mode, improve reconstruction upscaling 2025-10-07 06:23:15 +03:00
octostrip.vert около идеальный в целом 2026-08-26 11:23:43 +05:00
patch_spirv_composite.py wscript: add shader postprocessing 2025-11-19 17:28:04 +00:00
positional_utl.h Add overloadSet utility 2024-12-27 05:18:41 +03:00
pwtest.cpp Fix image layouts 2025-10-24 21:03:40 +00:00
pyrowave_common.h Prepare fragment resources 2025-10-21 03:19:32 +03:00
pyrowave_decoder.h фикс ебанутой тряски головы, фиксы фбт (не тестировал) ну и что то по компаньону 2026-08-29 22:23:54 +05:00
pyrowave_encoder.h Fix wrong pipeline stage in gpu-to-host barriers, use compute-to-transfer barrier for staging buffer case 2026-05-06 23:20:31 +00:00
quad.comp Specialize compute pipeline resolution, split different resolution constants preparing for real reconstruction pipeline 2024-10-29 22:32:50 +03:00
quad.frag фикс ебанутой тряски головы, фиксы фбт (не тестировал) ну и что то по компаньону 2026-08-29 22:23:54 +05:00
quad.vert Create ycbcr quad sampler pipeline, convert ffmpeg frame to nv12 2024-10-28 23:44:11 +03:00
README.md Update roadmap 2025-09-11 04:14:03 +03:00
reconstruction.comp Pass most shader parameters into combos 2025-11-20 21:34:56 +00:00
reconstruction.frag фикс ебанутой тряски головы, фиксы фбт (не тестировал) ну и что то по компаньону 2026-08-29 22:23:54 +05:00
reconstructor.h фикс ебанутой тряски головы, фиксы фбт (не тестировал) ну и что то по компаньону 2026-08-29 22:23:54 +05:00
resolve_rate_control.comp Upload pyrowave shaders 2025-11-20 21:37:35 +00:00
sgsr.frag redesign, more gore 2026-08-27 07:08:26 +05:00
start_audio.sh driver 2026-08-31 13:03:38 +05:00
streamer_shared.h Draft some streamer shared structures 2024-11-29 05:06:59 +03:00
triangle.frag Implement graphics pipeline utilities, port Overv's triangle demo 2024-10-14 03:37:21 +03:00
triangle.vert Implement graphics pipeline utilities, port Overv's triangle demo 2024-10-14 03:37:21 +03:00
tristrip.vert Adjust quads sizes 2025-03-12 04:19:14 +03:00
vaapi-recorder-hevc.cpp Use async chain of 4 frames with separate command buffers 2024-10-08 04:46:19 +03:00
vaapi-recorder.cpp Refactor h264 encoder, allow switch in runtime 2024-10-12 04:26:44 +03:00
vaapi-recorder.h Use async chain of 4 frames with separate command buffers 2024-10-08 04:46:19 +03:00
vaapi_encoder.h около идеальный в целом 2026-08-26 11:23:43 +05:00
vaapi_encoder_h264.h Support vaapi planes on separate fds, use dedicated allocations (fix nvenc vaapi wrapper) 2026-04-24 08:02:39 +03:00
vaapi_encoder_hevc.h Support vaapi planes on separate fds, use dedicated allocations (fix nvenc vaapi wrapper) 2026-04-24 08:02:39 +03:00
vkcapture.cpp Fix capture test 2025-05-17 20:01:21 +00:00
vkcompute.cpp Refactor h264 encoder, allow switch in runtime 2024-10-12 04:26:44 +03:00
vkcompute2.cpp Fix decompose compute shader test 2025-05-17 19:51:26 +00:00
vkgraphics.cpp Video decoder and reconstruction source template, packeted video stream 2024-11-29 04:51:21 +03:00
vkplayer.cpp xpack compression 2024-11-11 11:18:28 +03:00
vkplayer2.cpp Partially fix vulkan player test 2025-05-17 20:31:37 +00:00
vulkan_contructors.h Add outer event polling loop, ensure frame submitting inlined 2025-11-17 17:02:39 +00:00
vulkan_framebuffer_utl.h Fix imgui artifacts 2025-10-25 08:18:29 +03:00
vulkan_pipeline_utl.h New shader loader, shader bundle support 2025-11-17 19:29:18 +00:00
vulkan_resource_utl.h Export more options to config, add memory type hack switch 2025-11-17 05:40:22 +03:00
vulkan_texture_utl.h Support user textures in imgui 2025-02-06 03:27:08 +03:00
vulkan_utl.h Only enable detected featrues 2025-10-14 11:49:36 +00:00
waf waf: Downgrade to 2.0.27 until env command line regression fixed 2025-11-19 20:56:15 +00:00
wavelet_dequant.comp Workaround for older glslc versions 2025-11-21 02:42:20 +03:00
wavelet_quant.comp Workaround for older glslc versions 2025-11-21 02:42:20 +03:00
wscript фикс ебанутой тряски головы, фиксы фбт (не тестировал) ну и что то по компаньону 2026-08-29 22:23:54 +05:00
xrapp.cpp Android decoder prototype (not tested) 2025-01-06 06:21:49 +03:00
xrm_battery.h почти доделал пиздец 2026-08-26 15:51:40 +05:00
xrm_config.h Fix 4to6 network address map 2026-04-06 21:13:27 +00:00
xrm_counter.h Variant union utility 2024-12-27 05:19:41 +03:00
xrm_imgui_vk.h Fix imgui artifacts 2025-10-25 08:18:29 +03:00
xrm_ini.h Add new config options after last non-comment entry 2025-10-03 03:44:09 +03:00
xrm_loader.h Variant union utility 2024-12-27 05:19:41 +03:00
xrm_log.h по идее imgui как сабмодуль 2026-08-31 19:14:56 +05:00
xrm_openxr.h почистил компаньон от говна и ещё сделал наконец то автодетект шлема в локалке 2026-08-31 12:04:47 +05:00
xrm_protocol.h по идее imgui как сабмодуль 2026-08-31 19:14:56 +05:00
xrm_server.ini фикс ебанутой тряски головы, фиксы фбт (не тестировал) ну и что то по компаньону 2026-08-29 22:23:54 +05:00
xrm_shaders.h фикс ебанутой тряски головы, фиксы фбт (не тестировал) ну и что то по компаньону 2026-08-29 22:23:54 +05:00
xrm_solarxr.h по идее imgui как сабмодуль 2026-08-31 19:14:56 +05:00
xrm_stats_shm.h по идее imgui как сабмодуль 2026-08-31 19:14:56 +05:00
xrm_structreflect.h Callback-based ini entries, use struct reflection for config options 2025-09-16 06:05:59 +03:00
xrm_utils.h Add overloadSet utility 2024-12-27 05:18:41 +03:00
xrm_variant.h Variant: add union constructor 2024-12-28 07:34:40 +03:00
xrmote_server.cpp почистил компаньон от говна и ещё сделал наконец то автодетект шлема в локалке 2026-08-31 12:04:47 +05:00
xrmote_server.h почистил компаньон от говна и ещё сделал наконец то автодетект шлема в локалке 2026-08-31 12:04:47 +05:00
xrmote_server_emulator.cpp Emulator FFR 2025-03-21 18:00:48 +00:00
xrmote_server_gui.h фикс ебанутой тряски головы, фиксы фбт (не тестировал) ну и что то по компаньону 2026-08-29 22:23:54 +05:00

vulkan-playground

xrmitter server grows here

Components

  • server: Running directly on target device with OpenXR runtime. Receives layers and sound from clients and renders it. Contains all GUI settings
  • streamer client: Driver or library, implementing openxr/openvr, receives tracking and streams video. There might be multiple client implementations (monado driver, monado in-process compositor, steamvr driver, OpenComposite driver)
  • audio client: connects alsa/jack/pulseaudio to server with udp streams
  • reconstructor/decomposer: stream encoding/decoding using Haar wavelet transform and video codec

Status

Server:

  • TCP listener
  • Receiving projection stream
  • Connection/tracking with single client
  • Very dumb audio streaming (does not use protocol)
  • GUI prototype rendering (basic monitoring only, configuration does nothing)
  • Android (Pico 4) and monado linux support (build scripts are not published yet)
  • GUI server emulator (works without openxr runtime)

Clients:

  • Audio with fifo pipes (tested with jack-stdio, should work with pulseaudio pipe sink/sources too)
  • Monado driver with comp_target (monado interaction not published yet, WIP)
  • Custom monado pacer synchronized with app for smoother framerate
  • Monado builder with dynamic controller type switch (register all controller types)

Decomposer/Reconstructor:

  • H264/HEVC VAAPI encoder (no ffmpeg used), linux only
  • Haar decomposer compute pipeline
  • BC1 reconstruction texture compression
  • FXAA filter
  • Android decoder
  • ffmpeg decoder (software)
  • Compute reconstruction pipeline (slow on Adreno)
  • Graphics pipeline
  • Foveated rendering (hard-coded scale)

Roadmap

Common:

  • Choose better naming/branding
  • PyroWave support
  • Make reconstruction optional (allow using video only)
  • Center position offset
  • Refactoring, better project structure (split utilities)
  • Choose build system
  • Code style (it's AWFUL now!!!)
  • Lost frame notification
  • Imporve logging (use fmt_util if possible, remove extra \n)
  • Shader combos to workaround SPIRV limitations
  • Template combos (reduce unneeded branching)
  • Improve vulkan utility
  • New thread utility
  • Optimize data layout to prevent false sharing

Server:

  • Rec/Dec runtime configuration
  • Configuration storage format
  • GUI moving/toggle
  • Improve gui monitoring (implot maybe)
  • Interaction profile switches
  • Emulate controllers in emulator GUI
  • Timing information
  • TCP streaming
  • TCP keep-alive and reconnection
  • UDP/mDNS broadcast
  • SGSR/SGSR2 upscaling for reconstruction texture
  • Foveated view configuration
  • ffmpeg hwdec
  • Multiple layers support (quad/cylinder layers)
  • Depth/ASW in reconstruction data (16 bit or rgba block format)
  • Disabling reconstruction (video rendering only)

Clients:

  • Full jack/alsa/pulse audio clients
  • Do something with shitty mediacodec on Android 14 (custom native window???)
  • Make builder optional (restore static controller configuration)
  • HMDInfo shared cache, so runtime can start without server connection
  • Try send something from server to make ipv6 address availiable (udp broadcast???)
  • Allow dynamic fov/resolution change (hack/bypass compositor?)
  • UDP listener for autoconnect
  • Monado compositor bypass (allow sending layers as is)
  • Monado in-process compositor (do we need IPC server when we already have server on HMD?)
  • Improve decomposer postprocessing
  • Passing depth to server (Seems to be unsupported with OpenComposite/monado now)
  • SteamVR driver
  • Vulkan Video encoder
  • External encoders (nvenc/amf/ffmpeg/x265) in separate process (TODO: can we use GPL software with IPC such way???)
  • OpenComposite driver (at least, we can send textures without extra swapchain copy and update overlays without xrEndFrame call, so this should be useful)
  • Windows support (at least in vulkan video/pyrowave mode)