stevensona/shader-toy

support for texture arrays, MRT, integer textures, image load/store?

bernief1 opened this issue · 10 comments

hi, i just came across your project - nice!
i'm currently working on something similar to help me with my lightmapping / path tracing research. i'd be interested in collaborating. here's the list of features beyond what ShaderToy supports that i'm currently supporting:

texture arrays
volume textures
multiple rendertargets
up to 32 texture inputs per pass
arbitrary texture resolutions
all GPU-supported texture formats
image load/store (and atomics)
arbitrary number of passes
slider widgets defined in metadata and rendered as an overlay
all declarations in metadata in the shader code .. e.g. to create a 1024x1024 buffer you just write "//$BUFFER:mybuffer,w=1024,h=1024" in the shader code, and then you can sample it with "texture(mybuffer,...)" etc.

send me an email if you are interested in sharing ideas or unifying our syntax!
bernie.freidin@gmail.com

@bernief1 Is your project public and/or open-source?

You're missing some libraries in your repo, so I can't actually build it without searching for the right versions myself.

Regardless of that, it sounds like you have a set of really nice features. However I don't see how the projects can benefit from each other. The fact alone that one project is written in TypeScript/HTML and the other is written in C++ makes most efforts to port features very non-trivial. On top of that one works based on WebGL, the other on the full OpenGL feature set.

I don't say this to be discouraging or mean, I just honestly think that the two projects live in very different domains, where they each are completely valid and valuable solutions.

When you speak of unifying syntax, of course this is a different question and could bring value to users who might not always be able to use one or the other solution. Thus having a standalone desktop version of shader-toy that obeys the same syntax as the VSC integrated version (and partially the online version) could help a lot. On a side note though, we have many active users on this extension, thus radically changing our syntax would be dangerous.

For now, if you are interested in growing your project and making it inviting to contributors, I would suggest you to clean up the repo a bit, introduce a build-system, make the code portable (if it isn't already), eventually introduce CI and testing. I'd be happy to spend some time to help you with that, because I think having a desktop version of shadertoy is an amazing prospect.

Edit: I hope I didn't come across as negative, I've been told it happens. Instead I am really positive about this project 😄

In particular I fail linking against the static libraries for FreeImage 'GraphicsTools/external/FreeImage/x64/FreeImage2017Lib.lib'

Edit: I'm sorry I'm slow in responding. I just changed job and everything is a bit stressful.

No, there is no static library for FreeImage in your repo. It should be in this folder

Edit: I also think we should continue this conversation on your repo instead of here.

Closing this since the conversation doesn't belong here, as mentioned previously.
@bernief1 I'm sorry this slipped my mind. If you are still interested in making your repo more open-source friendly just get in touch, I should have some time to help you.