I have heard many times that if statements in shaders slow down the gpu massively. But I also heard that texture samples are very expensive.

Which one is more endurable? Which one is less impactful?

I am asking, because I need to decide on if I should multiply a value by 0, or put an if statement.

  • Rie@mastodon.gamedev.place
    link
    fedilink
    arrow-up
    4
    ·
    7 days ago

    @Smorty Link doesn’t load for me and I don’t know the answer in general, but one thing I can say is that _sometimes_ if statements aren’t an issue at all, which is when the condition evaluates to the same thing for all pixels/fragments. E.g. an “if sin(TIME) < 0.0” costs you almost nothing, whereas “if COLOR.r > 0.5” causes execution to branch and slows you down. But I can’t say how that case compares to a texture lookup, I assume it depends on many thing

      • Rie@mastodon.gamedev.place
        link
        fedilink
        arrow-up
        1
        ·
        6 days ago

        @Kissaki I saw this post on Mastodon where it only contains the title and a link to the Lemmy post (which didn’t work for me), I didn’t realize I was actually commenting on a Lemmy post by replying on Mastodon haha

    • PoolloverNathan@programming.dev
      link
      fedilink
      arrow-up
      2
      ·
      7 days ago

      I’ve heard that using mix() instead (or whatever GDShader calls that GLSL function) can be more performant, since it doesn’t branch. Is that true?