Now the grass shader can be used with the new pipeline. Todo make a basic ubershader

git-svn-id: svn+ssh://svn.code.sf.net/p/supertuxkart/code/main/trunk@14694 178a84e3-b1eb-0310-8ba1-8eac791a3b58
This commit is contained in:
samuncle
2013-12-10 01:57:20 +00:00
parent 95ffca1bf0
commit 7e8159ccd6

View File

@@ -118,6 +118,24 @@ void WaterShaderProvider::OnSetConstants(IMaterialRendererServices *srv, int)
void GrassShaderProvider::OnSetConstants(IMaterialRendererServices *srv, int userData)
{
const float camfar = irr_driver->getSceneManager()->getActiveCamera()->getFarValue();
srv->setVertexShaderConstant("far", &camfar, 1);
// The normal is transformed by the inverse transposed world matrix
// because we want world-space normals
matrix4 invtworldm = irr_driver->getVideoDriver()->getTransform(ETS_WORLD);
invtworldm.makeInverse();
invtworldm = invtworldm.getTransposed();
srv->setVertexShaderConstant("invtworldm", invtworldm.pointer(), 16);
float objectid = 0;
const stringc name = mat.TextureLayer[0].Texture->getName().getPath();
objectid = shash8((const u8 *) name.c_str(), name.size()) / 255.0f;
srv->setVertexShaderConstant("objectid", &objectid, 1);
IVideoDriver * const drv = srv->getVideoDriver();
const core::vector3df pos = drv->getTransform(ETS_WORLD).getTranslation();
const float time = irr_driver->getDevice()->getTimer()->getTime() / 1000.0f;