From 0f13f037cecc43da37c446d860c6bd831eb3420d Mon Sep 17 00:00:00 2001 From: Vegard Matthey Date: Tue, 2 Sep 2025 21:31:09 +0200 Subject: [PATCH] checkerboard pattern --- report/images/{task2.png => task2a.png} | Bin report/images/task2b.png | Bin 0 -> 7349 bytes report/images/task2d1.png | Bin 0 -> 12393 bytes report/images/task2d2.png | Bin 0 -> 12567 bytes report/images/task3a.png | Bin 0 -> 11732 bytes report/task2.md | 21 +++++++++++++++++++++ report/task3.md | 3 +++ shaders/simple.frag | 16 +++++++++++++++- src/main.rs | 2 +- 9 files changed, 40 insertions(+), 2 deletions(-) rename report/images/{task2.png => task2a.png} (100%) create mode 100644 report/images/task2b.png create mode 100644 report/images/task2d1.png create mode 100644 report/images/task2d2.png create mode 100644 report/images/task3a.png create mode 100644 report/task3.md diff --git a/report/images/task2.png b/report/images/task2a.png similarity index 100% rename from report/images/task2.png rename to report/images/task2a.png diff --git a/report/images/task2b.png b/report/images/task2b.png new file mode 100644 index 0000000000000000000000000000000000000000..1fcafc4bdebbbde425a202e9212e09551d1d8051 GIT binary patch literal 7349 zcmeAS@N?(olHy`uVBq!ia0y~yV2xm4VCmvuVqjoUk(?yPz#voO>EaktG3U*Vjl2gG z7!GW>#M?RXfBsW$iKO@mmdWe>GJ-V!f6c(a!0O z8;tf1M*9Y%eS^`y!D!!Lv~MulHyG4?g9lrZ*+C5!hNeGj*>@T+F}S&aT5&xcAW}jQ zG&f?P1X7UT!otA7aG(PmpMruQX=No4IjUhaltz;VC?{aa51bp0bK1IF#wCE{Jzf1= J);T3K0RU45A3p#9 literal 0 HcmV?d00001 diff --git a/report/images/task2d1.png b/report/images/task2d1.png new file mode 100644 index 0000000000000000000000000000000000000000..af3757ef9b3bca76803bdac095d4ac1ff5f7be6a GIT binary patch literal 12393 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 GLK6T?a(LMQ literal 0 HcmV?d00001 diff --git a/report/images/task2d2.png b/report/images/task2d2.png new file mode 100644 index 0000000000000000000000000000000000000000..f81e9f34dc7623db5a453b6637a2fab2b4805ffa GIT binary patch literal 12567 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 literal 0 HcmV?d00001 diff --git a/report/images/task3a.png b/report/images/task3a.png new file mode 100644 index 0000000000000000000000000000000000000000..21c672938fe4925041a2606cdf451532b1950cb6 GIT binary patch literal 11732 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