Probleme Shader hlsl hook directX 9

heyveno Messages postés 2 Date d'inscription   Statut Membre Dernière intervention   -  

Salut à tous,

Je travaille sur un projet de proxy/hook Direct3D9 pour animer la végétation avec un shader personnalisé. J’ai réussi à identifier la texture d’herbe, à extraire les vertex buffers et à confirmer un format plausible de sommets. Au départ, je pensais que le format était 0x112 (POSITION + COLOR0 + TEXCOORD0). J’ai donc écrit un shader simple qui compile et s’applique correctement. Pourtant, aucune animation n’apparaît, même avec des décalages exagérés.

En testant différents shaders, j’ai découvert quelque chose d’important. Avec le shader basé sur 0x112, rien ne s’affiche. Avec un shader basé sur 0x252 (POSITION + NORMAL + TEXCOORD0), la végétation s’affiche bien, et l’animation fonctionne. Mais dans ce cas, les couleurs sont perdues : tout est rendu en noir ou en gris.

Cela me fait penser que le FVF logué (0x112) est trompeur et ne correspond pas vraiment à ce que le moteur envoie au moment du draw. Le format réel semble bien être du type POSITION + NORMAL + TEXCOORD0, mais dans ce cas je ne récupère pas la couleur/diffuse.

C’est là que je bloque. J’aimerais comprendre pourquoi je n’ai pas de couleur avec ce shader. Est-ce que le moteur passe la couleur par un autre canal ? Est-ce que je dois combiner NORMAL et COLOR dans la déclaration, ou utiliser un registre particulier pour récupérer la valeur diffuse ?

Si quelqu’un a déjà rencontré ce genre de cas ou connaît une méthode fiable pour capter la couleur sur une géométrie initialement prévue pour du pipeline fixe, je serais preneur de vos conseils.

je peux fournir un lien vers le depot github au besoin.

Merci d’avance pour votre aide !

A voir également: