22
submitted 1 month ago by Smorty to c/godot@programming.dev

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.

you are viewing a single comment's thread
view the rest of the comments
[-] tracefree@mastodon.gamedev.place 5 points 1 month 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@programming.dev 2 points 1 month 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?

[-] tracefree@mastodon.gamedev.place 2 points 1 month ago

@PoolloverNathan Afaik that is true, yes! mix is the same instruction for all fragments, so if you can replace a branching if with a mix that should be an improvement

load more comments (2 replies)
this post was submitted on 19 Nov 2024
22 points (100.0% liked)

Godot

6005 readers
6 users here now

Welcome to the programming.dev Godot community!

This is a place where you can discuss about anything relating to the Godot game engine. Feel free to ask questions, post tutorials, show off your godot game, etc.

Make sure to follow the Godot CoC while chatting

We have a matrix room that can be used for chatting with other members of the community here

Links

Other Communities

Rules

We have a four strike system in this community where you get warned the first time you break a rule, then given a week ban, then given a year ban, then a permanent ban. Certain actions may bypass this and go straight to permanent ban if severe enough and done with malicious intent

Wormhole

!roguelikedev@programming.dev

Credits

founded 2 years ago
MODERATORS