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

  FORUM HardWare.fr
  Programmation

  [Direct3D] Mélanger les effets DotProduct3 et Texture

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[Direct3D] Mélanger les effets DotProduct3 et Texture

n°119365
Tetragramm​aton IHVH
dieu unique => pensée unique
Posté le 30-03-2002 à 15:15:21  profilanswer
 

Je veux appliquer 2 textures sur mes objets :
* une texture de diffusion
* une texture de bumpmapping en dot-product3
* eclairage dynamique
 
// texture 0 : bump mapping en dotproduct3
lpDevice->SetTextureStageState( 0, D3DTSS_COLOROP,   D3DTOP_DOTPRODUCT3 );
lpDevice->SetTextureStageState( 0, D3DTSS_COLORARG1, D3DTA_TEXTURE );
lpDevice->SetTextureStageState( 0, D3DTSS_COLORARG2, D3DTA_TFACTOR );
lpDevice->SetTextureStageState( 0, D3DTSS_ALPHAOP,   D3DTOP_DISABLE );
lpDevice->SetTextureStageState( 0, D3DTSS_TEXCOORDINDEX, 0 );
// texture 1 : composition avec l'éclairage gouraud  
lpDevice->SetTextureStageState( 1, D3DTSS_COLOROP,   D3DTOP_MODULATE );
lpDevice->SetTextureStageState( 1, D3DTSS_COLORARG1, D3DTA_CURRENT );
lpDevice->SetTextureStageState( 1, D3DTSS_COLORARG2, D3DTA_DIFFUSE );
lpDevice->SetTextureStageState( 1, D3DTSS_ALPHAOP,   D3DTOP_DISABLE );
lpDevice->SetTextureStageState( 1, D3DTSS_TEXCOORDINDEX, 0 );
// texture 2 : texture de diffusion
lpDevice->SetTextureStageState( 2, D3DTSS_COLOROP,   D3DTOP_MODULATE );
lpDevice->SetTextureStageState( 2, D3DTSS_COLORARG1, D3DTA_TEXTURE );
lpDevice->SetTextureStageState( 2, D3DTSS_COLORARG2, D3DTA_CURRENT );
lpDevice->SetTextureStageState( 2, D3DTSS_ALPHAOP,   D3DTOP_DISABLE );
lpDevice->SetTextureStageState( 2, D3DTSS_TEXCOORDINDEX, 0 );
 
=> Et ça sort tout noir.  
 
Si j'enlève le texture n°2, j'ai effectivement la composition du bump et de l'éclairage gouraud.
J'arrive à mapper une texture de diffusion seule sans problème.
 
Je ne comprends pas ce qui manque ??? :??:


---------------
"Dieu a exploité tous nos complexes d'infériorité, en commençant par notre incapacité de croire à notre propre divinité." - Emil Michel Cioran
mood
Publicité
Posté le 30-03-2002 à 15:15:21  profilanswer
 

n°119368
chrisbk
-
Posté le 30-03-2002 à 15:32:47  profilanswer
 

humpf, quoi c'est exactement ta carte ?
 
truc tout con, t'as essaye avec l'utilitaire de dx ? (mfctex je crois)
 
ca te permettrais de voir si c toi qui a bricoler dans ton code o un manque de caps qui fait que ca passe pas

n°119370
Tetragramm​aton IHVH
dieu unique => pensée unique
Posté le 30-03-2002 à 15:59:05  profilanswer
 

chrisbk a écrit a écrit :

humpf, quoi c'est exactement ta carte ?
 
truc tout con, t'as essaye avec l'utilitaire de dx ? (mfctex je crois)
 
ca te permettrais de voir si c toi qui a bricoler dans ton code o un manque de caps qui fait que ca passe pas  




 
C'est un geforce2 mx.
J'ai essayé MFCtex (l'utilitaire qui permet de combiner les textures sur un cube qui tourne, non ?) mais il a aucun interet avec le dot-product3 puisqu'il faut fournir un D3DRS_TEXTUREFACTOR.


