IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

OpenGL Discussion :

calculs dans les shaders


Sujet :

OpenGL

  1. #1
    Membre à l'essai
    Inscrit en
    Août 2007
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 15
    Points : 13
    Points
    13
    Par défaut calculs dans les shaders
    Bonjour
    Bon, c'est un fait, je suis une quiche.
    J'ai quelques objets géométriques à afficher à l'écran, avec possibilité de tourner autour pour changer le point de vue.
    Pourquoi ne pas passer par OpenGL ? Surtout qu'avec le confinement, j'ai le temps.

    Au début, ça passe (j'utilise OpenTK, mais je sais traduire glBindBuffer() en GL.BindBuffer()).

    Mais l'un de mes objectifs est de gérer la semi-transparence des objets.
    J'ai compris que ce n'était pas simple.

    J'ai compris les algorithmes style Depth Peeling, linked list of fragments, ou (et elle me plait bien celle-là) une solution proposée par Morgan McGuire et Louis Bavoil en 2013.
    (Si vous avez plus simple d'ailleurs, je suis preneur)

    Mais je n'ai pas trouvé d'implémentation concrète et je bute sur une question qui va peut-être vous faire rigoler :
    Comment gérer dans un fragment shader des tableaux en lecture/écriture ?
    Car voyez-vous, pour la dernière solution citée, j'ai besoin d'un tableau 3D dont les deux premières dimensions mappent les pixels du viewport, et la troisième me permet de stocker une liste triée par profondeur d'informations sur les fragments superposés, quitte à collapser des lignes pour se limiter en taille mémoire, puis ensuite de reprendre ces données pour enfin calculer la couleur résultante.

    Et je ne parle pas de sampling ou d'anti-crénelage.

    J'ai bien une piste, mais j'ai peur de me fourvoyer : je n'ai trouvé que des arrays of image2d qui pouvaient être lus et écrits dans un shader
    D'abord, la doc parle d'accès incohérent qu'il faut gérer avec glMemoryBarrier
    Puis j'ai des fragments avec des coordonnées xy en float, et l'image gère des coordonnées entières
    Puis le format des cellules est figé dans une liste restreinte, genre GL_RGBA32F, ce qui me donne une cellule de 4 float.
    J'ai compris que ce GL_RGBA32F n'est qu'un nom, et qu'on peut y mettre des float qui représentent autre chose qu'une composante de couleur, mais ça me titille.

    Si vous aviez des exemples concrets de programmes cpp ou C# et de shaders écrits pour résoudre ce problème de transparence OIT, je serais très reconnaissant.

    Merci

  2. #2
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    26 827
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 26 827
    Points : 218 369
    Points
    218 369
    Billets dans le blog
    117
    Par défaut
    Bonjour,

    Pour écrire à partir d'un fragment shader, il faut écrire dans une texture, ce qui se fait avec une passe de rendu hors écran (offscreen rendering). Après, vous pouvez utiliser cette texture comme source à des étapes suivantes.
    Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi

    Ma page sur DVP
    Mon Portfolio

    Qui connaît l'erreur, connaît la solution.

  3. #3
    Membre à l'essai
    Inscrit en
    Août 2007
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 15
    Points : 13
    Points
    13
    Par défaut
    Merci pour votre intervention.
    Je maitrise la technique que vous proposez.
    Hélas cela ne répond pas à ma préoccupation.

    Je suis vraiment désolé de ne pas avoir été plus clair dans mes explications.

    Bonne journée à vous.

Discussions similaires

  1. Etats et calculs dans les contrôles
    Par Emayald dans le forum IHM
    Réponses: 6
    Dernier message: 22/02/2009, 22h35
  2. Faire des calculs dans les états
    Par bobosh dans le forum IHM
    Réponses: 1
    Dernier message: 09/09/2008, 14h36
  3. Calcule dans les dimensions
    Par nico341 dans le forum Mise en page CSS
    Réponses: 14
    Dernier message: 05/09/2008, 10h05
  4. calcul dans les requêtes et left join
    Par jejeman dans le forum Requêtes
    Réponses: 5
    Dernier message: 13/07/2007, 16h34
  5. Calcul dans les sous-formulaires
    Par rafa55 dans le forum Access
    Réponses: 3
    Dernier message: 21/06/2006, 11h37

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo