diff options
Diffstat (limited to 'source/blender/blenkernel/intern/ocean.c')
-rw-r--r-- | source/blender/blenkernel/intern/ocean.c | 149 |
1 files changed, 99 insertions, 50 deletions
diff --git a/source/blender/blenkernel/intern/ocean.c b/source/blender/blenkernel/intern/ocean.c index 5ba1b3d86c3..907de7888cb 100644 --- a/source/blender/blenkernel/intern/ocean.c +++ b/source/blender/blenkernel/intern/ocean.c @@ -196,13 +196,15 @@ static float Ph(struct Ocean* o, float kx,float kz ) float tmp; float k2 = kx*kx + kz*kz; - if (k2 == 0.0f) { + if (k2 == 0.0f) + { return 0.0f; // no DC component } // damp out the waves going in the direction opposite the wind tmp = (o->_wx * kx + o->_wz * kz)/sqrtf(k2); - if (tmp < 0) { + if (tmp < 0) + { tmp *= o->_damp_reflections; } @@ -419,15 +421,18 @@ void BKE_ocean_eval_uv_catrom(struct Ocean *oc, struct OceanResult *ocr, float u frac_z) { - if (oc->_do_disp_y) { + if (oc->_do_disp_y) + { ocr->disp[1] = INTERP(oc->_disp_y); } - if (oc->_do_normals) { + if (oc->_do_normals) + { ocr->normal[0] = INTERP(oc->_N_x); ocr->normal[1] = oc->_N_y/*INTERP(oc->_N_y) (MEM01)*/; ocr->normal[2] = INTERP(oc->_N_z); } - if (oc->_do_chop) { + if (oc->_do_chop) + { ocr->disp[0] = INTERP(oc->_disp_x); ocr->disp[2] = INTERP(oc->_disp_z); } @@ -436,7 +441,8 @@ void BKE_ocean_eval_uv_catrom(struct Ocean *oc, struct OceanResult *ocr, float u ocr->disp[2] = 0.0; } - if (oc->_do_jacobian) { + if (oc->_do_jacobian) + { compute_eigenstuff(ocr, INTERP(oc->_Jxx),INTERP(oc->_Jzz),INTERP(oc->_Jxz)); } } @@ -468,7 +474,8 @@ void BKE_ocean_eval_ij(struct Ocean *oc, struct OceanResult *ocr, int i,int j) ocr->disp[1] = oc->_do_disp_y ? oc->_disp_y[i*oc->_N+j] : 0.0f; - if (oc->_do_chop) { + if (oc->_do_chop) + { ocr->disp[0] = oc->_disp_x[i*oc->_N+j]; ocr->disp[2] = oc->_disp_z[i*oc->_N+j]; } @@ -477,7 +484,8 @@ void BKE_ocean_eval_ij(struct Ocean *oc, struct OceanResult *ocr, int i,int j) ocr->disp[2] = 0.0f; } - if (oc->_do_normals) { + if (oc->_do_normals) + { ocr->normal[0] = oc->_N_x[i*oc->_N+j]; ocr->normal[1] = oc->_N_y/*oc->_N_y[i*oc->_N+j] (MEM01)*/; ocr->normal[2] = oc->_N_z[i*oc->_N+j]; @@ -485,7 +493,8 @@ void BKE_ocean_eval_ij(struct Ocean *oc, struct OceanResult *ocr, int i,int j) normalize_v3(ocr->normal); } - if (oc->_do_jacobian) { + if (oc->_do_jacobian) + { compute_eigenstuff(ocr, oc->_Jxx[i*oc->_N+j],oc->_Jzz[i*oc->_N+j],oc->_Jxz[i*oc->_N+j]); } @@ -502,10 +511,12 @@ void BKE_simulate_ocean(struct Ocean *o, float t, float scale, float chop_amount // compute a new htilda #pragma omp parallel for private(i, j) - for (i = 0 ; i < o->_M ; ++i) { + for (i = 0 ; i < o->_M ; ++i) + { // note the <= _N/2 here, see the fftw doco about // the mechanics of the complex->real fft storage - for ( j = 0 ; j <= o->_N / 2 ; ++j) { + for ( j = 0 ; j <= o->_N / 2 ; ++j) + { fftw_complex exp_param1; fftw_complex exp_param2; fftw_complex conj_param; @@ -530,7 +541,8 @@ void BKE_simulate_ocean(struct Ocean *o, float t, float scale, float chop_amount #pragma omp section { - if (o->_do_disp_y) { + if (o->_do_disp_y) + { // y displacement fftw_execute(o->_disp_y_plan); } @@ -538,10 +550,13 @@ void BKE_simulate_ocean(struct Ocean *o, float t, float scale, float chop_amount #pragma omp section { - if (o->_do_chop) { + if (o->_do_chop) + { // x displacement - for ( i = 0 ; i < o->_M ; ++i) { - for ( j = 0 ; j <= o->_N / 2 ; ++j) { + for ( i = 0 ; i < o->_M ; ++i) + { + for ( j = 0 ; j <= o->_N / 2 ; ++j) + { fftw_complex mul_param; fftw_complex minus_i; @@ -560,10 +575,13 @@ void BKE_simulate_ocean(struct Ocean *o, float t, float scale, float chop_amount #pragma omp section { - if (o->_do_chop) { + if (o->_do_chop) + { // z displacement - for ( i = 0 ; i < o->_M ; ++i) { - for ( j = 0 ; j <= o->_N / 2 ; ++j) { + for ( i = 0 ; i < o->_M ; ++i) + { + for ( j = 0 ; j <= o->_N / 2 ; ++j) + { fftw_complex mul_param; fftw_complex minus_i; @@ -582,10 +600,13 @@ void BKE_simulate_ocean(struct Ocean *o, float t, float scale, float chop_amount #pragma omp section { - if (o->_do_jacobian) { + if (o->_do_jacobian) + { // Jxx - for ( i = 0 ; i < o->_M ; ++i) { - for ( j = 0 ; j <= o->_N / 2 ; ++j) { + for ( i = 0 ; i < o->_M ; ++i) + { + for ( j = 0 ; j <= o->_N / 2 ; ++j) + { fftw_complex mul_param; //init_complex(mul_param, -scale, 0); @@ -599,8 +620,10 @@ void BKE_simulate_ocean(struct Ocean *o, float t, float scale, float chop_amount } fftw_execute(o->_Jxx_plan); - for ( i = 0 ; i < o->_M ; ++i) { - for ( j = 0 ; j < o->_N ; ++j) { + for ( i = 0 ; i < o->_M ; ++i) + { + for ( j = 0 ; j < o->_N ; ++j) + { o->_Jxx[i*o->_N+j] += 1.0; } } @@ -609,10 +632,13 @@ void BKE_simulate_ocean(struct Ocean *o, float t, float scale, float chop_amount #pragma omp section { - if (o->_do_jacobian) { + if (o->_do_jacobian) + { // Jzz - for ( i = 0 ; i < o->_M ; ++i) { - for ( j = 0 ; j <= o->_N / 2 ; ++j) { + for ( i = 0 ; i < o->_M ; ++i) + { + for ( j = 0 ; j <= o->_N / 2 ; ++j) + { fftw_complex mul_param; //init_complex(mul_param, -scale, 0); @@ -625,8 +651,10 @@ void BKE_simulate_ocean(struct Ocean *o, float t, float scale, float chop_amount } } fftw_execute(o->_Jzz_plan); - for ( i = 0 ; i < o->_M ; ++i) { - for ( j = 0 ; j < o->_N ; ++j) { + for ( i = 0 ; i < o->_M ; ++i) + { + for ( j = 0 ; j < o->_N ; ++j) + { o->_Jzz[i*o->_N+j] += 1.0; } } @@ -635,10 +663,13 @@ void BKE_simulate_ocean(struct Ocean *o, float t, float scale, float chop_amount #pragma omp section { - if (o->_do_jacobian) { + if (o->_do_jacobian) + { // Jxz - for ( i = 0 ; i < o->_M ; ++i) { - for ( j = 0 ; j <= o->_N / 2 ; ++j) { + for ( i = 0 ; i < o->_M ; ++i) + { + for ( j = 0 ; j <= o->_N / 2 ; ++j) + { fftw_complex mul_param; //init_complex(mul_param, -scale, 0); @@ -657,9 +688,12 @@ void BKE_simulate_ocean(struct Ocean *o, float t, float scale, float chop_amount #pragma omp section { // fft normals - if (o->_do_normals) { - for ( i = 0 ; i < o->_M ; ++i) { - for ( j = 0 ; j <= o->_N / 2 ; ++j) { + if (o->_do_normals) + { + for ( i = 0 ; i < o->_M ; ++i) + { + for ( j = 0 ; j <= o->_N / 2 ; ++j) + { fftw_complex mul_param; init_complex(mul_param, 0.0, -1.0); @@ -675,9 +709,12 @@ void BKE_simulate_ocean(struct Ocean *o, float t, float scale, float chop_amount #pragma omp section { - if (o->_do_normals) { - for ( i = 0 ; i < o->_M ; ++i) { - for ( j = 0 ; j <= o->_N / 2 ; ++j) { + if (o->_do_normals) + { + for ( i = 0 ; i < o->_M ; ++i) + { + for ( j = 0 ; j <= o->_N / 2 ; ++j) + { fftw_complex mul_param; init_complex(mul_param, 0.0, -1.0); @@ -720,9 +757,12 @@ static void set_height_normalize_factor(struct Ocean *oc) BLI_rw_mutex_lock(&oc->oceanmutex, THREAD_LOCK_READ); - for (i = 0; i < oc->_M; ++i) { - for (j = 0; j < oc->_N; ++j) { - if ( max_h < fabsf(oc->_disp_y[i*oc->_N+j])) { + for (i = 0; i < oc->_M; ++i) + { + for (j = 0; j < oc->_N; ++j) + { + if ( max_h < fabsf(oc->_disp_y[i*oc->_N+j])) + { max_h = fabsf(oc->_disp_y[i*oc->_N+j]); } } @@ -811,8 +851,10 @@ void BKE_init_ocean(struct Ocean* o, int M,int N, float Lx, float Lz, float V, f /*srand(seed);*/ BLI_srand(seed); - for (i = 0 ; i < o->_M ; ++i) { - for (j = 0 ; j < o->_N ; ++j) { + for (i = 0 ; i < o->_M ; ++i) + { + for (j = 0 ; j < o->_N ; ++j) + { float r1 = gaussRand(); float r2 = gaussRand(); @@ -879,12 +921,14 @@ void BKE_free_ocean_data(struct Ocean *oc) BLI_rw_mutex_lock(&oc->oceanmutex, THREAD_LOCK_WRITE); - if (oc->_do_disp_y) { + if (oc->_do_disp_y) + { fftw_destroy_plan(oc->_disp_y_plan); MEM_freeN(oc->_disp_y); } - if (oc->_do_normals) { + if (oc->_do_normals) + { MEM_freeN(oc->_fft_in_nx); MEM_freeN(oc->_fft_in_nz); fftw_destroy_plan(oc->_N_x_plan); @@ -894,7 +938,8 @@ void BKE_free_ocean_data(struct Ocean *oc) MEM_freeN(oc->_N_z); } - if (oc->_do_chop) { + if (oc->_do_chop) + { MEM_freeN(oc->_fft_in_x); MEM_freeN(oc->_fft_in_z); fftw_destroy_plan(oc->_disp_x_plan); @@ -903,7 +948,8 @@ void BKE_free_ocean_data(struct Ocean *oc) MEM_freeN(oc->_disp_z); } - if (oc->_do_jacobian) { + if (oc->_do_jacobian) + { MEM_freeN(oc->_fft_in_jxx); MEM_freeN(oc->_fft_in_jzz); MEM_freeN(oc->_fft_in_jxz); @@ -956,7 +1002,7 @@ static void cache_filename(char *string, const char *path, const char *relbase, char cachepath[FILE_MAX]; const char *fname; - switch (type) { + switch(type) { case CACHE_TYPE_FOAM: fname= "foam_"; break; @@ -997,7 +1043,8 @@ void BKE_free_ocean_cache(struct OceanCache *och) if (!och) return; if (och->ibufs_disp) { - for (i=och->start, f=0; i<=och->end; i++, f++) { + for (i=och->start, f=0; i<=och->end; i++, f++) + { if (och->ibufs_disp[f]) { IMB_freeImBuf(och->ibufs_disp[f]); } @@ -1006,7 +1053,8 @@ void BKE_free_ocean_cache(struct OceanCache *och) } if (och->ibufs_foam) { - for (i=och->start, f=0; i<=och->end; i++, f++) { + for (i=och->start, f=0; i<=och->end; i++, f++) + { if (och->ibufs_foam[f]) { IMB_freeImBuf(och->ibufs_foam[f]); } @@ -1015,7 +1063,8 @@ void BKE_free_ocean_cache(struct OceanCache *och) } if (och->ibufs_norm) { - for (i=och->start, f=0; i<=och->end; i++, f++) { + for (i=och->start, f=0; i<=och->end; i++, f++) + { if (och->ibufs_norm[f]) { IMB_freeImBuf(och->ibufs_norm[f]); } |