website logo
Auteur
avatar
Crisot

Forum » » Création-Développement » » Dungeon Crawler (Odyssey) Os4


Posté : 28-04-2016 19:07 icone du post

Ahhh 1000 excuses, oui oui il n'y a qu'un seul buffer de vertex à afficher. Bien évidement, hors de question d'utiliser un memcpy(), le changement de structure entre source et destination se fait naturellement dans la boucle de transform&lightning!

INPUTformat *input; //(le mesh de base: x/y/z/uv/normal/binormal/tangent)
OUTPUTformat *output; (le buffer qui sera rendu: x/y/z/rgba/uvw)

for i=0 to nombre de vertex

{

output xyz = input xyz transformé

output rgba = éclairage (une petite boucle si plusieurs lumières)

output uvw = input uv

}

Tout connement non? Et au pire si on a plusieurs type de VertexOUTPUT, suffit d'adapter à peine de code pour s'adapter à tous les types.

Ensuite on fait pareil avec les indices pendant la boucle de clipping:

for i=0 to nombre d'indice

{

Si polygon pas clippé on copy les 3 indices de IN à OUT

Si polygon hors écran on ne fait rien

Si polygon à cheval, on créés quelques nouveaux vertex OUT/indice OUT

}


Puis évidement un dernier petit passage sur les vertex pour les transformer à l'écran 2D.



>>> NB: je vois pas pourquoi tu mettais ta couleur RGBA en entrée du lighting puisque elle vient que du materiau et de la VN

Pour précalculer les lumières statiques sur les objets statiques. Aucune raison de recalculer à chaque frame la lumière d'un plafonnier fixe sur un mur. Ainsi dans mon transform&lightning je ne calcule l'éclairage que si l'objet OU la lumière est de type "dynamique (modifable/déplaçable)".

--
AmigaOne X1000 - 2 Go DDR2 - Sapphire R9 280x Toxic - Crucial MX200 500 Go - Alim/Cooling BeQuiet

Message édité par : Crisot / 28-04-2016 19:09
Message édité par : Crisot / 28-04-2016 19:12

Cet article provient de Le site des utilisateurs francophones actuels et futurs d'AmigaOS 4.x
https://amiga-ng.org/viewtopic.php?topic=1412&forum=14