Précédent   Forum des professionnels en informatique > Applications > Développement 2D, 3D et Jeux > API graphiques > OpenGL
OpenGL Forum d'entraide sur le développement en OpenGL. Avant de poster -> FAQ OpenGL
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 02/01/2012, 14h39   #1
Membre à l'essai
 
Inscription : septembre 2009
Messages : 61
Détails du profil
Informations forums :
Inscription : septembre 2009
Messages : 61
Points : 23
Points : 23
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 ?
le_ptit_lutin est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/01/2012, 16h17   #2
Membre à l'essai
 
Inscription : septembre 2009
Messages : 61
Détails du profil
Informations forums :
Inscription : septembre 2009
Messages : 61
Points : 23
Points : 23
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 ...
le_ptit_lutin est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/01/2012, 16h17   #3
Membre chevronné
 
Homme
Inscription : mars 2011
Messages : 433
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations forums :
Inscription : mars 2011
Messages : 433
Points : 792
Points : 792
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 ?
__________________
La perfection est atteinte, non pas lorsqu’il n’y a plus rien à ajouter, mais lorsqu’il n’y a plus rien à retirer. - Antoine de Saint-Exupéry
pyros est déconnecté   Envoyer un message privé Réponse avec citation 01
Vieux 02/01/2012, 16h20   #4
Membre à l'essai
 
Inscription : septembre 2009
Messages : 61
Détails du profil
Informations forums :
Inscription : septembre 2009
Messages : 61
Points : 23
Points : 23
Ben voila mon shader, je pense sincèrement qu'il est correct.

Code :
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 :
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.
le_ptit_lutin est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/01/2012, 16h24   #5
Membre à l'essai
 
Inscription : septembre 2009
Messages : 61
Détails du profil
Informations forums :
Inscription : septembre 2009
Messages : 61
Points : 23
Points : 23
Citation:
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.
le_ptit_lutin est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/01/2012, 16h34   #6
Membre chevronné
 
Homme
Inscription : mars 2011
Messages : 433
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations forums :
Inscription : mars 2011
Messages : 433
Points : 792
Points : 792
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.
__________________
La perfection est atteinte, non pas lorsqu’il n’y a plus rien à ajouter, mais lorsqu’il n’y a plus rien à retirer. - Antoine de Saint-Exupéry
pyros est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/01/2012, 16h36   #7
Membre à l'essai
 
Inscription : septembre 2009
Messages : 61
Détails du profil
Informations forums :
Inscription : septembre 2009
Messages : 61
Points : 23
Points : 23
Ben oui lol, je me rend compte en fait que ca bouffe énormément cette petite carte !
le_ptit_lutin est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 03h39.


 
 
 
 
Partenaires

Hébergement Web