[Bf-blender-cvs] [fdca73fd4ae] hair_object: Merge branch 'blender2.8' into hair_object

Lukas Toenne noreply at git.blender.org
Tue Dec 18 11:59:13 CET 2018


Commit: fdca73fd4aea4a1a0a2e37b8ccc82951cfb08ca2
Author: Lukas Toenne
Date:   Tue Dec 18 10:58:54 2018 +0000
Branches: hair_object
https://developer.blender.org/rBfdca73fd4aea4a1a0a2e37b8ccc82951cfb08ca2

Merge branch 'blender2.8' into hair_object

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



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

diff --cc release/scripts/startup/bl_ui/properties_paint_common.py
index 5d2f979beeb,76eee827553..46f71567d8e
--- a/release/scripts/startup/bl_ui/properties_paint_common.py
+++ b/release/scripts/startup/bl_ui/properties_paint_common.py
@@@ -41,9 -41,7 +41,9 @@@ class UnifiedPaintPanel
  
              return None
          elif context.particle_edit_object:
-             return toolsettings.particle_edit
+             return tool_settings.particle_edit
 +        elif context.hair_edit_object:
 +            return toolsettings.hair_edit
  
          return None
  
diff --cc release/scripts/startup/bl_ui/space_toolsystem_toolbar.py
index a42ce495ec7,68b487ffe44..566babd745d
--- a/release/scripts/startup/bl_ui/space_toolsystem_toolbar.py
+++ b/release/scripts/startup/bl_ui/space_toolsystem_toolbar.py
@@@ -1450,28 -1537,15 +1549,19 @@@ class VIEW3D_PT_tools_active(ToolSelect
                  _defs_edit_curve.extrude_cursor,
              ),
          ],
