12Fermer
ZephLe 26/11/2010 à 09:51
GoldenCrystal (./11) :
Ben alors ajoute une constante très faible comme tu l'as proposé. (Me semble que dans les shader la précision est supérieure à 8 bits donc tu peux vraiment mettre un truc très faible)
Par contre d'un point de vue performances (attention, c'est de la micro optimisation grin), je pense que c'est mieux de faire des textures sans 0 que d'ajouter une constante à chaque calcul de luminosité.

Oui, la précision est plus fine que les 8 bits originaux de la texture, pas de souci de ce côté-là. On gagne bien quelques additions en préparant à l'avance une texture sans zéro, mais comparé au reste, je suis pas sûr que ce soit un gain mesurable grin
RHJPP (./12) :
Je te dis ça, c'est pour qu'il n'y ait plus les points du côté ombragé wink Le truc du cosine = 0 ne fonctionne pas à cause du ^0, il faut faire autrement...

C'est déjà fait, le screenshot était bien là pour montrer que même avec une très faible lumière (elle touche le mur avec un angle de quasiment 90°) le pixel est totalement blanc.
Cette valeur 0 ne devrait être utilisée que pour des objets extrêmement brillants, comme un éclat de verre pris dans le ciment de ton mur ou pour les petits cailloux les plus brillants.

Si c'est la taille du point qui te dérange parce que ça fait quand même beaucoup de lumière pour un tout petit truc qui brille, c'est que le problème est ailleurs que dans la formule ^^. Ta texture ne devrait présenter des pixels de cette couleur que de façon isolée. Ces pixels doivent bien sûr être bien plus petits que les pixels de l'image finale. En fait, ce qui te manque, c'est de l'antialiasing smile

Même un caillou, aussi brillant soit-il, ça ne me semble normal qu'il passe instantanément de noir à blanc si y'a un pauvre rayon de lumière extrêmement faible qui le touche à peine :/

En revanche peut-être qu'avec de l'AA le résultat serait plus lissé et donc plus crédible, en effet smile