From c97af692c3a6984428465ab0bc99d56c301b353e Mon Sep 17 00:00:00 2001 From: 3gg <3gg@shellblade.net> Date: Sat, 12 Jul 2025 10:50:14 -0700 Subject: Update to use new LLR. --- src/backend.c | 54 +++++++++++++++++++++--------------------------------- 1 file changed, 21 insertions(+), 33 deletions(-) (limited to 'src/backend.c') diff --git a/src/backend.c b/src/backend.c index db91647..f610905 100644 --- a/src/backend.c +++ b/src/backend.c @@ -3,8 +3,10 @@ #include #include +#include +#include +#include #include -#include #include #include @@ -12,8 +14,8 @@ #include typedef struct IsoBackend { - Gfx* gfx; - Scene* scene; + Gfx* gfx; + Mesh* quad_mesh; /// The screen or "iso screen" refers to the colour buffer of the iso graphics /// library. This texture is used to draw the iso screen onto the graphics /// window. @@ -46,14 +48,13 @@ IsoBackend* IsoBackendInit(const IsoGfx* iso) { isogfx_get_screen_size(iso, &screen_width, &screen_height); if (!(backend->screen_texture = gfx_make_texture( - gfxcore, &(TextureDesc){ - .width = screen_width, - .height = screen_height, - .dimension = Texture2D, - .format = TextureSRGBA8, - .filtering = NearestFiltering, - .wrap = ClampToEdge, - .mipmaps = false}))) { + gfxcore, &(TextureDesc){.width = screen_width, + .height = screen_height, + .dimension = Texture2D, + .format = TextureSRGBA8, + .filtering = NearestFiltering, + .wrap = ClampToEdge, + .mipmaps = false}))) { goto cleanup; } @@ -68,10 +69,10 @@ IsoBackend* IsoBackendInit(const IsoGfx* iso) { } MaterialDesc material_desc = (MaterialDesc){.num_uniforms = 1}; - material_desc.uniforms[0] = (ShaderUniform){ - .type = UniformTexture, - .value.texture = backend->screen_texture, - .name = sstring_make("Texture")}; + material_desc.uniforms[0] = + (ShaderUniform){.type = UniformTexture, + .value.texture = backend->screen_texture, + .name = sstring_make("Texture")}; Material* material = gfx_make_material(&material_desc); if (!material) { return false; @@ -79,22 +80,11 @@ IsoBackend* IsoBackendInit(const IsoGfx* iso) { const MeshDesc mesh_desc = (MeshDesc){.geometry = geometry, .material = material, .shader = shader}; - Mesh* mesh = gfx_make_mesh(&mesh_desc); - if (!mesh) { + backend->quad_mesh = gfx_make_mesh(&mesh_desc); + if (!backend->quad_mesh) { goto cleanup; } - SceneObject* object = - gfx_make_object(&(ObjectDesc){.num_meshes = 1, .meshes = {mesh}}); - if (!object) { - goto cleanup; - } - - backend->scene = gfx_make_scene(); - SceneNode* node = gfx_make_object_node(object); - SceneNode* root = gfx_get_scene_root(backend->scene); - gfx_set_node_parent(node, root); - return backend; cleanup: @@ -153,8 +143,8 @@ void IsoBackendRender(const IsoBackend* app, const IsoGfx* iso) { assert(screen); gfx_update_texture(app->screen_texture, &(TextureDataDesc){.pixels = screen}); - GfxCore* gfxcore = gfx_get_core(app->gfx); - Renderer* renderer = gfx_get_renderer(app->gfx); + GfxCore* gfxcore = gfx_get_core(app->gfx); + LLR* renderer = gfx_get_llr(app->gfx); // Clear the whole window. gfx_set_viewport(gfxcore, 0, 0, app->window_width, app->window_height); @@ -168,9 +158,7 @@ void IsoBackendRender(const IsoBackend* app, const IsoGfx* iso) { // Render the iso screen. gfx_start_frame(gfxcore); - gfx_render_scene( - renderer, &(RenderSceneParams){ - .mode = RenderDefault, .scene = app->scene, .camera = 0}); + gfx_llr_render_mesh(renderer, app->quad_mesh); gfx_end_frame(gfxcore); } -- cgit v1.2.3