Bump mapping [Résolu]

Signaler
Messages postés
573
Date d'inscription
samedi 16 novembre 2002
Statut
Membre
Dernière intervention
9 avril 2008
-
Messages postés
1267
Date d'inscription
mercredi 1 janvier 2003
Statut
Membre
Dernière intervention
28 février 2007
-
Bonjour,

Je m'interesse au bump mapping mais sur le net, j'ai vu qu'il existe des tonnes de bump mapping différents.

http://www.firingsquad.com/hardware/geforce_fx_half-life2/default.asp

Perso je ne vois que 2 types des bump mapping: le static et le dynamique.
Pour le static, la texture est générée en fonction d'une carte de relief à l'initialisation et on ne tient pas compte des variations de la lumière.
Pour le dynamique, on recalcule plus souvent la texture en fonction de l'éclairage et de la position de l'objet.

J'aimerais savoir si la carte graphique peut gerer sans aide du CPU le bump mapping que j'appelle dynamique et comment avec DirectX9. On donne la texture de base, la texture du relief puis la carte se débrouille toute seule.

J'aimerais en fait connaitre la définition et la traduction de bump mapping car j'ai lu sur internet que grace au bump mapping, on peut simuler le reflet sur l'eau.

Merci !

9 réponses

Messages postés
3011
Date d'inscription
jeudi 26 septembre 2002
Statut
Membre
Dernière intervention
27 novembre 2004
8
ben le bump mapping static, c'est tout est rien, on la tous fais sans savoir que ca avait l'honneur de porté ce nom, a par ca, ca vaut rien

les diffirentes sortes de bumpmapping c'est dynamique, calculé a chaque rendu, et la ya beaucoup de techniques, tirant plus ou moins partie de la cartes graphique

par exemple celui que matrox avais presenté consistait a faire le blending entre la texture et cette meme texture en niveau de gris et décalée en fonction du vecteur lumiere et visuel (le truc tou pourri)

mais le vrai principe du bumpmapping c'est de calculé l'éclairage (le vecteur normal donc) pour chaque pixel de la texture en fonction, toujours de la direction de la lumirere par rapport à l'angle de vue, et d'une valeur de relief pour chaque pixel donnée par le bumpmap correspondant a la carte "relief" de la texture.
cette technique est supporté en hard depuis dx5 je crois, c'est le dot product (a verifier :) ) faut chercher de se coter pour faire ca en hard, pour specifier la normal de chaque pixel

on peut aussi faire un shader pour ca mais c'est se compliquer la vie vu que le dot product est un pixel shader preprogrammer
Messages postés
101
Date d'inscription
vendredi 15 février 2002
Statut
Membre
Dernière intervention
6 août 2007

dot product = produit scalaire ...
Messages postés
3011
Date d'inscription
jeudi 26 septembre 2002
Statut
Membre
Dernière intervention
27 novembre 2004
8
merci, apres verification l'appelation de microsoft est plutot "Environment Mapped Bump Mapping "
Messages postés
573
Date d'inscription
samedi 16 novembre 2002
Statut
Membre
Dernière intervention
9 avril 2008
1
Merci beaucoup !

Je viens d'acheter une ATI Radeon 9600 Pro ( Pixel and Vertex Shader 2.0) pour remplacer ma pauvre GeForce2 (AGP 4X).
Je vais pouvoir me lancer dans les shaders. J'ai télécharger pas mal d'exemple. L'assembleur ne me fait pas peur puisque j'en ai déja fait pas mal auparavant.

J'avais déja entendu parler de l' Environment Mapped Bump Mapping mais je ne savais pas ce que c'était, merci !

Je vais essayer de faire quelques pixels shader pour voir si je peux me passer des trop nombreuses fontions DirectX.

On m'a dit que le dernier Unreal utilise une technique qui va au delà du Bump Mapping: normalement, lorsque la texture est vue de quasi-profil, on est censé ne plus percevoir le relief.
Mais eux rajoutent des triangles en fontion du "relief map" (normales orientées vers nous), ce qui permet de recréer une illlusion de relief.

