J'ai fait un peu de recherche, mais les seuls résultats que j'ai trouvés ont pris en compte l'anti-aliasing et la mécanique derrière.Puis-je utiliser un tampon multi-échantillons pour d'autres choses que l'anti-crénelage?
Je souhaite utiliser un tampon multi-échantillons pour d'autres choses que l'anti-aliasing. Spécifiquement, je pense à une forme de transparence indépendante de l'ordre, en stockant une valeur de couleur et de profondeur différente dans chaque échantillon (idéalement les N fragments les plus proches de la caméra).
Est-ce encore possible en premier lieu? A-t-il déjà été fait, et si oui, comment? Même si c'était possible, est-ce que la mémoire est plus efficace que de simplement allouer un autre N framebuffers?
Si quelque chose comme ceci nécessite un shader de calcul ou OpenCL, c'est bien, je suis juste curieux de voir si c'est possible en premier lieu.
Cette question n'est pas spécifique à OpenGL ou DirectX, car le matériel serait le même dans les deux cas.
PS. S'il vous plaît ne me pointez pas seulement vers d'autres méthodes de transparence indépendantes de l'ordre, cette question est spécifiquement de savoir si le tampon multisample peut être utilisé pour des moyens atypiques.
Je ne pense pas, sauf si vous pouvez programmer le rasterizer. C'est peut-être possible avec DX12 mais je n'en ai aucune idée. Cela pourrait le rendre disponible pour une utilisation non anti-aliasing. Mais votre idée semble toujours impossible. –
Je ne l'ai jamais essayé moi-même, mais à partir d'OpenGL 4.0, on peut définir le masque d'échantillon à partir du fragment shader en utilisant la variable 'gl_SampleMask' [(référence)] (https://www.opengl.org/wiki/Built-in_Variable_ (GLSL) #Fragment_shader_outputs). – BDL
Idée intéressante, mais je ne vois pas cela fonctionner de quelque façon que ce soit. Même avec 'gl_SampleMask' de @BDL, les bords des triangles ne peuvent pas être gérés correctement, car vous ne pouvez pas écrire sur des pixels qui ne sont pas couverts par la primitive. Par exemple, lorsque vous utilisez le multi-échantillonnage 2x2 et que votre primitive couvre 3 des 4 sous-pixels, le 4ème sous-pixel ne peut pas être écrit. – dari