|
|
|
@ -86,15 +86,15 @@ namespace MWRender
|
|
|
|
|
normalMap->setProperty ("direct_texture", sh::makeProperty<sh::StringValue> (new sh::StringValue(terrain->getTerrainNormalMap ()->getName())));
|
|
|
|
|
normalMap->setProperty ("tex_address_mode", sh::makeProperty<sh::StringValue> (new sh::StringValue("clamp")));
|
|
|
|
|
|
|
|
|
|
uint maxLayers = getMaxLayers(terrain);
|
|
|
|
|
uint numBlendTextures = std::min(terrain->getBlendTextureCount(maxLayers), terrain->getBlendTextureCount());
|
|
|
|
|
uint numLayers = std::min(maxLayers, static_cast<uint>(terrain->getLayerCount()));
|
|
|
|
|
Ogre::uint maxLayers = getMaxLayers(terrain);
|
|
|
|
|
Ogre::uint numBlendTextures = std::min(terrain->getBlendTextureCount(maxLayers), terrain->getBlendTextureCount());
|
|
|
|
|
Ogre::uint numLayers = std::min(maxLayers, static_cast<Ogre::uint>(terrain->getLayerCount()));
|
|
|
|
|
|
|
|
|
|
p->mShaderProperties.setProperty ("num_layers", sh::makeProperty<sh::StringValue>(new sh::StringValue(Ogre::StringConverter::toString(numLayers))));
|
|
|
|
|
p->mShaderProperties.setProperty ("num_blendmaps", sh::makeProperty<sh::StringValue>(new sh::StringValue(Ogre::StringConverter::toString(numBlendTextures))));
|
|
|
|
|
|
|
|
|
|
// blend maps
|
|
|
|
|
for (uint i = 0; i < numBlendTextures; ++i)
|
|
|
|
|
for (Ogre::uint i = 0; i < numBlendTextures; ++i)
|
|
|
|
|
{
|
|
|
|
|
sh::MaterialInstanceTextureUnit* blendTex = p->createTextureUnit ("blendMap" + Ogre::StringConverter::toString(i));
|
|
|
|
|
blendTex->setProperty ("direct_texture", sh::makeProperty<sh::StringValue> (new sh::StringValue(terrain->getBlendTextureName(i))));
|
|
|
|
@ -102,7 +102,7 @@ namespace MWRender
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// layer maps
|
|
|
|
|
for (uint i = 0; i < numLayers; ++i)
|
|
|
|
|
for (Ogre::uint i = 0; i < numLayers; ++i)
|
|
|
|
|
{
|
|
|
|
|
sh::MaterialInstanceTextureUnit* diffuseTex = p->createTextureUnit ("diffuseMap" + Ogre::StringConverter::toString(i));
|
|
|
|
|
diffuseTex->setProperty ("direct_texture", sh::makeProperty<sh::StringValue> (new sh::StringValue(terrain->getLayerTextureName(i, 0))));
|
|
|
|
@ -111,7 +111,7 @@ namespace MWRender
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// shadow
|
|
|
|
|
for (uint i = 0; i < 3; ++i)
|
|
|
|
|
for (Ogre::uint i = 0; i < 3; ++i)
|
|
|
|
|
{
|
|
|
|
|
sh::MaterialInstanceTextureUnit* shadowTex = p->createTextureUnit ("shadowMap" + Ogre::StringConverter::toString(i));
|
|
|
|
|
shadowTex->setProperty ("content_type", sh::makeProperty<sh::StringValue> (new sh::StringValue("shadow")));
|
|
|
|
|