Revision: 23111 http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=23111 Author: dfelinto Date: 2009-09-10 19:21:36 +0200 (Thu, 10 Sep 2009)
Log Message: ----------- merge 23072 - HEAD (23110) Just a note (so people stop asking it in IRC :): This branch is intended to initially port bb_dev to 2.5. Then to bring other functionalities that may not be ready for 2.5 first official release (eg glsl skinning). The commits I'm going to port first are: 20409 - Patch:[#17523] BGE VBO patch by Samuel Anjam (toonist) 20411 - Missing files from last commit (Patch:[ #17523] BGE VBO patch by Samuel Anjam (toonist)) 20549 - Don' t create VBO at the same time as Display list. 20662 - Fix for: Normals are not being updated in VBO. 20663 - BGE VBO updates The other commits are from Benoit, I'm not sure he wants to do it now. Those are the commits: 20550 - BGE: rasterizer performance improvements: eliminate matrix calculation when activating the mesh slots in GLSL. 20557 - Added a little helper button in the material panel so visualize the GLSL blender shader . 20560 - Fix NULL pointer crash. 20565 - BGE: forgot to add files to go with rasterizer optimizations. 20570 - Further overhead reduction in the rasterizer. 20612 - GLSL material export: unvoid unnecessary undo buffer, export library as lib_shader.glsl. 20685 - LOD system part 1 : UI+backend for multiple mesh selection per object. 20567 - Fix Makefiles, missing include paths. Modified Paths: -------------- branches/bb_dev_25/intern/smoke/extern/smoke_API.h branches/bb_dev_25/intern/smoke/intern/FLUID_3D.cpp branches/bb_dev_25/intern/smoke/intern/FLUID_3D_STATIC.cpp branches/bb_dev_25/intern/smoke/intern/WTURBULENCE.cpp branches/bb_dev_25/intern/smoke/intern/WTURBULENCE.h branches/bb_dev_25/intern/smoke/intern/smoke_API.cpp branches/bb_dev_25/projectfiles_vc9/blender/editors/ED_editors.vcproj branches/bb_dev_25/release/io/netrender/client.py branches/bb_dev_25/release/io/netrender/master.py branches/bb_dev_25/release/io/netrender/slave.py branches/bb_dev_25/release/ui/buttons_data_armature.py branches/bb_dev_25/release/ui/buttons_data_bone.py branches/bb_dev_25/release/ui/buttons_data_empty.py branches/bb_dev_25/release/ui/buttons_physics_smoke.py branches/bb_dev_25/release/ui/space_image.py branches/bb_dev_25/release/ui/space_info.py branches/bb_dev_25/release/ui/space_view3d.py branches/bb_dev_25/source/Makefile branches/bb_dev_25/source/blender/blenkernel/BKE_animsys.h branches/bb_dev_25/source/blender/blenkernel/BKE_node.h branches/bb_dev_25/source/blender/blenkernel/BKE_pointcache.h branches/bb_dev_25/source/blender/blenkernel/BKE_smoke.h branches/bb_dev_25/source/blender/blenkernel/intern/anim_sys.c branches/bb_dev_25/source/blender/blenkernel/intern/library.c branches/bb_dev_25/source/blender/blenkernel/intern/material.c branches/bb_dev_25/source/blender/blenkernel/intern/node.c branches/bb_dev_25/source/blender/blenkernel/intern/pointcache.c branches/bb_dev_25/source/blender/blenkernel/intern/smoke.c branches/bb_dev_25/source/blender/blenlib/BLI_fileops.h branches/bb_dev_25/source/blender/blenlib/intern/fileops.c branches/bb_dev_25/source/blender/blenlib/intern/util.c branches/bb_dev_25/source/blender/blenloader/intern/readfile.c branches/bb_dev_25/source/blender/editors/armature/editarmature.c branches/bb_dev_25/source/blender/editors/armature/editarmature_retarget.c branches/bb_dev_25/source/blender/editors/armature/meshlaplacian.c branches/bb_dev_25/source/blender/editors/armature/poseobject.c branches/bb_dev_25/source/blender/editors/gpencil/gpencil_buttons.c branches/bb_dev_25/source/blender/editors/include/ED_armature.h branches/bb_dev_25/source/blender/editors/include/ED_mball.h branches/bb_dev_25/source/blender/editors/include/ED_mesh.h branches/bb_dev_25/source/blender/editors/include/ED_object.h branches/bb_dev_25/source/blender/editors/include/UI_interface.h branches/bb_dev_25/source/blender/editors/interface/interface_layout.c branches/bb_dev_25/source/blender/editors/interface/interface_utils.c branches/bb_dev_25/source/blender/editors/object/object_edit.c branches/bb_dev_25/source/blender/editors/object/object_intern.h branches/bb_dev_25/source/blender/editors/object/object_modifier.c branches/bb_dev_25/source/blender/editors/object/object_ops.c branches/bb_dev_25/source/blender/editors/object/object_vgroup.c branches/bb_dev_25/source/blender/editors/physics/ed_fluidsim.c branches/bb_dev_25/source/blender/editors/screen/screen_context.c branches/bb_dev_25/source/blender/editors/screen/screen_ops.c branches/bb_dev_25/source/blender/editors/sculpt_paint/paint_vertex.c branches/bb_dev_25/source/blender/editors/space_buttons/buttons_ops.c branches/bb_dev_25/source/blender/editors/space_console/console_ops.c branches/bb_dev_25/source/blender/editors/space_console/space_console.c branches/bb_dev_25/source/blender/editors/space_node/drawnode.c branches/bb_dev_25/source/blender/editors/space_text/space_text.c branches/bb_dev_25/source/blender/editors/space_view3d/drawobject.c branches/bb_dev_25/source/blender/editors/space_view3d/drawvolume.c branches/bb_dev_25/source/blender/editors/space_view3d/view3d_buttons.c branches/bb_dev_25/source/blender/editors/space_view3d/view3d_intern.h branches/bb_dev_25/source/blender/editors/transform/transform.c branches/bb_dev_25/source/blender/editors/transform/transform_ops.c branches/bb_dev_25/source/blender/editors/util/undo.c branches/bb_dev_25/source/blender/editors/uvedit/uvedit_ops.c branches/bb_dev_25/source/blender/editors/uvedit/uvedit_unwrap_ops.c branches/bb_dev_25/source/blender/gpu/CMakeLists.txt branches/bb_dev_25/source/blender/gpu/GPU_draw.h branches/bb_dev_25/source/blender/gpu/SConscript branches/bb_dev_25/source/blender/gpu/intern/Makefile branches/bb_dev_25/source/blender/gpu/intern/gpu_draw.c branches/bb_dev_25/source/blender/gpu/intern/gpu_extensions.c branches/bb_dev_25/source/blender/makesdna/DNA_material_types.h branches/bb_dev_25/source/blender/makesdna/DNA_smoke_types.h branches/bb_dev_25/source/blender/makesdna/DNA_texture_types.h branches/bb_dev_25/source/blender/makesrna/RNA_access.h branches/bb_dev_25/source/blender/makesrna/RNA_define.h branches/bb_dev_25/source/blender/makesrna/RNA_enum_types.h branches/bb_dev_25/source/blender/makesrna/RNA_types.h branches/bb_dev_25/source/blender/makesrna/intern/makesrna.c branches/bb_dev_25/source/blender/makesrna/intern/rna_access.c branches/bb_dev_25/source/blender/makesrna/intern/rna_armature.c branches/bb_dev_25/source/blender/makesrna/intern/rna_define.c branches/bb_dev_25/source/blender/makesrna/intern/rna_group.c branches/bb_dev_25/source/blender/makesrna/intern/rna_internal_types.h branches/bb_dev_25/source/blender/makesrna/intern/rna_material.c branches/bb_dev_25/source/blender/makesrna/intern/rna_mesh.c branches/bb_dev_25/source/blender/makesrna/intern/rna_nodetree.c branches/bb_dev_25/source/blender/makesrna/intern/rna_nodetree_types.h branches/bb_dev_25/source/blender/makesrna/intern/rna_object.c branches/bb_dev_25/source/blender/makesrna/intern/rna_pose.c branches/bb_dev_25/source/blender/makesrna/intern/rna_render.c branches/bb_dev_25/source/blender/makesrna/intern/rna_rna.c branches/bb_dev_25/source/blender/makesrna/intern/rna_scene.c branches/bb_dev_25/source/blender/makesrna/intern/rna_smoke.c branches/bb_dev_25/source/blender/makesrna/intern/rna_texture.c branches/bb_dev_25/source/blender/makesrna/intern/rna_wm.c branches/bb_dev_25/source/blender/nodes/CMP_node.h branches/bb_dev_25/source/blender/nodes/intern/CMP_nodes/CMP_channelMatte.c branches/bb_dev_25/source/blender/nodes/intern/CMP_nodes/CMP_chromaMatte.c branches/bb_dev_25/source/blender/nodes/intern/CMP_nodes/CMP_diffMatte.c branches/bb_dev_25/source/blender/nodes/intern/CMP_nodes/CMP_lummaMatte.c branches/bb_dev_25/source/blender/nodes/intern/CMP_util.c branches/bb_dev_25/source/blender/nodes/intern/CMP_util.h branches/bb_dev_25/source/blender/python/intern/bpy_array.c branches/bb_dev_25/source/blender/python/intern/bpy_rna.c branches/bb_dev_25/source/blender/render/intern/source/texture.c branches/bb_dev_25/source/blender/windowmanager/intern/wm_event_system.c branches/bb_dev_25/source/blender/windowmanager/intern/wm_keymap.c branches/bb_dev_25/source/blender/windowmanager/intern/wm_operators.c Added Paths: ----------- branches/bb_dev_25/release/windows/inno/ branches/bb_dev_25/release/windows/inno/blender.iss branches/bb_dev_25/release/windows/inno/copyright.txt branches/bb_dev_25/release/windows/inno/header.bmp branches/bb_dev_25/release/windows/inno/installer.bmp branches/bb_dev_25/release/windows/inno/installer.ico branches/bb_dev_25/source/blender/editors/metaball/mball_edit.c branches/bb_dev_25/source/blender/editors/object/object_add.c branches/bb_dev_25/source/blender/editors/object/object_constraint.c branches/bb_dev_25/source/blender/editors/object/object_group.c branches/bb_dev_25/source/blender/editors/object/object_hook.c branches/bb_dev_25/source/blender/editors/object/object_lattice.c branches/bb_dev_25/source/blender/editors/object/object_relations.c branches/bb_dev_25/source/blender/editors/object/object_select.c branches/bb_dev_25/source/blender/editors/object/object_shapekey.c branches/bb_dev_25/source/blender/editors/object/object_transform.c branches/bb_dev_25/source/blender/nodes/intern/CMP_nodes/CMP_colorMatte.c branches/bb_dev_25/source/blender/nodes/intern/CMP_nodes/CMP_distanceMatte.c branches/bb_dev_25/source/blender/nodes/intern/CMP_nodes/CMP_levels.c Removed Paths: ------------- branches/bb_dev_25/release/windows/inno/blender.iss branches/bb_dev_25/release/windows/inno/copyright.txt branches/bb_dev_25/release/windows/inno/header.bmp branches/bb_dev_25/release/windows/inno/installer.bmp branches/bb_dev_25/release/windows/inno/installer.ico branches/bb_dev_25/source/blender/editors/metaball/editmball.c branches/bb_dev_25/source/blender/editors/object/editconstraint.c branches/bb_dev_25/source/blender/editors/object/editgroup.c branches/bb_dev_25/source/blender/editors/object/editkey.c branches/bb_dev_25/source/blender/editors/object/editlattice.c Modified: branches/bb_dev_25/intern/smoke/extern/smoke_API.h =================================================================== --- branches/bb_dev_25/intern/smoke/extern/smoke_API.h 2009-09-10 14:20:21 UTC (rev 23110) +++ branches/bb_dev_25/intern/smoke/extern/smoke_API.h 2009-09-10 17:21:36 UTC (rev 23111) @@ -63,11 +63,11 @@ void smoke_turbulence_step(struct WTURBULENCE *wt, struct FLUID_3D *fluid); float *smoke_turbulence_get_density(struct WTURBULENCE *wt); -void smoke_turbulence_get_res(struct WTURBULENCE *wt, unsigned int *res); +void smoke_turbulence_get_res(struct WTURBULENCE *wt, int *res); void smoke_turbulence_set_noise(struct WTURBULENCE *wt, int type); -void smoke_turbulence_initBlenderRNA(struct WTURBULENCE *wt, float *strength); +void smoke_initWaveletBlenderRNA(struct WTURBULENCE *wt, float *strength); -void smoke_turbulence_dissolve(struct WTURBULENCE *wt, int speed, int log); +void smoke_dissolve_wavelet(struct WTURBULENCE *wt, int speed, int log); // export void smoke_turbulence_export(struct WTURBULENCE *wt, float **dens, float **densold, float **tcu, float **tcv, float **tcw); Modified: branches/bb_dev_25/intern/smoke/intern/FLUID_3D.cpp =================================================================== --- branches/bb_dev_25/intern/smoke/intern/FLUID_3D.cpp 2009-09-10 14:20:21 UTC (rev 23110) +++ branches/bb_dev_25/intern/smoke/intern/FLUID_3D.cpp 2009-09-10 17:21:36 UTC (rev 23111) @@ -27,9 +27,9 @@ #include <zlib.h> // boundary conditions of the fluid domain -#define DOMAIN_BC_FRONT 1 -#define DOMAIN_BC_TOP 0 -#define DOMAIN_BC_LEFT 1 +#define DOMAIN_BC_FRONT 0 // z +#define DOMAIN_BC_TOP 1 // y +#define DOMAIN_BC_LEFT 1 // x #define DOMAIN_BC_BACK DOMAIN_BC_FRONT #define DOMAIN_BC_BOTTOM DOMAIN_BC_TOP #define DOMAIN_BC_RIGHT DOMAIN_BC_LEFT @@ -111,30 +111,32 @@ } // set side obstacles - size_t index; - for (int y = 0; y < _yRes; y++) // z + int index; + for (int y = 0; y < _yRes; y++) for (int x = 0; x < _xRes; x++) { // front slab index = x + y * _xRes; - if(DOMAIN_BC_BOTTOM==1) _obstacles[index] = 1; + if(DOMAIN_BC_FRONT==1) _obstacles[index] = 1; // back slab index += _totalCells - _slabSize; - if(DOMAIN_BC_TOP==1) _obstacles[index] = 1; + if(DOMAIN_BC_BACK==1) _obstacles[index] = 1; } - for (int z = 0; z < _zRes; z++) // y + + for (int z = 0; z < _zRes; z++) for (int x = 0; x < _xRes; x++) { // bottom slab index = x + z * _slabSize; - if(DOMAIN_BC_FRONT==1) _obstacles[index] = 1; + if(DOMAIN_BC_BOTTOM==1) _obstacles[index] = 1; // top slab index += _slabSize - _xRes; - if(DOMAIN_BC_BACK==1) _obstacles[index] = 1; + if(DOMAIN_BC_TOP==1) _obstacles[index] = 1; } - for (int z = 0; z < _zRes; z++) // x + + for (int z = 0; z < _zRes; z++) for (int y = 0; y < _yRes; y++) { // left slab @@ -145,13 +147,6 @@ index += _xRes - 1; if(DOMAIN_BC_RIGHT==1) _obstacles[index] = 1; } - - /* - SPHERE *obsSphere = NULL; - obsSphere = new SPHERE(0.375,0.5,0.375, 0.1); // for 4 to 3 domain - addObstacle(obsSphere); - delete obsSphere; - */ } FLUID_3D::~FLUID_3D() @@ -191,7 +186,7 @@ for (int i = 0; i < _totalCells; i++) { _xForce[i] = _yForce[i] = _zForce[i] = 0.0f; - _obstacles[i] &= ~2; + // _obstacles[i] &= ~2; } wipeBoundaries(); @@ -232,7 +227,8 @@ _totalTime += _dt; _totalSteps++; - memset(_obstacles, 0, sizeof(unsigned char)*_xRes*_yRes*_zRes); + // todo xxx dg: only clear obstacles, not boundaries + // memset(_obstacles, 0, sizeof(unsigned char)*_xRes*_yRes*_zRes); } ////////////////////////////////////////////////////////////////////// @@ -270,7 +266,7 @@ ////////////////////////////////////////////////////////////////////// void FLUID_3D::copyBorderAll(float* field) { - size_t index; + int index; for (int y = 0; y < _yRes; y++) for (int x = 0; x < _xRes; x++) { @@ -352,12 +348,12 @@ if(DOMAIN_BC_LEFT == 0) setNeumannX(_xVelocity, _res); else setZeroX(_xVelocity, _res); - if(DOMAIN_BC_TOP == 0) setNeumannZ(_zVelocity, _res); + if(DOMAIN_BC_TOP == 0) setNeumannY(_yVelocity, _res); + else setZeroY(_yVelocity, _res); + + if(DOMAIN_BC_FRONT == 0) setNeumannZ(_zVelocity, _res); else setZeroZ(_zVelocity, _res); - if(DOMAIN_BC_FRONT == 0) setNeumannY(_yVelocity, _res); - else setZeroY(_yVelocity, _res); - // calculate divergence index = _slabSize + _xRes + 1; for (z = 1; z < _zRes - 1; z++, index += 2 * _xRes) @@ -400,13 +396,17 @@ for (y = 1; y < _yRes - 1; y++, index += 2) for (x = 1; x < _xRes - 1; x++, index++) { - if(!_obstacles[index]) + // if(!_obstacles[index]) { _xVelocity[index] -= 0.5f * (_pressure[index + 1] - _pressure[index - 1]) * invDx; _yVelocity[index] -= 0.5f * (_pressure[index + _xRes] - _pressure[index - _xRes]) * invDx; _zVelocity[index] -= 0.5f * (_pressure[index + _slabSize] - _pressure[index - _slabSize]) * invDx; + }/* + else + { + _xVelocity[index] = _yVelocity[index] = _zVelocity[index] = 0.0f; + }*/ } - } if (_pressure) delete[] _pressure; if (_divergence) delete[] _divergence; @@ -671,12 +671,12 @@ if(DOMAIN_BC_LEFT == 0) copyBorderX(_xVelocity, res); else setZeroX(_xVelocity, res); - if(DOMAIN_BC_TOP == 0) copyBorderZ(_zVelocity, res); + if(DOMAIN_BC_TOP == 0) copyBorderY(_yVelocity, res); + else setZeroY(_yVelocity, res); + + if(DOMAIN_BC_FRONT == 0) copyBorderZ(_zVelocity, res); else setZeroZ(_zVelocity, res); - if(DOMAIN_BC_FRONT == 0) copyBorderY(_yVelocity, res); - else setZeroY(_yVelocity, res); - SWAP_POINTERS(_xVelocity, _xVelocityOld); SWAP_POINTERS(_yVelocity, _yVelocityOld); SWAP_POINTERS(_zVelocity, _zVelocityOld); @@ -700,12 +700,12 @@ if(DOMAIN_BC_LEFT == 0) copyBorderX(_xVelocity, res); else setZeroX(_xVelocity, res); - if(DOMAIN_BC_TOP == 0) copyBorderZ(_zVelocity, res); + if(DOMAIN_BC_TOP == 0) copyBorderY(_yVelocity, res); + else setZeroY(_yVelocity, res); + + if(DOMAIN_BC_FRONT == 0) copyBorderZ(_zVelocity, res); else setZeroZ(_zVelocity, res); - if(DOMAIN_BC_FRONT == 0) copyBorderY(_yVelocity, res); - else setZeroY(_yVelocity, res); - setZeroBorder(_density, res); setZeroBorder(_heat, res); Modified: branches/bb_dev_25/intern/smoke/intern/FLUID_3D_STATIC.cpp =================================================================== --- branches/bb_dev_25/intern/smoke/intern/FLUID_3D_STATIC.cpp 2009-09-10 14:20:21 UTC (rev 23110) +++ branches/bb_dev_25/intern/smoke/intern/FLUID_3D_STATIC.cpp 2009-09-10 17:21:36 UTC (rev 23111) @@ -80,7 +80,7 @@ void FLUID_3D::setNeumannX(float* field, Vec3Int res) { const int slabSize = res[0] * res[1]; - size_t index; + int index; for (int z = 0; z < res[2]; z++) for (int y = 0; y < res[1]; y++) { @@ -92,7 +92,19 @@ index += res[0] - 1; field[index] = field[index - 2]; } + + // fix, force top slab to only allow outwards flux + for (int y = 0; y < res[1]; y++) + for (int z = 0; z < res[2]; z++) + { + // top slab + int index = y * res[0] + z * slabSize; + index += res[0] - 1; + if(field[index]<0.) field[index] = 0.; + index -= 1; + if(field[index]<0.) field[index] = 0.; } + } ////////////////////////////////////////////////////////////////////// // set y direction to Neumann boundary conditions @@ -100,20 +112,33 @@ void FLUID_3D::setNeumannY(float* field, Vec3Int res) { const int slabSize = res[0] * res[1]; - size_t index; + int index; for (int z = 0; z < res[2]; z++) for (int x = 0; x < res[0]; x++) { - // front slab + // bottom slab index = x + z * slabSize; field[index] = field[index + 2 * res[0]]; - // back slab + // top slab index += slabSize - res[0]; field[index] = field[index - 2 * res[0]]; } + + // fix, force top slab to only allow outwards flux + for (int z = 0; z < res[2]; z++) + for (int x = 0; x < res[0]; x++) + { + // top slab + int index = x + z * slabSize; + index += slabSize - res[0]; + if(field[index]<0.) field[index] = 0.; + index -= res[0]; + if(field[index]<0.) field[index] = 0.; } +} + ////////////////////////////////////////////////////////////////////// // set z direction to Neumann boundary conditions ////////////////////////////////////////////////////////////////////// @@ -121,15 +146,15 @@ { const int slabSize = res[0] * res[1]; const int totalCells = res[0] * res[1] * res[2]; - size_t index; + int index; for (int y = 0; y < res[1]; y++) for (int x = 0; x < res[0]; x++) { - // bottom slab + // front slab index = x + y * res[0]; field[index] = field[index + 2 * slabSize]; - // top slab + // back slab index += totalCells - slabSize; field[index] = field[index - 2 * slabSize]; } @@ -139,11 +164,11 @@ for (int x = 0; x < res[0]; x++) { // top slab - index = x + y * res[0]; + int index = x + y * res[0]; index += totalCells - slabSize; - if(field[index]<0.) field[index] = 0.0f; + if(field[index]<0.) field[index] = 0.; index -= slabSize; - if(field[index]<0.) field[index] = 0.0f; + if(field[index]<0.) field[index] = 0.; } } @@ -231,6 +256,7 @@ void FLUID_3D::copyBorderY(float* field, Vec3Int res) { const int slabSize = res[0] * res[1]; + const int totalCells = res[0] * res[1] * res[2]; int index; for (int z = 0; z < res[2]; z++) for (int x = 0; x < res[0]; x++) @@ -269,11 +295,14 @@ const int xres = res[0]; const int yres = res[1]; const int zres = res[2]; + static int hits = 0; + static int total = 0; const int slabSize = res[0] * res[1]; // scale dt up to grid resolution -#if PARALLEL==1 -#pragma omp parallel for schedule(static) +#if PARALLEL==1 && !_WIN32 +#pragma omp parallel +#pragma omp for schedule(static) #endif for (int z = 0; z < zres; z++) for (int y = 0; y < yres; y++) @@ -465,6 +494,7 @@ const int sy= res[1]; const int sz= res[2]; const int slabSize = res[0] * res[1]; + for (int z = 1; z < sz-1; z++) for (int y = 1; y < sy-1; y++) for (int x = 1; x < sx-1; x++) @@ -582,79 +612,3 @@ } // xyz } -////////////////////////////////////////////////////////////////////// -// image output -////////////////////////////////////////////////////////////////////// -/* -void FLUID_3D::writeImageSliceXY(const float *field, Vec3Int res, int slice, string prefix, int picCnt, float scale) { - writeProjectedIntern(field, res, 0,1, prefix, picCnt, scale); -} @@ Diff output truncated at 10240 characters. @@ _______________________________________________ Bf-blender-cvs mailing list Bf-blender-cvs@blender.org http://lists.blender.org/mailman/listinfo/bf-blender-cvs