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 :

[glsl] Vertex Texture Fetching + 6600GT => performance?


Sujet :

OpenGL

  1. #1
    Membre expérimenté
    Avatar de granquet
    Profil pro
    Étudiant
    Inscrit en
    Octobre 2005
    Messages
    1 201
    Détails du profil
    Informations personnelles :
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2005
    Messages : 1 201
    Points : 1 421
    Points
    1 421
    Par défaut [glsl] Vertex Texture Fetching + 6600GT => performance?
    j'ai un probleme de performance quand j'essaye de fetch le contenu d'une texture dans un vertex shader.

    sur une 6600 GT (mon matériel), je passe de 1kfps (capé à 1k par la résolution de SDL_getticks()) à 5fps.

    le shader ne fait que 3 soustractions

    Code C : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    uniform sampler2D hMap;
     
    void main(void)
    {
            vec4 dv;
            vec4 v = vec4(gl_Vertex);
            float df;
            dv = texture2D(hMap, gl_MultiTexCoord0.st);
    //a de fault de heightmap potable
    //je recupere la composante rouge de ma texture.
            df = dv.r;
            v.x -= df;
            v.y -= df;
            v.z -= df;
            gl_Position = gl_ModelViewProjectionMatrix * v;
            gl_TexCoord[0].xy = gl_MultiTexCoord0.xy;
    }

    cela marche nickel sur une 8800 (sur 1000fps, pas un seul en moins ... en affichant 5120 vertex).
    mon GPU est shader 3.0 dixit le site de nvidia
    Citation Envoyé par nvidia.fr
    Les GPU NVIDIA GeForce 6600 sont les premiers à proposer des performances maximales, ils prennent en charge le SLI Multi-GPU et les fonctions Shader Model 3.0 à des prix abordables.
    et qui dis shader 3.0 dis possibilité de fetch au moins 4 unités de texture dans le vertex shader.

    je rajoute que je suis sous linux et que ma config marche sans soucis sur des jeux plutôt récent comme quake4.


    ---
    pour la petite histoire (y'as toujours des curieux ):
    j'essaye de coller du relief sur une geodesic sphere avec une heightmap en utilisant les shaders.

    je met mon heightmap dans mon unité de texture 1, et je module le rayon centre de la sphere - vertex par la valeur stocké dans la texture.

    ça semble marcher correctement (me faudrais une heightmap correcte pour être sur) et donner des résultats digne d'intérêt sur du matériel récent
    click my www
    ............|___
    ...................\
    .................._|_
    ..................\ /
    ..................."

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    366
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 366
    Points : 440
    Points
    440
    Par défaut
    j imagine que si tu remplaces texture2D par une valeur en dur (genre 0) tu retrouves des grosses perf ....

    sinon dans les limitations (c'est le cas sur une 6800 donc probablement aussi sur une 6600),et de memoire, il faut une texture floatant (genre RGB-FLOAT ou LUMINANCE-FLOAT) dans le vertex shader (sinon c'est simule sur CPU !!)

  3. #3
    Membre expérimenté
    Avatar de granquet
    Profil pro
    Étudiant
    Inscrit en
    Octobre 2005
    Messages
    1 201
    Détails du profil
    Informations personnelles :
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2005
    Messages : 1 201
    Points : 1 421
    Points
    1 421
    Par défaut
    effectivement, c'était bien le format de la texture

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    glTexImage2D( GL_TEXTURE_2D, 0, GL_RGB_FLOAT32_ATI,
                                  Map->w,Map->h, 0, 
                                  GL_RGB,GL_UNSIGNED_BYTE, Map->pixels);
    et ça marche nickel.

    jvais me tourner vers quelque chose de plus portable quand même ...

    ça ne marche pas sur les ATI, ni sur les gpu prior geforce 6 (le vertex texture fecth est pas supporté)
    click my www
    ............|___
    ...................\
    .................._|_
    ..................\ /
    ..................."

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. glsl osg texture
    Par clement.rey dans le forum OpenGL
    Réponses: 0
    Dernier message: 05/06/2009, 16h15
  2. [ GLSL ] et textures (débutant)
    Par scannerz57 dans le forum OpenGL
    Réponses: 2
    Dernier message: 24/12/2008, 14h01
  3. GLSL : Affichage Texture
    Par Lhudel dans le forum OpenGL
    Réponses: 5
    Dernier message: 09/03/2007, 16h12
  4. [OBJ] vertex texture
    Par Husqvarna dans le forum Développement 2D, 3D et Jeux
    Réponses: 4
    Dernier message: 11/05/2006, 23h45
  5. Cube avec 8 Vertex + textures
    Par mister3957 dans le forum DirectX
    Réponses: 2
    Dernier message: 23/11/2005, 23h31

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