+         'EDIT_SURFACE': [
+             *_tools_default,
+         ],
          'EDIT_METABALL': [
-             *_tools_select,
-             _defs_view3d_generic.cursor,
-             None,
-             *_tools_transform,
-             None,
-             *_tools_annotate,
-             None,
+             *_tools_default,
          ],
          'EDIT_LATTICE': [
-             *_tools_select,
-             _defs_view3d_generic.cursor,
-             None,
-             *_tools_transform,
-             None,
-             *_tools_annotate,
-             None,
+             *_tools_default,
          ],
 +        'EDIT_HAIR': [
 +            _defs_view3d_generic.cursor,
 +            _defs_hair.generate_from_brushes,
 +        ],
          'PARTICLE': [
              _defs_view3d_generic.cursor,
              _defs_particle.generate_from_brushes,
diff --cc source/blender/draw/CMakeLists.txt
index 9f2fa378e3c,8ba9058f210..2671a6e0f0a
--- a/source/blender/draw/CMakeLists.txt
+++ b/source/blender/draw/CMakeLists.txt
@@@ -282,8 -281,7 +283,9 @@@ data_to_c_simple(modes/shaders/edit_mes
  data_to_c_simple(modes/shaders/edit_curve_overlay_handle_vert.glsl SRC)
  data_to_c_simple(modes/shaders/edit_curve_overlay_handle_geom.glsl SRC)
  data_to_c_simple(modes/shaders/edit_curve_overlay_loosevert_vert.glsl SRC)
+ data_to_c_simple(modes/shaders/edit_curve_overlay_normals_vert.glsl SRC)
 +data_to_c_simple(modes/shaders/edit_hair_overlay_frag.glsl SRC)
 +data_to_c_simple(modes/shaders/edit_hair_overlay_loosevert_vert.glsl SRC)
  data_to_c_simple(modes/shaders/edit_lattice_overlay_frag.glsl SRC)
  data_to_c_simple(modes/shaders/edit_lattice_overlay_loosevert_vert.glsl SRC)
  data_to_c_simple(modes/shaders/edit_normals_vert.glsl SRC)
diff --cc source/blender/draw/engines/workbench/workbench_deferred.c
index 2a5d97078b8,617108b1bde..8663bd559e4
--- a/source/blender/draw/engines/workbench/workbench_deferred.c
+++ b/source/blender/draw/engines/workbench/workbench_deferred.c
@@@ -31,8 -31,8 +31,9 @@@
  #include "BLI_dynstr.h"
  #include "BLI_utildefines.h"
  #include "BLI_rand.h"
+ #include "BLI_string_utils.h"
  
 +#include "BKE_hair.h"
  #include "BKE_node.h"
  #include "BKE_modifier.h"
  #include "BKE_particle.h"
@@@ -680,31 -783,6 +785,31 @@@ static void workbench_cache_populate_pa
  	}
  }
  
 +static void workbench_cache_populate_hair(WORKBENCH_Data *vedata, Object *ob)
 +{
 +	HairSystem *hsys = ob->data;
 +	WORKBENCH_StorageList *stl = vedata->stl;
 +	WORKBENCH_PassList *psl = vedata->psl;
 +	WORKBENCH_PrivateData *wpd = stl->g_data;
 +	
 +	Image *image = NULL;
 +	// TODO
 +//	Material *mat = give_current_material(ob, hsys->material_index);
 +//	ED_object_get_active_image(ob, hsys->material_index, &image, NULL, NULL, NULL);
 +	Material *mat = give_current_material(ob, 0);
 +	ED_object_get_active_image(ob, 0, &image, NULL, NULL, NULL);
 +	int color_type = workbench_material_determine_color_type(wpd, image, ob);
 +	WORKBENCH_MaterialData *material = get_or_create_material_data(vedata, ob, mat, image, color_type);
 +	
 +	struct GPUShader *shader = (color_type != V3D_SHADING_TEXTURE_COLOR)
 +	                           ? wpd->prepass_solid_hair_sh
 +	                           : wpd->prepass_texture_hair_sh;
 +	DRWShadingGroup *shgrp = DRW_shgroup_hair_create(ob, hsys, psl->prepass_hair_pass, shader);
 +	DRW_shgroup_stencil_mask(shgrp, 0xFF);
 +	DRW_shgroup_uniform_int(shgrp, "object_id", &material->object_id, 1);
- 	workbench_material_shgroup_uniform(wpd, shgrp, material, ob);
++	workbench_material_shgroup_uniform(wpd, shgrp, material, ob, true, true);
 +}
 +
  void workbench_deferred_solid_cache_populate(WORKBENCH_Data *vedata, Object *ob)
  {
  	WORKBENCH_StorageList *stl = vedata->stl;
@@@ -738,9 -813,10 +843,10 @@@
  	}
  
  	WORKBENCH_MaterialData *material;
 -	if (ELEM(ob->type, OB_MESH, OB_CURVE, OB_SURF, OB_FONT, OB_MBALL)) {
 +	if (ELEM(ob->type, OB_MESH, OB_CURVE, OB_SURF, OB_FONT, OB_MBALL, OB_HAIR)) {
  		const bool is_active = (ob == draw_ctx->obact);
  		const bool is_sculpt_mode = is_active && (draw_ctx->object_mode & OB_MODE_SCULPT) != 0;
+ 		const bool use_hide = is_active && DRW_object_use_hide_faces(ob);
  		bool is_drawn = false;
  		if (!is_sculpt_mode && TEXTURE_DRAWING_ENABLED(wpd) && ELEM(ob->type, OB_MESH)) {
  			const Mesh *me = ob->data;
diff --cc source/blender/draw/engines/workbench/workbench_forward.c
index b5b4a3ec364,3b755b31156..835bb09dcd5
--- a/source/blender/draw/engines/workbench/workbench_forward.c
+++ b/source/blender/draw/engines/workbench/workbench_forward.c
@@@ -472,45 -464,6 +466,44 @@@ static void workbench_forward_cache_pop
  	}
  }
  
 +static void workbench_forward_cache_populate_hair(WORKBENCH_Data *vedata, Object *ob)
 +{
 +	HairSystem *hsys = ob->data;
 +	WORKBENCH_StorageList *stl = vedata->stl;
 +	WORKBENCH_PassList *psl = vedata->psl;
 +	WORKBENCH_PrivateData *wpd = stl->g_data;
 +
 +	Image *image = NULL;
 +	// TODO
 +//	Material *mat = give_current_material(ob, hsys->material_index);
 +//	ED_object_get_active_image(ob, hsys->material_index, &image, NULL, NULL, NULL);
 +	Material *mat = give_current_material(ob, 0);
 +	ED_object_get_active_image(ob, 0, &image, NULL, NULL, NULL);
 +	int color_type = workbench_material_determine_color_type(wpd, image, ob);
 +	WORKBENCH_MaterialData *material = get_or_create_material_data(vedata, ob, mat, image, color_type);
 +	
 +	struct GPUShader *shader = (color_type != V3D_SHADING_TEXTURE_COLOR)
 +	                           ? wpd->transparent_accum_hair_sh
 +	                           : wpd->transparent_accum_texture_hair_sh;
 +	DRWShadingGroup *shgrp = DRW_shgroup_hair_create(ob, hsys, psl->transparent_accum_pass, shader);
- 	workbench_material_set_normal_world_matrix(shgrp, wpd, e_data.normal_world_matrix);
 +	DRW_shgroup_uniform_block(shgrp, "world_block", wpd->world_ubo);
- 	workbench_material_shgroup_uniform(wpd, shgrp, material, ob);
++	workbench_material_shgroup_uniform(wpd, shgrp, material, ob, false, false);
 +	DRW_shgroup_uniform_vec4(shgrp, "viewvecs[0]", (float *)wpd->viewvecs, 3);
 +	/* Hairs have lots of layer and can rapidly become the most prominent surface.
 +	 * So lower their alpha artificially. */
 +	float hair_alpha = wpd->shading.xray_alpha * 0.33f;
 +	DRW_shgroup_uniform_float_copy(shgrp, "alpha", hair_alpha);
- 	if (STUDIOLIGHT_ORIENTATION_VIEWNORMAL_ENABLED(wpd)) {
++	if (STUDIOLIGHT_TYPE_MATCAP_ENABLED(wpd)) {
 +		BKE_studiolight_ensure_flag(wpd->studio_light, STUDIOLIGHT_EQUIRECT_RADIANCE_GPUTEXTURE);
 +		DRW_shgroup_uniform_texture(shgrp, "matcapImage", wpd->studio_light->equirect_radiance_gputexture );
 +	}
 +	if (SPECULAR_HIGHLIGHT_ENABLED(wpd) || MATCAP_ENABLED(wpd)) {
 +		DRW_shgroup_uniform_vec2(shgrp, "invertedViewportSize", DRW_viewport_invert_size_get(), 1);
 +	}
 +	shgrp = DRW_shgroup_hair_create(ob, hsys, vedata->psl->object_outline_pass, e_data.object_outline_hair_sh);
 +	DRW_shgroup_uniform_int(shgrp, "object_id", &material->object_id, 1);
 +}
 +
  void workbench_forward_cache_populate(WORKBENCH_Data *vedata, Object *ob)
  {
  	WORKBENCH_StorageList *stl = vedata->stl;
diff --cc source/blender/draw/intern/draw_cache_impl.h
index c25b7b74532,d1c5afed4a1..1a01184f760
--- a/source/blender/draw/intern/draw_cache_impl.h
+++ b/source/blender/draw/intern/draw_cache_impl.h
@@@ -65,24 -63,18 +65,21 @@@ void DRW_particle_batch_cache_free(stru
  void DRW_gpencil_batch_cache_dirty_tag(struct bGPdata *gpd);
  void DRW_gpencil_batch_cache_free(struct bGPdata *gpd);
  
 +void DRW_hair_batch_cache_dirty(struct HairSystem *hsys, int mode);
 +void DRW_hair_batch_cache_free(struct HairSystem *hsys);
 +
  /* Curve */
- struct GPUBatch *DRW_curve_batch_cache_get_wire_edge(struct Curve *cu, struct CurveCache *ob_curve_cache);
- struct GPUBatch *DRW_curve_batch_cache_get_normal_edge(
-         struct Curve *cu, struct CurveCache *ob_curve_cache, float normal_size);
- struct GPUBatch *DRW_curve_batch_cache_get_overlay_edges(struct Curve *cu);
- struct GPUBatch *DRW_curve_batch_cache_get_overlay_verts(struct Curve *cu, bool handles);
- 
- struct GPUBatch *DRW_curve_batch_cache_get_triangles_with_normals(
-         struct Curve *cu, struct CurveCache *ob_curve_cache);
+ void DRW_curve_batch_cache_create_requested(struct Object *ob);
+ 
+ struct GPUBatch *DRW_curve_batch_cache_get_wire_edge(struct Curve *cu);
+ struct GPUBatch *DRW_curve_batch_cache_get_normal_edge(struct Curve *cu);
+ struct GPUBatch *DRW_curve_batch_cache_get_edit_edges(struct Curve *cu);
+ struct GPUBatch *DRW_curve_batch_cache_get_edit_verts(struct Curve *cu, bool handles);
+ 
+ struct GPUBatch *DRW_curve_batch_cache_get_triangles_with_normals(struct Curve *cu);
  struct GPUBatch **DRW_curve_batch_cache_get_surface_shaded(
-         struct Curve *cu, struct CurveCache *ob_curve_cache,
-         struct GPUMaterial **gpumat_array, uint gpumat_array_len);
- void DRW_curve_batch_cache_get_wireframes_face_texbuf(
-         struct Curve *cu, struct CurveCache *ob_curve_cache,
-         struct GPUTexture **verts_data, struct GPUTexture **face_indices, int *tri_count);
+         struct Curve *cu, struct GPUMaterial **gpumat_array, uint gpumat_array_len);
+ struct GPUBatch *DRW_curve_batch_cache_get_wireframes_face(struct Curve *cu);
  
  /* Metab

@@ Diff output truncated at 10240 characters. @@



More information about the Bf-blender-cvs mailing list