Merci pour ta réponse.
C'est un pixel shader de deferred shading

.
- Dans ma première passe, je remplis mes textures de diffuse, depth, normal, etc.
- Dans ma seconde passe, je lis ces textures et j'applique l'éclairage.
Dans ma seconde passe, je suis bien obligé de boucler sur toutes mes lampes, non ? (je peux biensur éviter d'envoyer les lampes qui n'affecte pas du tout la scène à mon shader).
Ensuite dans la boucle, je peux ajouter un test du genre:
1 2 3 4 5 6
| if(!attenuationOfLight[j] > 0.0){
/*J'applique l'éclairage sur ce pixel*/
}else{
/*La lampe 'j' n'affecte pas ce pixel, je passe à la lampe suivante.*/
continue;
} |
Ma question initial était surtout: pourquoi un 'if' est bcp bcp plus lent qu'une fonction 'max' ou une addition, etc. J'aimerai connaitre la raison technique.
Merci d'avance.
Partager