Commit: fd43d3b95a94f43534a4f2e11c7f80e6ebdbdb2b Author: Sriharsha Kotcharlakot Date: Thu Sep 10 13:12:53 2020 +0530 Branches: soc-2020-fluid-tools https://developer.blender.org/rBfd43d3b95a94f43534a4f2e11c7f80e6ebdbdb2b
Merge branch 'master' into soc-2020-fluid-tools =================================================================== =================================================================== diff --cc intern/opencolorio/ocio_impl_glsl.cc index ae134cc0725,6a4b03976e4..8f84f8978b7 --- a/intern/opencolorio/ocio_impl_glsl.cc +++ b/intern/opencolorio/ocio_impl_glsl.cc @@@ -295,30 -282,18 +282,19 @@@ static void ensureGLSLLut3d(OCIO_GLSLLu OCIO_GLSLLut3d *lut3d = OBJECT_GUARDED_NEW(OCIO_GLSLLut3d); - glGenTextures(3, &lut3d->texture); + int extent[3] = {LUT3D_EDGE_SIZE, LUT3D_EDGE_SIZE, LUT3D_EDGE_SIZE}; - for (int i = 0; i < 2; i++) { - GLuint texture = (&lut3d->texture)[i]; - - glActiveTexture(GL_TEXTURE1); - glBindTexture(GL_TEXTURE_3D, texture); - glTexParameteri(GL_TEXTURE_3D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); - glTexParameteri(GL_TEXTURE_3D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); - glTexParameteri(GL_TEXTURE_3D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE); - glTexParameteri(GL_TEXTURE_3D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE); - glTexParameteri(GL_TEXTURE_3D, GL_TEXTURE_WRAP_R, GL_CLAMP_TO_EDGE); - - glTexImage3D(GL_TEXTURE_3D, - 0, - GL_RGB16F, - LUT3D_EDGE_SIZE, - LUT3D_EDGE_SIZE, - LUT3D_EDGE_SIZE, - 0, - GL_RGB, - GL_FLOAT, - NULL); - } - lut3d->texture = GPU_texture_create_3d("OCIOLut", UNPACK3(extent), 1, GPU_RGB16F, NULL); ++ lut3d->texture = GPU_texture_create_3d( ++ "OCIOLut", UNPACK3(extent), 1, GPU_RGB16F, GPU_DATA_FLOAT, NULL); + GPU_texture_filter_mode(lut3d->texture, true); + GPU_texture_wrap_mode(lut3d->texture, false, true); + + lut3d->texture_display = GPU_texture_create_3d( - "OCIOLutDisplay", UNPACK3(extent), 1, GPU_RGB16F, NULL); ++ "OCIOLutDisplay", UNPACK3(extent), 1, GPU_RGB16F, GPU_DATA_FLOAT, NULL); + GPU_texture_filter_mode(lut3d->texture_display, true); + GPU_texture_wrap_mode(lut3d->texture_display, false, true); + + lut3d->texture_dummy = GPU_texture_create_error(2, false); updateGLSLLut3d(lut3d, processor_scene_to_ui, processpr_ui_to_display, shaderDesc, cache_id); diff --cc release/scripts/modules/rna_manual_reference.py index eeb8e8278a8,a8c8b212ecf..44d40e974c1 --- a/release/scripts/modules/rna_manual_reference.py +++ b/release/scripts/modules/rna_manual_reference.py @@@ -147,10 -147,9 +153,10 @@@ url_manual_mapping = ("bpy.types.linestylegeometrymodifier_2dtransform*", "render/freestyle/parameter_editor/line_style/modifiers/geometry/2d_transform.html#bpy-types-linestylegeometrymodifier-2dtransform"), ("bpy.types.linestylegeometrymodifier_beziercurve*", "render/freestyle/parameter_editor/line_style/modifiers/geometry/bezier_curve.html#bpy-types-linestylegeometrymodifier-beziercurve"), ("bpy.types.particlesettings.use_parent_particles*", "physics/particles/emitter/render.html#bpy-types-particlesettings-use-parent-particles"), - ("bpy.types.rendersettings_simplify_gpencil_blend*", "render/cycles/render_settings/simplify.html#bpy-types-rendersettings-simplify-gpencil-blend"), + ("bpy.types.rigidbodyconstraint.solver_iterations*", "physics/rigid_body/constraints/introduction.html#bpy-types-rigidbodyconstraint-solver-iterations"), ("bpy.types.toolsettings.gpencil_stroke_placement*", "grease_pencil/modes/draw/stroke_placement.html#bpy-types-toolsettings-gpencil-stroke-placement"), ("bpy.types.cyclesrendersettings.use_camera_cull*", "render/cycles/render_settings/simplify.html#bpy-types-cyclesrendersettings-use-camera-cull"), + ("bpy.types.fluiddomainsettings.coba_field_scale*", "physics/fluid/type/domain/gas/viewport_display.html#bpy-types-fluiddomainsettings-coba-field-scale"), ("bpy.types.fluiddomainsettings.guide_vel_factor*", "physics/fluid/type/domain/guides.html#bpy-types-fluiddomainsettings-guide-vel-factor"), ("bpy.types.fluideffectorsettings.use_plane_init*", "physics/fluid/type/effector.html#bpy-types-fluideffectorsettings-use-plane-init"), ("bpy.types.linestylegeometrymodifier_tipremover*", "render/freestyle/parameter_editor/line_style/modifiers/geometry/tip_remover.html#bpy-types-linestylegeometrymodifier-tipremover"), diff --cc source/blender/draw/engines/workbench/workbench_volume.c index 148760e3750,7aa089d440f..3f64622735c --- a/source/blender/draw/engines/workbench/workbench_volume.c +++ b/source/blender/draw/engines/workbench/workbench_volume.c @@@ -45,9 -45,9 +45,11 @@@ void workbench_volume_engine_init(WORKB if (txl->dummy_volume_tx == NULL) { const float zero[4] = {0.0f, 0.0f, 0.0f, 0.0f}; const float one[4] = {1.0f, 1.0f, 1.0f, 1.0f}; - txl->dummy_volume_tx = GPU_texture_create_3d(1, 1, 1, GPU_RGBA8, zero, NULL); - txl->dummy_shadow_tx = GPU_texture_create_3d(1, 1, 1, GPU_RGBA8, one, NULL); - txl->dummy_coba_tx = GPU_texture_create_1d(1, GPU_RGBA8, zero, NULL); - txl->dummy_volume_tx = GPU_texture_create_3d("dummy_volume", 1, 1, 1, 1, GPU_RGBA8, zero); - txl->dummy_shadow_tx = GPU_texture_create_3d("dummy_shadow", 1, 1, 1, 1, GPU_RGBA8, one); ++ txl->dummy_volume_tx = GPU_texture_create_3d( ++ "dummy_volume", 1, 1, 1, 1, GPU_RGBA8, GPU_DATA_FLOAT, zero); ++ txl->dummy_shadow_tx = GPU_texture_create_3d( ++ "dummy_shadow", 1, 1, 1, 1, GPU_RGBA8, GPU_DATA_FLOAT, one); + txl->dummy_coba_tx = GPU_texture_create_1d("dummy_coba", 1, 1, GPU_RGBA8, zero); } } diff --cc source/blender/draw/intern/draw_cache_impl_volume.c index 825fec83cf1,10b9623175c..e39c4976e38 --- a/source/blender/draw/intern/draw_cache_impl_volume.c +++ b/source/blender/draw/intern/draw_cache_impl_volume.c @@@ -258,17 -258,12 +258,12 @@@ static DRWVolumeGrid *volume_grid_cache BKE_volume_grid_dense_voxels(volume, grid, dense_min, dense_max, voxels); /* Create GPU texture. */ - cache_grid->texture = GPU_texture_create_3d(resolution[0], - resolution[1], - resolution[2], - (channels == 3) ? GPU_RGB16F : GPU_R16F, - voxels, - NULL); - - GPU_texture_bind(cache_grid->texture, 0); + eGPUTextureFormat format = (channels == 3) ? GPU_RGB16F : GPU_R16F; + cache_grid->texture = GPU_texture_create_3d( - "volume_grid", UNPACK3(resolution), 1, format, voxels); ++ "volume_grid", UNPACK3(resolution), 1, format, GPU_DATA_FLOAT, voxels); + GPU_texture_swizzle_set(cache_grid->texture, (channels == 3) ? "rgb1" : "rrr1"); GPU_texture_wrap_mode(cache_grid->texture, false, false); - GPU_texture_unbind(cache_grid->texture); MEM_freeN(voxels); diff --cc source/blender/draw/intern/draw_fluid.c index d22440ef4b9,af14f11e6e9..8164ce398f1 --- a/source/blender/draw/intern/draw_fluid.c +++ b/source/blender/draw/intern/draw_fluid.c @@@ -128,20 -128,105 +128,117 @@@ static void swizzle_texture_channel_sin { /* Swizzle texture channels so that we get useful RGBA values when sampling * a texture with fewer channels, e.g. when using density as color. */ - GPU_texture_bind(tex, 0); GPU_texture_swizzle_set(tex, "rrr1"); - GPU_texture_unbind(tex); + } + + static float *rescale_3d(const int dim[3], + const int final_dim[3], + int channels, + const float *fpixels) + { + const uint w = dim[0], h = dim[1], d = dim[2]; + const uint fw = final_dim[0], fh = final_dim[1], fd = final_dim[2]; + const uint xf = w / fw, yf = h / fh, zf = d / fd; + const uint pixel_count = fw * fh * fd; + float *nfpixels = (float *)MEM_mallocN(channels * sizeof(float) * pixel_count, __func__); + + if (nfpixels) { + printf("Performance: You need to scale a 3D texture, feel the pain!\n"); + + for (uint k = 0; k < fd; k++) { + for (uint j = 0; j < fh; j++) { + for (uint i = 0; i < fw; i++) { + /* Obviously doing nearest filtering here, + * it's going to be slow in any case, let's not make it worse. */ + float xb = i * xf; + float yb = j * yf; + float zb = k * zf; + uint offset = k * (fw * fh) + i * fh + j; + uint offset_orig = (zb) * (w * h) + (xb)*h + (yb); + + if (channels == 4) { + nfpixels[offset * 4] = fpixels[offset_orig * 4]; + nfpixels[offset * 4 + 1] = fpixels[offset_orig * 4 + 1]; + nfpixels[offset * 4 + 2] = fpixels[offset_orig * 4 + 2]; + nfpixels[offset * 4 + 3] = fpixels[offset_orig * 4 + 3]; + } + else if (channels == 1) { + nfpixels[offset] = fpixels[offset_orig]; + } + else { + BLI_assert(0); + } + } + } + } + } + return nfpixels; + } + + /* Will resize input to fit GL system limits. */ + static GPUTexture *create_volume_texture(const int dim[3], - eGPUTextureFormat format, - const float *data) ++ eGPUTextureFormat texture_format, ++ eGPUDataFormat data_format, ++ const void *data) + { + GPUTexture *tex = NULL; + int final_dim[3] = {UNPACK3(dim)}; + + while (1) { - tex = GPU_texture_create_3d("volume", UNPACK3(final_dim), 1, format, NULL); ++ tex = GPU_texture_create_3d( ++ "volume", UNPACK3(final_dim), 1, texture_format, data_format, NULL); + + if (tex != NULL) { + break; + } + + if (final_dim[0] == 1 && final_dim[1] == 1 && final_dim[2] == 1) { + break; + } + + for (int i = 0; i < 3; i++) { + final_dim[i] = max_ii(1, final_dim[i] / 2); + } + } + + if (tex == NULL) { + printf("Error: Could not create 3D texture.\n"); + tex = GPU_texture_create_error(3, false); + } + else if (equals_v3v3_int(dim, final_dim)) { + /* No need to resize, just upload the data. */ - GPU_texture_update_sub(tex, GPU_DATA_FLOAT, data, 0, 0, 0, UNPACK3(final_dim)); ++ GPU_texture_update_sub(tex, data_format, data, 0, @@ Diff output truncated at 10240 characters. @@ _______________________________________________ Bf-blender-cvs mailing list Bf-blender-cvs@blender.org https://lists.blender.org/mailman/listinfo/bf-blender-cvs