fix block LOD chunks rendering
Some checks failed
studiorailgun/Renderer/pipeline/head There was a failure building this commit
Some checks failed
studiorailgun/Renderer/pipeline/head There was a failure building this commit
This commit is contained in:
parent
649e2fb0cf
commit
258d73be9a
@ -40,6 +40,7 @@ public class ClientEntityUtils {
|
|||||||
public static void reositionEntity(Entity entity, Vector3d position, Quaterniond rotation){
|
public static void reositionEntity(Entity entity, Vector3d position, Quaterniond rotation){
|
||||||
//reposition entity
|
//reposition entity
|
||||||
CollisionObjUtils.clientPositionCharacter(entity, position, rotation);
|
CollisionObjUtils.clientPositionCharacter(entity, position, rotation);
|
||||||
|
EntityUtils.getPosition(entity).set(position);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@ -79,7 +79,7 @@ public class BlockChunkEntity {
|
|||||||
EntityCreationUtils.makeEntityDrawablePreexistingModel(solidsEnt, modelPath);
|
EntityCreationUtils.makeEntityDrawablePreexistingModel(solidsEnt, modelPath);
|
||||||
if(levelOfDetail == BlockChunkData.LOD_FULL_RES){
|
if(levelOfDetail == BlockChunkData.LOD_FULL_RES){
|
||||||
PhysicsEntityUtils.clientAttachTriGeomCollider(solidsEnt, data);
|
PhysicsEntityUtils.clientAttachTriGeomCollider(solidsEnt, data);
|
||||||
CollisionObjUtils.clientPositionCharacter(solidsEnt, new Vector3d(EntityUtils.getPosition(solidsEnt)), new Quaterniond());
|
ClientEntityUtils.reositionEntity(solidsEnt, new Vector3d(EntityUtils.getPosition(solidsEnt)), new Quaterniond());
|
||||||
} else {
|
} else {
|
||||||
EntityCreationUtils.bypassShadowPass(solidsEnt);
|
EntityCreationUtils.bypassShadowPass(solidsEnt);
|
||||||
EntityCreationUtils.bypassVolumetics(solidsEnt);
|
EntityCreationUtils.bypassVolumetics(solidsEnt);
|
||||||
|
|||||||
@ -194,21 +194,24 @@ public class BlockMeshgen {
|
|||||||
* @param depth The depth of the box
|
* @param depth The depth of the box
|
||||||
* @param blockType The type of block
|
* @param blockType The type of block
|
||||||
* @param indexOffset The offset for the indices that will be added (ie, if there are already vertices in the verts list, pass in the size of the vert list)
|
* @param indexOffset The offset for the indices that will be added (ie, if there are already vertices in the verts list, pass in the size of the vert list)
|
||||||
|
* @param scalingFactor The factor to scale by
|
||||||
*/
|
*/
|
||||||
protected static void meshifyBox(MeshGenStore meshStore, QuadMesh quad, int depth, int blockType){
|
protected static void meshifyBox(MeshGenStore meshStore, QuadMesh quad, int depth, int blockType, int scalingFactor){
|
||||||
|
|
||||||
int indexOffset = meshStore.getVertCount() / 3;
|
int indexOffset = meshStore.getVertCount() / 3;
|
||||||
|
|
||||||
|
float finalScalingFactor = scalingFactor * BlockChunkData.BLOCK_SIZE_MULTIPLIER;
|
||||||
|
|
||||||
//
|
//
|
||||||
//face 1
|
//face 1
|
||||||
//
|
//
|
||||||
int samplerIndex = Globals.blockTextureAtlas.getVoxelTypeOffset(blockType);
|
int samplerIndex = Globals.blockTextureAtlas.getVoxelTypeOffset(blockType);
|
||||||
|
|
||||||
//verts
|
//verts
|
||||||
meshStore.addVert(quad.x * BlockChunkData.BLOCK_SIZE_MULTIPLIER, quad.y * BlockChunkData.BLOCK_SIZE_MULTIPLIER, quad.z * BlockChunkData.BLOCK_SIZE_MULTIPLIER);
|
meshStore.addVert(quad.x * finalScalingFactor, quad.y * finalScalingFactor, quad.z * finalScalingFactor);
|
||||||
meshStore.addVert((quad.x + quad.w) * BlockChunkData.BLOCK_SIZE_MULTIPLIER, quad.y * BlockChunkData.BLOCK_SIZE_MULTIPLIER, quad.z * BlockChunkData.BLOCK_SIZE_MULTIPLIER);
|
meshStore.addVert((quad.x + quad.w) * finalScalingFactor, quad.y * finalScalingFactor, quad.z * finalScalingFactor);
|
||||||
meshStore.addVert(quad.x * BlockChunkData.BLOCK_SIZE_MULTIPLIER, (quad.y + quad.h) * BlockChunkData.BLOCK_SIZE_MULTIPLIER, quad.z * BlockChunkData.BLOCK_SIZE_MULTIPLIER);
|
meshStore.addVert(quad.x * finalScalingFactor, (quad.y + quad.h) * finalScalingFactor, quad.z * finalScalingFactor);
|
||||||
meshStore.addVert((quad.x + quad.w) * BlockChunkData.BLOCK_SIZE_MULTIPLIER, (quad.y + quad.h) * BlockChunkData.BLOCK_SIZE_MULTIPLIER, quad.z * BlockChunkData.BLOCK_SIZE_MULTIPLIER);
|
meshStore.addVert((quad.x + quad.w) * finalScalingFactor, (quad.y + quad.h) * finalScalingFactor, quad.z * finalScalingFactor);
|
||||||
//indices
|
//indices
|
||||||
meshStore.addFace(indexOffset + 0, indexOffset + 2, indexOffset + 3);
|
meshStore.addFace(indexOffset + 0, indexOffset + 2, indexOffset + 3);
|
||||||
meshStore.addFace(indexOffset + 0, indexOffset + 3, indexOffset + 1);
|
meshStore.addFace(indexOffset + 0, indexOffset + 3, indexOffset + 1);
|
||||||
@ -233,10 +236,10 @@ public class BlockMeshgen {
|
|||||||
//
|
//
|
||||||
|
|
||||||
//verts
|
//verts
|
||||||
meshStore.addVert(quad.x * BlockChunkData.BLOCK_SIZE_MULTIPLIER, quad.y * BlockChunkData.BLOCK_SIZE_MULTIPLIER, quad.z * BlockChunkData.BLOCK_SIZE_MULTIPLIER);
|
meshStore.addVert(quad.x * finalScalingFactor, quad.y * finalScalingFactor, quad.z * finalScalingFactor);
|
||||||
meshStore.addVert(quad.x * BlockChunkData.BLOCK_SIZE_MULTIPLIER, quad.y * BlockChunkData.BLOCK_SIZE_MULTIPLIER, (quad.z + depth) * BlockChunkData.BLOCK_SIZE_MULTIPLIER);
|
meshStore.addVert(quad.x * finalScalingFactor, quad.y * finalScalingFactor, (quad.z + depth) * finalScalingFactor);
|
||||||
meshStore.addVert(quad.x * BlockChunkData.BLOCK_SIZE_MULTIPLIER, (quad.y + quad.h) * BlockChunkData.BLOCK_SIZE_MULTIPLIER, quad.z * BlockChunkData.BLOCK_SIZE_MULTIPLIER);
|
meshStore.addVert(quad.x * finalScalingFactor, (quad.y + quad.h) * finalScalingFactor, quad.z * finalScalingFactor);
|
||||||
meshStore.addVert(quad.x * BlockChunkData.BLOCK_SIZE_MULTIPLIER, (quad.y + quad.h) * BlockChunkData.BLOCK_SIZE_MULTIPLIER, (quad.z + depth) * BlockChunkData.BLOCK_SIZE_MULTIPLIER);
|
meshStore.addVert(quad.x * finalScalingFactor, (quad.y + quad.h) * finalScalingFactor, (quad.z + depth) * finalScalingFactor);
|
||||||
//indices
|
//indices
|
||||||
meshStore.addFace(indexOffset + 4, indexOffset + 7, indexOffset + 6);
|
meshStore.addFace(indexOffset + 4, indexOffset + 7, indexOffset + 6);
|
||||||
meshStore.addFace(indexOffset + 4, indexOffset + 5, indexOffset + 7);
|
meshStore.addFace(indexOffset + 4, indexOffset + 5, indexOffset + 7);
|
||||||
@ -261,14 +264,10 @@ public class BlockMeshgen {
|
|||||||
//
|
//
|
||||||
|
|
||||||
//verts
|
//verts
|
||||||
meshStore.addVert(quad.x * BlockChunkData.BLOCK_SIZE_MULTIPLIER, quad.y * BlockChunkData.BLOCK_SIZE_MULTIPLIER, quad.z * BlockChunkData.BLOCK_SIZE_MULTIPLIER);
|
meshStore.addVert(quad.x * finalScalingFactor, quad.y * finalScalingFactor, quad.z * finalScalingFactor);
|
||||||
meshStore.addVert(quad.x * BlockChunkData.BLOCK_SIZE_MULTIPLIER, quad.y * BlockChunkData.BLOCK_SIZE_MULTIPLIER, (quad.z + depth) * BlockChunkData.BLOCK_SIZE_MULTIPLIER);
|
meshStore.addVert(quad.x * finalScalingFactor, quad.y * finalScalingFactor, (quad.z + depth) * finalScalingFactor);
|
||||||
meshStore.addVert((quad.x + quad.w) * BlockChunkData.BLOCK_SIZE_MULTIPLIER, quad.y * BlockChunkData.BLOCK_SIZE_MULTIPLIER, quad.z * BlockChunkData.BLOCK_SIZE_MULTIPLIER);
|
meshStore.addVert((quad.x + quad.w) * finalScalingFactor, quad.y * finalScalingFactor, quad.z * finalScalingFactor);
|
||||||
meshStore.addVert((quad.x + quad.w) * BlockChunkData.BLOCK_SIZE_MULTIPLIER, quad.y * BlockChunkData.BLOCK_SIZE_MULTIPLIER, (quad.z + depth) * BlockChunkData.BLOCK_SIZE_MULTIPLIER);
|
meshStore.addVert((quad.x + quad.w) * finalScalingFactor, quad.y * finalScalingFactor, (quad.z + depth) * finalScalingFactor);
|
||||||
// verts.add(new Vector3f(quad.x, quad.y, quad.z ).mul(BlockChunkData.BLOCK_SIZE_MULTIPLIER));
|
|
||||||
// verts.add(new Vector3f(quad.x, quad.y, quad.z + depth).mul(BlockChunkData.BLOCK_SIZE_MULTIPLIER));
|
|
||||||
// verts.add(new Vector3f(quad.x + quad.w, quad.y, quad.z ).mul(BlockChunkData.BLOCK_SIZE_MULTIPLIER));
|
|
||||||
// verts.add(new Vector3f(quad.x + quad.w, quad.y, quad.z + depth).mul(BlockChunkData.BLOCK_SIZE_MULTIPLIER));
|
|
||||||
//indices
|
//indices
|
||||||
meshStore.addFace(indexOffset + 8, indexOffset + 10, indexOffset + 11);
|
meshStore.addFace(indexOffset + 8, indexOffset + 10, indexOffset + 11);
|
||||||
meshStore.addFace(indexOffset + 9, indexOffset + 8, indexOffset + 11);
|
meshStore.addFace(indexOffset + 9, indexOffset + 8, indexOffset + 11);
|
||||||
@ -293,14 +292,10 @@ public class BlockMeshgen {
|
|||||||
//
|
//
|
||||||
|
|
||||||
//verts
|
//verts
|
||||||
meshStore.addVert(quad.x * BlockChunkData.BLOCK_SIZE_MULTIPLIER, quad.y * BlockChunkData.BLOCK_SIZE_MULTIPLIER, (quad.z + depth) * BlockChunkData.BLOCK_SIZE_MULTIPLIER);
|
meshStore.addVert(quad.x * finalScalingFactor, quad.y * finalScalingFactor, (quad.z + depth) * finalScalingFactor);
|
||||||
meshStore.addVert((quad.x + quad.w) * BlockChunkData.BLOCK_SIZE_MULTIPLIER, quad.y * BlockChunkData.BLOCK_SIZE_MULTIPLIER, (quad.z + depth) * BlockChunkData.BLOCK_SIZE_MULTIPLIER);
|
meshStore.addVert((quad.x + quad.w) * finalScalingFactor, quad.y * finalScalingFactor, (quad.z + depth) * finalScalingFactor);
|
||||||
meshStore.addVert(quad.x * BlockChunkData.BLOCK_SIZE_MULTIPLIER, (quad.y + quad.h) * BlockChunkData.BLOCK_SIZE_MULTIPLIER, (quad.z + depth) * BlockChunkData.BLOCK_SIZE_MULTIPLIER);
|
meshStore.addVert(quad.x * finalScalingFactor, (quad.y + quad.h) * finalScalingFactor, (quad.z + depth) * finalScalingFactor);
|
||||||
meshStore.addVert((quad.x + quad.w) * BlockChunkData.BLOCK_SIZE_MULTIPLIER, (quad.y + quad.h) * BlockChunkData.BLOCK_SIZE_MULTIPLIER, (quad.z + depth) * BlockChunkData.BLOCK_SIZE_MULTIPLIER);
|
meshStore.addVert((quad.x + quad.w) * finalScalingFactor, (quad.y + quad.h) * finalScalingFactor, (quad.z + depth) * finalScalingFactor);
|
||||||
// verts.add(new Vector3f(quad.x, quad.y, quad.z + depth).mul(BlockChunkData.BLOCK_SIZE_MULTIPLIER));
|
|
||||||
// verts.add(new Vector3f(quad.x + quad.w, quad.y, quad.z + depth).mul(BlockChunkData.BLOCK_SIZE_MULTIPLIER));
|
|
||||||
// verts.add(new Vector3f(quad.x, quad.y + quad.h, quad.z + depth).mul(BlockChunkData.BLOCK_SIZE_MULTIPLIER));
|
|
||||||
// verts.add(new Vector3f(quad.x + quad.w, quad.y + quad.h, quad.z + depth).mul(BlockChunkData.BLOCK_SIZE_MULTIPLIER));
|
|
||||||
//indices
|
//indices
|
||||||
meshStore.addFace(indexOffset + 12, indexOffset + 15, indexOffset + 14);
|
meshStore.addFace(indexOffset + 12, indexOffset + 15, indexOffset + 14);
|
||||||
meshStore.addFace(indexOffset + 12, indexOffset + 13, indexOffset + 15);
|
meshStore.addFace(indexOffset + 12, indexOffset + 13, indexOffset + 15);
|
||||||
@ -326,10 +321,10 @@ public class BlockMeshgen {
|
|||||||
//
|
//
|
||||||
|
|
||||||
//verts
|
//verts
|
||||||
meshStore.addVert((quad.x + quad.w) * BlockChunkData.BLOCK_SIZE_MULTIPLIER, quad.y * BlockChunkData.BLOCK_SIZE_MULTIPLIER, quad.z * BlockChunkData.BLOCK_SIZE_MULTIPLIER);
|
meshStore.addVert((quad.x + quad.w) * finalScalingFactor, quad.y * finalScalingFactor, quad.z * finalScalingFactor);
|
||||||
meshStore.addVert((quad.x + quad.w) * BlockChunkData.BLOCK_SIZE_MULTIPLIER, quad.y * BlockChunkData.BLOCK_SIZE_MULTIPLIER, (quad.z + depth) * BlockChunkData.BLOCK_SIZE_MULTIPLIER);
|
meshStore.addVert((quad.x + quad.w) * finalScalingFactor, quad.y * finalScalingFactor, (quad.z + depth) * finalScalingFactor);
|
||||||
meshStore.addVert((quad.x + quad.w) * BlockChunkData.BLOCK_SIZE_MULTIPLIER, (quad.y + quad.h) * BlockChunkData.BLOCK_SIZE_MULTIPLIER, quad.z * BlockChunkData.BLOCK_SIZE_MULTIPLIER);
|
meshStore.addVert((quad.x + quad.w) * finalScalingFactor, (quad.y + quad.h) * finalScalingFactor, quad.z * finalScalingFactor);
|
||||||
meshStore.addVert((quad.x + quad.w) * BlockChunkData.BLOCK_SIZE_MULTIPLIER, (quad.y + quad.h) * BlockChunkData.BLOCK_SIZE_MULTIPLIER, (quad.z + depth) * BlockChunkData.BLOCK_SIZE_MULTIPLIER);
|
meshStore.addVert((quad.x + quad.w) * finalScalingFactor, (quad.y + quad.h) * finalScalingFactor, (quad.z + depth) * finalScalingFactor);
|
||||||
// verts.add(new Vector3f(quad.x + quad.w, quad.y, quad.z ).mul(BlockChunkData.BLOCK_SIZE_MULTIPLIER));
|
// verts.add(new Vector3f(quad.x + quad.w, quad.y, quad.z ).mul(BlockChunkData.BLOCK_SIZE_MULTIPLIER));
|
||||||
// verts.add(new Vector3f(quad.x + quad.w, quad.y, quad.z + depth).mul(BlockChunkData.BLOCK_SIZE_MULTIPLIER));
|
// verts.add(new Vector3f(quad.x + quad.w, quad.y, quad.z + depth).mul(BlockChunkData.BLOCK_SIZE_MULTIPLIER));
|
||||||
// verts.add(new Vector3f(quad.x + quad.w, quad.y + quad.h, quad.z ).mul(BlockChunkData.BLOCK_SIZE_MULTIPLIER));
|
// verts.add(new Vector3f(quad.x + quad.w, quad.y + quad.h, quad.z ).mul(BlockChunkData.BLOCK_SIZE_MULTIPLIER));
|
||||||
@ -426,7 +421,7 @@ public class BlockMeshgen {
|
|||||||
if(quad1.x == quad2.x && quad1.y == quad2.y && quad1.w == quad2.w && quad1.h == quad2.h && quad1.z + zEnd == quad2.z){
|
if(quad1.x == quad2.x && quad1.y == quad2.y && quad1.w == quad2.w && quad1.h == quad2.h && quad1.z + zEnd == quad2.z){
|
||||||
zEnd++;
|
zEnd++;
|
||||||
} else {
|
} else {
|
||||||
BlockMeshgen.meshifyBox(meshGenStore,quad1,zEnd,quad1.type);
|
BlockMeshgen.meshifyBox(meshGenStore,quad1,zEnd,quad1.type,scalingFactor);
|
||||||
quad1 = quad2;
|
quad1 = quad2;
|
||||||
|
|
||||||
// BlockSingleShape blockSingleShape = BlockMeshgen.copyDataToShape(meshGenStore, vertCount, faceCount);
|
// BlockSingleShape blockSingleShape = BlockMeshgen.copyDataToShape(meshGenStore, vertCount, faceCount);
|
||||||
@ -439,7 +434,7 @@ public class BlockMeshgen {
|
|||||||
i = i + zEnd;
|
i = i + zEnd;
|
||||||
}
|
}
|
||||||
if(quad1 != null){
|
if(quad1 != null){
|
||||||
BlockMeshgen.meshifyBox(meshGenStore,quad1,zEnd,quad1.type);
|
BlockMeshgen.meshifyBox(meshGenStore,quad1,zEnd,quad1.type,scalingFactor);
|
||||||
// BlockSingleShape blockSingleShape = BlockMeshgen.copyDataToShape(meshGenStore, vertCount, faceCount);
|
// BlockSingleShape blockSingleShape = BlockMeshgen.copyDataToShape(meshGenStore, vertCount, faceCount);
|
||||||
// vertCount = meshGenStore.getVertCount();
|
// vertCount = meshGenStore.getVertCount();
|
||||||
// faceCount = meshGenStore.getFaceCount();
|
// faceCount = meshGenStore.getFaceCount();
|
||||||
|
|||||||
@ -297,7 +297,7 @@ public class BlockMeshgenTests {
|
|||||||
quad.set(0, 0, 0, 1, 1,1);
|
quad.set(0, 0, 0, 1, 1,1);
|
||||||
|
|
||||||
//call
|
//call
|
||||||
BlockMeshgen.meshifyBox(store, quad, 1, 1);
|
BlockMeshgen.meshifyBox(store, quad, 1, 1, 1);
|
||||||
|
|
||||||
|
|
||||||
//error check result
|
//error check result
|
||||||
@ -355,7 +355,7 @@ public class BlockMeshgenTests {
|
|||||||
quad.set(0, 0, 0, 1, 1, 1);
|
quad.set(0, 0, 0, 1, 1, 1);
|
||||||
|
|
||||||
//call
|
//call
|
||||||
BlockMeshgen.meshifyBox(store, quad, 1, 1);
|
BlockMeshgen.meshifyBox(store, quad, 1, 1, 1);
|
||||||
|
|
||||||
|
|
||||||
//error check result
|
//error check result
|
||||||
@ -411,7 +411,7 @@ public class BlockMeshgenTests {
|
|||||||
quad.set(0, 0, 0, 1, 1, 1);
|
quad.set(0, 0, 0, 1, 1, 1);
|
||||||
|
|
||||||
//call
|
//call
|
||||||
BlockMeshgen.meshifyBox(store, quad, 1, 1);
|
BlockMeshgen.meshifyBox(store, quad, 1, 1, 1);
|
||||||
|
|
||||||
|
|
||||||
//error check result
|
//error check result
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user