Move gamma correction from software to LUT

This commit is contained in:
fruchti 2020-09-21 00:31:44 +02:00
parent e13d522f4e
commit ad433e2452
5 changed files with 266 additions and 267 deletions

View file

@ -1 +1 @@
482 507

View file

@ -2,259 +2,260 @@
const LED_Colour_t Animation_ColourLUT[] = const LED_Colour_t Animation_ColourLUT[] =
{ {
{ .r = 255, .g = 51, .b = 51 }, { .r = 4096, .g = 119, .b = 119 },
{ .r = 255, .g = 51, .b = 56 }, { .r = 4096, .g = 145, .b = 119 },
{ .r = 255, .g = 51, .b = 61 }, { .r = 4096, .g = 173, .b = 119 },
{ .r = 255, .g = 51, .b = 65 }, { .r = 4096, .g = 205, .b = 119 },
{ .r = 255, .g = 51, .b = 70 }, { .r = 4096, .g = 239, .b = 119 },
{ .r = 255, .g = 51, .b = 75 }, { .r = 4096, .g = 277, .b = 119 },
{ .r = 255, .g = 51, .b = 80 }, { .r = 4096, .g = 317, .b = 119 },
{ .r = 255, .g = 51, .b = 85 }, { .r = 4096, .g = 360, .b = 119 },
{ .r = 255, .g = 51, .b = 89 }, { .r = 4096, .g = 407, .b = 119 },
{ .r = 255, .g = 51, .b = 94 }, { .r = 4096, .g = 456, .b = 119 },
{ .r = 255, .g = 51, .b = 99 }, { .r = 4096, .g = 509, .b = 119 },
{ .r = 255, .g = 51, .b = 104 }, { .r = 4096, .g = 565, .b = 119 },
{ .r = 255, .g = 51, .b = 109 }, { .r = 4096, .g = 623, .b = 119 },
{ .r = 255, .g = 51, .b = 113 }, { .r = 4096, .g = 686, .b = 119 },
{ .r = 255, .g = 51, .b = 118 }, { .r = 4096, .g = 751, .b = 119 },
{ .r = 255, .g = 51, .b = 123 }, { .r = 4096, .g = 820, .b = 119 },
{ .r = 255, .g = 51, .b = 128 }, { .r = 4096, .g = 891, .b = 119 },
{ .r = 255, .g = 51, .b = 133 }, { .r = 4096, .g = 967, .b = 119 },
{ .r = 255, .g = 51, .b = 137 }, { .r = 4096, .g = 1045, .b = 119 },
{ .r = 255, .g = 51, .b = 142 }, { .r = 4096, .g = 1127, .b = 119 },
{ .r = 255, .g = 51, .b = 147 }, { .r = 4096, .g = 1212, .b = 119 },
{ .r = 255, .g = 51, .b = 152 }, { .r = 4096, .g = 1301, .b = 119 },
{ .r = 255, .g = 51, .b = 157 }, { .r = 4096, .g = 1393, .b = 119 },
{ .r = 255, .g = 51, .b = 161 }, { .r = 4096, .g = 1489, .b = 119 },
{ .r = 255, .g = 51, .b = 166 }, { .r = 4096, .g = 1588, .b = 119 },
{ .r = 255, .g = 51, .b = 171 }, { .r = 4096, .g = 1690, .b = 119 },
{ .r = 255, .g = 51, .b = 176 }, { .r = 4096, .g = 1796, .b = 119 },
{ .r = 255, .g = 51, .b = 181 }, { .r = 4096, .g = 1906, .b = 119 },
{ .r = 255, .g = 51, .b = 185 }, { .r = 4096, .g = 2019, .b = 119 },
{ .r = 255, .g = 51, .b = 190 }, { .r = 4096, .g = 2135, .b = 119 },
{ .r = 255, .g = 51, .b = 195 }, { .r = 4096, .g = 2256, .b = 119 },
{ .r = 255, .g = 51, .b = 200 }, { .r = 4096, .g = 2380, .b = 119 },
{ .r = 255, .g = 51, .b = 205 }, { .r = 4096, .g = 2507, .b = 119 },
{ .r = 255, .g = 51, .b = 209 }, { .r = 4096, .g = 2638, .b = 119 },
{ .r = 255, .g = 51, .b = 214 }, { .r = 4096, .g = 2773, .b = 119 },
{ .r = 255, .g = 51, .b = 219 }, { .r = 4096, .g = 2911, .b = 119 },
{ .r = 255, .g = 51, .b = 224 }, { .r = 4096, .g = 3053, .b = 119 },
{ .r = 255, .g = 51, .b = 229 }, { .r = 4096, .g = 3199, .b = 119 },
{ .r = 255, .g = 51, .b = 233 }, { .r = 4096, .g = 3349, .b = 119 },
{ .r = 255, .g = 51, .b = 238 }, { .r = 4096, .g = 3502, .b = 119 },
{ .r = 255, .g = 51, .b = 243 }, { .r = 4096, .g = 3659, .b = 119 },
{ .r = 255, .g = 51, .b = 248 }, { .r = 4096, .g = 3820, .b = 119 },
{ .r = 255, .g = 51, .b = 253 }, { .r = 4096, .g = 3984, .b = 119 },
{ .r = 253, .g = 51, .b = 255 }, { .r = 4040, .g = 4096, .b = 119 },
{ .r = 248, .g = 51, .b = 255 }, { .r = 3874, .g = 4096, .b = 119 },
{ .r = 243, .g = 51, .b = 255 }, { .r = 3712, .g = 4096, .b = 119 },
{ .r = 238, .g = 51, .b = 255 }, { .r = 3554, .g = 4096, .b = 119 },
{ .r = 233, .g = 51, .b = 255 }, { .r = 3399, .g = 4096, .b = 119 },
{ .r = 229, .g = 51, .b = 255 }, { .r = 3249, .g = 4096, .b = 119 },
{ .r = 224, .g = 51, .b = 255 }, { .r = 3102, .g = 4096, .b = 119 },
{ .r = 219, .g = 51, .b = 255 }, { .r = 2958, .g = 4096, .b = 119 },
{ .r = 214, .g = 51, .b = 255 }, { .r = 2819, .g = 4096, .b = 119 },
{ .r = 209, .g = 51, .b = 255 }, { .r = 2683, .g = 4096, .b = 119 },
{ .r = 205, .g = 51, .b = 255 }, { .r = 2550, .g = 4096, .b = 119 },
{ .r = 200, .g = 51, .b = 255 }, { .r = 2422, .g = 4096, .b = 119 },
{ .r = 195, .g = 51, .b = 255 }, { .r = 2297, .g = 4096, .b = 119 },
{ .r = 190, .g = 51, .b = 255 }, { .r = 2175, .g = 4096, .b = 119 },
{ .r = 185, .g = 51, .b = 255 }, { .r = 2057, .g = 4096, .b = 119 },
{ .r = 181, .g = 51, .b = 255 }, { .r = 1943, .g = 4096, .b = 119 },
{ .r = 176, .g = 51, .b = 255 }, { .r = 1832, .g = 4096, .b = 119 },
{ .r = 171, .g = 51, .b = 255 }, { .r = 1725, .g = 4096, .b = 119 },
{ .r = 166, .g = 51, .b = 255 }, { .r = 1621, .g = 4096, .b = 119 },
{ .r = 161, .g = 51, .b = 255 }, { .r = 1521, .g = 4096, .b = 119 },
{ .r = 157, .g = 51, .b = 255 }, { .r = 1425, .g = 4096, .b = 119 },
{ .r = 152, .g = 51, .b = 255 }, { .r = 1331, .g = 4096, .b = 119 },
{ .r = 147, .g = 51, .b = 255 }, { .r = 1242, .g = 4096, .b = 119 },
{ .r = 142, .g = 51, .b = 255 }, { .r = 1155, .g = 4096, .b = 119 },
{ .r = 137, .g = 51, .b = 255 }, { .r = 1072, .g = 4096, .b = 119 },
{ .r = 133, .g = 51, .b = 255 }, { .r = 992, .g = 4096, .b = 119 },
{ .r = 128, .g = 51, .b = 255 }, { .r = 916, .g = 4096, .b = 119 },
{ .r = 123, .g = 51, .b = 255 }, { .r = 843, .g = 4096, .b = 119 },
{ .r = 118, .g = 51, .b = 255 }, { .r = 773, .g = 4096, .b = 119 },
{ .r = 113, .g = 51, .b = 255 }, { .r = 707, .g = 4096, .b = 119 },
{ .r = 109, .g = 51, .b = 255 }, { .r = 644, .g = 4096, .b = 119 },
{ .r = 104, .g = 51, .b = 255 }, { .r = 584, .g = 4096, .b = 119 },
{ .r = 99, .g = 51, .b = 255 }, { .r = 527, .g = 4096, .b = 119 },
{ .r = 94, .g = 51, .b = 255 }, { .r = 473, .g = 4096, .b = 119 },
{ .r = 89, .g = 51, .b = 255 }, { .r = 423, .g = 4096, .b = 119 },
{ .r = 85, .g = 51, .b = 255 }, { .r = 375, .g = 4096, .b = 119 },
{ .r = 80, .g = 51, .b = 255 }, { .r = 331, .g = 4096, .b = 119 },
{ .r = 75, .g = 51, .b = 255 }, { .r = 290, .g = 4096, .b = 119 },
{ .r = 70, .g = 51, .b = 255 }, { .r = 251, .g = 4096, .b = 119 },
{ .r = 65, .g = 51, .b = 255 }, { .r = 216, .g = 4096, .b = 119 },
{ .r = 61, .g = 51, .b = 255 }, { .r = 184, .g = 4096, .b = 119 },
{ .r = 56, .g = 51, .b = 255 }, { .r = 154, .g = 4096, .b = 119 },
{ .r = 51, .g = 51, .b = 255 }, { .r = 127, .g = 4096, .b = 119 },
{ .r = 51, .g = 56, .b = 255 }, { .r = 119, .g = 4096, .b = 136 },
{ .r = 51, .g = 61, .b = 255 }, { .r = 119, .g = 4096, .b = 163 },
{ .r = 51, .g = 65, .b = 255 }, { .r = 119, .g = 4096, .b = 194 },
{ .r = 51, .g = 70, .b = 255 }, { .r = 119, .g = 4096, .b = 227 },
{ .r = 51, .g = 75, .b = 255 }, { .r = 119, .g = 4096, .b = 264 },
{ .r = 51, .g = 80, .b = 255 }, { .r = 119, .g = 4096, .b = 303 },
{ .r = 51, .g = 85, .b = 255 }, { .r = 119, .g = 4096, .b = 346 },
{ .r = 51, .g = 89, .b = 255 }, { .r = 119, .g = 4096, .b = 391 },
{ .r = 51, .g = 94, .b = 255 }, { .r = 119, .g = 4096, .b = 439 },
{ .r = 51, .g = 99, .b = 255 }, { .r = 119, .g = 4096, .b = 491 },
{ .r = 51, .g = 104, .b = 255 }, { .r = 119, .g = 4096, .b = 546 },
{ .r = 51, .g = 109, .b = 255 }, { .r = 119, .g = 4096, .b = 603 },
{ .r = 51, .g = 113, .b = 255 }, { .r = 119, .g = 4096, .b = 665 },
{ .r = 51, .g = 118, .b = 255 }, { .r = 119, .g = 4096, .b = 729 },
{ .r = 51, .g = 123, .b = 255 }, { .r = 119, .g = 4096, .b = 796 },
{ .r = 51, .g = 128, .b = 255 }, { .r = 119, .g = 4096, .b = 867 },
{ .r = 51, .g = 133, .b = 255 }, { .r = 119, .g = 4096, .b = 941 },
{ .r = 51, .g = 137, .b = 255 }, { .r = 119, .g = 4096, .b = 1019 },
{ .r = 51, .g = 142, .b = 255 }, { .r = 119, .g = 4096, .b = 1099 },
{ .r = 51, .g = 147, .b = 255 }, { .r = 119, .g = 4096, .b = 1184 },
{ .r = 51, .g = 152, .b = 255 }, { .r = 119, .g = 4096, .b = 1271 },
{ .r = 51, .g = 157, .b = 255 }, { .r = 119, .g = 4096, .b = 1362 },
{ .r = 51, .g = 161, .b = 255 }, { .r = 119, .g = 4096, .b = 1456 },
{ .r = 51, .g = 166, .b = 255 }, { .r = 119, .g = 4096, .b = 1554 },
{ .r = 51, .g = 171, .b = 255 }, { .r = 119, .g = 4096, .b = 1656 },
{ .r = 51, .g = 176, .b = 255 }, { .r = 119, .g = 4096, .b = 1760 },
{ .r = 51, .g = 181, .b = 255 }, { .r = 119, .g = 4096, .b = 1869 },
{ .r = 51, .g = 185, .b = 255 }, { .r = 119, .g = 4096, .b = 1981 },
{ .r = 51, .g = 190, .b = 255 }, { .r = 119, .g = 4096, .b = 2096 },
{ .r = 51, .g = 195, .b = 255 }, { .r = 119, .g = 4096, .b = 2215 },
{ .r = 51, .g = 200, .b = 255 }, { .r = 119, .g = 4096, .b = 2338 },
{ .r = 51, .g = 205, .b = 255 }, { .r = 119, .g = 4096, .b = 2464 },
{ .r = 51, .g = 209, .b = 255 }, { .r = 119, .g = 4096, .b = 2594 },
{ .r = 51, .g = 214, .b = 255 }, { .r = 119, .g = 4096, .b = 2728 },
{ .r = 51, .g = 219, .b = 255 }, { .r = 119, .g = 4096, .b = 2865 },
{ .r = 51, .g = 224, .b = 255 }, { .r = 119, .g = 4096, .b = 3006 },
{ .r = 51, .g = 229, .b = 255 }, { .r = 119, .g = 4096, .b = 3150 },
{ .r = 51, .g = 233, .b = 255 }, { .r = 119, .g = 4096, .b = 3298 },
{ .r = 51, .g = 238, .b = 255 }, { .r = 119, .g = 4096, .b = 3450 },
{ .r = 51, .g = 243, .b = 255 }, { .r = 119, .g = 4096, .b = 3606 },
{ .r = 51, .g = 248, .b = 255 }, { .r = 119, .g = 4096, .b = 3766 },
{ .r = 51, .g = 253, .b = 255 }, { .r = 119, .g = 4096, .b = 3929 },
{ .r = 51, .g = 255, .b = 253 }, { .r = 119, .g = 4096, .b = 4096 },
{ .r = 51, .g = 255, .b = 248 }, { .r = 119, .g = 3929, .b = 4096 },
{ .r = 51, .g = 255, .b = 243 }, { .r = 119, .g = 3766, .b = 4096 },
{ .r = 51, .g = 255, .b = 238 }, { .r = 119, .g = 3606, .b = 4096 },
{ .r = 51, .g = 255, .b = 233 }, { .r = 119, .g = 3450, .b = 4096 },
{ .r = 51, .g = 255, .b = 229 }, { .r = 119, .g = 3298, .b = 4096 },
{ .r = 51, .g = 255, .b = 224 }, { .r = 119, .g = 3150, .b = 4096 },
{ .r = 51, .g = 255, .b = 219 }, { .r = 119, .g = 3006, .b = 4096 },
{ .r = 51, .g = 255, .b = 214 }, { .r = 119, .g = 2865, .b = 4096 },
{ .r = 51, .g = 255, .b = 209 }, { .r = 119, .g = 2728, .b = 4096 },
{ .r = 51, .g = 255, .b = 205 }, { .r = 119, .g = 2594, .b = 4096 },
{ .r = 51, .g = 255, .b = 200 }, { .r = 119, .g = 2464, .b = 4096 },
{ .r = 51, .g = 255, .b = 195 }, { .r = 119, .g = 2338, .b = 4096 },
{ .r = 51, .g = 255, .b = 190 }, { .r = 119, .g = 2215, .b = 4096 },
{ .r = 51, .g = 255, .b = 185 }, { .r = 119, .g = 2096, .b = 4096 },
{ .r = 51, .g = 255, .b = 181 }, { .r = 119, .g = 1981, .b = 4096 },
{ .r = 51, .g = 255, .b = 176 }, { .r = 119, .g = 1869, .b = 4096 },
{ .r = 51, .g = 255, .b = 171 }, { .r = 119, .g = 1760, .b = 4096 },
{ .r = 51, .g = 255, .b = 166 }, { .r = 119, .g = 1656, .b = 4096 },
{ .r = 51, .g = 255, .b = 161 }, { .r = 119, .g = 1554, .b = 4096 },
{ .r = 51, .g = 255, .b = 157 }, { .r = 119, .g = 1456, .b = 4096 },
{ .r = 51, .g = 255, .b = 152 }, { .r = 119, .g = 1362, .b = 4096 },
{ .r = 51, .g = 255, .b = 147 }, { .r = 119, .g = 1271, .b = 4096 },
{ .r = 51, .g = 255, .b = 142 }, { .r = 119, .g = 1184, .b = 4096 },
{ .r = 51, .g = 255, .b = 137 }, { .r = 119, .g = 1099, .b = 4096 },
{ .r = 51, .g = 255, .b = 133 }, { .r = 119, .g = 1019, .b = 4096 },
{ .r = 51, .g = 255, .b = 128 }, { .r = 119, .g = 941, .b = 4096 },
{ .r = 51, .g = 255, .b = 123 }, { .r = 119, .g = 867, .b = 4096 },
{ .r = 51, .g = 255, .b = 118 }, { .r = 119, .g = 796, .b = 4096 },
{ .r = 51, .g = 255, .b = 113 }, { .r = 119, .g = 729, .b = 4096 },
{ .r = 51, .g = 255, .b = 109 }, { .r = 119, .g = 665, .b = 4096 },
{ .r = 51, .g = 255, .b = 104 }, { .r = 119, .g = 603, .b = 4096 },
{ .r = 51, .g = 255, .b = 99 }, { .r = 119, .g = 546, .b = 4096 },
{ .r = 51, .g = 255, .b = 94 }, { .r = 119, .g = 491, .b = 4096 },
{ .r = 51, .g = 255, .b = 89 }, { .r = 119, .g = 439, .b = 4096 },
{ .r = 51, .g = 255, .b = 85 }, { .r = 119, .g = 391, .b = 4096 },
{ .r = 51, .g = 255, .b = 80 }, { .r = 119, .g = 346, .b = 4096 },
{ .r = 51, .g = 255, .b = 75 }, { .r = 119, .g = 303, .b = 4096 },
{ .r = 51, .g = 255, .b = 70 }, { .r = 119, .g = 264, .b = 4096 },
{ .r = 51, .g = 255, .b = 65 }, { .r = 119, .g = 227, .b = 4096 },
{ .r = 51, .g = 255, .b = 61 }, { .r = 119, .g = 194, .b = 4096 },
{ .r = 51, .g = 255, .b = 56 }, { .r = 119, .g = 163, .b = 4096 },
{ .r = 51, .g = 255, .b = 51 }, { .r = 119, .g = 136, .b = 4096 },
{ .r = 56, .g = 255, .b = 51 }, { .r = 127, .g = 119, .b = 4096 },
{ .r = 61, .g = 255, .b = 51 }, { .r = 154, .g = 119, .b = 4096 },
{ .r = 65, .g = 255, .b = 51 }, { .r = 184, .g = 119, .b = 4096 },
{ .r = 70, .g = 255, .b = 51 }, { .r = 216, .g = 119, .b = 4096 },
{ .r = 75, .g = 255, .b = 51 }, { .r = 251, .g = 119, .b = 4096 },
{ .r = 80, .g = 255, .b = 51 }, { .r = 290, .g = 119, .b = 4096 },
{ .r = 85, .g = 255, .b = 51 }, { .r = 331, .g = 119, .b = 4096 },
{ .r = 89, .g = 255, .b = 51 }, { .r = 375, .g = 119, .b = 4096 },
{ .r = 94, .g = 255, .b = 51 }, { .r = 423, .g = 119, .b = 4096 },
{ .r = 99, .g = 255, .b = 51 }, { .r = 473, .g = 119, .b = 4096 },
{ .r = 104, .g = 255, .b = 51 }, { .r = 527, .g = 119, .b = 4096 },
{ .r = 109, .g = 255, .b = 51 }, { .r = 584, .g = 119, .b = 4096 },
{ .r = 113, .g = 255, .b = 51 }, { .r = 644, .g = 119, .b = 4096 },
{ .r = 118, .g = 255, .b = 51 }, { .r = 707, .g = 119, .b = 4096 },
{ .r = 123, .g = 255, .b = 51 }, { .r = 773, .g = 119, .b = 4096 },
{ .r = 128, .g = 255, .b = 51 }, { .r = 843, .g = 119, .b = 4096 },
{ .r = 133, .g = 255, .b = 51 }, { .r = 916, .g = 119, .b = 4096 },
{ .r = 137, .g = 255, .b = 51 }, { .r = 992, .g = 119, .b = 4096 },
{ .r = 142, .g = 255, .b = 51 }, { .r = 1072, .g = 119, .b = 4096 },
{ .r = 147, .g = 255, .b = 51 }, { .r = 1155, .g = 119, .b = 4096 },
{ .r = 152, .g = 255, .b = 51 }, { .r = 1242, .g = 119, .b = 4096 },
{ .r = 157, .g = 255, .b = 51 }, { .r = 1331, .g = 119, .b = 4096 },
{ .r = 161, .g = 255, .b = 51 }, { .r = 1425, .g = 119, .b = 4096 },
{ .r = 166, .g = 255, .b = 51 }, { .r = 1521, .g = 119, .b = 4096 },
{ .r = 171, .g = 255, .b = 51 }, { .r = 1621, .g = 119, .b = 4096 },
{ .r = 176, .g = 255, .b = 51 }, { .r = 1725, .g = 119, .b = 4096 },
{ .r = 181, .g = 255, .b = 51 }, { .r = 1832, .g = 119, .b = 4096 },
{ .r = 185, .g = 255, .b = 51 }, { .r = 1943, .g = 119, .b = 4096 },
{ .r = 190, .g = 255, .b = 51 }, { .r = 2057, .g = 119, .b = 4096 },
{ .r = 195, .g = 255, .b = 51 }, { .r = 2175, .g = 119, .b = 4096 },
{ .r = 200, .g = 255, .b = 51 }, { .r = 2297, .g = 119, .b = 4096 },
{ .r = 205, .g = 255, .b = 51 }, { .r = 2422, .g = 119, .b = 4096 },
{ .r = 209, .g = 255, .b = 51 }, { .r = 2550, .g = 119, .b = 4096 },
{ .r = 214, .g = 255, .b = 51 }, { .r = 2683, .g = 119, .b = 4096 },
{ .r = 219, .g = 255, .b = 51 }, { .r = 2819, .g = 119, .b = 4096 },
{ .r = 224, .g = 255, .b = 51 }, { .r = 2958, .g = 119, .b = 4096 },
{ .r = 229, .g = 255, .b = 51 }, { .r = 3102, .g = 119, .b = 4096 },
{ .r = 233, .g = 255, .b = 51 }, { .r = 3249, .g = 119, .b = 4096 },
{ .r = 238, .g = 255, .b = 51 }, { .r = 3399, .g = 119, .b = 4096 },
{ .r = 243, .g = 255, .b = 51 }, { .r = 3554, .g = 119, .b = 4096 },
{ .r = 248, .g = 255, .b = 51 }, { .r = 3712, .g = 119, .b = 4096 },
{ .r = 253, .g = 255, .b = 51 }, { .r = 3874, .g = 119, .b = 4096 },
{ .r = 255, .g = 253, .b = 51 }, { .r = 4040, .g = 119, .b = 4096 },
{ .r = 255, .g = 248, .b = 51 }, { .r = 4096, .g = 119, .b = 3984 },
{ .r = 255, .g = 243, .b = 51 }, { .r = 4096, .g = 119, .b = 3820 },
{ .r = 255, .g = 238, .b = 51 }, { .r = 4096, .g = 119, .b = 3659 },
{ .r = 255, .g = 233, .b = 51 }, { .r = 4096, .g = 119, .b = 3502 },
{ .r = 255, .g = 229, .b = 51 }, { .r = 4096, .g = 119, .b = 3349 },
{ .r = 255, .g = 224, .b = 51 }, { .r = 4096, .g = 119, .b = 3199 },
{ .r = 255, .g = 219, .b = 51 }, { .r = 4096, .g = 119, .b = 3053 },
{ .r = 255, .g = 214, .b = 51 }, { .r = 4096, .g = 119, .b = 2911 },
{ .r = 255, .g = 209, .b = 51 }, { .r = 4096, .g = 119, .b = 2773 },
{ .r = 255, .g = 205, .b = 51 }, { .r = 4096, .g = 119, .b = 2638 },
{ .r = 255, .g = 200, .b = 51 }, { .r = 4096, .g = 119, .b = 2507 },
{ .r = 255, .g = 195, .b = 51 }, { .r = 4096, .g = 119, .b = 2380 },
{ .r = 255, .g = 190, .b = 51 }, { .r = 4096, .g = 119, .b = 2256 },
{ .r = 255, .g = 185, .b = 51 }, { .r = 4096, .g = 119, .b = 2135 },
{ .r = 255, .g = 181, .b = 51 }, { .r = 4096, .g = 119, .b = 2019 },
{ .r = 255, .g = 176, .b = 51 }, { .r = 4096, .g = 119, .b = 1906 },
{ .r = 255, .g = 171, .b = 51 }, { .r = 4096, .g = 119, .b = 1796 },
{ .r = 255, .g = 166, .b = 51 }, { .r = 4096, .g = 119, .b = 1690 },
{ .r = 255, .g = 161, .b = 51 }, { .r = 4096, .g = 119, .b = 1588 },
{ .r = 255, .g = 157, .b = 51 }, { .r = 4096, .g = 119, .b = 1489 },
{ .r = 255, .g = 152, .b = 51 }, { .r = 4096, .g = 119, .b = 1393 },
{ .r = 255, .g = 147, .b = 51 }, { .r = 4096, .g = 119, .b = 1301 },
{ .r = 255, .g = 142, .b = 51 }, { .r = 4096, .g = 119, .b = 1212 },
{ .r = 255, .g = 137, .b = 51 }, { .r = 4096, .g = 119, .b = 1127 },
{ .r = 255, .g = 133, .b = 51 }, { .r = 4096, .g = 119, .b = 1045 },
{ .r = 255, .g = 128, .b = 51 }, { .r = 4096, .g = 119, .b = 967 },
{ .r = 255, .g = 123, .b = 51 }, { .r = 4096, .g = 119, .b = 891 },
{ .r = 255, .g = 118, .b = 51 }, { .r = 4096, .g = 119, .b = 820 },
{ .r = 255, .g = 113, .b = 51 }, { .r = 4096, .g = 119, .b = 751 },
{ .r = 255, .g = 109, .b = 51 }, { .r = 4096, .g = 119, .b = 686 },
{ .r = 255, .g = 104, .b = 51 }, { .r = 4096, .g = 119, .b = 623 },
{ .r = 255, .g = 99, .b = 51 }, { .r = 4096, .g = 119, .b = 565 },
{ .r = 255, .g = 94, .b = 51 }, { .r = 4096, .g = 119, .b = 509 },
{ .r = 255, .g = 89, .b = 51 }, { .r = 4096, .g = 119, .b = 456 },
{ .r = 255, .g = 85, .b = 51 }, { .r = 4096, .g = 119, .b = 407 },
{ .r = 255, .g = 80, .b = 51 }, { .r = 4096, .g = 119, .b = 360 },
{ .r = 255, .g = 75, .b = 51 }, { .r = 4096, .g = 119, .b = 317 },
{ .r = 255, .g = 70, .b = 51 }, { .r = 4096, .g = 119, .b = 277 },
{ .r = 255, .g = 65, .b = 51 }, { .r = 4096, .g = 119, .b = 239 },
{ .r = 255, .g = 61, .b = 51 }, { .r = 4096, .g = 119, .b = 205 },
{ .r = 255, .g = 56, .b = 51 }, { .r = 4096, .g = 119, .b = 173 },
{ .r = 4096, .g = 119, .b = 145 },
}; };

