mirror of
https://github.com/curioustorvald/Terrarum.git
synced 2026-06-21 07:54:05 +09:00
better implementation of dithering which relies on external texture and it runs faster
This commit is contained in:
@@ -12,268 +12,7 @@
|
||||
varying vec4 v_color;
|
||||
varying vec2 v_texCoords;
|
||||
uniform sampler2D u_texture;
|
||||
|
||||
vec4 bayerTex[256] = vec4[](
|
||||
vec4(111, 82, 65, 205),
|
||||
vec4( 65, 133, 0, 255),
|
||||
vec4( 88, 9, 134, 25),
|
||||
vec4(231, 39, 185, 105),
|
||||
vec4(152, 139, 66, 161),
|
||||
vec4(170, 203, 35, 91),
|
||||
vec4( 78, 3, 115, 247),
|
||||
vec4(193, 59, 144, 22),
|
||||
vec4(156, 148, 157, 165),
|
||||
vec4(131, 233, 245, 114),
|
||||
vec4(202, 132, 57, 192),
|
||||
vec4(162, 31, 15, 30),
|
||||
vec4( 17, 63, 83, 217),
|
||||
vec4(189, 214, 39, 147),
|
||||
vec4(168, 106, 129, 71),
|
||||
vec4( 1, 195, 243, 135),
|
||||
vec4(213, 232, 75, 173),
|
||||
vec4(175, 161, 233, 122),
|
||||
vec4( 26, 213, 203, 142),
|
||||
vec4(118, 251, 21, 234),
|
||||
vec4( 7, 70, 86, 1),
|
||||
vec4(222, 113, 162, 218),
|
||||
vec4(105, 244, 249, 150),
|
||||
vec4( 51, 124, 49, 186),
|
||||
vec4(229, 183, 11, 41),
|
||||
vec4( 4, 22, 90, 65),
|
||||
vec4( 43, 115, 186, 252),
|
||||
vec4(141, 166, 165, 131),
|
||||
vec4(221, 239, 202, 53),
|
||||
vec4( 69, 1, 228, 20),
|
||||
vec4(230, 123, 173, 226),
|
||||
vec4(130, 43, 29, 39),
|
||||
vec4(251, 28, 124, 15),
|
||||
vec4( 79, 90, 98, 216),
|
||||
vec4(137, 53, 145, 47),
|
||||
vec4(203, 197, 225, 198),
|
||||
vec4(190, 25, 54, 60),
|
||||
vec4( 38, 172, 130, 133),
|
||||
vec4(143, 46, 218, 75),
|
||||
vec4(243, 97, 105, 124),
|
||||
vec4(115, 218, 201, 227),
|
||||
vec4( 81, 68, 123, 84),
|
||||
vec4( 97, 207, 32, 4),
|
||||
vec4(254, 84, 133, 179),
|
||||
vec4( 55, 50, 99, 79),
|
||||
vec4(119, 184, 9, 160),
|
||||
vec4( 92, 141, 108, 189),
|
||||
vec4( 47, 246, 194, 86),
|
||||
vec4(185, 67, 48, 111),
|
||||
vec4( 14, 147, 170, 157),
|
||||
vec4( 54, 122, 12, 70),
|
||||
vec4(235, 105, 110, 98),
|
||||
vec4( 70, 155, 197, 180),
|
||||
vec4( 94, 85, 177, 31),
|
||||
vec4( 21, 224, 4, 239),
|
||||
vec4(167, 30, 78, 14),
|
||||
vec4(183, 162, 172, 106),
|
||||
vec4(212, 6, 234, 209),
|
||||
vec4(151, 254, 221, 144),
|
||||
vec4(178, 103, 73, 235),
|
||||
vec4( 23, 151, 250, 101),
|
||||
vec4(205, 221, 60, 119),
|
||||
vec4(154, 13, 156, 248),
|
||||
vec4( 31, 168, 217, 59),
|
||||
vec4(144, 209, 238, 238),
|
||||
vec4(223, 227, 37, 177),
|
||||
vec4(165, 182, 154, 11),
|
||||
vec4(108, 5, 254, 249),
|
||||
vec4(153, 238, 74, 164),
|
||||
vec4(253, 128, 30, 112),
|
||||
vec4(126, 190, 239, 201),
|
||||
vec4( 59, 145, 139, 49),
|
||||
vec4( 11, 78, 63, 172),
|
||||
vec4( 32, 200, 20, 156),
|
||||
vec4( 72, 135, 46, 27),
|
||||
vec4(107, 38, 148, 44),
|
||||
vec4(192, 193, 180, 196),
|
||||
vec4( 6, 72, 24, 9),
|
||||
vec4(242, 96, 140, 208),
|
||||
vec4(102, 114, 84, 138),
|
||||
vec4(199, 19, 182, 34),
|
||||
vec4(122, 45, 64, 81),
|
||||
vec4( 91, 79, 208, 128),
|
||||
vec4( 28, 36, 92, 211),
|
||||
vec4( 44, 212, 122, 23),
|
||||
vec4(187, 58, 44, 83),
|
||||
vec4(216, 11, 190, 139),
|
||||
vec4( 85, 241, 96, 223),
|
||||
vec4(198, 117, 159, 92),
|
||||
vec4(232, 55, 113, 58),
|
||||
vec4(136, 173, 193, 129),
|
||||
vec4(238, 15, 85, 215),
|
||||
vec4( 62, 125, 211, 69),
|
||||
vec4(129, 243, 118, 166),
|
||||
vec4(172, 54, 242, 26),
|
||||
vec4( 73, 179, 6, 95),
|
||||
vec4( 57, 129, 106, 224),
|
||||
vec4( 8, 252, 127, 199),
|
||||
vec4(247, 164, 227, 145),
|
||||
vec4(209, 201, 18, 43),
|
||||
vec4(173, 137, 168, 229),
|
||||
vec4( 0, 71, 150, 154),
|
||||
vec4(140, 177, 216, 67),
|
||||
vec4(104, 102, 14, 3),
|
||||
vec4(160, 41, 206, 194),
|
||||
vec4(121, 229, 252, 245),
|
||||
vec4( 41, 93, 128, 181),
|
||||
vec4(164, 236, 1, 110),
|
||||
vec4( 25, 160, 166, 241),
|
||||
vec4( 86, 29, 40, 149),
|
||||
vec4(225, 204, 70, 50),
|
||||
vec4( 40, 143, 198, 183),
|
||||
vec4(159, 231, 163, 64),
|
||||
vec4(179, 104, 26, 2),
|
||||
vec4(133, 91, 79, 115),
|
||||
vec4( 63, 23, 188, 56),
|
||||
vec4(116, 112, 58, 97),
|
||||
vec4( 77, 247, 246, 187),
|
||||
vec4(226, 158, 114, 254),
|
||||
vec4( 50, 18, 82, 37),
|
||||
vec4(249, 205, 53, 120),
|
||||
vec4( 19, 150, 33, 78),
|
||||
vec4( 95, 186, 224, 13),
|
||||
vec4(219, 64, 103, 36),
|
||||
vec4(197, 110, 55, 87),
|
||||
vec4(147, 216, 230, 127),
|
||||
vec4(114, 87, 95, 213),
|
||||
vec4(208, 2, 137, 108),
|
||||
vec4(233, 192, 251, 236),
|
||||
vec4( 20, 57, 50, 169),
|
||||
vec4( 84, 153, 204, 193),
|
||||
vec4(149, 188, 142, 242),
|
||||
vec4(240, 225, 101, 125),
|
||||
vec4( 36, 48, 8, 19),
|
||||
vec4(194, 86, 132, 176),
|
||||
vec4( 15, 215, 232, 103),
|
||||
vec4( 67, 121, 181, 162),
|
||||
vec4(206, 26, 143, 220),
|
||||
vec4(180, 80, 69, 140),
|
||||
vec4( 74, 7, 171, 171),
|
||||
vec4( 52, 140, 189, 230),
|
||||
vec4(250, 42, 149, 6),
|
||||
vec4( 13, 175, 215, 77),
|
||||
vec4( 98, 74, 16, 155),
|
||||
vec4( 68, 34, 176, 136),
|
||||
vec4(195, 217, 116, 21),
|
||||
vec4( 48, 14, 241, 88),
|
||||
vec4(220, 66, 38, 33),
|
||||
vec4(182, 171, 222, 210),
|
||||
vec4( 96, 32, 175, 76),
|
||||
vec4(155, 131, 71, 134),
|
||||
vec4(127, 185, 41, 54),
|
||||
vec4(171, 61, 158, 206),
|
||||
vec4(145, 248, 91, 24),
|
||||
vec4(112, 167, 22, 99),
|
||||
vec4( 2, 222, 244, 202),
|
||||
vec4(125, 196, 10, 62),
|
||||
vec4(184, 250, 121, 188),
|
||||
vec4( 35, 120, 34, 253),
|
||||
vec4(139, 157, 88, 40),
|
||||
vec4(106, 107, 152, 102),
|
||||
vec4(255, 134, 68, 72),
|
||||
vec4(123, 240, 2, 219),
|
||||
vec4( 30, 118, 160, 151),
|
||||
vec4( 10, 146, 89, 163),
|
||||
vec4(109, 99, 210, 8),
|
||||
vec4(236, 230, 27, 222),
|
||||
vec4(214, 0, 196, 237),
|
||||
vec4( 87, 144, 120, 148),
|
||||
vec4( 37, 108, 219, 68),
|
||||
vec4(246, 49, 199, 250),
|
||||
vec4(228, 130, 111, 48),
|
||||
vec4(158, 98, 80, 132),
|
||||
vec4( 83, 60, 236, 116),
|
||||
vec4(215, 24, 61, 18),
|
||||
vec4(169, 237, 192, 175),
|
||||
vec4( 5, 181, 231, 52),
|
||||
vec4(157, 47, 97, 244),
|
||||
vec4( 90, 81, 187, 184),
|
||||
vec4(204, 208, 126, 109),
|
||||
vec4(142, 10, 51, 61),
|
||||
vec4( 53, 255, 109, 190),
|
||||
vec4( 71, 73, 147, 117),
|
||||
vec4( 24, 199, 240, 42),
|
||||
vec4(188, 89, 3, 89),
|
||||
vec4( 58, 234, 59, 10),
|
||||
vec4(101, 33, 135, 182),
|
||||
vec4(135, 211, 47, 158),
|
||||
vec4( 27, 12, 155, 29),
|
||||
vec4( 64, 149, 207, 93),
|
||||
vec4(239, 88, 131, 221),
|
||||
vec4( 45, 202, 42, 207),
|
||||
vec4(132, 4, 13, 123),
|
||||
vec4(227, 165, 138, 7),
|
||||
vec4( 60, 95, 200, 141),
|
||||
vec4(174, 194, 226, 45),
|
||||
vec4(244, 40, 19, 251),
|
||||
vec4(163, 178, 253, 96),
|
||||
vec4(201, 52, 183, 28),
|
||||
vec4(120, 163, 77, 197),
|
||||
vec4(224, 20, 104, 168),
|
||||
vec4( 12, 180, 164, 126),
|
||||
vec4(166, 154, 248, 107),
|
||||
vec4(196, 76, 179, 225),
|
||||
vec4(207, 189, 28, 195),
|
||||
vec4( 93, 170, 100, 143),
|
||||
vec4(117, 228, 167, 82),
|
||||
vec4(191, 69, 220, 159),
|
||||
vec4( 75, 142, 112, 32),
|
||||
vec4(210, 245, 56, 200),
|
||||
vec4( 34, 27, 31, 85),
|
||||
vec4(113, 152, 81, 16),
|
||||
vec4( 80, 219, 169, 130),
|
||||
vec4( 3, 127, 62, 231),
|
||||
vec4(134, 109, 136, 146),
|
||||
vec4( 42, 136, 45, 80),
|
||||
vec4(148, 210, 205, 243),
|
||||
vec4(237, 65, 17, 214),
|
||||
vec4( 76, 119, 87, 38),
|
||||
vec4( 49, 242, 223, 73),
|
||||
vec4( 9, 51, 67, 246),
|
||||
vec4(150, 111, 5, 0),
|
||||
vec4(176, 37, 255, 63),
|
||||
vec4( 22, 126, 76, 233),
|
||||
vec4(100, 56, 146, 113),
|
||||
vec4(146, 223, 214, 153),
|
||||
vec4( 16, 116, 247, 228),
|
||||
vec4(186, 62, 119, 170),
|
||||
vec4(217, 77, 153, 212),
|
||||
vec4( 99, 16, 7, 66),
|
||||
vec4(252, 226, 94, 178),
|
||||
vec4(177, 35, 229, 5),
|
||||
vec4( 89, 249, 174, 137),
|
||||
vec4(110, 101, 125, 57),
|
||||
vec4(181, 8, 36, 17),
|
||||
vec4(124, 220, 141, 174),
|
||||
vec4(218, 138, 195, 121),
|
||||
vec4(234, 17, 117, 46),
|
||||
vec4( 56, 253, 184, 167),
|
||||
vec4(248, 206, 23, 185),
|
||||
vec4(200, 21, 161, 94),
|
||||
vec4(161, 100, 178, 55),
|
||||
vec4(241, 187, 43, 74),
|
||||
vec4( 46, 169, 102, 191),
|
||||
vec4(128, 235, 235, 35),
|
||||
vec4( 61, 94, 209, 118),
|
||||
vec4( 29, 159, 191, 51),
|
||||
vec4(211, 191, 25, 204),
|
||||
vec4( 18, 83, 72, 100),
|
||||
vec4( 66, 44, 213, 232),
|
||||
vec4(245, 174, 107, 152),
|
||||
vec4( 33, 198, 237, 90),
|
||||
vec4(103, 92, 151, 203),
|
||||
vec4( 82, 156, 52, 104),
|
||||
vec4(138, 75, 212, 240),
|
||||
vec4( 39, 176, 93, 12)
|
||||
);
|
||||
|
||||
float bayerSize = 16.0;
|
||||
float bayerDivider = bayerSize * bayerSize;
|
||||
uniform sampler2D u_pattern;
|
||||
|
||||
float quant = 63.0; // 64 steps -> 63.0; 256 steps -> 255.0
|
||||
vec4 quantiser = vec4(quant);
|
||||
@@ -282,24 +21,17 @@ vec4 quantiserDivider = vec4(1.0 / quant);
|
||||
vec2 boolean = vec2(0.0, 1.0);
|
||||
vec4 halfvec = vec4(0.5);
|
||||
|
||||
vec2 patternsize = vec2(1.0/512.0, 1.0/512.0);
|
||||
|
||||
vec4 nearestColour(vec4 inColor) {
|
||||
return floor(quantiser * inColor + halfvec) * quantiserDivider;
|
||||
}
|
||||
|
||||
vec4 getDitherredDot(vec4 inColor) {
|
||||
vec2 entry = mod(gl_FragCoord.xy, vec2(bayerSize, bayerSize));
|
||||
int index = int(entry.y) * int(bayerSize) + int(entry.x);
|
||||
vec4 bayerThreshold = vec4(bayerTex[index] / bayerDivider - 0.5);
|
||||
vec4 bayerThreshold = vec4(texture2D(u_pattern, gl_FragCoord.xy * patternsize) - 0.5);
|
||||
return nearestColour(inColor + bayerThreshold * quantiserDivider);
|
||||
}
|
||||
|
||||
vec4 gammaIn(vec4 col) {
|
||||
return pow(col, vec4(2.2));
|
||||
}
|
||||
|
||||
vec4 gammaOut(vec4 col) {
|
||||
return pow(col, vec4(1.0 / 2.2));
|
||||
}
|
||||
|
||||
void main(void) {
|
||||
// create texture coordinates based on pixelSize //
|
||||
|
||||
Reference in New Issue
Block a user