@@ -1167,7 +1167,7 @@ MapBlockMesh::MapBlockMesh(MeshMakeData *data, v3s16 camera_offset):
1167
1167
1168
1168
for (u32 j = 0 ; j < p.vertices .size (); j++)
1169
1169
{
1170
- video::S3DVertexTangents *vertex = &p.vertices [j];
1170
+ video::S3DVertex *vertex = &p.vertices [j];
1171
1171
// Note applyFacesShading second parameter is precalculated sqrt
1172
1172
// value for speed improvement
1173
1173
// Skip it for lightsources and top faces.
@@ -1221,11 +1221,12 @@ MapBlockMesh::MapBlockMesh(MeshMakeData *data, v3s16 camera_offset):
1221
1221
}
1222
1222
1223
1223
// Create meshbuffer
1224
- scene::SMeshBufferTangents *buf = new scene::SMeshBufferTangents ();
1224
+ scene::SMeshBuffer *buf = new scene::SMeshBuffer ();
1225
1225
// Set material
1226
1226
buf->Material = material;
1227
1227
// Add to mesh
1228
- m_mesh->addMeshBuffer (buf);
1228
+ scene::SMesh *mesh = (scene::SMesh *)m_mesh;
1229
+ mesh->addMeshBuffer (buf);
1229
1230
// Mesh grabbed it
1230
1231
buf->drop ();
1231
1232
buf->append (&p.vertices [0 ], p.vertices .size (),
@@ -1241,7 +1242,9 @@ MapBlockMesh::MapBlockMesh(MeshMakeData *data, v3s16 camera_offset):
1241
1242
1242
1243
if (m_enable_shaders) {
1243
1244
scene::IMeshManipulator* meshmanip = m_gamedef->getSceneManager ()->getMeshManipulator ();
1244
- meshmanip->recalculateTangents (m_mesh, true , false , false );
1245
+ scene::IMesh* tangentMesh = meshmanip->createMeshWithTangents (m_mesh);
1246
+ m_mesh->drop ();
1247
+ m_mesh = tangentMesh;
1245
1248
}
1246
1249
1247
1250
if (m_mesh)
@@ -1361,7 +1364,7 @@ bool MapBlockMesh::animate(bool faraway, float time, int crack, u32 daynight_rat
1361
1364
i != m_daynight_diffs.end (); ++i)
1362
1365
{
1363
1366
scene::IMeshBuffer *buf = m_mesh->getMeshBuffer (i->first );
1364
- video::S3DVertexTangents *vertices = (video::S3DVertexTangents *)buf->getVertices ();
1367
+ video::S3DVertex *vertices = (video::S3DVertex *)buf->getVertices ();
1365
1368
for (std::map<u32, std::pair<u8, u8 > >::iterator
1366
1369
j = i->second .begin ();
1367
1370
j != i->second .end (); ++j)
@@ -1392,7 +1395,7 @@ bool MapBlockMesh::animate(bool faraway, float time, int crack, u32 daynight_rat
1392
1395
i != m_highlighted_materials.end (); ++i)
1393
1396
{
1394
1397
scene::IMeshBuffer *buf = m_mesh->getMeshBuffer (*i);
1395
- video::S3DVertexTangents *vertices = (video::S3DVertexTangents *)buf->getVertices ();
1398
+ video::S3DVertex *vertices = (video::S3DVertex *)buf->getVertices ();
1396
1399
for (u32 j = 0 ; j < buf->getVertexCount () ;j++)
1397
1400
vertices[j].Color = hc;
1398
1401
}
@@ -1448,7 +1451,7 @@ void MeshCollector::append(const TileSpec &tile,
1448
1451
}
1449
1452
1450
1453
for (u32 i = 0 ; i < numVertices; i++) {
1451
- video::S3DVertexTangents vert (vertices[i].Pos , vertices[i].Normal ,
1454
+ video::S3DVertex vert (vertices[i].Pos , vertices[i].Normal ,
1452
1455
vertices[i].Color , vertices[i].TCoords );
1453
1456
p->vertices .push_back (vert);
1454
1457
}
@@ -1494,7 +1497,7 @@ void MeshCollector::append(const TileSpec &tile,
1494
1497
}
1495
1498
1496
1499
for (u32 i = 0 ; i < numVertices; i++) {
1497
- video::S3DVertexTangents vert (vertices[i].Pos + pos, vertices[i].Normal ,
1500
+ video::S3DVertex vert (vertices[i].Pos + pos, vertices[i].Normal ,
1498
1501
c, vertices[i].TCoords );
1499
1502
p->vertices .push_back (vert);
1500
1503
}
2 commit comments
Fixer-007 commentedon Feb 8, 2016
My results on AMD/ATI HD6870 on Win7, before 51fps, now 49fps, -2% drop (tested with my saved just test world and tinytask automation tool + fraps, two times for before and after).
Config:
Fixer-007 commentedon Feb 10, 2016
This commit also has one bad side effect (slow block placing/digging rendering), I already reported it to @RealBadAngel.