This would be bound to a buffer object that would hold a LARGE number of matrices. Now because the number of matrices is large and part of the matrix is always (0, 0, 0, 1) (I use row major, so world would have the 3rd row (0,0,0,1) and worldIT would have the 3rd column (0,0,0,1)) I thought I would reduce memory usage by doing something like this (note that I am basically switching here from row major world matrix to column major matrix, and I account for this (I have also tested with identity matrix, but that doesn’t help)):

However when doing this, nothing works… I have RenderDoc’ed the code and I can see that the data is uploaded correctly, but I can’t debug the shader (because only D3D11 shader debugging seems to be currently supported.)

Now in order to see which values come through, I’ve rewired the shader to use an identity matrix and to output to the color channel instead:

But it seems this is always black, no matter what values I upload in the buffer (and confirmed with RenderDoc that the values are there)

Then I tried reading through the SPIR-V, to see if I could figure out what’s going on, but the “human readable” format doesn’t seem easy to untangle (it’s easy to read alright, just not to comprehend) (I’ve attached it as a zip, since it exceeded the 19kb attachement size)

I tried copy/pasting some sample code together, but it seems that’ll take a couple hours to do (creating window, vkInstance, vkDevice, Swapchain, etc,etc) so hoping someone has the SPIR-V skills to easily see what’s wrong.

I was wondering if anyone has had issues with this kind of setup and if so if there are any ideas and/or suggestions on how to fix/workaround this.

Thank you in advance.

PS: Copy/paste of the SPIR-V output as apparently the attachment of ZIP doesn’t work: