From ae85b54ffc8164ac1cf50ff3f482f09b07fb17e2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Cl=C3=A9ment=20FOUCAULT?= Date: Fri, 9 Aug 2024 08:13:36 +0200 Subject: [PATCH] Fix: DRW: Missing `vnor` attribute on edit mesh and edges This resulted in the lack of fresnel effect on dense meshes in edit mode when GPU subdiv was not used. --- source/blender/draw/intern/draw_cache_impl_mesh.cc | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/source/blender/draw/intern/draw_cache_impl_mesh.cc b/source/blender/draw/intern/draw_cache_impl_mesh.cc index 2063eef36e8..4254dcb28bd 100644 --- a/source/blender/draw/intern/draw_cache_impl_mesh.cc +++ b/source/blender/draw/intern/draw_cache_impl_mesh.cc @@ -1669,6 +1669,10 @@ void DRW_mesh_batch_cache_create_requested(TaskGraph &task_graph, DRW_ibo_request(cache.batch.edit_vertices, &mbuflist->ibo.points); DRW_vbo_request(cache.batch.edit_vertices, &mbuflist->vbo.pos); DRW_vbo_request(cache.batch.edit_vertices, &mbuflist->vbo.edit_data); + if (!do_subdivision) { + /* For GPU subdivision, vertex normals are included in the `pos` VBO. */ + DRW_vbo_request(cache.batch.edit_vertices, &mbuflist->vbo.vnor); + } } assert_deps_valid(MBC_EDIT_EDGES, {BUFFER_INDEX(ibo.lines), BUFFER_INDEX(vbo.pos), BUFFER_INDEX(vbo.edit_data)}); @@ -1676,6 +1680,10 @@ void DRW_mesh_batch_cache_create_requested(TaskGraph &task_graph, DRW_ibo_request(cache.batch.edit_edges, &mbuflist->ibo.lines); DRW_vbo_request(cache.batch.edit_edges, &mbuflist->vbo.pos); DRW_vbo_request(cache.batch.edit_edges, &mbuflist->vbo.edit_data); + if (!do_subdivision) { + /* For GPU subdivision, vertex normals are included in the `pos` VBO. */ + DRW_vbo_request(cache.batch.edit_vertices, &mbuflist->vbo.vnor); + } } assert_deps_valid(MBC_EDIT_VNOR, {BUFFER_INDEX(ibo.points), BUFFER_INDEX(vbo.pos), BUFFER_INDEX(vbo.vnor)});