diff options
author | reduz <reduzio@gmail.com> | 2020-12-16 11:07:08 -0300 |
---|---|---|
committer | reduz <reduzio@gmail.com> | 2020-12-16 14:32:04 -0300 |
commit | bf77016c8a3cc9a8ff4c57c0fc32a4255006391b (patch) | |
tree | 0b4a378b86c7a3d6e20534e99460e05384ace298 /servers/rendering/renderer_rd/renderer_scene_render_forward.cpp | |
parent | c514cc58224e5c973ac8be7bb6db7023d5c25906 (diff) | |
download | redot-engine-bf77016c8a3cc9a8ff4c57c0fc32a4255006391b.tar.gz |
Reimplement skeletons and blend shapes
Uses compute shaders, which only once, on demand, and all in parallel.
Diffstat (limited to 'servers/rendering/renderer_rd/renderer_scene_render_forward.cpp')
-rw-r--r-- | servers/rendering/renderer_rd/renderer_scene_render_forward.cpp | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/servers/rendering/renderer_rd/renderer_scene_render_forward.cpp b/servers/rendering/renderer_rd/renderer_scene_render_forward.cpp index 569bf550c8..9de7af3c22 100644 --- a/servers/rendering/renderer_rd/renderer_scene_render_forward.cpp +++ b/servers/rendering/renderer_rd/renderer_scene_render_forward.cpp @@ -1079,7 +1079,11 @@ void RendererSceneRenderForward::_render_list(RenderingDevice::DrawListID p_draw switch (e->instance->base_type) { case RS::INSTANCE_MESH: { - storage->mesh_surface_get_arrays_and_format(e->instance->base, e->surface_index, pipeline->get_vertex_input_mask(), vertex_array_rd, index_array_rd, vertex_format); + if (e->instance->mesh_instance.is_valid()) { //skeleton and blend shape + storage->mesh_instance_surface_get_arrays_and_format(e->instance->mesh_instance, e->surface_index, pipeline->get_vertex_input_mask(), vertex_array_rd, index_array_rd, vertex_format); + } else { + storage->mesh_surface_get_arrays_and_format(e->instance->base, e->surface_index, pipeline->get_vertex_input_mask(), vertex_array_rd, index_array_rd, vertex_format); + } } break; case RS::INSTANCE_MULTIMESH: { RID mesh = storage->multimesh_get_mesh(e->instance->base); |