Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1881 connectés 

 


 Mot :   Pseudo :  
 
 Page :   1  2
Page Suivante
Auteur Sujet :

[opengl] à la recherche des fragment program sur geforce3/4

n°869478
john_john
Posté le 10-10-2004 à 16:05:35  profilanswer
 

Reprise du message précédent :
Voici le programme qui s'occupe de l'effet spéculaire de la route:

Code :
  1. "!!ARBvp1.0\
  2. OPTION ARB_position_invariant;\
  3. ATTRIB iPos             = vertex.position;\
  4. ATTRIB iColor         = vertex.color;\
  5. ATTRIB iNormal          = vertex.normal;\
  6. ATTRIB iTexCoord0 = vertex.texcoord[0];\
  7. ATTRIB iTexCoord1 = vertex.texcoord[1];\
  8. ATTRIB iTexCoord2 = vertex.texcoord[2];\
  9. ATTRIB iTexCoord3 = vertex.texcoord[3];\
  10. ATTRIB coordS  = vertex.attrib[12];\
  11. ATTRIB coordT  = vertex.attrib[13];\
  12. PARAM  lightPos  = state.light[0].position;\ #pos. lumiere
  13. PARAM  eyePos      = state.light[1].position;\ #pos. observateur
  14. TEMP  halfVector, vertexToLight, vertexToEye;\
  15. OUTPUT oColor  = result.color;\
  16. OUTPUT oTexCoord0 = result.texcoord[0];\
  17. OUTPUT oTexCoord1 = result.texcoord[1];\
  18. OUTPUT oTexCoord2 = result.texcoord[2];\
  19. OUTPUT oTexCoord3 = result.texcoord[3];\
  20. \
  21. # calcul du vecteur L(lumiere) \n\
  22. SUB vertexToLight, lightPos, iPos;\
  23. DP3  vertexToLight.w, vertexToLight, vertexToLight;\
  24. RSQ  vertexToLight.w, vertexToLight.w;\
  25. MUL  vertexToLight.xyz, vertexToLight.w, vertexToLight;\
  26. \
  27. # calcul du vecteur E(vue) \n\
  28. SUB vertexToEye, eyePos, iPos;\
  29. DP3  vertexToEye.w, vertexToEye, vertexToEye;\
  30. RSQ  vertexToEye.w, vertexToEye.w;\
  31. MUL  vertexToEye.xyz, vertexToEye.w, vertexToEye;\
  32. \
  33. # calcul du vecteur H(demi) \n\
  34. ADD halfVector, vertexToLight, vertexToEye;\
  35. \
  36. # calcul des coordonnees de textures du cubeMap\n\
  37. DP3 oTexCoord0.x, coordS, halfVector;\
  38. DP3 oTexCoord0.y, coordT, halfVector;\
  39. DP3 oTexCoord0.z, iNormal, halfVector;\
  40. \
  41. MOV  oColor, iColor;\
  42. MOV oTexCoord1, iTexCoord1;\
  43. MOV oTexCoord2, iTexCoord2;\
  44. MOV oTexCoord3, iTexCoord3;\
  45. END";


l'unité 0 contient le cubemap normalisant, la 1 la normal map, la 2 rien, la 3 la texture de base.
Comme tu vois, je normalise mes vecteur vue et lumière avant de les additionner et de projeter le résultat sur la base de chaque vertex. Et cette projection est elle même normalisée par le cubemap puis interpolée en chaque pixel.
Je ne saisis pas où pour survenir la dénormalisation.
 
Autrement, je préférerais autant que possible trouver une solution qui se passe de fragment program, histoire de rester compatible avec les nv20/r200.
 
Ca te dit quelque chose ?

mood
Publicité
Posté le 10-10-2004 à 16:05:35  profilanswer
 

n°869486
john_john
Posté le 10-10-2004 à 16:16:33  profilanswer
 

La version linux ? ouaip je peux la mettre en ligne aussi, mais je ne l'ai jamais testée qu'avec ma configuration. Je n'assurerai rien de son fonctionnement sur une autre configuration, notamment à base de geforce (à une époque j'ai eu des soucis assez pénibles de compilation avec des bibliothèques nvidia sous linux et je me suis depuis détourné des tests sur ce système)
 
