use location numbers for vertex input attributes, instead of name-based binding.

- add 'location' named field to buffer and mesh vertex format tables, replaces 'name' field.
- location numbers are expected to match 'layout (location = #)' qualifiers in vertex inputs in shader code.
- deprecate vertex inputs in shader code that don't have layout location qualifiers.
- love's default vertex attributes use location 0 for position, 1 for texcoord, and 2 for color.
- add new variants of Mesh:attachAttribute, setAttributeEnabled, and isAttributeEnabled which take location numbers instead of names.

Improves draw performance in vulkan and metal backends.
This commit is contained in:
Sasha Szpakowski
2024-09-07 18:06:03 -03:00
parent c7b4ebbc55
commit 50ff1e4d2b
31 changed files with 683 additions and 258 deletions
+2 -2
View File
@@ -61,8 +61,8 @@ public:
struct RenderPipelineKey
{
VertexAttributes vertexAttributes;
BlendState blend;
VertexAttributesID vertexAttributesID;
uint32 blendStateKey;
uint64 colorRenderTargetFormats;
uint32 depthStencilFormat;
ColorChannelMask colorChannelMask;