[Bf-blender-cvs] [95aba2bc718] temp-gpu-compute-shader-hair: Draw: Bind vertex buffers on name.
Jeroen Bakker
noreply at git.blender.org
Fri May 7 15:54:51 CEST 2021
Commit: 95aba2bc7188feabee48d2eaff19a20ae126b454
Author: Jeroen Bakker
Date: Fri May 7 15:25:45 2021 +0200
Branches: temp-gpu-compute-shader-hair
https://developer.blender.org/rB95aba2bc7188feabee48d2eaff19a20ae126b454
Draw: Bind vertex buffers on name.
===================================================================
M source/blender/draw/intern/DRW_render.h
M source/blender/draw/intern/draw_hair.c
M source/blender/draw/intern/draw_manager_data.c
M source/blender/draw/intern/draw_manager_exec.c
===================================================================
diff --git a/source/blender/draw/intern/DRW_render.h b/source/blender/draw/intern/DRW_render.h
index d9ed760c4b8..5071658fd82 100644
--- a/source/blender/draw/intern/DRW_render.h
+++ b/source/blender/draw/intern/DRW_render.h
@@ -580,7 +580,7 @@ void DRW_shgroup_uniform_vec4_array_copy(DRWShadingGroup *shgroup,
const float (*value)[4],
int arraysize);
void DRW_shgroup_vertex_buffer(DRWShadingGroup *shgroup,
- const int location,
+ const char *name,
struct GPUVertBuf *vertex_buffer);
bool DRW_shgroup_is_empty(DRWShadingGroup *shgroup);
diff --git a/source/blender/draw/intern/draw_hair.c b/source/blender/draw/intern/draw_hair.c
index 4d9345c7574..1198d71a296 100644
--- a/source/blender/draw/intern/draw_hair.c
+++ b/source/blender/draw/intern/draw_hair.c
@@ -163,7 +163,7 @@ static void drw_hair_particle_cache_update_compute(ParticleHairCache *cache, con
GPUShader *shader = hair_refine_shader_get(PART_REFINE_CATMULL_ROM);
DRWShadingGroup *shgrp = DRW_shgroup_create(shader, g_tf_pass);
drw_hair_particle_cache_shgrp_attach_resources(shgrp, cache, subdiv);
- DRW_shgroup_vertex_buffer(shgrp, 0, cache->final[subdiv].proc_buf);
+ DRW_shgroup_vertex_buffer(shgrp, "hairPointOutputBuffer", cache->final[subdiv].proc_buf);
DRW_shgroup_call_compute(shgrp, cache->strands_len, cache->final[subdiv].strands_res, 1);
}
}
diff --git a/source/blender/draw/intern/draw_manager_data.c b/source/blender/draw/intern/draw_manager_data.c
index 7f26ef8d115..8e93e713d7d 100644
--- a/source/blender/draw/intern/draw_manager_data.c
+++ b/source/blender/draw/intern/draw_manager_data.c
@@ -448,9 +448,14 @@ void DRW_shgroup_uniform_vec4_array_copy(DRWShadingGroup *shgroup,
}
void DRW_shgroup_vertex_buffer(DRWShadingGroup *shgroup,
- const int location,
+ const char *name,
GPUVertBuf *vertex_buffer)
{
+ int location = GPU_shader_get_ssbo(shgroup->shader, name);
+ if (location == -1) {
+ BLI_assert(false && "Unable to locate binding of shader storage buffer objects.");
+ return;
+ }
drw_shgroup_uniform_create_ex(shgroup, location, DRW_VERTEX_BUFFER, vertex_buffer, 0, 0, 1);
}
diff --git a/source/blender/draw/intern/draw_manager_exec.c b/source/blender/draw/intern/draw_manager_exec.c
index 1ec09bc1259..810a525bc1a 100644
--- a/source/blender/draw/intern/draw_manager_exec.c
+++ b/source/blender/draw/intern/draw_manager_exec.c
@@ -674,8 +674,7 @@ static void draw_update_uniforms(DRWShadingGroup *shgroup,
((GPUVertBuf *)uni->pvalue));
break;
case DRW_VERTEX_BUFFER:
- GPU_shader_attach_vertex_buffer(
- shgroup->shader, (GPUVertBuf *)uni->pvalue, uni->location);
+ GPU_vertbuf_bind_as_ssbo((GPUVertBuf *)uni->pvalue, uni->location);
break;
/* Legacy/Fallback support. */
case DRW_UNIFORM_BASE_INSTANCE:
More information about the Bf-blender-cvs
mailing list