website logo
Auteur
avatar
thellier

Forum » » Création-Développement » » Demande de bench #Zero


Posté : 21-02-2017 11:21 icone du post


>pour intercaler le moindre octet pour du FOG

Justement je vois pas l'interet de faire un (draw)array avec en plus une valeur fog et le faire par Warp3D..

Honnêtement le plus radical c'est de calculer ton fog en soft (meme lentement...) mais une fois pour toute dans une table selon Z genre UBYTE FogValues[1024];

Puis faire un truc du genre pour chaque vertex

 n=vertex->z*1024.0;

fog=FogValues[n];

invfog= 255-fog;

     color[i][0] = (UBYTE) (fog * color[i][0] + invfog * rFog);
     color[i][1] = (UBYTE) (fog  * color[i][1] + invfog * gFog);
     color[i][2] = (UBYTE) (fog  * color[i][2] + invfog * bFog);

tu peut aussi precalculer toute la valeur RGBA du fog dans FogValues si tu n 'es pas à 4Ko près

fogRGBA=FogValuesRGBA[n];

     color[i][0] = (UBYTE) (fogRGBA[3] * color[i][0] + fogRGBA[0] );
     color[i][1] = (UBYTE) (fogRGBA[3] * color[i][1] + fogRGBA[1] );
     color[i][2] = (UBYTE) (fogRGBA[3] * color[i][2] + fogRGBA[2] );


Et si tu mets tes valeurs RGBA de color et fogRGBA dans des registres 32 bits (des unions en C)  alors cela fera pas grand mal de tout faire au cpu : 3 mul sur des registres par vertex


Alain





>

Sam440 - Sam460 - X5000 - PowerBookG4 - WinUAE - MiniMig

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