vulkan-shadertoy-launcher
vulkan-shadertoy-launcher copied to clipboard
TODO
My TODO for vulkan-shadertoy-launcher:
Small fixes:
- fix iTime on pause - currently iTime adds +1 sec during pause because how timer implemented
- make Resize similar to Shadertoy... maybe - on Shadertoy on resize new resized FBO can read previous non-resized FBO.
In vulkan-shadertoy-launcher - on resize just reset all framebuffers to 0, I still think it is more valid and useful and if someone need to have non-resizeble FBO I have NO_RESIZE_BUF define in main.c, or for demo-apps control state like camera position etc on CPU side and send thru uniform or buffer.\
Implementing missing features:
-
Mipmaps for buffers support - I have no idea how to do proper/correct mipmaps using Vulkan 1.0 without extensions.
As I know fastest way to do mipmaps in Vulkan is - using compute shader https://github.com/nvpro-samples/vk_compute_mipmaps it requires extension. (so I mean il implement it as option, to keep Vulkan 1.0 minimal rendering) -
Video-texture support and cubemaps, and maybe 3d texture support. (video encoding? I dont want include 50Mb ffmpeg libraries)
-
Audio - its simple to generate audio texture Some details on Shadertoy FFT my Godot implementation
But playing audio - for Windows can be used mmsystem, example implementation of mmsystem
But for Linux OS - no idea how to make it simple and small without dependencies, including fmod explode bin-build by 500Kb when original size 50Kb... need look into finding solution for it -
Fix discard in Image shader - maybe... required moving rendering of Image shader to its own framebuffer... I do not like creating not needed overhead, so maybe will be optional.
Additional features:
- Wayland decoration support - read comments in wayland_utils.h
- Support wlr-layer-shell https://github.com/danilw/vulkan-shadertoy-launcher/issues/3
- Add full Headless rendering - to render without starting desktop session
- Export-render to video - frame perfect video recording, using ffmpeg. (maybe as external repository/project) (and tile rendering)
- make config support - .cfg file where user set properties for each buffer
is adding support for macos something you would consider? I may contribute an initial thing that works, can't promise that I'd be able to maintain it though
is adding support for macos something you would consider? I may contribute an initial thing that works, can't promise that I'd be able to maintain it though
I do not see reason to do it, because Vulkan is not "native API" for MacOS
Main point of this tool vulkan-shadertoy-launcher - minimal Vulkan application to create "demo-like" offline applications with minimal size, this compiled launcher about 30Kb size - it is minimal what you can do with Vulkan.
But on Mac to make Vulkan work there - you need to include entire size of MoltenVK that many megabytes...
At this point - just use webbrowser, or Electron-application to make offline Shadertoy app for MacOS. Making minimal non-native app for MacOS that require large many megabytes library to work - is same as creating minimal webpage and use webbrowser/electron to launch/render it.