Use temp cache in pressurecell
All checks were successful
studiorailgun/Renderer/pipeline/head This commit looks good

This commit is contained in:
austin 2024-12-13 21:25:48 -05:00
parent 1136014b1f
commit aa6058ed00
3 changed files with 18 additions and 18 deletions

View File

@ -24,7 +24,7 @@ LIBRARY_API void pressurecell_add_density(Environment * environment, Chunk * chu
LIBRARY_API void pressurecell_diffuse_density(Environment * environment, Chunk * chunk){
int x, y, z;
float * densityArr = chunk->d[CENTER_LOC];
float * densityTemp = chunk->d0[CENTER_LOC];
float * densityTemp = chunk->dTempCache;
for(z = 1; z < DIM-1; z++){
for(y = 1; y < DIM-1; y++){
for(x = 1; x < DIM-1; x++){

View File

@ -33,9 +33,9 @@ LIBRARY_API void pressurecell_diffuse_velocity(Environment * environment, Chunk
float * uArr = chunk->u[CENTER_LOC];
float * vArr = chunk->v[CENTER_LOC];
float * wArr = chunk->w[CENTER_LOC];
float * uTemp = chunk->u0[CENTER_LOC];
float * vTemp = chunk->v0[CENTER_LOC];
float * wTemp = chunk->w0[CENTER_LOC];
float * uTemp = chunk->uTempCache;
float * vTemp = chunk->vTempCache;
float * wTemp = chunk->wTempCache;
for(z = 1; z < DIM-1; z++){
for(y = 1; y < DIM-1; y++){
for(x = 1; x < DIM-1; x++){

View File

@ -51,7 +51,7 @@ int fluid_sim_pressurecell_diffuse_test1(){
// cell that originall had values
//
expected = MAX_FLUID_VALUE - FLUID_PRESSURECELL_DIFFUSION_CONSTANT * 6 * MAX_FLUID_VALUE;
actual = currentChunk->d0[CENTER_LOC][IX(4,4,4)];
actual = currentChunk->dTempCache[IX(4,4,4)];
if(fabs(expected - actual) > FLUID_PRESSURE_CELL_ERROR_MARGIN){
rVal += assertEqualsFloat(expected,actual,"Failed to diffuse density correctly (4,4,4)! expected: %f actual: %f \n");
}
@ -61,37 +61,37 @@ int fluid_sim_pressurecell_diffuse_test1(){
// neighbors
//
expected = FLUID_PRESSURECELL_DIFFUSION_CONSTANT * MAX_FLUID_VALUE;
actual = currentChunk->d0[CENTER_LOC][IX(3,4,4)];
actual = currentChunk->dTempCache[IX(3,4,4)];
if(fabs(expected - actual) > FLUID_PRESSURE_CELL_ERROR_MARGIN){
rVal += assertEqualsFloat(expected,actual,"Failed to diffuse density correctly (3,4,4)! expected: %f actual: %f \n");
}
expected = FLUID_PRESSURECELL_DIFFUSION_CONSTANT * MAX_FLUID_VALUE;
actual = currentChunk->d0[CENTER_LOC][IX(5,4,4)];
actual = currentChunk->dTempCache[IX(5,4,4)];
if(fabs(expected - actual) > FLUID_PRESSURE_CELL_ERROR_MARGIN){
rVal += assertEqualsFloat(expected,actual,"Failed to diffuse density correctly (5,4,4)! expected: %f actual: %f \n");
}
expected = FLUID_PRESSURECELL_DIFFUSION_CONSTANT * MAX_FLUID_VALUE;
actual = currentChunk->d0[CENTER_LOC][IX(4,3,4)];
actual = currentChunk->dTempCache[IX(4,3,4)];
if(fabs(expected - actual) > FLUID_PRESSURE_CELL_ERROR_MARGIN){
rVal += assertEqualsFloat(expected,actual,"Failed to diffuse density correctly (4,3,4)! expected: %f actual: %f \n");
}
expected = FLUID_PRESSURECELL_DIFFUSION_CONSTANT * MAX_FLUID_VALUE;
actual = currentChunk->d0[CENTER_LOC][IX(4,5,4)];
actual = currentChunk->dTempCache[IX(4,5,4)];
if(fabs(expected - actual) > FLUID_PRESSURE_CELL_ERROR_MARGIN){
rVal += assertEqualsFloat(expected,actual,"Failed to diffuse density correctly (4,5,4)! expected: %f actual: %f \n");
}
expected = FLUID_PRESSURECELL_DIFFUSION_CONSTANT * MAX_FLUID_VALUE;
actual = currentChunk->d0[CENTER_LOC][IX(4,4,3)];
actual = currentChunk->dTempCache[IX(4,4,3)];
if(fabs(expected - actual) > FLUID_PRESSURE_CELL_ERROR_MARGIN){
rVal += assertEqualsFloat(expected,actual,"Failed to diffuse density correctly (4,4,3)! expected: %f actual: %f \n");
}
expected = FLUID_PRESSURECELL_DIFFUSION_CONSTANT * MAX_FLUID_VALUE;
actual = currentChunk->d0[CENTER_LOC][IX(4,4,5)];
actual = currentChunk->dTempCache[IX(4,4,5)];
if(fabs(expected - actual) > FLUID_PRESSURE_CELL_ERROR_MARGIN){
rVal += assertEqualsFloat(expected,actual,"Failed to diffuse density correctly (4,4,5)! expected: %f actual: %f \n");
}
@ -127,7 +127,7 @@ int fluid_sim_pressurecell_diffuse_test2(){
// cell that originall had values
//
expected = MAX_FLUID_VALUE - FLUID_PRESSURECELL_DIFFUSION_CONSTANT * 6 * MAX_FLUID_VALUE;
actual = currentChunk->u0[CENTER_LOC][IX(4,4,4)];
actual = currentChunk->uTempCache[IX(4,4,4)];
if(fabs(expected - actual) > FLUID_PRESSURE_CELL_ERROR_MARGIN){
rVal += assertEqualsFloat(expected,actual,"Failed to diffuse velocity correctly (4,4,4)! expected: %f actual: %f \n");
}
@ -137,37 +137,37 @@ int fluid_sim_pressurecell_diffuse_test2(){
// neighbors
//
expected = FLUID_PRESSURECELL_DIFFUSION_CONSTANT * MAX_FLUID_VALUE;
actual = currentChunk->u0[CENTER_LOC][IX(3,4,4)];
actual = currentChunk->uTempCache[IX(3,4,4)];
if(fabs(expected - actual) > FLUID_PRESSURE_CELL_ERROR_MARGIN){
rVal += assertEqualsFloat(expected,actual,"Failed to diffuse velocity correctly (3,4,4)! expected: %f actual: %f \n");
}
expected = FLUID_PRESSURECELL_DIFFUSION_CONSTANT * MAX_FLUID_VALUE;
actual = currentChunk->u0[CENTER_LOC][IX(5,4,4)];
actual = currentChunk->uTempCache[IX(5,4,4)];
if(fabs(expected - actual) > FLUID_PRESSURE_CELL_ERROR_MARGIN){
rVal += assertEqualsFloat(expected,actual,"Failed to diffuse velocity correctly (5,4,4)! expected: %f actual: %f \n");
}
expected = FLUID_PRESSURECELL_DIFFUSION_CONSTANT * MAX_FLUID_VALUE;
actual = currentChunk->u0[CENTER_LOC][IX(4,3,4)];
actual = currentChunk->uTempCache[IX(4,3,4)];
if(fabs(expected - actual) > FLUID_PRESSURE_CELL_ERROR_MARGIN){
rVal += assertEqualsFloat(expected,actual,"Failed to diffuse velocity correctly (4,3,4)! expected: %f actual: %f \n");
}
expected = FLUID_PRESSURECELL_DIFFUSION_CONSTANT * MAX_FLUID_VALUE;
actual = currentChunk->u0[CENTER_LOC][IX(4,5,4)];
actual = currentChunk->uTempCache[IX(4,5,4)];
if(fabs(expected - actual) > FLUID_PRESSURE_CELL_ERROR_MARGIN){
rVal += assertEqualsFloat(expected,actual,"Failed to diffuse velocity correctly (4,5,4)! expected: %f actual: %f \n");
}
expected = FLUID_PRESSURECELL_DIFFUSION_CONSTANT * MAX_FLUID_VALUE;
actual = currentChunk->u0[CENTER_LOC][IX(4,4,3)];
actual = currentChunk->uTempCache[IX(4,4,3)];
if(fabs(expected - actual) > FLUID_PRESSURE_CELL_ERROR_MARGIN){
rVal += assertEqualsFloat(expected,actual,"Failed to diffuse velocity correctly (4,4,3)! expected: %f actual: %f \n");
}
expected = FLUID_PRESSURECELL_DIFFUSION_CONSTANT * MAX_FLUID_VALUE;
actual = currentChunk->u0[CENTER_LOC][IX(4,4,5)];
actual = currentChunk->uTempCache[IX(4,4,5)];
if(fabs(expected - actual) > FLUID_PRESSURE_CELL_ERROR_MARGIN){
rVal += assertEqualsFloat(expected,actual,"Failed to diffuse velocity correctly (4,4,5)! expected: %f actual: %f \n");
}