[Bf-blender-cvs] [c617cb11ce8] greasepencil-object: Merge branch 'blender2.8' into greasepencil-object

Antonio Vazquez noreply at git.blender.org
Mon Jul 16 22:26:06 CEST 2018


Commit: c617cb11ce86168982fd36f443a59b156a7561d3
Author: Antonio Vazquez
Date:   Mon Jul 16 22:25:26 2018 +0200
Branches: greasepencil-object
https://developer.blender.org/rBc617cb11ce86168982fd36f443a59b156a7561d3

Merge branch 'blender2.8' into greasepencil-object

 Conflicts:
	source/blender/draw/modes/object_mode.c

===================================================================



===================================================================

diff --cc source/blender/draw/CMakeLists.txt
index 72a108c78db,e4c6a372d34..d4ff1a84e3f
--- a/source/blender/draw/CMakeLists.txt
+++ b/source/blender/draw/CMakeLists.txt
@@@ -304,34 -300,8 +307,35 @@@ data_to_c_simple(modes/shaders/paint_wi
  data_to_c_simple(modes/shaders/paint_vert_frag.glsl SRC)
  data_to_c_simple(modes/shaders/particle_strand_frag.glsl SRC)
  data_to_c_simple(modes/shaders/particle_strand_vert.glsl SRC)
+ data_to_c_simple(modes/shaders/volume_velocity_vert.glsl SRC)
  
 +data_to_c_simple(engines/gpencil/shaders/gpencil_fill_vert.glsl SRC)
 +data_to_c_simple(engines/gpencil/shaders/gpencil_fill_frag.glsl SRC)
 +data_to_c_simple(engines/gpencil/shaders/gpencil_stroke_vert.glsl SRC)
 +data_to_c_simple(engines/gpencil/shaders/gpencil_stroke_geom.glsl SRC)
 +data_to_c_simple(engines/gpencil/shaders/gpencil_stroke_frag.glsl SRC)
 +data_to_c_simple(engines/gpencil/shaders/gpencil_zdepth_mix_frag.glsl SRC)
 +data_to_c_simple(engines/gpencil/shaders/gpencil_simple_mix_frag.glsl SRC)
 +data_to_c_simple(engines/gpencil/shaders/gpencil_point_vert.glsl SRC)
 +data_to_c_simple(engines/gpencil/shaders/gpencil_point_geom.glsl SRC)
 +data_to_c_simple(engines/gpencil/shaders/gpencil_point_frag.glsl SRC)
 +data_to_c_simple(engines/gpencil/shaders/gpencil_background_frag.glsl SRC)
 +data_to_c_simple(engines/gpencil/shaders/gpencil_paper_frag.glsl SRC)
 +data_to_c_simple(engines/gpencil/shaders/gpencil_edit_point_vert.glsl SRC)
 +data_to_c_simple(engines/gpencil/shaders/gpencil_edit_point_geom.glsl SRC)
 +data_to_c_simple(engines/gpencil/shaders/gpencil_edit_point_frag.glsl SRC)
 +
 +data_to_c_simple(engines/gpencil/shaders/fx/gpencil_fx_blur_frag.glsl SRC)
 +data_to_c_simple(engines/gpencil/shaders/fx/gpencil_fx_colorize_frag.glsl SRC)
 +data_to_c_simple(engines/gpencil/shaders/fx/gpencil_fx_flip_frag.glsl SRC)
 +data_to_c_simple(engines/gpencil/shaders/fx/gpencil_fx_light_frag.glsl SRC)
 +data_to_c_simple(engines/gpencil/shaders/fx/gpencil_fx_pixel_frag.glsl SRC)
 +data_to_c_simple(engines/gpencil/shaders/fx/gpencil_fx_rim_prepare_frag.glsl SRC)
 +data_to_c_simple(engines/gpencil/shaders/fx/gpencil_fx_rim_resolve_frag.glsl SRC)
 +data_to_c_simple(engines/gpencil/shaders/fx/gpencil_fx_swirl_frag.glsl SRC)
 +data_to_c_simple(engines/gpencil/shaders/fx/gpencil_fx_wave_frag.glsl SRC)
 +
 +
  list(APPEND INC
  )
  
diff --cc source/blender/draw/modes/object_mode.c
index f7e06a5fbcd,2e41dbfd529..f51f5c606b7
--- a/source/blender/draw/modes/object_mode.c
+++ b/source/blender/draw/modes/object_mode.c
@@@ -1730,14 -1729,85 +1736,93 @@@ static void DRW_shgroup_forcefield(OBJE
  	}
  }
  
