Show HN: Shader Lab, like Photoshop but for shaders

(eng.basement.studio)

135 points | by ragojose 3 days ago ago

39 comments

  • elliottcarlson 10 hours ago ago

    Nice interface -- I made something similar but for a specific game (Binding of Isaac) because it has a specific way of implementing shaders for mods. https://sublimnl.github.io/IsaacShaderStudio/

  • onion2k 6 hours ago ago

    A while ago (8 years in fact) I wanted to make something like this. I made a slightly half-assed React library that used twgl to overlay a shader on an element on a page (or a canvas for some effects). One thing I had was measuring where an element was on the page and then using absolute positioning to put a canvas over it so effects could expand beyond the confines of the element. I still think that has potential for some fun things but browsers aren't really fast enough to keep it in the right place with scrolling so it never works properly. https://react-neon.ooer.com/ + https://github.com/onion2k/react-neon

    These new libraries are much better than anything I came up with.

    • llbbdd 5 hours ago ago

      Can you elaborate on the scrolling issue?

      • greggman65 5 hours ago ago

        It’s a WebGL issue, fixed in WebGPU.

        Browsers generally only allow a fixed number of WebGL contexts per page. So a generic element effect library has the issue that too many elements some will start losing contexts. The workaround is to just make one large screen size canvas and then figure out where the elements are you need to draw an effect for. now you only have one context drawing all the elements. But, you can’t know where to draw until the browser scrolls and renders so you’re always one frame behind.

        https://webgl2fundamentals.org/webgl/lessons/webgl-multiple-...

        WebGPU doesn’t have this issue. You can use the same device with multiple canvases

        https://webgpufundamentals.org/webgpu/lessons/webgpu-multipl...

      • onion2k 5 hours ago ago

        It's been a while so I might be a little off, but the problem was that the effect would lag behind slightly (one frame?) because I used an observer to match where the element moved to because the overlay element was logged to the viewport. I think I did that to avoid having a canvas that was the size of the entire page. Where a canvas could just be abs positioned it was ok but for reasons I can't remember that didn't work for everything.

  • glhast 6 hours ago ago

    I started https://unicorn.studio (first of its kind for layer based shader composition) back in 2020! Thankful that I did because I actually had to learn GLSL the hard way. Not sure that I would have bothered if building it today.

  • felixthehat 10 hours ago ago

    looks like a slopfork of the fairly new https://shaders.com - frustrating for them!

    • marchantweb 8 hours ago ago

      I'm the Founder at https://shaders.com. Not frustrating at all, and Basement is an excellent team. Shader Lab looks like a solid tool for exploration and and creating effects, nothing slop about it (although I love the word "slopfork", that's new).

      Our platform goes above and beyond that with a large collection of Pro presets and a unique capability in our component-based approach with reactive props, and of course broader framework support. All that, and our new MCP workflow for having your agent prompt effects, and we feel confident in our place in the market.

      Would recommend checking out both Shader Lab AND shaders.com to anyone interested in creative shader effects for the web.

      • felixthehat 8 hours ago ago

        Ah nice! I enjoyed trying out your product when it was launched which called this app to mind. Commendable attitude!

      • gavinray 8 hours ago ago

        I'm not your target audience, but why do you gate your playground?

        Went to try it and then gave up after it asked me to sign up/log in

        • marchantweb 7 hours ago ago

          Mostly due to account-tied permissions, such as asset uploads (images, video, etc) and for auto-saving/versioning.

          It's entirely free to try, build, etc with an account - you only need a paid license when you're ready to export/deploy

    • virtualritz 6 hours ago ago

      There are dozens of DCCs where you have a UI where you stack things (over-compositing, bottom to top).

      And when you select one of these things you can change the parameters.

      If this is a 'slopfork' of shaders.com then the latter is a 'slopfork' of <insert any DCC that had this pattern and existed before and has whatever anyone may consider 'less sloppy'>.

      OTTOMH: AfterEffects, Cavalry, Substance Designer's Layer panel, Tixl's layered textures, ...

    • upmostly 6 hours ago ago

      Honest question: If my web browser struggles to even render the preview, why in god's name would I put any of these presets on a production webpage?

      • imcritic 6 hours ago ago

        Please, don't. I don't want the same starting to happen on different sites...

    • KingOfCoders 9 hours ago ago

      They look nothing alike except they are both about shaders.

      Could you explain why you think this is a slopfork?

      • felixthehat 8 hours ago ago

        Did you try the shader.com shader editor where you stack shaders and effects in layers? V similar approach!

        • frabia 8 hours ago ago

          so does Photoshop and thousand other visual editing tools. Hardly a reason to claim it to be a copy. Also "slopfork" seems harsh considering it seems limited, but well designed imo.

          • felixthehat 8 hours ago ago

            Maybe a little harsh yes. But compare these screenshots of the two products/features

            https://imgur.com/a/41BybD1

            • cududa 6 hours ago ago

              I see a deep tree and a shallow tree in the two screenshots, representative of entirely different approaches.

    • skrebbel 9 hours ago ago

      "slopfork" nice

    • doingitwell 9 hours ago ago

      Welcome to the world of zero cost software we were promised

      • nipponese 9 hours ago ago

        Indeed we prefer the world where only deep-pocketed entrenched monopolies can do this.

  • natdempk 5 hours ago ago

    Is this lacking FPS caps or is something very unoptimized? Everything is smooth, but this website makes my computer run super hot and laptop fans spin up like nothing else does, even other shaders. (recent Chrome, recent MBP)

  • sph 12 hours ago ago

    Doesn't seem to load for me except the side windows. Firefox/Linux. HN hug of death?

    The design language screams vibe coded to me.

    • allan_s 10 hours ago ago

      As a ESL, what is unnatural in the language used ?

      • saintfire 3 hours ago ago

        Design language, meaning the feel and how the user interacts with a product.

        They're saying it follows the patterns that AI biases towards regarding feel and UI.

    • esafak 11 hours ago ago

      It works on MacOS Chrome.

  • sva_ 10 hours ago ago

    When I clicked Add Layer and then tried to select an image source, it managed to crash Firefox pretty consistently.

    Submitted a bug report.

  • mawadev 11 hours ago ago

    That is so laggy, but the UI looks really cool!

  • bobbies-treats 8 hours ago ago

    Tough for anyone to want to play around with until performance is improved. It's neat though.

  • realbigscrem 6 hours ago ago

    Not to be mistaken for Unity Shaderlab: https://docs.unity.cn/Documentation/Manual/SL-Reference.html

  • ohyoutravel 11 hours ago ago

    Doesn’t work for me. Seems vibe coded.

    • ragojose 36 minutes ago ago

      can you give me more context so we can fix it? this is not vibe-coded :)

  • aguacaterojo 11 hours ago ago

    V cool. Works in ff on mac for me. Maybe vibe coded but it's a spectrum. Probably in need of a bit of polish and a better performing example & maybe resolution switching. Basement Studio is legit I have bought their fonts in the past.

    Floating windows are a little pointless but aesthetic choice or a one shot ui. FPS would be nice, also distinction between canvas and void. Video export works great.