From bc5727eb20786474f32fa1c0644c74ec7ced4a7f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dominik=20Madar=C3=A1sz?= Date: Sat, 9 Sep 2023 02:36:52 +0200 Subject: [PATCH] demo: temperature sim --- demos/99-temperature.c | 95 ++++++++++++++++++++++++++++++ demos/art/shaders/temperature.glsl | 20 +++++++ 2 files changed, 115 insertions(+) create mode 100644 demos/99-temperature.c create mode 100644 demos/art/shaders/temperature.glsl diff --git a/demos/99-temperature.c b/demos/99-temperature.c new file mode 100644 index 0000000..5eb5dab --- /dev/null +++ b/demos/99-temperature.c @@ -0,0 +1,95 @@ +#include "v4k.h" + +#define TEMP_GPU + +#ifdef TEMP_GPU +#define TEX_WIDTH 256 +// #define TEX_WIDTH 64 +#else +#define TEX_WIDTH 64 + +void temp_calc(vec4 *pixels){ + // flood it + for (int y = 1; y < TEX_WIDTH-1; y++){ + for (int x = 1; x < TEX_WIDTH-1; x++){ + int idx = (y * TEX_WIDTH) + x; + vec4 *m = &pixels[idx]; + + vec4 sum = vec4(0,0,0,0); + for (int cy = -1; cy <= 1; ++cy) { + for (int cx = -1; cx <= 1; ++cx) { + sum = add4(sum, pixels[((y+cy)*TEX_WIDTH)+(x+cx)]); + } + } + + *m = scale4(sum,1/9.0f); + } + } +} + +#endif + +int main() { + // 75% sized, MSAAx2 + window_create(50, WINDOW_SQUARE); + window_title(__FILE__); + // window_fps_lock(1); + + texture_t tex; + + vec4 *img = REALLOC(0, TEX_WIDTH*TEX_WIDTH*sizeof(vec4)); + for (int i=0; i