---------------
"Dieu a exploité tous nos complexes d'infériorité, en commençant par notre incapacité de croire à notre propre divinité." - Emil Michel Cioran
n°119372
chrisbk
-
Posté le 30-03-2002 à 16:19:42  profilanswer
 

Tetragrammaton IHVH a écrit a écrit :

 
 
C'est un geforce2 mx.
J'ai essayé MFCtex (l'utilitaire qui permet de combiner les textures sur un cube qui tourne, non ?) mais il a aucun interet avec le dot-product3 puisqu'il faut fournir un D3DRS_TEXTUREFACTOR.  




 
ben ca tu peux, dans colorArg2 tu choisis 'factor' et tu met ton facteur (quoique la vu que c du test on s'en fous un peu) dans le truc 'blend'
 
 
edit : si tu fais :
 
 
DWORD dwNumPasses;
HRESULT hr =  pd3dDevice->ValidateDevice( &dwNumPasses );
 
 
qu'est ce que ca te donne ?

 

[jfdsdjhfuetppo]--Message édité par chrisbk--[/jfdsdjhfuetppo]

n°119373
bjone
Insert booze to continue
Posté le 30-03-2002 à 16:19:47  profilanswer
 

ptet un problème de coordonnées avec lpDevice->SetTextureStageState( 2, D3DTSS_TEXCOORDINDEX, 0 );
:??:

n°119379
Tetragramm​aton IHVH
dieu unique => pensée unique
Posté le 30-03-2002 à 17:00:25  profilanswer
 

bjone a écrit a écrit :

ptet un problème de coordonnées avec lpDevice->SetTextureStageState( 2, D3DTSS_TEXCOORDINDEX, 0 );
:??:  




 
Non, il n'y a pas de problème, j'utilise les mêmes coordonnées (u,v) pour toutes les textures.
 
Sinon quand je fais ValidateDevice, j'obtiens un DRIVERINTERNALERROR :( Fait chier.
 
Bon ben merci pour l'aide, j'attendrais d'avoir une meilleure CG.


---------------
"Dieu a exploité tous nos complexes d'infériorité, en commençant par notre incapacité de croire à notre propre divinité." - Emil Michel Cioran
n°119472
LeGreg
Posté le 31-03-2002 à 03:19:09  profilanswer
 

Tetragrammaton IHVH a écrit a écrit :

 
Bon ben merci pour l'aide, j'attendrais d'avoir une meilleure CG.



 
de mon temps on faisait tout en plusieurs passes.
mais ce temps est revolu apparemment :(.
 
LEGREG

n°119473
LeGreg
Posté le 31-03-2002 à 03:22:42  profilanswer
 

exemple diffuse + lightmap en deux passes:
je trace ma geometrie avec texture lightmap.
je trace par dessus en mode "modulated2x"
ma geometrie avec texture diffuse.
 
A+
LEGREG

n°119501
bjone
Insert booze to continue
Posté le 31-03-2002 à 12:38:35  profilanswer
 

et la deuxième texture si tu la fous dans le stage 1 ou lieu du 2 ?

n°119521
Tetragramm​aton IHVH
dieu unique => pensée unique
Posté le 31-03-2002 à 14:35:57  profilanswer
 

bjone a écrit a écrit :

et la deuxième texture si tu la fous dans le stage 1 ou lieu du 2 ?  




 
Ca fait pareil. Visiblement la geForce2 mx ne peut bouffer que 2 textures par passe. Finalement je reste avec une texture de diffuse et une texture de lightmap. Je rajouterai l'EBM pour les cartes à 4 texels par passe (GeForce3 ?)
 
Justement, j'ai un nouveau problème : Le format de fichier .X n'enregistre qu'une seule texture. C'est un peu moyen ça.


---------------
"Dieu a exploité tous nos complexes d'infériorité, en commençant par notre incapacité de croire à notre propre divinité." - Emil Michel Cioran
mood
Publicité
Posté le 31-03-2002 à 14:35:57  profilanswer
 

n°119522
LeGreg
Posté le 31-03-2002 à 14:40:07  profilanswer
 

Tetragrammaton IHVH a écrit a écrit :

 
Ca fait pareil. Visiblement la geForce2 mx ne peut bouffer que 2 textures par passe. Finalement je reste avec une texture de diffuse et une texture de lightmap. Je rajouterai l'EBM pour les cartes à 4 texels par passe (GeForce3 ?)




Je me repete mais as-tu pense que tu pouvais faire plusieurs
passes??
(et avec les D3DXTECHNIQUE ca est devenu enfantin de  
faire plusieurs techniques en fonction du hardware)
 
LEGREG

n°119706
bjone
Insert booze to continue
Posté le 01-04-2002 à 00:32:38  profilanswer
 

Tetragrammaton IHVH a écrit a écrit :

 
 
Ca fait pareil. Visiblement la geForce2 mx ne peut bouffer que 2 textures par passe. Finalement je reste avec une texture de diffuse et une texture de lightmap. Je rajouterai l'EBM pour les cartes à 4 texels par passe (GeForce3 ?)
 
Justement, j'ai un nouveau problème : Le format de fichier .X n'enregistre qu'une seule texture. C'est un peu moyen ça.  




 
bin normalement faire du dot3 + texture ça devrait passer sur la gf 2 mx...

n°119811
Tetragramm​aton IHVH
dieu unique => pensée unique
Posté le 01-04-2002 à 13:12:56  profilanswer
 

bjone a écrit a écrit :

 
 
bin normalement faire du dot3 + texture ça devrait passer sur la gf 2 mx...  




 
Effectivement, ça passe mais on ne peut plus tenir compte de la couleur de diffusion.  
 
Sinon, concernant le fait que les fichier X ne peuvent enregistrer qu'une seule texture, il va falloir que j'utilise un autre format de stockage ou non ?


---------------
"Dieu a exploité tous nos complexes d'infériorité, en commençant par notre incapacité de croire à notre propre divinité." - Emil Michel Cioran
n°119848
bjone
Insert booze to continue
Posté le 01-04-2002 à 16:20:20  profilanswer
 

bin je sais poa, mais moa je préfère mon propre format de fichier, passke le .X pour le maitriser....

n°119859
chrisbk
-
Posté le 01-04-2002 à 16:55:27  profilanswer
 

je suis de l'avis de bjone, c plus simple de faire le sien (a mon avis) . Genre faire son exporteur max . bon, au début c un peu la misere mais une fois que tu vois comment ca marche, ca roule pas trop mal

n°119889
LeGreg
Posté le 01-04-2002 à 18:10:54  profilanswer
 

ai-je seulement l'impression de parler dans le vide :sarcastic: ?
 
LEGREG

n°119896
sombresong​e
Posté le 01-04-2002 à 18:21:48  profilanswer
 

Ya que les radeon qui font 3 textures par passe. Les carte à base de GF2 et 3 font 2 textures par passe. Il faut pas confondre le nombre de pixel pipeline et le nombre de texture par pipeline.

n°119905
bjone
Insert booze to continue
Posté le 01-04-2002 à 18:36:52  profilanswer
 

et le nombre de stages :D
 
non, legreg tu n'as pas parlé dans le vide, c clair qu'avec les fichiers de technique, c assez facile de couvrir plusieures confihuration matérielles...
 
mais la dans le premier code y'a 2 textures dot3 & texture normale, et ça devrait passer une gf 2 mx (le diffuse étant bien sûr le diffuse calculé par le moteur T&L par vertex on est d'accord ?)

n°120247
Tetragramm​aton IHVH
dieu unique => pensée unique
Posté le 02-04-2002 à 14:55:17  profilanswer
 

bjone a écrit a écrit :

et le nombre de stages :D
 
non, legreg tu n'as pas parlé dans le vide, c clair qu'avec les fichiers de technique, c assez facile de couvrir plusieures confihuration matérielles...
 
mais la dans le premier code y'a 2 textures dot3 & texture normale, et ça devrait passer une gf 2 mx (le diffuse étant bien sûr le diffuse calculé par le moteur T&L par vertex on est d'accord ?)  




 
C'était aussi mon idée mais bon, l'affaire est entendu. Legreg, non tu ne parles pas dans le vide, tu es juste hors-sujet, je voulais éviter de te le dire mais tant pis...
 
