dletozeun
Messages postés546Date d'inscriptionvendredi 13 février 2004StatutMembreDernière intervention 9 janvier 2008
-
15 janv. 2006 à 00:54
dletozeun
Messages postés546Date d'inscriptionvendredi 13 février 2004StatutMembreDernière intervention 9 janvier 2008
-
27 janv. 2006 à 22:00
bonjour,
C'est la deuxieme fois que je poste pour le multitexturing mais cette fois ci ca se precise...
voila mon probleme:
J'essais , de melanger deux textures ( herbe et terre par exemple) en
prametrant de degré de melange grace a la couleur d'une troisieme
texture en niveau de gris.
voila la texture terre et la texture herbe:
je veux les melanger en parametrant le melange grace a la couleur de cette 3eme texture:
et obtenir ca:
Mais le probleme c'est que je vois pas comment faire sous opengl...
voila ce que je fais pour realiser ca, mais tout ce que j'obtiens c'est
le produit des textures 0 et 2 sur la map et non le produit de 0 et 1
avec comme facteur de melange la coulouleur de 2
donc ici la texture nom[0] est la terre
nom[1] est l'herbe
nom[2] est la texture en niveau de gris
voila le code permetrant de parametrer le mode d'application des textures:
KeniiyK
Messages postés326Date d'inscriptionvendredi 13 août 2004StatutMembreDernière intervention 2 novembre 20072 16 janv. 2006 à 11:13
Salut, a mon avis tu es obligé de faire un algo en 2 passes.
Soit HERBE l'image d'herbe, TERRE l'image terre, DEG l'image degradé et qui sera appliqué à HERBE, DEG_INV l'image dégradé inversé, appliqué à TERRE et RESULT l'image finale.
on a RESULT = (HERBE*DEG + TERRE*DEG_INV) / 2
Algo :
-> première passe, appliquer HERBE*DEG (2 unité de texture...)
-> deuxieme passe, appliquer TERRE*DEG_INV avec une fonction de mélange qui fasse la moyenne...
Autre solution :
Connaissant tes images, pré-calcule les textures mélangées, en live dans le prog ou en tant que data du prog et applique les directement en simple passe et sans multi-texturing
et pour chaque vertex tu charges les propriétés de tes textures
glMultiTexCoord2fARB(GL_TEXTURE0_ARB, 0.0, 1.0);
glMultiTexCoord2fARB(GL_TEXTURE1_ARB, 0.0, 1.0);
glMultiTexCoord2fARB(GL_TEXTURE2_ARB, 0.0, 1.0);
mais bon faut que ta carte supporte les shaders v1
si elle supporte le multitexturing elle devrait aussi connaitre ca de toute facon
dletozeun
Messages postés546Date d'inscriptionvendredi 13 février 2004StatutMembreDernière intervention 9 janvier 20081 20 janv. 2006 à 23:52
bon en fait j'vais deja essayé ca mais je pensais plus que c'est pas possible...
En effet je peux pas multiplier l'herbe avec la texture en niveaux de
gris, puis a coté multiplier la texture sol avec la texture de niveaux
de gris en negatif pour ensuite les ajouter....
opengl permet seulement d'utiliser le fragment precedent ( affiché a
l"ecran) ou bien une texture pour le (la) multiplier avec une autre
mais en utilisant source0 et source1
En clair je peux pas faire source0 + source1*source2
ou source0 serait le fragment precedent (deja dans le frame buffer, c a
dire herbe*niveaux de gris) , source1 la texture sol et source2 la
texture en niveau de gris en negatif....
Mais que source0*source1 ou source0 +source1 ( et bien d'autres choses qui sont pas interessantes ici...)
Bref c'est difficile a expliquer et dur comprendre pour ceux qui sont pas dedans...
dletozeun
Messages postés546Date d'inscriptionvendredi 13 février 2004StatutMembreDernière intervention 9 janvier 20081 27 janv. 2006 à 22:00
oui mais avec les cartes graphiques actuelle il doit avoir moyen avec
les extensions de opengl de faire ca en une seule passe...donc je
cherche toujours.