Ceci dit, elle est strictement identique à la version windows, les perf en moins tout de même (pilote ati oblige, j'ai presque 40% de fps en moins) Alors je prendrai un peu de temps pour la préparer mais il faudra me promettre que votre linux est correctement configuré et possède les bons pilotes opengl propriétaire.
Promis ? On lève le doigt svp.
Bon ok.

n°869493
WhatDe
Posté le 10-10-2004 à 16:31:34  profilanswer
 

john_john a écrit :

La version linux ? ouaip je peux la mettre en ligne aussi, mais je ne l'ai jamais testée qu'avec ma configuration. Je n'assurerai rien de son fonctionnement sur une autre configuration, notamment à base de geforce (à une époque j'ai eu des soucis assez pénibles de compilation avec des bibliothèques nvidia sous linux et je me suis depuis détourné des tests sur ce système)
 
Ceci dit, elle est strictement identique à la version windows, les perf en moins tout de même (pilote ati oblige, j'ai presque 40% de fps en moins) Alors je prendrai un peu de temps pour la préparer mais il faudra me promettre que votre linux est correctement configuré et possède les bons pilotes opengl propriétaire.
Promis ? On lève le doigt svp.
Bon ok.


Je la veut aussi  :D  
L'autre jour j'ai du rebooter rien que pour tester ton jeu de la mort  [:airforceone]

n°869510
bjone
Insert booze to continue
Posté le 10-10-2004 à 17:06:50  profilanswer
 

john_john a écrit :

Voici le programme qui s'occupe de l'effet spéculaire de la route:

Code :
  1. "!!ARBvp1.0\
  2. OPTION ARB_position_invariant;\
  3. ATTRIB iPos             = vertex.position;\
  4. ATTRIB iColor         = vertex.color;\
  5. ATTRIB iNormal          = vertex.normal;\
  6. ATTRIB iTexCoord0 = vertex.texcoord[0];\
  7. ATTRIB iTexCoord1 = vertex.texcoord[1];\
  8. ATTRIB iTexCoord2 = vertex.texcoord[2];\
  9. ATTRIB iTexCoord3 = vertex.texcoord[3];\
  10. ATTRIB coordS  = vertex.attrib[12];\
  11. ATTRIB coordT  = vertex.attrib[13];\
  12. PARAM  lightPos  = state.light[0].position;\ #pos. lumiere
  13. PARAM  eyePos      = state.light[1].position;\ #pos. observateur
  14. TEMP  halfVector, vertexToLight, vertexToEye;\
  15. OUTPUT oColor  = result.color;\
  16. OUTPUT oTexCoord0 = result.texcoord[0];\
  17. OUTPUT oTexCoord1 = result.texcoord[1];\
  18. OUTPUT oTexCoord2 = result.texcoord[2];\
  19. OUTPUT oTexCoord3 = result.texcoord[3];\
  20. \
  21. # calcul du vecteur L(lumiere) \n\
  22. SUB vertexToLight, lightPos, iPos;\
  23. DP3  vertexToLight.w, vertexToLight, vertexToLight;\
  24. RSQ  vertexToLight.w, vertexToLight.w;\
  25. MUL  vertexToLight.xyz, vertexToLight.w, vertexToLight;\
  26. \
  27. # calcul du vecteur E(vue) \n\
  28. SUB vertexToEye, eyePos, iPos;\
  29. DP3  vertexToEye.w, vertexToEye, vertexToEye;\
  30. RSQ  vertexToEye.w, vertexToEye.w;\
  31. MUL  vertexToEye.xyz, vertexToEye.w, vertexToEye;\
  32. \
  33. # calcul du vecteur H(demi) \n\
  34. ADD halfVector, vertexToLight, vertexToEye;\
  35. \
  36. # calcul des coordonnees de textures du cubeMap\n\
  37. DP3 oTexCoord0.x, coordS, halfVector;\
  38. DP3 oTexCoord0.y, coordT, halfVector;\
  39. DP3 oTexCoord0.z, iNormal, halfVector;\
  40. \
  41. MOV  oColor, iColor;\
  42. MOV oTexCoord1, iTexCoord1;\
  43. MOV oTexCoord2, iTexCoord2;\
  44. MOV oTexCoord3, iTexCoord3;\
  45. END";


l'unité 0 contient le cubemap normalisant, la 1 la normal map, la 2 rien, la 3 la texture de base.
Comme tu vois, je normalise mes vecteur vue et lumière avant de les additionner et de projeter le résultat sur la base de chaque vertex. Et cette projection est elle même normalisée par le cubemap puis interpolée en chaque pixel.
Je ne saisis pas où pour survenir la dénormalisation.
 
Autrement, je préférerais autant que possible trouver une solution qui se passe de fragment program, histoire de rester compatible avec les nv20/r200.
 
Ca te dit quelque chose ?


 
bah, mais c'est pas du bump que tu fais, c'est de l'éclairage par vertex, et non par pixel. (déjà)
 
donc oui tu te retrouves avec les défauts de l'éclairage par vertex. (si gros triangle, spéculaire un peu cracra)

n°869630
Evadream -​jbd-
Posté le 10-10-2004 à 20:00:37  profilanswer
 

Intéressé par la version Linux :) Pilote nvidia / ti4200 ok. !

