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
    ·
    9 hours 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

    • PoolloverNathan
      link
      fedilink
      arrow-up
      2
      ·
      7 hours 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?