[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