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 qui stoppe la machine !?


Sujet :

OpenGL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2009
    Messages
    70
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Septembre 2009
    Messages : 70
    Par défaut GLSL qui stoppe la machine !?
    Bonjour à tous,

    Je viens de rencontrer un bug assez gênant et c'est pour savoir si s'était déjà arrivé à l'un d'entre vous.

    J'ai modifié un shader pour l'éclairage de ma scène. En gros je suis passé d'un éclairage basique à un éclairage de type Phong en suivant un exemple d'OpenGL Superbible 5. Je passe donc un peu plus d'informations à mon shader et il y a un peu plus de traitements... Mais bon , ça ne me semble pas la fin du monde.

    Donc ce qu'il se passe, c'est que l'application se lance, ça dure 5 secondes, je peux me balader. Et puis boom ! La machine s'arrête.
    Je suis obligé de la dés-alimenter pour pouvoir la rebooter. Sinon elle le boot se bloque lui aussi.

    Je viens de changer ma carte graphique pour une GTX 570. J'utilise mon application sous linux avec le drivers de debian xserver-xorg-nvidia.
    Sous windows 7, je sais jouer à rage, alice madness returns, civilization 5 ... Il n'y a qu'un seul jeu qui fait exactement le même bug, Stalker Clear Sky.

    Est-ce que ma carte est morte ?
    Est-ce qu'un shader peut flinguer un système ?

  2. #2
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2009
    Messages
    70
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Septembre 2009
    Messages : 70
    Par défaut
    Bon en cherchant sur de forum de hardware, ce serait mon alimentation qui serait vraiment limite.

    Le GPU s'emballe et la carte mère déclenche une sécurité.

    J'ai testé en activant la synchro verticale, ce qui a pour effet de calmer le débit d'images et ça tourne par miracle. Et aussitôt que je le réactive, ça plante.

    Voila ...

  3. #3
    Membre émérite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mars 2011
    Messages
    618
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2011
    Messages : 618
    Par défaut
    Salut,

    Y-a-t'il des boucles (potentiellement infinies) dans ton shader ?
    As-tu le même problème sous windows, auquel cas, cela te génère-t-il une erreur timeout 5s (le driver n'a pas répondu blablabla) ?
    Tes drivers sont-il à jour ?

    Si tu peux jouer à rage etc... il y a peu de chance que ta carte soit morte . Je pencherais plutôt pour une erreur dans ton code ou un bug de driver.

    Sinon un shader peu effectivement flinguer le system (suffit qu'il soit suffisement gros).
    Sous win7, l'appli est killée si le driver graphique ne répond pas au bout de 5 secondes, mais ils arrivent souvent que le système ne soit plus très stable après ça (bug d'affichage, freeze, écran bleu voir reboot direct de la machine).
    Sous linux il n'y a pas de limitation (à ma connaissance). Le système reste bloqué tant que le driver n'a pas rendu la main, ce qui ressemble à ton cas.

    Peux-tu poster le code de ton shader ?

  4. #4
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2009
    Messages
    70
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Septembre 2009
    Messages : 70
    Par défaut
    Ben voila mon shader, je pense sincèrement qu'il est correct.

    Code : 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
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
     
    #version 330
     
    precision highp float;
     
    uniform mat4 em_ModelViewMatrix;
    uniform mat4 em_ModelViewProjectionMatrix;
    uniform mat3 em_NormalMatrix;
     
    in vec4 em_VertexPosition;
    in vec4 em_VertexColor;
    in vec3 em_VertexNormal;
    in vec2 em_VertexTexCoord0;
     
    smooth out vec2 em_FragTexCoord0;
    smooth out vec4 em_FrontColor;
     
    smooth out vec3 normal;
    smooth out vec3 lightDir;
     
    void main (void)
    {
    	em_FragTexCoord0 = em_VertexTexCoord0;
    	em_FrontColor = em_VertexColor;
     
    	normal = em_NormalMatrix * em_VertexNormal;
     
        // Get vertex position in eye coordinates
        vec4 vPosition4 = em_ModelViewMatrix * em_VertexPosition;
        vec3 vPosition3 = vPosition4.xyz / vPosition4.w;
     
        // Get vector to light source
        lightDir = normalize(vec3(0.3, 0.1, 1.0) - vPosition3);
     
    	gl_Position = em_ModelViewProjectionMatrix * em_VertexPosition;
    }
    Code : 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
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
     
    #version 330
     
    precision highp float;
     
    uniform sampler2D em_DiffuseTexture;
     
    in vec2 em_FragTexCoord0;
    in vec4 em_FrontColor;
     
    smooth in vec3 normal;
    smooth in vec3 lightDir;
     
    void main (void)
    {
    	// FOG calculation
    	float density = 0.0001;
     
    	const float LOG2 = 1.442695;
    	float z = gl_FragCoord.z / gl_FragCoord.w;
    	float fogFactor = exp2(-density * density * z * z * LOG2);
    	fogFactor = clamp(fogFactor, 0.0, 1.0);
     
     
     
        // Dot product gives us diffuse intensity
        float diff = max(0.0, dot(normalize(normal), normalize(lightDir)));
     
        // Multiply intensity by diffuse color, force alpha to 1.0
        vec4 finalColor = diff * mix(texture2D(em_DiffuseTexture, em_FragTexCoord0), em_FrontColor, 0.5);
     
        // Add in ambient light
        finalColor += vec4(0.1, 0.0, 0.0, 1.0);
     
        // Specular Light
        vec3 vReflection = normalize(reflect(-normalize(lightDir), normalize(normal)));
        float spec = max(0.0, dot(normalize(normal), vReflection));
        if ( diff != 0 )
        {
            float fSpec = pow(spec, 128.0);
            finalColor.rgb += vec3(fSpec, fSpec, fSpec);
    	}
     
    	gl_FragColor = mix(vec4(0.1, 0.0, 0.0, 1.0), vec4(finalColor.rgb, 1.0), fogFactor);
    }
    Mais comme je lis des problèmes d'autres gens, ce serait l'alimentation. Ca m'étonne vraiment, j'ai quand même 550W. Sur la boîte de la carte graphique, c'est la recommandation mini.

  5. #5
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2009
    Messages
    70
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Septembre 2009
    Messages : 70
    Par défaut
    As-tu le même problème sous windows, auquel cas, cela te génère-t-il une erreur timeout 5s (le driver n'a pas répondu blablabla) ?
    Tes drivers sont-il à jour ?
    Et donc, soit tout marche nickel sans erreurs. Soit dans le cas de mon moteur sous linux, ou le jeu stalker sous windows, ca va 4-5 secondes, puis le pc s'arrête sans bip sans rien.

    Et si je ne retire pas la prise pour vider la RAM, il ne démarre plus.

    Edit: les drivers, sous windows ce sont les 285; pareil sous nux.

  6. #6
    Membre émérite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mars 2011
    Messages
    618
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2011
    Messages : 618
    Par défaut
    Les GTX570 consomment presque 400W. Avec une alim de 550, ça laisse pas grand chose pour le reste du PC...

    Essaye de débrancher ce que tu peux de ton PC (lecteur DVD, disque dur secondaire, chauffe tasse USB ) ou de désactiver carte son/réseau/etc... dans le bios.

  7. #7
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2009
    Messages
    70
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Septembre 2009
    Messages : 70
    Par défaut
    Ben oui lol, je me rend compte en fait que ca bouffe énormément cette petite carte !

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

Discussions similaires

  1. trouver le die() qui stoppe la page
    Par ddeee dans le forum Langage
    Réponses: 3
    Dernier message: 19/03/2014, 13h37
  2. export table access vers excel qui stoppe au niveau d'une table
    Par Dermochelys dans le forum VBA Access
    Réponses: 7
    Dernier message: 10/11/2009, 17h01
  3. Une fonction qui stoppe les autres
    Par Whombat dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 11/01/2009, 09h09
  4. Réponses: 2
    Dernier message: 07/07/2008, 11h07
  5. [Système] Qui éteint une machine à distance
    Par LeYouss dans le forum Langage
    Réponses: 6
    Dernier message: 25/04/2006, 17h58

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