Skip to content

Commit 59609e2

Browse files
committed
WIP
1 parent 2511a46 commit 59609e2

File tree

2 files changed

+23
-11
lines changed

2 files changed

+23
-11
lines changed

examples/example_gfx_2.c

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -181,7 +181,8 @@ pl_app_load(plApiRegistryI* ptApiRegistry, plAppData* ptAppData)
181181
"../shaders/",
182182
"../examples/shaders/"
183183
},
184-
.tFlags = PL_SHADER_FLAGS_AUTO_OUTPUT | PL_SHADER_FLAGS_NEVER_CACHE
184+
.pcCacheOutputDirectory = "../shader-temp/",
185+
.tFlags = PL_SHADER_FLAGS_AUTO_OUTPUT | PL_SHADER_FLAGS_ALWAYS_COMPILE | PL_SHADER_FLAGS_INCLUDE_DEBUG
185186
};
186187
gptShader->initialize(&tDefaultShaderOptions);
187188

extensions/pl_graphics_metal.m

Lines changed: 21 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1018,7 +1018,7 @@
10181018
ptPool->tDesc.szStorageTextureBindings +
10191019
ptPool->tDesc.szAttachmentTextureBindings;
10201020

1021-
ptPool->szHeapSize = szMaxSets * sizeof(uint32_t);
1021+
ptPool->szHeapSize = szMaxSets * sizeof(uint64_t);
10221022

10231023
MTLHeapDescriptor* ptHeapDescriptor = [MTLHeapDescriptor new];
10241024
ptHeapDescriptor.storageMode = MTLStorageModeShared;
@@ -1276,19 +1276,30 @@
12761276

12771277
// vertex layout
12781278
MTLVertexDescriptor* vertexDescriptor = [MTLVertexDescriptor vertexDescriptor];
1279-
vertexDescriptor.layouts[4].stepRate = 1;
1280-
vertexDescriptor.layouts[4].stepFunction = MTLVertexStepFunctionPerVertex;
1281-
vertexDescriptor.layouts[4].stride = ptDescription->atVertexBufferLayouts[0].uByteStride;
12821279

1280+
uint32_t uVertexBufferCount = 0;
12831281
uint32_t uCurrentAttributeCount = 0;
1284-
for(uint32_t i = 0; i < PL_MAX_VERTEX_ATTRIBUTES; i++)
1282+
for(uint32_t uVtxBufferIdx = 0; uVtxBufferIdx < 2; uVtxBufferIdx++)
12851283
{
1286-
if(ptDescription->atVertexBufferLayouts[0].atAttributes[i].tFormat == PL_VERTEX_FORMAT_UNKNOWN)
1284+
if(ptDescription->atVertexBufferLayouts[uVtxBufferIdx].uByteStride == 0)
12871285
break;
1288-
vertexDescriptor.attributes[i].bufferIndex = 4;
1289-
vertexDescriptor.attributes[i].offset = ptDescription->atVertexBufferLayouts[0].atAttributes[i].uByteOffset;
1290-
vertexDescriptor.attributes[i].format = pl__metal_vertex_format(ptDescription->atVertexBufferLayouts[0].atAttributes[i].tFormat);
1291-
uCurrentAttributeCount++;
1286+
1287+
for (uint32_t i = 0; i < PL_MAX_VERTEX_ATTRIBUTES; i++)
1288+
{
1289+
if(ptDescription->atVertexBufferLayouts[uVtxBufferIdx].atAttributes[i].tFormat == PL_VERTEX_FORMAT_UNKNOWN)
1290+
break;
1291+
const uint32_t uLocation = ptDescription->atVertexBufferLayouts[uVtxBufferIdx].bExplicitLocation ? ptDescription->atVertexBufferLayouts[uVtxBufferIdx].atAttributes[i].uLocation : uCurrentAttributeCount;
1292+
vertexDescriptor.attributes[uLocation].bufferIndex = 4 + uVtxBufferIdx;
1293+
vertexDescriptor.attributes[uLocation].offset = ptDescription->atVertexBufferLayouts[uVtxBufferIdx].atAttributes[i].uByteOffset;
1294+
vertexDescriptor.attributes[uLocation].format = pl__metal_vertex_format(ptDescription->atVertexBufferLayouts[uVtxBufferIdx].atAttributes[i].tFormat);
1295+
uCurrentAttributeCount++;
1296+
1297+
}
1298+
1299+
vertexDescriptor.layouts[4 + uVtxBufferIdx].stepRate = 1;
1300+
vertexDescriptor.layouts[4 + uVtxBufferIdx].stepFunction = MTLVertexStepFunctionPerVertex;
1301+
vertexDescriptor.layouts[4 + uVtxBufferIdx].stride = ptDescription->atVertexBufferLayouts[uVtxBufferIdx].uByteStride;
1302+
uVertexBufferCount++;
12921303
}
12931304

12941305
// prepare preprocessor defines

0 commit comments

Comments
 (0)