performance work
All checks were successful
studiorailgun/Renderer/pipeline/head This commit looks good
All checks were successful
studiorailgun/Renderer/pipeline/head This commit looks good
This commit is contained in:
parent
c630a184aa
commit
75eb75b2db
@ -1385,6 +1385,11 @@ Code cleanup
|
|||||||
Small ServerAttackTree fix (for when not holding an item)
|
Small ServerAttackTree fix (for when not holding an item)
|
||||||
Work on optimization
|
Work on optimization
|
||||||
|
|
||||||
|
(03/30/2025)
|
||||||
|
Reorganizing terrain data
|
||||||
|
ServerGroundMovementTree concurrent modify fix
|
||||||
|
TransvoxelModelGeneration allocation reduction
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
# TODO
|
# TODO
|
||||||
|
|||||||
@ -1,4 +1,4 @@
|
|||||||
package electrosphere.entity.types.terrain;
|
package electrosphere.client.terrain.data;
|
||||||
|
|
||||||
import java.nio.FloatBuffer;
|
import java.nio.FloatBuffer;
|
||||||
import java.nio.IntBuffer;
|
import java.nio.IntBuffer;
|
||||||
@ -12,18 +12,35 @@ import electrosphere.entity.state.collidable.TriGeomData;
|
|||||||
*/
|
*/
|
||||||
public class TerrainChunkData implements TriGeomData {
|
public class TerrainChunkData implements TriGeomData {
|
||||||
|
|
||||||
//the verts
|
/**
|
||||||
|
* The vertices
|
||||||
|
*/
|
||||||
float[] vertices;
|
float[] vertices;
|
||||||
//normals
|
|
||||||
|
/**
|
||||||
|
* The normals
|
||||||
|
*/
|
||||||
float[] normals;
|
float[] normals;
|
||||||
//faces
|
|
||||||
|
/**
|
||||||
|
* The indices of the faces
|
||||||
|
*/
|
||||||
int[] faceElements;
|
int[] faceElements;
|
||||||
//UVs
|
|
||||||
|
/**
|
||||||
|
* The UVs
|
||||||
|
*/
|
||||||
float[] uvs;
|
float[] uvs;
|
||||||
//texture samplers
|
|
||||||
float[] textureSamplers; //what textures in the atlas to sample
|
/**
|
||||||
//texture ratio vector
|
* what textures in the atlas to sample
|
||||||
float[] textureRatioVectors; //HOW MUCH of each texture in the atlas to sample
|
*/
|
||||||
|
float[] textureSamplers;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* HOW MUCH of each texture in the atlas to sample
|
||||||
|
*/
|
||||||
|
float[] textureRatioVectors;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The various buffers of data to send to the gpu
|
* The various buffers of data to send to the gpu
|
||||||
@ -133,26 +150,50 @@ public class TerrainChunkData implements TriGeomData {
|
|||||||
return lod;
|
return lod;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Gets the vertex buffer
|
||||||
|
* @return The buffer
|
||||||
|
*/
|
||||||
public FloatBuffer getVertexArrayBufferData() {
|
public FloatBuffer getVertexArrayBufferData() {
|
||||||
return vertexArrayBufferData;
|
return vertexArrayBufferData;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Gets the normal buffer
|
||||||
|
* @return The buffer
|
||||||
|
*/
|
||||||
public FloatBuffer getNormalArrayBufferData() {
|
public FloatBuffer getNormalArrayBufferData() {
|
||||||
return normalArrayBufferData;
|
return normalArrayBufferData;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Gets the texture array buffer
|
||||||
|
* @return The buffer
|
||||||
|
*/
|
||||||
public FloatBuffer getTextureArrayBufferData() {
|
public FloatBuffer getTextureArrayBufferData() {
|
||||||
return textureArrayBufferData;
|
return textureArrayBufferData;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Gets the index buffer
|
||||||
|
* @return The buffer
|
||||||
|
*/
|
||||||
public IntBuffer getElementArrayBufferData() {
|
public IntBuffer getElementArrayBufferData() {
|
||||||
return elementArrayBufferData;
|
return elementArrayBufferData;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Gets the sampler index buffer
|
||||||
|
* @return The buffer
|
||||||
|
*/
|
||||||
public FloatBuffer getSamplerBuffer() {
|
public FloatBuffer getSamplerBuffer() {
|
||||||
return samplerBuffer;
|
return samplerBuffer;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Gets the sampler ratio buffer
|
||||||
|
* @return The buffer
|
||||||
|
*/
|
||||||
public FloatBuffer getRatioBuffer() {
|
public FloatBuffer getRatioBuffer() {
|
||||||
return ratioBuffer;
|
return ratioBuffer;
|
||||||
}
|
}
|
||||||
@ -23,10 +23,10 @@ import electrosphere.client.terrain.cache.ClientTerrainCache;
|
|||||||
import electrosphere.client.terrain.cells.ClientDrawCellManager;
|
import electrosphere.client.terrain.cells.ClientDrawCellManager;
|
||||||
import electrosphere.client.terrain.cells.DrawCell;
|
import electrosphere.client.terrain.cells.DrawCell;
|
||||||
import electrosphere.client.terrain.cells.VoxelTextureAtlas;
|
import electrosphere.client.terrain.cells.VoxelTextureAtlas;
|
||||||
|
import electrosphere.client.terrain.data.TerrainChunkData;
|
||||||
import electrosphere.engine.Globals;
|
import electrosphere.engine.Globals;
|
||||||
import electrosphere.entity.ClientEntityUtils;
|
import electrosphere.entity.ClientEntityUtils;
|
||||||
import electrosphere.entity.Entity;
|
import electrosphere.entity.Entity;
|
||||||
import electrosphere.entity.types.terrain.TerrainChunkData;
|
|
||||||
import electrosphere.logger.LoggerInterface;
|
import electrosphere.logger.LoggerInterface;
|
||||||
import electrosphere.net.parser.net.message.TerrainMessage;
|
import electrosphere.net.parser.net.message.TerrainMessage;
|
||||||
import electrosphere.renderer.meshgen.TransvoxelModelGeneration;
|
import electrosphere.renderer.meshgen.TransvoxelModelGeneration;
|
||||||
|
|||||||
@ -2,8 +2,8 @@ package electrosphere.client.terrain.manager;
|
|||||||
|
|
||||||
import electrosphere.client.terrain.cells.DrawCell;
|
import electrosphere.client.terrain.cells.DrawCell;
|
||||||
import electrosphere.client.terrain.cells.VoxelTextureAtlas;
|
import electrosphere.client.terrain.cells.VoxelTextureAtlas;
|
||||||
|
import electrosphere.client.terrain.data.TerrainChunkData;
|
||||||
import electrosphere.entity.Entity;
|
import electrosphere.entity.Entity;
|
||||||
import electrosphere.entity.types.terrain.TerrainChunkData;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Represents an item in a queue of terrain chunks to have models generated in the main thread
|
* Represents an item in a queue of terrain chunks to have models generated in the main thread
|
||||||
|
|||||||
@ -37,6 +37,7 @@ import electrosphere.util.math.SpatialMathUtils;
|
|||||||
|
|
||||||
import java.util.LinkedList;
|
import java.util.LinkedList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.concurrent.locks.ReentrantLock;
|
||||||
|
|
||||||
import org.joml.Quaterniond;
|
import org.joml.Quaterniond;
|
||||||
import org.joml.Vector3d;
|
import org.joml.Vector3d;
|
||||||
@ -49,6 +50,11 @@ Behavior tree for movement in an entity
|
|||||||
*/
|
*/
|
||||||
public class ServerGroundMovementTree implements BehaviorTree {
|
public class ServerGroundMovementTree implements BehaviorTree {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Lock for handling threading with network messages
|
||||||
|
*/
|
||||||
|
static ReentrantLock lock = new ReentrantLock();
|
||||||
|
|
||||||
|
|
||||||
String animationStartUp = Animation.ANIMATION_MOVEMENT_STARTUP;
|
String animationStartUp = Animation.ANIMATION_MOVEMENT_STARTUP;
|
||||||
String animationMain = Animation.ANIMATION_MOVEMENT_MOVE;
|
String animationMain = Animation.ANIMATION_MOVEMENT_MOVE;
|
||||||
@ -216,8 +222,8 @@ public class ServerGroundMovementTree implements BehaviorTree {
|
|||||||
}
|
}
|
||||||
|
|
||||||
//parse attached network messages
|
//parse attached network messages
|
||||||
|
lock.lock();
|
||||||
for(EntityMessage message : networkMessageQueue){
|
for(EntityMessage message : networkMessageQueue){
|
||||||
networkMessageQueue.remove(message);
|
|
||||||
long updateTime = message.gettime();
|
long updateTime = message.gettime();
|
||||||
// System.out.println("MOVE to " + message.getX() + " " + message.getY() + " " + message.getZ());
|
// System.out.println("MOVE to " + message.getX() + " " + message.getY() + " " + message.getZ());
|
||||||
switch(message.getMessageSubtype()){
|
switch(message.getMessageSubtype()){
|
||||||
@ -247,6 +253,8 @@ public class ServerGroundMovementTree implements BehaviorTree {
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
networkMessageQueue.clear();
|
||||||
|
lock.unlock();
|
||||||
|
|
||||||
// System.out.println(movementVector + " " + velocity * Main.deltaTime);
|
// System.out.println(movementVector + " " + velocity * Main.deltaTime);
|
||||||
|
|
||||||
@ -471,8 +479,14 @@ public class ServerGroundMovementTree implements BehaviorTree {
|
|||||||
return velocity * sprintModifier * walkModifier * attackModifier;
|
return velocity * sprintModifier * walkModifier * attackModifier;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Adds a network message for the tree to parse
|
||||||
|
* @param networkMessage The message
|
||||||
|
*/
|
||||||
public void addNetworkMessage(EntityMessage networkMessage) {
|
public void addNetworkMessage(EntityMessage networkMessage) {
|
||||||
|
lock.lock();
|
||||||
networkMessageQueue.add(networkMessage);
|
networkMessageQueue.add(networkMessage);
|
||||||
|
lock.unlock();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@ -12,6 +12,7 @@ import electrosphere.client.block.BlockChunkData;
|
|||||||
import electrosphere.client.terrain.cells.ClientDrawCellManager;
|
import electrosphere.client.terrain.cells.ClientDrawCellManager;
|
||||||
import electrosphere.client.terrain.cells.DrawCell;
|
import electrosphere.client.terrain.cells.DrawCell;
|
||||||
import electrosphere.client.terrain.cells.VoxelTextureAtlas;
|
import electrosphere.client.terrain.cells.VoxelTextureAtlas;
|
||||||
|
import electrosphere.client.terrain.data.TerrainChunkData;
|
||||||
import electrosphere.client.terrain.manager.ClientTerrainManager;
|
import electrosphere.client.terrain.manager.ClientTerrainManager;
|
||||||
import electrosphere.collision.PhysicsEntityUtils;
|
import electrosphere.collision.PhysicsEntityUtils;
|
||||||
import electrosphere.collision.PhysicsUtils;
|
import electrosphere.collision.PhysicsUtils;
|
||||||
@ -67,7 +68,7 @@ public class TerrainChunk {
|
|||||||
if(Globals.clientScene.containsEntity(rVal)){
|
if(Globals.clientScene.containsEntity(rVal)){
|
||||||
String modelPath = ClientTerrainManager.queueTerrainGridGeneration(data, atlas, notifyTarget, toDelete);
|
String modelPath = ClientTerrainManager.queueTerrainGridGeneration(data, atlas, notifyTarget, toDelete);
|
||||||
EntityCreationUtils.makeEntityDrawablePreexistingModel(rVal, modelPath);
|
EntityCreationUtils.makeEntityDrawablePreexistingModel(rVal, modelPath);
|
||||||
if(levelOfDetail == BlockChunkData.LOD_FULL_RES && data.faceElements.length > 0){
|
if(levelOfDetail == BlockChunkData.LOD_FULL_RES && data.getFaceElements().length > 0){
|
||||||
PhysicsEntityUtils.clientAttachTriGeomRigidBody(rVal, data);
|
PhysicsEntityUtils.clientAttachTriGeomRigidBody(rVal, data);
|
||||||
Vector3d finalPos = new Vector3d(EntityUtils.getPosition(rVal));
|
Vector3d finalPos = new Vector3d(EntityUtils.getPosition(rVal));
|
||||||
CollisionObjUtils.clientPositionCharacter(rVal, finalPos, new Quaterniond());
|
CollisionObjUtils.clientPositionCharacter(rVal, finalPos, new Quaterniond());
|
||||||
@ -116,7 +117,7 @@ public class TerrainChunk {
|
|||||||
TransvoxelChunkData chunkData = new TransvoxelChunkData(weights, values, ClientDrawCellManager.FULL_RES_LOD);
|
TransvoxelChunkData chunkData = new TransvoxelChunkData(weights, values, ClientDrawCellManager.FULL_RES_LOD);
|
||||||
TerrainChunkData data = TransvoxelModelGeneration.generateTerrainChunkData(chunkData);
|
TerrainChunkData data = TransvoxelModelGeneration.generateTerrainChunkData(chunkData);
|
||||||
|
|
||||||
if(data.vertices.length > 0){
|
if(data.getVertices().length > 0){
|
||||||
PhysicsEntityUtils.serverAttachTriGeomRigidBody(entity, data);
|
PhysicsEntityUtils.serverAttachTriGeomRigidBody(entity, data);
|
||||||
Realm realm = Globals.realmManager.getEntityRealm(entity);
|
Realm realm = Globals.realmManager.getEntityRealm(entity);
|
||||||
DBody terrainBody = PhysicsEntityUtils.getDBody(entity);
|
DBody terrainBody = PhysicsEntityUtils.getDBody(entity);
|
||||||
|
|||||||
@ -13,8 +13,8 @@ import org.joml.Vector3f;
|
|||||||
import static org.lwjgl.opengl.GL30.glBindVertexArray;
|
import static org.lwjgl.opengl.GL30.glBindVertexArray;
|
||||||
|
|
||||||
import electrosphere.client.terrain.cells.VoxelTextureAtlas;
|
import electrosphere.client.terrain.cells.VoxelTextureAtlas;
|
||||||
|
import electrosphere.client.terrain.data.TerrainChunkData;
|
||||||
import electrosphere.engine.Globals;
|
import electrosphere.engine.Globals;
|
||||||
import electrosphere.entity.types.terrain.TerrainChunkData;
|
|
||||||
import electrosphere.renderer.model.Material;
|
import electrosphere.renderer.model.Material;
|
||||||
import electrosphere.renderer.model.Mesh;
|
import electrosphere.renderer.model.Mesh;
|
||||||
import electrosphere.renderer.model.Model;
|
import electrosphere.renderer.model.Model;
|
||||||
|
|||||||
@ -11,8 +11,8 @@ import org.joml.Vector3f;
|
|||||||
import org.lwjgl.opengl.GL40;
|
import org.lwjgl.opengl.GL40;
|
||||||
|
|
||||||
import electrosphere.client.terrain.cells.VoxelTextureAtlas;
|
import electrosphere.client.terrain.cells.VoxelTextureAtlas;
|
||||||
|
import electrosphere.client.terrain.data.TerrainChunkData;
|
||||||
import electrosphere.engine.Globals;
|
import electrosphere.engine.Globals;
|
||||||
import electrosphere.entity.types.terrain.TerrainChunkData;
|
|
||||||
import electrosphere.logger.LoggerInterface;
|
import electrosphere.logger.LoggerInterface;
|
||||||
import electrosphere.renderer.model.Material;
|
import electrosphere.renderer.model.Material;
|
||||||
import electrosphere.renderer.model.Mesh;
|
import electrosphere.renderer.model.Mesh;
|
||||||
@ -63,7 +63,7 @@ public class TransvoxelModelGeneration {
|
|||||||
/**
|
/**
|
||||||
* Size of the vector pool
|
* Size of the vector pool
|
||||||
*/
|
*/
|
||||||
static final int VECTOR_POOL_SIZE = 11;
|
static final int VECTOR_POOL_SIZE = 13;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Threshold of normal dot product
|
* Threshold of normal dot product
|
||||||
@ -1277,17 +1277,39 @@ public class TransvoxelModelGeneration {
|
|||||||
int x = ServerTerrainChunk.CHUNK_DATA_GENERATOR_SIZE - 2;
|
int x = ServerTerrainChunk.CHUNK_DATA_GENERATOR_SIZE - 2;
|
||||||
for(int y = yStartIndex; y < yEndIndex; y++){
|
for(int y = yStartIndex; y < yEndIndex; y++){
|
||||||
for(int z = zStartIndex; z < zEndIndex; z++){
|
for(int z = zStartIndex; z < zEndIndex; z++){
|
||||||
|
vecPool[0].set(x+1,y,z);
|
||||||
|
vecPool[1].set(x+1,y+TRANSITION_CELL_WIDTH,z);
|
||||||
|
vecPool[2].set(x+1,y+1,z);
|
||||||
|
vecPool[3].set(x+1,y,z+TRANSITION_CELL_WIDTH);
|
||||||
|
vecPool[4].set(x+1,y+TRANSITION_CELL_WIDTH,z+TRANSITION_CELL_WIDTH);
|
||||||
|
vecPool[5].set(x+1,y+1,z+TRANSITION_CELL_WIDTH);
|
||||||
|
vecPool[6].set(x+1,y,z+1);
|
||||||
|
vecPool[7].set(x+1,y+TRANSITION_CELL_WIDTH,z+1);
|
||||||
|
vecPool[8].set(x+1,y+1,z+1);
|
||||||
|
|
||||||
|
vecPool[9].set(x+TRANSITION_CELL_WIDTH,y,z);
|
||||||
|
vecPool[10].set(x+TRANSITION_CELL_WIDTH,y+1,z);
|
||||||
|
vecPool[11].set(x+TRANSITION_CELL_WIDTH,y,z+1);
|
||||||
|
vecPool[12].set(x+TRANSITION_CELL_WIDTH,y+1,z+1);
|
||||||
//
|
//
|
||||||
//Generate the transition cell
|
//Generate the transition cell
|
||||||
//
|
//
|
||||||
currentTransitionCell.setValues(
|
currentTransitionCell.setValues(
|
||||||
//complex face vertex coordinates
|
//complex face vertex coordinates
|
||||||
new Vector3f(x+1,y,z), new Vector3f(x+1,y+TRANSITION_CELL_WIDTH,z), new Vector3f(x+1,y+1,z),
|
// new Vector3f(x+1,y,z), new Vector3f(x+1,y+TRANSITION_CELL_WIDTH,z), new Vector3f(x+1,y+1,z),
|
||||||
new Vector3f(x+1,y,z+TRANSITION_CELL_WIDTH), new Vector3f(x+1,y+TRANSITION_CELL_WIDTH,z+TRANSITION_CELL_WIDTH), new Vector3f(x+1,y+1,z+TRANSITION_CELL_WIDTH),
|
// new Vector3f(x+1,y,z+TRANSITION_CELL_WIDTH), new Vector3f(x+1,y+TRANSITION_CELL_WIDTH,z+TRANSITION_CELL_WIDTH), new Vector3f(x+1,y+1,z+TRANSITION_CELL_WIDTH),
|
||||||
new Vector3f(x+1,y,z+1), new Vector3f(x+1,y+TRANSITION_CELL_WIDTH,z+1), new Vector3f(x+1,y+1,z+1),
|
// new Vector3f(x+1,y,z+1), new Vector3f(x+1,y+TRANSITION_CELL_WIDTH,z+1), new Vector3f(x+1,y+1,z+1),
|
||||||
|
// //simple face vertex coordinates
|
||||||
|
// new Vector3f(x+TRANSITION_CELL_WIDTH,y,z), new Vector3f(x+TRANSITION_CELL_WIDTH,y+1,z),
|
||||||
|
// new Vector3f(x+TRANSITION_CELL_WIDTH,y,z+1), new Vector3f(x+TRANSITION_CELL_WIDTH,y+1,z+1),
|
||||||
|
|
||||||
|
//complex face vertex coordinates
|
||||||
|
vecPool[0], vecPool[1], vecPool[2],
|
||||||
|
vecPool[3], vecPool[4], vecPool[5],
|
||||||
|
vecPool[6], vecPool[7], vecPool[8],
|
||||||
//simple face vertex coordinates
|
//simple face vertex coordinates
|
||||||
new Vector3f(x+TRANSITION_CELL_WIDTH,y,z), new Vector3f(x+TRANSITION_CELL_WIDTH,y+1,z),
|
vecPool[9], vecPool[10],
|
||||||
new Vector3f(x+TRANSITION_CELL_WIDTH,y,z+1), new Vector3f(x+TRANSITION_CELL_WIDTH,y+1,z+1),
|
vecPool[11], vecPool[12],
|
||||||
//complex face iso values
|
//complex face iso values
|
||||||
chunkData.xPositiveEdgeIso[(y+0)*2+0][(z+0)*2+0], chunkData.xPositiveEdgeIso[(y+0)*2+1][(z+0)*2+0], chunkData.xPositiveEdgeIso[(y+1)*2+0][(z+0)*2+0],
|
chunkData.xPositiveEdgeIso[(y+0)*2+0][(z+0)*2+0], chunkData.xPositiveEdgeIso[(y+0)*2+1][(z+0)*2+0], chunkData.xPositiveEdgeIso[(y+1)*2+0][(z+0)*2+0],
|
||||||
chunkData.xPositiveEdgeIso[(y+0)*2+0][(z+0)*2+1], chunkData.xPositiveEdgeIso[(y+0)*2+1][(z+0)*2+1], chunkData.xPositiveEdgeIso[(y+1)*2+0][(z+0)*2+1],
|
chunkData.xPositiveEdgeIso[(y+0)*2+0][(z+0)*2+1], chunkData.xPositiveEdgeIso[(y+0)*2+1][(z+0)*2+1], chunkData.xPositiveEdgeIso[(y+1)*2+0][(z+0)*2+1],
|
||||||
@ -1367,17 +1389,39 @@ public class TransvoxelModelGeneration {
|
|||||||
int x = 0;
|
int x = 0;
|
||||||
for(int y = yStartIndex; y < yEndIndex; y++){
|
for(int y = yStartIndex; y < yEndIndex; y++){
|
||||||
for(int z = zStartIndex; z < zEndIndex; z++){
|
for(int z = zStartIndex; z < zEndIndex; z++){
|
||||||
|
vecPool[0].set(x,y,z);
|
||||||
|
vecPool[1].set(x,y+TRANSITION_CELL_WIDTH,z);
|
||||||
|
vecPool[2].set(x,y+1,z);
|
||||||
|
vecPool[3].set(x,y,z+TRANSITION_CELL_WIDTH);
|
||||||
|
vecPool[4].set(x,y+TRANSITION_CELL_WIDTH,z+TRANSITION_CELL_WIDTH);
|
||||||
|
vecPool[5].set(x,y+1,z+TRANSITION_CELL_WIDTH);
|
||||||
|
vecPool[6].set(x,y,z+1);
|
||||||
|
vecPool[7].set(x,y+TRANSITION_CELL_WIDTH,z+1);
|
||||||
|
vecPool[8].set(x,y+1,z+1);
|
||||||
|
|
||||||
|
vecPool[9].set(x+TRANSITION_CELL_WIDTH,y,z);
|
||||||
|
vecPool[10].set(x+TRANSITION_CELL_WIDTH,y+1,z);
|
||||||
|
vecPool[11].set(x+TRANSITION_CELL_WIDTH,y,z+1);
|
||||||
|
vecPool[12].set(x+TRANSITION_CELL_WIDTH,y+1,z+1);
|
||||||
//
|
//
|
||||||
//Generate the transition cell
|
//Generate the transition cell
|
||||||
//
|
//
|
||||||
currentTransitionCell.setValues(
|
currentTransitionCell.setValues(
|
||||||
|
// //complex face vertex coordinates
|
||||||
|
// new Vector3f(x,y,z), new Vector3f(x,y+TRANSITION_CELL_WIDTH,z), new Vector3f(x,y+1,z),
|
||||||
|
// new Vector3f(x,y,z+TRANSITION_CELL_WIDTH), new Vector3f(x,y+TRANSITION_CELL_WIDTH,z+TRANSITION_CELL_WIDTH), new Vector3f(x,y+1,z+TRANSITION_CELL_WIDTH),
|
||||||
|
// new Vector3f(x,y,z+1), new Vector3f(x,y+TRANSITION_CELL_WIDTH,z+1), new Vector3f(x,y+1,z+1),
|
||||||
|
// //simple face vertex coordinates
|
||||||
|
// new Vector3f(x+TRANSITION_CELL_WIDTH,y,z), new Vector3f(x+TRANSITION_CELL_WIDTH,y+1,z),
|
||||||
|
// new Vector3f(x+TRANSITION_CELL_WIDTH,y,z+1), new Vector3f(x+TRANSITION_CELL_WIDTH,y+1,z+1),
|
||||||
|
|
||||||
//complex face vertex coordinates
|
//complex face vertex coordinates
|
||||||
new Vector3f(x,y,z), new Vector3f(x,y+TRANSITION_CELL_WIDTH,z), new Vector3f(x,y+1,z),
|
vecPool[0], vecPool[1], vecPool[2],
|
||||||
new Vector3f(x,y,z+TRANSITION_CELL_WIDTH), new Vector3f(x,y+TRANSITION_CELL_WIDTH,z+TRANSITION_CELL_WIDTH), new Vector3f(x,y+1,z+TRANSITION_CELL_WIDTH),
|
vecPool[3], vecPool[4], vecPool[5],
|
||||||
new Vector3f(x,y,z+1), new Vector3f(x,y+TRANSITION_CELL_WIDTH,z+1), new Vector3f(x,y+1,z+1),
|
vecPool[6], vecPool[7], vecPool[8],
|
||||||
//simple face vertex coordinates
|
//simple face vertex coordinates
|
||||||
new Vector3f(x+TRANSITION_CELL_WIDTH,y,z), new Vector3f(x+TRANSITION_CELL_WIDTH,y+1,z),
|
vecPool[9], vecPool[10],
|
||||||
new Vector3f(x+TRANSITION_CELL_WIDTH,y,z+1), new Vector3f(x+TRANSITION_CELL_WIDTH,y+1,z+1),
|
vecPool[11], vecPool[12],
|
||||||
//complex face iso values
|
//complex face iso values
|
||||||
chunkData.xNegativeEdgeIso[(y+0)*2+0][(z+0)*2+0], chunkData.xNegativeEdgeIso[(y+0)*2+1][(z+0)*2+0], chunkData.xNegativeEdgeIso[(y+1)*2+0][(z+0)*2+0],
|
chunkData.xNegativeEdgeIso[(y+0)*2+0][(z+0)*2+0], chunkData.xNegativeEdgeIso[(y+0)*2+1][(z+0)*2+0], chunkData.xNegativeEdgeIso[(y+1)*2+0][(z+0)*2+0],
|
||||||
chunkData.xNegativeEdgeIso[(y+0)*2+0][(z+0)*2+1], chunkData.xNegativeEdgeIso[(y+0)*2+1][(z+0)*2+1], chunkData.xNegativeEdgeIso[(y+1)*2+0][(z+0)*2+1],
|
chunkData.xNegativeEdgeIso[(y+0)*2+0][(z+0)*2+1], chunkData.xNegativeEdgeIso[(y+0)*2+1][(z+0)*2+1], chunkData.xNegativeEdgeIso[(y+1)*2+0][(z+0)*2+1],
|
||||||
@ -1456,17 +1500,39 @@ public class TransvoxelModelGeneration {
|
|||||||
int y = ServerTerrainChunk.CHUNK_DATA_GENERATOR_SIZE - 2;
|
int y = ServerTerrainChunk.CHUNK_DATA_GENERATOR_SIZE - 2;
|
||||||
for(int x = xStartIndex; x < xEndIndex; x++){
|
for(int x = xStartIndex; x < xEndIndex; x++){
|
||||||
for(int z = zStartIndex; z < zEndIndex; z++){
|
for(int z = zStartIndex; z < zEndIndex; z++){
|
||||||
|
vecPool[0].set(x,y+1,z);
|
||||||
|
vecPool[1].set(x+TRANSITION_CELL_WIDTH,y+1,z);
|
||||||
|
vecPool[2].set(x+1,y+1,z);
|
||||||
|
vecPool[3].set(x,y+1,z+TRANSITION_CELL_WIDTH);
|
||||||
|
vecPool[4].set(x+TRANSITION_CELL_WIDTH,y+1,z+TRANSITION_CELL_WIDTH);
|
||||||
|
vecPool[5].set(x+1,y+1,z+TRANSITION_CELL_WIDTH);
|
||||||
|
vecPool[6].set(x,y+1,z+1);
|
||||||
|
vecPool[7].set(x+TRANSITION_CELL_WIDTH,y+1,z+1);
|
||||||
|
vecPool[8].set(x+1,y+1,z+1);
|
||||||
|
|
||||||
|
vecPool[9].set(x,y+TRANSITION_CELL_WIDTH,z);
|
||||||
|
vecPool[10].set(x+1,y+TRANSITION_CELL_WIDTH,z);
|
||||||
|
vecPool[11].set(x,y+TRANSITION_CELL_WIDTH,z+1);
|
||||||
|
vecPool[12].set(x+1,y+TRANSITION_CELL_WIDTH,z+1);
|
||||||
//
|
//
|
||||||
//Generate the transition cell
|
//Generate the transition cell
|
||||||
//
|
//
|
||||||
currentTransitionCell.setValues(
|
currentTransitionCell.setValues(
|
||||||
|
// //complex face vertex coordinates
|
||||||
|
// new Vector3f(x,y+1,z), new Vector3f(x+TRANSITION_CELL_WIDTH,y+1,z), new Vector3f(x+1,y+1,z),
|
||||||
|
// new Vector3f(x,y+1,z+TRANSITION_CELL_WIDTH), new Vector3f(x+TRANSITION_CELL_WIDTH,y+1,z+TRANSITION_CELL_WIDTH), new Vector3f(x+1,y+1,z+TRANSITION_CELL_WIDTH),
|
||||||
|
// new Vector3f(x,y+1,z+1), new Vector3f(x+TRANSITION_CELL_WIDTH,y+1,z+1), new Vector3f(x+1,y+1,z+1),
|
||||||
|
// //simple face vertex coordinates
|
||||||
|
// new Vector3f(x,y+TRANSITION_CELL_WIDTH,z), new Vector3f(x+1,y+TRANSITION_CELL_WIDTH,z),
|
||||||
|
// new Vector3f(x,y+TRANSITION_CELL_WIDTH,z+1), new Vector3f(x+1,y+TRANSITION_CELL_WIDTH,z+1),
|
||||||
|
|
||||||
//complex face vertex coordinates
|
//complex face vertex coordinates
|
||||||
new Vector3f(x,y+1,z), new Vector3f(x+TRANSITION_CELL_WIDTH,y+1,z), new Vector3f(x+1,y+1,z),
|
vecPool[0], vecPool[1], vecPool[2],
|
||||||
new Vector3f(x,y+1,z+TRANSITION_CELL_WIDTH), new Vector3f(x+TRANSITION_CELL_WIDTH,y+1,z+TRANSITION_CELL_WIDTH), new Vector3f(x+1,y+1,z+TRANSITION_CELL_WIDTH),
|
vecPool[3], vecPool[4], vecPool[5],
|
||||||
new Vector3f(x,y+1,z+1), new Vector3f(x+TRANSITION_CELL_WIDTH,y+1,z+1), new Vector3f(x+1,y+1,z+1),
|
vecPool[6], vecPool[7], vecPool[8],
|
||||||
//simple face vertex coordinates
|
//simple face vertex coordinates
|
||||||
new Vector3f(x,y+TRANSITION_CELL_WIDTH,z), new Vector3f(x+1,y+TRANSITION_CELL_WIDTH,z),
|
vecPool[9], vecPool[10],
|
||||||
new Vector3f(x,y+TRANSITION_CELL_WIDTH,z+1), new Vector3f(x+1,y+TRANSITION_CELL_WIDTH,z+1),
|
vecPool[11], vecPool[12],
|
||||||
//complex face iso values
|
//complex face iso values
|
||||||
chunkData.yPositiveEdgeIso[(x+0)*2+0][(z+0)*2+0], chunkData.yPositiveEdgeIso[(x+0)*2+1][(z+0)*2+0], chunkData.yPositiveEdgeIso[(x+1)*2+0][(z+0)*2+0],
|
chunkData.yPositiveEdgeIso[(x+0)*2+0][(z+0)*2+0], chunkData.yPositiveEdgeIso[(x+0)*2+1][(z+0)*2+0], chunkData.yPositiveEdgeIso[(x+1)*2+0][(z+0)*2+0],
|
||||||
chunkData.yPositiveEdgeIso[(x+0)*2+0][(z+0)*2+1], chunkData.yPositiveEdgeIso[(x+0)*2+1][(z+0)*2+1], chunkData.yPositiveEdgeIso[(x+1)*2+0][(z+0)*2+1],
|
chunkData.yPositiveEdgeIso[(x+0)*2+0][(z+0)*2+1], chunkData.yPositiveEdgeIso[(x+0)*2+1][(z+0)*2+1], chunkData.yPositiveEdgeIso[(x+1)*2+0][(z+0)*2+1],
|
||||||
@ -1545,17 +1611,39 @@ public class TransvoxelModelGeneration {
|
|||||||
int y = 0;
|
int y = 0;
|
||||||
for(int x = xStartIndex; x < xEndIndex; x++){
|
for(int x = xStartIndex; x < xEndIndex; x++){
|
||||||
for(int z = zStartIndex; z < zEndIndex; z++){
|
for(int z = zStartIndex; z < zEndIndex; z++){
|
||||||
|
vecPool[0].set(x,y+0,z);
|
||||||
|
vecPool[1].set(x+TRANSITION_CELL_WIDTH,y+0,z);
|
||||||
|
vecPool[2].set(x+1,y+0,z);
|
||||||
|
vecPool[3].set(x,y+0,z+TRANSITION_CELL_WIDTH);
|
||||||
|
vecPool[4].set(x+TRANSITION_CELL_WIDTH,y+0,z+TRANSITION_CELL_WIDTH);
|
||||||
|
vecPool[5].set(x+1,y+0,z+TRANSITION_CELL_WIDTH);
|
||||||
|
vecPool[6].set(x,y+0,z+1);
|
||||||
|
vecPool[7].set(x+TRANSITION_CELL_WIDTH,y+0,z+1);
|
||||||
|
vecPool[8].set(x+1,y+0,z+1);
|
||||||
|
|
||||||
|
vecPool[9].set(x,y+TRANSITION_CELL_WIDTH,z);
|
||||||
|
vecPool[10].set(x+1,y+TRANSITION_CELL_WIDTH,z);
|
||||||
|
vecPool[11].set(x,y+TRANSITION_CELL_WIDTH,z+1);
|
||||||
|
vecPool[12].set(x+1,y+TRANSITION_CELL_WIDTH,z+1);
|
||||||
//
|
//
|
||||||
//Generate the transition cell
|
//Generate the transition cell
|
||||||
//
|
//
|
||||||
currentTransitionCell.setValues(
|
currentTransitionCell.setValues(
|
||||||
|
// //complex face vertex coordinates
|
||||||
|
// new Vector3f(x,y+0,z), new Vector3f(x+TRANSITION_CELL_WIDTH,y+0,z), new Vector3f(x+1,y+0,z),
|
||||||
|
// new Vector3f(x,y+0,z+TRANSITION_CELL_WIDTH), new Vector3f(x+TRANSITION_CELL_WIDTH,y+0,z+TRANSITION_CELL_WIDTH), new Vector3f(x+1,y+0,z+TRANSITION_CELL_WIDTH),
|
||||||
|
// new Vector3f(x,y+0,z+1), new Vector3f(x+TRANSITION_CELL_WIDTH,y+0,z+1), new Vector3f(x+1,y+0,z+1),
|
||||||
|
// //simple face vertex coordinates
|
||||||
|
// new Vector3f(x,y+TRANSITION_CELL_WIDTH,z), new Vector3f(x+1,y+TRANSITION_CELL_WIDTH,z),
|
||||||
|
// new Vector3f(x,y+TRANSITION_CELL_WIDTH,z+1), new Vector3f(x+1,y+TRANSITION_CELL_WIDTH,z+1),
|
||||||
|
|
||||||
//complex face vertex coordinates
|
//complex face vertex coordinates
|
||||||
new Vector3f(x,y+0,z), new Vector3f(x+TRANSITION_CELL_WIDTH,y+0,z), new Vector3f(x+1,y+0,z),
|
vecPool[0], vecPool[1], vecPool[2],
|
||||||
new Vector3f(x,y+0,z+TRANSITION_CELL_WIDTH), new Vector3f(x+TRANSITION_CELL_WIDTH,y+0,z+TRANSITION_CELL_WIDTH), new Vector3f(x+1,y+0,z+TRANSITION_CELL_WIDTH),
|
vecPool[3], vecPool[4], vecPool[5],
|
||||||
new Vector3f(x,y+0,z+1), new Vector3f(x+TRANSITION_CELL_WIDTH,y+0,z+1), new Vector3f(x+1,y+0,z+1),
|
vecPool[6], vecPool[7], vecPool[8],
|
||||||
//simple face vertex coordinates
|
//simple face vertex coordinates
|
||||||
new Vector3f(x,y+TRANSITION_CELL_WIDTH,z), new Vector3f(x+1,y+TRANSITION_CELL_WIDTH,z),
|
vecPool[9], vecPool[10],
|
||||||
new Vector3f(x,y+TRANSITION_CELL_WIDTH,z+1), new Vector3f(x+1,y+TRANSITION_CELL_WIDTH,z+1),
|
vecPool[11], vecPool[12],
|
||||||
//complex face iso values
|
//complex face iso values
|
||||||
chunkData.yNegativeEdgeIso[(x+0)*2+0][(z+0)*2+0], chunkData.yNegativeEdgeIso[(x+0)*2+1][(z+0)*2+0], chunkData.yNegativeEdgeIso[(x+1)*2+0][(z+0)*2+0],
|
chunkData.yNegativeEdgeIso[(x+0)*2+0][(z+0)*2+0], chunkData.yNegativeEdgeIso[(x+0)*2+1][(z+0)*2+0], chunkData.yNegativeEdgeIso[(x+1)*2+0][(z+0)*2+0],
|
||||||
chunkData.yNegativeEdgeIso[(x+0)*2+0][(z+0)*2+1], chunkData.yNegativeEdgeIso[(x+0)*2+1][(z+0)*2+1], chunkData.yNegativeEdgeIso[(x+1)*2+0][(z+0)*2+1],
|
chunkData.yNegativeEdgeIso[(x+0)*2+0][(z+0)*2+1], chunkData.yNegativeEdgeIso[(x+0)*2+1][(z+0)*2+1], chunkData.yNegativeEdgeIso[(x+1)*2+0][(z+0)*2+1],
|
||||||
@ -1635,17 +1723,39 @@ public class TransvoxelModelGeneration {
|
|||||||
int z = ServerTerrainChunk.CHUNK_DATA_GENERATOR_SIZE - 2;
|
int z = ServerTerrainChunk.CHUNK_DATA_GENERATOR_SIZE - 2;
|
||||||
for(int x = xStartIndex; x < xEndIndex; x++){
|
for(int x = xStartIndex; x < xEndIndex; x++){
|
||||||
for(int y = yStartIndex; y < yEndIndex; y++){
|
for(int y = yStartIndex; y < yEndIndex; y++){
|
||||||
|
vecPool[0].set(x+0,y,z+1);
|
||||||
|
vecPool[1].set(x+0,y+TRANSITION_CELL_WIDTH,z+1);
|
||||||
|
vecPool[2].set(x+0,y+1,z+1);
|
||||||
|
vecPool[3].set(x+TRANSITION_CELL_WIDTH,y,z+1);
|
||||||
|
vecPool[4].set(x+TRANSITION_CELL_WIDTH,y+TRANSITION_CELL_WIDTH,z+1);
|
||||||
|
vecPool[5].set(x+TRANSITION_CELL_WIDTH,y+1,z+1);
|
||||||
|
vecPool[6].set(x+1,y,z+1);
|
||||||
|
vecPool[7].set(x+1,y+TRANSITION_CELL_WIDTH,z+1);
|
||||||
|
vecPool[8].set(x+1,y+1,z+1);
|
||||||
|
|
||||||
|
vecPool[9].set(x+0,y,z+TRANSITION_CELL_WIDTH);
|
||||||
|
vecPool[10].set(x+0,y+1,z+TRANSITION_CELL_WIDTH);
|
||||||
|
vecPool[11].set(x+1,y,z+TRANSITION_CELL_WIDTH);
|
||||||
|
vecPool[12].set(x+1,y+1,z+TRANSITION_CELL_WIDTH);
|
||||||
//
|
//
|
||||||
//Generate the transition cell
|
//Generate the transition cell
|
||||||
//
|
//
|
||||||
currentTransitionCell.setValues(
|
currentTransitionCell.setValues(
|
||||||
|
// //complex face vertex coordinates
|
||||||
|
// new Vector3f(x+0,y,z+1), new Vector3f(x+0,y+TRANSITION_CELL_WIDTH,z+1), new Vector3f(x+0,y+1,z+1),
|
||||||
|
// new Vector3f(x+TRANSITION_CELL_WIDTH,y,z+1), new Vector3f(x+TRANSITION_CELL_WIDTH,y+TRANSITION_CELL_WIDTH,z+1), new Vector3f(x+TRANSITION_CELL_WIDTH,y+1,z+1),
|
||||||
|
// new Vector3f(x+1,y,z+1), new Vector3f(x+1,y+TRANSITION_CELL_WIDTH,z+1), new Vector3f(x+1,y+1,z+1),
|
||||||
|
// //simple face vertex coordinates
|
||||||
|
// new Vector3f(x+0,y,z+TRANSITION_CELL_WIDTH), new Vector3f(x+0,y+1,z+TRANSITION_CELL_WIDTH),
|
||||||
|
// new Vector3f(x+1,y,z+TRANSITION_CELL_WIDTH), new Vector3f(x+1,y+1,z+TRANSITION_CELL_WIDTH),
|
||||||
|
|
||||||
//complex face vertex coordinates
|
//complex face vertex coordinates
|
||||||
new Vector3f(x+0,y,z+1), new Vector3f(x+0,y+TRANSITION_CELL_WIDTH,z+1), new Vector3f(x+0,y+1,z+1),
|
vecPool[0], vecPool[1], vecPool[2],
|
||||||
new Vector3f(x+TRANSITION_CELL_WIDTH,y,z+1), new Vector3f(x+TRANSITION_CELL_WIDTH,y+TRANSITION_CELL_WIDTH,z+1), new Vector3f(x+TRANSITION_CELL_WIDTH,y+1,z+1),
|
vecPool[3], vecPool[4], vecPool[5],
|
||||||
new Vector3f(x+1,y,z+1), new Vector3f(x+1,y+TRANSITION_CELL_WIDTH,z+1), new Vector3f(x+1,y+1,z+1),
|
vecPool[6], vecPool[7], vecPool[8],
|
||||||
//simple face vertex coordinates
|
//simple face vertex coordinates
|
||||||
new Vector3f(x+0,y,z+TRANSITION_CELL_WIDTH), new Vector3f(x+0,y+1,z+TRANSITION_CELL_WIDTH),
|
vecPool[9], vecPool[10],
|
||||||
new Vector3f(x+1,y,z+TRANSITION_CELL_WIDTH), new Vector3f(x+1,y+1,z+TRANSITION_CELL_WIDTH),
|
vecPool[11], vecPool[12],
|
||||||
//complex face iso values
|
//complex face iso values
|
||||||
chunkData.zPositiveEdgeIso[(x+0)*2+0][(y+0)*2+0], chunkData.zPositiveEdgeIso[(x+0)*2+0][(y+0)*2+1], chunkData.zPositiveEdgeIso[(x+0)*2+0][(y+1)*2+0],
|
chunkData.zPositiveEdgeIso[(x+0)*2+0][(y+0)*2+0], chunkData.zPositiveEdgeIso[(x+0)*2+0][(y+0)*2+1], chunkData.zPositiveEdgeIso[(x+0)*2+0][(y+1)*2+0],
|
||||||
chunkData.zPositiveEdgeIso[(x+0)*2+1][(y+0)*2+0], chunkData.zPositiveEdgeIso[(x+0)*2+1][(y+0)*2+1], chunkData.zPositiveEdgeIso[(x+0)*2+1][(y+1)*2+0],
|
chunkData.zPositiveEdgeIso[(x+0)*2+1][(y+0)*2+0], chunkData.zPositiveEdgeIso[(x+0)*2+1][(y+0)*2+1], chunkData.zPositiveEdgeIso[(x+0)*2+1][(y+1)*2+0],
|
||||||
@ -1725,17 +1835,39 @@ public class TransvoxelModelGeneration {
|
|||||||
int z = 0;
|
int z = 0;
|
||||||
for(int x = xStartIndex; x < xEndIndex; x++){
|
for(int x = xStartIndex; x < xEndIndex; x++){
|
||||||
for(int y = yStartIndex; y < yEndIndex; y++){
|
for(int y = yStartIndex; y < yEndIndex; y++){
|
||||||
|
vecPool[0].set(x+0, y,z);
|
||||||
|
vecPool[1].set(x+0, y+TRANSITION_CELL_WIDTH,z);
|
||||||
|
vecPool[2].set(x+0, y+1,z);
|
||||||
|
vecPool[3].set(x+TRANSITION_CELL_WIDTH,y,z);
|
||||||
|
vecPool[4].set(x+TRANSITION_CELL_WIDTH,y+TRANSITION_CELL_WIDTH,z);
|
||||||
|
vecPool[5].set(x+TRANSITION_CELL_WIDTH,y+1,z);
|
||||||
|
vecPool[6].set(x+1, y,z);
|
||||||
|
vecPool[7].set(x+1, y+TRANSITION_CELL_WIDTH,z);
|
||||||
|
vecPool[8].set(x+1, y+1,z);
|
||||||
|
|
||||||
|
vecPool[9].set(x+0,y,z+TRANSITION_CELL_WIDTH);
|
||||||
|
vecPool[10].set(x+0,y+1,z+TRANSITION_CELL_WIDTH);
|
||||||
|
vecPool[11].set(x+1,y,z+TRANSITION_CELL_WIDTH);
|
||||||
|
vecPool[12].set(x+1,y+1,z+TRANSITION_CELL_WIDTH);
|
||||||
//
|
//
|
||||||
//Generate the transition cell
|
//Generate the transition cell
|
||||||
//
|
//
|
||||||
currentTransitionCell.setValues(
|
currentTransitionCell.setValues(
|
||||||
|
// //complex face vertex coordinates
|
||||||
|
// new Vector3f(x+0, y,z), new Vector3f(x+0, y+TRANSITION_CELL_WIDTH,z), new Vector3f(x+0, y+1,z),
|
||||||
|
// new Vector3f(x+TRANSITION_CELL_WIDTH,y,z), new Vector3f(x+TRANSITION_CELL_WIDTH,y+TRANSITION_CELL_WIDTH,z), new Vector3f(x+TRANSITION_CELL_WIDTH,y+1,z),
|
||||||
|
// new Vector3f(x+1, y,z), new Vector3f(x+1, y+TRANSITION_CELL_WIDTH,z), new Vector3f(x+1, y+1,z),
|
||||||
|
// //simple face vertex coordinates
|
||||||
|
// new Vector3f(x+0,y,z+TRANSITION_CELL_WIDTH), new Vector3f(x+0,y+1,z+TRANSITION_CELL_WIDTH),
|
||||||
|
// new Vector3f(x+1,y,z+TRANSITION_CELL_WIDTH), new Vector3f(x+1,y+1,z+TRANSITION_CELL_WIDTH),
|
||||||
|
|
||||||
//complex face vertex coordinates
|
//complex face vertex coordinates
|
||||||
new Vector3f(x+0, y,z), new Vector3f(x+0, y+TRANSITION_CELL_WIDTH,z), new Vector3f(x+0, y+1,z),
|
vecPool[0], vecPool[1], vecPool[2],
|
||||||
new Vector3f(x+TRANSITION_CELL_WIDTH,y,z), new Vector3f(x+TRANSITION_CELL_WIDTH,y+TRANSITION_CELL_WIDTH,z), new Vector3f(x+TRANSITION_CELL_WIDTH,y+1,z),
|
vecPool[3], vecPool[4], vecPool[5],
|
||||||
new Vector3f(x+1, y,z), new Vector3f(x+1, y+TRANSITION_CELL_WIDTH,z), new Vector3f(x+1, y+1,z),
|
vecPool[6], vecPool[7], vecPool[8],
|
||||||
//simple face vertex coordinates
|
//simple face vertex coordinates
|
||||||
new Vector3f(x+0,y,z+TRANSITION_CELL_WIDTH), new Vector3f(x+0,y+1,z+TRANSITION_CELL_WIDTH),
|
vecPool[9], vecPool[10],
|
||||||
new Vector3f(x+1,y,z+TRANSITION_CELL_WIDTH), new Vector3f(x+1,y+1,z+TRANSITION_CELL_WIDTH),
|
vecPool[11], vecPool[12],
|
||||||
//complex face iso values
|
//complex face iso values
|
||||||
chunkData.zNegativeEdgeIso[(x+0)*2+0][(y+0)*2+0], chunkData.zNegativeEdgeIso[(x+0)*2+0][(y+0)*2+1], chunkData.zNegativeEdgeIso[(x+0)*2+0][(y+1)*2+0],
|
chunkData.zNegativeEdgeIso[(x+0)*2+0][(y+0)*2+0], chunkData.zNegativeEdgeIso[(x+0)*2+0][(y+0)*2+1], chunkData.zNegativeEdgeIso[(x+0)*2+0][(y+1)*2+0],
|
||||||
chunkData.zNegativeEdgeIso[(x+0)*2+1][(y+0)*2+0], chunkData.zNegativeEdgeIso[(x+0)*2+1][(y+0)*2+1], chunkData.zNegativeEdgeIso[(x+0)*2+1][(y+1)*2+0],
|
chunkData.zNegativeEdgeIso[(x+0)*2+1][(y+0)*2+0], chunkData.zNegativeEdgeIso[(x+0)*2+1][(y+0)*2+1], chunkData.zNegativeEdgeIso[(x+0)*2+1][(y+1)*2+0],
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user