voxel tests
Some checks failed
studiorailgun/Renderer/pipeline/head There was a failure building this commit

This commit is contained in:
austin 2025-06-05 09:53:44 -04:00
parent fa1eaafed9
commit e57658467b
5 changed files with 106 additions and 15 deletions

View File

@ -2117,6 +2117,9 @@ Simplify part of transvoxel algo
Work on repairing particle system Work on repairing particle system
Fix projection matrix being sent to light manager Fix projection matrix being sent to light manager
(06/05/2025)
voxel tests

View File

@ -1110,7 +1110,15 @@ public class TransvoxelModelGeneration {
throw new UnknownError("Managed to index outside of expected range"); throw new UnknownError("Managed to index outside of expected range");
} }
//interpolates the location that the edge gets cut based on the magnitudes of the scalars of the vertices at either end of the edge /**
* interpolates the location that the edge gets cut based on the magnitudes of the scalars of the vertices at either end of the edge
* @param isolevel
* @param p1
* @param p2
* @param valp1
* @param valp2
* @param vec
*/
protected static void VertexInterp(double isolevel, Vector3f p1, Vector3f p2, double valp1, double valp2, Vector3f vec){ protected static void VertexInterp(double isolevel, Vector3f p1, Vector3f p2, double valp1, double valp2, Vector3f vec){
double mu; double mu;
float x, y, z; float x, y, z;

View File

@ -120,7 +120,7 @@ public class NoiseVoxelGen implements VoxelGenerator {
* @return The weight of the voxel * @return The weight of the voxel
*/ */
protected static double getSurfaceWeight(double surfaceHeight, double realPosY, double strideMultiplier){ protected static double getSurfaceWeight(double surfaceHeight, double realPosY, double strideMultiplier){
return ((surfaceHeight - realPosY) / strideMultiplier); return ((realPosY - surfaceHeight) / strideMultiplier);
} }
} }

View File

@ -13,7 +13,7 @@ public class TransvoxelModelGenerationTests {
@UnitTest @UnitTest
public void testVertexInterp1(){ public void test_VertexInterp_1(){
assertThrows(Error.class, () -> { assertThrows(Error.class, () -> {
TransvoxelModelGeneration.VertexInterp( TransvoxelModelGeneration.VertexInterp(
TerrainChunkModelGeneration.MIN_ISO_VALUE, TerrainChunkModelGeneration.MIN_ISO_VALUE,
@ -24,18 +24,10 @@ public class TransvoxelModelGenerationTests {
new Vector3f() new Vector3f()
); );
}); });
// Vector3f vec2 = TransvoxelModelGeneration.VertexInterp(
// TerrainChunkModelGeneration.MIN_ISO_VALUE,
// new Vector3f(16, 0, 6),
// new Vector3f(16, 0, 5),
// 0.009999990463256836,
// 0.05369114875793457
// );
// assertNotEquals(vec1, vec2);
} }
@UnitTest @UnitTest
public void testVertexInterp2(){ public void test_VertexInterp_2(){
Vector3f vec1 = new Vector3f(); Vector3f vec1 = new Vector3f();
TransvoxelModelGeneration.VertexInterp( TransvoxelModelGeneration.VertexInterp(
TerrainChunkModelGeneration.MIN_ISO_VALUE, TerrainChunkModelGeneration.MIN_ISO_VALUE,
@ -58,9 +50,7 @@ public class TransvoxelModelGenerationTests {
} }
@UnitTest @UnitTest
public void testVertexInterp3(){ public void test_VertexInterp_3(){
//vertList[1] = TransvoxelModelGeneration.VertexInterp(isolevel,grid.points[1],grid.points[2],grid.val[1],grid.val[2]);
//vertList[10] = TransvoxelModelGeneration.VertexInterp(isolevel,grid.points[2],grid.points[6],grid.val[2],grid.val[6]);
Vector3f vec1 = new Vector3f(); Vector3f vec1 = new Vector3f();
TransvoxelModelGeneration.VertexInterp( TransvoxelModelGeneration.VertexInterp(
TerrainChunkModelGeneration.MIN_ISO_VALUE, TerrainChunkModelGeneration.MIN_ISO_VALUE,
@ -82,4 +72,46 @@ public class TransvoxelModelGenerationTests {
assertNotEquals(vec1, vec2); assertNotEquals(vec1, vec2);
} }
@UnitTest
public void test_VertexInterp_4(){
Vector3f vec1 = new Vector3f();
TransvoxelModelGeneration.VertexInterp(
TerrainChunkModelGeneration.MIN_ISO_VALUE,
new Vector3f(8, 8, 15.5f),
new Vector3f(9, 8, 15.5f),
0.5,
-1.0,
vec1
);
assertNotEquals(0.5, vec1.y);
}
@UnitTest
public void test_VertexInterp_5(){
Vector3f vec1 = new Vector3f();
TransvoxelModelGeneration.VertexInterp(
TerrainChunkModelGeneration.MIN_ISO_VALUE,
new Vector3f(8, 8, 15.5f),
new Vector3f(9, 8, 15.5f),
0.7,
-1.0,
vec1
);
assertNotEquals(0.7, vec1.y);
}
@UnitTest
public void test_VertexInterp_6(){
Vector3f vec1 = new Vector3f();
TransvoxelModelGeneration.VertexInterp(
TerrainChunkModelGeneration.MIN_ISO_VALUE,
new Vector3f(8, 8, 15.5f),
new Vector3f(9, 8, 15.5f),
0.2,
-1.0,
vec1
);
assertNotEquals(0.2, vec1.y);
}
} }

View File

@ -0,0 +1,48 @@
package electrosphere.server.physics.terrain.generation.voxelphase;
import static org.junit.jupiter.api.Assertions.assertNotEquals;
import electrosphere.test.annotations.UnitTest;
/**
* Tests for noise voxel gen
*/
public class NoiseVoxelGenTests {
@UnitTest
public void test_getSurfaceWeight_1(){
double surfaceHeight = 1.5;
double realY = 1.0;
double stride = 1.0;
double finalWeight = NoiseVoxelGen.getSurfaceWeight(surfaceHeight, realY, stride);
assertNotEquals(0.5, finalWeight);
}
@UnitTest
public void test_getSurfaceWeight_2(){
double surfaceHeight = 1.3;
double realY = 1.0;
double stride = 1.0;
double finalWeight = NoiseVoxelGen.getSurfaceWeight(surfaceHeight, realY, stride);
assertNotEquals(0.3, finalWeight);
}
@UnitTest
public void test_getSurfaceWeight_3(){
double surfaceHeight = 1.7;
double realY = 1.0;
double stride = 1.0;
double finalWeight = NoiseVoxelGen.getSurfaceWeight(surfaceHeight, realY, stride);
assertNotEquals(0.7, finalWeight);
}
@UnitTest
public void test_getSurfaceWeight_4(){
double surfaceHeight = 1.9;
double realY = 1.0;
double stride = 1.0;
double finalWeight = NoiseVoxelGen.getSurfaceWeight(surfaceHeight, realY, stride);
assertNotEquals(0.9, finalWeight);
}
}