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:
authorJeroen Bakker <j.bakker@atmind.nl>2018-06-29 09:25:23 +0300
committerJeroen Bakker <j.bakker@atmind.nl>2018-06-29 09:27:14 +0300
commitd34b0faa65f9585d7013a120523e9b87a22c60bd (patch)
tree7601764452e34642e43f72f50b171a6039195126 /source/blender/draw/engines/workbench/workbench_forward.c
parent9bd0c63382bf226c271c40d5a5967c22c75718ea (diff)
Workbench: Removed MaterialData UBO
Most of the times the materials differ due to the object_id. This was an overhead and resulted in instabilities on Intel graphical cards. This commit will revert the Material Data UBO and replace it with normal uniform.
Diffstat (limited to 'source/blender/draw/engines/workbench/workbench_forward.c')
-rw-r--r--source/blender/draw/engines/workbench/workbench_forward.c11
1 files changed, 3 insertions, 8 deletions
diff --git a/source/blender/draw/engines/workbench/workbench_forward.c b/source/blender/draw/engines/workbench/workbench_forward.c
index 41d16780d33..1a8a5461e13 100644
--- a/source/blender/draw/engines/workbench/workbench_forward.c
+++ b/source/blender/draw/engines/workbench/workbench_forward.c
@@ -177,11 +177,7 @@ static WORKBENCH_MaterialData *get_or_create_material_data(
DRW_shgroup_uniform_float(grp, "alpha", &wpd->shading.xray_alpha, 1);
DRW_shgroup_uniform_vec4(grp, "viewvecs[0]", (float *)wpd->viewvecs, 3);
workbench_material_set_normal_world_matrix(grp, wpd, e_data.normal_world_matrix);
- material->object_id = engine_object_data->object_id;
- copy_v4_v4(material->material_data.diffuse_color, material_template.material_data.diffuse_color);
- copy_v4_v4(material->material_data.specular_color, material_template.material_data.specular_color);
- material->material_data.roughness = material_template.material_data.roughness;
-
+ workbench_material_copy(material, &material_template);
if (color_type == V3D_SHADING_TEXTURE_COLOR) {
GPUTexture *tex = GPU_texture_from_blender(ima, NULL, GL_TEXTURE_2D, false, 0.0f);
DRW_shgroup_uniform_texture(grp, "image", tex);
@@ -194,8 +190,7 @@ static WORKBENCH_MaterialData *get_or_create_material_data(
DRW_shgroup_uniform_vec2(grp, "invertedViewportSize", DRW_viewport_invert_size_get(), 1);
}
- material->material_ubo = DRW_uniformbuffer_create(sizeof(WORKBENCH_UBO_Material), &material->material_data);
- DRW_shgroup_uniform_block(grp, "material_block", material->material_ubo);
+ workbench_material_shgroup_uniform(grp, material);
material->shgrp = grp;
/* Depth */
@@ -431,7 +426,7 @@ static void workbench_forward_cache_populate_particles(WORKBENCH_Data *vedata, O
shader);
workbench_material_set_normal_world_matrix(shgrp, wpd, e_data.normal_world_matrix);
DRW_shgroup_uniform_block(shgrp, "world_block", wpd->world_ubo);
- DRW_shgroup_uniform_block(shgrp, "material_block", material->material_ubo);
+ workbench_material_shgroup_uniform(shgrp, material);
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. */