[Bf-blender-cvs] [ad0e95688d2] master: Cleanup: DRW: Remove pointers to materials
Clément Foucault
noreply at git.blender.org
Tue May 14 11:01:15 CEST 2019
Commit: ad0e95688d254abee315622ebdc3aeb0d2ba979d
Author: Clément Foucault
Date: Sat May 11 14:42:26 2019 +0200
Branches: master
https://developer.blender.org/rBad0e95688d254abee315622ebdc3aeb0d2ba979d
Cleanup: DRW: Remove pointers to materials
===================================================================
M source/blender/draw/engines/eevee/eevee_materials.c
M source/blender/draw/engines/workbench/workbench_deferred.c
M source/blender/draw/engines/workbench/workbench_forward.c
M source/blender/draw/intern/DRW_render.h
M source/blender/draw/intern/draw_manager.h
M source/blender/draw/intern/draw_manager_data.c
M source/blender/draw/intern/draw_manager_exec.c
===================================================================
diff --git a/source/blender/draw/engines/eevee/eevee_materials.c b/source/blender/draw/engines/eevee/eevee_materials.c
index 35e1ff8a9c1..541511d2439 100644
--- a/source/blender/draw/engines/eevee/eevee_materials.c
+++ b/source/blender/draw/engines/eevee/eevee_materials.c
@@ -1180,21 +1180,21 @@ void EEVEE_materials_cache_init(EEVEE_ViewLayerData *sldata, EEVEE_Data *vedata)
}
}
-#define ADD_SHGROUP_CALL(shgrp, ob, ma, geom, oedata) \
+#define ADD_SHGROUP_CALL(shgrp, ob, geom, oedata) \
do { \
if (oedata) { \
DRW_shgroup_call_object_add_with_callback( \
- shgrp, geom, ob, ma, EEVEE_lightprobes_obj_visibility_cb, oedata); \
+ shgrp, geom, ob, EEVEE_lightprobes_obj_visibility_cb, oedata); \
} \
else { \
- DRW_shgroup_call_object_add_ex(shgrp, geom, ob, ma, false); \
+ DRW_shgroup_call_object_add_ex(shgrp, geom, ob, false); \
} \
} while (0)
-#define ADD_SHGROUP_CALL_SAFE(shgrp, ob, ma, geom, oedata) \
+#define ADD_SHGROUP_CALL_SAFE(shgrp, ob, geom, oedata) \
do { \
if (shgrp) { \
- ADD_SHGROUP_CALL(shgrp, ob, ma, geom, oedata); \
+ ADD_SHGROUP_CALL(shgrp, ob, geom, oedata); \
} \
} while (0)
@@ -1691,9 +1691,9 @@ void EEVEE_materials_cache_populate(EEVEE_Data *vedata,
if (is_sculpt_mode) {
/* Vcol is not supported in the modes that require PBVH drawing. */
bool use_vcol = false;
- DRW_shgroup_call_sculpt_with_materials_add(shgrp_array, ma_array, ob, use_vcol);
- DRW_shgroup_call_sculpt_with_materials_add(shgrp_depth_array, ma_array, ob, use_vcol);
- DRW_shgroup_call_sculpt_with_materials_add(shgrp_depth_clip_array, ma_array, ob, use_vcol);
+ DRW_shgroup_call_sculpt_with_materials_add(shgrp_array, ob, use_vcol);
+ DRW_shgroup_call_sculpt_with_materials_add(shgrp_depth_array, ob, use_vcol);
+ DRW_shgroup_call_sculpt_with_materials_add(shgrp_depth_clip_array, ob, use_vcol);
/* TODO(fclem): Support shadows in sculpt mode. */
}
else if (mat_geom) {
@@ -1718,9 +1718,9 @@ void EEVEE_materials_cache_populate(EEVEE_Data *vedata,
oedata->test_data = &sldata->probes->vis_data;
}
- ADD_SHGROUP_CALL(shgrp_array[i], ob, ma_array[i], mat_geom[i], oedata);
- ADD_SHGROUP_CALL_SAFE(shgrp_depth_array[i], ob, ma_array[i], mat_geom[i], oedata);
- ADD_SHGROUP_CALL_SAFE(shgrp_depth_clip_array[i], ob, ma_array[i], mat_geom[i], oedata);
+ ADD_SHGROUP_CALL(shgrp_array[i], ob, mat_geom[i], oedata);
+ ADD_SHGROUP_CALL_SAFE(shgrp_depth_array[i], ob, mat_geom[i], oedata);
+ ADD_SHGROUP_CALL_SAFE(shgrp_depth_clip_array[i], ob, mat_geom[i], oedata);
char *name = auto_layer_names;
for (int j = 0; j < auto_layer_count; ++j) {
diff --git a/source/blender/draw/engines/workbench/workbench_deferred.c b/source/blender/draw/engines/workbench/workbench_deferred.c
index bcce507da24..b19db4566dd 100644
--- a/source/blender/draw/engines/workbench/workbench_deferred.c
+++ b/source/blender/draw/engines/workbench/workbench_deferred.c
@@ -1036,24 +1036,23 @@ void workbench_deferred_solid_cache_populate(WORKBENCH_Data *vedata, Object *ob)
/* Draw material color */
if (is_sculpt_mode) {
struct DRWShadingGroup **shgrps = BLI_array_alloca(shgrps, materials_len);
- struct Material **mats = BLI_array_alloca(mats, materials_len);
for (int i = 0; i < materials_len; ++i) {
- mats[i] = give_current_material(ob, i + 1);
- if (mats[i] != NULL && mats[i]->a < 1.0f) {
+ struct Material *mat = give_current_material(ob, i + 1);
+ if (mat != NULL && mat->a < 1.0f) {
/* Hack */
- wpd->shading.xray_alpha = mats[i]->a;
+ wpd->shading.xray_alpha = mat->a;
material = workbench_forward_get_or_create_material_data(
- vedata, ob, mats[i], NULL, NULL, V3D_SHADING_MATERIAL_COLOR, 0, is_sculpt_mode);
+ vedata, ob, mat, NULL, NULL, V3D_SHADING_MATERIAL_COLOR, 0, is_sculpt_mode);
has_transp_mat = true;
}
else {
material = get_or_create_material_data(
- vedata, ob, mats[i], NULL, NULL, V3D_SHADING_MATERIAL_COLOR, 0);
+ vedata, ob, mat, NULL, NULL, V3D_SHADING_MATERIAL_COLOR, 0);
}
shgrps[i] = material->shgrp;
}
- DRW_shgroup_call_sculpt_with_materials_add(shgrps, mats, ob, false);
+ DRW_shgroup_call_sculpt_with_materials_add(shgrps, ob, false);
}
else {
struct GPUBatch **geoms;
diff --git a/source/blender/draw/engines/workbench/workbench_forward.c b/source/blender/draw/engines/workbench/workbench_forward.c
index 13bd6fe9e4d..2011afb723a 100644
--- a/source/blender/draw/engines/workbench/workbench_forward.c
+++ b/source/blender/draw/engines/workbench/workbench_forward.c
@@ -623,18 +623,17 @@ void workbench_forward_cache_populate(WORKBENCH_Data *vedata, Object *ob)
/* Draw material color */
if (is_sculpt_mode) {
struct DRWShadingGroup **shgrps = BLI_array_alloca(shgrps, materials_len);
- struct Material **mats = BLI_array_alloca(mats, materials_len);
for (int i = 0; i < materials_len; ++i) {
- mats[i] = give_current_material(ob, i + 1);
+ struct Material *mat = give_current_material(ob, i + 1);
material = workbench_forward_get_or_create_material_data(
- vedata, ob, mats[i], NULL, NULL, V3D_SHADING_MATERIAL_COLOR, 0, is_sculpt_mode);
+ vedata, ob, mat, NULL, NULL, V3D_SHADING_MATERIAL_COLOR, 0, is_sculpt_mode);
shgrps[i] = material->shgrp;
}
/* TODO(fclem) make this call optional */
DRW_shgroup_call_sculpt_add(material->shgrp_object_outline, ob, false, false, false);
if (!is_wire) {
- DRW_shgroup_call_sculpt_with_materials_add(shgrps, mats, ob, false);
+ DRW_shgroup_call_sculpt_with_materials_add(shgrps, ob, false);
}
}
else {
diff --git a/source/blender/draw/intern/DRW_render.h b/source/blender/draw/intern/DRW_render.h
index 38458dd48f0..6f9f15a7aba 100644
--- a/source/blender/draw/intern/DRW_render.h
+++ b/source/blender/draw/intern/DRW_render.h
@@ -421,16 +421,14 @@ void DRW_shgroup_call_procedural_triangles_add(DRWShadingGroup *shgroup,
void DRW_shgroup_call_object_add_ex(DRWShadingGroup *shgroup,
struct GPUBatch *geom,
struct Object *ob,
- struct Material *ma,
bool bypass_culling);
#define DRW_shgroup_call_object_add(shgroup, geom, ob) \
- DRW_shgroup_call_object_add_ex(shgroup, geom, ob, NULL, false)
+ DRW_shgroup_call_object_add_ex(shgroup, geom, ob, false)
#define DRW_shgroup_call_object_add_no_cull(shgroup, geom, ob) \
- DRW_shgroup_call_object_add_ex(shgroup, geom, ob, NULL, true)
+ DRW_shgroup_call_object_add_ex(shgroup, geom, ob, true)
void DRW_shgroup_call_object_add_with_callback(DRWShadingGroup *shgroup,
struct GPUBatch *geom,
struct Object *ob,
- struct Material *ma,
DRWCallVisibilityFn *callback,
void *user_data);
@@ -440,7 +438,6 @@ void DRW_shgroup_call_sculpt_add(DRWShadingGroup *shading_group,
bool use_mask,
bool use_vert_color);
void DRW_shgroup_call_sculpt_with_materials_add(DRWShadingGroup **shgroups,
- Material **materials,
Object *ob,
bool use_vcol);
diff --git a/source/blender/draw/intern/draw_manager.h b/source/blender/draw/intern/draw_manager.h
index 20dfe8bc057..d4a5c4b996b 100644
--- a/source/blender/draw/intern/draw_manager.h
+++ b/source/blender/draw/intern/draw_manager.h
@@ -100,9 +100,9 @@ enum {
/* Used by DRWCallState.matflag */
enum {
DRW_CALL_MODELINVERSE = (1 << 0),
- DRW_CALL_MODELVIEWPROJECTION = (1 << 3),
- DRW_CALL_ORCOTEXFAC = (1 << 7),
- DRW_CALL_OBJECTINFO = (1 << 8),
+ DRW_CALL_MODELVIEWPROJECTION = (1 << 1),
+ DRW_CALL_ORCOTEXFAC = (1 << 2),
+ DRW_CALL_OBJECTINFO = (1 << 3),
};
typedef struct DRWCallState {
@@ -110,8 +110,9 @@ typedef struct DRWCallState {
void *user_data;
uchar flag;
- uchar cache_id; /* Compared with DST.state_cache_id to see if matrices are still valid. */
- uint16_t matflag; /* Which matrices to compute. */
+ uchar cache_id; /* Compared with DST.state_cache_id to see if matrices are still valid. */
+ uchar matflag; /* Which matrices to compute. */
+ short ob_index;
/* Culling: Using Bounding Sphere for now for faster culling.
* Not ideal for planes. */
BoundSphere bsphere;
@@ -120,7 +121,7 @@ typedef struct DRWCallState {
float modelinverse[4][4];
float modelviewprojection[4][4];
float orcotexfac[2][3]; /* Not view dependent */
- float objectinfo[2];
+ float ob_random;
} DRWCallState;
typedef enum {
@@ -141,7 +142,6 @@ typedef struct DRWCall {
union {
struct { /* type == DRW_CALL_SINGLE */
GPUBatch *geometry;
- short ma_index;
} single;
struct { /* type == DRW_CALL_RANGE */
GPUBatch *geometry;
@@ -250,7 +250,7 @@ struct DRWShadingGroup {
int orcotexfac;
int callid;
int objectinfo;
- uint16_t matflag; /* Matrices needed, same as DRWCall.flag */
+ uchar matflag; /* Matrices needed, same as DRWCall.flag */
DRWPass *pass_parent; /* backlink to pass we're in */
#ifndef NDEBUG
diff --git a/source/blender/draw/intern/draw_manager_data.c b/source/blender/draw/intern/draw_manager_data.c
index 5d5e81ebbe2..0eac9512d0f 100644
--- a/source/blender/draw/intern/draw_manager_data.c
+++ b/source/blender/draw/intern/draw_manager_data.c
@@ -386,7 +386,7 @@ static void drw_call_state_update_matflag(DRWCallStat
@@ Diff output truncated at 10240 characters. @@
More information about the Bf-blender-cvs
mailing list