Small adjustment to landscape vp parameter setting
This commit is contained in:
parent
54ccd5d129
commit
7f02dc6a5f
1 changed files with 19 additions and 15 deletions
|
@ -1199,22 +1199,26 @@ void CLandscape::render(const CVector &refineCenter, const CVector &frontVecto
|
||||||
uint nbvp = uprogstate ? CLandscapeVBAllocator::MaxVertexProgram : 1;
|
uint nbvp = uprogstate ? CLandscapeVBAllocator::MaxVertexProgram : 1;
|
||||||
for (uint i = 0; i < nbvp; ++i)
|
for (uint i = 0; i < nbvp; ++i)
|
||||||
{
|
{
|
||||||
// activate the program to set the uniforms in the program state for all programs
|
|
||||||
// note: when uniforms are driver state, the indices must be the same across programs
|
|
||||||
if (uprogstate) _TileVB.activateVP(i);
|
|
||||||
CVertexProgramLandscape *program = _TileVB.getVP(i);
|
CVertexProgramLandscape *program = _TileVB.getVP(i);
|
||||||
// c[0..3] take the ModelViewProjection Matrix.
|
if (program)
|
||||||
driver->setUniformMatrix(IDriver::VertexProgram, program->getUniformIndex(CGPUProgramIndex::ModelViewProjection), IDriver::ModelViewProjection, IDriver::Identity);
|
{
|
||||||
// c[4] take useful constants.
|
// activate the program to set the uniforms in the program state for all programs
|
||||||
driver->setUniform4f(IDriver::VertexProgram, program->idx().ProgramConstants0, 0, 1, 0.5f, 0);
|
// note: when uniforms are driver state, the indices must be the same across programs
|
||||||
// c[5] take RefineCenter
|
if (uprogstate) _TileVB.activateVP(i);
|
||||||
driver->setUniform3f(IDriver::VertexProgram, program->idx().RefineCenter, refineCenter);
|
|
||||||
// c[6] take info for Geomorph trnasition to TileNear.
|
// c[0..3] take the ModelViewProjection Matrix.
|
||||||
driver->setUniform2f(IDriver::VertexProgram, program->idx().TileDist, CLandscapeGlobals::TileDistFarSqr, CLandscapeGlobals::OOTileDistDeltaSqr);
|
driver->setUniformMatrix(IDriver::VertexProgram, program->getUniformIndex(CGPUProgramIndex::ModelViewProjection), IDriver::ModelViewProjection, IDriver::Identity);
|
||||||
// c[10] take the fog vector.
|
// c[4] take useful constants.
|
||||||
driver->setUniformFog(IDriver::VertexProgram, program->getUniformIndex(CGPUProgramIndex::Fog));
|
driver->setUniform4f(IDriver::VertexProgram, program->idx().ProgramConstants0, 0, 1, 0.5f, 0);
|
||||||
// c[12] take the current landscape Center / delta Pos to apply
|
// c[5] take RefineCenter
|
||||||
driver->setUniform3f(IDriver::VertexProgram, program->idx().PZBModelPosition, _PZBModelPosition);
|
driver->setUniform3f(IDriver::VertexProgram, program->idx().RefineCenter, refineCenter);
|
||||||
|
// c[6] take info for Geomorph trnasition to TileNear.
|
||||||
|
driver->setUniform2f(IDriver::VertexProgram, program->idx().TileDist, CLandscapeGlobals::TileDistFarSqr, CLandscapeGlobals::OOTileDistDeltaSqr);
|
||||||
|
// c[10] take the fog vector.
|
||||||
|
driver->setUniformFog(IDriver::VertexProgram, program->getUniformIndex(CGPUProgramIndex::Fog));
|
||||||
|
// c[12] take the current landscape Center / delta Pos to apply
|
||||||
|
driver->setUniform3f(IDriver::VertexProgram, program->idx().PZBModelPosition, _PZBModelPosition);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue