From 0f0e352fca4abed2a56dde269672d72cc9eb3d69 Mon Sep 17 00:00:00 2001 From: Annika Date: Mon, 20 Jul 2026 01:52:30 -0700 Subject: [PATCH] shaders headerfile, and added CRTP shader to Point --- example | Bin 37000 -> 37000 bytes example.cpp | 6 ++++-- primatives/point.cpp | 21 +++++---------------- primatives/rectangle.cpp | 2 +- shaders/shaders.h | 4 ++++ 5 files changed, 14 insertions(+), 19 deletions(-) create mode 100644 shaders/shaders.h diff --git a/example b/example index 56272d3327e9e6fbb44d6d640edca9256f226892..6abee0c9414797f0a454ce0dfe4daee5adfc93f7 100755 GIT binary patch delta 3854 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 diff --git a/example.cpp b/example.cpp index 407950b..625c540 100644 --- a/example.cpp +++ b/example.cpp @@ -39,10 +39,12 @@ int main(void) { UwU::Surface surface = UwU::Surface(w, h, onKey); UwU::ColorShader fuchsia = UwU::ColorShader(UwU::Color(0xb00b69ff)); - UwU::Rectangle rectangle = UwU::Rectangle(69, 69, 420, 420); - rectangle.draw(surface.buffer, fuchsia); + + UwU::ColorShader green = UwU::ColorShader(UwU::Color(0x00ff00ff)); + UwU::Point point = UwU::Point(187, 37); + point.draw(surface.buffer, green); // // Benchmarking // struct timespec start, end; diff --git a/primatives/point.cpp b/primatives/point.cpp index 77dda30..bb81ae3 100644 --- a/primatives/point.cpp +++ b/primatives/point.cpp @@ -5,7 +5,7 @@ #include "../datatypes.cpp" #include "../helpers.cpp" #include "../buffer.cpp" -#include "../shader.cpp" +#include "../shaders/shaders.h" namespace UwU { // point @@ -19,22 +19,11 @@ namespace UwU { uint16_t x; uint16_t y; - // Draw a rectangle - void draw (Buffer buffer, Shader shader) { + // Draw a point + template + void draw (Buffer buffer, ShaderBase& shader) { if (x > buffer.width || y > buffer.height) {return;}; - - if (shader.shaderType == COLOR) { - buffer.drawPixel(x, y, shader.c0); - return; - } else if (shader.shaderType == HGRADIENT) { - buffer.drawPixel(x, y, ShaderMethods::gradient(shader.u0, shader.scale, shader.c0, shader.c1, x)); - return; - } else if (shader.shaderType == VGRADIENT) { - buffer.drawPixel(x, y, ShaderMethods::gradient(shader.v0, shader.scale, shader.c0, shader.c1, y)); - return; - } else if (shader.shaderType == BUFFER) { - buffer.drawPixel(x, y, ShaderMethods::buffer(shader.u0, shader.v0, shader.buffer, x, y)); - } + buffer.drawPixel(x, y, shader.shade(x, y)); return; } }; diff --git a/primatives/rectangle.cpp b/primatives/rectangle.cpp index 5fb6471..a023bf6 100644 --- a/primatives/rectangle.cpp +++ b/primatives/rectangle.cpp @@ -6,7 +6,7 @@ #include "../helpers.cpp" #include "../buffer.cpp" #include "../shaders/shaderbase.cpp" -#include "../shaders/colorshader.cpp" +#include "../shaders/shaders.h" namespace UwU { // rectangle diff --git a/shaders/shaders.h b/shaders/shaders.h new file mode 100644 index 0000000..fc3bb96 --- /dev/null +++ b/shaders/shaders.h @@ -0,0 +1,4 @@ +#include "shaderbase.cpp" +#include "colorshader.cpp" +// #include "hgradientshader.cpp" +// #include "vgradientshader.cpp" \ No newline at end of file