Pages: 1
- Accueil forums
- » Espace graphisme
- » Scale d'une textureLayer sans toucher aux autres ??
11-11-2009 16:45:52
- TUpac
- Membres

- Date d'inscription:
- Messages: 387
- IP: 88.168.3.38
- Courriel
Salut je me creuse la tête pour mon shader de splatting et j'avoue que c'est bien mal parti.
Je m'explique : Je fais un terrain auquel j'ajoute trois textures : 0 1 2, ou 0 est une texture d'herbe, 1 de terre et 2 le masque noir et blanc pour faire la transition.
Le shader marche à merveille mais le hic c'est que l'ideal serait que l'herbe et la terre soient scalés mais pas le masque (normal non?). Malheuresement je ne sais passer une texture à un shader que par l'intermédiaire d'une textureLayer sur le node et je n'arrive pas à scaler une Layer indépendamment des autres.
J'ai éssayé ceci qui ne donne aucun résultat :
terrain->getMaterial(0).getTextureMatrix(0).setTextureScale(50,50);Quelqu'un pourait m'éclairer de ses lumières svp
"Si vous ne partagez pas votre stabilité avec les pauvres, les pauvres partageront leur instabilité avec vous."
Hors ligne
11-11-2009 22:17:35
- TUpac
- Membres

- Date d'inscription:
- Messages: 387
- IP: 88.168.3.38
- Courriel
Bon ben j'ai trouvé par moi-même la salution : il suffit de diviser les coordonées de la texture masque par le ratio appliqué en scaletexture.
ça sera plus parlant sur du code.
Après texturage du terrain :
terrain->scaleTexture(80,80);et voici le pixel shader :
void main ( void )
{
// Texture 1 : herbe
vec4 herbe = texture2D ( Texture1 , gl_TexCoord[0] );
// Texture 2 : terre pour les chemins
vec4 terre = texture2D ( Texture2 , gl_TexCoord[0] );
// Texture 3 : masque en noir et blanc
vec4 mask = texture2D ( Texture3 , gl_TexCoord[0]/80 ); // divise par 80
vec4 color = mix(terre, herbe, mask.r);
gl_FragColor = (color);
}Me voilà donc parti sur mon terrain editing pour faire un truc bien joli
"Si vous ne partagez pas votre stabilité avec les pauvres, les pauvres partageront leur instabilité avec vous."
Hors ligne