n°869672
john_john
Posté le 10-10-2004 à 21:23:54  profilanswer
 

Rôôh lui... même  que si d'abord ! C'est peut être pas de L'éclairage à 100% par pixel, mais c'est quand même du bump dot3 par pixel. Actuellement les fragment program me servent à limiter à une seule passe le dessin de tous les objets et à paramétrer finement les équations de blending. Sur les nv20/r200 je suis obligé d'effectuer deux passes et de m'en remettre aux fonctions de blending génériques.
L'effet est moins joli et moins performant mais globalement équivalent.
Maintenant, si j'utilise des fp plus complexes pour un éclairage à 100% par pixel, je casse cette équivalence et me voilà bien embêté. Mais c'est peut-être la seule solution qui me permettra un effet spéculaire correct sur la route.
 
Ceci dit, je connais bien les limitations de l'éclairage par vertex, mais le cubemap en pallie beaucoup. Pas toutes malheureusement. Damned.
 
Pour la version linux, please un peu de patience siouplait, j'essaierai de la livrer dans la semaine. Merci pour les encouragements !

n°869787
bjone
Insert booze to continue
Posté le 11-10-2004 à 02:50:49  profilanswer
 

:D c'était histoire de faire mon relou ;)
 
edit: en fait c'est juste que tu calcules le halfway par vertex, et non par pixel.
 
ça doit être ça qui doit boussiller le comportement du spéculaire.
normalement il faut faire évoluer (interpoler) séparément le vecteur vue et lumière, et faire le halfway par pixel (et faire le dot3 avec la normal map avec ce halfway).
 
ça pourrait déjà aider à stabiliser le spéculaire. (après comme j'ai dit, l'idéal, c'est de calculer le vecteur vue et lumière par pixel).


Message édité par bjone le 11-10-2004 à 03:00:15
n°871006
john_john
Posté le 11-10-2004 à 23:18:15  profilanswer
 

Par Ahoura Mazhda ! La version linux est disponible sur mon site.
Soyez indulgents, pitié, je ne l'ai jamais testée que sur ma machine. Ceci dit elle partage 98% de son code avec la version windows, elle a les mêmes exigences et effectue les mêmes tests de compatibilité au démarrage. Mais ne vous fâchez-pas si ça plante dès le début, pitié, ce n'est qu'une version de test.
 
"NON pas de place pour les faibles et les pleurnichards, tu vas payer comme les autres !"
"argll"
 
http://perso.wanadoo.fr/mezzoban

n°871010
john_john
Posté le 11-10-2004 à 23:21:53  profilanswer
 

OUILLEOUILLE, j'ai oublié de prévenir, il faut avoir compilé et installé la bibliothèque glut !!!!

n°871024
Evadream -​jbd-
Posté le 11-10-2004 à 23:45:50  profilanswer
 

Yes :)
 
