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.

  • Bezier@suppo.fi
    link
    fedilink
    arrow-up
    5
    ·
    edit-2
    1 month ago

    Impact of if statements depends on how you use them. GPUs are massively parallel and sacrifice complexity to fit more parallel compute. Threads aren’t fully independent, so regardless of which branch is taken, the thread usually has to wait for both branches.

    Pixels that take the then-branch idle while other ones take the else-branch and vice versa. That’s precious GPU time wasted doing nothing. Adding more cases make this exponentially worse because the program has to wait for every case.

    Can’t say if it’s slower than your other expensive job, though. Try it out and measure.