From 26e49a1a5f9bf4f97b7c55449842c78a410c0b79 Mon Sep 17 00:00:00 2001 From: Tuomas Katajisto Date: Fri, 26 Sep 2025 23:21:37 +0300 Subject: [PATCH] git commit --- src/editor/level_editor.jai | 2 +- src/shaders/jai/shader_plane.jai | 1113 +++++++++++++++++++----------- src/shaders/shader_plane.glsl | 49 +- 3 files changed, 737 insertions(+), 427 deletions(-) diff --git a/src/editor/level_editor.jai b/src/editor/level_editor.jai index d3aaf22..03fcf0a 100644 --- a/src/editor/level_editor.jai +++ b/src/editor/level_editor.jai @@ -1,7 +1,7 @@ #scope_file // @ToDo do a config tweak file thing like jblow has and add this there. -CAMERA_INACTIVE_TIME_TO_ORBIT :: 20.0; +CAMERA_INACTIVE_TIME_TO_ORBIT :: 200000000.0; MAX_CAMERA_DIST :: 25.0; MIN_CAMERA_DIST :: 2.0; DIST_SCROLL_SPEED :: 0.8; diff --git a/src/shaders/jai/shader_plane.jai b/src/shaders/jai/shader_plane.jai index c1e5f66..875642b 100644 --- a/src/shaders/jai/shader_plane.jai +++ b/src/shaders/jai/shader_plane.jai @@ -62,7 +62,7 @@ Plane_World_Config :: struct { void main() { vec3 _16 = position.xyz * 1000.0; - gl_Position = mat4(plane_vs_params[0], plane_vs_params[1], plane_vs_params[2], plane_vs_params[3]) * vec4(_16.x, float(gl_InstanceID) * 0.001000000047497451305389404296875, _16.z, 1.0); + gl_Position = mat4(plane_vs_params[0], plane_vs_params[1], plane_vs_params[2], plane_vs_params[3]) * vec4(_16.x, float(gl_InstanceID) * 0.0030000000260770320892333984375, _16.z, 1.0); pos = position; idx = gl_InstanceID; } @@ -91,13 +91,13 @@ vs_plane_source_glsl430 := u8.[ 0x5f,0x70,0x61,0x72,0x61,0x6d,0x73,0x5b,0x33,0x5d,0x29,0x20,0x2a,0x20,0x76,0x65, 0x63,0x34,0x28,0x5f,0x31,0x36,0x2e,0x78,0x2c,0x20,0x66,0x6c,0x6f,0x61,0x74,0x28, 0x67,0x6c,0x5f,0x49,0x6e,0x73,0x74,0x61,0x6e,0x63,0x65,0x49,0x44,0x29,0x20,0x2a, - 0x20,0x30,0x2e,0x30,0x30,0x31,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x34,0x37,0x34, - 0x39,0x37,0x34,0x35,0x31,0x33,0x30,0x35,0x33,0x38,0x39,0x34,0x30,0x34,0x32,0x39, - 0x36,0x38,0x37,0x35,0x2c,0x20,0x5f,0x31,0x36,0x2e,0x7a,0x2c,0x20,0x31,0x2e,0x30, - 0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x70,0x6f,0x73,0x20,0x3d,0x20,0x70,0x6f,0x73, - 0x69,0x74,0x69,0x6f,0x6e,0x3b,0x0a,0x20,0x20,0x20,0x20,0x69,0x64,0x78,0x20,0x3d, - 0x20,0x67,0x6c,0x5f,0x49,0x6e,0x73,0x74,0x61,0x6e,0x63,0x65,0x49,0x44,0x3b,0x0a, - 0x7d,0x0a,0x0a,0x00, + 0x20,0x30,0x2e,0x30,0x30,0x33,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x32,0x36,0x30, + 0x37,0x37,0x30,0x33,0x32,0x30,0x38,0x39,0x32,0x33,0x33,0x33,0x39,0x38,0x34,0x33, + 0x37,0x35,0x2c,0x20,0x5f,0x31,0x36,0x2e,0x7a,0x2c,0x20,0x31,0x2e,0x30,0x29,0x3b, + 0x0a,0x20,0x20,0x20,0x20,0x70,0x6f,0x73,0x20,0x3d,0x20,0x70,0x6f,0x73,0x69,0x74, + 0x69,0x6f,0x6e,0x3b,0x0a,0x20,0x20,0x20,0x20,0x69,0x64,0x78,0x20,0x3d,0x20,0x67, + 0x6c,0x5f,0x49,0x6e,0x73,0x74,0x61,0x6e,0x63,0x65,0x49,0x44,0x3b,0x0a,0x7d,0x0a, + 0x0a,0x00, ]; /* #version 430 @@ -120,12 +120,33 @@ vs_plane_source_glsl430 := u8.[ float time; }; - uniform plane_world_config _70; + uniform plane_world_config _153; layout(location = 0) out vec4 frag_color; layout(location = 0) in vec4 pos; layout(location = 1) flat in int idx; + float random(vec2 st) + { + return fract(sin(dot(st, vec2(12.98980045318603515625, 78.233001708984375))) * 43758.546875); + } + + float _noise(vec2 st) + { + vec2 _83 = floor(st); + vec2 _86 = fract(st); + vec2 param = _83; + float _90 = random(param); + vec2 param_1 = _83 + vec2(1.0, 0.0); + float _95 = random(param_1); + vec2 param_2 = _83 + vec2(0.0, 1.0); + vec2 param_3 = _83 + vec2(1.0); + vec2 _117 = (_86 * _86) * (vec2(3.0) - (_86 * 2.0)); + float _123 = _117.x; + float _130 = _117.y; + return (mix(_90, _95, _123) + (((random(param_2) - _90) * _130) * (1.0 - _123))) + (((random(param_3) - _95) * _123) * _130); + } + float B(vec2 U) { return (fract(sin(dot(U, vec2(11.98980045318603515625, 78.233001708984375))) * 43758.546875) - ((((fract(sin(dot(U + vec2(-1.0, 0.0), vec2(11.98980045318603515625, 78.233001708984375))) * 43758.546875) + fract(sin(dot(U + vec2(1.0, 0.0), vec2(11.98980045318603515625, 78.233001708984375))) * 43758.546875)) + fract(sin(dot(U + vec2(0.0, 1.0), vec2(11.98980045318603515625, 78.233001708984375))) * 43758.546875)) + fract(sin(dot(U + vec2(0.0, -1.0), vec2(11.98980045318603515625, 78.233001708984375))) * 43758.546875)) * 0.25)) + 0.5; @@ -133,45 +154,48 @@ vs_plane_source_glsl430 := u8.[ void main() { - if (_70.planeType == 1) + if (_153.planeType == 1) { frag_color = vec4(0.0, 0.0, 1.0, 1.0); } else { - vec2 _93 = pos.xz * 80000.0; - float _97 = _93.y; - float _102 = _93.x + sin(_97); - vec2 _194 = vec2(_102, _97 + sin(_102)); - vec2 _113 = round(_194); - vec2 ruohokeskus = _113; - float _120 = 0.0078125 * float(idx); - vec2 param = _113; - float _131 = B(param) + (sin(pos.x) * 0.4000000059604644775390625); - vec2 _191 = ruohokeskus; - _191.x = _191.x + ((sin(_70.time * 1.2000000476837158203125) * 0.60000002384185791015625) * _120); - ruohokeskus = _191; - bool _154 = idx > 0; - if (_154 && (_131 < 0.20000000298023223876953125)) + vec2 _176 = pos.xz * 80000.0; + float _178 = _176.y; + float _182 = _176.x + sin(_178); + vec2 _307 = vec2(_182, _178 + sin(_182)); + vec2 ruohokeskus = round(_307); + vec2 param = _307 * vec2(0.0199999995529651641845703125); + float _200 = _noise(param); + vec2 param_1 = _307 * vec2(0.00200000009499490261077880859375); + float _207 = _noise(param_1); + float _214 = 0.0078125 * float(idx); + vec2 param_2 = ruohokeskus; + float _234 = ((B(param_2) + (sin(pos.x) * 0.4000000059604644775390625)) * 0.5) + ((_207 * 0.4000000059604644775390625) + (_200 * 0.100000001490116119384765625)); + vec2 _299 = ruohokeskus; + _299.x = _299.x + ((sin(_153.time * 1.2000000476837158203125) * 0.60000002384185791015625) * _214); + ruohokeskus = _299; + bool _257 = idx > 0; + if (_257 && (_234 < 0.20000000298023223876953125)) { discard; } - bool _174; - if (_154) + bool _277; + if (_257) { - _174 = ((_131 - _120) * 0.5) < length(_191 - _194); + _277 = ((_234 - _214) * 0.5) < length(_299 - _307); } else { - _174 = _154; + _277 = _257; } - if (_174) + if (_277) { discard; } else { - frag_color = vec4(0.0, min(1.0, _120 + 0.20000000298023223876953125), 0.0, 1.0); + frag_color = vec4(_207 * 0.5, min(1.0, _214 + 0.20000000298023223876953125) + (_200 * 0.20000000298023223876953125), 0.0, 1.0); } } } @@ -200,121 +224,183 @@ fs_plane_source_glsl430 := u8.[ 0x70,0x65,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x74,0x69, 0x6d,0x65,0x3b,0x0a,0x7d,0x3b,0x0a,0x0a,0x75,0x6e,0x69,0x66,0x6f,0x72,0x6d,0x20, 0x70,0x6c,0x61,0x6e,0x65,0x5f,0x77,0x6f,0x72,0x6c,0x64,0x5f,0x63,0x6f,0x6e,0x66, - 0x69,0x67,0x20,0x5f,0x37,0x30,0x3b,0x0a,0x0a,0x6c,0x61,0x79,0x6f,0x75,0x74,0x28, - 0x6c,0x6f,0x63,0x61,0x74,0x69,0x6f,0x6e,0x20,0x3d,0x20,0x30,0x29,0x20,0x6f,0x75, - 0x74,0x20,0x76,0x65,0x63,0x34,0x20,0x66,0x72,0x61,0x67,0x5f,0x63,0x6f,0x6c,0x6f, - 0x72,0x3b,0x0a,0x6c,0x61,0x79,0x6f,0x75,0x74,0x28,0x6c,0x6f,0x63,0x61,0x74,0x69, - 0x6f,0x6e,0x20,0x3d,0x20,0x30,0x29,0x20,0x69,0x6e,0x20,0x76,0x65,0x63,0x34,0x20, - 0x70,0x6f,0x73,0x3b,0x0a,0x6c,0x61,0x79,0x6f,0x75,0x74,0x28,0x6c,0x6f,0x63,0x61, - 0x74,0x69,0x6f,0x6e,0x20,0x3d,0x20,0x31,0x29,0x20,0x66,0x6c,0x61,0x74,0x20,0x69, - 0x6e,0x20,0x69,0x6e,0x74,0x20,0x69,0x64,0x78,0x3b,0x0a,0x0a,0x66,0x6c,0x6f,0x61, - 0x74,0x20,0x42,0x28,0x76,0x65,0x63,0x32,0x20,0x55,0x29,0x0a,0x7b,0x0a,0x20,0x20, - 0x20,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x28,0x66,0x72,0x61,0x63,0x74,0x28, - 0x73,0x69,0x6e,0x28,0x64,0x6f,0x74,0x28,0x55,0x2c,0x20,0x76,0x65,0x63,0x32,0x28, - 0x31,0x31,0x2e,0x39,0x38,0x39,0x38,0x30,0x30,0x34,0x35,0x33,0x31,0x38,0x36,0x30, - 0x33,0x35,0x31,0x35,0x36,0x32,0x35,0x2c,0x20,0x37,0x38,0x2e,0x32,0x33,0x33,0x30, - 0x30,0x31,0x37,0x30,0x38,0x39,0x38,0x34,0x33,0x37,0x35,0x29,0x29,0x29,0x20,0x2a, - 0x20,0x34,0x33,0x37,0x35,0x38,0x2e,0x35,0x34,0x36,0x38,0x37,0x35,0x29,0x20,0x2d, - 0x20,0x28,0x28,0x28,0x28,0x66,0x72,0x61,0x63,0x74,0x28,0x73,0x69,0x6e,0x28,0x64, - 0x6f,0x74,0x28,0x55,0x20,0x2b,0x20,0x76,0x65,0x63,0x32,0x28,0x2d,0x31,0x2e,0x30, - 0x2c,0x20,0x30,0x2e,0x30,0x29,0x2c,0x20,0x76,0x65,0x63,0x32,0x28,0x31,0x31,0x2e, - 0x39,0x38,0x39,0x38,0x30,0x30,0x34,0x35,0x33,0x31,0x38,0x36,0x30,0x33,0x35,0x31, - 0x35,0x36,0x32,0x35,0x2c,0x20,0x37,0x38,0x2e,0x32,0x33,0x33,0x30,0x30,0x31,0x37, - 0x30,0x38,0x39,0x38,0x34,0x33,0x37,0x35,0x29,0x29,0x29,0x20,0x2a,0x20,0x34,0x33, - 0x37,0x35,0x38,0x2e,0x35,0x34,0x36,0x38,0x37,0x35,0x29,0x20,0x2b,0x20,0x66,0x72, - 0x61,0x63,0x74,0x28,0x73,0x69,0x6e,0x28,0x64,0x6f,0x74,0x28,0x55,0x20,0x2b,0x20, - 0x76,0x65,0x63,0x32,0x28,0x31,0x2e,0x30,0x2c,0x20,0x30,0x2e,0x30,0x29,0x2c,0x20, - 0x76,0x65,0x63,0x32,0x28,0x31,0x31,0x2e,0x39,0x38,0x39,0x38,0x30,0x30,0x34,0x35, - 0x33,0x31,0x38,0x36,0x30,0x33,0x35,0x31,0x35,0x36,0x32,0x35,0x2c,0x20,0x37,0x38, - 0x2e,0x32,0x33,0x33,0x30,0x30,0x31,0x37,0x30,0x38,0x39,0x38,0x34,0x33,0x37,0x35, - 0x29,0x29,0x29,0x20,0x2a,0x20,0x34,0x33,0x37,0x35,0x38,0x2e,0x35,0x34,0x36,0x38, - 0x37,0x35,0x29,0x29,0x20,0x2b,0x20,0x66,0x72,0x61,0x63,0x74,0x28,0x73,0x69,0x6e, - 0x28,0x64,0x6f,0x74,0x28,0x55,0x20,0x2b,0x20,0x76,0x65,0x63,0x32,0x28,0x30,0x2e, - 0x30,0x2c,0x20,0x31,0x2e,0x30,0x29,0x2c,0x20,0x76,0x65,0x63,0x32,0x28,0x31,0x31, + 0x69,0x67,0x20,0x5f,0x31,0x35,0x33,0x3b,0x0a,0x0a,0x6c,0x61,0x79,0x6f,0x75,0x74, + 0x28,0x6c,0x6f,0x63,0x61,0x74,0x69,0x6f,0x6e,0x20,0x3d,0x20,0x30,0x29,0x20,0x6f, + 0x75,0x74,0x20,0x76,0x65,0x63,0x34,0x20,0x66,0x72,0x61,0x67,0x5f,0x63,0x6f,0x6c, + 0x6f,0x72,0x3b,0x0a,0x6c,0x61,0x79,0x6f,0x75,0x74,0x28,0x6c,0x6f,0x63,0x61,0x74, + 0x69,0x6f,0x6e,0x20,0x3d,0x20,0x30,0x29,0x20,0x69,0x6e,0x20,0x76,0x65,0x63,0x34, + 0x20,0x70,0x6f,0x73,0x3b,0x0a,0x6c,0x61,0x79,0x6f,0x75,0x74,0x28,0x6c,0x6f,0x63, + 0x61,0x74,0x69,0x6f,0x6e,0x20,0x3d,0x20,0x31,0x29,0x20,0x66,0x6c,0x61,0x74,0x20, + 0x69,0x6e,0x20,0x69,0x6e,0x74,0x20,0x69,0x64,0x78,0x3b,0x0a,0x0a,0x66,0x6c,0x6f, + 0x61,0x74,0x20,0x72,0x61,0x6e,0x64,0x6f,0x6d,0x28,0x76,0x65,0x63,0x32,0x20,0x73, + 0x74,0x29,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x20, + 0x66,0x72,0x61,0x63,0x74,0x28,0x73,0x69,0x6e,0x28,0x64,0x6f,0x74,0x28,0x73,0x74, + 0x2c,0x20,0x76,0x65,0x63,0x32,0x28,0x31,0x32,0x2e,0x39,0x38,0x39,0x38,0x30,0x30, + 0x34,0x35,0x33,0x31,0x38,0x36,0x30,0x33,0x35,0x31,0x35,0x36,0x32,0x35,0x2c,0x20, + 0x37,0x38,0x2e,0x32,0x33,0x33,0x30,0x30,0x31,0x37,0x30,0x38,0x39,0x38,0x34,0x33, + 0x37,0x35,0x29,0x29,0x29,0x20,0x2a,0x20,0x34,0x33,0x37,0x35,0x38,0x2e,0x35,0x34, + 0x36,0x38,0x37,0x35,0x29,0x3b,0x0a,0x7d,0x0a,0x0a,0x66,0x6c,0x6f,0x61,0x74,0x20, + 0x5f,0x6e,0x6f,0x69,0x73,0x65,0x28,0x76,0x65,0x63,0x32,0x20,0x73,0x74,0x29,0x0a, + 0x7b,0x0a,0x20,0x20,0x20,0x20,0x76,0x65,0x63,0x32,0x20,0x5f,0x38,0x33,0x20,0x3d, + 0x20,0x66,0x6c,0x6f,0x6f,0x72,0x28,0x73,0x74,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20, + 0x76,0x65,0x63,0x32,0x20,0x5f,0x38,0x36,0x20,0x3d,0x20,0x66,0x72,0x61,0x63,0x74, + 0x28,0x73,0x74,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x76,0x65,0x63,0x32,0x20,0x70, + 0x61,0x72,0x61,0x6d,0x20,0x3d,0x20,0x5f,0x38,0x33,0x3b,0x0a,0x20,0x20,0x20,0x20, + 0x66,0x6c,0x6f,0x61,0x74,0x20,0x5f,0x39,0x30,0x20,0x3d,0x20,0x72,0x61,0x6e,0x64, + 0x6f,0x6d,0x28,0x70,0x61,0x72,0x61,0x6d,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x76, + 0x65,0x63,0x32,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x31,0x20,0x3d,0x20,0x5f,0x38, + 0x33,0x20,0x2b,0x20,0x76,0x65,0x63,0x32,0x28,0x31,0x2e,0x30,0x2c,0x20,0x30,0x2e, + 0x30,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x5f,0x39, + 0x35,0x20,0x3d,0x20,0x72,0x61,0x6e,0x64,0x6f,0x6d,0x28,0x70,0x61,0x72,0x61,0x6d, + 0x5f,0x31,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x76,0x65,0x63,0x32,0x20,0x70,0x61, + 0x72,0x61,0x6d,0x5f,0x32,0x20,0x3d,0x20,0x5f,0x38,0x33,0x20,0x2b,0x20,0x76,0x65, + 0x63,0x32,0x28,0x30,0x2e,0x30,0x2c,0x20,0x31,0x2e,0x30,0x29,0x3b,0x0a,0x20,0x20, + 0x20,0x20,0x76,0x65,0x63,0x32,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x33,0x20,0x3d, + 0x20,0x5f,0x38,0x33,0x20,0x2b,0x20,0x76,0x65,0x63,0x32,0x28,0x31,0x2e,0x30,0x29, + 0x3b,0x0a,0x20,0x20,0x20,0x20,0x76,0x65,0x63,0x32,0x20,0x5f,0x31,0x31,0x37,0x20, + 0x3d,0x20,0x28,0x5f,0x38,0x36,0x20,0x2a,0x20,0x5f,0x38,0x36,0x29,0x20,0x2a,0x20, + 0x28,0x76,0x65,0x63,0x32,0x28,0x33,0x2e,0x30,0x29,0x20,0x2d,0x20,0x28,0x5f,0x38, + 0x36,0x20,0x2a,0x20,0x32,0x2e,0x30,0x29,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66, + 0x6c,0x6f,0x61,0x74,0x20,0x5f,0x31,0x32,0x33,0x20,0x3d,0x20,0x5f,0x31,0x31,0x37, + 0x2e,0x78,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x5f,0x31, + 0x33,0x30,0x20,0x3d,0x20,0x5f,0x31,0x31,0x37,0x2e,0x79,0x3b,0x0a,0x20,0x20,0x20, + 0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x28,0x6d,0x69,0x78,0x28,0x5f,0x39,0x30, + 0x2c,0x20,0x5f,0x39,0x35,0x2c,0x20,0x5f,0x31,0x32,0x33,0x29,0x20,0x2b,0x20,0x28, + 0x28,0x28,0x72,0x61,0x6e,0x64,0x6f,0x6d,0x28,0x70,0x61,0x72,0x61,0x6d,0x5f,0x32, + 0x29,0x20,0x2d,0x20,0x5f,0x39,0x30,0x29,0x20,0x2a,0x20,0x5f,0x31,0x33,0x30,0x29, + 0x20,0x2a,0x20,0x28,0x31,0x2e,0x30,0x20,0x2d,0x20,0x5f,0x31,0x32,0x33,0x29,0x29, + 0x29,0x20,0x2b,0x20,0x28,0x28,0x28,0x72,0x61,0x6e,0x64,0x6f,0x6d,0x28,0x70,0x61, + 0x72,0x61,0x6d,0x5f,0x33,0x29,0x20,0x2d,0x20,0x5f,0x39,0x35,0x29,0x20,0x2a,0x20, + 0x5f,0x31,0x32,0x33,0x29,0x20,0x2a,0x20,0x5f,0x31,0x33,0x30,0x29,0x3b,0x0a,0x7d, + 0x0a,0x0a,0x66,0x6c,0x6f,0x61,0x74,0x20,0x42,0x28,0x76,0x65,0x63,0x32,0x20,0x55, + 0x29,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x28, + 0x66,0x72,0x61,0x63,0x74,0x28,0x73,0x69,0x6e,0x28,0x64,0x6f,0x74,0x28,0x55,0x2c, + 0x20,0x76,0x65,0x63,0x32,0x28,0x31,0x31,0x2e,0x39,0x38,0x39,0x38,0x30,0x30,0x34, + 0x35,0x33,0x31,0x38,0x36,0x30,0x33,0x35,0x31,0x35,0x36,0x32,0x35,0x2c,0x20,0x37, + 0x38,0x2e,0x32,0x33,0x33,0x30,0x30,0x31,0x37,0x30,0x38,0x39,0x38,0x34,0x33,0x37, + 0x35,0x29,0x29,0x29,0x20,0x2a,0x20,0x34,0x33,0x37,0x35,0x38,0x2e,0x35,0x34,0x36, + 0x38,0x37,0x35,0x29,0x20,0x2d,0x20,0x28,0x28,0x28,0x28,0x66,0x72,0x61,0x63,0x74, + 0x28,0x73,0x69,0x6e,0x28,0x64,0x6f,0x74,0x28,0x55,0x20,0x2b,0x20,0x76,0x65,0x63, + 0x32,0x28,0x2d,0x31,0x2e,0x30,0x2c,0x20,0x30,0x2e,0x30,0x29,0x2c,0x20,0x76,0x65, + 0x63,0x32,0x28,0x31,0x31,0x2e,0x39,0x38,0x39,0x38,0x30,0x30,0x34,0x35,0x33,0x31, + 0x38,0x36,0x30,0x33,0x35,0x31,0x35,0x36,0x32,0x35,0x2c,0x20,0x37,0x38,0x2e,0x32, + 0x33,0x33,0x30,0x30,0x31,0x37,0x30,0x38,0x39,0x38,0x34,0x33,0x37,0x35,0x29,0x29, + 0x29,0x20,0x2a,0x20,0x34,0x33,0x37,0x35,0x38,0x2e,0x35,0x34,0x36,0x38,0x37,0x35, + 0x29,0x20,0x2b,0x20,0x66,0x72,0x61,0x63,0x74,0x28,0x73,0x69,0x6e,0x28,0x64,0x6f, + 0x74,0x28,0x55,0x20,0x2b,0x20,0x76,0x65,0x63,0x32,0x28,0x31,0x2e,0x30,0x2c,0x20, + 0x30,0x2e,0x30,0x29,0x2c,0x20,0x76,0x65,0x63,0x32,0x28,0x31,0x31,0x2e,0x39,0x38, + 0x39,0x38,0x30,0x30,0x34,0x35,0x33,0x31,0x38,0x36,0x30,0x33,0x35,0x31,0x35,0x36, + 0x32,0x35,0x2c,0x20,0x37,0x38,0x2e,0x32,0x33,0x33,0x30,0x30,0x31,0x37,0x30,0x38, + 0x39,0x38,0x34,0x33,0x37,0x35,0x29,0x29,0x29,0x20,0x2a,0x20,0x34,0x33,0x37,0x35, + 0x38,0x2e,0x35,0x34,0x36,0x38,0x37,0x35,0x29,0x29,0x20,0x2b,0x20,0x66,0x72,0x61, + 0x63,0x74,0x28,0x73,0x69,0x6e,0x28,0x64,0x6f,0x74,0x28,0x55,0x20,0x2b,0x20,0x76, + 0x65,0x63,0x32,0x28,0x30,0x2e,0x30,0x2c,0x20,0x31,0x2e,0x30,0x29,0x2c,0x20,0x76, + 0x65,0x63,0x32,0x28,0x31,0x31,0x2e,0x39,0x38,0x39,0x38,0x30,0x30,0x34,0x35,0x33, + 0x31,0x38,0x36,0x30,0x33,0x35,0x31,0x35,0x36,0x32,0x35,0x2c,0x20,0x37,0x38,0x2e, + 0x32,0x33,0x33,0x30,0x30,0x31,0x37,0x30,0x38,0x39,0x38,0x34,0x33,0x37,0x35,0x29, + 0x29,0x29,0x20,0x2a,0x20,0x34,0x33,0x37,0x35,0x38,0x2e,0x35,0x34,0x36,0x38,0x37, + 0x35,0x29,0x29,0x20,0x2b,0x20,0x66,0x72,0x61,0x63,0x74,0x28,0x73,0x69,0x6e,0x28, + 0x64,0x6f,0x74,0x28,0x55,0x20,0x2b,0x20,0x76,0x65,0x63,0x32,0x28,0x30,0x2e,0x30, + 0x2c,0x20,0x2d,0x31,0x2e,0x30,0x29,0x2c,0x20,0x76,0x65,0x63,0x32,0x28,0x31,0x31, 0x2e,0x39,0x38,0x39,0x38,0x30,0x30,0x34,0x35,0x33,0x31,0x38,0x36,0x30,0x33,0x35, 0x31,0x35,0x36,0x32,0x35,0x2c,0x20,0x37,0x38,0x2e,0x32,0x33,0x33,0x30,0x30,0x31, 0x37,0x30,0x38,0x39,0x38,0x34,0x33,0x37,0x35,0x29,0x29,0x29,0x20,0x2a,0x20,0x34, - 0x33,0x37,0x35,0x38,0x2e,0x35,0x34,0x36,0x38,0x37,0x35,0x29,0x29,0x20,0x2b,0x20, - 0x66,0x72,0x61,0x63,0x74,0x28,0x73,0x69,0x6e,0x28,0x64,0x6f,0x74,0x28,0x55,0x20, - 0x2b,0x20,0x76,0x65,0x63,0x32,0x28,0x30,0x2e,0x30,0x2c,0x20,0x2d,0x31,0x2e,0x30, - 0x29,0x2c,0x20,0x76,0x65,0x63,0x32,0x28,0x31,0x31,0x2e,0x39,0x38,0x39,0x38,0x30, - 0x30,0x34,0x35,0x33,0x31,0x38,0x36,0x30,0x33,0x35,0x31,0x35,0x36,0x32,0x35,0x2c, - 0x20,0x37,0x38,0x2e,0x32,0x33,0x33,0x30,0x30,0x31,0x37,0x30,0x38,0x39,0x38,0x34, - 0x33,0x37,0x35,0x29,0x29,0x29,0x20,0x2a,0x20,0x34,0x33,0x37,0x35,0x38,0x2e,0x35, - 0x34,0x36,0x38,0x37,0x35,0x29,0x29,0x20,0x2a,0x20,0x30,0x2e,0x32,0x35,0x29,0x29, - 0x20,0x2b,0x20,0x30,0x2e,0x35,0x3b,0x0a,0x7d,0x0a,0x0a,0x76,0x6f,0x69,0x64,0x20, - 0x6d,0x61,0x69,0x6e,0x28,0x29,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x69,0x66,0x20, - 0x28,0x5f,0x37,0x30,0x2e,0x70,0x6c,0x61,0x6e,0x65,0x54,0x79,0x70,0x65,0x20,0x3d, - 0x3d,0x20,0x31,0x29,0x0a,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x66,0x72,0x61,0x67,0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x20,0x3d,0x20, - 0x76,0x65,0x63,0x34,0x28,0x30,0x2e,0x30,0x2c,0x20,0x30,0x2e,0x30,0x2c,0x20,0x31, - 0x2e,0x30,0x2c,0x20,0x31,0x2e,0x30,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x7d,0x0a, - 0x20,0x20,0x20,0x20,0x65,0x6c,0x73,0x65,0x0a,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x65,0x63,0x32,0x20,0x5f,0x39,0x33,0x20, - 0x3d,0x20,0x70,0x6f,0x73,0x2e,0x78,0x7a,0x20,0x2a,0x20,0x38,0x30,0x30,0x30,0x30, - 0x2e,0x30,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61, - 0x74,0x20,0x5f,0x39,0x37,0x20,0x3d,0x20,0x5f,0x39,0x33,0x2e,0x79,0x3b,0x0a,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x5f,0x31,0x30, - 0x32,0x20,0x3d,0x20,0x5f,0x39,0x33,0x2e,0x78,0x20,0x2b,0x20,0x73,0x69,0x6e,0x28, - 0x5f,0x39,0x37,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x65, - 0x63,0x32,0x20,0x5f,0x31,0x39,0x34,0x20,0x3d,0x20,0x76,0x65,0x63,0x32,0x28,0x5f, - 0x31,0x30,0x32,0x2c,0x20,0x5f,0x39,0x37,0x20,0x2b,0x20,0x73,0x69,0x6e,0x28,0x5f, - 0x31,0x30,0x32,0x29,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76, - 0x65,0x63,0x32,0x20,0x5f,0x31,0x31,0x33,0x20,0x3d,0x20,0x72,0x6f,0x75,0x6e,0x64, - 0x28,0x5f,0x31,0x39,0x34,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x76,0x65,0x63,0x32,0x20,0x72,0x75,0x6f,0x68,0x6f,0x6b,0x65,0x73,0x6b,0x75,0x73, - 0x20,0x3d,0x20,0x5f,0x31,0x31,0x33,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x5f,0x31,0x32,0x30,0x20,0x3d,0x20,0x30,0x2e, - 0x30,0x30,0x37,0x38,0x31,0x32,0x35,0x20,0x2a,0x20,0x66,0x6c,0x6f,0x61,0x74,0x28, - 0x69,0x64,0x78,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x65, - 0x63,0x32,0x20,0x70,0x61,0x72,0x61,0x6d,0x20,0x3d,0x20,0x5f,0x31,0x31,0x33,0x3b, + 0x33,0x37,0x35,0x38,0x2e,0x35,0x34,0x36,0x38,0x37,0x35,0x29,0x29,0x20,0x2a,0x20, + 0x30,0x2e,0x32,0x35,0x29,0x29,0x20,0x2b,0x20,0x30,0x2e,0x35,0x3b,0x0a,0x7d,0x0a, + 0x0a,0x76,0x6f,0x69,0x64,0x20,0x6d,0x61,0x69,0x6e,0x28,0x29,0x0a,0x7b,0x0a,0x20, + 0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x5f,0x31,0x35,0x33,0x2e,0x70,0x6c,0x61,0x6e, + 0x65,0x54,0x79,0x70,0x65,0x20,0x3d,0x3d,0x20,0x31,0x29,0x0a,0x20,0x20,0x20,0x20, + 0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x72,0x61,0x67,0x5f,0x63, + 0x6f,0x6c,0x6f,0x72,0x20,0x3d,0x20,0x76,0x65,0x63,0x34,0x28,0x30,0x2e,0x30,0x2c, + 0x20,0x30,0x2e,0x30,0x2c,0x20,0x31,0x2e,0x30,0x2c,0x20,0x31,0x2e,0x30,0x29,0x3b, + 0x0a,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x65,0x6c,0x73,0x65,0x0a, + 0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x65, + 0x63,0x32,0x20,0x5f,0x31,0x37,0x36,0x20,0x3d,0x20,0x70,0x6f,0x73,0x2e,0x78,0x7a, + 0x20,0x2a,0x20,0x38,0x30,0x30,0x30,0x30,0x2e,0x30,0x3b,0x0a,0x20,0x20,0x20,0x20, + 0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x5f,0x31,0x37,0x38,0x20,0x3d, + 0x20,0x5f,0x31,0x37,0x36,0x2e,0x79,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20, + 0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x5f,0x31,0x38,0x32,0x20,0x3d,0x20,0x5f,0x31, + 0x37,0x36,0x2e,0x78,0x20,0x2b,0x20,0x73,0x69,0x6e,0x28,0x5f,0x31,0x37,0x38,0x29, + 0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x65,0x63,0x32,0x20,0x5f, + 0x33,0x30,0x37,0x20,0x3d,0x20,0x76,0x65,0x63,0x32,0x28,0x5f,0x31,0x38,0x32,0x2c, + 0x20,0x5f,0x31,0x37,0x38,0x20,0x2b,0x20,0x73,0x69,0x6e,0x28,0x5f,0x31,0x38,0x32, + 0x29,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x65,0x63,0x32, + 0x20,0x72,0x75,0x6f,0x68,0x6f,0x6b,0x65,0x73,0x6b,0x75,0x73,0x20,0x3d,0x20,0x72, + 0x6f,0x75,0x6e,0x64,0x28,0x5f,0x33,0x30,0x37,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20, + 0x20,0x20,0x20,0x20,0x76,0x65,0x63,0x32,0x20,0x70,0x61,0x72,0x61,0x6d,0x20,0x3d, + 0x20,0x5f,0x33,0x30,0x37,0x20,0x2a,0x20,0x76,0x65,0x63,0x32,0x28,0x30,0x2e,0x30, + 0x31,0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x35,0x35,0x32,0x39,0x36,0x35,0x31,0x36, + 0x34,0x31,0x38,0x34,0x35,0x37,0x30,0x33,0x31,0x32,0x35,0x29,0x3b,0x0a,0x20,0x20, + 0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x5f,0x32,0x30,0x30, + 0x20,0x3d,0x20,0x5f,0x6e,0x6f,0x69,0x73,0x65,0x28,0x70,0x61,0x72,0x61,0x6d,0x29, + 0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x76,0x65,0x63,0x32,0x20,0x70, + 0x61,0x72,0x61,0x6d,0x5f,0x31,0x20,0x3d,0x20,0x5f,0x33,0x30,0x37,0x20,0x2a,0x20, + 0x76,0x65,0x63,0x32,0x28,0x30,0x2e,0x30,0x30,0x32,0x30,0x30,0x30,0x30,0x30,0x30, + 0x30,0x39,0x34,0x39,0x39,0x34,0x39,0x30,0x32,0x36,0x31,0x30,0x37,0x37,0x38,0x38, + 0x30,0x38,0x35,0x39,0x33,0x37,0x35,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20, + 0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x5f,0x32,0x30,0x37,0x20,0x3d,0x20,0x5f, + 0x6e,0x6f,0x69,0x73,0x65,0x28,0x70,0x61,0x72,0x61,0x6d,0x5f,0x31,0x29,0x3b,0x0a, + 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x5f,0x32, + 0x31,0x34,0x20,0x3d,0x20,0x30,0x2e,0x30,0x30,0x37,0x38,0x31,0x32,0x35,0x20,0x2a, + 0x20,0x66,0x6c,0x6f,0x61,0x74,0x28,0x69,0x64,0x78,0x29,0x3b,0x0a,0x20,0x20,0x20, + 0x20,0x20,0x20,0x20,0x20,0x76,0x65,0x63,0x32,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f, + 0x32,0x20,0x3d,0x20,0x72,0x75,0x6f,0x68,0x6f,0x6b,0x65,0x73,0x6b,0x75,0x73,0x3b, 0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x5f, - 0x31,0x33,0x31,0x20,0x3d,0x20,0x42,0x28,0x70,0x61,0x72,0x61,0x6d,0x29,0x20,0x2b, - 0x20,0x28,0x73,0x69,0x6e,0x28,0x70,0x6f,0x73,0x2e,0x78,0x29,0x20,0x2a,0x20,0x30, - 0x2e,0x34,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x35,0x39,0x36,0x30,0x34,0x36,0x34, - 0x34,0x37,0x37,0x35,0x33,0x39,0x30,0x36,0x32,0x35,0x29,0x3b,0x0a,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x76,0x65,0x63,0x32,0x20,0x5f,0x31,0x39,0x31,0x20,0x3d, - 0x20,0x72,0x75,0x6f,0x68,0x6f,0x6b,0x65,0x73,0x6b,0x75,0x73,0x3b,0x0a,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x31,0x39,0x31,0x2e,0x78,0x20,0x3d,0x20,0x5f, - 0x31,0x39,0x31,0x2e,0x78,0x20,0x2b,0x20,0x28,0x28,0x73,0x69,0x6e,0x28,0x5f,0x37, - 0x30,0x2e,0x74,0x69,0x6d,0x65,0x20,0x2a,0x20,0x31,0x2e,0x32,0x30,0x30,0x30,0x30, - 0x30,0x30,0x34,0x37,0x36,0x38,0x33,0x37,0x31,0x35,0x38,0x32,0x30,0x33,0x31,0x32, - 0x35,0x29,0x20,0x2a,0x20,0x30,0x2e,0x36,0x30,0x30,0x30,0x30,0x30,0x30,0x32,0x33, - 0x38,0x34,0x31,0x38,0x35,0x37,0x39,0x31,0x30,0x31,0x35,0x36,0x32,0x35,0x29,0x20, - 0x2a,0x20,0x5f,0x31,0x32,0x30,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x72,0x75,0x6f,0x68,0x6f,0x6b,0x65,0x73,0x6b,0x75,0x73,0x20,0x3d,0x20,0x5f, - 0x31,0x39,0x31,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x62,0x6f,0x6f, - 0x6c,0x20,0x5f,0x31,0x35,0x34,0x20,0x3d,0x20,0x69,0x64,0x78,0x20,0x3e,0x20,0x30, - 0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x5f,0x31, - 0x35,0x34,0x20,0x26,0x26,0x20,0x28,0x5f,0x31,0x33,0x31,0x20,0x3c,0x20,0x30,0x2e, - 0x32,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x32,0x39,0x38,0x30,0x32,0x33,0x32,0x32, - 0x33,0x38,0x37,0x36,0x39,0x35,0x33,0x31,0x32,0x35,0x29,0x29,0x0a,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x64,0x69,0x73,0x63,0x61,0x72,0x64,0x3b,0x0a,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x62,0x6f, - 0x6f,0x6c,0x20,0x5f,0x31,0x37,0x34,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x69,0x66,0x20,0x28,0x5f,0x31,0x35,0x34,0x29,0x0a,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x5f,0x31,0x37,0x34,0x20,0x3d,0x20,0x28,0x28,0x5f,0x31,0x33,0x31,0x20,0x2d, - 0x20,0x5f,0x31,0x32,0x30,0x29,0x20,0x2a,0x20,0x30,0x2e,0x35,0x29,0x20,0x3c,0x20, - 0x6c,0x65,0x6e,0x67,0x74,0x68,0x28,0x5f,0x31,0x39,0x31,0x20,0x2d,0x20,0x5f,0x31, - 0x39,0x34,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x65,0x6c,0x73,0x65,0x0a,0x20,0x20,0x20,0x20, + 0x32,0x33,0x34,0x20,0x3d,0x20,0x28,0x28,0x42,0x28,0x70,0x61,0x72,0x61,0x6d,0x5f, + 0x32,0x29,0x20,0x2b,0x20,0x28,0x73,0x69,0x6e,0x28,0x70,0x6f,0x73,0x2e,0x78,0x29, + 0x20,0x2a,0x20,0x30,0x2e,0x34,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x35,0x39,0x36, + 0x30,0x34,0x36,0x34,0x34,0x37,0x37,0x35,0x33,0x39,0x30,0x36,0x32,0x35,0x29,0x29, + 0x20,0x2a,0x20,0x30,0x2e,0x35,0x29,0x20,0x2b,0x20,0x28,0x28,0x5f,0x32,0x30,0x37, + 0x20,0x2a,0x20,0x30,0x2e,0x34,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x35,0x39,0x36, + 0x30,0x34,0x36,0x34,0x34,0x37,0x37,0x35,0x33,0x39,0x30,0x36,0x32,0x35,0x29,0x20, + 0x2b,0x20,0x28,0x5f,0x32,0x30,0x30,0x20,0x2a,0x20,0x30,0x2e,0x31,0x30,0x30,0x30, + 0x30,0x30,0x30,0x30,0x31,0x34,0x39,0x30,0x31,0x31,0x36,0x31,0x31,0x39,0x33,0x38, + 0x34,0x37,0x36,0x35,0x36,0x32,0x35,0x29,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20, + 0x20,0x20,0x20,0x76,0x65,0x63,0x32,0x20,0x5f,0x32,0x39,0x39,0x20,0x3d,0x20,0x72, + 0x75,0x6f,0x68,0x6f,0x6b,0x65,0x73,0x6b,0x75,0x73,0x3b,0x0a,0x20,0x20,0x20,0x20, + 0x20,0x20,0x20,0x20,0x5f,0x32,0x39,0x39,0x2e,0x78,0x20,0x3d,0x20,0x5f,0x32,0x39, + 0x39,0x2e,0x78,0x20,0x2b,0x20,0x28,0x28,0x73,0x69,0x6e,0x28,0x5f,0x31,0x35,0x33, + 0x2e,0x74,0x69,0x6d,0x65,0x20,0x2a,0x20,0x31,0x2e,0x32,0x30,0x30,0x30,0x30,0x30, + 0x30,0x34,0x37,0x36,0x38,0x33,0x37,0x31,0x35,0x38,0x32,0x30,0x33,0x31,0x32,0x35, + 0x29,0x20,0x2a,0x20,0x30,0x2e,0x36,0x30,0x30,0x30,0x30,0x30,0x30,0x32,0x33,0x38, + 0x34,0x31,0x38,0x35,0x37,0x39,0x31,0x30,0x31,0x35,0x36,0x32,0x35,0x29,0x20,0x2a, + 0x20,0x5f,0x32,0x31,0x34,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, + 0x72,0x75,0x6f,0x68,0x6f,0x6b,0x65,0x73,0x6b,0x75,0x73,0x20,0x3d,0x20,0x5f,0x32, + 0x39,0x39,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x62,0x6f,0x6f,0x6c, + 0x20,0x5f,0x32,0x35,0x37,0x20,0x3d,0x20,0x69,0x64,0x78,0x20,0x3e,0x20,0x30,0x3b, + 0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x5f,0x32,0x35, + 0x37,0x20,0x26,0x26,0x20,0x28,0x5f,0x32,0x33,0x34,0x20,0x3c,0x20,0x30,0x2e,0x32, + 0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x32,0x39,0x38,0x30,0x32,0x33,0x32,0x32,0x33, + 0x38,0x37,0x36,0x39,0x35,0x33,0x31,0x32,0x35,0x29,0x29,0x0a,0x20,0x20,0x20,0x20, 0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x5f,0x31,0x37,0x34,0x20,0x3d,0x20,0x5f,0x31,0x35,0x34,0x3b,0x0a,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x69,0x66,0x20,0x28,0x5f,0x31,0x37,0x34,0x29,0x0a,0x20,0x20,0x20,0x20,0x20, + 0x20,0x20,0x64,0x69,0x73,0x63,0x61,0x72,0x64,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20, + 0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x62,0x6f,0x6f, + 0x6c,0x20,0x5f,0x32,0x37,0x37,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, + 0x69,0x66,0x20,0x28,0x5f,0x32,0x35,0x37,0x29,0x0a,0x20,0x20,0x20,0x20,0x20,0x20, + 0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, + 0x5f,0x32,0x37,0x37,0x20,0x3d,0x20,0x28,0x28,0x5f,0x32,0x33,0x34,0x20,0x2d,0x20, + 0x5f,0x32,0x31,0x34,0x29,0x20,0x2a,0x20,0x30,0x2e,0x35,0x29,0x20,0x3c,0x20,0x6c, + 0x65,0x6e,0x67,0x74,0x68,0x28,0x5f,0x32,0x39,0x39,0x20,0x2d,0x20,0x5f,0x33,0x30, + 0x37,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20, + 0x20,0x20,0x20,0x20,0x20,0x20,0x65,0x6c,0x73,0x65,0x0a,0x20,0x20,0x20,0x20,0x20, 0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x64,0x69,0x73,0x63,0x61,0x72,0x64,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x65,0x6c,0x73,0x65, - 0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x72,0x61,0x67,0x5f,0x63,0x6f,0x6c,0x6f, - 0x72,0x20,0x3d,0x20,0x76,0x65,0x63,0x34,0x28,0x30,0x2e,0x30,0x2c,0x20,0x6d,0x69, - 0x6e,0x28,0x31,0x2e,0x30,0x2c,0x20,0x5f,0x31,0x32,0x30,0x20,0x2b,0x20,0x30,0x2e, - 0x32,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x32,0x39,0x38,0x30,0x32,0x33,0x32,0x32, - 0x33,0x38,0x37,0x36,0x39,0x35,0x33,0x31,0x32,0x35,0x29,0x2c,0x20,0x30,0x2e,0x30, - 0x2c,0x20,0x31,0x2e,0x30,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x7d,0x0a,0x20,0x20,0x20,0x20,0x7d,0x0a,0x7d,0x0a,0x0a,0x00, + 0x20,0x5f,0x32,0x37,0x37,0x20,0x3d,0x20,0x5f,0x32,0x35,0x37,0x3b,0x0a,0x20,0x20, + 0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, + 0x69,0x66,0x20,0x28,0x5f,0x32,0x37,0x37,0x29,0x0a,0x20,0x20,0x20,0x20,0x20,0x20, + 0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, + 0x64,0x69,0x73,0x63,0x61,0x72,0x64,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20, + 0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x65,0x6c,0x73,0x65,0x0a, + 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20, + 0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x72,0x61,0x67,0x5f,0x63,0x6f,0x6c,0x6f,0x72, + 0x20,0x3d,0x20,0x76,0x65,0x63,0x34,0x28,0x5f,0x32,0x30,0x37,0x20,0x2a,0x20,0x30, + 0x2e,0x35,0x2c,0x20,0x6d,0x69,0x6e,0x28,0x31,0x2e,0x30,0x2c,0x20,0x5f,0x32,0x31, + 0x34,0x20,0x2b,0x20,0x30,0x2e,0x32,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x32,0x39, + 0x38,0x30,0x32,0x33,0x32,0x32,0x33,0x38,0x37,0x36,0x39,0x35,0x33,0x31,0x32,0x35, + 0x29,0x20,0x2b,0x20,0x28,0x5f,0x32,0x30,0x30,0x20,0x2a,0x20,0x30,0x2e,0x32,0x30, + 0x30,0x30,0x30,0x30,0x30,0x30,0x32,0x39,0x38,0x30,0x32,0x33,0x32,0x32,0x33,0x38, + 0x37,0x36,0x39,0x35,0x33,0x31,0x32,0x35,0x29,0x2c,0x20,0x30,0x2e,0x30,0x2c,0x20, + 0x31,0x2e,0x30,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0x0a, + 0x20,0x20,0x20,0x20,0x7d,0x0a,0x7d,0x0a,0x0a,0x00, ]; /* #version 300 es @@ -327,7 +413,7 @@ fs_plane_source_glsl430 := u8.[ void main() { vec3 _16 = position.xyz * 1000.0; - gl_Position = mat4(plane_vs_params[0], plane_vs_params[1], plane_vs_params[2], plane_vs_params[3]) * vec4(_16.x, float(gl_InstanceID) * 0.001000000047497451305389404296875, _16.z, 1.0); + gl_Position = mat4(plane_vs_params[0], plane_vs_params[1], plane_vs_params[2], plane_vs_params[3]) * vec4(_16.x, float(gl_InstanceID) * 0.0030000000260770320892333984375, _16.z, 1.0); pos = position; idx = gl_InstanceID; } @@ -353,13 +439,13 @@ vs_plane_source_glsl300es := u8.[ 0x20,0x70,0x6c,0x61,0x6e,0x65,0x5f,0x76,0x73,0x5f,0x70,0x61,0x72,0x61,0x6d,0x73, 0x5b,0x33,0x5d,0x29,0x20,0x2a,0x20,0x76,0x65,0x63,0x34,0x28,0x5f,0x31,0x36,0x2e, 0x78,0x2c,0x20,0x66,0x6c,0x6f,0x61,0x74,0x28,0x67,0x6c,0x5f,0x49,0x6e,0x73,0x74, - 0x61,0x6e,0x63,0x65,0x49,0x44,0x29,0x20,0x2a,0x20,0x30,0x2e,0x30,0x30,0x31,0x30, - 0x30,0x30,0x30,0x30,0x30,0x30,0x34,0x37,0x34,0x39,0x37,0x34,0x35,0x31,0x33,0x30, - 0x35,0x33,0x38,0x39,0x34,0x30,0x34,0x32,0x39,0x36,0x38,0x37,0x35,0x2c,0x20,0x5f, - 0x31,0x36,0x2e,0x7a,0x2c,0x20,0x31,0x2e,0x30,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20, - 0x70,0x6f,0x73,0x20,0x3d,0x20,0x70,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x3b,0x0a, - 0x20,0x20,0x20,0x20,0x69,0x64,0x78,0x20,0x3d,0x20,0x67,0x6c,0x5f,0x49,0x6e,0x73, - 0x74,0x61,0x6e,0x63,0x65,0x49,0x44,0x3b,0x0a,0x7d,0x0a,0x0a,0x00, + 0x61,0x6e,0x63,0x65,0x49,0x44,0x29,0x20,0x2a,0x20,0x30,0x2e,0x30,0x30,0x33,0x30, + 0x30,0x30,0x30,0x30,0x30,0x30,0x32,0x36,0x30,0x37,0x37,0x30,0x33,0x32,0x30,0x38, + 0x39,0x32,0x33,0x33,0x33,0x39,0x38,0x34,0x33,0x37,0x35,0x2c,0x20,0x5f,0x31,0x36, + 0x2e,0x7a,0x2c,0x20,0x31,0x2e,0x30,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x70,0x6f, + 0x73,0x20,0x3d,0x20,0x70,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x3b,0x0a,0x20,0x20, + 0x20,0x20,0x69,0x64,0x78,0x20,0x3d,0x20,0x67,0x6c,0x5f,0x49,0x6e,0x73,0x74,0x61, + 0x6e,0x63,0x65,0x49,0x44,0x3b,0x0a,0x7d,0x0a,0x0a,0x00, ]; /* #version 300 es @@ -384,12 +470,33 @@ vs_plane_source_glsl300es := u8.[ highp float time; }; - uniform plane_world_config _70; + uniform plane_world_config _153; layout(location = 0) out highp vec4 frag_color; in highp vec4 pos; flat in int idx; + highp float random(highp vec2 st) + { + return fract(sin(dot(st, vec2(12.98980045318603515625, 78.233001708984375))) * 43758.546875); + } + + highp float _noise(highp vec2 st) + { + highp vec2 _83 = floor(st); + highp vec2 _86 = fract(st); + highp vec2 param = _83; + highp float _90 = random(param); + highp vec2 param_1 = _83 + vec2(1.0, 0.0); + highp float _95 = random(param_1); + highp vec2 param_2 = _83 + vec2(0.0, 1.0); + highp vec2 param_3 = _83 + vec2(1.0); + highp vec2 _117 = (_86 * _86) * (vec2(3.0) - (_86 * 2.0)); + highp float _123 = _117.x; + highp float _130 = _117.y; + return (mix(_90, _95, _123) + (((random(param_2) - _90) * _130) * (1.0 - _123))) + (((random(param_3) - _95) * _123) * _130); + } + highp float B(highp vec2 U) { return (fract(sin(dot(U, vec2(11.98980045318603515625, 78.233001708984375))) * 43758.546875) - ((((fract(sin(dot(U + vec2(-1.0, 0.0), vec2(11.98980045318603515625, 78.233001708984375))) * 43758.546875) + fract(sin(dot(U + vec2(1.0, 0.0), vec2(11.98980045318603515625, 78.233001708984375))) * 43758.546875)) + fract(sin(dot(U + vec2(0.0, 1.0), vec2(11.98980045318603515625, 78.233001708984375))) * 43758.546875)) + fract(sin(dot(U + vec2(0.0, -1.0), vec2(11.98980045318603515625, 78.233001708984375))) * 43758.546875)) * 0.25)) + 0.5; @@ -397,45 +504,48 @@ vs_plane_source_glsl300es := u8.[ void main() { - if (_70.planeType == 1) + if (_153.planeType == 1) { frag_color = vec4(0.0, 0.0, 1.0, 1.0); } else { - highp vec2 _93 = pos.xz * 80000.0; - highp float _97 = _93.y; - highp float _102 = _93.x + sin(_97); - highp vec2 _194 = vec2(_102, _97 + sin(_102)); - highp vec2 _113 = round(_194); - highp vec2 ruohokeskus = _113; - highp float _120 = 0.0078125 * float(idx); - highp vec2 param = _113; - highp float _131 = B(param) + (sin(pos.x) * 0.4000000059604644775390625); - highp vec2 _191 = ruohokeskus; - _191.x = _191.x + ((sin(_70.time * 1.2000000476837158203125) * 0.60000002384185791015625) * _120); - ruohokeskus = _191; - bool _154 = idx > 0; - if (_154 && (_131 < 0.20000000298023223876953125)) + highp vec2 _176 = pos.xz * 80000.0; + highp float _178 = _176.y; + highp float _182 = _176.x + sin(_178); + highp vec2 _307 = vec2(_182, _178 + sin(_182)); + highp vec2 ruohokeskus = round(_307); + highp vec2 param = _307 * vec2(0.0199999995529651641845703125); + highp float _200 = _noise(param); + highp vec2 param_1 = _307 * vec2(0.00200000009499490261077880859375); + highp float _207 = _noise(param_1); + highp float _214 = 0.0078125 * float(idx); + highp vec2 param_2 = ruohokeskus; + highp float _234 = ((B(param_2) + (sin(pos.x) * 0.4000000059604644775390625)) * 0.5) + ((_207 * 0.4000000059604644775390625) + (_200 * 0.100000001490116119384765625)); + highp vec2 _299 = ruohokeskus; + _299.x = _299.x + ((sin(_153.time * 1.2000000476837158203125) * 0.60000002384185791015625) * _214); + ruohokeskus = _299; + bool _257 = idx > 0; + if (_257 && (_234 < 0.20000000298023223876953125)) { discard; } - bool _174; - if (_154) + bool _277; + if (_257) { - _174 = ((_131 - _120) * 0.5) < length(_191 - _194); + _277 = ((_234 - _214) * 0.5) < length(_299 - _307); } else { - _174 = _154; + _277 = _257; } - if (_174) + if (_277) { discard; } else { - frag_color = vec4(0.0, min(1.0, _120 + 0.20000000298023223876953125), 0.0, 1.0); + frag_color = vec4(_207 * 0.5, min(1.0, _214 + 0.20000000298023223876953125) + (_200 * 0.20000000298023223876953125), 0.0, 1.0); } } } @@ -471,12 +581,58 @@ fs_plane_source_glsl300es := u8.[ 0x0a,0x20,0x20,0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x66,0x6c,0x6f,0x61,0x74, 0x20,0x74,0x69,0x6d,0x65,0x3b,0x0a,0x7d,0x3b,0x0a,0x0a,0x75,0x6e,0x69,0x66,0x6f, 0x72,0x6d,0x20,0x70,0x6c,0x61,0x6e,0x65,0x5f,0x77,0x6f,0x72,0x6c,0x64,0x5f,0x63, - 0x6f,0x6e,0x66,0x69,0x67,0x20,0x5f,0x37,0x30,0x3b,0x0a,0x0a,0x6c,0x61,0x79,0x6f, - 0x75,0x74,0x28,0x6c,0x6f,0x63,0x61,0x74,0x69,0x6f,0x6e,0x20,0x3d,0x20,0x30,0x29, - 0x20,0x6f,0x75,0x74,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x76,0x65,0x63,0x34,0x20, - 0x66,0x72,0x61,0x67,0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x3b,0x0a,0x69,0x6e,0x20,0x68, - 0x69,0x67,0x68,0x70,0x20,0x76,0x65,0x63,0x34,0x20,0x70,0x6f,0x73,0x3b,0x0a,0x66, - 0x6c,0x61,0x74,0x20,0x69,0x6e,0x20,0x69,0x6e,0x74,0x20,0x69,0x64,0x78,0x3b,0x0a, + 0x6f,0x6e,0x66,0x69,0x67,0x20,0x5f,0x31,0x35,0x33,0x3b,0x0a,0x0a,0x6c,0x61,0x79, + 0x6f,0x75,0x74,0x28,0x6c,0x6f,0x63,0x61,0x74,0x69,0x6f,0x6e,0x20,0x3d,0x20,0x30, + 0x29,0x20,0x6f,0x75,0x74,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x76,0x65,0x63,0x34, + 0x20,0x66,0x72,0x61,0x67,0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x3b,0x0a,0x69,0x6e,0x20, + 0x68,0x69,0x67,0x68,0x70,0x20,0x76,0x65,0x63,0x34,0x20,0x70,0x6f,0x73,0x3b,0x0a, + 0x66,0x6c,0x61,0x74,0x20,0x69,0x6e,0x20,0x69,0x6e,0x74,0x20,0x69,0x64,0x78,0x3b, + 0x0a,0x0a,0x68,0x69,0x67,0x68,0x70,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x72,0x61, + 0x6e,0x64,0x6f,0x6d,0x28,0x68,0x69,0x67,0x68,0x70,0x20,0x76,0x65,0x63,0x32,0x20, + 0x73,0x74,0x29,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x72,0x65,0x74,0x75,0x72,0x6e, + 0x20,0x66,0x72,0x61,0x63,0x74,0x28,0x73,0x69,0x6e,0x28,0x64,0x6f,0x74,0x28,0x73, + 0x74,0x2c,0x20,0x76,0x65,0x63,0x32,0x28,0x31,0x32,0x2e,0x39,0x38,0x39,0x38,0x30, + 0x30,0x34,0x35,0x33,0x31,0x38,0x36,0x30,0x33,0x35,0x31,0x35,0x36,0x32,0x35,0x2c, + 0x20,0x37,0x38,0x2e,0x32,0x33,0x33,0x30,0x30,0x31,0x37,0x30,0x38,0x39,0x38,0x34, + 0x33,0x37,0x35,0x29,0x29,0x29,0x20,0x2a,0x20,0x34,0x33,0x37,0x35,0x38,0x2e,0x35, + 0x34,0x36,0x38,0x37,0x35,0x29,0x3b,0x0a,0x7d,0x0a,0x0a,0x68,0x69,0x67,0x68,0x70, + 0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x5f,0x6e,0x6f,0x69,0x73,0x65,0x28,0x68,0x69, + 0x67,0x68,0x70,0x20,0x76,0x65,0x63,0x32,0x20,0x73,0x74,0x29,0x0a,0x7b,0x0a,0x20, + 0x20,0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x76,0x65,0x63,0x32,0x20,0x5f,0x38, + 0x33,0x20,0x3d,0x20,0x66,0x6c,0x6f,0x6f,0x72,0x28,0x73,0x74,0x29,0x3b,0x0a,0x20, + 0x20,0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x76,0x65,0x63,0x32,0x20,0x5f,0x38, + 0x36,0x20,0x3d,0x20,0x66,0x72,0x61,0x63,0x74,0x28,0x73,0x74,0x29,0x3b,0x0a,0x20, + 0x20,0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x76,0x65,0x63,0x32,0x20,0x70,0x61, + 0x72,0x61,0x6d,0x20,0x3d,0x20,0x5f,0x38,0x33,0x3b,0x0a,0x20,0x20,0x20,0x20,0x68, + 0x69,0x67,0x68,0x70,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x5f,0x39,0x30,0x20,0x3d, + 0x20,0x72,0x61,0x6e,0x64,0x6f,0x6d,0x28,0x70,0x61,0x72,0x61,0x6d,0x29,0x3b,0x0a, + 0x20,0x20,0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x76,0x65,0x63,0x32,0x20,0x70, + 0x61,0x72,0x61,0x6d,0x5f,0x31,0x20,0x3d,0x20,0x5f,0x38,0x33,0x20,0x2b,0x20,0x76, + 0x65,0x63,0x32,0x28,0x31,0x2e,0x30,0x2c,0x20,0x30,0x2e,0x30,0x29,0x3b,0x0a,0x20, + 0x20,0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x5f, + 0x39,0x35,0x20,0x3d,0x20,0x72,0x61,0x6e,0x64,0x6f,0x6d,0x28,0x70,0x61,0x72,0x61, + 0x6d,0x5f,0x31,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20, + 0x76,0x65,0x63,0x32,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x32,0x20,0x3d,0x20,0x5f, + 0x38,0x33,0x20,0x2b,0x20,0x76,0x65,0x63,0x32,0x28,0x30,0x2e,0x30,0x2c,0x20,0x31, + 0x2e,0x30,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x76, + 0x65,0x63,0x32,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x33,0x20,0x3d,0x20,0x5f,0x38, + 0x33,0x20,0x2b,0x20,0x76,0x65,0x63,0x32,0x28,0x31,0x2e,0x30,0x29,0x3b,0x0a,0x20, + 0x20,0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x76,0x65,0x63,0x32,0x20,0x5f,0x31, + 0x31,0x37,0x20,0x3d,0x20,0x28,0x5f,0x38,0x36,0x20,0x2a,0x20,0x5f,0x38,0x36,0x29, + 0x20,0x2a,0x20,0x28,0x76,0x65,0x63,0x32,0x28,0x33,0x2e,0x30,0x29,0x20,0x2d,0x20, + 0x28,0x5f,0x38,0x36,0x20,0x2a,0x20,0x32,0x2e,0x30,0x29,0x29,0x3b,0x0a,0x20,0x20, + 0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x5f,0x31, + 0x32,0x33,0x20,0x3d,0x20,0x5f,0x31,0x31,0x37,0x2e,0x78,0x3b,0x0a,0x20,0x20,0x20, + 0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x5f,0x31,0x33, + 0x30,0x20,0x3d,0x20,0x5f,0x31,0x31,0x37,0x2e,0x79,0x3b,0x0a,0x20,0x20,0x20,0x20, + 0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x28,0x6d,0x69,0x78,0x28,0x5f,0x39,0x30,0x2c, + 0x20,0x5f,0x39,0x35,0x2c,0x20,0x5f,0x31,0x32,0x33,0x29,0x20,0x2b,0x20,0x28,0x28, + 0x28,0x72,0x61,0x6e,0x64,0x6f,0x6d,0x28,0x70,0x61,0x72,0x61,0x6d,0x5f,0x32,0x29, + 0x20,0x2d,0x20,0x5f,0x39,0x30,0x29,0x20,0x2a,0x20,0x5f,0x31,0x33,0x30,0x29,0x20, + 0x2a,0x20,0x28,0x31,0x2e,0x30,0x20,0x2d,0x20,0x5f,0x31,0x32,0x33,0x29,0x29,0x29, + 0x20,0x2b,0x20,0x28,0x28,0x28,0x72,0x61,0x6e,0x64,0x6f,0x6d,0x28,0x70,0x61,0x72, + 0x61,0x6d,0x5f,0x33,0x29,0x20,0x2d,0x20,0x5f,0x39,0x35,0x29,0x20,0x2a,0x20,0x5f, + 0x31,0x32,0x33,0x29,0x20,0x2a,0x20,0x5f,0x31,0x33,0x30,0x29,0x3b,0x0a,0x7d,0x0a, 0x0a,0x68,0x69,0x67,0x68,0x70,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x42,0x28,0x68, 0x69,0x67,0x68,0x70,0x20,0x76,0x65,0x63,0x32,0x20,0x55,0x29,0x0a,0x7b,0x0a,0x20, 0x20,0x20,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x28,0x66,0x72,0x61,0x63,0x74, @@ -514,81 +670,104 @@ fs_plane_source_glsl300es := u8.[ 0x35,0x34,0x36,0x38,0x37,0x35,0x29,0x29,0x20,0x2a,0x20,0x30,0x2e,0x32,0x35,0x29, 0x29,0x20,0x2b,0x20,0x30,0x2e,0x35,0x3b,0x0a,0x7d,0x0a,0x0a,0x76,0x6f,0x69,0x64, 0x20,0x6d,0x61,0x69,0x6e,0x28,0x29,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x69,0x66, - 0x20,0x28,0x5f,0x37,0x30,0x2e,0x70,0x6c,0x61,0x6e,0x65,0x54,0x79,0x70,0x65,0x20, - 0x3d,0x3d,0x20,0x31,0x29,0x0a,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x66,0x72,0x61,0x67,0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x20,0x3d, - 0x20,0x76,0x65,0x63,0x34,0x28,0x30,0x2e,0x30,0x2c,0x20,0x30,0x2e,0x30,0x2c,0x20, - 0x31,0x2e,0x30,0x2c,0x20,0x31,0x2e,0x30,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x7d, - 0x0a,0x20,0x20,0x20,0x20,0x65,0x6c,0x73,0x65,0x0a,0x20,0x20,0x20,0x20,0x7b,0x0a, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x76,0x65, - 0x63,0x32,0x20,0x5f,0x39,0x33,0x20,0x3d,0x20,0x70,0x6f,0x73,0x2e,0x78,0x7a,0x20, - 0x2a,0x20,0x38,0x30,0x30,0x30,0x30,0x2e,0x30,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x5f, - 0x39,0x37,0x20,0x3d,0x20,0x5f,0x39,0x33,0x2e,0x79,0x3b,0x0a,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20, - 0x5f,0x31,0x30,0x32,0x20,0x3d,0x20,0x5f,0x39,0x33,0x2e,0x78,0x20,0x2b,0x20,0x73, - 0x69,0x6e,0x28,0x5f,0x39,0x37,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x76,0x65,0x63,0x32,0x20,0x5f,0x31,0x39,0x34, - 0x20,0x3d,0x20,0x76,0x65,0x63,0x32,0x28,0x5f,0x31,0x30,0x32,0x2c,0x20,0x5f,0x39, - 0x37,0x20,0x2b,0x20,0x73,0x69,0x6e,0x28,0x5f,0x31,0x30,0x32,0x29,0x29,0x3b,0x0a, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x76,0x65, - 0x63,0x32,0x20,0x5f,0x31,0x31,0x33,0x20,0x3d,0x20,0x72,0x6f,0x75,0x6e,0x64,0x28, - 0x5f,0x31,0x39,0x34,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x68, - 0x69,0x67,0x68,0x70,0x20,0x76,0x65,0x63,0x32,0x20,0x72,0x75,0x6f,0x68,0x6f,0x6b, - 0x65,0x73,0x6b,0x75,0x73,0x20,0x3d,0x20,0x5f,0x31,0x31,0x33,0x3b,0x0a,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x66,0x6c,0x6f,0x61, - 0x74,0x20,0x5f,0x31,0x32,0x30,0x20,0x3d,0x20,0x30,0x2e,0x30,0x30,0x37,0x38,0x31, - 0x32,0x35,0x20,0x2a,0x20,0x66,0x6c,0x6f,0x61,0x74,0x28,0x69,0x64,0x78,0x29,0x3b, + 0x20,0x28,0x5f,0x31,0x35,0x33,0x2e,0x70,0x6c,0x61,0x6e,0x65,0x54,0x79,0x70,0x65, + 0x20,0x3d,0x3d,0x20,0x31,0x29,0x0a,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20, + 0x20,0x20,0x20,0x20,0x20,0x66,0x72,0x61,0x67,0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x20, + 0x3d,0x20,0x76,0x65,0x63,0x34,0x28,0x30,0x2e,0x30,0x2c,0x20,0x30,0x2e,0x30,0x2c, + 0x20,0x31,0x2e,0x30,0x2c,0x20,0x31,0x2e,0x30,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20, + 0x7d,0x0a,0x20,0x20,0x20,0x20,0x65,0x6c,0x73,0x65,0x0a,0x20,0x20,0x20,0x20,0x7b, 0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x76, - 0x65,0x63,0x32,0x20,0x70,0x61,0x72,0x61,0x6d,0x20,0x3d,0x20,0x5f,0x31,0x31,0x33, - 0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20, - 0x66,0x6c,0x6f,0x61,0x74,0x20,0x5f,0x31,0x33,0x31,0x20,0x3d,0x20,0x42,0x28,0x70, - 0x61,0x72,0x61,0x6d,0x29,0x20,0x2b,0x20,0x28,0x73,0x69,0x6e,0x28,0x70,0x6f,0x73, + 0x65,0x63,0x32,0x20,0x5f,0x31,0x37,0x36,0x20,0x3d,0x20,0x70,0x6f,0x73,0x2e,0x78, + 0x7a,0x20,0x2a,0x20,0x38,0x30,0x30,0x30,0x30,0x2e,0x30,0x3b,0x0a,0x20,0x20,0x20, + 0x20,0x20,0x20,0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x66,0x6c,0x6f,0x61,0x74, + 0x20,0x5f,0x31,0x37,0x38,0x20,0x3d,0x20,0x5f,0x31,0x37,0x36,0x2e,0x79,0x3b,0x0a, + 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x66,0x6c, + 0x6f,0x61,0x74,0x20,0x5f,0x31,0x38,0x32,0x20,0x3d,0x20,0x5f,0x31,0x37,0x36,0x2e, + 0x78,0x20,0x2b,0x20,0x73,0x69,0x6e,0x28,0x5f,0x31,0x37,0x38,0x29,0x3b,0x0a,0x20, + 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x76,0x65,0x63, + 0x32,0x20,0x5f,0x33,0x30,0x37,0x20,0x3d,0x20,0x76,0x65,0x63,0x32,0x28,0x5f,0x31, + 0x38,0x32,0x2c,0x20,0x5f,0x31,0x37,0x38,0x20,0x2b,0x20,0x73,0x69,0x6e,0x28,0x5f, + 0x31,0x38,0x32,0x29,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x68, + 0x69,0x67,0x68,0x70,0x20,0x76,0x65,0x63,0x32,0x20,0x72,0x75,0x6f,0x68,0x6f,0x6b, + 0x65,0x73,0x6b,0x75,0x73,0x20,0x3d,0x20,0x72,0x6f,0x75,0x6e,0x64,0x28,0x5f,0x33, + 0x30,0x37,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x68,0x69,0x67, + 0x68,0x70,0x20,0x76,0x65,0x63,0x32,0x20,0x70,0x61,0x72,0x61,0x6d,0x20,0x3d,0x20, + 0x5f,0x33,0x30,0x37,0x20,0x2a,0x20,0x76,0x65,0x63,0x32,0x28,0x30,0x2e,0x30,0x31, + 0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x35,0x35,0x32,0x39,0x36,0x35,0x31,0x36,0x34, + 0x31,0x38,0x34,0x35,0x37,0x30,0x33,0x31,0x32,0x35,0x29,0x3b,0x0a,0x20,0x20,0x20, + 0x20,0x20,0x20,0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x66,0x6c,0x6f,0x61,0x74, + 0x20,0x5f,0x32,0x30,0x30,0x20,0x3d,0x20,0x5f,0x6e,0x6f,0x69,0x73,0x65,0x28,0x70, + 0x61,0x72,0x61,0x6d,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x68, + 0x69,0x67,0x68,0x70,0x20,0x76,0x65,0x63,0x32,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f, + 0x31,0x20,0x3d,0x20,0x5f,0x33,0x30,0x37,0x20,0x2a,0x20,0x76,0x65,0x63,0x32,0x28, + 0x30,0x2e,0x30,0x30,0x32,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x39,0x34,0x39,0x39, + 0x34,0x39,0x30,0x32,0x36,0x31,0x30,0x37,0x37,0x38,0x38,0x30,0x38,0x35,0x39,0x33, + 0x37,0x35,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x68,0x69,0x67, + 0x68,0x70,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x5f,0x32,0x30,0x37,0x20,0x3d,0x20, + 0x5f,0x6e,0x6f,0x69,0x73,0x65,0x28,0x70,0x61,0x72,0x61,0x6d,0x5f,0x31,0x29,0x3b, + 0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x66, + 0x6c,0x6f,0x61,0x74,0x20,0x5f,0x32,0x31,0x34,0x20,0x3d,0x20,0x30,0x2e,0x30,0x30, + 0x37,0x38,0x31,0x32,0x35,0x20,0x2a,0x20,0x66,0x6c,0x6f,0x61,0x74,0x28,0x69,0x64, + 0x78,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x68,0x69,0x67,0x68, + 0x70,0x20,0x76,0x65,0x63,0x32,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x32,0x20,0x3d, + 0x20,0x72,0x75,0x6f,0x68,0x6f,0x6b,0x65,0x73,0x6b,0x75,0x73,0x3b,0x0a,0x20,0x20, + 0x20,0x20,0x20,0x20,0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x66,0x6c,0x6f,0x61, + 0x74,0x20,0x5f,0x32,0x33,0x34,0x20,0x3d,0x20,0x28,0x28,0x42,0x28,0x70,0x61,0x72, + 0x61,0x6d,0x5f,0x32,0x29,0x20,0x2b,0x20,0x28,0x73,0x69,0x6e,0x28,0x70,0x6f,0x73, 0x2e,0x78,0x29,0x20,0x2a,0x20,0x30,0x2e,0x34,0x30,0x30,0x30,0x30,0x30,0x30,0x30, 0x35,0x39,0x36,0x30,0x34,0x36,0x34,0x34,0x37,0x37,0x35,0x33,0x39,0x30,0x36,0x32, - 0x35,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x68,0x69,0x67,0x68, - 0x70,0x20,0x76,0x65,0x63,0x32,0x20,0x5f,0x31,0x39,0x31,0x20,0x3d,0x20,0x72,0x75, - 0x6f,0x68,0x6f,0x6b,0x65,0x73,0x6b,0x75,0x73,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x5f,0x31,0x39,0x31,0x2e,0x78,0x20,0x3d,0x20,0x5f,0x31,0x39,0x31, - 0x2e,0x78,0x20,0x2b,0x20,0x28,0x28,0x73,0x69,0x6e,0x28,0x5f,0x37,0x30,0x2e,0x74, - 0x69,0x6d,0x65,0x20,0x2a,0x20,0x31,0x2e,0x32,0x30,0x30,0x30,0x30,0x30,0x30,0x34, - 0x37,0x36,0x38,0x33,0x37,0x31,0x35,0x38,0x32,0x30,0x33,0x31,0x32,0x35,0x29,0x20, - 0x2a,0x20,0x30,0x2e,0x36,0x30,0x30,0x30,0x30,0x30,0x30,0x32,0x33,0x38,0x34,0x31, - 0x38,0x35,0x37,0x39,0x31,0x30,0x31,0x35,0x36,0x32,0x35,0x29,0x20,0x2a,0x20,0x5f, - 0x31,0x32,0x30,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x72,0x75, - 0x6f,0x68,0x6f,0x6b,0x65,0x73,0x6b,0x75,0x73,0x20,0x3d,0x20,0x5f,0x31,0x39,0x31, - 0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x62,0x6f,0x6f,0x6c,0x20,0x5f, - 0x31,0x35,0x34,0x20,0x3d,0x20,0x69,0x64,0x78,0x20,0x3e,0x20,0x30,0x3b,0x0a,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x5f,0x31,0x35,0x34,0x20, - 0x26,0x26,0x20,0x28,0x5f,0x31,0x33,0x31,0x20,0x3c,0x20,0x30,0x2e,0x32,0x30,0x30, - 0x30,0x30,0x30,0x30,0x30,0x32,0x39,0x38,0x30,0x32,0x33,0x32,0x32,0x33,0x38,0x37, - 0x36,0x39,0x35,0x33,0x31,0x32,0x35,0x29,0x29,0x0a,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x64,0x69,0x73,0x63,0x61,0x72,0x64,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x62,0x6f,0x6f,0x6c,0x20, - 0x5f,0x31,0x37,0x34,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66, - 0x20,0x28,0x5f,0x31,0x35,0x34,0x29,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x31, - 0x37,0x34,0x20,0x3d,0x20,0x28,0x28,0x5f,0x31,0x33,0x31,0x20,0x2d,0x20,0x5f,0x31, - 0x32,0x30,0x29,0x20,0x2a,0x20,0x30,0x2e,0x35,0x29,0x20,0x3c,0x20,0x6c,0x65,0x6e, - 0x67,0x74,0x68,0x28,0x5f,0x31,0x39,0x31,0x20,0x2d,0x20,0x5f,0x31,0x39,0x34,0x29, + 0x35,0x29,0x29,0x20,0x2a,0x20,0x30,0x2e,0x35,0x29,0x20,0x2b,0x20,0x28,0x28,0x5f, + 0x32,0x30,0x37,0x20,0x2a,0x20,0x30,0x2e,0x34,0x30,0x30,0x30,0x30,0x30,0x30,0x30, + 0x35,0x39,0x36,0x30,0x34,0x36,0x34,0x34,0x37,0x37,0x35,0x33,0x39,0x30,0x36,0x32, + 0x35,0x29,0x20,0x2b,0x20,0x28,0x5f,0x32,0x30,0x30,0x20,0x2a,0x20,0x30,0x2e,0x31, + 0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x31,0x34,0x39,0x30,0x31,0x31,0x36,0x31,0x31, + 0x39,0x33,0x38,0x34,0x37,0x36,0x35,0x36,0x32,0x35,0x29,0x29,0x3b,0x0a,0x20,0x20, + 0x20,0x20,0x20,0x20,0x20,0x20,0x68,0x69,0x67,0x68,0x70,0x20,0x76,0x65,0x63,0x32, + 0x20,0x5f,0x32,0x39,0x39,0x20,0x3d,0x20,0x72,0x75,0x6f,0x68,0x6f,0x6b,0x65,0x73, + 0x6b,0x75,0x73,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x32,0x39, + 0x39,0x2e,0x78,0x20,0x3d,0x20,0x5f,0x32,0x39,0x39,0x2e,0x78,0x20,0x2b,0x20,0x28, + 0x28,0x73,0x69,0x6e,0x28,0x5f,0x31,0x35,0x33,0x2e,0x74,0x69,0x6d,0x65,0x20,0x2a, + 0x20,0x31,0x2e,0x32,0x30,0x30,0x30,0x30,0x30,0x30,0x34,0x37,0x36,0x38,0x33,0x37, + 0x31,0x35,0x38,0x32,0x30,0x33,0x31,0x32,0x35,0x29,0x20,0x2a,0x20,0x30,0x2e,0x36, + 0x30,0x30,0x30,0x30,0x30,0x30,0x32,0x33,0x38,0x34,0x31,0x38,0x35,0x37,0x39,0x31, + 0x30,0x31,0x35,0x36,0x32,0x35,0x29,0x20,0x2a,0x20,0x5f,0x32,0x31,0x34,0x29,0x3b, + 0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x72,0x75,0x6f,0x68,0x6f,0x6b,0x65, + 0x73,0x6b,0x75,0x73,0x20,0x3d,0x20,0x5f,0x32,0x39,0x39,0x3b,0x0a,0x20,0x20,0x20, + 0x20,0x20,0x20,0x20,0x20,0x62,0x6f,0x6f,0x6c,0x20,0x5f,0x32,0x35,0x37,0x20,0x3d, + 0x20,0x69,0x64,0x78,0x20,0x3e,0x20,0x30,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20, + 0x20,0x20,0x69,0x66,0x20,0x28,0x5f,0x32,0x35,0x37,0x20,0x26,0x26,0x20,0x28,0x5f, + 0x32,0x33,0x34,0x20,0x3c,0x20,0x30,0x2e,0x32,0x30,0x30,0x30,0x30,0x30,0x30,0x30, + 0x32,0x39,0x38,0x30,0x32,0x33,0x32,0x32,0x33,0x38,0x37,0x36,0x39,0x35,0x33,0x31, + 0x32,0x35,0x29,0x29,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20, + 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x64,0x69,0x73,0x63,0x61, + 0x72,0x64,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20, + 0x20,0x20,0x20,0x20,0x20,0x20,0x62,0x6f,0x6f,0x6c,0x20,0x5f,0x32,0x37,0x37,0x3b, + 0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x5f,0x32,0x35, + 0x37,0x29,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20, + 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x32,0x37,0x37,0x20,0x3d,0x20, + 0x28,0x28,0x5f,0x32,0x33,0x34,0x20,0x2d,0x20,0x5f,0x32,0x31,0x34,0x29,0x20,0x2a, + 0x20,0x30,0x2e,0x35,0x29,0x20,0x3c,0x20,0x6c,0x65,0x6e,0x67,0x74,0x68,0x28,0x5f, + 0x32,0x39,0x39,0x20,0x2d,0x20,0x5f,0x33,0x30,0x37,0x29,0x3b,0x0a,0x20,0x20,0x20, + 0x20,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x65, + 0x6c,0x73,0x65,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20, + 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x32,0x37,0x37,0x20,0x3d, + 0x20,0x5f,0x32,0x35,0x37,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d, + 0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x5f,0x32,0x37, + 0x37,0x29,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20, + 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x64,0x69,0x73,0x63,0x61,0x72,0x64, 0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20, 0x20,0x20,0x20,0x20,0x65,0x6c,0x73,0x65,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f, - 0x31,0x37,0x34,0x20,0x3d,0x20,0x5f,0x31,0x35,0x34,0x3b,0x0a,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66, - 0x20,0x28,0x5f,0x31,0x37,0x34,0x29,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x64,0x69, - 0x73,0x63,0x61,0x72,0x64,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d, - 0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x65,0x6c,0x73,0x65,0x0a,0x20,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x66,0x72,0x61,0x67,0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x20,0x3d, - 0x20,0x76,0x65,0x63,0x34,0x28,0x30,0x2e,0x30,0x2c,0x20,0x6d,0x69,0x6e,0x28,0x31, - 0x2e,0x30,0x2c,0x20,0x5f,0x31,0x32,0x30,0x20,0x2b,0x20,0x30,0x2e,0x32,0x30,0x30, - 0x30,0x30,0x30,0x30,0x30,0x32,0x39,0x38,0x30,0x32,0x33,0x32,0x32,0x33,0x38,0x37, - 0x36,0x39,0x35,0x33,0x31,0x32,0x35,0x29,0x2c,0x20,0x30,0x2e,0x30,0x2c,0x20,0x31, - 0x2e,0x30,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20, - 0x20,0x20,0x20,0x7d,0x0a,0x7d,0x0a,0x0a,0x00, + 0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66, + 0x72,0x61,0x67,0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x20,0x3d,0x20,0x76,0x65,0x63,0x34, + 0x28,0x5f,0x32,0x30,0x37,0x20,0x2a,0x20,0x30,0x2e,0x35,0x2c,0x20,0x6d,0x69,0x6e, + 0x28,0x31,0x2e,0x30,0x2c,0x20,0x5f,0x32,0x31,0x34,0x20,0x2b,0x20,0x30,0x2e,0x32, + 0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x32,0x39,0x38,0x30,0x32,0x33,0x32,0x32,0x33, + 0x38,0x37,0x36,0x39,0x35,0x33,0x31,0x32,0x35,0x29,0x20,0x2b,0x20,0x28,0x5f,0x32, + 0x30,0x30,0x20,0x2a,0x20,0x30,0x2e,0x32,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x32, + 0x39,0x38,0x30,0x32,0x33,0x32,0x32,0x33,0x38,0x37,0x36,0x39,0x35,0x33,0x31,0x32, + 0x35,0x29,0x2c,0x20,0x30,0x2e,0x30,0x2c,0x20,0x31,0x2e,0x30,0x29,0x3b,0x0a,0x20, + 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x7d,0x0a,0x7d, + 0x0a,0x0a,0x00, ]; /* #include @@ -617,7 +796,7 @@ fs_plane_source_glsl300es := u8.[ { main0_out out = {}; float3 _16 = in.position.xyz * 1000.0; - out.gl_Position = _28.mvp * float4(_16.x, float(int(gl_InstanceIndex)) * 0.001000000047497451305389404296875, _16.z, 1.0); + out.gl_Position = _28.mvp * float4(_16.x, float(int(gl_InstanceIndex)) * 0.0030000000260770320892333984375, _16.z, 1.0); out.pos = in.position; out.idx = int(gl_InstanceIndex); return out; @@ -661,15 +840,15 @@ vs_plane_source_metal_macos := u8.[ 0x6d,0x76,0x70,0x20,0x2a,0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x28,0x5f,0x31,0x36, 0x2e,0x78,0x2c,0x20,0x66,0x6c,0x6f,0x61,0x74,0x28,0x69,0x6e,0x74,0x28,0x67,0x6c, 0x5f,0x49,0x6e,0x73,0x74,0x61,0x6e,0x63,0x65,0x49,0x6e,0x64,0x65,0x78,0x29,0x29, - 0x20,0x2a,0x20,0x30,0x2e,0x30,0x30,0x31,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x34, - 0x37,0x34,0x39,0x37,0x34,0x35,0x31,0x33,0x30,0x35,0x33,0x38,0x39,0x34,0x30,0x34, - 0x32,0x39,0x36,0x38,0x37,0x35,0x2c,0x20,0x5f,0x31,0x36,0x2e,0x7a,0x2c,0x20,0x31, - 0x2e,0x30,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x2e,0x70,0x6f,0x73, - 0x20,0x3d,0x20,0x69,0x6e,0x2e,0x70,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x3b,0x0a, - 0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x2e,0x69,0x64,0x78,0x20,0x3d,0x20,0x69,0x6e, - 0x74,0x28,0x67,0x6c,0x5f,0x49,0x6e,0x73,0x74,0x61,0x6e,0x63,0x65,0x49,0x6e,0x64, - 0x65,0x78,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x20, - 0x6f,0x75,0x74,0x3b,0x0a,0x7d,0x0a,0x0a,0x00, + 0x20,0x2a,0x20,0x30,0x2e,0x30,0x30,0x33,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x32, + 0x36,0x30,0x37,0x37,0x30,0x33,0x32,0x30,0x38,0x39,0x32,0x33,0x33,0x33,0x39,0x38, + 0x34,0x33,0x37,0x35,0x2c,0x20,0x5f,0x31,0x36,0x2e,0x7a,0x2c,0x20,0x31,0x2e,0x30, + 0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x2e,0x70,0x6f,0x73,0x20,0x3d, + 0x20,0x69,0x6e,0x2e,0x70,0x6f,0x73,0x69,0x74,0x69,0x6f,0x6e,0x3b,0x0a,0x20,0x20, + 0x20,0x20,0x6f,0x75,0x74,0x2e,0x69,0x64,0x78,0x20,0x3d,0x20,0x69,0x6e,0x74,0x28, + 0x67,0x6c,0x5f,0x49,0x6e,0x73,0x74,0x61,0x6e,0x63,0x65,0x49,0x6e,0x64,0x65,0x78, + 0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x6f,0x75, + 0x74,0x3b,0x0a,0x7d,0x0a,0x0a,0x00, ]; /* #pragma clang diagnostic ignored "-Wmissing-prototypes" @@ -708,54 +887,80 @@ vs_plane_source_metal_macos := u8.[ int idx [[user(locn1)]]; }; + static inline __attribute__((always_inline)) + float random(thread const float2& st) + { + return fract(sin(dot(st, float2(12.98980045318603515625, 78.233001708984375))) * 43758.546875); + } + + static inline __attribute__((always_inline)) + float _noise(thread const float2& st) + { + float2 _83 = floor(st); + float2 _86 = fract(st); + float2 param = _83; + float _90 = random(param); + float2 param_1 = _83 + float2(1.0, 0.0); + float _95 = random(param_1); + float2 param_2 = _83 + float2(0.0, 1.0); + float2 param_3 = _83 + float2(1.0); + float2 _117 = (_86 * _86) * (float2(3.0) - (_86 * 2.0)); + float _123 = _117.x; + float _130 = _117.y; + return (mix(_90, _95, _123) + (((random(param_2) - _90) * _130) * (1.0 - _123))) + (((random(param_3) - _95) * _123) * _130); + } + static inline __attribute__((always_inline)) float B(thread const float2& U) { return (fract(sin(dot(U, float2(11.98980045318603515625, 78.233001708984375))) * 43758.546875) - ((((fract(sin(dot(U + float2(-1.0, 0.0), float2(11.98980045318603515625, 78.233001708984375))) * 43758.546875) + fract(sin(dot(U + float2(1.0, 0.0), float2(11.98980045318603515625, 78.233001708984375))) * 43758.546875)) + fract(sin(dot(U + float2(0.0, 1.0), float2(11.98980045318603515625, 78.233001708984375))) * 43758.546875)) + fract(sin(dot(U + float2(0.0, -1.0), float2(11.98980045318603515625, 78.233001708984375))) * 43758.546875)) * 0.25)) + 0.5; } - fragment main0_out main0(main0_in in [[stage_in]], constant plane_world_config& _70 [[buffer(0)]]) + fragment main0_out main0(main0_in in [[stage_in]], constant plane_world_config& _153 [[buffer(0)]]) { main0_out out = {}; - if (_70.planeType == 1) + if (_153.planeType == 1) { out.frag_color = float4(0.0, 0.0, 1.0, 1.0); } else { - float2 _93 = in.pos.xz * 80000.0; - float _97 = _93.y; - float _102 = _93.x + sin(_97); - float2 _194 = float2(_102, _97 + sin(_102)); - float2 _113 = round(_194); - float2 ruohokeskus = _113; - float _120 = 0.0078125 * float(in.idx); - float2 param = _113; - float _131 = B(param) + (sin(in.pos.x) * 0.4000000059604644775390625); - float2 _191 = ruohokeskus; - _191.x = _191.x + ((sin(_70.time * 1.2000000476837158203125) * 0.60000002384185791015625) * _120); - ruohokeskus = _191; - bool _154 = in.idx > 0; - if (_154 && (_131 < 0.20000000298023223876953125)) + float2 _176 = in.pos.xz * 80000.0; + float _178 = _176.y; + float _182 = _176.x + sin(_178); + float2 _307 = float2(_182, _178 + sin(_182)); + float2 ruohokeskus = round(_307); + float2 param = _307 * float2(0.0199999995529651641845703125); + float _200 = _noise(param); + float2 param_1 = _307 * float2(0.00200000009499490261077880859375); + float _207 = _noise(param_1); + float _214 = 0.0078125 * float(in.idx); + float2 param_2 = ruohokeskus; + float _234 = ((B(param_2) + (sin(in.pos.x) * 0.4000000059604644775390625)) * 0.5) + ((_207 * 0.4000000059604644775390625) + (_200 * 0.100000001490116119384765625)); + float2 _299 = ruohokeskus; + _299.x = _299.x + ((sin(_153.time * 1.2000000476837158203125) * 0.60000002384185791015625) * _214); + ruohokeskus = _299; + bool _257 = in.idx > 0; + if (_257 && (_234 < 0.20000000298023223876953125)) { discard_fragment(); } - bool _174; - if (_154) + bool _277; + if (_257) { - _174 = ((_131 - _120) * 0.5) < length(_191 - _194); + _277 = ((_234 - _214) * 0.5) < length(_299 - _307); } else { - _174 = _154; + _277 = _257; } - if (_174) + if (_277) { discard_fragment(); } else { - out.frag_color = float4(0.0, fast::min(1.0, _120 + 0.20000000298023223876953125), 0.0, 1.0); + out.frag_color = float4(_207 * 0.5, fast::min(1.0, _214 + 0.20000000298023223876953125) + (_200 * 0.20000000298023223876953125), 0.0, 1.0); } } return out; @@ -804,127 +1009,199 @@ fs_plane_source_metal_macos := u8.[ 0x61,0x74,0x69,0x63,0x20,0x69,0x6e,0x6c,0x69,0x6e,0x65,0x20,0x5f,0x5f,0x61,0x74, 0x74,0x72,0x69,0x62,0x75,0x74,0x65,0x5f,0x5f,0x28,0x28,0x61,0x6c,0x77,0x61,0x79, 0x73,0x5f,0x69,0x6e,0x6c,0x69,0x6e,0x65,0x29,0x29,0x0a,0x66,0x6c,0x6f,0x61,0x74, - 0x20,0x42,0x28,0x74,0x68,0x72,0x65,0x61,0x64,0x20,0x63,0x6f,0x6e,0x73,0x74,0x20, - 0x66,0x6c,0x6f,0x61,0x74,0x32,0x26,0x20,0x55,0x29,0x0a,0x7b,0x0a,0x20,0x20,0x20, - 0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x28,0x66,0x72,0x61,0x63,0x74,0x28,0x73, - 0x69,0x6e,0x28,0x64,0x6f,0x74,0x28,0x55,0x2c,0x20,0x66,0x6c,0x6f,0x61,0x74,0x32, - 0x28,0x31,0x31,0x2e,0x39,0x38,0x39,0x38,0x30,0x30,0x34,0x35,0x33,0x31,0x38,0x36, - 0x30,0x33,0x35,0x31,0x35,0x36,0x32,0x35,0x2c,0x20,0x37,0x38,0x2e,0x32,0x33,0x33, - 0x30,0x30,0x31,0x37,0x30,0x38,0x39,0x38,0x34,0x33,0x37,0x35,0x29,0x29,0x29,0x20, - 0x2a,0x20,0x34,0x33,0x37,0x35,0x38,0x2e,0x35,0x34,0x36,0x38,0x37,0x35,0x29,0x20, - 0x2d,0x20,0x28,0x28,0x28,0x28,0x66,0x72,0x61,0x63,0x74,0x28,0x73,0x69,0x6e,0x28, - 0x64,0x6f,0x74,0x28,0x55,0x20,0x2b,0x20,0x66,0x6c,0x6f,0x61,0x74,0x32,0x28,0x2d, - 0x31,0x2e,0x30,0x2c,0x20,0x30,0x2e,0x30,0x29,0x2c,0x20,0x66,0x6c,0x6f,0x61,0x74, - 0x32,0x28,0x31,0x31,0x2e,0x39,0x38,0x39,0x38,0x30,0x30,0x34,0x35,0x33,0x31,0x38, - 0x36,0x30,0x33,0x35,0x31,0x35,0x36,0x32,0x35,0x2c,0x20,0x37,0x38,0x2e,0x32,0x33, - 0x33,0x30,0x30,0x31,0x37,0x30,0x38,0x39,0x38,0x34,0x33,0x37,0x35,0x29,0x29,0x29, - 0x20,0x2a,0x20,0x34,0x33,0x37,0x35,0x38,0x2e,0x35,0x34,0x36,0x38,0x37,0x35,0x29, - 0x20,0x2b,0x20,0x66,0x72,0x61,0x63,0x74,0x28,0x73,0x69,0x6e,0x28,0x64,0x6f,0x74, - 0x28,0x55,0x20,0x2b,0x20,0x66,0x6c,0x6f,0x61,0x74,0x32,0x28,0x31,0x2e,0x30,0x2c, - 0x20,0x30,0x2e,0x30,0x29,0x2c,0x20,0x66,0x6c,0x6f,0x61,0x74,0x32,0x28,0x31,0x31, - 0x2e,0x39,0x38,0x39,0x38,0x30,0x30,0x34,0x35,0x33,0x31,0x38,0x36,0x30,0x33,0x35, - 0x31,0x35,0x36,0x32,0x35,0x2c,0x20,0x37,0x38,0x2e,0x32,0x33,0x33,0x30,0x30,0x31, - 0x37,0x30,0x38,0x39,0x38,0x34,0x33,0x37,0x35,0x29,0x29,0x29,0x20,0x2a,0x20,0x34, - 0x33,0x37,0x35,0x38,0x2e,0x35,0x34,0x36,0x38,0x37,0x35,0x29,0x29,0x20,0x2b,0x20, - 0x66,0x72,0x61,0x63,0x74,0x28,0x73,0x69,0x6e,0x28,0x64,0x6f,0x74,0x28,0x55,0x20, - 0x2b,0x20,0x66,0x6c,0x6f,0x61,0x74,0x32,0x28,0x30,0x2e,0x30,0x2c,0x20,0x31,0x2e, - 0x30,0x29,0x2c,0x20,0x66,0x6c,0x6f,0x61,0x74,0x32,0x28,0x31,0x31,0x2e,0x39,0x38, - 0x39,0x38,0x30,0x30,0x34,0x35,0x33,0x31,0x38,0x36,0x30,0x33,0x35,0x31,0x35,0x36, - 0x32,0x35,0x2c,0x20,0x37,0x38,0x2e,0x32,0x33,0x33,0x30,0x30,0x31,0x37,0x30,0x38, - 0x39,0x38,0x34,0x33,0x37,0x35,0x29,0x29,0x29,0x20,0x2a,0x20,0x34,0x33,0x37,0x35, - 0x38,0x2e,0x35,0x34,0x36,0x38,0x37,0x35,0x29,0x29,0x20,0x2b,0x20,0x66,0x72,0x61, + 0x20,0x72,0x61,0x6e,0x64,0x6f,0x6d,0x28,0x74,0x68,0x72,0x65,0x61,0x64,0x20,0x63, + 0x6f,0x6e,0x73,0x74,0x20,0x66,0x6c,0x6f,0x61,0x74,0x32,0x26,0x20,0x73,0x74,0x29, + 0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x66,0x72, + 0x61,0x63,0x74,0x28,0x73,0x69,0x6e,0x28,0x64,0x6f,0x74,0x28,0x73,0x74,0x2c,0x20, + 0x66,0x6c,0x6f,0x61,0x74,0x32,0x28,0x31,0x32,0x2e,0x39,0x38,0x39,0x38,0x30,0x30, + 0x34,0x35,0x33,0x31,0x38,0x36,0x30,0x33,0x35,0x31,0x35,0x36,0x32,0x35,0x2c,0x20, + 0x37,0x38,0x2e,0x32,0x33,0x33,0x30,0x30,0x31,0x37,0x30,0x38,0x39,0x38,0x34,0x33, + 0x37,0x35,0x29,0x29,0x29,0x20,0x2a,0x20,0x34,0x33,0x37,0x35,0x38,0x2e,0x35,0x34, + 0x36,0x38,0x37,0x35,0x29,0x3b,0x0a,0x7d,0x0a,0x0a,0x73,0x74,0x61,0x74,0x69,0x63, + 0x20,0x69,0x6e,0x6c,0x69,0x6e,0x65,0x20,0x5f,0x5f,0x61,0x74,0x74,0x72,0x69,0x62, + 0x75,0x74,0x65,0x5f,0x5f,0x28,0x28,0x61,0x6c,0x77,0x61,0x79,0x73,0x5f,0x69,0x6e, + 0x6c,0x69,0x6e,0x65,0x29,0x29,0x0a,0x66,0x6c,0x6f,0x61,0x74,0x20,0x5f,0x6e,0x6f, + 0x69,0x73,0x65,0x28,0x74,0x68,0x72,0x65,0x61,0x64,0x20,0x63,0x6f,0x6e,0x73,0x74, + 0x20,0x66,0x6c,0x6f,0x61,0x74,0x32,0x26,0x20,0x73,0x74,0x29,0x0a,0x7b,0x0a,0x20, + 0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x32,0x20,0x5f,0x38,0x33,0x20,0x3d,0x20, + 0x66,0x6c,0x6f,0x6f,0x72,0x28,0x73,0x74,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66, + 0x6c,0x6f,0x61,0x74,0x32,0x20,0x5f,0x38,0x36,0x20,0x3d,0x20,0x66,0x72,0x61,0x63, + 0x74,0x28,0x73,0x74,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74, + 0x32,0x20,0x70,0x61,0x72,0x61,0x6d,0x20,0x3d,0x20,0x5f,0x38,0x33,0x3b,0x0a,0x20, + 0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x5f,0x39,0x30,0x20,0x3d,0x20,0x72, + 0x61,0x6e,0x64,0x6f,0x6d,0x28,0x70,0x61,0x72,0x61,0x6d,0x29,0x3b,0x0a,0x20,0x20, + 0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x32,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x31, + 0x20,0x3d,0x20,0x5f,0x38,0x33,0x20,0x2b,0x20,0x66,0x6c,0x6f,0x61,0x74,0x32,0x28, + 0x31,0x2e,0x30,0x2c,0x20,0x30,0x2e,0x30,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66, + 0x6c,0x6f,0x61,0x74,0x20,0x5f,0x39,0x35,0x20,0x3d,0x20,0x72,0x61,0x6e,0x64,0x6f, + 0x6d,0x28,0x70,0x61,0x72,0x61,0x6d,0x5f,0x31,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20, + 0x66,0x6c,0x6f,0x61,0x74,0x32,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x32,0x20,0x3d, + 0x20,0x5f,0x38,0x33,0x20,0x2b,0x20,0x66,0x6c,0x6f,0x61,0x74,0x32,0x28,0x30,0x2e, + 0x30,0x2c,0x20,0x31,0x2e,0x30,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f, + 0x61,0x74,0x32,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x33,0x20,0x3d,0x20,0x5f,0x38, + 0x33,0x20,0x2b,0x20,0x66,0x6c,0x6f,0x61,0x74,0x32,0x28,0x31,0x2e,0x30,0x29,0x3b, + 0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x32,0x20,0x5f,0x31,0x31,0x37, + 0x20,0x3d,0x20,0x28,0x5f,0x38,0x36,0x20,0x2a,0x20,0x5f,0x38,0x36,0x29,0x20,0x2a, + 0x20,0x28,0x66,0x6c,0x6f,0x61,0x74,0x32,0x28,0x33,0x2e,0x30,0x29,0x20,0x2d,0x20, + 0x28,0x5f,0x38,0x36,0x20,0x2a,0x20,0x32,0x2e,0x30,0x29,0x29,0x3b,0x0a,0x20,0x20, + 0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x5f,0x31,0x32,0x33,0x20,0x3d,0x20,0x5f, + 0x31,0x31,0x37,0x2e,0x78,0x3b,0x0a,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74, + 0x20,0x5f,0x31,0x33,0x30,0x20,0x3d,0x20,0x5f,0x31,0x31,0x37,0x2e,0x79,0x3b,0x0a, + 0x20,0x20,0x20,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x28,0x6d,0x69,0x78,0x28, + 0x5f,0x39,0x30,0x2c,0x20,0x5f,0x39,0x35,0x2c,0x20,0x5f,0x31,0x32,0x33,0x29,0x20, + 0x2b,0x20,0x28,0x28,0x28,0x72,0x61,0x6e,0x64,0x6f,0x6d,0x28,0x70,0x61,0x72,0x61, + 0x6d,0x5f,0x32,0x29,0x20,0x2d,0x20,0x5f,0x39,0x30,0x29,0x20,0x2a,0x20,0x5f,0x31, + 0x33,0x30,0x29,0x20,0x2a,0x20,0x28,0x31,0x2e,0x30,0x20,0x2d,0x20,0x5f,0x31,0x32, + 0x33,0x29,0x29,0x29,0x20,0x2b,0x20,0x28,0x28,0x28,0x72,0x61,0x6e,0x64,0x6f,0x6d, + 0x28,0x70,0x61,0x72,0x61,0x6d,0x5f,0x33,0x29,0x20,0x2d,0x20,0x5f,0x39,0x35,0x29, + 0x20,0x2a,0x20,0x5f,0x31,0x32,0x33,0x29,0x20,0x2a,0x20,0x5f,0x31,0x33,0x30,0x29, + 0x3b,0x0a,0x7d,0x0a,0x0a,0x73,0x74,0x61,0x74,0x69,0x63,0x20,0x69,0x6e,0x6c,0x69, + 0x6e,0x65,0x20,0x5f,0x5f,0x61,0x74,0x74,0x72,0x69,0x62,0x75,0x74,0x65,0x5f,0x5f, + 0x28,0x28,0x61,0x6c,0x77,0x61,0x79,0x73,0x5f,0x69,0x6e,0x6c,0x69,0x6e,0x65,0x29, + 0x29,0x0a,0x66,0x6c,0x6f,0x61,0x74,0x20,0x42,0x28,0x74,0x68,0x72,0x65,0x61,0x64, + 0x20,0x63,0x6f,0x6e,0x73,0x74,0x20,0x66,0x6c,0x6f,0x61,0x74,0x32,0x26,0x20,0x55, + 0x29,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x28, + 0x66,0x72,0x61,0x63,0x74,0x28,0x73,0x69,0x6e,0x28,0x64,0x6f,0x74,0x28,0x55,0x2c, + 0x20,0x66,0x6c,0x6f,0x61,0x74,0x32,0x28,0x31,0x31,0x2e,0x39,0x38,0x39,0x38,0x30, + 0x30,0x34,0x35,0x33,0x31,0x38,0x36,0x30,0x33,0x35,0x31,0x35,0x36,0x32,0x35,0x2c, + 0x20,0x37,0x38,0x2e,0x32,0x33,0x33,0x30,0x30,0x31,0x37,0x30,0x38,0x39,0x38,0x34, + 0x33,0x37,0x35,0x29,0x29,0x29,0x20,0x2a,0x20,0x34,0x33,0x37,0x35,0x38,0x2e,0x35, + 0x34,0x36,0x38,0x37,0x35,0x29,0x20,0x2d,0x20,0x28,0x28,0x28,0x28,0x66,0x72,0x61, 0x63,0x74,0x28,0x73,0x69,0x6e,0x28,0x64,0x6f,0x74,0x28,0x55,0x20,0x2b,0x20,0x66, - 0x6c,0x6f,0x61,0x74,0x32,0x28,0x30,0x2e,0x30,0x2c,0x20,0x2d,0x31,0x2e,0x30,0x29, + 0x6c,0x6f,0x61,0x74,0x32,0x28,0x2d,0x31,0x2e,0x30,0x2c,0x20,0x30,0x2e,0x30,0x29, 0x2c,0x20,0x66,0x6c,0x6f,0x61,0x74,0x32,0x28,0x31,0x31,0x2e,0x39,0x38,0x39,0x38, 0x30,0x30,0x34,0x35,0x33,0x31,0x38,0x36,0x30,0x33,0x35,0x31,0x35,0x36,0x32,0x35, 0x2c,0x20,0x37,0x38,0x2e,0x32,0x33,0x33,0x30,0x30,0x31,0x37,0x30,0x38,0x39,0x38, 0x34,0x33,0x37,0x35,0x29,0x29,0x29,0x20,0x2a,0x20,0x34,0x33,0x37,0x35,0x38,0x2e, - 0x35,0x34,0x36,0x38,0x37,0x35,0x29,0x29,0x20,0x2a,0x20,0x30,0x2e,0x32,0x35,0x29, - 0x29,0x20,0x2b,0x20,0x30,0x2e,0x35,0x3b,0x0a,0x7d,0x0a,0x0a,0x66,0x72,0x61,0x67, - 0x6d,0x65,0x6e,0x74,0x20,0x6d,0x61,0x69,0x6e,0x30,0x5f,0x6f,0x75,0x74,0x20,0x6d, - 0x61,0x69,0x6e,0x30,0x28,0x6d,0x61,0x69,0x6e,0x30,0x5f,0x69,0x6e,0x20,0x69,0x6e, - 0x20,0x5b,0x5b,0x73,0x74,0x61,0x67,0x65,0x5f,0x69,0x6e,0x5d,0x5d,0x2c,0x20,0x63, - 0x6f,0x6e,0x73,0x74,0x61,0x6e,0x74,0x20,0x70,0x6c,0x61,0x6e,0x65,0x5f,0x77,0x6f, - 0x72,0x6c,0x64,0x5f,0x63,0x6f,0x6e,0x66,0x69,0x67,0x26,0x20,0x5f,0x37,0x30,0x20, - 0x5b,0x5b,0x62,0x75,0x66,0x66,0x65,0x72,0x28,0x30,0x29,0x5d,0x5d,0x29,0x0a,0x7b, - 0x0a,0x20,0x20,0x20,0x20,0x6d,0x61,0x69,0x6e,0x30,0x5f,0x6f,0x75,0x74,0x20,0x6f, - 0x75,0x74,0x20,0x3d,0x20,0x7b,0x7d,0x3b,0x0a,0x20,0x20,0x20,0x20,0x69,0x66,0x20, - 0x28,0x5f,0x37,0x30,0x2e,0x70,0x6c,0x61,0x6e,0x65,0x54,0x79,0x70,0x65,0x20,0x3d, - 0x3d,0x20,0x31,0x29,0x0a,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x6f,0x75,0x74,0x2e,0x66,0x72,0x61,0x67,0x5f,0x63,0x6f,0x6c,0x6f, - 0x72,0x20,0x3d,0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x28,0x30,0x2e,0x30,0x2c,0x20, - 0x30,0x2e,0x30,0x2c,0x20,0x31,0x2e,0x30,0x2c,0x20,0x31,0x2e,0x30,0x29,0x3b,0x0a, - 0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x65,0x6c,0x73,0x65,0x0a,0x20, - 0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f, - 0x61,0x74,0x32,0x20,0x5f,0x39,0x33,0x20,0x3d,0x20,0x69,0x6e,0x2e,0x70,0x6f,0x73, - 0x2e,0x78,0x7a,0x20,0x2a,0x20,0x38,0x30,0x30,0x30,0x30,0x2e,0x30,0x3b,0x0a,0x20, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x5f,0x39,0x37, - 0x20,0x3d,0x20,0x5f,0x39,0x33,0x2e,0x79,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x5f,0x31,0x30,0x32,0x20,0x3d,0x20,0x5f, - 0x39,0x33,0x2e,0x78,0x20,0x2b,0x20,0x73,0x69,0x6e,0x28,0x5f,0x39,0x37,0x29,0x3b, - 0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x32,0x20, - 0x5f,0x31,0x39,0x34,0x20,0x3d,0x20,0x66,0x6c,0x6f,0x61,0x74,0x32,0x28,0x5f,0x31, - 0x30,0x32,0x2c,0x20,0x5f,0x39,0x37,0x20,0x2b,0x20,0x73,0x69,0x6e,0x28,0x5f,0x31, - 0x30,0x32,0x29,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6c, - 0x6f,0x61,0x74,0x32,0x20,0x5f,0x31,0x31,0x33,0x20,0x3d,0x20,0x72,0x6f,0x75,0x6e, - 0x64,0x28,0x5f,0x31,0x39,0x34,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x66,0x6c,0x6f,0x61,0x74,0x32,0x20,0x72,0x75,0x6f,0x68,0x6f,0x6b,0x65,0x73, - 0x6b,0x75,0x73,0x20,0x3d,0x20,0x5f,0x31,0x31,0x33,0x3b,0x0a,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x5f,0x31,0x32,0x30,0x20,0x3d, - 0x20,0x30,0x2e,0x30,0x30,0x37,0x38,0x31,0x32,0x35,0x20,0x2a,0x20,0x66,0x6c,0x6f, - 0x61,0x74,0x28,0x69,0x6e,0x2e,0x69,0x64,0x78,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x32,0x20,0x70,0x61,0x72,0x61,0x6d, - 0x20,0x3d,0x20,0x5f,0x31,0x31,0x33,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x5f,0x31,0x33,0x31,0x20,0x3d,0x20,0x42,0x28, - 0x70,0x61,0x72,0x61,0x6d,0x29,0x20,0x2b,0x20,0x28,0x73,0x69,0x6e,0x28,0x69,0x6e, - 0x2e,0x70,0x6f,0x73,0x2e,0x78,0x29,0x20,0x2a,0x20,0x30,0x2e,0x34,0x30,0x30,0x30, - 0x30,0x30,0x30,0x30,0x35,0x39,0x36,0x30,0x34,0x36,0x34,0x34,0x37,0x37,0x35,0x33, - 0x39,0x30,0x36,0x32,0x35,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, - 0x66,0x6c,0x6f,0x61,0x74,0x32,0x20,0x5f,0x31,0x39,0x31,0x20,0x3d,0x20,0x72,0x75, - 0x6f,0x68,0x6f,0x6b,0x65,0x73,0x6b,0x75,0x73,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x20,0x5f,0x31,0x39,0x31,0x2e,0x78,0x20,0x3d,0x20,0x5f,0x31,0x39,0x31, - 0x2e,0x78,0x20,0x2b,0x20,0x28,0x28,0x73,0x69,0x6e,0x28,0x5f,0x37,0x30,0x2e,0x74, - 0x69,0x6d,0x65,0x20,0x2a,0x20,0x31,0x2e,0x32,0x30,0x30,0x30,0x30,0x30,0x30,0x34, - 0x37,0x36,0x38,0x33,0x37,0x31,0x35,0x38,0x32,0x30,0x33,0x31,0x32,0x35,0x29,0x20, - 0x2a,0x20,0x30,0x2e,0x36,0x30,0x30,0x30,0x30,0x30,0x30,0x32,0x33,0x38,0x34,0x31, - 0x38,0x35,0x37,0x39,0x31,0x30,0x31,0x35,0x36,0x32,0x35,0x29,0x20,0x2a,0x20,0x5f, - 0x31,0x32,0x30,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x72,0x75, - 0x6f,0x68,0x6f,0x6b,0x65,0x73,0x6b,0x75,0x73,0x20,0x3d,0x20,0x5f,0x31,0x39,0x31, - 0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x62,0x6f,0x6f,0x6c,0x20,0x5f, - 0x31,0x35,0x34,0x20,0x3d,0x20,0x69,0x6e,0x2e,0x69,0x64,0x78,0x20,0x3e,0x20,0x30, - 0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x5f,0x31, - 0x35,0x34,0x20,0x26,0x26,0x20,0x28,0x5f,0x31,0x33,0x31,0x20,0x3c,0x20,0x30,0x2e, - 0x32,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x32,0x39,0x38,0x30,0x32,0x33,0x32,0x32, - 0x33,0x38,0x37,0x36,0x39,0x35,0x33,0x31,0x32,0x35,0x29,0x29,0x0a,0x20,0x20,0x20, + 0x35,0x34,0x36,0x38,0x37,0x35,0x29,0x20,0x2b,0x20,0x66,0x72,0x61,0x63,0x74,0x28, + 0x73,0x69,0x6e,0x28,0x64,0x6f,0x74,0x28,0x55,0x20,0x2b,0x20,0x66,0x6c,0x6f,0x61, + 0x74,0x32,0x28,0x31,0x2e,0x30,0x2c,0x20,0x30,0x2e,0x30,0x29,0x2c,0x20,0x66,0x6c, + 0x6f,0x61,0x74,0x32,0x28,0x31,0x31,0x2e,0x39,0x38,0x39,0x38,0x30,0x30,0x34,0x35, + 0x33,0x31,0x38,0x36,0x30,0x33,0x35,0x31,0x35,0x36,0x32,0x35,0x2c,0x20,0x37,0x38, + 0x2e,0x32,0x33,0x33,0x30,0x30,0x31,0x37,0x30,0x38,0x39,0x38,0x34,0x33,0x37,0x35, + 0x29,0x29,0x29,0x20,0x2a,0x20,0x34,0x33,0x37,0x35,0x38,0x2e,0x35,0x34,0x36,0x38, + 0x37,0x35,0x29,0x29,0x20,0x2b,0x20,0x66,0x72,0x61,0x63,0x74,0x28,0x73,0x69,0x6e, + 0x28,0x64,0x6f,0x74,0x28,0x55,0x20,0x2b,0x20,0x66,0x6c,0x6f,0x61,0x74,0x32,0x28, + 0x30,0x2e,0x30,0x2c,0x20,0x31,0x2e,0x30,0x29,0x2c,0x20,0x66,0x6c,0x6f,0x61,0x74, + 0x32,0x28,0x31,0x31,0x2e,0x39,0x38,0x39,0x38,0x30,0x30,0x34,0x35,0x33,0x31,0x38, + 0x36,0x30,0x33,0x35,0x31,0x35,0x36,0x32,0x35,0x2c,0x20,0x37,0x38,0x2e,0x32,0x33, + 0x33,0x30,0x30,0x31,0x37,0x30,0x38,0x39,0x38,0x34,0x33,0x37,0x35,0x29,0x29,0x29, + 0x20,0x2a,0x20,0x34,0x33,0x37,0x35,0x38,0x2e,0x35,0x34,0x36,0x38,0x37,0x35,0x29, + 0x29,0x20,0x2b,0x20,0x66,0x72,0x61,0x63,0x74,0x28,0x73,0x69,0x6e,0x28,0x64,0x6f, + 0x74,0x28,0x55,0x20,0x2b,0x20,0x66,0x6c,0x6f,0x61,0x74,0x32,0x28,0x30,0x2e,0x30, + 0x2c,0x20,0x2d,0x31,0x2e,0x30,0x29,0x2c,0x20,0x66,0x6c,0x6f,0x61,0x74,0x32,0x28, + 0x31,0x31,0x2e,0x39,0x38,0x39,0x38,0x30,0x30,0x34,0x35,0x33,0x31,0x38,0x36,0x30, + 0x33,0x35,0x31,0x35,0x36,0x32,0x35,0x2c,0x20,0x37,0x38,0x2e,0x32,0x33,0x33,0x30, + 0x30,0x31,0x37,0x30,0x38,0x39,0x38,0x34,0x33,0x37,0x35,0x29,0x29,0x29,0x20,0x2a, + 0x20,0x34,0x33,0x37,0x35,0x38,0x2e,0x35,0x34,0x36,0x38,0x37,0x35,0x29,0x29,0x20, + 0x2a,0x20,0x30,0x2e,0x32,0x35,0x29,0x29,0x20,0x2b,0x20,0x30,0x2e,0x35,0x3b,0x0a, + 0x7d,0x0a,0x0a,0x66,0x72,0x61,0x67,0x6d,0x65,0x6e,0x74,0x20,0x6d,0x61,0x69,0x6e, + 0x30,0x5f,0x6f,0x75,0x74,0x20,0x6d,0x61,0x69,0x6e,0x30,0x28,0x6d,0x61,0x69,0x6e, + 0x30,0x5f,0x69,0x6e,0x20,0x69,0x6e,0x20,0x5b,0x5b,0x73,0x74,0x61,0x67,0x65,0x5f, + 0x69,0x6e,0x5d,0x5d,0x2c,0x20,0x63,0x6f,0x6e,0x73,0x74,0x61,0x6e,0x74,0x20,0x70, + 0x6c,0x61,0x6e,0x65,0x5f,0x77,0x6f,0x72,0x6c,0x64,0x5f,0x63,0x6f,0x6e,0x66,0x69, + 0x67,0x26,0x20,0x5f,0x31,0x35,0x33,0x20,0x5b,0x5b,0x62,0x75,0x66,0x66,0x65,0x72, + 0x28,0x30,0x29,0x5d,0x5d,0x29,0x0a,0x7b,0x0a,0x20,0x20,0x20,0x20,0x6d,0x61,0x69, + 0x6e,0x30,0x5f,0x6f,0x75,0x74,0x20,0x6f,0x75,0x74,0x20,0x3d,0x20,0x7b,0x7d,0x3b, + 0x0a,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x5f,0x31,0x35,0x33,0x2e,0x70,0x6c, + 0x61,0x6e,0x65,0x54,0x79,0x70,0x65,0x20,0x3d,0x3d,0x20,0x31,0x29,0x0a,0x20,0x20, + 0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x2e, + 0x66,0x72,0x61,0x67,0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x20,0x3d,0x20,0x66,0x6c,0x6f, + 0x61,0x74,0x34,0x28,0x30,0x2e,0x30,0x2c,0x20,0x30,0x2e,0x30,0x2c,0x20,0x31,0x2e, + 0x30,0x2c,0x20,0x31,0x2e,0x30,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20, + 0x20,0x20,0x20,0x65,0x6c,0x73,0x65,0x0a,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20, + 0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x32,0x20,0x5f,0x31,0x37, + 0x36,0x20,0x3d,0x20,0x69,0x6e,0x2e,0x70,0x6f,0x73,0x2e,0x78,0x7a,0x20,0x2a,0x20, + 0x38,0x30,0x30,0x30,0x30,0x2e,0x30,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20, + 0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x5f,0x31,0x37,0x38,0x20,0x3d,0x20,0x5f,0x31, + 0x37,0x36,0x2e,0x79,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6c, + 0x6f,0x61,0x74,0x20,0x5f,0x31,0x38,0x32,0x20,0x3d,0x20,0x5f,0x31,0x37,0x36,0x2e, + 0x78,0x20,0x2b,0x20,0x73,0x69,0x6e,0x28,0x5f,0x31,0x37,0x38,0x29,0x3b,0x0a,0x20, + 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x32,0x20,0x5f,0x33, + 0x30,0x37,0x20,0x3d,0x20,0x66,0x6c,0x6f,0x61,0x74,0x32,0x28,0x5f,0x31,0x38,0x32, + 0x2c,0x20,0x5f,0x31,0x37,0x38,0x20,0x2b,0x20,0x73,0x69,0x6e,0x28,0x5f,0x31,0x38, + 0x32,0x29,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f, + 0x61,0x74,0x32,0x20,0x72,0x75,0x6f,0x68,0x6f,0x6b,0x65,0x73,0x6b,0x75,0x73,0x20, + 0x3d,0x20,0x72,0x6f,0x75,0x6e,0x64,0x28,0x5f,0x33,0x30,0x37,0x29,0x3b,0x0a,0x20, + 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x32,0x20,0x70,0x61, + 0x72,0x61,0x6d,0x20,0x3d,0x20,0x5f,0x33,0x30,0x37,0x20,0x2a,0x20,0x66,0x6c,0x6f, + 0x61,0x74,0x32,0x28,0x30,0x2e,0x30,0x31,0x39,0x39,0x39,0x39,0x39,0x39,0x39,0x35, + 0x35,0x32,0x39,0x36,0x35,0x31,0x36,0x34,0x31,0x38,0x34,0x35,0x37,0x30,0x33,0x31, + 0x32,0x35,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f, + 0x61,0x74,0x20,0x5f,0x32,0x30,0x30,0x20,0x3d,0x20,0x5f,0x6e,0x6f,0x69,0x73,0x65, + 0x28,0x70,0x61,0x72,0x61,0x6d,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20, + 0x20,0x66,0x6c,0x6f,0x61,0x74,0x32,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f,0x31,0x20, + 0x3d,0x20,0x5f,0x33,0x30,0x37,0x20,0x2a,0x20,0x66,0x6c,0x6f,0x61,0x74,0x32,0x28, + 0x30,0x2e,0x30,0x30,0x32,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x39,0x34,0x39,0x39, + 0x34,0x39,0x30,0x32,0x36,0x31,0x30,0x37,0x37,0x38,0x38,0x30,0x38,0x35,0x39,0x33, + 0x37,0x35,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f, + 0x61,0x74,0x20,0x5f,0x32,0x30,0x37,0x20,0x3d,0x20,0x5f,0x6e,0x6f,0x69,0x73,0x65, + 0x28,0x70,0x61,0x72,0x61,0x6d,0x5f,0x31,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20, + 0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x5f,0x32,0x31,0x34,0x20,0x3d,0x20, + 0x30,0x2e,0x30,0x30,0x37,0x38,0x31,0x32,0x35,0x20,0x2a,0x20,0x66,0x6c,0x6f,0x61, + 0x74,0x28,0x69,0x6e,0x2e,0x69,0x64,0x78,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20, + 0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x32,0x20,0x70,0x61,0x72,0x61,0x6d,0x5f, + 0x32,0x20,0x3d,0x20,0x72,0x75,0x6f,0x68,0x6f,0x6b,0x65,0x73,0x6b,0x75,0x73,0x3b, + 0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x20,0x5f, + 0x32,0x33,0x34,0x20,0x3d,0x20,0x28,0x28,0x42,0x28,0x70,0x61,0x72,0x61,0x6d,0x5f, + 0x32,0x29,0x20,0x2b,0x20,0x28,0x73,0x69,0x6e,0x28,0x69,0x6e,0x2e,0x70,0x6f,0x73, + 0x2e,0x78,0x29,0x20,0x2a,0x20,0x30,0x2e,0x34,0x30,0x30,0x30,0x30,0x30,0x30,0x30, + 0x35,0x39,0x36,0x30,0x34,0x36,0x34,0x34,0x37,0x37,0x35,0x33,0x39,0x30,0x36,0x32, + 0x35,0x29,0x29,0x20,0x2a,0x20,0x30,0x2e,0x35,0x29,0x20,0x2b,0x20,0x28,0x28,0x5f, + 0x32,0x30,0x37,0x20,0x2a,0x20,0x30,0x2e,0x34,0x30,0x30,0x30,0x30,0x30,0x30,0x30, + 0x35,0x39,0x36,0x30,0x34,0x36,0x34,0x34,0x37,0x37,0x35,0x33,0x39,0x30,0x36,0x32, + 0x35,0x29,0x20,0x2b,0x20,0x28,0x5f,0x32,0x30,0x30,0x20,0x2a,0x20,0x30,0x2e,0x31, + 0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x31,0x34,0x39,0x30,0x31,0x31,0x36,0x31,0x31, + 0x39,0x33,0x38,0x34,0x37,0x36,0x35,0x36,0x32,0x35,0x29,0x29,0x3b,0x0a,0x20,0x20, + 0x20,0x20,0x20,0x20,0x20,0x20,0x66,0x6c,0x6f,0x61,0x74,0x32,0x20,0x5f,0x32,0x39, + 0x39,0x20,0x3d,0x20,0x72,0x75,0x6f,0x68,0x6f,0x6b,0x65,0x73,0x6b,0x75,0x73,0x3b, + 0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x32,0x39,0x39,0x2e,0x78,0x20, + 0x3d,0x20,0x5f,0x32,0x39,0x39,0x2e,0x78,0x20,0x2b,0x20,0x28,0x28,0x73,0x69,0x6e, + 0x28,0x5f,0x31,0x35,0x33,0x2e,0x74,0x69,0x6d,0x65,0x20,0x2a,0x20,0x31,0x2e,0x32, + 0x30,0x30,0x30,0x30,0x30,0x30,0x34,0x37,0x36,0x38,0x33,0x37,0x31,0x35,0x38,0x32, + 0x30,0x33,0x31,0x32,0x35,0x29,0x20,0x2a,0x20,0x30,0x2e,0x36,0x30,0x30,0x30,0x30, + 0x30,0x30,0x32,0x33,0x38,0x34,0x31,0x38,0x35,0x37,0x39,0x31,0x30,0x31,0x35,0x36, + 0x32,0x35,0x29,0x20,0x2a,0x20,0x5f,0x32,0x31,0x34,0x29,0x3b,0x0a,0x20,0x20,0x20, + 0x20,0x20,0x20,0x20,0x20,0x72,0x75,0x6f,0x68,0x6f,0x6b,0x65,0x73,0x6b,0x75,0x73, + 0x20,0x3d,0x20,0x5f,0x32,0x39,0x39,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20, + 0x20,0x62,0x6f,0x6f,0x6c,0x20,0x5f,0x32,0x35,0x37,0x20,0x3d,0x20,0x69,0x6e,0x2e, + 0x69,0x64,0x78,0x20,0x3e,0x20,0x30,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20, + 0x20,0x69,0x66,0x20,0x28,0x5f,0x32,0x35,0x37,0x20,0x26,0x26,0x20,0x28,0x5f,0x32, + 0x33,0x34,0x20,0x3c,0x20,0x30,0x2e,0x32,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x32, + 0x39,0x38,0x30,0x32,0x33,0x32,0x32,0x33,0x38,0x37,0x36,0x39,0x35,0x33,0x31,0x32, + 0x35,0x29,0x29,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20, + 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x64,0x69,0x73,0x63,0x61,0x72, + 0x64,0x5f,0x66,0x72,0x61,0x67,0x6d,0x65,0x6e,0x74,0x28,0x29,0x3b,0x0a,0x20,0x20, + 0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, + 0x62,0x6f,0x6f,0x6c,0x20,0x5f,0x32,0x37,0x37,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20, + 0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x5f,0x32,0x35,0x37,0x29,0x0a,0x20,0x20,0x20, + 0x20,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, + 0x20,0x20,0x20,0x5f,0x32,0x37,0x37,0x20,0x3d,0x20,0x28,0x28,0x5f,0x32,0x33,0x34, + 0x20,0x2d,0x20,0x5f,0x32,0x31,0x34,0x29,0x20,0x2a,0x20,0x30,0x2e,0x35,0x29,0x20, + 0x3c,0x20,0x6c,0x65,0x6e,0x67,0x74,0x68,0x28,0x5f,0x32,0x39,0x39,0x20,0x2d,0x20, + 0x5f,0x33,0x30,0x37,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d, + 0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x65,0x6c,0x73,0x65,0x0a,0x20,0x20, + 0x20,0x20,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, + 0x20,0x20,0x20,0x20,0x5f,0x32,0x37,0x37,0x20,0x3d,0x20,0x5f,0x32,0x35,0x37,0x3b, + 0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x20, + 0x20,0x20,0x20,0x69,0x66,0x20,0x28,0x5f,0x32,0x37,0x37,0x29,0x0a,0x20,0x20,0x20, 0x20,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, 0x20,0x20,0x20,0x64,0x69,0x73,0x63,0x61,0x72,0x64,0x5f,0x66,0x72,0x61,0x67,0x6d, 0x65,0x6e,0x74,0x28,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d, - 0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x62,0x6f,0x6f,0x6c,0x20,0x5f,0x31, - 0x37,0x34,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28, - 0x5f,0x31,0x35,0x34,0x29,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7b,0x0a, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x31,0x37,0x34, - 0x20,0x3d,0x20,0x28,0x28,0x5f,0x31,0x33,0x31,0x20,0x2d,0x20,0x5f,0x31,0x32,0x30, - 0x29,0x20,0x2a,0x20,0x30,0x2e,0x35,0x29,0x20,0x3c,0x20,0x6c,0x65,0x6e,0x67,0x74, - 0x68,0x28,0x5f,0x31,0x39,0x31,0x20,0x2d,0x20,0x5f,0x31,0x39,0x34,0x29,0x3b,0x0a, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x65,0x6c,0x73,0x65,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7b, - 0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x5f,0x31,0x37, - 0x34,0x20,0x3d,0x20,0x5f,0x31,0x35,0x34,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x69,0x66,0x20,0x28, - 0x5f,0x31,0x37,0x34,0x29,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7b,0x0a, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x64,0x69,0x73,0x63, - 0x61,0x72,0x64,0x5f,0x66,0x72,0x61,0x67,0x6d,0x65,0x6e,0x74,0x28,0x29,0x3b,0x0a, - 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x65,0x6c,0x73,0x65,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7b, - 0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x6f,0x75,0x74, - 0x2e,0x66,0x72,0x61,0x67,0x5f,0x63,0x6f,0x6c,0x6f,0x72,0x20,0x3d,0x20,0x66,0x6c, - 0x6f,0x61,0x74,0x34,0x28,0x30,0x2e,0x30,0x2c,0x20,0x66,0x61,0x73,0x74,0x3a,0x3a, - 0x6d,0x69,0x6e,0x28,0x31,0x2e,0x30,0x2c,0x20,0x5f,0x31,0x32,0x30,0x20,0x2b,0x20, - 0x30,0x2e,0x32,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x32,0x39,0x38,0x30,0x32,0x33, - 0x32,0x32,0x33,0x38,0x37,0x36,0x39,0x35,0x33,0x31,0x32,0x35,0x29,0x2c,0x20,0x30, - 0x2e,0x30,0x2c,0x20,0x31,0x2e,0x30,0x29,0x3b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20, - 0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x72,0x65, - 0x74,0x75,0x72,0x6e,0x20,0x6f,0x75,0x74,0x3b,0x0a,0x7d,0x0a,0x0a,0x00, + 0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x65,0x6c,0x73,0x65,0x0a,0x20,0x20, + 0x20,0x20,0x20,0x20,0x20,0x20,0x7b,0x0a,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20, + 0x20,0x20,0x20,0x20,0x6f,0x75,0x74,0x2e,0x66,0x72,0x61,0x67,0x5f,0x63,0x6f,0x6c, + 0x6f,0x72,0x20,0x3d,0x20,0x66,0x6c,0x6f,0x61,0x74,0x34,0x28,0x5f,0x32,0x30,0x37, + 0x20,0x2a,0x20,0x30,0x2e,0x35,0x2c,0x20,0x66,0x61,0x73,0x74,0x3a,0x3a,0x6d,0x69, + 0x6e,0x28,0x31,0x2e,0x30,0x2c,0x20,0x5f,0x32,0x31,0x34,0x20,0x2b,0x20,0x30,0x2e, + 0x32,0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x32,0x39,0x38,0x30,0x32,0x33,0x32,0x32, + 0x33,0x38,0x37,0x36,0x39,0x35,0x33,0x31,0x32,0x35,0x29,0x20,0x2b,0x20,0x28,0x5f, + 0x32,0x30,0x30,0x20,0x2a,0x20,0x30,0x2e,0x32,0x30,0x30,0x30,0x30,0x30,0x30,0x30, + 0x32,0x39,0x38,0x30,0x32,0x33,0x32,0x32,0x33,0x38,0x37,0x36,0x39,0x35,0x33,0x31, + 0x32,0x35,0x29,0x2c,0x20,0x30,0x2e,0x30,0x2c,0x20,0x31,0x2e,0x30,0x29,0x3b,0x0a, + 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7d,0x0a,0x20,0x20,0x20,0x20,0x7d,0x0a, + 0x20,0x20,0x20,0x20,0x72,0x65,0x74,0x75,0x72,0x6e,0x20,0x6f,0x75,0x74,0x3b,0x0a, + 0x7d,0x0a,0x0a,0x00, ]; plane_shader_desc :: (backend: sg_backend) -> sg_shader_desc { desc: sg_shader_desc; @@ -948,46 +1225,46 @@ plane_shader_desc :: (backend: sg_backend) -> sg_shader_desc { desc.uniform_blocks[1].size = 144; desc.uniform_blocks[1].glsl_uniforms[0].type = .FLOAT3; desc.uniform_blocks[1].glsl_uniforms[0].array_count = 0; - desc.uniform_blocks[1].glsl_uniforms[0].glsl_name = "_70.skyBase"; + desc.uniform_blocks[1].glsl_uniforms[0].glsl_name = "_153.skyBase"; desc.uniform_blocks[1].glsl_uniforms[1].type = .FLOAT3; desc.uniform_blocks[1].glsl_uniforms[1].array_count = 0; - desc.uniform_blocks[1].glsl_uniforms[1].glsl_name = "_70.skyTop"; + desc.uniform_blocks[1].glsl_uniforms[1].glsl_name = "_153.skyTop"; desc.uniform_blocks[1].glsl_uniforms[2].type = .FLOAT3; desc.uniform_blocks[1].glsl_uniforms[2].array_count = 0; - desc.uniform_blocks[1].glsl_uniforms[2].glsl_name = "_70.sunDisk"; + desc.uniform_blocks[1].glsl_uniforms[2].glsl_name = "_153.sunDisk"; desc.uniform_blocks[1].glsl_uniforms[3].type = .FLOAT3; desc.uniform_blocks[1].glsl_uniforms[3].array_count = 0; - desc.uniform_blocks[1].glsl_uniforms[3].glsl_name = "_70.horizonHalo"; + desc.uniform_blocks[1].glsl_uniforms[3].glsl_name = "_153.horizonHalo"; desc.uniform_blocks[1].glsl_uniforms[4].type = .FLOAT3; desc.uniform_blocks[1].glsl_uniforms[4].array_count = 0; - desc.uniform_blocks[1].glsl_uniforms[4].glsl_name = "_70.sunHalo"; + desc.uniform_blocks[1].glsl_uniforms[4].glsl_name = "_153.sunHalo"; desc.uniform_blocks[1].glsl_uniforms[5].type = .FLOAT3; desc.uniform_blocks[1].glsl_uniforms[5].array_count = 0; - desc.uniform_blocks[1].glsl_uniforms[5].glsl_name = "_70.sunLightColor"; + desc.uniform_blocks[1].glsl_uniforms[5].glsl_name = "_153.sunLightColor"; desc.uniform_blocks[1].glsl_uniforms[6].type = .FLOAT3; desc.uniform_blocks[1].glsl_uniforms[6].array_count = 0; - desc.uniform_blocks[1].glsl_uniforms[6].glsl_name = "_70.sunPosition"; + desc.uniform_blocks[1].glsl_uniforms[6].glsl_name = "_153.sunPosition"; desc.uniform_blocks[1].glsl_uniforms[7].type = .FLOAT; desc.uniform_blocks[1].glsl_uniforms[7].array_count = 0; - desc.uniform_blocks[1].glsl_uniforms[7].glsl_name = "_70.sunIntensity"; + desc.uniform_blocks[1].glsl_uniforms[7].glsl_name = "_153.sunIntensity"; desc.uniform_blocks[1].glsl_uniforms[8].type = .FLOAT; desc.uniform_blocks[1].glsl_uniforms[8].array_count = 0; - desc.uniform_blocks[1].glsl_uniforms[8].glsl_name = "_70.skyIntensity"; + desc.uniform_blocks[1].glsl_uniforms[8].glsl_name = "_153.skyIntensity"; desc.uniform_blocks[1].glsl_uniforms[9].type = .INT; desc.uniform_blocks[1].glsl_uniforms[9].array_count = 0; - desc.uniform_blocks[1].glsl_uniforms[9].glsl_name = "_70.hasClouds"; + desc.uniform_blocks[1].glsl_uniforms[9].glsl_name = "_153.hasClouds"; desc.uniform_blocks[1].glsl_uniforms[10].type = .INT; desc.uniform_blocks[1].glsl_uniforms[10].array_count = 0; - desc.uniform_blocks[1].glsl_uniforms[10].glsl_name = "_70.hasPlane"; + desc.uniform_blocks[1].glsl_uniforms[10].glsl_name = "_153.hasPlane"; desc.uniform_blocks[1].glsl_uniforms[11].type = .FLOAT; desc.uniform_blocks[1].glsl_uniforms[11].array_count = 0; - desc.uniform_blocks[1].glsl_uniforms[11].glsl_name = "_70.planeHeight"; + desc.uniform_blocks[1].glsl_uniforms[11].glsl_name = "_153.planeHeight"; desc.uniform_blocks[1].glsl_uniforms[12].type = .INT; desc.uniform_blocks[1].glsl_uniforms[12].array_count = 0; - desc.uniform_blocks[1].glsl_uniforms[12].glsl_name = "_70.planeType"; + desc.uniform_blocks[1].glsl_uniforms[12].glsl_name = "_153.planeType"; desc.uniform_blocks[1].glsl_uniforms[13].type = .FLOAT; desc.uniform_blocks[1].glsl_uniforms[13].array_count = 0; - desc.uniform_blocks[1].glsl_uniforms[13].glsl_name = "_70.time"; + desc.uniform_blocks[1].glsl_uniforms[13].glsl_name = "_153.time"; case .GLES3; desc.vertex_func.source = xx *vs_plane_source_glsl300es; desc.vertex_func.entry = "main"; @@ -1006,46 +1283,46 @@ plane_shader_desc :: (backend: sg_backend) -> sg_shader_desc { desc.uniform_blocks[1].size = 144; desc.uniform_blocks[1].glsl_uniforms[0].type = .FLOAT3; desc.uniform_blocks[1].glsl_uniforms[0].array_count = 0; - desc.uniform_blocks[1].glsl_uniforms[0].glsl_name = "_70.skyBase"; + desc.uniform_blocks[1].glsl_uniforms[0].glsl_name = "_153.skyBase"; desc.uniform_blocks[1].glsl_uniforms[1].type = .FLOAT3; desc.uniform_blocks[1].glsl_uniforms[1].array_count = 0; - desc.uniform_blocks[1].glsl_uniforms[1].glsl_name = "_70.skyTop"; + desc.uniform_blocks[1].glsl_uniforms[1].glsl_name = "_153.skyTop"; desc.uniform_blocks[1].glsl_uniforms[2].type = .FLOAT3; desc.uniform_blocks[1].glsl_uniforms[2].array_count = 0; - desc.uniform_blocks[1].glsl_uniforms[2].glsl_name = "_70.sunDisk"; + desc.uniform_blocks[1].glsl_uniforms[2].glsl_name = "_153.sunDisk"; desc.uniform_blocks[1].glsl_uniforms[3].type = .FLOAT3; desc.uniform_blocks[1].glsl_uniforms[3].array_count = 0; - desc.uniform_blocks[1].glsl_uniforms[3].glsl_name = "_70.horizonHalo"; + desc.uniform_blocks[1].glsl_uniforms[3].glsl_name = "_153.horizonHalo"; desc.uniform_blocks[1].glsl_uniforms[4].type = .FLOAT3; desc.uniform_blocks[1].glsl_uniforms[4].array_count = 0; - desc.uniform_blocks[1].glsl_uniforms[4].glsl_name = "_70.sunHalo"; + desc.uniform_blocks[1].glsl_uniforms[4].glsl_name = "_153.sunHalo"; desc.uniform_blocks[1].glsl_uniforms[5].type = .FLOAT3; desc.uniform_blocks[1].glsl_uniforms[5].array_count = 0; - desc.uniform_blocks[1].glsl_uniforms[5].glsl_name = "_70.sunLightColor"; + desc.uniform_blocks[1].glsl_uniforms[5].glsl_name = "_153.sunLightColor"; desc.uniform_blocks[1].glsl_uniforms[6].type = .FLOAT3; desc.uniform_blocks[1].glsl_uniforms[6].array_count = 0; - desc.uniform_blocks[1].glsl_uniforms[6].glsl_name = "_70.sunPosition"; + desc.uniform_blocks[1].glsl_uniforms[6].glsl_name = "_153.sunPosition"; desc.uniform_blocks[1].glsl_uniforms[7].type = .FLOAT; desc.uniform_blocks[1].glsl_uniforms[7].array_count = 0; - desc.uniform_blocks[1].glsl_uniforms[7].glsl_name = "_70.sunIntensity"; + desc.uniform_blocks[1].glsl_uniforms[7].glsl_name = "_153.sunIntensity"; desc.uniform_blocks[1].glsl_uniforms[8].type = .FLOAT; desc.uniform_blocks[1].glsl_uniforms[8].array_count = 0; - desc.uniform_blocks[1].glsl_uniforms[8].glsl_name = "_70.skyIntensity"; + desc.uniform_blocks[1].glsl_uniforms[8].glsl_name = "_153.skyIntensity"; desc.uniform_blocks[1].glsl_uniforms[9].type = .INT; desc.uniform_blocks[1].glsl_uniforms[9].array_count = 0; - desc.uniform_blocks[1].glsl_uniforms[9].glsl_name = "_70.hasClouds"; + desc.uniform_blocks[1].glsl_uniforms[9].glsl_name = "_153.hasClouds"; desc.uniform_blocks[1].glsl_uniforms[10].type = .INT; desc.uniform_blocks[1].glsl_uniforms[10].array_count = 0; - desc.uniform_blocks[1].glsl_uniforms[10].glsl_name = "_70.hasPlane"; + desc.uniform_blocks[1].glsl_uniforms[10].glsl_name = "_153.hasPlane"; desc.uniform_blocks[1].glsl_uniforms[11].type = .FLOAT; desc.uniform_blocks[1].glsl_uniforms[11].array_count = 0; - desc.uniform_blocks[1].glsl_uniforms[11].glsl_name = "_70.planeHeight"; + desc.uniform_blocks[1].glsl_uniforms[11].glsl_name = "_153.planeHeight"; desc.uniform_blocks[1].glsl_uniforms[12].type = .INT; desc.uniform_blocks[1].glsl_uniforms[12].array_count = 0; - desc.uniform_blocks[1].glsl_uniforms[12].glsl_name = "_70.planeType"; + desc.uniform_blocks[1].glsl_uniforms[12].glsl_name = "_153.planeType"; desc.uniform_blocks[1].glsl_uniforms[13].type = .FLOAT; desc.uniform_blocks[1].glsl_uniforms[13].array_count = 0; - desc.uniform_blocks[1].glsl_uniforms[13].glsl_name = "_70.time"; + desc.uniform_blocks[1].glsl_uniforms[13].glsl_name = "_153.time"; case .METAL_MACOS; desc.vertex_func.source = xx *vs_plane_source_metal_macos; desc.vertex_func.entry = "main0"; diff --git a/src/shaders/shader_plane.glsl b/src/shaders/shader_plane.glsl index 076f493..4577beb 100644 --- a/src/shaders/shader_plane.glsl +++ b/src/shaders/shader_plane.glsl @@ -13,7 +13,7 @@ out flat int idx; void main() { vec3 multisize = vec3(position.xyz * 1000.0); - gl_Position = mvp * (vec4(multisize.x, 0.0 + float(gl_InstanceIndex) * 0.001, multisize.z, 1.0)); + gl_Position = mvp * (vec4(multisize.x, 0.0 + float(gl_InstanceIndex) * 0.003, multisize.z, 1.0)); pos = position; idx = gl_InstanceIndex; } @@ -69,6 +69,33 @@ float B(vec2 U) { return hash(U) - v/4. + .5; } +float random (vec2 st) { + return fract(sin(dot(st.xy, + vec2(12.9898,78.233)))* + 43758.5453123); +} + +// 2D Noise based on Morgan McGuire @morgan3d +// https://www.shadertoy.com/view/4dS3Wd +float noise (vec2 st) { + vec2 i = floor(st); // Integer part of the coordinate + vec2 f = fract(st); // Fractional part of the coordinate + + // Four corners in 2D of a tile + float a = random(i); + float b = random(i + vec2(1.0, 0.0)); + float c = random(i + vec2(0.0, 1.0)); + float d = random(i + vec2(1.0, 1.0)); + + // Smoothstep for interpolation + vec2 u = f*f*(3.0-2.0*f); + + // Mix (interpolate) the corners + return mix(a, b, u.x) + + (c - a)* u.y * (1.0 - u.x) + + (d - b) * u.x * u.y; +} + void main() { if(planeType == 1) { @@ -80,8 +107,12 @@ void main() { densifiedCoordinate.y += sin(densifiedCoordinate.x); vec2 ruohokeskus = round(densifiedCoordinate); + float noiseval_fine = noise(densifiedCoordinate / 50.0); + float noiseval_coarse = noise(densifiedCoordinate / 500.0); + float h = (1.0 / 128.0) * idx; - float rand = B(ruohokeskus) + sin(pos.x) * 0.4; + float rand = (B(ruohokeskus) + sin(pos.x) * 0.4) * 0.5; + rand += noiseval_coarse * 0.4 + noiseval_fine * 0.1; ruohokeskus.x += sin(time * 1.2) * 0.6 * h; @@ -96,12 +127,14 @@ void main() { float thickness = 0.5; - if(idx > 0 && (rand - h) * thickness < distanceFromCenter) { - discard; - } else { - frag_color = vec4(0.0, min(1.0, h + 0.2), 0.0, 1.0); - } - + if(idx > 0 && (rand - h) * thickness < distanceFromCenter) { + discard; + } else { + frag_color = vec4(noiseval_coarse * 0.5, min(1.0, h + 0.2) + noiseval_fine * 0.2, 0.0, 1.0); + } + + + } } @end