Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBastien Montagne <montagne29@wanadoo.fr>2017-11-29 19:45:14 +0300
committerBastien Montagne <montagne29@wanadoo.fr>2017-11-29 19:45:14 +0300
commit172aa404d83de2f1f67003d21c2194da72b0ef8b (patch)
tree0323872e8f71acc4a52dfb4df323018854966755
parent62d5a0353d708fb8c30af2ef35ce2288bae4cb51 (diff)
parent75eb219a2e21abe9c9909d76f85abbb538d8ef9f (diff)
Merge branch 'blender2.8' into id_override_staticid_override_static
-rw-r--r--source/blender/blenkernel/BKE_group.h1
-rw-r--r--source/blender/blenkernel/BKE_object.h9
-rw-r--r--source/blender/blenkernel/intern/group.c12
-rw-r--r--source/blender/blenkernel/intern/object.c116
-rw-r--r--source/blender/blenkernel/intern/object_update.c52
-rw-r--r--source/blender/depsgraph/intern/builder/deg_builder_nodes.cc2
-rw-r--r--source/blender/draw/engines/basic/basic_engine.c28
-rw-r--r--source/blender/draw/engines/clay/clay_engine.c36
-rw-r--r--source/blender/draw/engines/eevee/eevee_engine.c43
-rw-r--r--source/blender/draw/engines/eevee/eevee_lightprobes.c407
-rw-r--r--source/blender/draw/engines/eevee/shaders/default_frag.glsl2
-rw-r--r--source/blender/draw/engines/external/external_engine.c32
-rw-r--r--source/blender/draw/intern/draw_armature.c90
-rw-r--r--source/blender/draw/intern/draw_manager.c188
-rw-r--r--source/blender/editors/transform/transform_snap.c7
15 files changed, 507 insertions, 518 deletions
diff --git a/source/blender/blenkernel/BKE_group.h b/source/blender/blenkernel/BKE_group.h
index 9aab6950496..1d35e6ab9fc 100644
--- a/source/blender/blenkernel/BKE_group.h
+++ b/source/blender/blenkernel/BKE_group.h
@@ -52,7 +52,6 @@ bool BKE_group_object_exists(struct Group *group, struct Object *ob);
bool BKE_group_object_cyclic_check(struct Main *bmain, struct Object *object, struct Group *group);
bool BKE_group_is_animated(struct Group *group, struct Object *parent);
-void BKE_group_tag_recalc(struct Group *group);
void BKE_group_handle_recalc_and_update(const struct EvaluationContext *eval_ctx, struct Scene *scene, struct Object *parent, struct Group *group);
#endif /* __BKE_GROUP_H__ */
diff --git a/source/blender/blenkernel/BKE_object.h b/source/blender/blenkernel/BKE_object.h
index 31125545670..2b183906f57 100644
--- a/source/blender/blenkernel/BKE_object.h
+++ b/source/blender/blenkernel/BKE_object.h
@@ -184,7 +184,6 @@ void BKE_object_tfm_protected_restore(struct Object *ob,
/* Dependency graph evaluation callbacks. */
void BKE_object_eval_local_transform(const struct EvaluationContext *eval_ctx,
- struct Scene *scene,
struct Object *ob);
void BKE_object_eval_parent(const struct EvaluationContext *eval_ctx,
struct Scene *scene,
@@ -194,8 +193,9 @@ void BKE_object_eval_constraints(const struct EvaluationContext *eval_ctx,
struct Object *ob);
void BKE_object_eval_done(const struct EvaluationContext *eval_ctx, struct Object *ob);
+bool BKE_object_eval_proxy_copy(const struct EvaluationContext *eval_ct,
+ struct Object *object);
void BKE_object_eval_uber_transform(const struct EvaluationContext *eval_ctx,
- struct Scene *scene,
struct Object *ob);
void BKE_object_eval_uber_data(const struct EvaluationContext *eval_ctx,
struct Scene *scene,
@@ -205,6 +205,10 @@ void BKE_object_eval_cloth(const struct EvaluationContext *eval_ctx,
struct Scene *scene,
struct Object *object);
+void BKE_object_eval_transform_all(const struct EvaluationContext *eval_ctx,
+ struct Scene *scene,
+ struct Object *object);
+
void BKE_object_eval_update_shading(const struct EvaluationContext *eval_ctx,
struct Object *object);
void BKE_object_data_select_update(const struct EvaluationContext *eval_ctx,
@@ -226,6 +230,7 @@ void BKE_object_handle_update_ex(
struct Scene *scene, struct Object *ob,
struct RigidBodyWorld *rbw,
const bool do_proxy_update);
+
void BKE_object_sculpt_modifiers_changed(struct Object *ob);
int BKE_object_obdata_texspace_get(struct Object *ob, short **r_texflag, float **r_loc, float **r_size, float **r_rot);
diff --git a/source/blender/blenkernel/intern/group.c b/source/blender/blenkernel/intern/group.c
index 5e5f8114ead..0fd6685242f 100644
--- a/source/blender/blenkernel/intern/group.c
+++ b/source/blender/blenkernel/intern/group.c
@@ -253,18 +253,6 @@ Group *BKE_group_object_find(Group *group, Object *ob)
return NULL;
}
-void BKE_group_tag_recalc(Group *group)
-{
- GroupObject *go;
-
- if (group == NULL) return;
-
- for (go = group->gobject.first; go; go = go->next) {
- if (go->ob)
- go->ob->recalc = go->recalc;
- }
-}
-
bool BKE_group_is_animated(Group *group, Object *UNUSED(parent))
{
GroupObject *go;
diff --git a/source/blender/blenkernel/intern/object.c b/source/blender/blenkernel/intern/object.c
index 3795e1bbf0e..f58a0d76b6a 100644
--- a/source/blender/blenkernel/intern/object.c
+++ b/source/blender/blenkernel/intern/object.c
@@ -2664,6 +2664,28 @@ bool BKE_object_parent_loop_check(const Object *par, const Object *ob)
return BKE_object_parent_loop_check(par->parent, ob);
}
+static void object_handle_update_proxy(const EvaluationContext *eval_ctx,
+ Scene *scene,
+ Object *object,
+ const bool do_proxy_update)
+{
+ /* The case when this is a group proxy, object_update is called in group.c */
+ if (object->proxy == NULL) {
+ return;
+ }
+ /* set pointer in library proxy target, for copying, but restore it */
+ object->proxy->proxy_from = object;
+ // printf("set proxy pointer for later group stuff %s\n", ob->id.name);
+
+ /* the no-group proxy case, we call update */
+ if (object->proxy_group == NULL) {
+ if (do_proxy_update) {
+ // printf("call update, lib ob %s proxy %s\n", ob->proxy->id.name, ob->id.name);
+ BKE_object_handle_update(eval_ctx, scene, object->proxy);
+ }
+ }
+}
+
/* proxy rule: lib_object->proxy_from == the one we borrow from, only set temporal and cleared here */
/* local_object->proxy == pointer to library object, saved in files and read */
@@ -2677,75 +2699,49 @@ void BKE_object_handle_update_ex(const EvaluationContext *eval_ctx,
RigidBodyWorld *rbw,
const bool do_proxy_update)
{
- if (ob->recalc & OB_RECALC_ALL) {
- /* speed optimization for animation lookups */
- if (ob->pose) {
- BKE_pose_channels_hash_make(ob->pose);
- if (ob->pose->flag & POSE_CONSTRAINTS_NEED_UPDATE_FLAGS) {
- BKE_pose_update_constraint_flags(ob->pose);
- }
+ if ((ob->recalc & OB_RECALC_ALL) == 0) {
+ object_handle_update_proxy(eval_ctx, scene, ob, do_proxy_update);
+ return;
+ }
+ /* Speed optimization for animation lookups. */
+ if (ob->pose != NULL) {
+ BKE_pose_channels_hash_make(ob->pose);
+ if (ob->pose->flag & POSE_CONSTRAINTS_NEED_UPDATE_FLAGS) {
+ BKE_pose_update_constraint_flags(ob->pose);
}
-
- if (ob->recalc & OB_RECALC_DATA) {
- if (ob->type == OB_ARMATURE) {
- /* this happens for reading old files and to match library armatures
- * with poses we do it ahead of BKE_object_where_is_calc to ensure animation
- * is evaluated on the rebuilt pose, otherwise we get incorrect poses
- * on file load */
- if (ob->pose == NULL || (ob->pose->flag & POSE_RECALC))
- BKE_pose_rebuild(ob, ob->data);
- }
+ }
+ if (ob->recalc & OB_RECALC_DATA) {
+ if (ob->type == OB_ARMATURE) {
+ /* this happens for reading old files and to match library armatures
+ * with poses we do it ahead of BKE_object_where_is_calc to ensure animation
+ * is evaluated on the rebuilt pose, otherwise we get incorrect poses
+ * on file load */
+ if (ob->pose == NULL || (ob->pose->flag & POSE_RECALC))
+ BKE_pose_rebuild(ob, ob->data);
}
-
- /* XXX new animsys warning: depsgraph tag OB_RECALC_DATA should not skip drivers,
- * which is only in BKE_object_where_is_calc now */
- /* XXX: should this case be OB_RECALC_OB instead? */
- if (ob->recalc & OB_RECALC_ALL) {
-
- if (G.debug & G_DEBUG_DEPSGRAPH)
- printf("recalcob %s\n", ob->id.name + 2);
-
- /* handle proxy copy for target */
- if (ID_IS_LINKED(ob) && ob->proxy_from) {
- // printf("ob proxy copy, lib ob %s proxy %s\n", ob->id.name, ob->proxy_from->id.name);
- if (ob->proxy_from->proxy_group) { /* transform proxy into group space */
- Object *obg = ob->proxy_from->proxy_group;
- float imat[4][4];
- invert_m4_m4(imat, obg->obmat);
- mul_m4_m4m4(ob->obmat, imat, ob->proxy_from->obmat);
- if (obg->dup_group) { /* should always be true */
- add_v3_v3(ob->obmat[3], obg->dup_group->dupli_ofs);
- }
- }
- else
- copy_m4_m4(ob->obmat, ob->proxy_from->obmat);
- }
- else
- BKE_object_where_is_calc_ex(eval_ctx, scene, rbw, ob, NULL);
+ }
+ /* XXX new animsys warning: depsgraph tag OB_RECALC_DATA should not skip drivers,
+ * which is only in BKE_object_where_is_calc now */
+ /* XXX: should this case be OB_RECALC_OB instead? */
+ if (ob->recalc & OB_RECALC_ALL) {
+ if (G.debug & G_DEBUG_DEPSGRAPH) {
+ printf("recalcob %s\n", ob->id.name + 2);
}
-
- if (ob->recalc & OB_RECALC_DATA) {
- BKE_object_handle_data_update(eval_ctx, scene, ob);
+ /* Handle proxy copy for target. */
+ if (!BKE_object_eval_proxy_copy(eval_ctx, ob)) {
+ BKE_object_where_is_calc_ex(eval_ctx, scene, rbw, ob, NULL);
}
+ }
- ob->recalc &= ~OB_RECALC_ALL;
+ if (ob->recalc & OB_RECALC_DATA) {
+ BKE_object_handle_data_update(eval_ctx, scene, ob);
}
- /* the case when this is a group proxy, object_update is called in group.c */
- if (ob->proxy) {
- /* set pointer in library proxy target, for copying, but restore it */
- ob->proxy->proxy_from = ob;
- // printf("set proxy pointer for later group stuff %s\n", ob->id.name);
+ ob->recalc &= ~OB_RECALC_ALL;
- /* the no-group proxy case, we call update */
- if (ob->proxy_group == NULL) {
- if (do_proxy_update) {
- // printf("call update, lib ob %s proxy %s\n", ob->proxy->id.name, ob->id.name);
- BKE_object_handle_update(eval_ctx, scene, ob->proxy);
- }
- }
- }
+ object_handle_update_proxy(eval_ctx, scene, ob, do_proxy_update);
}
+
/* WARNING: "scene" here may not be the scene object actually resides in.
* When dealing with background-sets, "scene" is actually the active scene.
* e.g. "scene" <-- set 1 <-- set 2 ("ob" lives here) <-- set 3 <-- ... <-- set n
diff --git a/source/blender/blenkernel/intern/object_update.c b/source/blender/blenkernel/intern/object_update.c
index 1e8de416ea9..f5f521e119d 100644
--- a/source/blender/blenkernel/intern/object_update.c
+++ b/source/blender/blenkernel/intern/object_update.c
@@ -68,7 +68,6 @@
#define DEBUG_PRINT if (G.debug & G_DEBUG_DEPSGRAPH) printf
void BKE_object_eval_local_transform(const EvaluationContext *UNUSED(eval_ctx),
- Scene *UNUSED(scene),
Object *ob)
{
DEBUG_PRINT("%s on %s (%p)\n", __func__, ob->id.name, ob);
@@ -273,33 +272,36 @@ void BKE_object_handle_data_update(
/* quick cache removed */
}
-void BKE_object_eval_uber_transform(const EvaluationContext *UNUSED(eval_ctx),
- Scene *UNUSED(scene),
- Object *ob)
+bool BKE_object_eval_proxy_copy(const EvaluationContext *UNUSED(eval_ctx),
+ Object *object)
{
- /* TODO(sergey): Currently it's a duplicate of logic in BKE_object_handle_update_ex(). */
- // XXX: it's almost redundant now...
-
/* Handle proxy copy for target, */
- if (ID_IS_LINKED(ob) && ob->proxy_from) {
- if (ob->proxy_from->proxy_group) {
+ if (ID_IS_LINKED(object) && object->proxy_from) {
+ if (object->proxy_from->proxy_group) {
/* Transform proxy into group space. */
- Object *obg = ob->proxy_from->proxy_group;
+ Object *obg = object->proxy_from->proxy_group;
float imat[4][4];
invert_m4_m4(imat, obg->obmat);
- mul_m4_m4m4(ob->obmat, imat, ob->proxy_from->obmat);
+ mul_m4_m4m4(object->obmat, imat, object->proxy_from->obmat);
/* Should always be true. */
if (obg->dup_group) {
- add_v3_v3(ob->obmat[3], obg->dup_group->dupli_ofs);
+ add_v3_v3(object->obmat[3], obg->dup_group->dupli_ofs);
}
}
- else
- copy_m4_m4(ob->obmat, ob->proxy_from->obmat);
+ else {
+ copy_m4_m4(object->obmat, object->proxy_from->obmat);
+ }
+ return true;
}
+ return false;
+}
- ob->recalc &= ~(OB_RECALC_OB | OB_RECALC_TIME);
- if (ob->data == NULL) {
- ob->recalc &= ~OB_RECALC_DATA;
+void BKE_object_eval_uber_transform(const EvaluationContext *eval_ctx, Object *object)
+{
+ BKE_object_eval_proxy_copy(eval_ctx, object);
+ object->recalc &= ~(OB_RECALC_OB | OB_RECALC_TIME);
+ if (object->data == NULL) {
+ object->recalc &= ~OB_RECALC_DATA;
}
}
@@ -391,6 +393,22 @@ void BKE_object_eval_cloth(const EvaluationContext *UNUSED(eval_ctx),
BKE_ptcache_object_reset(scene, object, PTCACHE_RESET_DEPSGRAPH);
}
+void BKE_object_eval_transform_all(const EvaluationContext *eval_ctx,
+ Scene *scene,
+ Object *object)
+{
+ /* This mimics full transform update chain from new depsgraph. */
+ BKE_object_eval_local_transform(eval_ctx, object);
+ if (object->parent != NULL) {
+ BKE_object_eval_parent(eval_ctx, scene, object);
+ }
+ if (!BLI_listbase_is_empty(&object->constraints)) {
+ BKE_object_eval_constraints(eval_ctx, scene, object);
+ }
+ BKE_object_eval_uber_transform(eval_ctx, object);
+ BKE_object_eval_done(eval_ctx, object);
+}
+
void BKE_object_eval_update_shading(const EvaluationContext *UNUSED(eval_ctx),
Object *object)
{
diff --git a/source/blender/depsgraph/intern/builder/deg_builder_nodes.cc b/source/blender/depsgraph/intern/builder/deg_builder_nodes.cc
index a2a0f633fd9..121db9a4c5f 100644
--- a/source/blender/depsgraph/intern/builder/deg_builder_nodes.cc
+++ b/source/blender/depsgraph/intern/builder/deg_builder_nodes.cc
@@ -583,7 +583,6 @@ void DepsgraphNodeBuilder::build_object_transform(Object *object)
op_node = add_operation_node(&object->id, DEG_NODE_TYPE_TRANSFORM,
function_bind(BKE_object_eval_local_transform,
_1,
- scene_cow,
ob_cow),
DEG_OPCODE_TRANSFORM_LOCAL);
op_node->set_as_entry();
@@ -607,7 +606,6 @@ void DepsgraphNodeBuilder::build_object_transform(Object *object)
add_operation_node(&object->id, DEG_NODE_TYPE_TRANSFORM,
function_bind(BKE_object_eval_uber_transform,
_1,
- scene_cow,
ob_cow),
DEG_OPCODE_TRANSFORM_OBJECT_UBEREVAL);
diff --git a/source/blender/draw/engines/basic/basic_engine.c b/source/blender/draw/engines/basic/basic_engine.c
index b41420ab95b..10dfe7b5996 100644
--- a/source/blender/draw/engines/basic/basic_engine.c
+++ b/source/blender/draw/engines/basic/basic_engine.c
@@ -111,7 +111,7 @@ typedef struct BASIC_PrivateData {
/* Functions */
-static void BASIC_engine_init(void *vedata)
+static void basic_engine_init(void *vedata)
{
BASIC_StorageList *stl = ((BASIC_Data *)vedata)->stl;
BASIC_TextureList *txl = ((BASIC_Data *)vedata)->txl;
@@ -144,7 +144,7 @@ static void BASIC_engine_init(void *vedata)
#endif
}
-static void BASIC_cache_init(void *vedata)
+static void basic_cache_init(void *vedata)
{
BASIC_PassList *psl = ((BASIC_Data *)vedata)->psl;
BASIC_StorageList *stl = ((BASIC_Data *)vedata)->stl;
@@ -174,7 +174,7 @@ static void BASIC_cache_init(void *vedata)
}
}
-static void BASIC_cache_populate(void *vedata, Object *ob)
+static void basic_cache_populate(void *vedata, Object *ob)
{
BASIC_StorageList *stl = ((BASIC_Data *)vedata)->stl;
@@ -193,14 +193,14 @@ static void BASIC_cache_populate(void *vedata, Object *ob)
}
}
-static void BASIC_cache_finish(void *vedata)
+static void basic_cache_finish(void *vedata)
{
BASIC_StorageList *stl = ((BASIC_Data *)vedata)->stl;
UNUSED_VARS(stl);
}
-static void BASIC_draw_scene(void *vedata)
+static void basic_draw_scene(void *vedata)
{
BASIC_PassList *psl = ((BASIC_Data *)vedata)->psl;
@@ -244,24 +244,24 @@ static void BASIC_draw_scene(void *vedata)
}
}
-static void BASIC_engine_free(void)
+static void basic_engine_free(void)
{
/* all shaders are builtin */
}
-static const DrawEngineDataSize BASIC_data_size = DRW_VIEWPORT_DATA_SIZE(BASIC_Data);
+static const DrawEngineDataSize basic_data_size = DRW_VIEWPORT_DATA_SIZE(BASIC_Data);
DrawEngineType draw_engine_basic_type = {
NULL, NULL,
N_("Basic"),
- &BASIC_data_size,
- &BASIC_engine_init,
- &BASIC_engine_free,
- &BASIC_cache_init,
- &BASIC_cache_populate,
- &BASIC_cache_finish,
+ &basic_data_size,
+ &basic_engine_init,
+ &basic_engine_free,
+ &basic_cache_init,
+ &basic_cache_populate,
+ &basic_cache_finish,
NULL,
- &BASIC_draw_scene,
+ &basic_draw_scene,
NULL,
NULL,
};
diff --git a/source/blender/draw/engines/clay/clay_engine.c b/source/blender/draw/engines/clay/clay_engine.c
index 5f68af1f615..01f89ae6b1c 100644
--- a/source/blender/draw/engines/clay/clay_engine.c
+++ b/source/blender/draw/engines/clay/clay_engine.c
@@ -322,7 +322,7 @@ static struct GPUTexture *create_jitter_texture(int num_samples)
return DRW_texture_create_2D(64, 64, DRW_TEX_RGB_16, DRW_TEX_FILTER | DRW_TEX_WRAP, &jitter[0][0]);
}
-static void CLAY_engine_init(void *vedata)
+static void clay_engine_init(void *vedata)
{
CLAY_StorageList *stl = ((CLAY_Data *)vedata)->stl;
CLAY_FramebufferList *fbl = ((CLAY_Data *)vedata)->fbl;
@@ -702,7 +702,7 @@ static DRWShadingGroup *CLAY_object_shgrp_default_mode_get(
return CLAY_object_shgrp_get(vedata, ob, stl, psl, use_flat);
}
-static void CLAY_cache_init(void *vedata)
+static void clay_cache_init(void *vedata)
{
CLAY_PassList *psl = ((CLAY_Data *)vedata)->psl;
CLAY_StorageList *stl = ((CLAY_Data *)vedata)->stl;
@@ -746,7 +746,7 @@ static void CLAY_cache_init(void *vedata)
}
}
-static void CLAY_cache_populate(void *vedata, Object *ob)
+static void clay_cache_populate(void *vedata, Object *ob)
{
CLAY_PassList *psl = ((CLAY_Data *)vedata)->psl;
CLAY_StorageList *stl = ((CLAY_Data *)vedata)->stl;
@@ -826,7 +826,7 @@ static void CLAY_cache_populate(void *vedata, Object *ob)
}
}
-static void CLAY_cache_finish(void *vedata)
+static void clay_cache_finish(void *vedata)
{
CLAY_StorageList *stl = ((CLAY_Data *)vedata)->stl;
@@ -834,7 +834,7 @@ static void CLAY_cache_finish(void *vedata)
DRW_uniformbuffer_update(stl->hair_mat_ubo, &stl->storage->hair_mat_storage);
}
-static void CLAY_draw_scene(void *vedata)
+static void clay_draw_scene(void *vedata)
{
CLAY_PassList *psl = ((CLAY_Data *)vedata)->psl;
@@ -866,7 +866,7 @@ static void CLAY_draw_scene(void *vedata)
DRW_draw_pass(psl->hair_pass);
}
-static void CLAY_layer_collection_settings_create(RenderEngine *UNUSED(engine), IDProperty *props)
+static void clay_layer_collection_settings_create(RenderEngine *UNUSED(engine), IDProperty *props)
{
BLI_assert(props &&
props->type == IDP_GROUP &&
@@ -885,7 +885,7 @@ static void CLAY_layer_collection_settings_create(RenderEngine *UNUSED(engine),
BKE_collection_engine_property_add_float(props, "hair_brightness_randomness", 0.0f);
}
-static void CLAY_view_layer_settings_create(RenderEngine *UNUSED(engine), IDProperty *props)
+static void clay_view_layer_settings_create(RenderEngine *UNUSED(engine), IDProperty *props)
{
BLI_assert(props &&
props->type == IDP_GROUP &&
@@ -894,7 +894,7 @@ static void CLAY_view_layer_settings_create(RenderEngine *UNUSED(engine), IDProp
BKE_collection_engine_property_add_int(props, "ssao_samples", 16);
}
-static void CLAY_engine_free(void)
+static void clay_engine_free(void)
{
DRW_SHADER_FREE_SAFE(e_data.clay_sh);
DRW_SHADER_FREE_SAFE(e_data.clay_flat_sh);
@@ -902,19 +902,19 @@ static void CLAY_engine_free(void)
DRW_TEXTURE_FREE_SAFE(e_data.matcap_array);
}
-static const DrawEngineDataSize CLAY_data_size = DRW_VIEWPORT_DATA_SIZE(CLAY_Data);
+static const DrawEngineDataSize clay_data_size = DRW_VIEWPORT_DATA_SIZE(CLAY_Data);
DrawEngineType draw_engine_clay_type = {
NULL, NULL,
N_("Clay"),
- &CLAY_data_size,
- &CLAY_engine_init,
- &CLAY_engine_free,
- &CLAY_cache_init,
- &CLAY_cache_populate,
- &CLAY_cache_finish,
+ &clay_data_size,
+ &clay_engine_init,
+ &clay_engine_free,
+ &clay_cache_init,
+ &clay_cache_populate,
+ &clay_cache_finish,
NULL,
- &CLAY_draw_scene,
+ &clay_draw_scene,
NULL,
NULL,
};
@@ -923,8 +923,8 @@ RenderEngineType DRW_engine_viewport_clay_type = {
NULL, NULL,
CLAY_ENGINE, N_("Clay"), RE_INTERNAL,
NULL, NULL, NULL, NULL, NULL, NULL, NULL,
- &CLAY_layer_collection_settings_create,
- &CLAY_view_layer_settings_create,
+ &clay_layer_collection_settings_create,
+ &clay_view_layer_settings_create,
&draw_engine_clay_type,
{NULL, NULL, NULL}
};
diff --git a/source/blender/draw/engines/eevee/eevee_engine.c b/source/blender/draw/engines/eevee/eevee_engine.c
index 8989213baa0..ed1e3c24029 100644
--- a/source/blender/draw/engines/eevee/eevee_engine.c
+++ b/source/blender/draw/engines/eevee/eevee_engine.c
@@ -44,7 +44,7 @@ extern GlobalsUboStorage ts;
/* *********** FUNCTIONS *********** */
-static void EEVEE_engine_init(void *ved)
+static void eevee_engine_init(void *ved)
{
EEVEE_Data *vedata = (EEVEE_Data *)ved;
EEVEE_TextureList *txl = vedata->txl;
@@ -82,7 +82,7 @@ static void EEVEE_engine_init(void *ved)
}
}
-static void EEVEE_cache_init(void *vedata)
+static void eevee_cache_init(void *vedata)
{
EEVEE_PassList *psl = ((EEVEE_Data *)vedata)->psl;
EEVEE_ViewLayerData *sldata = EEVEE_view_layer_data_ensure();
@@ -101,7 +101,7 @@ static void EEVEE_cache_init(void *vedata)
EEVEE_volumes_cache_init(sldata, vedata);
}
-static void EEVEE_cache_populate(void *vedata, Object *ob)
+static void eevee_cache_populate(void *vedata, Object *ob)
{
EEVEE_ViewLayerData *sldata = EEVEE_view_layer_data_ensure();
@@ -149,7 +149,7 @@ static void EEVEE_cache_populate(void *vedata, Object *ob)
}
}
-static void EEVEE_cache_finish(void *vedata)
+static void eevee_cache_finish(void *vedata)
{
EEVEE_ViewLayerData *sldata = EEVEE_view_layer_data_ensure();
@@ -158,7 +158,7 @@ static void EEVEE_cache_finish(void *vedata)
EEVEE_lightprobes_cache_finish(sldata, vedata);
}
-static void EEVEE_draw_scene(void *vedata)
+static void eevee_draw_scene(void *vedata)
{
EEVEE_PassList *psl = ((EEVEE_Data *)vedata)->psl;
EEVEE_StorageList *stl = ((EEVEE_Data *)vedata)->stl;
@@ -277,7 +277,7 @@ static void EEVEE_draw_scene(void *vedata)
stl->g_data->view_updated = false;
}
-static void EEVEE_view_update(void *vedata)
+static void eevee_view_update(void *vedata)
{
EEVEE_StorageList *stl = ((EEVEE_Data *)vedata)->stl;
if (stl->g_data) {
@@ -285,7 +285,7 @@ static void EEVEE_view_update(void *vedata)
}
}
-static void EEVEE_id_update(void *UNUSED(vedata), ID *id)
+static void eevee_id_update(void *UNUSED(vedata), ID *id)
{
const ID_Type id_type = GS(id->name);
if (id_type == ID_OB) {
@@ -305,7 +305,7 @@ static void EEVEE_id_update(void *UNUSED(vedata), ID *id)
}
}
-static void EEVEE_engine_free(void)
+static void eevee_engine_free(void)
{
EEVEE_bloom_free();
EEVEE_depth_of_field_free();
@@ -321,7 +321,7 @@ static void EEVEE_engine_free(void)
EEVEE_volumes_free();
}
-static void EEVEE_layer_collection_settings_create(RenderEngine *UNUSED(engine), IDProperty *props)
+static void eevee_layer_collection_settings_create(RenderEngine *UNUSED(engine), IDProperty *props)
{
BLI_assert(props &&
props->type == IDP_GROUP &&
@@ -330,7 +330,7 @@ static void EEVEE_layer_collection_settings_create(RenderEngine *UNUSED(engine),
UNUSED_VARS_NDEBUG(props);
}
-static void EEVEE_view_layer_settings_create(RenderEngine *UNUSED(engine), IDProperty *props)
+static void eevee_view_layer_settings_create(RenderEngine *UNUSED(engine), IDProperty *props)
{
BLI_assert(props &&
props->type == IDP_GROUP &&
@@ -399,28 +399,29 @@ static void EEVEE_view_layer_settings_create(RenderEngine *UNUSED(engine), IDPro
BKE_collection_engine_property_add_bool(props, "shadow_high_bitdepth", false);
}
-static const DrawEngineDataSize EEVEE_data_size = DRW_VIEWPORT_DATA_SIZE(EEVEE_Data);
+static const DrawEngineDataSize eevee_data_size = DRW_VIEWPORT_DATA_SIZE(EEVEE_Data);
DrawEngineType draw_engine_eevee_type = {
NULL, NULL,
N_("Eevee"),
- &EEVEE_data_size,
- &EEVEE_engine_init,
- &EEVEE_engine_free,
- &EEVEE_cache_init,
- &EEVEE_cache_populate,
- &EEVEE_cache_finish,
- &EEVEE_draw_scene,
+ &eevee_data_size,
+ &eevee_engine_init,
+ &eevee_engine_free,
+ &eevee_cache_init,
+ &eevee_cache_populate,
+ &eevee_cache_finish,
+ &eevee_draw_scene,
NULL, //&EEVEE_draw_scene
- &EEVEE_view_update,
- &EEVEE_id_update,
+ &eevee_view_update,
+ &eevee_id_update,
};
RenderEngineType DRW_engine_viewport_eevee_type = {
NULL, NULL,
EEVEE_ENGINE, N_("Eevee"), RE_INTERNAL | RE_USE_SHADING_NODES,
NULL, NULL, NULL, NULL, NULL, NULL, NULL,
- &EEVEE_layer_collection_settings_create, &EEVEE_view_layer_settings_create,
+ &eevee_layer_collection_settings_create,
+ &eevee_view_layer_settings_create,
&draw_engine_eevee_type,
{NULL, NULL, NULL}
};
diff --git a/source/blender/draw/engines/eevee/eevee_lightprobes.c b/source/blender/draw/engines/eevee/eevee_lightprobes.c
index d2e65cbdbe3..e1b78602507 100644
--- a/source/blender/draw/engines/eevee/eevee_lightprobes.c
+++ b/source/blender/draw/engines/eevee/eevee_lightprobes.c
@@ -1260,266 +1260,255 @@ static void lightprobe_cell_world_location_get(EEVEE_LightGrid *egrid, float loc
add_v3_v3(r_pos, tmp);
}
-void EEVEE_lightprobes_refresh(EEVEE_ViewLayerData *sldata, EEVEE_Data *vedata)
+static void lightprobes_refresh_world(EEVEE_ViewLayerData *sldata, EEVEE_Data *vedata)
{
- EEVEE_TextureList *txl = vedata->txl;
EEVEE_PassList *psl = vedata->psl;
- EEVEE_StorageList *stl = vedata->stl;
EEVEE_LightProbesInfo *pinfo = sldata->probes;
- Object *ob;
- const DRWContextState *draw_ctx = DRW_context_state_get();
- RegionView3D *rv3d = draw_ctx->rv3d;
+ render_world_to_probe(sldata, psl);
+ if (e_data.update_world & PROBE_UPDATE_CUBE) {
+ glossy_filter_probe(sldata, vedata, psl, 0);
+ }
+ if (e_data.update_world & PROBE_UPDATE_GRID) {
+ diffuse_filter_probe(sldata, vedata, psl, 0);
+ SWAP(GPUTexture *, sldata->irradiance_pool, sldata->irradiance_rt);
+ DRW_framebuffer_texture_detach(sldata->probe_pool);
+ DRW_framebuffer_texture_attach(sldata->probe_filter_fb, sldata->irradiance_rt, 0, 0);
+ DRW_draw_pass(psl->probe_grid_fill);
+ DRW_framebuffer_texture_detach(sldata->irradiance_rt);
+ DRW_framebuffer_texture_attach(sldata->probe_filter_fb, sldata->probe_pool, 0, 0);
+ }
+ e_data.update_world = 0;
+ if (!e_data.world_ready_to_shade) {
+ e_data.world_ready_to_shade = true;
+ pinfo->num_render_cube = 1;
+ pinfo->num_render_grid = 1;
+ }
+ DRW_viewport_request_redraw();
+}
- /* Render world in priority */
- if (e_data.update_world) {
- render_world_to_probe(sldata, psl);
+static void lightprobes_refresh_initialize_grid(EEVEE_ViewLayerData *sldata, EEVEE_Data *vedata)
+{
+ EEVEE_LightProbesInfo *pinfo = sldata->probes;
+ EEVEE_PassList *psl = vedata->psl;
+ if (pinfo->grid_initialized) {
+ /* Gris is already initialized, nothing to do. */
+ return;
+ }
+ DRW_framebuffer_texture_detach(sldata->probe_pool);
+ /* Flood fill with world irradiance. */
+ DRW_framebuffer_texture_attach(sldata->probe_filter_fb, sldata->irradiance_rt, 0, 0);
+ DRW_draw_pass(psl->probe_grid_fill);
+ DRW_framebuffer_texture_detach(sldata->irradiance_rt);
+ SWAP(GPUTexture *, sldata->irradiance_pool, sldata->irradiance_rt);
+ DRW_framebuffer_texture_attach(sldata->probe_filter_fb, sldata->irradiance_rt, 0, 0);
+ DRW_draw_pass(psl->probe_grid_fill);
+ DRW_framebuffer_texture_detach(sldata->irradiance_rt);
+ SWAP(GPUTexture *, sldata->irradiance_pool, sldata->irradiance_rt);
+ /* Reattach to have a valid framebuffer. */
+ DRW_framebuffer_texture_attach(sldata->probe_filter_fb, sldata->probe_pool, 0, 0);
+ pinfo->grid_initialized = true;
+}
- if (e_data.update_world & PROBE_UPDATE_CUBE) {
- glossy_filter_probe(sldata, vedata, psl, 0);
+static void lightprobes_refresh_planar(EEVEE_ViewLayerData *sldata, EEVEE_Data *vedata)
+{
+ EEVEE_TextureList *txl = vedata->txl;
+ Object *ob;
+ EEVEE_LightProbesInfo *pinfo = sldata->probes;
+ for (int i = 0; (ob = pinfo->probes_planar_ref[i]) && (i < MAX_PLANAR); i++) {
+ EEVEE_LightProbeEngineData *ped = EEVEE_lightprobe_data_ensure(ob);
+ if (!ped->need_update) {
+ continue;
}
+ /* Temporary Remove all planar reflections (avoid lag effect). */
+ int tmp_num_planar = pinfo->num_planar;
+ pinfo->num_planar = 0;
+ render_scene_to_planar(sldata, vedata, i, ped->viewmat, ped->persmat, ped->planer_eq_offset);
+ /* Restore */
+ pinfo->num_planar = tmp_num_planar;
+ ped->need_update = false;
+ ped->probe_id = i;
+ }
+ /* If there is at least one planar probe */
+ if (pinfo->num_planar > 0 && (vedata->stl->effects->enabled_effects & EFFECT_SSR) != 0) {
+ const int max_lod = 9;
+ DRW_stats_group_start("Planar Probe Downsample");
+ DRW_framebuffer_recursive_downsample(vedata->fbl->downsample_fb, txl->planar_pool, max_lod, &downsample_planar, vedata);
+ /* For shading, save max level of the planar map */
+ pinfo->lod_planar_max = (float)(max_lod);
+ DRW_stats_group_end();
+ }
+}
- if (e_data.update_world & PROBE_UPDATE_GRID) {
- diffuse_filter_probe(sldata, vedata, psl, 0);
-
- SWAP(GPUTexture *, sldata->irradiance_pool, sldata->irradiance_rt);
-
- DRW_framebuffer_texture_detach(sldata->probe_pool);
-
- DRW_framebuffer_texture_attach(sldata->probe_filter_fb, sldata->irradiance_rt, 0, 0);
- DRW_draw_pass(psl->probe_grid_fill);
- DRW_framebuffer_texture_detach(sldata->irradiance_rt);
-
- DRW_framebuffer_texture_attach(sldata->probe_filter_fb, sldata->probe_pool, 0, 0);
+static void lightprobes_refresh_cube(EEVEE_ViewLayerData *sldata, EEVEE_Data *vedata)
+{
+ EEVEE_PassList *psl = vedata->psl;
+ EEVEE_StorageList *stl = vedata->stl;
+ EEVEE_LightProbesInfo *pinfo = sldata->probes;
+ Object *ob;
+ for (int i = 1; (ob = pinfo->probes_cube_ref[i]) && (i < MAX_PROBE); i++) {
+ EEVEE_LightProbeEngineData *ped = EEVEE_lightprobe_data_ensure(ob);
+ if (!ped->need_update) {
+ continue;
}
-
- e_data.update_world = 0;
-
- if (!e_data.world_ready_to_shade) {
- e_data.world_ready_to_shade = true;
- pinfo->num_render_cube = 1;
- pinfo->num_render_grid = 1;
+ LightProbe *prb = (LightProbe *)ob->data;
+ render_scene_to_probe(sldata, vedata, ob->obmat[3], prb->clipsta, prb->clipend);
+ glossy_filter_probe(sldata, vedata, psl, i);
+ ped->need_update = false;
+ ped->probe_id = i;
+ if (!ped->ready_to_shade) {
+ pinfo->num_render_cube++;
+ ped->ready_to_shade = true;
}
-
+#if 0
+ printf("Update Cubemap %d\n", i);
+#endif
DRW_viewport_request_redraw();
- }
- else if (true) { /* TODO if at least one probe needs refresh */
-
- if (draw_ctx->evil_C != NULL) {
- /* Only compute probes if not navigating or in playback */
- struct wmWindowManager *wm = CTX_wm_manager(draw_ctx->evil_C);
- if (((rv3d->rflag & RV3D_NAVIGATING) != 0) || ED_screen_animation_no_scrub(wm) != NULL) {
- goto update_planar;
- }
- }
-
- if (!pinfo->grid_initialized) {
- DRW_framebuffer_texture_detach(sldata->probe_pool);
-
- /* Flood fill with world irradiance. */
- DRW_framebuffer_texture_attach(sldata->probe_filter_fb, sldata->irradiance_rt, 0, 0);
- DRW_draw_pass(psl->probe_grid_fill);
- DRW_framebuffer_texture_detach(sldata->irradiance_rt);
+ /* Do not let this frame accumulate. */
+ stl->effects->taa_current_sample = 1;
- SWAP(GPUTexture *, sldata->irradiance_pool, sldata->irradiance_rt);
-
- DRW_framebuffer_texture_attach(sldata->probe_filter_fb, sldata->irradiance_rt, 0, 0);
- DRW_draw_pass(psl->probe_grid_fill);
- DRW_framebuffer_texture_detach(sldata->irradiance_rt);
-
- SWAP(GPUTexture *, sldata->irradiance_pool, sldata->irradiance_rt);
+ /* Only do one probe per frame */
+ lightprobes_refresh_planar(sldata, vedata);
+ return;
+ }
+}
- /* reattach to have a valid framebuffer. */
- DRW_framebuffer_texture_attach(sldata->probe_filter_fb, sldata->probe_pool, 0, 0);
+static void lightprobes_refresh_all_no_world(EEVEE_ViewLayerData *sldata, EEVEE_Data *vedata)
+{
+ EEVEE_PassList *psl = vedata->psl;
+ EEVEE_StorageList *stl = vedata->stl;
+ EEVEE_LightProbesInfo *pinfo = sldata->probes;
+ Object *ob;
+ const DRWContextState *draw_ctx = DRW_context_state_get();
+ RegionView3D *rv3d = draw_ctx->rv3d;
- pinfo->grid_initialized = true;
+ if (draw_ctx->evil_C != NULL) {
+ /* Only compute probes if not navigating or in playback */
+ struct wmWindowManager *wm = CTX_wm_manager(draw_ctx->evil_C);
+ if (((rv3d->rflag & RV3D_NAVIGATING) != 0) || ED_screen_animation_no_scrub(wm) != NULL) {
+ lightprobes_refresh_planar(sldata, vedata);
+ return;
}
-
- /* Reflection probes depend on diffuse lighting thus on irradiance grid,
- * so update them first. */
- while (pinfo->updated_bounce < pinfo->num_bounce) {
- pinfo->num_render_grid = pinfo->num_grid;
-
- for (int i = 1; (ob = pinfo->probes_grid_ref[i]) && (i < MAX_GRID); i++) {
- EEVEE_LightProbeEngineData *ped = EEVEE_lightprobe_data_ensure(ob);
-
- if (!ped->need_update) {
+ }
+ /* Make sure grid is initialized. */
+ lightprobes_refresh_initialize_grid(sldata, vedata);
+ /* Reflection probes depend on diffuse lighting thus on irradiance grid,
+ * so update them first. */
+ while (pinfo->updated_bounce < pinfo->num_bounce) {
+ pinfo->num_render_grid = pinfo->num_grid;
+ /* TODO(sergey): This logic can be split into smaller functions. */
+ for (int i = 1; (ob = pinfo->probes_grid_ref[i]) && (i < MAX_GRID); i++) {
+ EEVEE_LightProbeEngineData *ped = EEVEE_lightprobe_data_ensure(ob);
+ if (!ped->need_update) {
+ continue;
+ }
+ EEVEE_LightGrid *egrid = &pinfo->grid_data[i];
+ LightProbe *prb = (LightProbe *)ob->data;
+ /* Find the next cell corresponding to the current level. */
+ bool valid_cell = false;
+ int cell_id = ped->updated_cells;
+ float pos[3], grid_loc[3];
+ /* Other levels */
+ int current_stride = 1 << max_ii(0, ped->max_lvl - ped->updated_lvl);
+ int prev_stride = current_stride << 1;
+ bool do_rendering = true;
+ while (!valid_cell) {
+ cell_id = ped->updated_cells;
+ lightprobe_cell_grid_location_get(egrid, cell_id, grid_loc);
+ if (ped->updated_lvl == 0 && cell_id == 0) {
+ valid_cell = true;
+ ped->updated_cells = ped->num_cell;
continue;
}
- EEVEE_LightGrid *egrid = &pinfo->grid_data[i];
- LightProbe *prb = (LightProbe *)ob->data;
-
- /* Find the next cell corresponding to the current level. */
- bool valid_cell = false;
- int cell_id = ped->updated_cells;
- float pos[3], grid_loc[3];
-
- /* Other levels */
- int current_stride = 1 << max_ii(0, ped->max_lvl - ped->updated_lvl);
- int prev_stride = current_stride << 1;
-
- while (!valid_cell) {
- cell_id = ped->updated_cells;
- lightprobe_cell_grid_location_get(egrid, cell_id, grid_loc);
-
- if (ped->updated_lvl == 0 && cell_id == 0) {
- valid_cell = true;
- ped->updated_cells = ped->num_cell;
- continue;
- }
- else if (((((int)grid_loc[0] % current_stride) == 0) &&
- (((int)grid_loc[1] % current_stride) == 0) &&
- (((int)grid_loc[2] % current_stride) == 0)) &&
- !((((int)grid_loc[0] % prev_stride) == 0) &&
- (((int)grid_loc[1] % prev_stride) == 0) &&
- (((int)grid_loc[2] % prev_stride) == 0)))
- {
- valid_cell = true;
- }
-
- ped->updated_cells++;
-
- if (ped->updated_cells > ped->num_cell) {
- goto skip_rendering;
- }
+ else if (((((int)grid_loc[0] % current_stride) == 0) &&
+ (((int)grid_loc[1] % current_stride) == 0) &&
+ (((int)grid_loc[2] % current_stride) == 0)) &&
+ !((((int)grid_loc[0] % prev_stride) == 0) &&
+ (((int)grid_loc[1] % prev_stride) == 0) &&
+ (((int)grid_loc[2] % prev_stride) == 0)))
+ {
+ valid_cell = true;
}
-
+ ped->updated_cells++;
+ if (ped->updated_cells > ped->num_cell) {
+ do_rendering = false;
+ break;
+ }
+ }
+ if (do_rendering) {
lightprobe_cell_world_location_get(egrid, grid_loc, pos);
-
SWAP(GPUTexture *, sldata->irradiance_pool, sldata->irradiance_rt);
-
/* Temporary Remove all probes. */
int tmp_num_render_grid = pinfo->num_render_grid;
int tmp_num_render_cube = pinfo->num_render_cube;
int tmp_num_planar = pinfo->num_planar;
pinfo->num_render_cube = 0;
pinfo->num_planar = 0;
-
/* Use light from previous bounce when capturing radiance. */
if (pinfo->updated_bounce == 0) {
pinfo->num_render_grid = 0;
}
-
render_scene_to_probe(sldata, vedata, pos, prb->clipsta, prb->clipend);
diffuse_filter_probe(sldata, vedata, psl, egrid->offset + cell_id);
-
/* To see what is going on. */
SWAP(GPUTexture *, sldata->irradiance_pool, sldata->irradiance_rt);
-
/* Restore */
pinfo->num_render_grid = tmp_num_render_grid;
pinfo->num_render_cube = tmp_num_render_cube;
pinfo->num_planar = tmp_num_planar;
-
-skip_rendering:
-
- if (ped->updated_cells >= ped->num_cell) {
- ped->updated_lvl++;
- ped->updated_cells = 0;
-
- if (ped->updated_lvl > ped->max_lvl) {
- ped->need_update = false;
- }
-
- egrid->level_bias = (float)(1 << max_ii(0, ped->max_lvl - ped->updated_lvl + 1));
- DRW_uniformbuffer_update(sldata->grid_ubo, &sldata->probes->grid_data);
- }
-#if 0
- printf("Updated Grid %d : cell %d / %d, bounce %d / %d\n",
- i, ped->updated_cells, ped->num_cell, pinfo->updated_bounce + 1, pinfo->num_bounce);
-#endif
- /* Only do one probe per frame */
- DRW_viewport_request_redraw();
- /* Do not let this frame accumulate. */
- stl->effects->taa_current_sample = 1;
-
- goto update_planar;
}
-
- pinfo->updated_bounce++;
- pinfo->num_render_grid = pinfo->num_grid;
-
- if (pinfo->updated_bounce < pinfo->num_bounce) {
- /* Retag all grids to update for next bounce */
- for (int i = 1; (ob = pinfo->probes_grid_ref[i]) && (i < MAX_GRID); i++) {
- EEVEE_LightProbeEngineData *ped = EEVEE_lightprobe_data_ensure(ob);
- ped->need_update = true;
- ped->updated_cells = 0;
- ped->updated_lvl = 0;
+ if (ped->updated_cells >= ped->num_cell) {
+ ped->updated_lvl++;
+ ped->updated_cells = 0;
+ if (ped->updated_lvl > ped->max_lvl) {
+ ped->need_update = false;
}
-
- SWAP(GPUTexture *, sldata->irradiance_pool, sldata->irradiance_rt);
-
- /* Reset the next buffer so we can see the progress. */
- DRW_framebuffer_texture_detach(sldata->probe_pool);
-
- DRW_framebuffer_texture_attach(sldata->probe_filter_fb, sldata->irradiance_rt, 0, 0);
- DRW_draw_pass(psl->probe_grid_fill);
- DRW_framebuffer_texture_detach(sldata->irradiance_rt);
-
- DRW_framebuffer_texture_attach(sldata->probe_filter_fb, sldata->probe_pool, 0, 0);
- }
- }
-
- for (int i = 1; (ob = pinfo->probes_cube_ref[i]) && (i < MAX_PROBE); i++) {
- EEVEE_LightProbeEngineData *ped = EEVEE_lightprobe_data_ensure(ob);
-
- if (!ped->need_update) {
- continue;
- }
- LightProbe *prb = (LightProbe *)ob->data;
-
- render_scene_to_probe(sldata, vedata, ob->obmat[3], prb->clipsta, prb->clipend);
- glossy_filter_probe(sldata, vedata, psl, i);
-
- ped->need_update = false;
- ped->probe_id = i;
-
- if (!ped->ready_to_shade) {
- pinfo->num_render_cube++;
- ped->ready_to_shade = true;
+ egrid->level_bias = (float)(1 << max_ii(0, ped->max_lvl - ped->updated_lvl + 1));
+ DRW_uniformbuffer_update(sldata->grid_ubo, &sldata->probes->grid_data);
}
#if 0
- printf("Update Cubemap %d\n", i);
+ printf("Updated Grid %d : cell %d / %d, bounce %d / %d\n",
+ i, ped->updated_cells, ped->num_cell, pinfo->updated_bounce + 1, pinfo->num_bounce);
#endif
+ /* Only do one probe per frame */
DRW_viewport_request_redraw();
/* Do not let this frame accumulate. */
stl->effects->taa_current_sample = 1;
-
- /* Only do one probe per frame */
- goto update_planar;
+ lightprobes_refresh_planar(sldata, vedata);
+ return;
}
- }
-
-update_planar:
- for (int i = 0; (ob = pinfo->probes_planar_ref[i]) && (i < MAX_PLANAR); i++) {
- EEVEE_LightProbeEngineData *ped = EEVEE_lightprobe_data_ensure(ob);
+ pinfo->updated_bounce++;
+ pinfo->num_render_grid = pinfo->num_grid;
- if (!ped->need_update) {
- continue;
+ if (pinfo->updated_bounce < pinfo->num_bounce) {
+ /* Retag all grids to update for next bounce */
+ for (int i = 1; (ob = pinfo->probes_grid_ref[i]) && (i < MAX_GRID); i++) {
+ EEVEE_LightProbeEngineData *ped = EEVEE_lightprobe_data_ensure(ob);
+ ped->need_update = true;
+ ped->updated_cells = 0;
+ ped->updated_lvl = 0;
+ }
+ SWAP(GPUTexture *, sldata->irradiance_pool, sldata->irradiance_rt);
+ /* Reset the next buffer so we can see the progress. */
+ DRW_framebuffer_texture_detach(sldata->probe_pool);
+ DRW_framebuffer_texture_attach(sldata->probe_filter_fb, sldata->irradiance_rt, 0, 0);
+ DRW_draw_pass(psl->probe_grid_fill);
+ DRW_framebuffer_texture_detach(sldata->irradiance_rt);
+ DRW_framebuffer_texture_attach(sldata->probe_filter_fb, sldata->probe_pool, 0, 0);
}
-
- /* Temporary Remove all planar reflections (avoid lag effect). */
- int tmp_num_planar = pinfo->num_planar;
- pinfo->num_planar = 0;
-
- render_scene_to_planar(sldata, vedata, i, ped->viewmat, ped->persmat, ped->planer_eq_offset);
-
- /* Restore */
- pinfo->num_planar = tmp_num_planar;
-
- ped->need_update = false;
- ped->probe_id = i;
}
+ /* Refresh cube probe when needed. */
+ lightprobes_refresh_cube(sldata, vedata);
+}
- /* If there is at least one planar probe */
- if (pinfo->num_planar > 0 && (vedata->stl->effects->enabled_effects & EFFECT_SSR) != 0) {
- const int max_lod = 9;
- DRW_stats_group_start("Planar Probe Downsample");
- DRW_framebuffer_recursive_downsample(vedata->fbl->downsample_fb, txl->planar_pool, max_lod, &downsample_planar, vedata);
- /* For shading, save max level of the planar map */
- pinfo->lod_planar_max = (float)(max_lod);
- DRW_stats_group_end();
+void EEVEE_lightprobes_refresh(EEVEE_ViewLayerData *sldata, EEVEE_Data *vedata)
+{
+ /* Render world in priority */
+ if (e_data.update_world) {
+ lightprobes_refresh_world(sldata, vedata);
+ }
+ else if (true) { /* TODO if at least one probe needs refresh */
+ lightprobes_refresh_all_no_world(sldata, vedata);
}
}
diff --git a/source/blender/draw/engines/eevee/shaders/default_frag.glsl b/source/blender/draw/engines/eevee/shaders/default_frag.glsl
index 91746a6f082..45c5c88e763 100644
--- a/source/blender/draw/engines/eevee/shaders/default_frag.glsl
+++ b/source/blender/draw/engines/eevee/shaders/default_frag.glsl
@@ -13,7 +13,7 @@ Closure nodetree_exec(void)
vec3 out_diff, out_spec, ssr_spec;
eevee_closure_default(N, albedo, f0, 0, roughness, 1.0, out_diff, out_spec, ssr_spec);
- Closure result = Closure(out_spec + out_diff, 1.0, vec4(ssr_spec, roughness), normal_encode(normalize(viewNormal), viewCameraVec), 0);
+ Closure result = Closure(out_spec + out_diff * albedo, 1.0, vec4(ssr_spec, roughness), normal_encode(normalize(viewNormal), viewCameraVec), 0);
return result;
}
diff --git a/source/blender/draw/engines/external/external_engine.c b/source/blender/draw/engines/external/external_engine.c
index 2127dbe1f63..851d0ef9eb7 100644
--- a/source/blender/draw/engines/external/external_engine.c
+++ b/source/blender/draw/engines/external/external_engine.c
@@ -96,7 +96,7 @@ typedef struct EXTERNAL_PrivateData {
/* Functions */
-static void EXTERNAL_engine_init(void *UNUSED(vedata))
+static void external_engine_init(void *UNUSED(vedata))
{
/* Depth prepass */
if (!e_data.depth_sh) {
@@ -104,7 +104,7 @@ static void EXTERNAL_engine_init(void *UNUSED(vedata))
}
}
-static void EXTERNAL_cache_init(void *vedata)
+static void external_cache_init(void *vedata)
{
EXTERNAL_PassList *psl = ((EXTERNAL_Data *)vedata)->psl;
EXTERNAL_StorageList *stl = ((EXTERNAL_Data *)vedata)->stl;
@@ -121,7 +121,7 @@ static void EXTERNAL_cache_init(void *vedata)
}
}
-static void EXTERNAL_cache_populate(void *vedata, Object *ob)
+static void external_cache_populate(void *vedata, Object *ob)
{
EXTERNAL_StorageList *stl = ((EXTERNAL_Data *)vedata)->stl;
@@ -135,11 +135,11 @@ static void EXTERNAL_cache_populate(void *vedata, Object *ob)
}
}
-static void EXTERNAL_cache_finish(void *UNUSED(vedata))
+static void external_cache_finish(void *UNUSED(vedata))
{
}
-static void external_draw_scene(void *vedata)
+static void external_draw_scene_do(void *vedata)
{
const DRWContextState *draw_ctx = DRW_context_state_get();
Scene *scene = draw_ctx->scene;
@@ -184,7 +184,7 @@ static void external_draw_scene(void *vedata)
}
}
-static void EXTERNAL_draw_scene(void *vedata)
+static void external_draw_scene(void *vedata)
{
const DRWContextState *draw_ctx = DRW_context_state_get();
EXTERNAL_PassList *psl = ((EXTERNAL_Data *)vedata)->psl;
@@ -193,29 +193,29 @@ static void EXTERNAL_draw_scene(void *vedata)
* OpenGL render is used for quick preview (thumbnails or sequencer preview)
* where using the rendering engine to preview doesn't make so much sense. */
if (draw_ctx->evil_C) {
- external_draw_scene(vedata);
+ external_draw_scene_do(vedata);
}
DRW_draw_pass(psl->depth_pass);
}
-static void EXTERNAL_engine_free(void)
+static void external_engine_free(void)
{
/* All shaders are builtin. */
}
-static const DrawEngineDataSize EXTERNAL_data_size = DRW_VIEWPORT_DATA_SIZE(EXTERNAL_Data);
+static const DrawEngineDataSize external_data_size = DRW_VIEWPORT_DATA_SIZE(EXTERNAL_Data);
DrawEngineType draw_engine_external_type = {
NULL, NULL,
N_("External"),
- &EXTERNAL_data_size,
- &EXTERNAL_engine_init,
- &EXTERNAL_engine_free,
- &EXTERNAL_cache_init,
- &EXTERNAL_cache_populate,
- &EXTERNAL_cache_finish,
+ &external_data_size,
+ &external_engine_init,
+ &external_engine_free,
+ &external_cache_init,
+ &external_cache_populate,
+ &external_cache_finish,
NULL,
- &EXTERNAL_draw_scene,
+ &external_draw_scene,
NULL,
NULL,
};
diff --git a/source/blender/draw/intern/draw_armature.c b/source/blender/draw/intern/draw_armature.c
index 58cf3aaf6cc..c7a88f7689e 100644
--- a/source/blender/draw/intern/draw_armature.c
+++ b/source/blender/draw/intern/draw_armature.c
@@ -98,7 +98,7 @@ static struct {
* \{ */
/* Octahedral */
-static void DRW_shgroup_bone_octahedral_solid(const float (*bone_mat)[4], const float color[4])
+static void drw_shgroup_bone_octahedral_solid(const float (*bone_mat)[4], const float color[4])
{
if (g_data.bone_octahedral_solid == NULL) {
struct Gwn_Batch *geom = DRW_cache_bone_octahedral_get();
@@ -108,7 +108,7 @@ static void DRW_shgroup_bone_octahedral_solid(const float (*bone_mat)[4], const
DRW_shgroup_call_dynamic_add(g_data.bone_octahedral_solid, bone_mat, color);
}
-static void DRW_shgroup_bone_octahedral_wire(const float (*bone_mat)[4], const float color[4])
+static void drw_shgroup_bone_octahedral_wire(const float (*bone_mat)[4], const float color[4])
{
if (g_data.bone_octahedral_wire == NULL) {
struct Gwn_Batch *geom = DRW_cache_bone_octahedral_wire_outline_get();
@@ -119,7 +119,7 @@ static void DRW_shgroup_bone_octahedral_wire(const float (*bone_mat)[4], const f
}
/* Box / B-Bone */
-static void DRW_shgroup_bone_box_solid(const float (*bone_mat)[4], const float color[4])
+static void drw_shgroup_bone_box_solid(const float (*bone_mat)[4], const float color[4])
{
if (g_data.bone_box_solid == NULL) {
struct Gwn_Batch *geom = DRW_cache_bone_box_get();
@@ -129,7 +129,7 @@ static void DRW_shgroup_bone_box_solid(const float (*bone_mat)[4], const float c
DRW_shgroup_call_dynamic_add(g_data.bone_box_solid, bone_mat, color);
}
-static void DRW_shgroup_bone_box_wire(const float (*bone_mat)[4], const float color[4])
+static void drw_shgroup_bone_box_wire(const float (*bone_mat)[4], const float color[4])
{
if (g_data.bone_box_wire == NULL) {
struct Gwn_Batch *geom = DRW_cache_bone_box_wire_outline_get();
@@ -140,7 +140,7 @@ static void DRW_shgroup_bone_box_wire(const float (*bone_mat)[4], const float co
}
/* Wire */
-static void DRW_shgroup_bone_wire_wire(const float (*bone_mat)[4], const float color[4])
+static void drw_shgroup_bone_wire_wire(const float (*bone_mat)[4], const float color[4])
{
if (g_data.bone_wire_wire == NULL) {
struct Gwn_Batch *geom = DRW_cache_bone_wire_wire_outline_get();
@@ -151,7 +151,7 @@ static void DRW_shgroup_bone_wire_wire(const float (*bone_mat)[4], const float c
}
/* Envelope */
-static void DRW_shgroup_bone_envelope_distance(
+static void drw_shgroup_bone_envelope_distance(
const float (*bone_mat)[4], const float color[4],
const float *radius_head, const float *radius_tail, const float *distance)
{
@@ -166,7 +166,7 @@ static void DRW_shgroup_bone_envelope_distance(
}
}
-static void DRW_shgroup_bone_envelope_solid(
+static void drw_shgroup_bone_envelope_solid(
const float (*bone_mat)[4], const float color[4],
const float *radius_head, const float *radius_tail)
{
@@ -178,7 +178,7 @@ static void DRW_shgroup_bone_envelope_solid(
DRW_shgroup_call_dynamic_add(g_data.bone_envelope_solid, bone_mat, color, radius_head, radius_tail);
}
-static void DRW_shgroup_bone_envelope_wire(
+static void drw_shgroup_bone_envelope_wire(
const float (*bone_mat)[4], const float color[4],
const float *radius_head, const float *radius_tail, const float *distance)
{
@@ -190,7 +190,7 @@ static void DRW_shgroup_bone_envelope_wire(
DRW_shgroup_call_dynamic_add(g_data.bone_envelope_wire, bone_mat, color, radius_head, radius_tail, distance);
}
-static void DRW_shgroup_bone_envelope_head_wire(
+static void drw_shgroup_bone_envelope_head_wire(
const float (*bone_mat)[4], const float color[4],
const float *radius_head, const float *radius_tail, const float *distance)
{
@@ -204,7 +204,7 @@ static void DRW_shgroup_bone_envelope_head_wire(
/* Custom (geometry) */
-static void DRW_shgroup_bone_custom_solid(const float (*bone_mat)[4], const float color[4], Object *custom)
+static void drw_shgroup_bone_custom_solid(const float (*bone_mat)[4], const float color[4], Object *custom)
{
/* grr, not re-using instances! */
struct Gwn_Batch *geom = DRW_cache_object_surface_get(custom);
@@ -214,7 +214,7 @@ static void DRW_shgroup_bone_custom_solid(const float (*bone_mat)[4], const floa
}
}
-static void DRW_shgroup_bone_custom_wire(const float (*bone_mat)[4], const float color[4], Object *custom)
+static void drw_shgroup_bone_custom_wire(const float (*bone_mat)[4], const float color[4], Object *custom)
{
/* grr, not re-using instances! */
struct Gwn_Batch *geom = DRW_cache_object_wire_outline_get(custom);
@@ -225,7 +225,7 @@ static void DRW_shgroup_bone_custom_wire(const float (*bone_mat)[4], const float
}
/* Head and tail sphere */
-static void DRW_shgroup_bone_point_solid(const float (*bone_mat)[4], const float color[4])
+static void drw_shgroup_bone_point_solid(const float (*bone_mat)[4], const float color[4])
{
if (g_data.bone_point_solid == NULL) {
struct Gwn_Batch *geom = DRW_cache_bone_point_get();
@@ -235,7 +235,7 @@ static void DRW_shgroup_bone_point_solid(const float (*bone_mat)[4], const float
DRW_shgroup_call_dynamic_add(g_data.bone_point_solid, bone_mat, color);
}
-static void DRW_shgroup_bone_point_wire(const float (*bone_mat)[4], const float color[4])
+static void drw_shgroup_bone_point_wire(const float (*bone_mat)[4], const float color[4])
{
if (g_data.bone_point_wire == NULL) {
struct Gwn_Batch *geom = DRW_cache_bone_point_wire_outline_get();
@@ -246,7 +246,7 @@ static void DRW_shgroup_bone_point_wire(const float (*bone_mat)[4], const float
}
/* Axes */
-static void DRW_shgroup_bone_axes(const float (*bone_mat)[4], const float color[4])
+static void drw_shgroup_bone_axes(const float (*bone_mat)[4], const float color[4])
{
if (g_data.bone_axes == NULL) {
struct Gwn_Batch *geom = DRW_cache_bone_arrows_get();
@@ -257,7 +257,7 @@ static void DRW_shgroup_bone_axes(const float (*bone_mat)[4], const float color[
}
/* Relationship lines */
-static void UNUSED_FUNCTION(DRW_shgroup_bone_relationship_lines)(const float head[3], const float tail[3])
+static void UNUSED_FUNCTION(drw_shgroup_bone_relationship_lines)(const float head[3], const float tail[3])
{
DRW_shgroup_call_dynamic_add(g_data.relationship_lines, head);
DRW_shgroup_call_dynamic_add(g_data.relationship_lines, tail);
@@ -918,7 +918,7 @@ static void draw_axes(EditBone *eBone, bPoseChannel *pchan)
const float *col = (g_theme.const_color) ? g_theme.const_color :
(BONE_FLAG(eBone, pchan) & BONE_SELECTED) ? g_theme.text_hi_color : g_theme.text_color;
- DRW_shgroup_bone_axes(BONE_VAR(eBone, pchan, disp_mat), col);
+ drw_shgroup_bone_axes(BONE_VAR(eBone, pchan, disp_mat), col);
}
static void draw_points(
@@ -971,14 +971,14 @@ static void draw_points(
if (eBone) {
if (!((eBone->parent) && !EBONE_VISIBLE(arm, eBone->parent))) {
if (is_envelope_draw) {
- DRW_shgroup_bone_envelope_solid(eBone->disp_mat, col_solid_root,
+ drw_shgroup_bone_envelope_solid(eBone->disp_mat, col_solid_root,
&eBone->rad_head, &envelope_ignore);
- DRW_shgroup_bone_envelope_head_wire(eBone->disp_mat, col_wire_root,
+ drw_shgroup_bone_envelope_head_wire(eBone->disp_mat, col_wire_root,
&eBone->rad_head, &envelope_ignore, &envelope_ignore);
}
else {
- DRW_shgroup_bone_point_solid(eBone->disp_mat, col_solid_root);
- DRW_shgroup_bone_point_wire(eBone->disp_mat, col_wire_root);
+ drw_shgroup_bone_point_solid(eBone->disp_mat, col_solid_root);
+ drw_shgroup_bone_point_wire(eBone->disp_mat, col_wire_root);
}
}
}
@@ -986,14 +986,14 @@ static void draw_points(
Bone *bone = pchan->bone;
if (!((bone->parent) && (bone->parent->flag & (BONE_HIDDEN_P | BONE_HIDDEN_PG)))) {
if (is_envelope_draw) {
- DRW_shgroup_bone_envelope_solid(pchan->disp_mat, col_solid_root,
+ drw_shgroup_bone_envelope_solid(pchan->disp_mat, col_solid_root,
&bone->rad_head, &envelope_ignore);
- DRW_shgroup_bone_envelope_head_wire(pchan->disp_mat, col_wire_root,
+ drw_shgroup_bone_envelope_head_wire(pchan->disp_mat, col_wire_root,
&bone->rad_head, &envelope_ignore, &envelope_ignore);
}
else {
- DRW_shgroup_bone_point_solid(pchan->disp_mat, col_solid_root);
- DRW_shgroup_bone_point_wire(pchan->disp_mat, col_wire_root);
+ drw_shgroup_bone_point_solid(pchan->disp_mat, col_solid_root);
+ drw_shgroup_bone_point_wire(pchan->disp_mat, col_wire_root);
}
}
}
@@ -1006,14 +1006,14 @@ static void draw_points(
if (is_envelope_draw) {
const float *rad_tail = eBone ? &eBone->rad_tail : &pchan->bone->rad_tail;
- DRW_shgroup_bone_envelope_solid(
+ drw_shgroup_bone_envelope_solid(
BONE_VAR(eBone, pchan, disp_mat), col_solid_tail, &envelope_ignore, rad_tail);
- DRW_shgroup_bone_envelope_head_wire(
+ drw_shgroup_bone_envelope_head_wire(
BONE_VAR(eBone, pchan, disp_mat), col_wire_tail, &envelope_ignore, rad_tail, &envelope_ignore);
}
else {
- DRW_shgroup_bone_point_solid(BONE_VAR(eBone, pchan, disp_tail_mat), col_solid_tail);
- DRW_shgroup_bone_point_wire(BONE_VAR(eBone, pchan, disp_tail_mat), col_wire_tail);
+ drw_shgroup_bone_point_solid(BONE_VAR(eBone, pchan, disp_tail_mat), col_solid_tail);
+ drw_shgroup_bone_point_wire(BONE_VAR(eBone, pchan, disp_tail_mat), col_wire_tail);
}
if (select_id != -1) {
@@ -1042,8 +1042,8 @@ static void draw_bone_custom_shape(
DRW_select_load_id(select_id | BONESEL_BONE);
}
- DRW_shgroup_bone_custom_solid(disp_mat, col_solid, pchan->custom);
- DRW_shgroup_bone_custom_wire(disp_mat, col_wire, pchan->custom);
+ drw_shgroup_bone_custom_solid(disp_mat, col_solid, pchan->custom);
+ drw_shgroup_bone_custom_wire(disp_mat, col_wire, pchan->custom);
if (select_id != -1) {
DRW_select_load_id(-1);
@@ -1075,15 +1075,15 @@ static void draw_bone_envelope(
if ((boneflag & BONE_NO_DEFORM) == 0 &&
((boneflag & BONE_SELECTED) || (eBone && (boneflag & (BONE_ROOTSEL | BONE_TIPSEL)))))
{
- DRW_shgroup_bone_envelope_distance(BONE_VAR(eBone, pchan, disp_mat), col_white, rad_head, rad_tail, distance);
+ drw_shgroup_bone_envelope_distance(BONE_VAR(eBone, pchan, disp_mat), col_white, rad_head, rad_tail, distance);
}
if (select_id != -1) {
DRW_select_load_id(select_id | BONESEL_BONE);
}
- DRW_shgroup_bone_envelope_solid(BONE_VAR(eBone, pchan, disp_mat), col_solid, rad_head, rad_tail);
- DRW_shgroup_bone_envelope_wire(BONE_VAR(eBone, pchan, disp_mat), col_wire, rad_head, rad_tail, distance);
+ drw_shgroup_bone_envelope_solid(BONE_VAR(eBone, pchan, disp_mat), col_solid, rad_head, rad_tail);
+ drw_shgroup_bone_envelope_wire(BONE_VAR(eBone, pchan, disp_mat), col_wire, rad_head, rad_tail, distance);
if (select_id != -1) {
DRW_select_load_id(-1);
@@ -1116,12 +1116,12 @@ static void draw_bone_wire(
BLI_assert(bbones_mat != NULL);
for (int i = pchan->bone->segments; i--; bbones_mat++) {
- DRW_shgroup_bone_wire_wire(bbones_mat->mat, col_wire);
+ drw_shgroup_bone_wire_wire(bbones_mat->mat, col_wire);
}
}
else if (eBone) {
for (int i = 0; i < eBone->segments; i++) {
- DRW_shgroup_bone_wire_wire(eBone->disp_bbone_mat[i], col_wire);
+ drw_shgroup_bone_wire_wire(eBone->disp_bbone_mat[i], col_wire);
}
}
@@ -1151,14 +1151,14 @@ static void draw_bone_box(
BLI_assert(bbones_mat != NULL);
for (int i = pchan->bone->segments; i--; bbones_mat++) {
- DRW_shgroup_bone_box_solid(bbones_mat->mat, col_solid);
- DRW_shgroup_bone_box_wire(bbones_mat->mat, col_wire);
+ drw_shgroup_bone_box_solid(bbones_mat->mat, col_solid);
+ drw_shgroup_bone_box_wire(bbones_mat->mat, col_wire);
}
}
else if (eBone) {
for (int i = 0; i < eBone->segments; i++) {
- DRW_shgroup_bone_box_solid(eBone->disp_bbone_mat[i], col_solid);
- DRW_shgroup_bone_box_wire(eBone->disp_bbone_mat[i], col_wire);
+ drw_shgroup_bone_box_solid(eBone->disp_bbone_mat[i], col_solid);
+ drw_shgroup_bone_box_wire(eBone->disp_bbone_mat[i], col_wire);
}
}
@@ -1183,8 +1183,8 @@ static void draw_bone_octahedral(
DRW_select_load_id(select_id | BONESEL_BONE);
}
- DRW_shgroup_bone_octahedral_solid(BONE_VAR(eBone, pchan, disp_mat), col_solid);
- DRW_shgroup_bone_octahedral_wire(BONE_VAR(eBone, pchan, disp_mat), col_wire);
+ drw_shgroup_bone_octahedral_solid(BONE_VAR(eBone, pchan, disp_mat), col_solid);
+ drw_shgroup_bone_octahedral_wire(BONE_VAR(eBone, pchan, disp_mat), col_wire);
if (select_id != -1) {
DRW_select_load_id(-1);
@@ -1397,7 +1397,7 @@ static void draw_armature_pose(Object *ob, const float const_color[4])
/**
* This function set the object space to use for all subsequent `DRW_shgroup_bone_*` calls.
*/
-static void DRW_shgroup_armature(
+static void drw_shgroup_armature(
Object *ob, DRWPass *pass_bone_solid, DRWPass *pass_bone_wire, DRWPass *pass_bone_envelope,
DRWShadingGroup *shgrp_relationship_lines)
{
@@ -1419,7 +1419,7 @@ void DRW_shgroup_armature_object(
float *color;
DRW_object_wire_theme_get(ob, view_layer, &color);
- DRW_shgroup_armature(ob, pass_bone_solid, pass_bone_wire, NULL, shgrp_relationship_lines);
+ drw_shgroup_armature(ob, pass_bone_solid, pass_bone_wire, NULL, shgrp_relationship_lines);
draw_armature_pose(ob, color);
}
@@ -1427,7 +1427,7 @@ void DRW_shgroup_armature_pose(
Object *ob, DRWPass *pass_bone_solid, DRWPass *pass_bone_wire, DRWPass *pass_bone_envelope,
DRWShadingGroup *shgrp_relationship_lines)
{
- DRW_shgroup_armature(ob, pass_bone_solid, pass_bone_wire, pass_bone_envelope, shgrp_relationship_lines);
+ drw_shgroup_armature(ob, pass_bone_solid, pass_bone_wire, pass_bone_envelope, shgrp_relationship_lines);
draw_armature_pose(ob, NULL);
}
@@ -1435,7 +1435,7 @@ void DRW_shgroup_armature_edit(
Object *ob, DRWPass *pass_bone_solid, DRWPass *pass_bone_wire, DRWPass *pass_bone_envelope,
DRWShadingGroup *shgrp_relationship_lines)
{
- DRW_shgroup_armature(ob, pass_bone_solid, pass_bone_wire, pass_bone_envelope, shgrp_relationship_lines);
+ drw_shgroup_armature(ob, pass_bone_solid, pass_bone_wire, pass_bone_envelope, shgrp_relationship_lines);
draw_armature_edit(ob);
}
diff --git a/source/blender/draw/intern/draw_manager.c b/source/blender/draw/intern/draw_manager.c
index 806c8cce4d5..57dd2e9cf5d 100644
--- a/source/blender/draw/intern/draw_manager.c
+++ b/source/blender/draw/intern/draw_manager.c
@@ -150,7 +150,7 @@ extern char datatoc_gpu_shader_3D_vert_glsl[];
extern char datatoc_gpu_shader_fullscreen_vert_glsl[];
/* Prototypes. */
-static void DRW_engines_enable_external(void);
+static void drw_engines_enable_external(void);
/* Structures */
typedef enum {
@@ -658,7 +658,7 @@ void DRW_shader_free(GPUShader *shader)
/** \name Interface (DRW_interface)
* \{ */
-static void DRW_interface_create(DRWInterface *interface, GPUShader *shader)
+static void drw_interface_create(DRWInterface *interface, GPUShader *shader)
{
interface->model = GPU_shader_get_builtin_uniform(shader, GWN_UNIFORM_MODEL);
interface->modelinverse = GPU_shader_get_builtin_uniform(shader, GWN_UNIFORM_MODEL_INV);
@@ -691,7 +691,7 @@ static void DRW_interface_create(DRWInterface *interface, GPUShader *shader)
}
-static void DRW_interface_uniform(DRWShadingGroup *shgroup, const char *name,
+static void drw_interface_uniform(DRWShadingGroup *shgroup, const char *name,
DRWUniformType type, const void *value, int length, int arraysize)
{
int location;
@@ -725,7 +725,7 @@ static void DRW_interface_uniform(DRWShadingGroup *shgroup, const char *name,
shgroup->interface.uniforms = uni;
}
-static void DRW_interface_attrib(DRWShadingGroup *shgroup, const char *name, DRWAttribType type, int size, bool dummy)
+static void drw_interface_attrib(DRWShadingGroup *shgroup, const char *name, DRWAttribType type, int size, bool dummy)
{
DRWAttrib *attrib = BLI_mempool_alloc(DST.vmempool->attribs);
GLuint program = GPU_shader_get_program(shgroup->shader);
@@ -788,7 +788,7 @@ DRWShadingGroup *DRW_shgroup_create(struct GPUShader *shader, DRWPass *pass)
pass->shgroups_last = shgroup;
shgroup->next = NULL;
- DRW_interface_create(&shgroup->interface, shader);
+ drw_interface_create(&shgroup->interface, shader);
shgroup->type = DRW_SHG_NORMAL;
shgroup->shader = shader;
@@ -900,7 +900,7 @@ DRWShadingGroup *DRW_shgroup_material_empty_tri_batch_create(
if (shgroup) {
shgroup->type = DRW_SHG_TRIANGLE_BATCH;
shgroup->interface.instance_count = size * 3;
- DRW_interface_attrib(shgroup, "dummy", DRW_ATTRIB_FLOAT, 1, true);
+ drw_interface_attrib(shgroup, "dummy", DRW_ATTRIB_FLOAT, 1, true);
}
return shgroup;
@@ -945,7 +945,7 @@ DRWShadingGroup *DRW_shgroup_empty_tri_batch_create(struct GPUShader *shader, DR
shgroup->type = DRW_SHG_TRIANGLE_BATCH;
shgroup->interface.instance_count = size * 3;
- DRW_interface_attrib(shgroup, "dummy", DRW_ATTRIB_FLOAT, 1, true);
+ drw_interface_attrib(shgroup, "dummy", DRW_ATTRIB_FLOAT, 1, true);
return shgroup;
}
@@ -1143,82 +1143,82 @@ void DRW_shgroup_stencil_mask(DRWShadingGroup *shgroup, unsigned int mask)
void DRW_shgroup_attrib_float(DRWShadingGroup *shgroup, const char *name, int size)
{
- DRW_interface_attrib(shgroup, name, DRW_ATTRIB_FLOAT, size, false);
+ drw_interface_attrib(shgroup, name, DRW_ATTRIB_FLOAT, size, false);
}
void DRW_shgroup_uniform_texture(DRWShadingGroup *shgroup, const char *name, const GPUTexture *tex)
{
- DRW_interface_uniform(shgroup, name, DRW_UNIFORM_TEXTURE, tex, 0, 1);
+ drw_interface_uniform(shgroup, name, DRW_UNIFORM_TEXTURE, tex, 0, 1);
}
void DRW_shgroup_uniform_block(DRWShadingGroup *shgroup, const char *name, const GPUUniformBuffer *ubo)
{
- DRW_interface_uniform(shgroup, name, DRW_UNIFORM_BLOCK, ubo, 0, 1);
+ drw_interface_uniform(shgroup, name, DRW_UNIFORM_BLOCK, ubo, 0, 1);
}
void DRW_shgroup_uniform_buffer(DRWShadingGroup *shgroup, const char *name, GPUTexture **tex)
{
- DRW_interface_uniform(shgroup, name, DRW_UNIFORM_BUFFER, tex, 0, 1);
+ drw_interface_uniform(shgroup, name, DRW_UNIFORM_BUFFER, tex, 0, 1);
}
void DRW_shgroup_uniform_bool(DRWShadingGroup *shgroup, const char *name, const bool *value, int arraysize)
{
- DRW_interface_uniform(shgroup, name, DRW_UNIFORM_BOOL, value, 1, arraysize);
+ drw_interface_uniform(shgroup, name, DRW_UNIFORM_BOOL, value, 1, arraysize);
}
void DRW_shgroup_uniform_float(DRWShadingGroup *shgroup, const char *name, const float *value, int arraysize)
{
- DRW_interface_uniform(shgroup, name, DRW_UNIFORM_FLOAT, value, 1, arraysize);
+ drw_interface_uniform(shgroup, name, DRW_UNIFORM_FLOAT, value, 1, arraysize);
}
void DRW_shgroup_uniform_vec2(DRWShadingGroup *shgroup, const char *name, const float *value, int arraysize)
{
- DRW_interface_uniform(shgroup, name, DRW_UNIFORM_FLOAT, value, 2, arraysize);
+ drw_interface_uniform(shgroup, name, DRW_UNIFORM_FLOAT, value, 2, arraysize);
}
void DRW_shgroup_uniform_vec3(DRWShadingGroup *shgroup, const char *name, const float *value, int arraysize)
{
- DRW_interface_uniform(shgroup, name, DRW_UNIFORM_FLOAT, value, 3, arraysize);
+ drw_interface_uniform(shgroup, name, DRW_UNIFORM_FLOAT, value, 3, arraysize);
}
void DRW_shgroup_uniform_vec4(DRWShadingGroup *shgroup, const char *name, const float *value, int arraysize)
{
- DRW_interface_uniform(shgroup, name, DRW_UNIFORM_FLOAT, value, 4, arraysize);
+ drw_interface_uniform(shgroup, name, DRW_UNIFORM_FLOAT, value, 4, arraysize);
}
void DRW_shgroup_uniform_short_to_int(DRWShadingGroup *shgroup, const char *name, const short *value, int arraysize)
{
- DRW_interface_uniform(shgroup, name, DRW_UNIFORM_SHORT_TO_INT, value, 1, arraysize);
+ drw_interface_uniform(shgroup, name, DRW_UNIFORM_SHORT_TO_INT, value, 1, arraysize);
}
void DRW_shgroup_uniform_short_to_float(DRWShadingGroup *shgroup, const char *name, const short *value, int arraysize)
{
- DRW_interface_uniform(shgroup, name, DRW_UNIFORM_SHORT_TO_FLOAT, value, 1, arraysize);
+ drw_interface_uniform(shgroup, name, DRW_UNIFORM_SHORT_TO_FLOAT, value, 1, arraysize);
}
void DRW_shgroup_uniform_int(DRWShadingGroup *shgroup, const char *name, const int *value, int arraysize)
{
- DRW_interface_uniform(shgroup, name, DRW_UNIFORM_INT, value, 1, arraysize);
+ drw_interface_uniform(shgroup, name, DRW_UNIFORM_INT, value, 1, arraysize);
}
void DRW_shgroup_uniform_ivec2(DRWShadingGroup *shgroup, const char *name, const int *value, int arraysize)
{
- DRW_interface_uniform(shgroup, name, DRW_UNIFORM_INT, value, 2, arraysize);
+ drw_interface_uniform(shgroup, name, DRW_UNIFORM_INT, value, 2, arraysize);
}
void DRW_shgroup_uniform_ivec3(DRWShadingGroup *shgroup, const char *name, const int *value, int arraysize)
{
- DRW_interface_uniform(shgroup, name, DRW_UNIFORM_INT, value, 3, arraysize);
+ drw_interface_uniform(shgroup, name, DRW_UNIFORM_INT, value, 3, arraysize);
}
void DRW_shgroup_uniform_mat3(DRWShadingGroup *shgroup, const char *name, const float *value)
{
- DRW_interface_uniform(shgroup, name, DRW_UNIFORM_MAT3, value, 9, 1);
+ drw_interface_uniform(shgroup, name, DRW_UNIFORM_MAT3, value, 9, 1);
}
void DRW_shgroup_uniform_mat4(DRWShadingGroup *shgroup, const char *name, const float *value)
{
- DRW_interface_uniform(shgroup, name, DRW_UNIFORM_MAT4, value, 16, 1);
+ drw_interface_uniform(shgroup, name, DRW_UNIFORM_MAT4, value, 16, 1);
}
/* Creates a VBO containing OGL primitives for all DRWCallDynamic */
@@ -1462,7 +1462,7 @@ void DRW_pass_sort_shgroup_z(DRWPass *pass)
/** \name Draw (DRW_draw)
* \{ */
-static void DRW_state_set(DRWState state)
+static void drw_state_set(DRWState state)
{
if (DST.state == state) {
return;
@@ -1711,7 +1711,7 @@ static void DRW_state_set(DRWState state)
DST.state = state;
}
-static void DRW_stencil_set(unsigned int mask)
+static void drw_stencil_set(unsigned int mask)
{
if (DST.stencil_mask != mask) {
/* Stencil Write */
@@ -1954,8 +1954,8 @@ static void draw_shgroup(DRWShadingGroup *shgroup, DRWState pass_state)
release_texture_slots();
release_ubo_slots();
- DRW_state_set((pass_state & shgroup->state_extra_disable) | shgroup->state_extra);
- DRW_stencil_set(shgroup->stencil_mask);
+ drw_state_set((pass_state & shgroup->state_extra_disable) | shgroup->state_extra);
+ drw_stencil_set(shgroup->stencil_mask);
/* Binding Uniform */
/* Don't check anything, Interface should already contain the least uniform as possible */
@@ -2076,12 +2076,12 @@ static void draw_shgroup(DRWShadingGroup *shgroup, DRWState pass_state)
DRW_state_reset();
}
-static void DRW_draw_pass_ex(DRWPass *pass, DRWShadingGroup *start_group, DRWShadingGroup *end_group)
+static void drw_draw_pass_ex(DRWPass *pass, DRWShadingGroup *start_group, DRWShadingGroup *end_group)
{
/* Start fresh */
DST.shader = NULL;
- DRW_state_set(pass->state);
+ drw_state_set(pass->state);
DRW_stats_query_start(pass->name);
@@ -2111,13 +2111,13 @@ static void DRW_draw_pass_ex(DRWPass *pass, DRWShadingGroup *start_group, DRWSha
void DRW_draw_pass(DRWPass *pass)
{
- DRW_draw_pass_ex(pass, pass->shgroups, pass->shgroups_last);
+ drw_draw_pass_ex(pass, pass->shgroups, pass->shgroups_last);
}
/* Draw only a subset of shgroups. Used in special situations as grease pencil strokes */
void DRW_draw_pass_subset(DRWPass *pass, DRWShadingGroup *start_group, DRWShadingGroup *end_group)
{
- DRW_draw_pass_ex(pass, start_group, end_group);
+ drw_draw_pass_ex(pass, start_group, end_group);
}
void DRW_draw_callbacks_pre_scene(void)
@@ -2140,7 +2140,7 @@ void DRW_draw_callbacks_post_scene(void)
void DRW_state_reset_ex(DRWState state)
{
DST.state = ~state;
- DRW_state_set(state);
+ drw_state_set(state);
}
void DRW_state_reset(void)
@@ -2428,7 +2428,7 @@ void DRW_framebuffer_viewport_size(struct GPUFrameBuffer *UNUSED(fb_read), int x
/* Use color management profile to draw texture to framebuffer */
void DRW_transform_to_display(GPUTexture *tex)
{
- DRW_state_set(DRW_STATE_WRITE_COLOR);
+ drw_state_set(DRW_STATE_WRITE_COLOR);
Gwn_VertFormat *vert_format = immVertexFormat();
unsigned int pos = GWN_vertformat_attr_add(vert_format, "pos", GWN_COMP_F32, 2, GWN_FETCH_FLOAT);
@@ -2534,7 +2534,7 @@ const float *DRW_viewport_pixelsize_get(void)
return &DST.pixsize;
}
-static void DRW_viewport_cache_resize(void)
+static void drw_viewport_cache_resize(void)
{
/* Release the memiter before clearing the mempools that references them */
GPU_viewport_cache_release(DST.viewport);
@@ -2554,7 +2554,7 @@ static void DRW_viewport_cache_resize(void)
* This is because a cache uniform only store reference
* to its value. And we don't want to invalidate the cache
* if this value change per viewport */
-static void DRW_viewport_var_init(void)
+static void drw_viewport_var_init(void)
{
RegionView3D *rv3d = DST.draw_ctx.rv3d;
@@ -2793,7 +2793,7 @@ void DRW_lamp_engine_data_free(LampEngineData *led)
/** \name Rendering (DRW_engines)
* \{ */
-static void DRW_engines_init(void)
+static void drw_engines_init(void)
{
for (LinkData *link = DST.enabled_engines.first; link; link = link->next) {
DrawEngineType *engine = link->data;
@@ -2808,7 +2808,7 @@ static void DRW_engines_init(void)
}
}
-static void DRW_engines_cache_init(void)
+static void drw_engines_cache_init(void)
{
for (LinkData *link = DST.enabled_engines.first; link; link = link->next) {
DrawEngineType *engine = link->data;
@@ -2828,7 +2828,7 @@ static void DRW_engines_cache_init(void)
}
}
-static void DRW_engines_cache_populate(Object *ob)
+static void drw_engines_cache_populate(Object *ob)
{
for (LinkData *link = DST.enabled_engines.first; link; link = link->next) {
DrawEngineType *engine = link->data;
@@ -2840,7 +2840,7 @@ static void DRW_engines_cache_populate(Object *ob)
}
}
-static void DRW_engines_cache_finish(void)
+static void drw_engines_cache_finish(void)
{
for (LinkData *link = DST.enabled_engines.first; link; link = link->next) {
DrawEngineType *engine = link->data;
@@ -2852,7 +2852,7 @@ static void DRW_engines_cache_finish(void)
}
}
-static void DRW_engines_draw_background(void)
+static void drw_engines_draw_background(void)
{
for (LinkData *link = DST.enabled_engines.first; link; link = link->next) {
DrawEngineType *engine = link->data;
@@ -2874,7 +2874,7 @@ static void DRW_engines_draw_background(void)
DRW_draw_background();
}
-static void DRW_engines_draw_scene(void)
+static void drw_engines_draw_scene(void)
{
for (LinkData *link = DST.enabled_engines.first; link; link = link->next) {
DrawEngineType *engine = link->data;
@@ -2891,7 +2891,7 @@ static void DRW_engines_draw_scene(void)
}
}
-static void DRW_engines_draw_text(void)
+static void drw_engines_draw_text(void)
{
for (LinkData *link = DST.enabled_engines.first; link; link = link->next) {
DrawEngineType *engine = link->data;
@@ -2998,7 +2998,7 @@ static void use_drw_engine(DrawEngineType *engine)
/* TODO revisit this when proper layering is implemented */
/* Gather all draw engines needed and store them in DST.enabled_engines
* That also define the rendering order of engines */
-static void DRW_engines_enable_from_engine(RenderEngineType *engine_type)
+static void drw_engines_enable_from_engine(RenderEngineType *engine_type)
{
/* TODO layers */
if (engine_type->draw_engine != NULL) {
@@ -3006,16 +3006,16 @@ static void DRW_engines_enable_from_engine(RenderEngineType *engine_type)
}
if ((engine_type->flag & RE_INTERNAL) == 0) {
- DRW_engines_enable_external();
+ drw_engines_enable_external();
}
}
-static void DRW_engines_enable_from_object_mode(void)
+static void drw_engines_enable_from_object_mode(void)
{
use_drw_engine(&draw_engine_object_type);
}
-static void DRW_engines_enable_from_mode(int mode)
+static void drw_engines_enable_from_mode(int mode)
{
switch (mode) {
case CTX_MODE_EDIT_MESH:
@@ -3069,7 +3069,7 @@ static void DRW_engines_enable_from_mode(int mode)
/**
* Use for select and depth-drawing.
*/
-static void DRW_engines_enable_basic(void)
+static void drw_engines_enable_basic(void)
{
use_drw_engine(DRW_engine_viewport_basic_type.draw_engine);
}
@@ -3077,25 +3077,25 @@ static void DRW_engines_enable_basic(void)
/**
* Use for external render engines.
*/
-static void DRW_engines_enable_external(void)
+static void drw_engines_enable_external(void)
{
use_drw_engine(DRW_engine_viewport_external_type.draw_engine);
}
-static void DRW_engines_enable(const Scene *scene, ViewLayer *view_layer, RenderEngineType *engine_type)
+static void drw_engines_enable(const Scene *scene, ViewLayer *view_layer, RenderEngineType *engine_type)
{
Object *obact = OBACT(view_layer);
const int mode = CTX_data_mode_enum_ex(scene->obedit, obact);
- DRW_engines_enable_from_engine(engine_type);
+ drw_engines_enable_from_engine(engine_type);
if (DRW_state_draw_support()) {
- DRW_engines_enable_from_object_mode();
- DRW_engines_enable_from_mode(mode);
+ drw_engines_enable_from_object_mode();
+ drw_engines_enable_from_mode(mode);
}
}
-static void DRW_engines_disable(void)
+static void drw_engines_disable(void)
{
BLI_freelistN(&DST.enabled_engines);
}
@@ -3121,7 +3121,7 @@ static void draw_stat(rcti *rect, int u, int v, const char *txt, const int size)
}
/* CPU stats */
-static void DRW_debug_cpu_stats(void)
+static void drw_debug_cpu_stats(void)
{
int u, v;
double init_tot_time = 0.0, background_tot_time = 0.0, render_tot_time = 0.0, tot_time = 0.0;
@@ -3197,7 +3197,7 @@ static void DRW_debug_cpu_stats(void)
}
/* Display GPU time for each passes */
-static void DRW_debug_gpu_stats(void)
+static void drw_debug_gpu_stats(void)
{
/* local coordinate visible rect inside region, to accomodate overlapping ui */
rcti rect;
@@ -3261,7 +3261,7 @@ void DRW_notify_view_update(const DRWUpdateContext *update_ctx)
ar, rv3d, v3d, scene, view_layer, OBACT(view_layer), engine_type, NULL,
};
- DRW_engines_enable(scene, view_layer, engine_type);
+ drw_engines_enable(scene, view_layer, engine_type);
for (LinkData *link = DST.enabled_engines.first; link; link = link->next) {
DrawEngineType *draw_engine = link->data;
@@ -3274,7 +3274,7 @@ void DRW_notify_view_update(const DRWUpdateContext *update_ctx)
DST.viewport = NULL;
- DRW_engines_disable();
+ drw_engines_disable();
}
/** \} */
@@ -3305,7 +3305,7 @@ void DRW_notify_id_update(const DRWUpdateContext *update_ctx, ID *id)
DST.draw_ctx = (DRWContextState){
ar, rv3d, v3d, scene, view_layer, OBACT(view_layer), engine_type, NULL,
};
- DRW_engines_enable(scene, view_layer, engine_type);
+ drw_engines_enable(scene, view_layer, engine_type);
for (LinkData *link = DST.enabled_engines.first; link; link = link->next) {
DrawEngineType *draw_engine = link->data;
ViewportEngineData *data = DRW_viewport_engine_data_ensure(draw_engine);
@@ -3314,7 +3314,7 @@ void DRW_notify_id_update(const DRWUpdateContext *update_ctx, ID *id)
}
}
DST.viewport = NULL;
- DRW_engines_disable();
+ drw_engines_disable();
}
/** \} */
@@ -3368,31 +3368,31 @@ void DRW_draw_render_loop_ex(
DST.draw_ctx.evil_C,
};
- DRW_viewport_var_init();
+ drw_viewport_var_init();
/* Get list of enabled engines */
- DRW_engines_enable(scene, view_layer, engine_type);
+ drw_engines_enable(scene, view_layer, engine_type);
/* Update ubos */
DRW_globals_update();
/* Init engines */
- DRW_engines_init();
+ drw_engines_init();
/* TODO : tag to refresh by the deps graph */
/* ideally only refresh when objects are added/removed */
/* or render properties / materials change */
{
PROFILE_START(stime);
- DRW_engines_cache_init();
+ drw_engines_cache_init();
DEG_OBJECT_ITER(graph, ob, DEG_OBJECT_ITER_FLAG_ALL);
{
- DRW_engines_cache_populate(ob);
+ drw_engines_cache_populate(ob);
}
DEG_OBJECT_ITER_END
- DRW_engines_cache_finish();
+ drw_engines_cache_finish();
PROFILE_END_ACCUM(DST.cache_time, stime);
}
@@ -3400,7 +3400,7 @@ void DRW_draw_render_loop_ex(
/* Start Drawing */
DRW_state_reset();
- DRW_engines_draw_background();
+ drw_engines_draw_background();
/* WIP, single image drawn over the camera view (replace) */
bool do_bg_image = false;
@@ -3415,7 +3415,7 @@ void DRW_draw_render_loop_ex(
}
extern void view3d_draw_bgpic_test(Scene *scene, ARegion *ar, View3D *v3d,
- const bool do_foreground, const bool do_camera_frame);
+ const bool do_foreground, const bool do_camera_frame);
if (do_bg_image) {
view3d_draw_bgpic_test(scene, ar, v3d, false, true);
}
@@ -3426,7 +3426,7 @@ void DRW_draw_render_loop_ex(
ED_region_draw_cb_draw(DST.draw_ctx.evil_C, DST.draw_ctx.ar, REGION_DRAW_PRE_VIEW);
}
- DRW_engines_draw_scene();
+ drw_engines_draw_scene();
DRW_draw_callbacks_post_scene();
if (DST.draw_ctx.evil_C) {
@@ -3435,7 +3435,7 @@ void DRW_draw_render_loop_ex(
DRW_state_reset();
- DRW_engines_draw_text();
+ drw_engines_draw_text();
if (DST.draw_ctx.evil_C) {
/* needed so manipulator isn't obscured */
@@ -3453,14 +3453,14 @@ void DRW_draw_render_loop_ex(
}
if (G.debug_value > 20) {
- DRW_debug_cpu_stats();
- DRW_debug_gpu_stats();
+ drw_debug_cpu_stats();
+ drw_debug_gpu_stats();
}
DRW_state_reset();
- DRW_engines_disable();
+ drw_engines_disable();
- DRW_viewport_cache_resize();
+ drw_viewport_cache_resize();
#ifdef DEBUG
/* Avoid accidental reuse. */
@@ -3562,11 +3562,11 @@ void DRW_draw_select_loop(
/* Get list of enabled engines */
if (use_obedit) {
- DRW_engines_enable_from_mode(obedit_mode);
+ drw_engines_enable_from_mode(obedit_mode);
}
else {
- DRW_engines_enable_basic();
- DRW_engines_enable_from_object_mode();
+ drw_engines_enable_basic();
+ drw_engines_enable_from_object_mode();
}
/* Setup viewport */
@@ -3577,46 +3577,45 @@ void DRW_draw_select_loop(
ar, rv3d, v3d, scene, view_layer, OBACT(view_layer), engine_type, (bContext *)NULL,
};
- DRW_viewport_var_init();
+ drw_viewport_var_init();
/* Update ubos */
DRW_globals_update();
/* Init engines */
- DRW_engines_init();
+ drw_engines_init();
/* TODO : tag to refresh by the deps graph */
/* ideally only refresh when objects are added/removed */
/* or render properties / materials change */
if (cache_is_dirty) {
-
- DRW_engines_cache_init();
+ drw_engines_cache_init();
if (use_obedit) {
- DRW_engines_cache_populate(scene->obedit);
+ drw_engines_cache_populate(scene->obedit);
}
else {
DEG_OBJECT_ITER(graph, ob, DEG_OBJECT_ITER_FLAG_DUPLI)
{
if ((ob->base_flag & BASE_SELECTABLED) != 0) {
DRW_select_load_id(ob->select_color);
- DRW_engines_cache_populate(ob);
+ drw_engines_cache_populate(ob);
}
}
DEG_OBJECT_ITER_END
}
- DRW_engines_cache_finish();
+ drw_engines_cache_finish();
}
/* Start Drawing */
DRW_state_reset();
DRW_draw_callbacks_pre_scene();
- DRW_engines_draw_scene();
+ drw_engines_draw_scene();
DRW_draw_callbacks_post_scene();
DRW_state_reset();
- DRW_engines_disable();
+ drw_engines_disable();
#ifdef DEBUG
/* Avoid accidental reuse. */
@@ -3662,8 +3661,8 @@ void DRW_draw_depth_loop(
/* Get list of enabled engines */
{
- DRW_engines_enable_basic();
- DRW_engines_enable_from_object_mode();
+ drw_engines_enable_basic();
+ drw_engines_enable_from_object_mode();
}
/* Setup viewport */
@@ -3674,38 +3673,37 @@ void DRW_draw_depth_loop(
ar, rv3d, v3d, scene, view_layer, OBACT(view_layer), engine_type, (bContext *)NULL,
};
- DRW_viewport_var_init();
+ drw_viewport_var_init();
/* Update ubos */
DRW_globals_update();
/* Init engines */
- DRW_engines_init();
+ drw_engines_init();
/* TODO : tag to refresh by the deps graph */
/* ideally only refresh when objects are added/removed */
/* or render properties / materials change */
if (cache_is_dirty) {
-
- DRW_engines_cache_init();
+ drw_engines_cache_init();
DEG_OBJECT_ITER(graph, ob, DEG_OBJECT_ITER_FLAG_ALL)
{
- DRW_engines_cache_populate(ob);
+ drw_engines_cache_populate(ob);
}
DEG_OBJECT_ITER_END
- DRW_engines_cache_finish();
+ drw_engines_cache_finish();
}
/* Start Drawing */
DRW_state_reset();
DRW_draw_callbacks_pre_scene();
- DRW_engines_draw_scene();
+ drw_engines_draw_scene();
DRW_draw_callbacks_post_scene();
DRW_state_reset();
- DRW_engines_disable();
+ drw_engines_disable();
#ifdef DEBUG
/* Avoid accidental reuse. */
diff --git a/source/blender/editors/transform/transform_snap.c b/source/blender/editors/transform/transform_snap.c
index 63026cdcc46..30aad46843d 100644
--- a/source/blender/editors/transform/transform_snap.c
+++ b/source/blender/editors/transform/transform_snap.c
@@ -300,9 +300,7 @@ void applyProject(TransInfo *t)
mul_m4_v3(ob->obmat, iloc);
}
else if (t->flag & T_OBJECT) {
- /* TODO(sergey): Ideally force update is not needed here. */
- td->ob->recalc |= OB_RECALC_OB | OB_RECALC_DATA | OB_RECALC_TIME;
- BKE_object_handle_update(G.main->eval_ctx, t->scene, td->ob);
+ BKE_object_eval_transform_all(G.main->eval_ctx, t->scene, td->ob);
copy_v3_v3(iloc, td->ob->obmat[3]);
}
@@ -391,8 +389,7 @@ void applyGridAbsolute(TransInfo *t)
mul_m4_v3(obmat, iloc);
}
else if (t->flag & T_OBJECT) {
- td->ob->recalc |= OB_RECALC_OB | OB_RECALC_DATA | OB_RECALC_TIME;
- BKE_object_handle_update(G.main->eval_ctx, t->scene, td->ob);
+ BKE_object_eval_transform_all(G.main->eval_ctx, t->scene, td->ob);
copy_v3_v3(iloc, td->ob->obmat[3]);
}