From d1b71110bb931f8890c90d62447eebc43c11468a Mon Sep 17 00:00:00 2001 From: Martin Fouilleul Date: Thu, 23 Feb 2023 18:30:47 +0100 Subject: [PATCH] - Fixed metal canvas backend's drawBatch argument order - Removed texturing in metal shader while we work on image API - Started working on simple image API --- src/graphics.c | 35 +---------------------------------- src/mtl_canvas.m | 2 +- src/mtl_shader.metal | 16 +--------------- 3 files changed, 3 insertions(+), 50 deletions(-) diff --git a/src/graphics.c b/src/graphics.c index e2ba062..3186578 100644 --- a/src/graphics.c +++ b/src/graphics.c @@ -1928,14 +1928,10 @@ void mg_render_stroke(mg_canvas_data* canvas, void mg_render_rectangle_fill(mg_canvas_data* canvas, mp_rect rect, mg_attributes* attributes) { - mg_next_shape(canvas, attributes->color); -/* u32 baseIndex = mg_vertices_base_index(canvas); i32* indices = mg_reserve_indices(canvas, 6); -// mg_next_shape(canvas, attributes->color); - - mg_next_shape(canvas, (mg_color){1, 0, 1, 1}); + mg_next_shape(canvas, attributes->color); vec2 points[4] = {{rect.x, rect.y}, {rect.x + rect.w, rect.y}, @@ -1954,35 +1950,6 @@ void mg_render_rectangle_fill(mg_canvas_data* canvas, mp_rect rect, mg_attribute indices[3] = baseIndex + 0; indices[4] = baseIndex + 2; indices[5] = baseIndex + 3; -*/ - - f32 rx = rect.w/2; - f32 ry = rect.h/2; - - u32 baseIndex = mg_vertices_base_index(canvas); - i32* indices = mg_reserve_indices(canvas, 6); - - //NOTE(martin): inner diamond - vec2 points[4] = {{rect.x, rect.y + ry}, - {rect.x + rx, rect.y}, - {rect.x + rect.w, rect.y + ry}, - {rect.x + rx, rect.y + rect.h}}; - - vec4 cubic = {1, 1, 1, 1}; - - for(int i=0; i<4; i++) - { - vec2 pos = mg_mat2x3_mul(canvas->transform, points[i]); - mg_push_vertex(canvas, pos, cubic); - } - - indices[0] = baseIndex + 0; - indices[1] = baseIndex + 1; - indices[2] = baseIndex + 2; - indices[3] = baseIndex + 0; - indices[4] = baseIndex + 2; - indices[5] = baseIndex + 3; - } void mg_render_rectangle_stroke(mg_canvas_data* canvas, mp_rect rect, mg_attributes* attributes) diff --git a/src/mtl_canvas.m b/src/mtl_canvas.m index da5de9b..5db91c2 100644 --- a/src/mtl_canvas.m +++ b/src/mtl_canvas.m @@ -73,7 +73,7 @@ void mg_mtl_canvas_clear(mg_canvas_backend* interface, mg_color clearColor) backend->clearColor = clearColor; } -void mg_mtl_canvas_draw_batch(mg_canvas_backend* interface, u32 vertexCount, u32 indexCount, u32 shapeCount) +void mg_mtl_canvas_draw_batch(mg_canvas_backend* interface, u32 shapeCount, u32 vertexCount, u32 indexCount) { mg_mtl_canvas_backend* backend = (mg_mtl_canvas_backend*)interface; mg_mtl_surface* surface = mg_mtl_canvas_get_surface(backend); diff --git a/src/mtl_shader.metal b/src/mtl_shader.metal index 2cefb30..7ea2c7d 100644 --- a/src/mtl_shader.metal +++ b/src/mtl_shader.metal @@ -195,25 +195,11 @@ kernel void RenderKernel(texture2d outTexture [[texture(0) const uint tileBufferSize = tileCounters[tileIndex]; - -//#define RENDERER_DEBUG_TILES #ifdef RENDERER_DEBUG_TILES //NOTE(martin): color code debug values and show the tile grid uint nTileX = tilesMatrixDim.x; uint nTileY = tilesMatrixDim.y; - if(tilePos.x == 2 && tilePos.y == 12) - { - outTexture.write(float4(1, 0.5, 1, 1), gid); - return; - } - - if(nTileY != 13 || nTileX != 13) - { - outTexture.write(float4(1, 1, 0, 1), gid); - return; - } - if(tilePos.x > nTileX || tilePos.y > nTileY) { outTexture.write(float4(0, 1, 1, 1), gid); @@ -331,7 +317,7 @@ kernel void RenderKernel(texture2d outTexture [[texture(0) pixelColors[i] = nextColors[i]; } - float4 nextCol = color*texColor; + float4 nextCol = color;//*texColor; nextColors[i] = pixelColors[i]*(1-nextCol.a) +nextCol.a*nextCol; zIndices[i] = shapeIndex;