Implement shaders #1

Merged
abdelrahman merged 6 commits from shaders into main 2024-08-18 14:28:10 +00:00
Showing only changes of commit 6c275baa20 - Show all commits

View File

@ -7,7 +7,7 @@
#include <stddef.h>
#include <string.h>
internal u64 calculate_pixel_index(Buffer *buffer, u64 x, u64 y, u64 base_size);
internal i64 calculate_pixel_index(Buffer *buffer, u64 x, u64 y, u64 base_size);
bool _init_buffer(Arena *arena, Buffer *buffer, u64 base_size) {
if (!arena || !buffer || buffer->width == 0 || buffer->height == 0) {
@ -21,12 +21,20 @@ bool _init_buffer(Arena *arena, Buffer *buffer, u64 base_size) {
}
u8 *_get_pixel(Buffer *buffer, u64 x, u64 y, u64 base_size) {
u64 idx = calculate_pixel_index(buffer, x, y, base_size);
i64 idx = calculate_pixel_index(buffer, x, y, base_size);
if (idx == -1) {
idx = 0;
}
return ((u8 *)(buffer->buf)) + idx;
}
void _set_pixel(Buffer *buffer, u64 x, u64 y, void *value, u64 base_size) {
u64 idx = calculate_pixel_index(buffer, x, y, base_size);
i64 idx = calculate_pixel_index(buffer, x, y, base_size);
if (idx == -1) {
return;
}
memcpy(((u8 *)(buffer->buf)) + idx, value, base_size);
return;
}
@ -75,7 +83,11 @@ void save_image(const Image *img, const char *filename) {
write_p7_image(img->width, img->height, (u8 *)(img->buf), filename);
}
internal u64 calculate_pixel_index(Buffer *buffer, u64 x, u64 y,
internal i64 calculate_pixel_index(Buffer *buffer, u64 x, u64 y,
u64 base_size) {
if (x < 0 || y < 0 || x >= buffer->width || y >= buffer->height) {
return -1;
}
return (y * buffer->width + x) * base_size;
}