Je viens de tester, mais j'ai un petit soucis au lancement  
 


$ ./mezzoban
EXTENSIONS: Support de GL_ARB_multitexture
./mezzoban: error while loading shared libraries: ./mezzoban: undefined symbol: glXGetProcAddress


 
Je tourne avec un 2.6.8.1 et les derniers nvidia 6111, Quake et UT tournent sans soucis.  
 
Je suis pas très au courant, mais peut-être qu'il vaut peut-être mieux utiliser glXGetProcAdressARB ?
 


$ readelf -s /usr/lib/libGL.so | grep -i glXGetProcAddress
  1560: 00028814   111 FUNC    GLOBAL DEFAULT    7 glXGetProcAddressARB
$


 
Edit : c'est peut etre spécifique au driver nvidia ?


---------------
Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live - Martin Golding
mood
Publicité
Posté le 11-10-2004 à 23:45:50  profilanswer
 

n°871097
john_john
Posté le 12-10-2004 à 08:14:02  profilanswer
 

Ay ! C'était peut-être bien ça mon ancien problème avec les drivers nvidia, Bon, sympa d'avoir payé les pots cassés, je vais tester une solution, peut-être ce soir. Je te tiens au courant.

n°871140
Evadream -​jbd-
Posté le 12-10-2004 à 09:57:35  profilanswer
 

Super :) @+

n°871144
WhatDe
Posté le 12-10-2004 à 10:02:54  profilanswer
 

Aucun problème pour moi elle tourne parfait sous linux :jap:

n°871160
Evadream -​jbd-
Posté le 12-10-2004 à 10:30:21  profilanswer
 

Ok, le problème vient peut-être de moi alors. Tu as quel drivers ?

n°871168
WhatDe
Posté le 12-10-2004 à 10:41:59  profilanswer
 

J'ai une ATI :D

n°871295
Evadream -​jbd-
Posté le 12-10-2004 à 12:29:14  profilanswer
 

Ok ;)

n°874729
john_john
Posté le 16-10-2004 à 12:43:09  profilanswer
 

Argl, un petite message rapide pour gueuler contre le pilote ATI sous linux: "GRUMF!" Impossible d'utiliser glXGetProcAddressARB au lieu de glXGetProcAddress. Y-a-t'il quelqu'un dans l'assemblée qui a déjà réussi ce tour de force ? Moi, même si la fonction est présente dans glx.h et dans libGL.so, il refuse systématiquement de la lier à la compilation en prétextant qu'il ne la trouve pas. Je ne crois pas avoir de problème de conflit (ça serait bien la première fois), et je viens de mettre les tout derniers pilotes en vain.
Il y a un truc secret à savoir sur glXGetProcAddressARB dans les pilotes ati ? Pourquoi les pilotes nvidia refusent glXGetProcAddress ? Pourquoi le nutela est-il si bon ?
C'est précisément ce problème qui m'avait stoppé il y a quelques mois dans mes tests sous linux (celui concernant glXGetProcAddressARB, pas le nutela).
 
La france a besoin de votre aide !

n°874762
Evadream -​jbd-
Posté le 16-10-2004 à 14:01:09  profilanswer
 

Regarde peut-être dans le code source de SDL pour voir comment il s'en sorte avec SDL_GL_GetProcAddress :
 
http://sdldoc.csn.ul.ie/sdlglgetprocaddress.php

mood
Publicité
Posté le   profilanswer
 

 Page :   1  2
Page Suivante

Aller à :
Ajouter une réponse
 

Sujets relatifs
[recherche] Editeur RTF en applet java (online)recherche webmaster
recherche dans accès[BATCH] faire une recherche
recherche de filtrage dans une phraseIntégrer un utilitaire de recherche à un DVD de données
Tri et recherche[Recherche] Script php d'upload-effacer fichiers
Recherche dans un result MySQLRecherche une fonction [Réglé]
Plus de sujets relatifs à : [opengl] à la recherche des fragment program sur geforce3/4


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR