vector pool-> joml pool
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
45a4115675
commit
63bcb259ad
@ -1990,6 +1990,7 @@ Performance improvements
|
|||||||
- More vector pool usage
|
- More vector pool usage
|
||||||
Increase human move speed
|
Increase human move speed
|
||||||
LOD components re-attach physics
|
LOD components re-attach physics
|
||||||
|
VectorPool->JomlPool
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -8,7 +8,7 @@ import electrosphere.entity.EntityDataStrings;
|
|||||||
import electrosphere.entity.EntityUtils;
|
import electrosphere.entity.EntityUtils;
|
||||||
import electrosphere.entity.btree.BehaviorTree;
|
import electrosphere.entity.btree.BehaviorTree;
|
||||||
import electrosphere.entity.types.common.CommonEntityUtils;
|
import electrosphere.entity.types.common.CommonEntityUtils;
|
||||||
import electrosphere.mem.VectorPool;
|
import electrosphere.mem.JomlPool;
|
||||||
import electrosphere.util.math.SpatialMathUtils;
|
import electrosphere.util.math.SpatialMathUtils;
|
||||||
|
|
||||||
import org.joml.Matrix4d;
|
import org.joml.Matrix4d;
|
||||||
@ -222,9 +222,9 @@ public class CameraEntityUtils {
|
|||||||
*/
|
*/
|
||||||
public static Matrix4d getCameraViewMatrix(Entity camera){
|
public static Matrix4d getCameraViewMatrix(Entity camera){
|
||||||
//alloc
|
//alloc
|
||||||
Vector3d cameraCenter = VectorPool.getD();
|
Vector3d cameraCenter = JomlPool.getD();
|
||||||
Vector3d cameraEye = VectorPool.getD();
|
Vector3d cameraEye = JomlPool.getD();
|
||||||
Vector3d cameraUp = VectorPool.getD();
|
Vector3d cameraUp = JomlPool.getD();
|
||||||
|
|
||||||
//perform math
|
//perform math
|
||||||
cameraCenter.set(0,0,0);
|
cameraCenter.set(0,0,0);
|
||||||
@ -239,9 +239,9 @@ public class CameraEntityUtils {
|
|||||||
).scale(1.0f, 1.0f, 1.0f);
|
).scale(1.0f, 1.0f, 1.0f);
|
||||||
|
|
||||||
//free
|
//free
|
||||||
VectorPool.release(cameraCenter);
|
JomlPool.release(cameraCenter);
|
||||||
VectorPool.release(cameraEye);
|
JomlPool.release(cameraEye);
|
||||||
VectorPool.release(cameraUp);
|
JomlPool.release(cameraUp);
|
||||||
return rVal;
|
return rVal;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -7,7 +7,7 @@ import electrosphere.client.entity.camera.CameraEntityUtils;
|
|||||||
import electrosphere.client.entity.crosshair.Crosshair;
|
import electrosphere.client.entity.crosshair.Crosshair;
|
||||||
import electrosphere.engine.Globals;
|
import electrosphere.engine.Globals;
|
||||||
import electrosphere.entity.EntityUtils;
|
import electrosphere.entity.EntityUtils;
|
||||||
import electrosphere.mem.VectorPool;
|
import electrosphere.mem.JomlPool;
|
||||||
import electrosphere.net.parser.net.message.EntityMessage;
|
import electrosphere.net.parser.net.message.EntityMessage;
|
||||||
import electrosphere.renderer.ui.events.MouseEvent;
|
import electrosphere.renderer.ui.events.MouseEvent;
|
||||||
import electrosphere.util.math.SpatialMathUtils;
|
import electrosphere.util.math.SpatialMathUtils;
|
||||||
@ -114,7 +114,7 @@ public class CameraHandler {
|
|||||||
|
|
||||||
Vector3d characterPos = EntityUtils.getPosition(Globals.clientState.playerEntity);
|
Vector3d characterPos = EntityUtils.getPosition(Globals.clientState.playerEntity);
|
||||||
Vector3d targetPos = Crosshair.getTargetPosition();
|
Vector3d targetPos = Crosshair.getTargetPosition();
|
||||||
Vector3d diffed = VectorPool.getD();
|
Vector3d diffed = JomlPool.getD();
|
||||||
diffed.set(targetPos).sub(characterPos).mul(-1).normalize();
|
diffed.set(targetPos).sub(characterPos).mul(-1).normalize();
|
||||||
cameraRotationVector.set((float)diffed.x, 0.5f, (float)diffed.z).normalize();
|
cameraRotationVector.set((float)diffed.x, 0.5f, (float)diffed.z).normalize();
|
||||||
|
|
||||||
@ -123,7 +123,7 @@ public class CameraHandler {
|
|||||||
CameraEntityUtils.setCameraPitch(Globals.clientState.playerCamera, pitch);
|
CameraEntityUtils.setCameraPitch(Globals.clientState.playerCamera, pitch);
|
||||||
CameraEntityUtils.setCameraYaw(Globals.clientState.playerCamera, yaw);
|
CameraEntityUtils.setCameraYaw(Globals.clientState.playerCamera, yaw);
|
||||||
|
|
||||||
VectorPool.release(diffed);
|
JomlPool.release(diffed);
|
||||||
} else {
|
} else {
|
||||||
CameraEntityUtils.setCameraPitch(Globals.clientState.playerCamera, pitch);
|
CameraEntityUtils.setCameraPitch(Globals.clientState.playerCamera, pitch);
|
||||||
CameraEntityUtils.setCameraYaw(Globals.clientState.playerCamera, yaw);
|
CameraEntityUtils.setCameraYaw(Globals.clientState.playerCamera, yaw);
|
||||||
@ -139,10 +139,10 @@ public class CameraHandler {
|
|||||||
//free previous vec
|
//free previous vec
|
||||||
Vector3d oldCenter = CameraEntityUtils.getCameraCenter(Globals.clientState.playerCamera);
|
Vector3d oldCenter = CameraEntityUtils.getCameraCenter(Globals.clientState.playerCamera);
|
||||||
Vector3d entityPos = EntityUtils.getPosition(Globals.clientState.playerEntity);
|
Vector3d entityPos = EntityUtils.getPosition(Globals.clientState.playerEntity);
|
||||||
Vector3d newCenter = VectorPool.getD();
|
Vector3d newCenter = JomlPool.getD();
|
||||||
newCenter.set(entityPos).add(CameraEntityUtils.getOrbitalCameraRadialOffset(Globals.clientState.playerCamera));
|
newCenter.set(entityPos).add(CameraEntityUtils.getOrbitalCameraRadialOffset(Globals.clientState.playerCamera));
|
||||||
CameraEntityUtils.setCameraCenter(Globals.clientState.playerCamera, newCenter);
|
CameraEntityUtils.setCameraCenter(Globals.clientState.playerCamera, newCenter);
|
||||||
VectorPool.release(oldCenter);
|
JomlPool.release(oldCenter);
|
||||||
}
|
}
|
||||||
//update view matrix offset
|
//update view matrix offset
|
||||||
float xFactor = (float)Math.cos(yaw / 180.0f * Math.PI);
|
float xFactor = (float)Math.cos(yaw / 180.0f * Math.PI);
|
||||||
@ -151,10 +151,10 @@ public class CameraHandler {
|
|||||||
//update offset
|
//update offset
|
||||||
Vector3d radialOffset = CameraEntityUtils.getOrbitalCameraRadialOffset(Globals.clientState.playerCamera);
|
Vector3d radialOffset = CameraEntityUtils.getOrbitalCameraRadialOffset(Globals.clientState.playerCamera);
|
||||||
Vector3d oldOffset = CameraEntityUtils.getOrbitalCameraRadialOffset(Globals.clientState.playerCamera);
|
Vector3d oldOffset = CameraEntityUtils.getOrbitalCameraRadialOffset(Globals.clientState.playerCamera);
|
||||||
Vector3d trueOffset = VectorPool.getD();
|
Vector3d trueOffset = JomlPool.getD();
|
||||||
trueOffset.set(radialOffset).mul(xFactor,1.0f,yFactor);
|
trueOffset.set(radialOffset).mul(xFactor,1.0f,yFactor);
|
||||||
CameraEntityUtils.setOrbitalCameraRadialOffset(Globals.clientState.playerCamera, trueOffset);
|
CameraEntityUtils.setOrbitalCameraRadialOffset(Globals.clientState.playerCamera, trueOffset);
|
||||||
VectorPool.release(oldOffset);
|
JomlPool.release(oldOffset);
|
||||||
|
|
||||||
//update rotation vec
|
//update rotation vec
|
||||||
cameraRotationVector.mul(CameraEntityUtils.getOrbitalCameraDistance(Globals.clientState.playerCamera));
|
cameraRotationVector.mul(CameraEntityUtils.getOrbitalCameraDistance(Globals.clientState.playerCamera));
|
||||||
|
|||||||
@ -6,7 +6,7 @@ import java.util.List;
|
|||||||
import org.joml.Quaterniond;
|
import org.joml.Quaterniond;
|
||||||
import org.joml.Vector3d;
|
import org.joml.Vector3d;
|
||||||
|
|
||||||
import electrosphere.mem.VectorPool;
|
import electrosphere.mem.JomlPool;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Converts data structures between formats saved to disk vs formats used in engine
|
* Converts data structures between formats saved to disk vs formats used in engine
|
||||||
@ -45,12 +45,12 @@ public class DataFormatUtil {
|
|||||||
*/
|
*/
|
||||||
public static Vector3d getDoubleListAsVector(List<Double> values){
|
public static Vector3d getDoubleListAsVector(List<Double> values){
|
||||||
if(values == null){
|
if(values == null){
|
||||||
return VectorPool.getD();
|
return JomlPool.getD();
|
||||||
}
|
}
|
||||||
if(values.size() > 0){
|
if(values.size() > 0){
|
||||||
return VectorPool.getD(values.get(0),values.get(1),values.get(2));
|
return JomlPool.getD(values.get(0),values.get(1),values.get(2));
|
||||||
} else {
|
} else {
|
||||||
return VectorPool.getD();
|
return JomlPool.getD();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -6,7 +6,7 @@ import electrosphere.entity.EntityDataStrings;
|
|||||||
import electrosphere.entity.EntityTags;
|
import electrosphere.entity.EntityTags;
|
||||||
import electrosphere.entity.EntityUtils;
|
import electrosphere.entity.EntityUtils;
|
||||||
import electrosphere.logger.LoggerInterface;
|
import electrosphere.logger.LoggerInterface;
|
||||||
import electrosphere.mem.VectorPool;
|
import electrosphere.mem.JomlPool;
|
||||||
import electrosphere.renderer.actor.Actor;
|
import electrosphere.renderer.actor.Actor;
|
||||||
import electrosphere.server.datacell.ServerDataCell;
|
import electrosphere.server.datacell.ServerDataCell;
|
||||||
import electrosphere.server.datacell.utils.ServerEntityTagUtils;
|
import electrosphere.server.datacell.utils.ServerEntityTagUtils;
|
||||||
@ -347,7 +347,7 @@ public class AttachUtils {
|
|||||||
Vector3d parentScale
|
Vector3d parentScale
|
||||||
){
|
){
|
||||||
//transform bone space
|
//transform bone space
|
||||||
Vector3d position = VectorPool.getD(offsetVector);
|
Vector3d position = JomlPool.getD(offsetVector);
|
||||||
position = position.rotate(new Quaterniond(boneRotation));
|
position = position.rotate(new Quaterniond(boneRotation));
|
||||||
position = position.add(bonePosition);
|
position = position.add(bonePosition);
|
||||||
position = position.mul(parentScale);
|
position = position.mul(parentScale);
|
||||||
|
|||||||
@ -26,7 +26,7 @@ import electrosphere.entity.EntityUtils;
|
|||||||
import electrosphere.entity.state.attach.AttachUtils;
|
import electrosphere.entity.state.attach.AttachUtils;
|
||||||
import electrosphere.entity.state.hitbox.HitboxCollectionState.HitboxState.HitboxShapeType;
|
import electrosphere.entity.state.hitbox.HitboxCollectionState.HitboxState.HitboxShapeType;
|
||||||
import electrosphere.logger.LoggerInterface;
|
import electrosphere.logger.LoggerInterface;
|
||||||
import electrosphere.mem.VectorPool;
|
import electrosphere.mem.JomlPool;
|
||||||
import electrosphere.server.datacell.Realm;
|
import electrosphere.server.datacell.Realm;
|
||||||
import electrosphere.server.entity.poseactor.PoseActor;
|
import electrosphere.server.entity.poseactor.PoseActor;
|
||||||
import electrosphere.util.math.SpatialMathUtils;
|
import electrosphere.util.math.SpatialMathUtils;
|
||||||
@ -462,7 +462,7 @@ public class HitboxCollectionState {
|
|||||||
Quaterniond offsetRotation = new Quaterniond();
|
Quaterniond offsetRotation = new Quaterniond();
|
||||||
|
|
||||||
//the bone's transform
|
//the bone's transform
|
||||||
Vector3d bonePositionD = VectorPool.getD();
|
Vector3d bonePositionD = JomlPool.getD();
|
||||||
if(bonePosition != null){
|
if(bonePosition != null){
|
||||||
bonePositionD.set(bonePosition);
|
bonePositionD.set(bonePosition);
|
||||||
}
|
}
|
||||||
@ -471,7 +471,7 @@ public class HitboxCollectionState {
|
|||||||
//the parent's transform
|
//the parent's transform
|
||||||
Vector3d parentPosition = EntityUtils.getPosition(parent);
|
Vector3d parentPosition = EntityUtils.getPosition(parent);
|
||||||
Quaterniond parentRotation = EntityUtils.getRotation(parent);
|
Quaterniond parentRotation = EntityUtils.getRotation(parent);
|
||||||
Vector3d parentScale = VectorPool.getD();
|
Vector3d parentScale = JomlPool.getD();
|
||||||
parentScale.set(EntityUtils.getScale(parent));
|
parentScale.set(EntityUtils.getScale(parent));
|
||||||
|
|
||||||
//calculate
|
//calculate
|
||||||
@ -482,9 +482,9 @@ public class HitboxCollectionState {
|
|||||||
PhysicsEntityUtils.setGeometryOffsetPosition(collisionEngine, geom, hitboxPos, new Quaterniond());
|
PhysicsEntityUtils.setGeometryOffsetPosition(collisionEngine, geom, hitboxPos, new Quaterniond());
|
||||||
|
|
||||||
//free vecs used in computation
|
//free vecs used in computation
|
||||||
VectorPool.release(bonePositionD);
|
JomlPool.release(bonePositionD);
|
||||||
VectorPool.release(parentScale);
|
JomlPool.release(parentScale);
|
||||||
VectorPool.release(hitboxPos);
|
JomlPool.release(hitboxPos);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@ -8,9 +8,9 @@ import org.joml.Vector3d;
|
|||||||
import org.joml.Vector3f;
|
import org.joml.Vector3f;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* A pool for temporary vectors
|
* A pool for temporary joml objects
|
||||||
*/
|
*/
|
||||||
public class VectorPool {
|
public class JomlPool {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Structure to store not-in-use objects
|
* Structure to store not-in-use objects
|
||||||
@ -53,7 +53,7 @@ public class VectorPool {
|
|||||||
data.y = 0;
|
data.y = 0;
|
||||||
data.z = 0;
|
data.z = 0;
|
||||||
lock.lock();
|
lock.lock();
|
||||||
VectorPool.vec3fPool.add(data);
|
JomlPool.vec3fPool.add(data);
|
||||||
lock.unlock();
|
lock.unlock();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -117,7 +117,7 @@ public class VectorPool {
|
|||||||
data.y = 0;
|
data.y = 0;
|
||||||
data.z = 0;
|
data.z = 0;
|
||||||
lock.lock();
|
lock.lock();
|
||||||
VectorPool.vec3dPool.add(data);
|
JomlPool.vec3dPool.add(data);
|
||||||
lock.unlock();
|
lock.unlock();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -5,7 +5,7 @@ import electrosphere.data.entity.creature.bonegroups.BoneGroup;
|
|||||||
import electrosphere.engine.Globals;
|
import electrosphere.engine.Globals;
|
||||||
import electrosphere.entity.state.AnimationPriorities;
|
import electrosphere.entity.state.AnimationPriorities;
|
||||||
import electrosphere.logger.LoggerInterface;
|
import electrosphere.logger.LoggerInterface;
|
||||||
import electrosphere.mem.VectorPool;
|
import electrosphere.mem.JomlPool;
|
||||||
import electrosphere.renderer.OpenGLState;
|
import electrosphere.renderer.OpenGLState;
|
||||||
import electrosphere.renderer.RenderPipelineState;
|
import electrosphere.renderer.RenderPipelineState;
|
||||||
import electrosphere.renderer.actor.ActorUniformMap.UniformValue;
|
import electrosphere.renderer.actor.ActorUniformMap.UniformValue;
|
||||||
@ -887,9 +887,9 @@ public class Actor {
|
|||||||
}
|
}
|
||||||
Globals.profiler.beginAggregateCpuSample("Actor.isWithinFrustumBox");
|
Globals.profiler.beginAggregateCpuSample("Actor.isWithinFrustumBox");
|
||||||
Sphered sphere = model.getBoundingSphere();
|
Sphered sphere = model.getBoundingSphere();
|
||||||
Vector3d modelPosition = model.getModelMatrix().getTranslation(VectorPool.getD());
|
Vector3d modelPosition = model.getModelMatrix().getTranslation(JomlPool.getD());
|
||||||
boolean check = renderPipelineState.getFrustumIntersection().testSphere((float)(sphere.x + modelPosition.x), (float)(sphere.y + modelPosition.y), (float)(sphere.z + modelPosition.z), (float)sphere.r);
|
boolean check = renderPipelineState.getFrustumIntersection().testSphere((float)(sphere.x + modelPosition.x), (float)(sphere.y + modelPosition.y), (float)(sphere.z + modelPosition.z), (float)sphere.r);
|
||||||
VectorPool.release(modelPosition);
|
JomlPool.release(modelPosition);
|
||||||
Globals.profiler.endCpuSample();
|
Globals.profiler.endCpuSample();
|
||||||
return check;
|
return check;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -13,7 +13,7 @@ import electrosphere.client.terrain.cells.VoxelTextureAtlas;
|
|||||||
import electrosphere.client.terrain.data.TerrainChunkData;
|
import electrosphere.client.terrain.data.TerrainChunkData;
|
||||||
import electrosphere.engine.Globals;
|
import electrosphere.engine.Globals;
|
||||||
import electrosphere.logger.LoggerInterface;
|
import electrosphere.logger.LoggerInterface;
|
||||||
import electrosphere.mem.VectorPool;
|
import electrosphere.mem.JomlPool;
|
||||||
import electrosphere.renderer.OpenGLState;
|
import electrosphere.renderer.OpenGLState;
|
||||||
import electrosphere.renderer.model.Material;
|
import electrosphere.renderer.model.Material;
|
||||||
import electrosphere.renderer.model.Mesh;
|
import electrosphere.renderer.model.Mesh;
|
||||||
@ -431,8 +431,8 @@ public class TransvoxelModelGeneration {
|
|||||||
|
|
||||||
|
|
||||||
//calculate normal for new triangle
|
//calculate normal for new triangle
|
||||||
Vector3f u = VectorPool.getF().set(verts.get(index1)).sub(verts.get(index0));
|
Vector3f u = JomlPool.getF().set(verts.get(index1)).sub(verts.get(index0));
|
||||||
Vector3f v = VectorPool.getF().set(verts.get(index2)).sub(verts.get(index1));
|
Vector3f v = JomlPool.getF().set(verts.get(index2)).sub(verts.get(index1));
|
||||||
float dotVal = u.dot(v);
|
float dotVal = u.dot(v);
|
||||||
Vector3f n;
|
Vector3f n;
|
||||||
// if(dotVal > NORMAL_DOT_THRESHOLD || dotVal < -NORMAL_DOT_THRESHOLD){
|
// if(dotVal > NORMAL_DOT_THRESHOLD || dotVal < -NORMAL_DOT_THRESHOLD){
|
||||||
@ -455,8 +455,8 @@ public class TransvoxelModelGeneration {
|
|||||||
dotVal
|
dotVal
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
VectorPool.release(u);
|
JomlPool.release(u);
|
||||||
VectorPool.release(v);
|
JomlPool.release(v);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@ -907,14 +907,14 @@ public class TransvoxelModelGeneration {
|
|||||||
|
|
||||||
|
|
||||||
//calculate normal for new triangle
|
//calculate normal for new triangle
|
||||||
Vector3f u = VectorPool.getF().set(verts.get(index1)).sub(verts.get(index0));
|
Vector3f u = JomlPool.getF().set(verts.get(index1)).sub(verts.get(index0));
|
||||||
Vector3f v = VectorPool.getF().set(verts.get(index2)).sub(verts.get(index1));
|
Vector3f v = JomlPool.getF().set(verts.get(index2)).sub(verts.get(index1));
|
||||||
Vector3f n = new Vector3f(u.y * v.z - u.z * v.y, u.z * v.x - u.x * v.z, u.x * v.y - u.y * v.x).normalize();
|
Vector3f n = new Vector3f(u.y * v.z - u.z * v.y, u.z * v.x - u.x * v.z, u.x * v.y - u.y * v.x).normalize();
|
||||||
if(invertNormals){
|
if(invertNormals){
|
||||||
n = n.mul(-1);
|
n = n.mul(-1);
|
||||||
}
|
}
|
||||||
VectorPool.release(u);
|
JomlPool.release(u);
|
||||||
VectorPool.release(v);
|
JomlPool.release(v);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user