J'ai actuellement 3 textures mélangées en utilisant une quantité de pente, dans mon projet de terrain. Je le fais en échantillonnant chaque texture, en déterminant la quantité de pente et en définissant la couleur de texture en fonction d'un lerp entre deux textures. Ceci est l'extrait de ce de mon pixel shader:DirectX11: Mélange de texture basé sur la hauteur
static const float TEX_LOW_BOUND = 0.4f;
static const float TEX_HIGH_BOUND = 0.7f;
...
float4 texColour;
float4 lowColour = lowerTex.Sample(SWrap, pin.Tex);
float4 midColour = middleTex.Sample(SWrap, pin.Tex);
float4 hiColour = upperTex.Sample(SWrap, pin.Tex);
float slope = 1.0f - pin.Normal.y;
if (slope < TEX_LOW_BOUND)
{
texColour = lerp(lowColour, midColour, slope/TEX_LOW_BOUND);
}
else if (slope >= TEX_LOW_BOUND && slope < TEX_HIGH_BOUND)
{
texColour = lerp(midColour, hiColour, (slope - TEX_LOW_BOUND) * (1.0f/(TEX_HIGH_BOUND - TEX_LOW_BOUND)));
}
else if (slope >= TEX_HIGH_BOUND)
{
texColour = hiColour;
}
Je veux ajouter une texture de la neige finale, à appliquer une certaine hauteur. Je reçois la valeur de hauteur dans mon vertex shader en utilisant:
vout.WHeight = mul(vin.Pos, worldMatrix).y;
Je peux ensuite définir simplement la couleur de la texture à la neige au-dessus d'une certaine hauteur à l'aide dans mon pixel shader:
if (pin.WHeight > 35.0f)
{
texColour = snowTex.Sample(SWrap, pin.Tex);
}
qui produit les éléments suivants:
Comment puis-je mélanger le bord de la neige avec les autres textures afin que le bord n'est pas si dur. En gardant à l'esprit les autres textures peuvent avoir déjà été lerped, et je voudrais maintenir la couleur de la texture.
Merci pour votre temps
De la même manière que vous l'avez fait avec la pente. – Drop
Comment exactement j'intègre la valeur de hauteur avec l'interpolation linéaire basée sur la pente. Je veux juste mélanger le bord de la neige, donc il s'estompe le long de la colline. – Daniel
Prendre la couleur finale après la partie de la pente (appelons-le "herbe"), prendre la couleur de la neige. Calculez votre coefficient d'interpolation en fonction de la hauteur (ex: neige absolue: hauteur 200 et plus, quantité de neige 100%, herbe absolue: hauteur inférieure à 150, quantité de neige 0%). Faites lerp (ou n'importe quelle fonction de mélange que vous aimez). – Drop