diff --git a/buildNumber.properties b/buildNumber.properties index 749ae378..28dd6466 100644 --- a/buildNumber.properties +++ b/buildNumber.properties @@ -1,3 +1,3 @@ #maven.buildNumber.plugin properties file -#Sun Dec 01 19:21:24 EST 2024 -buildNumber=502 +#Sun Dec 01 19:28:46 EST 2024 +buildNumber=504 diff --git a/docs/src/progress/renderertodo.md b/docs/src/progress/renderertodo.md index 4e16ccb6..10b330d4 100644 --- a/docs/src/progress/renderertodo.md +++ b/docs/src/progress/renderertodo.md @@ -1217,6 +1217,7 @@ Conditionally rasterize fluid chunks based on homogeneity Awake fluid chunks based on neighbor state Fluid chunk conditionally send update based on sleep status Fluid simulation normalization ratio +Stabilized static liquids diff --git a/src/fluid/src/fluidsim.c b/src/fluid/src/fluidsim.c index d8e54075..9b3cfd31 100644 --- a/src/fluid/src/fluidsim.c +++ b/src/fluid/src/fluidsim.c @@ -31,6 +31,7 @@ Chunk ** chunks = NULL; static inline void saveStep(float * values, const char * name); static inline void applyGravity(Chunk * currentChunk, Environment * environment); +static inline void clearArr(float ** d); void simulate( int numChunks, @@ -524,7 +525,7 @@ void simulate( } float normalizationRatio = 0; if(transformedDensity != 0){ - normalizationRatio = transformedDensity / (environment->existingDensity + environment->newDensity); + normalizationRatio = (environment->existingDensity + environment->newDensity) / transformedDensity; environment->normalizationRatio = normalizationRatio; } for(int i = 0; i < numChunks; i++){ @@ -532,6 +533,16 @@ void simulate( normalizeDensity(DIM,currentChunk->d,normalizationRatio); } } + //clear delta arrays + { + for(int i = 0; i < numChunks; i++){ + Chunk * currentChunk = chunks[i]; + clearArr(currentChunk->d0); + clearArr(currentChunk->u0); + clearArr(currentChunk->v0); + clearArr(currentChunk->w0); + } + } } @@ -577,4 +588,14 @@ static inline void applyGravity(Chunk * currentChunk, Environment * environment) } } } +} + +/** + * Clears an array + */ +static inline void clearArr(float ** d){ + float * x = GET_ARR_RAW(d,CENTER_LOC); + for(int j = 0; j < DIM * DIM * DIM; j++){ + x[j] = 0; + } } \ No newline at end of file