summaryrefslogtreecommitdiffstats
path: root/servers/rendering/renderer_rd/renderer_scene_render_forward.cpp
diff options
context:
space:
mode:
authorreduz <reduzio@gmail.com>2020-12-16 11:07:08 -0300
committerreduz <reduzio@gmail.com>2020-12-16 14:32:04 -0300
commitbf77016c8a3cc9a8ff4c57c0fc32a4255006391b (patch)
tree0b4a378b86c7a3d6e20534e99460e05384ace298 /servers/rendering/renderer_rd/renderer_scene_render_forward.cpp
parentc514cc58224e5c973ac8be7bb6db7023d5c25906 (diff)
downloadredot-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.cpp6
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);