Merci pour ces réponses !
Messages postés
3011
Date d'inscription
jeudi 26 septembre 2002
Statut
Membre
Dernière intervention
27 novembre 2004
8
ce qui serais interessant, c'est de se mettre au cg, le langage inventé par nvidia pour programmer les shaders beaucoup plus facilement

comme son nom l'indique, la synthaxe est proche du c (Cg = C graphics ) et ca evite de se taper du code rebarbatif en assembleur

c'est nvidia mais ca definie un standard de programmation des shaders, donc il me semble que c'est tout a fais possible sur les cartes ati, suffit de telecharger le sdk, apres j'en sais pas plus mais ca doit vraiment valoir le coup, surtout si tu veux t'amuser avec ta carte graphique

regarde des exemples de code en cg pour voir a quel point ca simplifie les choses
Messages postés
1267
Date d'inscription
mercredi 1 janvier 2003
Statut
Membre
Dernière intervention
28 février 2007
3
Mouiiiiiii c'est pas juste moi j'peux pas faire de shaders sur ma carte graphique de meeerde :'(

Pour le coup d'Unreal je savais pas, c'est génial ce truc ! Ils ont donné un nom à la technique?

Aussi une question, c'est possible de faire du bump mapping sans avoir de shaders je suppose? Même sur une ATI Rage 128?

---------------------------------------------------------
Patience et longueur de temps font plus que force ni que rage....
Coucous flingueurs 3D : http://www.freewebs.com/cf3d/
Messages postés
3011
Date d'inscription
jeudi 26 septembre 2002
Statut
Membre
Dernière intervention
27 novembre 2004
8
oui,

c'est a verifier mais il me semble que "Environment Mapped Bump Mapping " fais partie de la specification ms depuis dx5, le rage 128 est compatible dx6 ou dx7 il me semble (a verifier aussi)

sinon tu as quoi comme extensions opengl sur ta carte ?
Messages postés
573
Date d'inscription
samedi 16 novembre 2002
Statut
Membre
Dernière intervention
9 avril 2008
1
Funto66 > Bien sur qu'on peut faire du bump mapping sans utiliser la carte graphique (on peut meme faire un moteur 3D complet sans carte graphique).
Si ta carte 3D ne permet pas de faire le bump mapping, tu peux assez facilement en faire un qui sera par contre calculé par le CPU.

Je n'ai pas mes sources sur ce PC mais la fontion LockRect de directX permet d'avoir accès au contenu des surface.
Une autre fonction, GetSurfaceLevel, permet de lier une surface à une texture (quand tu changes la surface, la texture change).
Evidemment il faut analyser soi-même le "relief map", etc... mais ca marche forcement. J'ai pas essayé le bump mapping mais avec les fonctions ci-dessus, on peut le faire.

djl > C'est une bonne idée comme langage le C pour les cartes vidéo. Jette un oeil au software ShaderWorks. Sur ce PC, il n'y a pas de shader (ce PC n'est pas le mien donc n'a pas le Radeon 9600Pro, par contre il a internet et il est à Paris...) donc je ne peux rien tester.
Je ferais des essais quand je serais sur mon PC.
Messages postés
1267
Date d'inscription
mercredi 1 janvier 2003
Statut
Membre
Dernière intervention
28 février 2007
3
Comme extensions j'ai le multitexturing, une extension proprio d'ATI pour les vertex shaders (la 1ère version je pense...)...bref tout ce qu'il y a jusqu'à OpenGL 1.2.

Galmiza >> de toutes façons j'utilise OpenGL donc les fonctions DX...:S

Enfin dans tous les cas faut changer de PC :(

---------------------------------------------------------
Patience et longueur de temps font plus que force ni que rage....
Coucous flingueurs 3D : http://www.freewebs.com/cf3d/