Compare commits
	
		
			No commits in common. "6afbbd7e2a2e03269d968745aba154cd7abf9bf5" and "fb81cc298299ed6f61ab210de59fb741abf1546d" have entirely different histories.
		
	
	
		
			6afbbd7e2a
			...
			fb81cc2982
		
	
		
| @ -40,8 +40,8 @@ JNIEXPORT void JNICALL Java_electrosphere_FluidSim_solveDiffuseDensity | ||||
|   jobject this, | ||||
|   jint N, | ||||
|   jint chunk_mask, | ||||
|   float ** d, | ||||
|   float ** d0, | ||||
|   jobjectArray jrx, | ||||
|   jobjectArray jrx0, | ||||
|   jobjectArray jru, | ||||
|   jobjectArray jrv, | ||||
|   jobjectArray jrw, | ||||
| @ -51,8 +51,8 @@ JNIEXPORT void JNICALL Java_electrosphere_FluidSim_solveDiffuseDensity | ||||
|     float a=dt*DIFFUSION_CONST*N*N*N; | ||||
|     float c=1+6*a; | ||||
|     int i, j, k, l, m; | ||||
|     float * x = GET_ARR_RAW(env,d,CENTER_LOC); | ||||
|     float * x0 = GET_ARR_RAW(env,d0,CENTER_LOC); | ||||
|     float * x = GET_ARR(env,jrx,CENTER_LOC); | ||||
|     float * x0 = GET_ARR(env,jrx0,CENTER_LOC); | ||||
|      | ||||
|     __m256 aScalar = _mm256_set1_ps(a); | ||||
|     __m256 cScalar = _mm256_set1_ps(c); | ||||
|  | ||||
| @ -700,6 +700,14 @@ JNIEXPORT void JNICALL Java_electrosphere_FluidSim_simulate( | ||||
|             Chunk * currentChunk = chunks[i]; | ||||
|             chunkJRaw = currentChunk->jchunk; | ||||
|             chunkMask = currentChunk->chunkMask; | ||||
|             jd = currentChunk->jd; | ||||
|             jd0 = currentChunk->jd0; | ||||
|             u = currentChunk->ju; | ||||
|             v = currentChunk->jv; | ||||
|             w = currentChunk->jw; | ||||
|             u0 = currentChunk->ju0; | ||||
|             v0 = currentChunk->jv0; | ||||
|             w0 = currentChunk->jw0; | ||||
|             Java_electrosphere_FluidSim_addDensity(env,chunkJRaw,DIM,chunkMask,currentChunk->d,currentChunk->d0,timestep); | ||||
|         } | ||||
|     } | ||||
| @ -708,6 +716,23 @@ JNIEXPORT void JNICALL Java_electrosphere_FluidSim_simulate( | ||||
|         //swap vector fields
 | ||||
|         for(int i = 0; i < numChunks; i++){ | ||||
|             Chunk * currentChunk = chunks[i]; | ||||
|             chunkJRaw = currentChunk->jchunk; | ||||
|             chunkMask = currentChunk->chunkMask; | ||||
|             jd = currentChunk->jd; | ||||
|             jd0 = currentChunk->jd0; | ||||
|             u = currentChunk->ju; | ||||
|             v = currentChunk->jv; | ||||
|             w = currentChunk->jw; | ||||
|             u0 = currentChunk->ju0; | ||||
|             v0 = currentChunk->jv0; | ||||
|             w0 = currentChunk->jw0; | ||||
|             setBuffArr(dJId,jd0); | ||||
|             setBuffArr(d0JId,jd); | ||||
| 
 | ||||
|             jobject tmpObj; | ||||
|             tmpObj = currentChunk->jd; | ||||
|             currentChunk->jd = currentChunk->jd0; | ||||
|             currentChunk->jd0 = tmpObj; | ||||
| 
 | ||||
|             float * tmpArr; | ||||
|             for(int j = 0; j < 27; j++){ | ||||
| @ -722,8 +747,14 @@ JNIEXPORT void JNICALL Java_electrosphere_FluidSim_simulate( | ||||
|             chunkMask = currentChunk->chunkMask; | ||||
|             jd = currentChunk->jd; | ||||
|             jd0 = currentChunk->jd0; | ||||
|             copyNeighborsRaw(env,chunkJRaw,DIM,chunkMask,0,0,currentChunk->d); | ||||
|             copyNeighborsRaw(env,chunkJRaw,DIM,chunkMask,0,0,currentChunk->d0); | ||||
|             u = currentChunk->ju; | ||||
|             v = currentChunk->jv; | ||||
|             w = currentChunk->jw; | ||||
|             u0 = currentChunk->ju0; | ||||
|             v0 = currentChunk->jv0; | ||||
|             w0 = currentChunk->jw0; | ||||
|             Java_electrosphere_FluidSim_copyNeighbors(env,chunkJRaw,DIM,chunkMask,0,0,jd); | ||||
|             Java_electrosphere_FluidSim_copyNeighbors(env,chunkJRaw,DIM,chunkMask,0,0,jd0); | ||||
|         } | ||||
|     } | ||||
|     //diffuse density
 | ||||
| @ -733,16 +764,29 @@ JNIEXPORT void JNICALL Java_electrosphere_FluidSim_simulate( | ||||
|                 Chunk * currentChunk = chunks[i]; | ||||
|                 chunkJRaw = currentChunk->jchunk; | ||||
|                 chunkMask = currentChunk->chunkMask; | ||||
|                 jd = currentChunk->jd; | ||||
|                 jd0 = currentChunk->jd0; | ||||
|                 u = currentChunk->ju; | ||||
|                 v = currentChunk->jv; | ||||
|                 w = currentChunk->jw; | ||||
|                 Java_electrosphere_FluidSim_solveDiffuseDensity(env,chunkJRaw,DIM,chunkMask,currentChunk->d,currentChunk->d0,u,v,w,DIFFUSION_CONSTANT,VISCOSITY_CONSTANT,timestep); | ||||
|                 u0 = currentChunk->ju0; | ||||
|                 v0 = currentChunk->jv0; | ||||
|                 w0 = currentChunk->jw0; | ||||
|                 Java_electrosphere_FluidSim_solveDiffuseDensity(env,chunkJRaw,DIM,chunkMask,jd,jd0,u,v,w,DIFFUSION_CONSTANT,VISCOSITY_CONSTANT,timestep); | ||||
|             } | ||||
|             for(int i = 0; i < numChunks; i++){ | ||||
|                 Chunk * currentChunk = chunks[i]; | ||||
|                 chunkJRaw = currentChunk->jchunk; | ||||
|                 chunkMask = currentChunk->chunkMask; | ||||
|                 setBoundsToNeighborsRaw(env,chunkJRaw,DIM,chunkMask,0,currentChunk->d); | ||||
|                 jd = currentChunk->jd; | ||||
|                 jd0 = currentChunk->jd0; | ||||
|                 u = currentChunk->ju; | ||||
|                 v = currentChunk->jv; | ||||
|                 w = currentChunk->jw; | ||||
|                 u0 = currentChunk->ju0; | ||||
|                 v0 = currentChunk->jv0; | ||||
|                 w0 = currentChunk->jw0; | ||||
|                 Java_electrosphere_FluidSim_setBoundsToNeighbors(env,chunkJRaw,DIM,chunkMask,0,jd); | ||||
|             } | ||||
|         } | ||||
|     } | ||||
| @ -751,6 +795,24 @@ JNIEXPORT void JNICALL Java_electrosphere_FluidSim_simulate( | ||||
|         //swap vector fields
 | ||||
|         for(int i = 0; i < numChunks; i++){ | ||||
|             Chunk * currentChunk = chunks[i]; | ||||
|             chunkJRaw = currentChunk->jchunk; | ||||
|             chunkMask = currentChunk->chunkMask; | ||||
|             jd = currentChunk->jd; | ||||
|             jd0 = currentChunk->jd0; | ||||
|             u = currentChunk->ju; | ||||
|             v = currentChunk->jv; | ||||
|             w = currentChunk->jw; | ||||
|             u0 = currentChunk->ju0; | ||||
|             v0 = currentChunk->jv0; | ||||
|             w0 = currentChunk->jw0; | ||||
|             setBuffArr(dJId,jd0); | ||||
|             setBuffArr(d0JId,jd); | ||||
| 
 | ||||
|             jobject tmpObj; | ||||
|             tmpObj = currentChunk->jd; | ||||
|             currentChunk->jd = currentChunk->jd0; | ||||
|             currentChunk->jd0 = tmpObj; | ||||
| 
 | ||||
|             float * tmpArr; | ||||
|             for(int j = 0; j < 27; j++){ | ||||
|                 tmpArr = currentChunk->d[j]; | ||||
| @ -762,8 +824,16 @@ JNIEXPORT void JNICALL Java_electrosphere_FluidSim_simulate( | ||||
|             Chunk * currentChunk = chunks[i]; | ||||
|             chunkJRaw = currentChunk->jchunk; | ||||
|             chunkMask = currentChunk->chunkMask; | ||||
|             copyNeighborsRaw(env,chunkJRaw,DIM,chunkMask,0,0,currentChunk->d); | ||||
|             copyNeighborsRaw(env,chunkJRaw,DIM,chunkMask,0,0,currentChunk->d0); | ||||
|             jd = currentChunk->jd; | ||||
|             jd0 = currentChunk->jd0; | ||||
|             u = currentChunk->ju; | ||||
|             v = currentChunk->jv; | ||||
|             w = currentChunk->jw; | ||||
|             u0 = currentChunk->ju0; | ||||
|             v0 = currentChunk->jv0; | ||||
|             w0 = currentChunk->jw0; | ||||
|             Java_electrosphere_FluidSim_copyNeighbors(env,chunkJRaw,DIM,chunkMask,0,0,jd); | ||||
|             Java_electrosphere_FluidSim_copyNeighbors(env,chunkJRaw,DIM,chunkMask,0,0,jd0); | ||||
|         } | ||||
|     } | ||||
|     //advect density
 | ||||
| @ -772,9 +842,14 @@ JNIEXPORT void JNICALL Java_electrosphere_FluidSim_simulate( | ||||
|             Chunk * currentChunk = chunks[i]; | ||||
|             chunkJRaw = currentChunk->jchunk; | ||||
|             chunkMask = currentChunk->chunkMask; | ||||
|             jd = currentChunk->jd; | ||||
|             jd0 = currentChunk->jd0; | ||||
|             u = currentChunk->ju; | ||||
|             v = currentChunk->jv; | ||||
|             w = currentChunk->jw; | ||||
|             u0 = currentChunk->ju0; | ||||
|             v0 = currentChunk->jv0; | ||||
|             w0 = currentChunk->jw0; | ||||
|             Java_electrosphere_FluidSim_advectDensity(env,chunkJRaw,DIM,chunkMask,currentChunk->d,currentChunk->d0,u,v,w,DIFFUSION_CONSTANT,VISCOSITY_CONSTANT,timestep); | ||||
|         } | ||||
|     } | ||||
| @ -784,6 +859,14 @@ JNIEXPORT void JNICALL Java_electrosphere_FluidSim_simulate( | ||||
|             Chunk * currentChunk = chunks[i]; | ||||
|             chunkJRaw = currentChunk->jchunk; | ||||
|             chunkMask = currentChunk->chunkMask; | ||||
|             jd = currentChunk->jd; | ||||
|             jd0 = currentChunk->jd0; | ||||
|             u = currentChunk->ju; | ||||
|             v = currentChunk->jv; | ||||
|             w = currentChunk->jw; | ||||
|             u0 = currentChunk->ju0; | ||||
|             v0 = currentChunk->jv0; | ||||
|             w0 = currentChunk->jw0; | ||||
|             setBoundsToNeighborsRaw(env,chunkJRaw,DIM,chunkMask,0,currentChunk->d); | ||||
|         } | ||||
|     } | ||||
|  | ||||
| @ -73,7 +73,7 @@ JNIEXPORT void JNICALL Java_electrosphere_FluidSim_addDensity | ||||
|  * Signature: (II[Ljava/nio/ByteBuffer;[Ljava/nio/ByteBuffer;[Ljava/nio/ByteBuffer;[Ljava/nio/ByteBuffer;[Ljava/nio/ByteBuffer;FFF)V | ||||
|  */ | ||||
| JNIEXPORT void JNICALL Java_electrosphere_FluidSim_solveDiffuseDensity | ||||
|   (JNIEnv *, jobject, jint, jint, float **, float **, jobjectArray, jobjectArray, jobjectArray, jfloat, jfloat, jfloat); | ||||
|   (JNIEnv *, jobject, jint, jint, jobjectArray, jobjectArray, jobjectArray, jobjectArray, jobjectArray, jfloat, jfloat, jfloat); | ||||
| 
 | ||||
| /*
 | ||||
|  * Class:     electrosphere_FluidSim | ||||
| @ -107,13 +107,4 @@ JNIEXPORT void JNICALL setBoundsToNeighborsRaw | ||||
| JNIEXPORT void JNICALL Java_electrosphere_FluidSim_copyNeighbors | ||||
|   (JNIEnv *, jobject, jint, jint, jint, jint, jobjectArray); | ||||
| 
 | ||||
| JNIEXPORT void JNICALL copyNeighborsRaw | ||||
|   (JNIEnv * env, | ||||
|   jobject this, | ||||
|   jint N, | ||||
|   jint chunk_mask, | ||||
|   jint cx, | ||||
|   jint vector_dir, | ||||
|   float ** neighborArray); | ||||
| 
 | ||||
| #endif | ||||
| @ -782,231 +782,6 @@ JNIEXPORT void JNICALL Java_electrosphere_FluidSim_setBoundsToNeighbors | ||||
|     target[IX(DIM-1,DIM-1,DIM-1)] = (float)((target[IX(DIM-1,DIM-1,DIM-2)]+target[IX(DIM-1,DIM-2,DIM-1)]+target[IX(DIM-1,DIM-1,DIM-2)])/3.0); | ||||
| } | ||||
| 
 | ||||
| /**
 | ||||
|  * This exclusively copies neighbors to make sure zeroing out stuff doesn't break sim | ||||
| */ | ||||
| JNIEXPORT void JNICALL copyNeighborsRaw | ||||
|   (JNIEnv * env, | ||||
|   jobject this, | ||||
|   jint N, | ||||
|   jint chunk_mask, | ||||
|   jint cx, | ||||
|   jint vector_dir, | ||||
|   float ** neighborArray){ | ||||
|     int DIM = N; | ||||
|     float * target = GET_ARR_RAW(env,neighborArray,CENTER_LOC); | ||||
|     float * source; | ||||
| 
 | ||||
| 
 | ||||
|     //
 | ||||
|     //
 | ||||
|     //   PLANES
 | ||||
|     //
 | ||||
|     //
 | ||||
|     if(ARR_EXISTS(chunk_mask,0,1,1)){ | ||||
|         source = GET_ARR_RAW(env,neighborArray,CK(0,1,1)); | ||||
|         for(int x=1; x < DIM-1; x++){ | ||||
|             for(int y = 1; y < DIM-1; y++){ | ||||
|                 target[IX(0,x,y)] = source[IX(DIM-2,x,y)]; | ||||
|             } | ||||
|         } | ||||
|     } | ||||
| 
 | ||||
|     if(ARR_EXISTS(chunk_mask,2,1,1)){ | ||||
|         source = GET_ARR_RAW(env,neighborArray,CK(2,1,1)); | ||||
|         for(int x=1; x < DIM-1; x++){ | ||||
|             for(int y = 1; y < DIM-1; y++){ | ||||
|                 target[IX(DIM-1,x,y)] = source[IX(1,x,y)]; | ||||
|             } | ||||
|         } | ||||
|     } | ||||
| 
 | ||||
|     if(ARR_EXISTS(chunk_mask,1,0,1)){ | ||||
|         source = GET_ARR_RAW(env,neighborArray,CK(1,0,1)); | ||||
|         for(int x=1; x < DIM-1; x++){ | ||||
|             for(int y = 1; y < DIM-1; y++){ | ||||
|                 target[IX(x,0,y)] = source[IX(x,DIM-2,y)]; | ||||
|             } | ||||
|         } | ||||
|     } | ||||
| 
 | ||||
|     if(ARR_EXISTS(chunk_mask,1,2,1)){ | ||||
|         source = GET_ARR_RAW(env,neighborArray,CK(1,2,1)); | ||||
|         for(int x=1; x < DIM-1; x++){ | ||||
|             for(int y = 1; y < DIM-1; y++){ | ||||
|                 target[IX(x,DIM-1,y)] = source[IX(x,1,y)]; | ||||
|             } | ||||
|         } | ||||
|     } | ||||
| 
 | ||||
|     if(ARR_EXISTS(chunk_mask,1,1,0)){ | ||||
|         source = GET_ARR_RAW(env,neighborArray,CK(1,1,0)); | ||||
|         for(int x=1; x < DIM-1; x++){ | ||||
|             for(int y = 1; y < DIM-1; y++){ | ||||
|                 target[IX(x,y,0)] = source[IX(x,y,DIM-2)]; | ||||
|             } | ||||
|         } | ||||
|     } | ||||
| 
 | ||||
|     if(ARR_EXISTS(chunk_mask,1,1,2)){ | ||||
|         source = GET_ARR_RAW(env,neighborArray,CK(1,1,2)); | ||||
|         for(int x=1; x < DIM-1; x++){ | ||||
|             for(int y = 1; y < DIM-1; y++){ | ||||
|                 target[IX(x,y,DIM-1)] = source[IX(x,y,1)]; | ||||
|             } | ||||
|         } | ||||
|     } | ||||
| 
 | ||||
| 
 | ||||
|     //
 | ||||
|     //
 | ||||
|     //    EDGES
 | ||||
|     //
 | ||||
|     //
 | ||||
|     if(ARR_EXISTS(chunk_mask,0,0,1)){ | ||||
|         source = GET_ARR_RAW(env,neighborArray,CK(0,0,1)); | ||||
|         for(int x=1; x < DIM-1; x++){ | ||||
|                 target[IX(0,0,x)] = source[IX(DIM-2,DIM-2,x)]; | ||||
|         } | ||||
|     } | ||||
| 
 | ||||
|     if(ARR_EXISTS(chunk_mask,2,0,1)){ | ||||
|         source = GET_ARR_RAW(env,neighborArray,CK(2,0,1)); | ||||
|         for(int x=1; x < DIM-1; x++){ | ||||
|                 target[IX(DIM-1,0,x)] = source[IX(1,DIM-2,x)]; | ||||
|         } | ||||
|     } | ||||
| 
 | ||||
|     if(ARR_EXISTS(chunk_mask,0,2,1)){ | ||||
|         source = GET_ARR_RAW(env,neighborArray,CK(0,2,1)); | ||||
|         for(int x=1; x < DIM-1; x++){ | ||||
|                 target[IX(0,DIM-1,x)] = source[IX(DIM-2,1,x)]; | ||||
|         } | ||||
|     } | ||||
| 
 | ||||
|     if(ARR_EXISTS(chunk_mask,2,2,1)){ | ||||
|         source = GET_ARR_RAW(env,neighborArray,CK(2,2,1)); | ||||
|         for(int x=1; x < DIM-1; x++){ | ||||
|                 target[IX(DIM-1,DIM-1,x)] = source[IX(1,1,x)]; | ||||
|         } | ||||
|     } | ||||
| 
 | ||||
|     //
 | ||||
|     //
 | ||||
| 
 | ||||
|     if(ARR_EXISTS(chunk_mask,0,1,0)){ | ||||
|         source = GET_ARR_RAW(env,neighborArray,CK(0,1,0)); | ||||
|         for(int x=1; x < DIM-1; x++){ | ||||
|                 target[IX(0,x,0)] = source[IX(DIM-2,x,DIM-2)]; | ||||
|         } | ||||
|     } | ||||
| 
 | ||||
|     if(ARR_EXISTS(chunk_mask,2,1,0)){ | ||||
|         source = GET_ARR_RAW(env,neighborArray,CK(2,1,0)); | ||||
|         for(int x=1; x < DIM-1; x++){ | ||||
|                 target[IX(DIM-1,x,0)] = source[IX(1,x,DIM-2)]; | ||||
|         } | ||||
|     } | ||||
| 
 | ||||
|     if(ARR_EXISTS(chunk_mask,0,1,2)){ | ||||
|         source = GET_ARR_RAW(env,neighborArray,CK(0,1,2)); | ||||
|         for(int x=1; x < DIM-1; x++){ | ||||
|                 target[IX(0,x,DIM-1)] = source[IX(DIM-2,x,1)]; | ||||
|         } | ||||
|     } | ||||
| 
 | ||||
|     if(ARR_EXISTS(chunk_mask,2,1,2)){ | ||||
|         source = GET_ARR_RAW(env,neighborArray,CK(2,1,2)); | ||||
|         for(int x=1; x < DIM-1; x++){ | ||||
|                 target[IX(DIM-1,x,DIM-1)] = source[IX(1,x,1)]; | ||||
|         } | ||||
|     } | ||||
| 
 | ||||
|     //
 | ||||
|     //
 | ||||
| 
 | ||||
|     if(ARR_EXISTS(chunk_mask,1,0,0)){ | ||||
|         source = GET_ARR_RAW(env,neighborArray,CK(1,0,0)); | ||||
|         for(int x=1; x < DIM-1; x++){ | ||||
|                 target[IX(x,0,0)] = source[IX(x,DIM-2,DIM-2)]; | ||||
|         } | ||||
|     } | ||||
| 
 | ||||
|     if(ARR_EXISTS(chunk_mask,1,2,0)){ | ||||
|         source = GET_ARR_RAW(env,neighborArray,CK(1,2,0)); | ||||
|         for(int x=1; x < DIM-1; x++){ | ||||
|                 target[IX(x,DIM-1,0)] = source[IX(x,1,DIM-2)]; | ||||
|         } | ||||
|     } | ||||
| 
 | ||||
|     if(ARR_EXISTS(chunk_mask,1,0,2)){ | ||||
|         source = GET_ARR_RAW(env,neighborArray,CK(1,0,2)); | ||||
|         for(int x=1; x < DIM-1; x++){ | ||||
|                 target[IX(x,0,DIM-1)] = source[IX(x,DIM-2,1)]; | ||||
|         } | ||||
|     } | ||||
| 
 | ||||
|     if(ARR_EXISTS(chunk_mask,1,2,2)){ | ||||
|         source = GET_ARR_RAW(env,neighborArray,CK(1,2,2)); | ||||
|         for(int x=1; x < DIM-1; x++){ | ||||
|                 target[IX(x,DIM-1,DIM-1)] = source[IX(x,1,1)]; | ||||
|         } | ||||
|     } | ||||
| 
 | ||||
| 
 | ||||
|     //
 | ||||
|     //
 | ||||
|     //     CORNERS
 | ||||
|     //
 | ||||
|     //
 | ||||
| 
 | ||||
|     if(ARR_EXISTS(chunk_mask,0,0,0)){ | ||||
|         source = GET_ARR_RAW(env,neighborArray,CK(0,0,0)); | ||||
|         target[IX(0,0,0)] = source[IX(DIM-2,DIM-2,DIM-2)]; | ||||
|     } | ||||
| 
 | ||||
|     if(ARR_EXISTS(chunk_mask,2,0,0)){ | ||||
|         source = GET_ARR_RAW(env,neighborArray,CK(2,0,0)); | ||||
|         target[IX(DIM-1,0,0)] = source[IX(1,DIM-2,DIM-2)]; | ||||
|     } | ||||
| 
 | ||||
|     if(ARR_EXISTS(chunk_mask,0,2,0)){ | ||||
|         source = GET_ARR_RAW(env,neighborArray,CK(0,2,0)); | ||||
|         target[IX(0,DIM-1,0)] = source[IX(DIM-2,1,DIM-2)]; | ||||
|     } | ||||
| 
 | ||||
|     if(ARR_EXISTS(chunk_mask,2,2,0)){ | ||||
|         source = GET_ARR_RAW(env,neighborArray,CK(2,2,0)); | ||||
|         target[IX(DIM-1,DIM-1,0)] = source[IX(1,1,DIM-2)]; | ||||
|     } | ||||
| 
 | ||||
|     //
 | ||||
|     //
 | ||||
| 
 | ||||
|     if(ARR_EXISTS(chunk_mask,0,0,2)){ | ||||
|         source = GET_ARR_RAW(env,neighborArray,CK(0,0,2)); | ||||
|         target[IX(0,0,DIM-1)] = source[IX(DIM-2,DIM-2,1)]; | ||||
|     } | ||||
| 
 | ||||
|     if(ARR_EXISTS(chunk_mask,2,0,2)){ | ||||
|         source = GET_ARR_RAW(env,neighborArray,CK(2,0,2)); | ||||
|         target[IX(DIM-1,0,DIM-1)] = source[IX(1,DIM-2,1)]; | ||||
|     } | ||||
| 
 | ||||
|     if(ARR_EXISTS(chunk_mask,0,2,2)){ | ||||
|         source = GET_ARR_RAW(env,neighborArray,CK(0,2,2)); | ||||
|         target[IX(0,DIM-1,DIM-1)] = source[IX(DIM-2,1,1)]; | ||||
|     } | ||||
| 
 | ||||
|     if(ARR_EXISTS(chunk_mask,2,2,2)){ | ||||
|         source = GET_ARR_RAW(env,neighborArray,CK(2,2,2)); | ||||
|         target[IX(DIM-1,DIM-1,DIM-1)] = source[IX(1,1,1)]; | ||||
|     } | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| } | ||||
| 
 | ||||
| /**
 | ||||
|  * This exclusively copies neighbors to make sure zeroing out stuff doesn't break sim | ||||
| */ | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user