1

Edited_799

2

3

Edited_800

4

et sbibi il a pas fait un tuto ?

5

du perspective texture mapping? de l'affine?
comence peut etre par l'affine grin apres pour passer de l'affine a perspective c'est assez simple...

tu sais interpoler des couleurs dans ton triangle? (gouraud) alors tu sais texture mapper...
en plus d'interpoler tes channels r, g et b, tu interpoles tes deux (ou plus, ou moins) coordonnees de textures, u et v, apres a chaque pixel que tu dessines tu recuperes un triplet rgb et deux coords uv. tu n'as plus qu'a indexer ta texture avec tes coords uv (coordonnees homogenes tu te feras moins chier, normalisees entre 0.0 et 1.0, avec 1.0 == largeur de ta texture)
apres a chaque pixel t'as juste a faire un truc du style out_color.rgb = texture.pixels[interpolated_v * texture.height * texture.width + interpolated_u * texture.width].rgb * interpolated_rgb;

apres tu peux filtrer ta texture... en filtrage de magnification tu peux faire du filtrage bilineaire ou cubique...
pour le bilineaire, tu recuperes les 4 texels qui entourent ton point de sampling de coordonnees u, v et tu les interpoles avec un truc du style:

int x;
int y;
float fx;
float fy;
color c[4];

// la ca te donne le coin superieur gauche du groupe de 4 texels qui entourent ton point de sampling, le -0.5f est pour aligner l'origine de tes points de sampling sur le  centre des texels
x = (int)(u * texture.width - 0.5f);
y = (int)(v * texture.height - 0.5f);

// ca c'est les fractions qui vont te servir a interpoler les 4 texels.
// si tes 4 texels sont organises de la facon suivante dans ta texture:
// C0 C1
// C2 C3
// fx == 0 veut dire que ton point de sampling se trouve quelquepart sur la ligne qui passe par le centre de C0 - C2
// fx == 1 veut dire que ton point de sampling se trouve quelquepart sur la ligne qui passe par le centre de C1 - C3
// fy == 0 veut dire que ton point de sampling se trouve quelquepart sur la ligne qui passe par le centre de C0 - C1
// fy == 1 veut dire que ton point de sampling se trouve quelquepart sur la ligne qui passe par le centre de C2 - C3
// et les valeurs intermediaires, bah qu'il est entre #trioui#
fx = u - x;
fy = v - y;

// la normalement tu devrais tester les over/underflows des coordonnees de texture et les wrapper/clamper suivant ton mode d'indexage (repeat/clamp, autre truc bizarre..)

c[0] = texture.pixels[y * texture.width + x];
c[1] = texture.pixels[y * texture.width + x + 1];
c[2] = texture.pixels[(y + 1) * texture.width + x];
c[3] = texture.pixels[(y + 1) * texture.width + x + 1];

// et la t'interpoles entre les != texels
c[0] = c[0] + fx * (c[1] - c[0]);
c[2] = c[2] + fx * (c[3] - c[2]);
return (c[0] + fy * (c[2] - c[0]));


brayfe...

EDIT: triple cross trilovetritop
In many respects the Yoshi is like a beautiful woman. A man can come so enamoured that he bestows on her all his time, his energy and his fortune.
- Fred whipple, 1960

*** Ne sous-estimez pas la puissance de la Marmotte ***
© Marmotte Team : LaMarmotte, sBibi, Vark & Sabrina

6

Edited_801

7

Bon alors, les schémas pour le perspective texture mapping arrivent quand ?
avatar
« Quand le dernier arbre sera abattu, la dernière rivière empoisonnée, le dernier poisson capturé, alors vous découvrirez que l'argent ne se mange pas. »

8

Edited_802