Pour le format des x files, je vais faire comme vous me le conseillez : faire un format propriétaire.

n°120274
LeGreg
Posté le 02-04-2002 à 15:22:44  profilanswer
 

Tetragrammaton IHVH a écrit a écrit :

 
C'était aussi mon idée mais bon, l'affaire est entendu. Legreg, non tu ne parles pas dans le vide, tu es juste hors-sujet, je voulais éviter de te le dire mais tant pis...




 
hors sujet? il ne me semble pas au contraire.
 
Bon on la refait:
 
<toi> Bonjour je voudrais texturer des objets en tenant
compte de trois choses,  
1 la valeur du produit scalaire d'une texture de normales et d'un vecteur eclairement (passee en Texture Factor)
2 la valeur de diffuse calculee par le moteur de Lighting de D3D
3 la valeur de diffuse tiree d'une texture.
Ca marche si je combine 1 et 2, ca marche avec 3 seul mais quand je fais les trois en meme temps ca marche pas :( comment je fais?
 
<moi> si tu n'y arrives pas en une seule passe tu le fais en plusieurs passes.  
premiere passe: tu rends ton objet avec le bump mapping et l'eclairage de Gouraud, que tu traces en opaque.
deuxieme passe, tu specifies un mode de blending multiplicatif
(dstcolor*srccolor + zero * dstcolor)
et tu traces ton objet avec la texture de diffusion seule par dessus. Si ton objet est trop sombre avec la deuxieme passe,
tu peux tracer un terme d'ambiant. Ou utiliser un blend Modulate2x a la place d'un blend Modulate simple.
 
<toi> tu es hors sujet..
 
<moi> tiens tu savais qu'on pouvait rendre un objet bumpmappe en dotproduct3 avec plusieurs sources de lumieres? (la c'est hors sujet)
 
