vulkan-shadertoy-launcher icon indicating copy to clipboard operation
vulkan-shadertoy-launcher copied to clipboard

TODO

Open danilw opened this issue 2 years ago • 2 comments
trafficstars

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

danilw avatar Jan 03 '23 00:01 danilw

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

lordadamson avatar Apr 01 '23 14:04 lordadamson

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.

danilw avatar Apr 01 '23 15:04 danilw