+ static void DRW_shgroup_volume_extra(
+         OBJECT_PassList *psl, OBJECT_StorageList *stl,
+         Object *ob, ViewLayer *view_layer, Scene *scene, ModifierData *md)
+ {
+ 	SmokeModifierData *smd = (SmokeModifierData *)md;
+ 	SmokeDomainSettings *sds = smd->domain;
+ 	float *color;
+ 	float one = 1.0f;
+ 
+ 	if (sds == NULL) {
+ 		return;
+ 	}
+ 
+ 	DRW_object_wire_theme_get(ob, view_layer, &color);
+ 
+ 	/* Small cube showing voxel size. */
+ 	float voxel_cubemat[4][4] = {{0.0f}};
+ 	voxel_cubemat[0][0] = 1.0f / (float)sds->res[0];
+ 	voxel_cubemat[1][1] = 1.0f / (float)sds->res[1];
+ 	voxel_cubemat[2][2] = 1.0f / (float)sds->res[2];
+ 	voxel_cubemat[3][0] = voxel_cubemat[3][1] = voxel_cubemat[3][2] = -1.0f;
+ 	voxel_cubemat[3][3] = 1.0f;
+ 	translate_m4(voxel_cubemat, 1.0f, 1.0f, 1.0f);
+ 	mul_m4_m4m4(voxel_cubemat, ob->obmat, voxel_cubemat);
+ 
+ 	DRW_shgroup_call_dynamic_add(stl->g_data->cube, color, &one, voxel_cubemat);
+ 
+ 	/* Don't show smoke before simulation starts, this could be made an option in the future. */
+ 	if (!sds->draw_velocity || !sds->fluid || CFRA < sds->point_cache[0]->startframe) {
+ 		return;
+ 	}
+ 
+ 	const bool use_needle = (sds->vector_draw_type == VECTOR_DRAW_NEEDLE);
+ 	int line_count = (use_needle) ? 6 : 1;
+ 	int slice_axis = -1;
+ 	line_count *= sds->res[0] * sds->res[1] * sds->res[2];
+ 
+ 	if (sds->slice_method == MOD_SMOKE_SLICE_AXIS_ALIGNED &&
+ 	    sds->axis_slice_method == AXIS_SLICE_SINGLE)
+ 	{
+ 		float invviewmat[4][4];
+ 		DRW_viewport_matrix_get(invviewmat, DRW_MAT_VIEWINV);
+ 
+ 		const int axis = (sds->slice_axis == SLICE_AXIS_AUTO)
+ 		                  ? axis_dominant_v3_single(invviewmat[2])
+ 		                  : sds->slice_axis - 1;
+ 		slice_axis = axis;
+ 		line_count /= sds->res[axis];
+ 	}
+ 
+ 	GPU_create_smoke_velocity(smd);
+ 
+ 	DRWShadingGroup *grp = DRW_shgroup_create(volume_velocity_shader_get(use_needle), psl->non_meshes);
+ 	DRW_shgroup_uniform_texture(grp, "velocityX", sds->tex_velocity_x);
+ 	DRW_shgroup_uniform_texture(grp, "velocityY", sds->tex_velocity_y);
+ 	DRW_shgroup_uniform_texture(grp, "velocityZ", sds->tex_velocity_z);
+ 	DRW_shgroup_uniform_float_copy(grp, "displaySize", sds->vector_scale);
+ 	DRW_shgroup_uniform_float_copy(grp, "slicePosition", sds->slice_depth);
+ 	DRW_shgroup_uniform_int_copy(grp, "sliceAxis", slice_axis);
+ 	DRW_shgroup_call_procedural_lines_add(grp, line_count, ob->obmat);
+ 
+ 	BLI_addtail(&e_data.smoke_domains, BLI_genericNodeN(smd));
+ }
+ 
+ static void volumes_free_smoke_textures(void)
+ {
+ 	/* Free Smoke Textures after rendering */
+ 	/* XXX This is a waste of processing and GPU bandwidth if nothing
+ 	 * is updated. But the problem is since Textures are stored in the
+ 	 * modifier we don't want them to take precious VRAM if the
+ 	 * modifier is not used for display. We should share them for
+ 	 * all viewport in a redraw at least. */
+ 	for (LinkData *link = e_data.smoke_domains.first; link; link = link->next) {
+ 		SmokeModifierData *smd = (SmokeModifierData *)link->data;
+ 		GPU_free_smoke(smd);
+ 	}
+ 	BLI_freelistN(&e_data.smoke_domains);
+ }
+ 
 +static void DRW_shgroup_gpencil(OBJECT_StorageList *stl, Object *ob, ViewLayer *view_layer)
 +{
 +	float *color;
 +	DRW_object_wire_theme_get(ob, view_layer, &color);
 +
 +	DRW_shgroup_call_dynamic_add(stl->g_data->gpencil_axes, color, &ob->empty_drawsize, ob->obmat);
 +}
 +
  static void DRW_shgroup_speaker(OBJECT_StorageList *stl, Object *ob, ViewLayer *view_layer)
  {
  	float *color;



More information about the Bf-blender-cvs mailing list