#ifndef RASTERISER_H #define RASTERISER_H #include "aliases.h" #include "camera/camera.h" #include "list/typed_list.h" #include "mem_arena.h" #include "vector/vec.h" #include "window/window.h" typedef struct { u64 idx0; u64 idx1; u64 idx2; colour_t colour; } scene_triangle_t; MAKE_LIST_TYPE(f32); MAKE_LIST_TYPE(vec2i_t); MAKE_LIST_TYPE(vec3f_t); MAKE_LIST_TYPE(scene_triangle_t); typedef struct { vec2i_t p0; vec2i_t p1; } line_t; typedef struct { vec2i_t p0; vec2i_t p1; vec2i_t p2; f32 h0; f32 h1; f32 h2; colour_t colour; } triangle_t; void render_object(window_t *wnd, Arena *arena, const camera_t *camera, vec3f_t viewport, const list_vec3f_t *vertices, const list_scene_triangle_t *triangles); void draw_wireframe_triangle(window_t *wnd, Arena *arena, triangle_t triangle); void draw_filled_triangle(window_t *wnd, Arena *arena, triangle_t triangle); void draw_shaded_triangle(window_t *wnd, Arena *arena, triangle_t triangle); void draw_line(window_t *wnd, Arena *arena, line_t line, colour_t colour); #endif // !RASTERISER_H