|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||||
|
Membre Expert
![]() ![]() |
Bonjour !
Sur mon petit Castor3D, je fignole l'implémentation du rendu via Direct3D 9. Je finalise les shaders et pour cela j'ai traduit en HLSL le shader de Relief mapping que j'ai en GLSL, et qui ne fonctionne pas trop mal. Cependant je remarque quelque chose qui me chiffonne : sur Direct3D le rendu de la lumière spéculaire est pixellisé contrairement à OpenGl où il est bien lisse. Je vous mets 2 copies d'écrans afin que vous voyiez où je veux en venir (il faut regarder les reflets spéculaires en rouge/rose) Rendu OpenGL : ![]() Rendu Direct3D 9 : ![]() Savez-vous d'où ça peut provenir ? (je ne suis pas très calé en Direct3D, j'ai peut être oublié quelque chose à faire, notamment au niveau de la création des textures) Je vous mets les codes des shaders GLSL et HLSL qui ont servi pour ces rendus : GLSL Code :
Code :
__________________
Si vous ne trouvez plus rien, cherchez autre chose... Chef de projet (et unique exécutant pour l'instant) pour Castor 3D |
||||
|
00
|
|
|
#2 |
|
Expert Confirmé Sénior
![]() Développeur informatique Inscription : novembre 2006 Messages : 4 445 ![]() |
Salut euhhh ou je vois mal ou je suis neuneu mais je ne vois pas de différences notoires
![]() Peut-être que cela vient de la fonction DXLoadTextureFromFile; il faut la paramêtrer de certaines manières ( format ARGB, RGBA ...c'est un peu prise-de-tête il faut l'avouer) |
|
|
01
|
|
|
#3 |
![]() ![]() ![]() Guillaume BelzBiochimiste Inscription : novembre 2008 Messages : 5 318 ![]() |
on voit mieux en faisant un zoom...
__________________
Vous souhaitez rejoindre l'équipe de bénévoles qui fait vivre Developpez (traduction, rédaction, modération) ? Contactez moi par MP. Ma page personnelle avec la liste de mes articles - Mon blog sur le C++, Qt et les GPU. Je suis régulièrement sur le chat pour les questions C++/Qt. Apprendre Qt 5 : vidéos d'installation (YouTube), extraites du livre Créer des applications avec Qt 5. |
|
00
|
|
|
#4 | ||||
|
Membre Expert
![]() ![]() |
Pour le chargement des textures, je vous mets le code en question, je ne me sers pas de DXLoadTextureFromFile car je charge l'image moi-même ailleurs.
Côté Direct3D Code :
Code :
__________________
Si vous ne trouvez plus rien, cherchez autre chose... Chef de projet (et unique exécutant pour l'instant) pour Castor 3D |
||||
|
00
|
|
|
#5 |
|
Membre Expert
![]() ![]() |
Tu n'utilises pas un point filter là où il faudrait un bilinear filter ?
aussi si tu affiches une texture alignée sur les pixels de l'écran à bien faire attention aux conventions différentes d'OpenGL et D3D (un gros piège à noob.. et parfois moins noobs http://developer.nvidia.com/object/M...ls_Pixels.html )
__________________
Mon site web | Mon blog | Mes photos | Groupe USA > BONJOUR, JE SUIS NOUVEAU SUR CE FORUM > presse la touche caps lock, stp > OH.. MERCI C EST BEAUCOUP PLUS FACILE COMME CA |
|
00
|
|
|
#6 |
|
Membre Expert
![]() ![]() |
Pour le filtre, j'utilise bien un linear (j'ai aussi essayé avec anisotropic, mais sans résultat). Pour ma texture, elle est juste mappée sur un cube avec un UV tout con (0 ou 1 en x et en y en fonction du vertex)
__________________
Si vous ne trouvez plus rien, cherchez autre chose... Chef de projet (et unique exécutant pour l'instant) pour Castor 3D |
|
00
|
|
|
#7 | ||
|
Membre confirmé
![]() ![]() Étudiant Inscription : mars 2006 Messages : 116 ![]() |
Est-ce que tu as essayé de forcer le filtre bilinéaire/Trilinéaire dans le shader directement?
Code :
|
||
|
|
00
|
|
|
#9 |
|
Membre Expert
![]() |
C'est clairement un problème de filtre. Si tu regarde en bas a droite de ta texture elle n'est pas lissée de la même façon (je ne parle pas du reflet simplement de la texture). Du coup, le calcul lumineux est bien le même mais dans le cas de directx il n'est pas lissé alors qu'avec opengl il l'est.
|
|
00
|
|
|
#10 |
|
Membre Expert
![]() ![]() |
C'est ce que j'avais remarqué aussi, mais je ne pensais devoir forcer le filtrage dans le shader. Je n'ai pas encore pu tester ça malgré tout (taf, famille, tout ça...)
__________________
Si vous ne trouvez plus rien, cherchez autre chose... Chef de projet (et unique exécutant pour l'instant) pour Castor 3D |
|
00
|
|
|
#11 |
|
Membre Expert
![]() ![]() |
Bon, ben après test, ce n'est toujours pas ça ...
Là je suis perdu, car il me semblait aussi que ça venait du filtre, mais il est linéaire au niveau de la création de la texture, forcé linéaire au niveau du shader, et j'ai toujours le problème ... argh !
__________________
Si vous ne trouvez plus rien, cherchez autre chose... Chef de projet (et unique exécutant pour l'instant) pour Castor 3D |
|
00
|
|
|
#12 |
|
Membre Expert
![]() |
Essaye de faire en sorte de retomber sur le même problème du côté d'OpenGL (dès fois cela permet de trouver le problème et ça solution).
|
|
00
|
|
|
#13 | ||
|
Membre Expert
![]() ![]() |
En fait je n'arrive pas à retomber sur le même problème en OpenGL.
Si je passe en filtre nearest (ou point en Direct3D) je n'ai pas le même rendu qu'actuellement, donc il s'agit d'un problème indépendant du filtre. Par contre je me pose une question con : j'utilise 'tex2Dlod' dans la fonction 'RayIntersectRM' du code HLSL. tex2D ne peut pas être utilisé car j'ai l'erreur suivante : Code :
__________________
Si vous ne trouvez plus rien, cherchez autre chose... Chef de projet (et unique exécutant pour l'instant) pour Castor 3D |
||
|
00
|
Copyright © 2000-2013 - www.developpez.com