Remove the need of 2nd UVmap for displace objects
This commit is contained in:
parent
4c0b28a43e
commit
1ca6a6edea
@ -317,8 +317,9 @@ void AbstractGeometryPasses::renderTransparent(const DrawCalls& draw_calls,
|
|||||||
glStencilFunc(GL_ALWAYS, 1, 0xFF);
|
glStencilFunc(GL_ALWAYS, 1, 0xFF);
|
||||||
glStencilOp(GL_KEEP, GL_KEEP, GL_REPLACE);
|
glStencilOp(GL_KEEP, GL_KEEP, GL_REPLACE);
|
||||||
|
|
||||||
|
video::E_VERTEX_TYPE cur_dis_type = video::EVT_2TCOORDS;
|
||||||
if (CVS->isARBBaseInstanceUsable())
|
if (CVS->isARBBaseInstanceUsable())
|
||||||
glBindVertexArray(VAOManager::getInstance()->getVAO(video::EVT_2TCOORDS));
|
glBindVertexArray(VAOManager::getInstance()->getVAO(cur_dis_type));
|
||||||
// Generate displace mask
|
// Generate displace mask
|
||||||
// Use RTT_TMP4 as displace mask
|
// Use RTT_TMP4 as displace mask
|
||||||
if (ListDisplacement::getInstance()->size() > 0)
|
if (ListDisplacement::getInstance()->size() > 0)
|
||||||
@ -334,12 +335,10 @@ void AbstractGeometryPasses::renderTransparent(const DrawCalls& draw_calls,
|
|||||||
glBindVertexArray(mesh.vao);
|
glBindVertexArray(mesh.vao);
|
||||||
const core::matrix4 &AbsoluteTransformation
|
const core::matrix4 &AbsoluteTransformation
|
||||||
= std::get<1>(ListDisplacement::getInstance()->at(i));
|
= std::get<1>(ListDisplacement::getInstance()->at(i));
|
||||||
if (mesh.VAOType != video::EVT_2TCOORDS)
|
if (mesh.VAOType != cur_dis_type && CVS->isARBBaseInstanceUsable())
|
||||||
{
|
{
|
||||||
#ifdef DEBUG
|
cur_dis_type = mesh.VAOType;
|
||||||
Log::error("Materials", "Displacement has wrong vertex type");
|
glBindVertexArray(VAOManager::getInstance()->getVAO(cur_dis_type));
|
||||||
#endif
|
|
||||||
continue;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
GLenum ptype = mesh.PrimitiveType;
|
GLenum ptype = mesh.PrimitiveType;
|
||||||
@ -357,6 +356,9 @@ void AbstractGeometryPasses::renderTransparent(const DrawCalls& draw_calls,
|
|||||||
displace_framebuffer.bind();
|
displace_framebuffer.bind();
|
||||||
glClear(GL_COLOR_BUFFER_BIT);
|
glClear(GL_COLOR_BUFFER_BIT);
|
||||||
}
|
}
|
||||||
|
cur_dis_type = video::EVT_2TCOORDS;
|
||||||
|
if (CVS->isARBBaseInstanceUsable())
|
||||||
|
glBindVertexArray(VAOManager::getInstance()->getVAO(cur_dis_type));
|
||||||
for (unsigned i = 0; i < ListDisplacement::getInstance()->size(); i++)
|
for (unsigned i = 0; i < ListDisplacement::getInstance()->size(); i++)
|
||||||
{
|
{
|
||||||
const GLMesh &mesh =
|
const GLMesh &mesh =
|
||||||
@ -365,8 +367,11 @@ void AbstractGeometryPasses::renderTransparent(const DrawCalls& draw_calls,
|
|||||||
glBindVertexArray(mesh.vao);
|
glBindVertexArray(mesh.vao);
|
||||||
const core::matrix4 &AbsoluteTransformation =
|
const core::matrix4 &AbsoluteTransformation =
|
||||||
std::get<1>(ListDisplacement::getInstance()->at(i));
|
std::get<1>(ListDisplacement::getInstance()->at(i));
|
||||||
if (mesh.VAOType != video::EVT_2TCOORDS)
|
if (mesh.VAOType != cur_dis_type && CVS->isARBBaseInstanceUsable())
|
||||||
continue;
|
{
|
||||||
|
cur_dis_type = mesh.VAOType;
|
||||||
|
glBindVertexArray(VAOManager::getInstance()->getVAO(cur_dis_type));
|
||||||
|
}
|
||||||
|
|
||||||
GLenum ptype = mesh.PrimitiveType;
|
GLenum ptype = mesh.PrimitiveType;
|
||||||
GLenum itype = mesh.IndexType;
|
GLenum itype = mesh.IndexType;
|
||||||
|
Loading…
Reference in New Issue
Block a user