From 5f839b88ae846c4059652669100c912d09cbe458 Mon Sep 17 00:00:00 2001 From: CrispyPin Date: Sun, 18 Aug 2024 18:30:25 +0200 Subject: [PATCH] qr shader: add version information for size 7+ --- Assets/test/QRCode.shader | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/Assets/test/QRCode.shader b/Assets/test/QRCode.shader index da4b72a..cec001d 100644 --- a/Assets/test/QRCode.shader +++ b/Assets/test/QRCode.shader @@ -52,6 +52,9 @@ CGPROGRAM #define FORMAT_BITS_RAW ((EC_LEVEL << 3) | MASK_TYPE) #define FORMAT_BITS FORMAT_BIT_SETS[FORMAT_BITS_RAW] + static const uint VERSION_BIT_SETS[34] = {0x07C94,0x085BC,0x09A99,0x0A4D3,0x0BBF6,0x0C762,0x0D847,0x0E60D,0x0F928,0x10B78,0x1145D,0x12A17,0x13532,0x149A6,0x15683,0x168C9,0x177EC,0x18EC4,0x191E1,0x1AFAB,0x1B08E,0x1CC1A,0x1D33F,0x1ED75,0x1F250,0x209D5,0x216F0,0x228BA,0x2379F,0x24B0B,0x2542E,0x26A64,0x27541,0x28C69}; + #define VERSION_BITS (VERSION > 6 ? VERSION_BIT_SETS[VERSION - 7] : 0) + #define WHITE 1 #define BLACK 0 #define PINK float3(1, .3, .5) @@ -121,6 +124,18 @@ CGPROGRAM // bottom if (px == 8 && py > WIDTH - 8) return (FORMAT_BITS & (1 << py + 15 - WIDTH)) == 0; + // version information + if (VERSION > 6) { + if (px < 6 && py > WIDTH - 12) { + uint b = px * 3 + py - (WIDTH - 11) ; + return ((VERSION_BITS >> b) & 1) == 0; + } + if (px > WIDTH - 12 && py < 6) { + uint b = px - (WIDTH - 11) + py * 3; + return ((VERSION_BITS >> b) & 1) == 0; + } + } + // data bit layout uint column = (WIDTH - px - (px < 6)-1)/2; uint direction_up = column % 2 == 0;