[Vulkan] Fixes in graphics-algorithms
authoradam.b <jsr184@gmail.com>
Fri, 25 May 2018 13:05:25 +0000 (14:05 +0100)
committeradam.b <jsr184@gmail.com>
Fri, 25 May 2018 15:51:13 +0000 (16:51 +0100)
- MVP multiplied by the CLIP_MATRIX
- Iterating through all renderers attached to the node

Change-Id: I95bdbd412b134829995644425ed1b45d0bd42b98

dali/internal/update/graphics/graphics-algorithms.cpp

index b66b747..5acb572 100644 (file)
@@ -82,23 +82,30 @@ void SubmitRenderItemList( Graphics::API::Controller&           graphics,
   for( auto i = 0u; i < numberOfRenderItems; ++i )
   {
     auto& item = renderItemList.GetItem( i );
-    auto sgRenderer = item.mNode->GetRendererAt(0);
-    auto& cmd = sgRenderer->GetGfxRenderCommand();
-    if(cmd.GetVertexBufferBindings().empty())
+    for( auto j = 0u; j < item.mNode->GetRendererCount(); ++j )
     {
-      continue;
+      auto sgRenderer = item.mNode
+                            ->GetRendererAt(j);
+      auto &cmd = sgRenderer->GetGfxRenderCommand();
+      if (cmd.GetVertexBufferBindings()
+             .empty())
+      {
+        continue;
+      }
+      cmd.BindRenderTarget(renderTargetBinding);
+      Matrix mvp, mvp2;
+      Matrix::Multiply(mvp, item.mModelMatrix, viewProjection);
+      Matrix::Multiply(mvp2, mvp, CLIP_MATRIX);
+      sgRenderer->WriteUniform("uModelMatrix", item.mModelMatrix);
+      sgRenderer->WriteUniform("uMvpMatrix", mvp2);
+      sgRenderer->WriteUniform("uViewMatrix", *viewMatrix);
+      sgRenderer->WriteUniform("uModelViewMatrix", item.mModelViewMatrix);
+      sgRenderer->WriteUniform("uProjection", vulkanProjectionMatrix);
+      sgRenderer->WriteUniform("uSize", item.mSize);
+      sgRenderer->WriteUniform("uColor", item.mNode
+                                             ->GetWorldColor(bufferIndex));
+      commandList.push_back(&cmd);
     }
-    cmd.BindRenderTarget( renderTargetBinding );
-    Matrix mvp;
-    Matrix::Multiply( mvp, item.mModelMatrix, viewProjection );
-    sgRenderer->WriteUniform( "uModelMatrix", item.mModelMatrix );
-    sgRenderer->WriteUniform( "uMvpMatrix", mvp );
-    sgRenderer->WriteUniform( "uViewMatrix", *viewMatrix );
-    sgRenderer->WriteUniform( "uModelViewMatrix", item.mModelViewMatrix );
-    sgRenderer->WriteUniform( "uProjection", vulkanProjectionMatrix );
-    sgRenderer->WriteUniform( "uSize", item.mSize );
-    sgRenderer->WriteUniform( "uColor", item.mNode->GetWorldColor( bufferIndex ));
-    commandList.push_back( &cmd  );
   }
 
   graphics.SubmitCommands( std::move(commandList) );