2017-04-19 4 views
0

J'ai un vertex shader qui définit gl_PointSize = mix(0. , 5. , step(foo,bar));. Mon mac avec un Intel HD Graphics 5000, rend seulement les points qui sont 5, pas le 0. Un autre mac avec une sorte de radeon a rendu les zéros comme s'ils étaient un.gl_PointSize zéro dans WebGL

J'ai lu le fichier gl_PointSize et je n'ai pas compris quel est le comportement souhaité avec gl_PointSize = 0.; et je n'ai pas compris le problème de l'aliasing et de l'arrondi.

Si je veux "cacher" certains points, devrais-je compter sur gl_PointSize = 0.; pour ne pas pixelliser les points, ou devrais-je utiliser autre chose?

Deux choses me viennent à l'esprit:

//frag 

... 
if(vSomeVarying < 0.5) discard; //but why even rasterize, and this is still like rendering all the points regardless of the discard? 
... 


//vert 

if(someValue < 0.5){ 

    gl_Position.z = 2.; //should clip it? 

} 
+1

semble être votre deuxième solution, régler Z (ou X ou Y) en dehors de l'espace de clip, fonctionnerait. – gman

Répondre

2

Si je veux "cacher" certains points, dois-je compter sur gl_PointSize = 0 .; pour ne pas même pixelliser les points, ou devrais-je utiliser autre chose?

Utilisez quelque chose d'autre, parce que dans GLES 2.0.25 sur P51:

Si la valeur écrite gl_PointSize est inférieure ou égale à zéro, les résultats ne sont pas définis.

Forcer l'écrêtage du vert.