Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

TODO #4

Open
danilw opened this issue Jan 3, 2023 · 2 comments
Open

TODO #4

danilw opened this issue Jan 3, 2023 · 2 comments
Labels
enhancement New feature or request

Comments

@danilw
Copy link
Owner

danilw commented Jan 3, 2023

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 support wlr-layer-shell #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 danilw added the enhancement New feature or request label Jan 3, 2023
@danilw danilw pinned this issue Jan 3, 2023
@lordadamson
Copy link

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

@danilw
Copy link
Owner Author

danilw commented Apr 1, 2023

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.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request
Projects
None yet
Development

No branches or pull requests

2 participants