Thank you for mentioning that, if others have a similar question I did that that way (first use of blendmode, could be better I suppose):
Mask are full alpha by defaut and color where I want to put material (see attachement)
struct Layer{
std::shared_ptr<sf::Texture> textureMask;
std::shared_ptr<sf::Texture> textureLayer;
};
.....
in function draw() of my tileMap class:
//draw grass default
states.texture = m_textureGrass.get();
target.draw(m_verticesLayer, states);
for(auto &l:m_listLayer){
states.texture = l.textureMask.get();
states.blendMode = sf::BlendMode(BlendMode::Zero, BlendMode::One, BlendMode::Add,
BlendMode::Zero, BlendMode::OneMinusSrcAlpha, BlendMode::ReverseSubtract);
target.draw(m_verticesMask, states);
states.texture = l.textureLayer.get();
states.blendMode = sf::BlendMode(BlendMode::OneMinusDstAlpha,BlendMode::DstAlpha,BlendMode::Add,
BlendMode::One, BlendMode::Zero, BlendMode::Add);
target.draw(m_verticesLayer, states);
}