LEGREG

n°120363
Tetragramm​aton IHVH
dieu unique =&gt; pensée unique
Posté le 02-04-2002 à 16:42:39  profilanswer
 

Si j'avais voulu faire du multipass, la question ne posait plus d'où le hors sujet.

n°120420
LeGreg
Posté le 02-04-2002 à 17:26:35  profilanswer
 

my fault then :(
 
ceci dit, les passes multiples n'ont rien d'evident (bien que je ne connaisse pas ton niveau d'utilisation de DirectX)
et tu n'as precise nulle part que tu etais limité a une seule passe.
 
A+
LEGREG

mood
Publicité
Posté le   profilanswer
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation

  [Direct3D] Mélanger les effets DotProduct3 et Texture

 

Sujets relatifs
[DirectX] mélanger 2D et 3D[C++ / DirectX 8] comment vs avez appris Direct3D
[C++ / D3D8] Rendu dans une texture,Pourquoi ça foire une fois sur 2 ?[vc++] Melanger macros dans un Add-ins
[C/C++/Algo] Programmation effets sonores[C][OpenGL] Texture ...
[Direct3D] Besoin de quelques conseils d'utilisateurs aguerris[DirectX] Hier soir je me suis mis à Direct3D...
questions aux grosses bêtes en DirectDraw, Direct3D ou Opengl !!!!Quel est le format idéal de texture pour réaliser un jeu en d3d ?
Plus de sujets relatifs à : [Direct3D] Mélanger les effets DotProduct3 et Texture


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