View file

@ -2,4 +2,4 @@
#include "led.h" #include "led.h"
extern const LED_Colour_t Animation_ColourLUT[255]; extern const LED_Colour_t Animation_ColourLUT[256];

View file

@ -105,15 +105,13 @@ void LED_Commit(void)
{ {
for(int i = 0; i < LED_COLUMNS; i++) for(int i = 0; i < LED_COLUMNS; i++)
{ {
// Use pixel data as a raw byte buffer to get R, G, B in order // Use pixel data as a raw word buffer to get R, G, B in order
uint8_t colour_value = ((uint8_t*)LED_PixelData)[r * LED_COLUMNS + i]; uint16_t colour_value =
uint16_t gamma_corrected = (uint16_t)colour_value; ((uint16_t*)LED_PixelData)[r * LED_COLUMNS + i];
gamma_corrected *= gamma_corrected;
gamma_corrected >>= 16 - LED_BITS;
for(int j = 0; j < LED_BITS; j++) for(int j = 0; j < LED_BITS; j++)
{ {
if(gamma_corrected & (1 << j)) if(colour_value & (1 << j))
{ {
LED_BackBuffer[r * (LED_BITS + 1) + j] &= LED_BackBuffer[r * (LED_BITS + 1) + j] &=
~(1 << LED_Pins[i]); ~(1 << LED_Pins[i]);

View file

@ -14,10 +14,10 @@
typedef struct typedef struct
{ {
uint8_t r; uint16_t r;
uint8_t g; uint16_t g;
uint8_t b; uint16_t b;
} __attribute__((packed)) LED_Colour_t; } __attribute__((packed, aligned(2))) LED_Colour_t;
// Pixel data, not displayed until LED_Commit() is called // Pixel data, not displayed until LED_Commit() is called
extern LED_Colour_t LED_PixelData[LED_COUNT]; extern LED_Colour_t LED_PixelData[LED_COUNT];