diff --git a/scripts/startup/bl_ui/space_view3d.py b/scripts/startup/bl_ui/space_view3d.py index 4a25a4dbc41..c39310f100c 100644 --- a/scripts/startup/bl_ui/space_view3d.py +++ b/scripts/startup/bl_ui/space_view3d.py @@ -2311,6 +2311,7 @@ class VIEW3D_MT_grease_pencil_add(Menu): layout = self.layout layout.operator("object.grease_pencil_add", text="Empty", icon='EMPTY_AXIS').type = 'EMPTY' layout.operator("object.grease_pencil_add", text="Stroke", icon='STROKE').type = 'STROKE' + layout.operator("object.grease_pencil_add", text="Suzanne", icon='MONKEY').type = 'MONKEY' class VIEW3D_MT_add(Menu): diff --git a/source/blender/editors/grease_pencil/intern/grease_pencil_add.cc b/source/blender/editors/grease_pencil/intern/grease_pencil_add.cc index 128f602ee80..fcb1f788495 100644 --- a/source/blender/editors/grease_pencil/intern/grease_pencil_add.cc +++ b/source/blender/editors/grease_pencil/intern/grease_pencil_add.cc @@ -26,6 +26,7 @@ struct ColorTemplate { const char *name; float line[4]; float fill[4]; + bool show_stroke; bool show_fill; }; @@ -33,6 +34,7 @@ static const ColorTemplate gp_stroke_material_black = { N_("Black"), {0.0f, 0.0f, 0.0f, 1.0f}, {0.0f, 0.0f, 0.0f, 0.0f}, + true, false, }; @@ -40,6 +42,7 @@ static const ColorTemplate gp_stroke_material_white = { N_("White"), {1.0f, 1.0f, 1.0f, 1.0f}, {0.0f, 0.0f, 0.0f, 0.0f}, + true, false, }; @@ -47,6 +50,7 @@ static const ColorTemplate gp_stroke_material_red = { N_("Red"), {1.0f, 0.0f, 0.0f, 1.0f}, {0.0f, 0.0f, 0.0f, 0.0f}, + true, false, }; @@ -54,6 +58,7 @@ static const ColorTemplate gp_stroke_material_green = { N_("Green"), {0.0f, 1.0f, 0.0f, 1.0f}, {0.0f, 0.0f, 0.0f, 0.0f}, + true, false, }; @@ -61,6 +66,7 @@ static const ColorTemplate gp_stroke_material_blue = { N_("Blue"), {0.0f, 0.0f, 1.0f, 1.0f}, {0.0f, 0.0f, 0.0f, 0.0f}, + true, false, }; @@ -68,6 +74,7 @@ static const ColorTemplate gp_fill_material_grey = { N_("Grey"), {0.358f, 0.358f, 0.358f, 1.0f}, {0.5f, 0.5f, 0.5f, 1.0f}, + false, true, }; @@ -177,9 +184,8 @@ static int add_material_from_template(Main &bmain, Object &ob, const ColorTempla copy_v4_v4(ma->gp_style->fill_rgba, pct.fill); srgb_to_linearrgb_v4(ma->gp_style->fill_rgba, ma->gp_style->fill_rgba); - if (pct.show_fill) { - ma->gp_style->flag |= GP_MATERIAL_FILL_SHOW; - } + SET_FLAG_FROM_TEST(ma->gp_style->flag, pct.show_stroke, GP_MATERIAL_STROKE_SHOW); + SET_FLAG_FROM_TEST(ma->gp_style->flag, pct.show_fill, GP_MATERIAL_FILL_SHOW); return index; } @@ -236,7 +242,7 @@ static bke::CurvesGeometry create_drawing_data(const Span positions, return curves; } -void create_blank(Main &bmain, Object &object, const int frame_numer) +void create_blank(Main &bmain, Object &object, const int frame_number) { using namespace blender::bke::greasepencil; GreasePencil &grease_pencil = *static_cast(object.data); @@ -250,10 +256,10 @@ void create_blank(Main &bmain, Object &object, const int frame_numer) grease_pencil.add_empty_drawings(1); GreasePencilFrame frame{0, 0, BEZT_KEYTYPE_KEYFRAME}; - new_layer.insert_frame(frame_numer, frame); + new_layer.insert_frame(frame_number, frame); } -void create_stroke(Main &bmain, Object &object, float4x4 matrix, const int frame_numer) +void create_stroke(Main &bmain, Object &object, float4x4 matrix, const int frame_number) { using namespace blender::bke::greasepencil; GreasePencil &grease_pencil = *static_cast(object.data); @@ -280,8 +286,780 @@ void create_stroke(Main &bmain, Object &object, float4x4 matrix, const int frame GreasePencilFrame frame_lines{0, 0, BEZT_KEYTYPE_KEYFRAME}; GreasePencilFrame frame_color{1, 0, BEZT_KEYTYPE_KEYFRAME}; - layer_lines.insert_frame(frame_numer, frame_lines); - layer_color.insert_frame(frame_numer, frame_color); + layer_lines.insert_frame(frame_number, frame_lines); + layer_color.insert_frame(frame_number, frame_color); +} + +static const ColorTemplate gp_monkey_pct_black = { + N_("Black"), + {0.0f, 0.0f, 0.0f, 1.0f}, + {0.0f, 0.0f, 0.0f, 0.0f}, + true, + false, +}; + +static const ColorTemplate gp_monkey_pct_skin = { + N_("Skin"), + {0.733f, 0.569f, 0.361f, 1.0f}, + {0.745f, 0.502f, 0.278f, 1.0f}, + false, + true, +}; + +static const ColorTemplate gp_monkey_pct_skin_light = { + N_("Skin_Light"), + {0.914f, 0.827f, 0.635f, 1.0f}, + {0.913f, 0.828f, 0.637f, 0.0f}, + true, + false, +}; + +static const ColorTemplate gp_monkey_pct_skin_shadow = { + N_("Skin_Shadow"), + {0.322f, 0.29f, 0.224f, 0.5f}, + {0.32f, 0.29f, 0.223f, 0.3f}, + true, + false, +}; + +static const ColorTemplate gp_monkey_pct_eyes = { + N_("Eyes"), + {0.553f, 0.39f, 0.266f, 0.0f}, + {0.847f, 0.723f, 0.599f, 1.0f}, + false, + true, +}; + +static const ColorTemplate gp_monkey_pct_pupils = { + N_("Pupils"), + {0.0f, 0.0f, 0.0f, 0.0f}, + {0.0f, 0.0f, 0.0f, 1.0f}, + false, + true, +}; + +static std::array monkey_fill_pos({ + float3(-0.4911, 0.0000, -0.1781), float3(-0.5168, 0.0000, -0.1806), float3(-0.5361, 0.0000, -0.1817), + float3(-0.5618, 0.0000, -0.1829), float3(-0.5892, 0.0000, -0.1827), float3(-0.6193, 0.0000, -0.1814), + float3(-0.6499, 0.0000, -0.1782), float3(-0.6808, 0.0000, -0.1729), float3(-0.7107, 0.0000, -0.1651), + float3(-0.7404, 0.0000, -0.1555), float3(-0.7698, 0.0000, -0.1447), float3(-0.7993, 0.0000, -0.1332), + float3(-0.8289, 0.0000, -0.1209), float3(-0.8586, 0.0000, -0.1090), float3(-0.8871, 0.0000, -0.0973), + float3(-0.9125, 0.0000, -0.0838), float3(-0.9353, 0.0000, -0.0688), float3(-0.9561, 0.0000, -0.0525), + float3(-0.9752, 0.0000, -0.0346), float3(-0.9944, 0.0000, -0.0160), float3(-1.0148, 0.0000, 0.0028), + float3(-1.0348, 0.0000, 0.0215), float3(-1.0500, 0.0000, 0.0407), float3(-1.0639, 0.0000, 0.0613), + float3(-1.0752, 0.0000, 0.0838), float3(-1.0848, 0.0000, 0.1082), float3(-1.0936, 0.0000, 0.1346), + float3(-1.1024, 0.0000, 0.1639), float3(-1.1102, 0.0000, 0.1953), float3(-1.1128, 0.0000, 0.2277), + float3(-1.1091, 0.0000, 0.2579), float3(-1.1023, 0.0000, 0.2849), float3(-1.0934, 0.0000, 0.3086), + float3(-1.0831, 0.0000, 0.3285), float3(-1.0724, 0.0000, 0.3451), float3(-1.0607, 0.0000, 0.3594), + float3(-1.0474, 0.0000, 0.3713), float3(-1.0310, 0.0000, 0.3804), float3(-1.0108, 0.0000, 0.3874), + float3(-0.9862, 0.0000, 0.3922), float3(-0.9568, 0.0000, 0.3941), float3(-0.9243, 0.0000, 0.3934), + float3(-0.8897, 0.0000, 0.3861), float3(-0.8556, 0.0000, 0.3754), float3(-0.8237, 0.0000, 0.3608), + float3(-0.7982, 0.0000, 0.3440), float3(-0.7786, 0.0000, 0.3290), float3(-0.7633, 0.0000, 0.3183), + float3(-0.7498, 0.0000, 0.3135), float3(-0.7374, 0.0000, 0.3134), float3(-0.7261, 0.0000, 0.3179), + float3(-0.7146, 0.0000, 0.3262), float3(-0.7030, 0.0000, 0.3395), float3(-0.6920, 0.0000, 0.3576), + float3(-0.6831, 0.0000, 0.3806), float3(-0.6748, 0.0000, 0.4052), float3(-0.6648, 0.0000, 0.4305), + float3(-0.6527, 0.0000, 0.4549), float3(-0.6375, 0.0000, 0.4783), float3(-0.6195, 0.0000, 0.5021), + float3(-0.5985, 0.0000, 0.5256), float3(-0.5775, 0.0000, 0.5488), float3(-0.5560, 0.0000, 0.5715), + float3(-0.5339, 0.0000, 0.5930), float3(-0.5119, 0.0000, 0.6130), float3(-0.4905, 0.0000, 0.6312), + float3(-0.4697, 0.0000, 0.6474), float3(-0.4499, 0.0000, 0.6613), float3(-0.4306, 0.0000, 0.6734), + float3(-0.4116, 0.0000, 0.6845), float3(-0.3918, 0.0000, 0.6954), float3(-0.3709, 0.0000, 0.7059), + float3(-0.3486, 0.0000, 0.7157), float3(-0.3251, 0.0000, 0.7249), float3(-0.3006, 0.0000, 0.7333), + float3(-0.2755, 0.0000, 0.7414), float3(-0.2500, 0.0000, 0.7489), float3(-0.2242, 0.0000, 0.7562), + float3(-0.1979, 0.0000, 0.7631), float3(-0.1710, 0.0000, 0.7695), float3(-0.1434, 0.0000, 0.7752), + float3(-0.1151, 0.0000, 0.7801), float3(-0.0861, 0.0000, 0.7841), float3(-0.0563, 0.0000, 0.7869), + float3(-0.0260, 0.0000, 0.7889), float3(0.0049, 0.0000, 0.7899), float3(0.0362, 0.0000, 0.7898), + float3(0.0679, 0.0000, 0.7881), float3(0.0996, 0.0000, 0.7853), float3(0.1313, 0.0000, 0.7812), + float3(0.1632, 0.0000, 0.7756), float3(0.1953, 0.0000, 0.7687), float3(0.2277, 0.0000, 0.7608), + float3(0.2606, 0.0000, 0.7513), float3(0.2934, 0.0000, 0.7404), float3(0.3258, 0.0000, 0.7276), + float3(0.3570, 0.0000, 0.7135), float3(0.3870, 0.0000, 0.6983), float3(0.4157, 0.0000, 0.6819), + float3(0.4440, 0.0000, 0.6645), float3(0.4719, 0.0000, 0.6459), float3(0.4994, 0.0000, 0.6261), + float3(0.5260, 0.0000, 0.6046), float3(0.5520, 0.0000, 0.5816), float3(0.5770, 0.0000, 0.5575), + float3(0.6008, 0.0000, 0.5328), float3(0.6231, 0.0000, 0.5077), float3(0.6423, 0.0000, 0.4829), + float3(0.6580, 0.0000, 0.4617), float3(0.6713, 0.0000, 0.4432), float3(0.6828, 0.0000, 0.4266), + float3(0.6928, 0.0000, 0.4118), float3(0.7016, 0.0000, 0.3987), float3(0.7094, 0.0000, 0.3871), + float3(0.7165, 0.0000, 0.3769), float3(0.7233, 0.0000, 0.3679), float3(0.7301, 0.0000, 0.3598), + float3(0.7373, 0.0000, 0.3524), float3(0.7454, 0.0000, 0.3458), float3(0.7545, 0.0000, 0.3398), + float3(0.7651, 0.0000, 0.3351), float3(0.7770, 0.0000, 0.3317), float3(0.7909, 0.0000, 0.3311), + float3(0.8068, 0.0000, 0.3340), float3(0.8246, 0.0000, 0.3398), float3(0.8438, 0.0000, 0.3486), + float3(0.8651, 0.0000, 0.3575), float3(0.8893, 0.0000, 0.3665), float3(0.9166, 0.0000, 0.3740), + float3(0.9459, 0.0000, 0.3791), float3(0.9751, 0.0000, 0.3811), float3(1.0029, 0.0000, 0.3800), + float3(1.0288, 0.0000, 0.3754), float3(1.0520, 0.0000, 0.3673), float3(1.0722, 0.0000, 0.3556), + float3(1.0888, 0.0000, 0.3403), float3(1.1027, 0.0000, 0.3220), float3(1.1133, 0.0000, 0.3010), + float3(1.1215, 0.0000, 0.2780), float3(1.1269, 0.0000, 0.2534), float3(1.1296, 0.0000, 0.2284), + float3(1.1292, 0.0000, 0.2031), float3(1.1254, 0.0000, 0.1778), float3(1.1178, 0.0000, 0.1530), + float3(1.1076, 0.0000, 0.1299), float3(1.0955, 0.0000, 0.1079), float3(1.0817, 0.0000, 0.0870), + float3(1.0668, 0.0000, 0.0677), float3(1.0508, 0.0000, 0.0491), float3(1.0339, 0.0000, 0.0313), + float3(1.0157, 0.0000, 0.0144), float3(0.9969, 0.0000, -0.0015), float3(0.9784, 0.0000, -0.0170), + float3(0.9600, 0.0000, -0.0321), float3(0.9413, 0.0000, -0.0468), float3(0.9216, 0.0000, -0.0611), + float3(0.9009, 0.0000, -0.0751), float3(0.8787, 0.0000, -0.0893), float3(0.8556, 0.0000, -0.1027), + float3(0.8312, 0.0000, -0.1152), float3(0.8058, 0.0000, -0.1268), float3(0.7788, 0.0000, -0.1372), + float3(0.7505, 0.0000, -0.1467), float3(0.7214, 0.0000, -0.1549), float3(0.6929, 0.0000, -0.1617), + float3(0.6652, 0.0000, -0.1665), float3(0.6388, 0.0000, -0.1691), float3(0.6131, 0.0000, -0.1701), + float3(0.5883, 0.0000, -0.1699), float3(0.5644, 0.0000, -0.1691), float3(0.5416, 0.0000, -0.1683), + float3(0.5195, 0.0000, -0.1680), float3(0.4975, 0.0000, -0.1687), float3(0.4754, 0.0000, -0.1705), + float3(0.4527, 0.0000, -0.1741), float3(0.4293, 0.0000, -0.1797), float3(0.4054, 0.0000, -0.1881), + float3(0.3813, 0.0000, -0.1992), float3(0.3585, 0.0000, -0.2120), float3(0.3368, 0.0000, -0.2266), + float3(0.3174, 0.0000, -0.2426), float3(0.2996, 0.0000, -0.2594), float3(0.2840, 0.0000, -0.2768), + float3(0.2702, 0.0000, -0.2946), float3(0.2585, 0.0000, -0.3127), float3(0.2500, 0.0000, -0.3308), + float3(0.2447, 0.0000, -0.3489), float3(0.2418, 0.0000, -0.3672), float3(0.2412, 0.0000, -0.3860), + float3(0.2425, 0.0000, -0.4051), float3(0.2456, 0.0000, -0.4246), float3(0.2509, 0.0000, -0.4447), + float3(0.2576, 0.0000, -0.4652), float3(0.2666, 0.0000, -0.4867), float3(0.2766, 0.0000, -0.5091), + float3(0.2871, 0.0000, -0.5326), float3(0.2973, 0.0000, -0.5569), float3(0.3060, 0.0000, -0.5826), + float3(0.3131, 0.0000, -0.6100), float3(0.3197, 0.0000, -0.6384), float3(0.3260, 0.0000, -0.6681), + float3(0.3315, 0.0000, -0.6984), float3(0.3360, 0.0000, -0.7291), float3(0.3391, 0.0000, -0.7593), + float3(0.3399, 0.0000, -0.7884), float3(0.3382, 0.0000, -0.8158), float3(0.3340, 0.0000, -0.8417), + float3(0.3273, 0.0000, -0.8657), float3(0.3185, 0.0000, -0.8881), float3(0.3073, 0.0000, -0.9088), + float3(0.2941, 0.0000, -0.9278), float3(0.2786, 0.0000, -0.9449), float3(0.2610, 0.0000, -0.9600), + float3(0.2413, 0.0000, -0.9733), float3(0.2193, 0.0000, -0.9845), float3(0.1953, 0.0000, -0.9935), + float3(0.1693, 0.0000, -1.0004), float3(0.1421, 0.0000, -1.0051), float3(0.1136, 0.0000, -1.0072), + float3(0.0842, 0.0000, -1.0073), float3(0.0548, 0.0000, -1.0059), float3(0.0258, 0.0000, -1.0037), + float3(-0.0027, 0.0000, -1.0003), float3(-0.0309, 0.0000, -0.9959), float3(-0.0584, 0.0000, -0.9904), + float3(-0.0858, 0.0000, -0.9848), float3(-0.1127, 0.0000, -0.9783), float3(-0.1386, 0.0000, -0.9703), + float3(-0.1649, 0.0000, -0.9604), float3(-0.1910, 0.0000, -0.9479), float3(-0.2165, 0.0000, -0.9345), + float3(-0.2414, 0.0000, -0.9205), float3(-0.2654, 0.0000, -0.9055), float3(-0.2877, 0.0000, -0.8898), + float3(-0.3076, 0.0000, -0.8723), float3(-0.3240, 0.0000, -0.8532), float3(-0.3367, 0.0000, -0.8316), + float3(-0.3451, 0.0000, -0.8077), float3(-0.3505, 0.0000, -0.7829), float3(-0.3531, 0.0000, -0.7584), + float3(-0.3528, 0.0000, -0.7349), float3(-0.3503, 0.0000, -0.7115), float3(-0.3460, 0.0000, -0.6880), + float3(-0.3411, 0.0000, -0.6643), float3(-0.3361, 0.0000, -0.6403), float3(-0.3304, 0.0000, -0.6164), + float3(-0.3244, 0.0000, -0.5925), float3(-0.3180, 0.0000, -0.5687), float3(-0.3124, 0.0000, -0.5441), + float3(-0.3051, 0.0000, -0.5191), float3(-0.2959, 0.0000, -0.4917), float3(-0.2882, 0.0000, -0.4639), + float3(-0.2814, 0.0000, -0.4363), float3(-0.2759, 0.0000, -0.4084), float3(-0.2707, 0.0000, -0.3827), + float3(-0.2703, 0.0000, -0.3586), float3(-0.2772, 0.0000, -0.3375), float3(-0.2871, 0.0000, -0.3178), + float3(-0.2995, 0.0000, -0.2996), float3(-0.3145, 0.0000, -0.2830), float3(-0.3320, 0.0000, -0.2672), + float3(-0.3488, 0.0000, -0.2531), float3(-0.3639, 0.0000, -0.2407), float3(-0.3778, 0.0000, -0.2292), + float3(-0.3909, 0.0000, -0.2191), float3(-0.4032, 0.0000, -0.2102), float3(-0.4146, 0.0000, -0.2027), + float3(-0.4260, 0.0000, -0.1968), float3(-0.4348, 0.0000, -0.1931), float3(-0.4479, 0.0000, -0.1886), + float3(0.5292, 0.0000, 0.1742), float3(0.5291, 0.0000, 0.1621), float3(0.5274, 0.0000, 0.1386), + float3(0.5239, 0.0000, 0.1160), float3(0.5185, 0.0000, 0.0945), float3(0.5115, 0.0000, 0.0741), + float3(0.5030, 0.0000, 0.0548), float3(0.4931, 0.0000, 0.0368), float3(0.4820, 0.0000, 0.0200), + float3(0.4697, 0.0000, 0.0046), float3(0.4565, 0.0000, -0.0094), float3(0.4424, 0.0000, -0.0219), + float3(0.4275, 0.0000, -0.0330), float3(0.4121, 0.0000, -0.0424), float3(0.3961, 0.0000, -0.0501), + float3(0.3799, 0.0000, -0.0562), float3(0.3634, 0.0000, -0.0605), float3(0.3468, 0.0000, -0.0629), + float3(0.3303, 0.0000, -0.0634), float3(0.3139, 0.0000, -0.0620), float3(0.2979, 0.0000, -0.0585), + float3(0.2823, 0.0000, -0.0529), float3(0.2672, 0.0000, -0.0452), float3(0.2529, 0.0000, -0.0352), + float3(0.2393, 0.0000, -0.0230), float3(0.2267, 0.0000, -0.0085), float3(0.2153, 0.0000, 0.0085), + float3(0.2050, 0.0000, 0.0279), float3(0.1960, 0.0000, 0.0499), float3(0.1886, 0.0000, 0.0745), + float3(0.1827, 0.0000, 0.1017), float3(0.1786, 0.0000, 0.1316), float3(0.1763, 0.0000, 0.1643), + float3(-0.0844, 0.0000, -0.3010), float3(-0.0825, 0.0000, -0.3034), float3(-0.0751, 0.0000, -0.3128), + float3(-0.0677, 0.0000, -0.3216), float3(-0.0600, 0.0000, -0.3298), float3(-0.0522, 0.0000, -0.3372), + float3(-0.0440, 0.0000, -0.3437), float3(-0.0354, 0.0000, -0.3491), float3(-0.0264, 0.0000, -0.3535), + float3(-0.0168, 0.0000, -0.3566), float3(-0.0065, 0.0000, -0.3583), float3(0.0045, 0.0000, -0.3585), + float3(0.0163, 0.0000, -0.3571), float3(0.0290, 0.0000, -0.3540), float3(0.0427, 0.0000, -0.3491), + float3(0.0574, 0.0000, -0.3421), float3(0.0732, 0.0000, -0.3331), float3(0.0816, 0.0000, -0.3278), + float3(-0.6551, 0.0000, 0.4448), float3(-0.6353, 0.0000, 0.4689), float3(-0.6211, 0.0000, 0.4845), + float3(-0.6033, 0.0000, 0.5034), float3(-0.5856, 0.0000, 0.5211), float3(-0.5672, 0.0000, 0.5387), + float3(-0.5485, 0.0000, 0.5555), float3(-0.5295, 0.0000, 0.5718), float3(-0.5103, 0.0000, 0.5875), + float3(-0.4909, 0.0000, 0.6028), float3(-0.4712, 0.0000, 0.6174), float3(-0.4512, 0.0000, 0.6313), + float3(-0.4307, 0.0000, 0.6444), float3(-0.4099, 0.0000, 0.6568), float3(-0.3884, 0.0000, 0.6684), + float3(-0.3665, 0.0000, 0.6793), float3(-0.3439, 0.0000, 0.6893), float3(-0.3207, 0.0000, 0.6984), + float3(-0.2971, 0.0000, 0.7069), float3(-0.2731, 0.0000, 0.7148), float3(-0.2490, 0.0000, 0.7222), + float3(-0.2247, 0.0000, 0.7292), float3(-0.2003, 0.0000, 0.7356), float3(-0.1759, 0.0000, 0.7416), + float3(-0.1515, 0.0000, 0.7471), float3(-0.1272, 0.0000, 0.7518), float3(-0.1028, 0.0000, 0.7556), + float3(-0.0785, 0.0000, 0.7586), float3(-0.0543, 0.0000, 0.7607), float3(-0.0302, 0.0000, 0.7621), + float3(-0.0062, 0.0000, 0.7627), float3(0.0177, 0.0000, 0.7625), float3(0.0415, 0.0000, 0.7616), + float3(0.0652, 0.0000, 0.7602), float3(0.0887, 0.0000, 0.7583), float3(0.1122, 0.0000, 0.7559), + float3(0.1355, 0.0000, 0.7529), float3(0.1585, 0.0000, 0.7493), float3(0.1814, 0.0000, 0.7451), + float3(0.2041, 0.0000, 0.7404), float3(0.2266, 0.0000, 0.7352), float3(0.2488, 0.0000, 0.7290), + float3(0.2706, 0.0000, 0.7216), float3(0.2921, 0.0000, 0.7131), float3(0.3135, 0.0000, 0.7041), + float3(0.3348, 0.0000, 0.6945), float3(0.3559, 0.0000, 0.6845), float3(0.3769, 0.0000, 0.6739), + float3(0.3978, 0.0000, 0.6628), float3(0.4185, 0.0000, 0.6510), float3(0.4390, 0.0000, 0.6383), + float3(0.4594, 0.0000, 0.6249), float3(0.4795, 0.0000, 0.6106), float3(0.4995, 0.0000, 0.5956), + float3(0.5193, 0.0000, 0.5801), float3(0.5390, 0.0000, 0.5642), float3(0.5586, 0.0000, 0.5479), + float3(0.5780, 0.0000, 0.5312), float3(0.5970, 0.0000, 0.5141), float3(0.6153, 0.0000, 0.4966), + float3(0.6324, 0.0000, 0.4797), float3(0.6498, 0.0000, 0.4620), float3(0.6638, 0.0000, 0.4477), + float3(0.6843, 0.0000, 0.4263), float3(-0.7765, 0.0000, 0.3255), float3(-0.7908, 0.0000, 0.3335), + float3(-0.8048, 0.0000, 0.3402), float3(-0.8225, 0.0000, 0.3467), float3(-0.8426, 0.0000, 0.3529), + float3(-0.8651, 0.0000, 0.3587), float3(-0.8878, 0.0000, 0.3633), float3(-0.9105, 0.0000, 0.3670), + float3(-0.9323, 0.0000, 0.3693), float3(-0.9529, 0.0000, 0.3701), float3(-0.9720, 0.0000, 0.3695), + float3(-0.9896, 0.0000, 0.3675), float3(-1.0057, 0.0000, 0.3640), float3(-1.0203, 0.0000, 0.3592), + float3(-1.0333, 0.0000, 0.3528), float3(-1.0447, 0.0000, 0.3452), float3(-1.0546, 0.0000, 0.3362), + float3(-1.0633, 0.0000, 0.3261), float3(-1.0708, 0.0000, 0.3150), float3(-1.0767, 0.0000, 0.3027), + float3(-1.0818, 0.0000, 0.2894), float3(-1.0861, 0.0000, 0.2752), float3(-1.0897, 0.0000, 0.2604), + float3(-1.0922, 0.0000, 0.2446), float3(-1.0938, 0.0000, 0.2277), float3(-1.0944, 0.0000, 0.2098), + float3(-1.0939, 0.0000, 0.1910), float3(-1.0924, 0.0000, 0.1714), float3(-1.0897, 0.0000, 0.1511), + float3(-1.0855, 0.0000, 0.1303), float3(-1.0798, 0.0000, 0.1095), float3(-1.0723, 0.0000, 0.0890), + float3(-1.0642, 0.0000, 0.0702), float3(0.8135, 0.0000, 0.3341), float3(0.8191, 0.0000, 0.3376), + float3(0.8246, 0.0000, 0.3408), float3(0.8304, 0.0000, 0.3438), float3(0.8368, 0.0000, 0.3465), + float3(0.8430, 0.0000, 0.3491), float3(0.8494, 0.0000, 0.3515), float3(0.8558, 0.0000, 0.3536), + float3(0.8623, 0.0000, 0.3557), float3(0.8688, 0.0000, 0.3575), float3(0.8752, 0.0000, 0.3593), + float3(0.8813, 0.0000, 0.3609), float3(0.8872, 0.0000, 0.3625), float3(0.8929, 0.0000, 0.3640), + float3(0.8984, 0.0000, 0.3653), float3(0.9039, 0.0000, 0.3665), float3(0.9093, 0.0000, 0.3675), + float3(0.9146, 0.0000, 0.3684), float3(0.9199, 0.0000, 0.3692), float3(0.9253, 0.0000, 0.3698), + float3(0.9305, 0.0000, 0.3703), float3(0.9358, 0.0000, 0.3706), float3(0.9410, 0.0000, 0.3709), + float3(0.9462, 0.0000, 0.3710), float3(0.9514, 0.0000, 0.3710), float3(0.9566, 0.0000, 0.3708), + float3(0.9617, 0.0000, 0.3706), float3(0.9668, 0.0000, 0.3702), float3(0.9718, 0.0000, 0.3697), + float3(0.9768, 0.0000, 0.3692), float3(0.9818, 0.0000, 0.3685), float3(0.9867, 0.0000, 0.3677), + float3(0.9916, 0.0000, 0.3667), float3(0.9964, 0.0000, 0.3657), float3(1.0012, 0.0000, 0.3646), + float3(1.0060, 0.0000, 0.3634), float3(1.0107, 0.0000, 0.3621), float3(1.0154, 0.0000, 0.3607), + float3(1.0200, 0.0000, 0.3593), float3(1.0245, 0.0000, 0.3577), float3(1.0290, 0.0000, 0.3561), + float3(1.0335, 0.0000, 0.3543), float3(1.0379, 0.0000, 0.3525), float3(1.0422, 0.0000, 0.3507), + float3(1.0465, 0.0000, 0.3487), float3(1.0507, 0.0000, 0.3468), float3(1.0549, 0.0000, 0.3447), + float3(1.0591, 0.0000, 0.3427), float3(1.0633, 0.0000, 0.3404), float3(1.0675, 0.0000, 0.3380), + float3(1.0717, 0.0000, 0.3351), float3(1.0761, 0.0000, 0.3318), float3(1.0805, 0.0000, 0.3279), + float3(1.0849, 0.0000, 0.3235), float3(1.0893, 0.0000, 0.3186), float3(1.0936, 0.0000, 0.3134), + float3(1.0979, 0.0000, 0.3076), float3(1.1020, 0.0000, 0.3017), float3(1.1060, 0.0000, 0.2953), + float3(1.1097, 0.0000, 0.2890), float3(1.1132, 0.0000, 0.2826), float3(1.1164, 0.0000, 0.2766), + float3(1.1193, 0.0000, 0.2708), float3(1.1221, 0.0000, 0.2652), float3(-0.2677, 0.0000, -0.3496), + float3(-0.2658, 0.0000, -0.3919), float3(-0.2657, 0.0000, -0.4295), float3(-0.2691, 0.0000, -0.4621), + float3(-0.2750, 0.0000, -0.4949), float3(-0.2828, 0.0000, -0.5270), float3(-0.2911, 0.0000, -0.5578), + float3(-0.2971, 0.0000, -0.5884), float3(-0.3030, 0.0000, -0.6181), float3(-0.3089, 0.0000, -0.6467), + float3(-0.3148, 0.0000, -0.6738), float3(-0.3196, 0.0000, -0.7000), float3(-0.3230, 0.0000, -0.7253), + float3(-0.3234, 0.0000, -0.7496), float3(-0.3219, 0.0000, -0.7728), float3(-0.3184, 0.0000, -0.7949), + float3(-0.3103, 0.0000, -0.8138), float3(-0.3004, 0.0000, -0.8307), float3(-0.2892, 0.0000, -0.8464), + float3(-0.2766, 0.0000, -0.8611), float3(-0.2618, 0.0000, -0.8735), float3(-0.2469, 0.0000, -0.8853), + float3(-0.2315, 0.0000, -0.8964), float3(-0.2158, 0.0000, -0.9068), float3(-0.1997, 0.0000, -0.9167), + float3(-0.1833, 0.0000, -0.9262), float3(-0.1663, 0.0000, -0.9355), float3(-0.1481, 0.0000, -0.9445), + float3(-0.1282, 0.0000, -0.9534), float3(-0.1077, 0.0000, -0.9625), float3(-0.0854, 0.0000, -0.9718), + float3(-0.0616, 0.0000, -0.9813), float3(-0.0248, 0.0000, -0.9920), float3(-0.0618, 0.0000, -0.1922), + float3(-0.0703, 0.0000, -0.2021), float3(-0.0758, 0.0000, -0.2103), float3(-0.0803, 0.0000, -0.2206), + float3(-0.0830, 0.0000, -0.2307), float3(-0.0851, 0.0000, -0.2405), float3(-0.0865, 0.0000, -0.2499), + float3(-0.0872, 0.0000, -0.2588), float3(-0.0869, 0.0000, -0.2673), float3(-0.0858, 0.0000, -0.2754), + float3(-0.0831, 0.0000, -0.2829), float3(-0.0791, 0.0000, -0.2898), float3(-0.0740, 0.0000, -0.2966), + float3(-0.0674, 0.0000, -0.3030), float3(-0.0591, 0.0000, -0.3084), float3(-0.0465, 0.0000, -0.3134), + float3(-0.0331, 0.0000, -0.3165), float3(-0.0150, 0.0000, -0.3180), float3(0.5311, 0.0000, 0.1661), + float3(0.5307, 0.0000, 0.1794), float3(0.5277, 0.0000, 0.2057), float3(0.5218, 0.0000, 0.2314), + float3(0.5130, 0.0000, 0.2560), float3(0.5014, 0.0000, 0.2790), float3(0.4874, 0.0000, 0.3001), + float3(0.4711, 0.0000, 0.3189), float3(0.4529, 0.0000, 0.3351), float3(0.4329, 0.0000, 0.3483), + float3(0.4117, 0.0000, 0.3585), float3(0.3894, 0.0000, 0.3654), float3(0.3666, 0.0000, 0.3689), + float3(0.3435, 0.0000, 0.3689), float3(0.3207, 0.0000, 0.3654), float3(0.2985, 0.0000, 0.3585), + float3(0.2772, 0.0000, 0.3483), float3(0.2573, 0.0000, 0.3351), float3(0.2390, 0.0000, 0.3189), + float3(0.2227, 0.0000, 0.3001), float3(0.2087, 0.0000, 0.2790), float3(0.1972, 0.0000, 0.2560), + float3(0.1884, 0.0000, 0.2314), float3(0.1824, 0.0000, 0.2057), float3(0.1794, 0.0000, 0.1794), + float3(0.1794, 0.0000, 0.1528), float3(0.1824, 0.0000, 0.1264), float3(0.1884, 0.0000, 0.1007), + float3(0.1972, 0.0000, 0.0762), float3(0.2087, 0.0000, 0.0531), float3(0.2227, 0.0000, 0.0320), + float3(0.2390, 0.0000, 0.0132), float3(0.2573, 0.0000, -0.0029), float3(0.2772, 0.0000, -0.0162), + float3(0.2985, 0.0000, -0.0264), float3(0.3207, 0.0000, -0.0333), float3(0.3435, 0.0000, -0.0368), + float3(0.3666, 0.0000, -0.0368), float3(0.3894, 0.0000, -0.0333), float3(0.4117, 0.0000, -0.0264), + float3(0.4329, 0.0000, -0.0162), float3(0.4529, 0.0000, -0.0029), float3(0.4711, 0.0000, 0.0132), + float3(0.4874, 0.0000, 0.0320), float3(0.5014, 0.0000, 0.0531), float3(0.5130, 0.0000, 0.0762), + float3(0.5218, 0.0000, 0.1007), float3(0.5277, 0.0000, 0.1264), float3(0.5307, 0.0000, 0.1528), + float3(-0.5271, 0.0000, 0.1742), float3(-0.5270, 0.0000, 0.1621), float3(-0.5253, 0.0000, 0.1386), + float3(-0.5217, 0.0000, 0.1160), float3(-0.5164, 0.0000, 0.0945), float3(-0.5094, 0.0000, 0.0741), + float3(-0.5009, 0.0000, 0.0548), float3(-0.4910, 0.0000, 0.0368), float3(-0.4799, 0.0000, 0.0200), + float3(-0.4676, 0.0000, 0.0046), float3(-0.4544, 0.0000, -0.0094), float3(-0.4402, 0.0000, -0.0219), + float3(-0.4254, 0.0000, -0.0330), float3(-0.4099, 0.0000, -0.0424), float3(-0.3940, 0.0000, -0.0501), + float3(-0.3777, 0.0000, -0.0562), float3(-0.3612, 0.0000, -0.0605), float3(-0.3447, 0.0000, -0.0629), + float3(-0.3281, 0.0000, -0.0634), float3(-0.3118, 0.0000, -0.0620), float3(-0.2957, 0.0000, -0.0585), + float3(-0.2801, 0.0000, -0.0529), float3(-0.2651, 0.0000, -0.0452), float3(-0.2507, 0.0000, -0.0352), + float3(-0.2372, 0.0000, -0.0230), float3(-0.2246, 0.0000, -0.0085), float3(-0.2131, 0.0000, 0.0085), + float3(-0.2028, 0.0000, 0.0279), float3(-0.1939, 0.0000, 0.0499), float3(-0.1864, 0.0000, 0.0745), + float3(-0.1806, 0.0000, 0.1017), float3(-0.1765, 0.0000, 0.1316), float3(-0.1742, 0.0000, 0.1643), + float3(-0.1740, 0.0000, 0.1661), float3(-0.1744, 0.0000, 0.1794), float3(-0.1774, 0.0000, 0.2057), + float3(-0.1833, 0.0000, 0.2314), float3(-0.1922, 0.0000, 0.2560), float3(-0.2037, 0.0000, 0.2790), + float3(-0.2177, 0.0000, 0.3001), float3(-0.2340, 0.0000, 0.3189), float3(-0.2522, 0.0000, 0.3351), + float3(-0.2722, 0.0000, 0.3483), float3(-0.2935, 0.0000, 0.3585), float3(-0.3157, 0.0000, 0.3654), + float3(-0.3385, 0.0000, 0.3689), float3(-0.3616, 0.0000, 0.3689), float3(-0.3844, 0.0000, 0.3654), + float3(-0.4066, 0.0000, 0.3585), float3(-0.4279, 0.0000, 0.3483), float3(-0.4479, 0.0000, 0.3351), + float3(-0.4661, 0.0000, 0.3189), float3(-0.4824, 0.0000, 0.3001), float3(-0.4964, 0.0000, 0.2790), + float3(-0.5080, 0.0000, 0.2560), float3(-0.5168, 0.0000, 0.2314), float3(-0.5227, 0.0000, 0.2057), + float3(-0.5257, 0.0000, 0.1794), float3(-0.5257, 0.0000, 0.1528), float3(-0.5227, 0.0000, 0.1264), + float3(-0.5168, 0.0000, 0.1007), float3(-0.5080, 0.0000, 0.0762), float3(-0.4964, 0.0000, 0.0531), + float3(-0.4824, 0.0000, 0.0320), float3(-0.4661, 0.0000, 0.0132), float3(-0.4479, 0.0000, -0.0029), + float3(-0.4279, 0.0000, -0.0162), float3(-0.4066, 0.0000, -0.0264), float3(-0.3844, 0.0000, -0.0333), + float3(-0.3616, 0.0000, -0.0368), float3(-0.3385, 0.0000, -0.0368), float3(-0.3157, 0.0000, -0.0333), + float3(-0.2935, 0.0000, -0.0264), float3(-0.2722, 0.0000, -0.0162), float3(-0.2522, 0.0000, -0.0029), + float3(-0.2340, 0.0000, 0.0132), float3(-0.2177, 0.0000, 0.0320), float3(-0.2037, 0.0000, 0.0531), + float3(-0.1922, 0.0000, 0.0762), float3(-0.1833, 0.0000, 0.1007), float3(-0.1774, 0.0000, 0.1264), + float3(-0.1744, 0.0000, 0.1528), float3(0.9630, 0.0000, 0.1753), float3(0.9555, 0.0000, 0.1761), + float3(0.9367, 0.0000, 0.1758), float3(0.9202, 0.0000, 0.1741), float3(0.9036, 0.0000, 0.1714), + float3(0.8885, 0.0000, 0.1668), float3(0.8746, 0.0000, 0.1607), float3(0.8621, 0.0000, 0.1531), + float3(0.8503, 0.0000, 0.1447), float3(0.8389, 0.0000, 0.1352), float3(0.8279, 0.0000, 0.1244), + float3(0.8174, 0.0000, 0.1125), float3(0.8079, 0.0000, 0.0990), float3(0.7999, 0.0000, 0.0839), + float3(0.7935, 0.0000, 0.0669), float3(0.7892, 0.0000, 0.0488), float3(0.7870, 0.0000, 0.0305), + float3(0.7847, 0.0000, 0.0139), float3(-1.0227, 0.0000, 0.1753), float3(-1.0153, 0.0000, 0.1761), + float3(-0.9964, 0.0000, 0.1758), float3(-0.9799, 0.0000, 0.1741), float3(-0.9634, 0.0000, 0.1714), + float3(-0.9483, 0.0000, 0.1668), float3(-0.9344, 0.0000, 0.1607), float3(-0.9219, 0.0000, 0.1531), + float3(-0.9101, 0.0000, 0.1447), float3(-0.8986, 0.0000, 0.1352), float3(-0.8876, 0.0000, 0.1244), + float3(-0.8772, 0.0000, 0.1125), float3(-0.8677, 0.0000, 0.0990), float3(-0.8597, 0.0000, 0.0839), + float3(-0.8533, 0.0000, 0.0669), float3(-0.8490, 0.0000, 0.0488), float3(-0.8467, 0.0000, 0.0305), + float3(-0.8444, 0.0000, 0.0139), +}); + +static constexpr std::array monkey_fill_opa({ + 0.3620, 0.4070, 0.4390, 0.4580, 0.5000, 0.5160, 0.5190, 0.5300, 0.5330, 0.5340, 0.5350, 0.5350, + 0.5370, 0.5370, 0.5370, 0.5350, 0.5340, 0.5340, 0.5340, 0.5340, 0.5320, 0.5310, 0.5310, 0.5320, + 0.5350, 0.5400, 0.5420, 0.5430, 0.5430, 0.5460, 0.5490, 0.5490, 0.5490, 0.5490, 0.5510, 0.5530, + 0.5540, 0.5540, 0.5550, 0.5560, 0.5570, 0.5570, 0.5570, 0.5570, 0.5570, 0.5580, 0.5590, 0.5590, + 0.5590, 0.5480, 0.5460, 0.5470, 0.5470, 0.5480, 0.5480, 0.5490, 0.5480, 0.5490, 0.5490, 0.5580, + 0.5870, 0.5950, 0.5980, 0.6030, 0.6060, 0.6070, 0.6070, 0.6110, 0.6150, 0.6210, 0.6230, 0.6260, + 0.6300, 0.6320, 0.6440, 0.6570, 0.6610, 0.6640, 0.6680, 0.6710, 0.6740, 0.6780, 0.6800, 0.6800, + 0.6800, 0.6810, 0.6810, 0.6830, 0.6830, 0.6850, 0.6860, 0.6940, 0.6970, 0.7000, 0.7040, 0.7100, + 0.7110, 0.7130, 0.7140, 0.7140, 0.7150, 0.7160, 0.7160, 0.7170, 0.7170, 0.7180, 0.7180, 0.7180, + 0.7190, 0.7190, 0.7190, 0.7190, 0.7170, 0.7170, 0.7170, 0.7180, 0.7190, 0.7190, 0.7090, 0.7040, + 0.7050, 0.7130, 0.8130, 0.8150, 0.8150, 0.8160, 0.8160, 0.8160, 0.8170, 0.8170, 0.8150, 0.8070, + 0.8010, 0.8000, 0.7810, 0.7800, 0.7780, 0.7770, 0.7770, 0.7770, 0.7780, 0.7760, 0.7760, 0.7740, + 0.7720, 0.7730, 0.7730, 0.7720, 0.7720, 0.7660, 0.7650, 0.7650, 0.7660, 0.7650, 0.7650, 0.7610, + 0.7510, 0.7440, 0.7380, 0.7310, 0.7270, 0.7230, 0.7170, 0.7080, 0.7060, 0.7050, 0.7040, 0.6980, + 0.6910, 0.6850, 0.6830, 0.6760, 0.6700, 0.6630, 0.6600, 0.6590, 0.6590, 0.6570, 0.6590, 0.6590, + 0.6590, 0.6570, 0.6580, 0.6570, 0.6560, 0.6420, 0.6090, 0.6080, 0.6070, 0.6060, 0.6040, 0.6060, + 0.6070, 0.6070, 0.6070, 0.6060, 0.6020, 0.5850, 0.5760, 0.5640, 0.5490, 0.5430, 0.5410, 0.5380, + 0.5280, 0.5280, 0.5290, 0.5280, 0.5150, 0.5140, 0.5070, 0.4940, 0.4900, 0.4910, 0.4890, 0.4910, + 0.4920, 0.4920, 0.4920, 0.4920, 0.4940, 0.4940, 0.4930, 0.4920, 0.4920, 0.4910, 0.4900, 0.4900, + 0.4890, 0.4890, 0.4900, 0.4890, 0.4890, 0.4900, 0.4890, 0.4890, 0.4890, 0.4880, 0.4900, 0.4970, + 0.5040, 0.5100, 0.5150, 0.5220, 0.5280, 0.5320, 0.5350, 0.5400, 0.5450, 0.5490, 0.5490, 0.5520, + 0.5520, 0.5530, 0.5530, 0.5530, 0.5540, 0.5550, 0.5550, 0.5570, 0.5570, 0.5580, 0.5580, 0.5580, + 0.5590, 0.5580, 0.5590, 0.5580, 0.5580, 0.5590, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, + 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, + 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, + 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, + 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, + 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, + 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, + 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, + 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, + 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, + 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, + 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, + 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, + 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, + 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, + 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, + 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, + 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, + 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, + 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, + 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, + 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, + 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, + 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, + 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, + 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, + 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, + 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, + 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, + 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, + 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, + 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, + 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, + 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, + 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, + 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, + 1.0000, 1.0000, 1.0000, 1.0000, +}); + +static constexpr std::array monkey_fill_rad({ + 0.2670, 0.3100, 0.3800, 0.4330, 0.4710, 0.4960, 0.5110, 0.5210, 0.5270, 0.5310, 0.5340, 0.5350, + 0.5360, 0.5360, 0.5360, 0.5350, 0.5340, 0.5340, 0.5330, 0.5330, 0.5320, 0.5310, 0.5310, 0.5320, + 0.5350, 0.5400, 0.5420, 0.5430, 0.5430, 0.5460, 0.5490, 0.5490, 0.5490, 0.5490, 0.5510, 0.5530, + 0.5540, 0.5540, 0.5550, 0.5560, 0.5570, 0.5570, 0.5570, 0.5570, 0.5580, 0.5580, 0.5570, 0.5560, + 0.5540, 0.5520, 0.5510, 0.5500, 0.5490, 0.5490, 0.5490, 0.5500, 0.5520, 0.5560, 0.5630, 0.5720, + 0.5820, 0.5910, 0.5970, 0.6020, 0.6050, 0.6070, 0.6090, 0.6120, 0.6160, 0.6190, 0.6230, 0.6260, + 0.6300, 0.6370, 0.6460, 0.6540, 0.6590, 0.6640, 0.6670, 0.6710, 0.6740, 0.6770, 0.6780, 0.6800, + 0.6800, 0.6810, 0.6820, 0.6830, 0.6850, 0.6870, 0.6900, 0.6930, 0.6970, 0.7000, 0.7040, 0.7070, + 0.7090, 0.7110, 0.7120, 0.7140, 0.7150, 0.7150, 0.7160, 0.7170, 0.7180, 0.7180, 0.7180, 0.7190, + 0.7190, 0.7190, 0.7190, 0.7190, 0.7180, 0.7170, 0.7170, 0.7180, 0.7170, 0.7150, 0.7130, 0.7180, + 0.7320, 0.7530, 0.7740, 0.7910, 0.8020, 0.8090, 0.8120, 0.8140, 0.8140, 0.8120, 0.8100, 0.8060, + 0.8000, 0.7940, 0.7880, 0.7830, 0.7810, 0.7790, 0.7780, 0.7770, 0.7770, 0.7760, 0.7750, 0.7740, + 0.7740, 0.7730, 0.7720, 0.7710, 0.7700, 0.7680, 0.7670, 0.7660, 0.7650, 0.7640, 0.7610, 0.7560, + 0.7510, 0.7450, 0.7390, 0.7330, 0.7280, 0.7230, 0.7180, 0.7130, 0.7090, 0.7040, 0.7000, 0.6950, + 0.6910, 0.6860, 0.6810, 0.6760, 0.6710, 0.6660, 0.6630, 0.6610, 0.6600, 0.6590, 0.6580, 0.6580, + 0.6580, 0.6570, 0.6560, 0.6530, 0.6460, 0.6370, 0.6280, 0.6200, 0.6140, 0.6100, 0.6080, 0.6070, + 0.6060, 0.6050, 0.6030, 0.5980, 0.5910, 0.5830, 0.5740, 0.5640, 0.5550, 0.5470, 0.5410, 0.5360, + 0.5320, 0.5290, 0.5250, 0.5210, 0.5160, 0.5100, 0.5050, 0.4990, 0.4950, 0.4930, 0.4910, 0.4910, + 0.4910, 0.4920, 0.4920, 0.4920, 0.4930, 0.4930, 0.4930, 0.4920, 0.4910, 0.4910, 0.4900, 0.4900, + 0.4890, 0.4890, 0.4890, 0.4890, 0.4890, 0.4900, 0.4900, 0.4910, 0.4920, 0.4940, 0.4970, 0.5010, + 0.5050, 0.5100, 0.5150, 0.5200, 0.5250, 0.5300, 0.5350, 0.5390, 0.5420, 0.5460, 0.5480, 0.5500, + 0.5510, 0.5520, 0.5530, 0.5540, 0.5540, 0.5550, 0.5560, 0.5560, 0.5570, 0.5580, 0.5580, 0.5580, + 0.5590, 0.5590, 0.5590, 0.5580, 0.5580, 0.5550, 0.1000, 0.2199, 0.4615, 0.6019, 0.6981, 0.7689, + 0.8236, 0.8660, 0.9003, 0.9272, 0.9485, 0.9653, 0.9781, 0.9876, 0.9942, 0.9983, 0.9997, 0.9990, + 0.9963, 0.9912, 0.9834, 0.9724, 0.9576, 0.9385, 0.9143, 0.8841, 0.8461, 0.7979, 0.7359, 0.6541, + 0.5396, 0.3600, 0.1000, 0.1000, 0.2199, 0.6019, 0.7689, 0.8660, 0.9272, 0.9653, 0.9876, 0.9983, + 0.9990, 0.9912, 0.9724, 0.9385, 0.8841, 0.7979, 0.6541, 0.3600, 0.1000, 0.1000, 0.2199, 0.3600, + 0.4615, 0.5396, 0.6019, 0.6541, 0.6981, 0.7359, 0.7689, 0.7979, 0.8236, 0.8461, 0.8660, 0.8841, + 0.9003, 0.9143, 0.9272, 0.9385, 0.9485, 0.9576, 0.9653, 0.9724, 0.9781, 0.9834, 0.9876, 0.9912, + 0.9942, 0.9963, 0.9983, 0.9990, 0.9997, 0.9997, 0.9990, 0.9983, 0.9963, 0.9942, 0.9912, 0.9876, + 0.9834, 0.9781, 0.9724, 0.9653, 0.9576, 0.9485, 0.9385, 0.9272, 0.9143, 0.9003, 0.8841, 0.8660, + 0.8461, 0.8236, 0.7979, 0.7689, 0.7359, 0.6981, 0.6541, 0.6019, 0.5396, 0.4615, 0.3600, 0.2199, + 0.1000, 0.1000, 0.2199, 0.4615, 0.6019, 0.6981, 0.7689, 0.8236, 0.8660, 0.9003, 0.9272, 0.9485, + 0.9653, 0.9781, 0.9876, 0.9942, 0.9983, 0.9997, 0.9990, 0.9963, 0.9912, 0.9834, 0.9724, 0.9576, + 0.9385, 0.9143, 0.8841, 0.8461, 0.7979, 0.7359, 0.6541, 0.5396, 0.3600, 0.1000, 0.1000, 0.2199, + 0.3600, 0.4615, 0.5396, 0.6019, 0.6541, 0.6981, 0.7359, 0.7689, 0.7979, 0.8236, 0.8461, 0.8660, + 0.8841, 0.9003, 0.9143, 0.9272, 0.9385, 0.9485, 0.9576, 0.9653, 0.9724, 0.9781, 0.9834, 0.9876, + 0.9912, 0.9942, 0.9963, 0.9983, 0.9990, 0.9997, 0.9997, 0.9990, 0.9983, 0.9963, 0.9942, 0.9912, + 0.9876, 0.9834, 0.9781, 0.9724, 0.9653, 0.9576, 0.9485, 0.9385, 0.9272, 0.9143, 0.9003, 0.8841, + 0.8660, 0.8461, 0.8236, 0.7979, 0.7689, 0.7359, 0.6981, 0.6541, 0.6019, 0.5396, 0.4615, 0.3600, + 0.2199, 0.1000, 0.1000, 0.2199, 0.4615, 0.6019, 0.6981, 0.7689, 0.8236, 0.8660, 0.9003, 0.9272, + 0.9485, 0.9653, 0.9781, 0.9876, 0.9942, 0.9983, 0.9997, 0.9990, 0.9963, 0.9912, 0.9834, 0.9724, + 0.9576, 0.9385, 0.9143, 0.8841, 0.8461, 0.7979, 0.7359, 0.6541, 0.5396, 0.3600, 0.1000, 0.1000, + 0.2199, 0.6019, 0.7689, 0.8660, 0.9272, 0.9653, 0.9876, 0.9983, 0.9990, 0.9912, 0.9724, 0.9385, + 0.8841, 0.7979, 0.6541, 0.3600, 0.1000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, + 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, + 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, + 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, + 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 0.1000, 0.2199, 0.4615, 0.6019, 0.6981, 0.7689, + 0.8236, 0.8660, 0.9003, 0.9272, 0.9485, 0.9653, 0.9781, 0.9876, 0.9942, 0.9983, 0.9997, 0.9990, + 0.9963, 0.9912, 0.9834, 0.9724, 0.9576, 0.9385, 0.9143, 0.8841, 0.8461, 0.7979, 0.7359, 0.6541, + 0.5396, 0.3600, 0.1000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, + 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, + 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, + 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, + 1.0000, 1.0000, 1.0000, 1.0000, 0.1000, 0.2199, 0.6019, 0.7689, 0.8660, 0.9272, 0.9653, 0.9876, + 0.9983, 0.9990, 0.9912, 0.9724, 0.9385, 0.8841, 0.7979, 0.6541, 0.3600, 0.1000, 0.1000, 0.2199, + 0.6019, 0.7689, 0.8660, 0.9272, 0.9653, 0.9876, 0.9983, 0.9990, 0.9912, 0.9724, 0.9385, 0.8841, + 0.7979, 0.6541, 0.3600, 0.1000, +}); + +static constexpr std::array monkey_fill_offsets({ 0, + 270, 303, 321, 385, 418, 482, 515, 533, 582, 615, 664, 682, + 700, +}); + +static std::array monkey_line_pos({ + float3(-0.6794, 0.0000, 0.3908), float3(-0.6711, 0.0000, 0.4112), float3(-0.6513, 0.0000, 0.4509), + float3(-0.6276, 0.0000, 0.4890), float3(-0.6001, 0.0000, 0.5253), float3(-0.5692, 0.0000, 0.5598), + float3(-0.5350, 0.0000, 0.5924), float3(-0.4979, 0.0000, 0.6228), float3(-0.4579, 0.0000, 0.6510), + float3(-0.4155, 0.0000, 0.6770), float3(-0.3707, 0.0000, 0.7005), float3(-0.3239, 0.0000, 0.7215), + float3(-0.2753, 0.0000, 0.7399), float3(-0.2251, 0.0000, 0.7555), float3(-0.1736, 0.0000, 0.7683), + float3(-0.1210, 0.0000, 0.7780), float3(-0.0675, 0.0000, 0.7847), float3(-0.0134, 0.0000, 0.7882), + float3(0.0411, 0.0000, 0.7884), float3(0.0957, 0.0000, 0.7851), float3(0.1503, 0.0000, 0.7783), + float3(0.2045, 0.0000, 0.7678), float3(0.2581, 0.0000, 0.7536), float3(0.3110, 0.0000, 0.7355), + float3(0.3628, 0.0000, 0.7134), float3(0.4133, 0.0000, 0.6873), float3(0.4622, 0.0000, 0.6569), + float3(0.5095, 0.0000, 0.6221), float3(0.5547, 0.0000, 0.5830), float3(0.5977, 0.0000, 0.5393), + float3(0.6382, 0.0000, 0.4909), float3(0.6760, 0.0000, 0.4377), float3(0.7109, 0.0000, 0.3797), + float3(-0.7544, 0.0000, 0.1799), float3(-0.7495, 0.0000, 0.1620), float3(-0.7392, 0.0000, 0.1283), + float3(-0.7281, 0.0000, 0.0975), float3(-0.7161, 0.0000, 0.0693), float3(-0.7033, 0.0000, 0.0435), + float3(-0.6898, 0.0000, 0.0200), float3(-0.6757, 0.0000, -0.0014), float3(-0.6609, 0.0000, -0.0208), + float3(-0.6455, 0.0000, -0.0386), float3(-0.6297, 0.0000, -0.0547), float3(-0.6133, 0.0000, -0.0695), + float3(-0.5966, 0.0000, -0.0830), float3(-0.5795, 0.0000, -0.0955), float3(-0.5621, 0.0000, -0.1071), + float3(-0.5444, 0.0000, -0.1180), float3(-0.5265, 0.0000, -0.1284), float3(-0.5084, 0.0000, -0.1384), + float3(-0.4902, 0.0000, -0.1483), float3(-0.4719, 0.0000, -0.1582), float3(-0.4537, 0.0000, -0.1682), + float3(-0.4355, 0.0000, -0.1787), float3(-0.4173, 0.0000, -0.1896), float3(-0.3993, 0.0000, -0.2013), + float3(-0.3815, 0.0000, -0.2138), float3(-0.3640, 0.0000, -0.2274), float3(-0.3467, 0.0000, -0.2422), + float3(-0.3298, 0.0000, -0.2584), float3(-0.3133, 0.0000, -0.2762), float3(-0.2972, 0.0000, -0.2958), + float3(-0.2816, 0.0000, -0.3173), float3(-0.2665, 0.0000, -0.3409), float3(-0.2521, 0.0000, -0.3668), + float3(-0.2854, 0.0000, -0.4528), float3(-0.2866, 0.0000, -0.4623), float3(-0.2899, 0.0000, -0.4814), + float3(-0.2943, 0.0000, -0.5008), float3(-0.2995, 0.0000, -0.5203), float3(-0.3054, 0.0000, -0.5400), + float3(-0.3117, 0.0000, -0.5598), float3(-0.3182, 0.0000, -0.5797), float3(-0.3249, 0.0000, -0.5996), + float3(-0.3314, 0.0000, -0.6196), float3(-0.3376, 0.0000, -0.6395), float3(-0.3432, 0.0000, -0.6594), + float3(-0.3482, 0.0000, -0.6792), float3(-0.3523, 0.0000, -0.6989), float3(-0.3552, 0.0000, -0.7185), + float3(-0.3569, 0.0000, -0.7379), float3(-0.3570, 0.0000, -0.7571), float3(-0.3555, 0.0000, -0.7761), + float3(-0.3522, 0.0000, -0.7948), float3(-0.3467, 0.0000, -0.8132), float3(-0.3390, 0.0000, -0.8313), + float3(-0.3289, 0.0000, -0.8490), float3(-0.3160, 0.0000, -0.8663), float3(-0.3004, 0.0000, -0.8831), + float3(-0.2817, 0.0000, -0.8996), float3(-0.2598, 0.0000, -0.9155), float3(-0.2344, 0.0000, -0.9309), + float3(-0.2051, 0.0000, -0.9457), float3(-0.1716, 0.0000, -0.9599), float3(-0.1341, 0.0000, -0.9733), + float3(-0.0928, 0.0000, -0.9857), float3(-0.0500, 0.0000, -0.9962), float3(-0.0087, 0.0000, -1.0041), + float3(0.0287, 0.0000, -1.0087), float3(0.0620, 0.0000, -1.0104), float3(0.0924, 0.0000, -1.0102), + float3(0.1205, 0.0000, -1.0086), float3(0.1465, 0.0000, -1.0057), float3(0.1706, 0.0000, -1.0017), + float3(0.1928, 0.0000, -0.9964), float3(0.2132, 0.0000, -0.9900), float3(0.2318, 0.0000, -0.9824), + float3(0.2487, 0.0000, -0.9738), float3(0.2641, 0.0000, -0.9641), float3(0.2778, 0.0000, -0.9533), + float3(0.2901, 0.0000, -0.9415), float3(0.3009, 0.0000, -0.9287), float3(0.3103, 0.0000, -0.9148), + float3(0.3183, 0.0000, -0.8999), float3(0.3250, 0.0000, -0.8841), float3(0.3304, 0.0000, -0.8672), + float3(0.3345, 0.0000, -0.8493), float3(0.3374, 0.0000, -0.8305), float3(0.3391, 0.0000, -0.8107), + float3(0.3397, 0.0000, -0.7899), float3(0.3392, 0.0000, -0.7682), float3(0.3377, 0.0000, -0.7456), + float3(0.3352, 0.0000, -0.7221), float3(0.3317, 0.0000, -0.6976), float3(0.3273, 0.0000, -0.6722), + float3(0.3220, 0.0000, -0.6460), float3(0.3160, 0.0000, -0.6188), float3(0.3091, 0.0000, -0.5908), + float3(0.3015, 0.0000, -0.5619), float3(0.2974, 0.0000, -0.5472), float3(-0.4408, 0.0000, 0.5073), + float3(-0.4312, 0.0000, 0.5132), float3(-0.3945, 0.0000, 0.5319), float3(-0.3605, 0.0000, 0.5438), + float3(-0.3288, 0.0000, 0.5496), float3(-0.2992, 0.0000, 0.5501), float3(-0.2712, 0.0000, 0.5460), + float3(-0.2446, 0.0000, 0.5381), float3(-0.2191, 0.0000, 0.5272), float3(-0.1943, 0.0000, 0.5139), + float3(-0.1699, 0.0000, 0.4992), float3(-0.1456, 0.0000, 0.4837), float3(-0.1211, 0.0000, 0.4682), + float3(-0.0960, 0.0000, 0.4535), float3(-0.0700, 0.0000, 0.4404), float3(-0.0428, 0.0000, 0.4301), + float3(-0.0160, 0.0000, 0.4235), float3(0.0076, 0.0000, 0.4216), float3(0.0283, 0.0000, 0.4237), + float3(0.0477, 0.0000, 0.4291), float3(0.0670, 0.0000, 0.4369), float3(0.0866, 0.0000, 0.4465), + float3(0.1068, 0.0000, 0.4576), float3(0.1278, 0.0000, 0.4695), float3(0.1498, 0.0000, 0.4819), + float3(0.1730, 0.0000, 0.4941), float3(0.1977, 0.0000, 0.5056), float3(0.2241, 0.0000, 0.5159), + float3(0.2523, 0.0000, 0.5244), float3(0.2825, 0.0000, 0.5307), float3(0.3150, 0.0000, 0.5342), + float3(0.3499, 0.0000, 0.5345), float3(0.3875, 0.0000, 0.5311), float3(0.3973, 0.0000, 0.5295), + float3(0.7240, 0.0000, 0.1799), float3(0.7192, 0.0000, 0.1620), float3(0.7089, 0.0000, 0.1283), + float3(0.6977, 0.0000, 0.0975), float3(0.6858, 0.0000, 0.0693), float3(0.6730, 0.0000, 0.0435), + float3(0.6595, 0.0000, 0.0200), float3(0.6453, 0.0000, -0.0014), float3(0.6306, 0.0000, -0.0208), + float3(0.6152, 0.0000, -0.0386), float3(0.5994, 0.0000, -0.0547), float3(0.5830, 0.0000, -0.0695), + float3(0.5663, 0.0000, -0.0830), float3(0.5492, 0.0000, -0.0955), float3(0.5317, 0.0000, -0.1071), + float3(0.5140, 0.0000, -0.1180), float3(0.4961, 0.0000, -0.1284), float3(0.4781, 0.0000, -0.1384), + float3(0.4599, 0.0000, -0.1483), float3(0.4416, 0.0000, -0.1582), float3(0.4234, 0.0000, -0.1682), + float3(0.4051, 0.0000, -0.1787), float3(0.3870, 0.0000, -0.1896), float3(0.3690, 0.0000, -0.2013), + float3(0.3512, 0.0000, -0.2138), float3(0.3337, 0.0000, -0.2274), float3(0.3164, 0.0000, -0.2422), + float3(0.2995, 0.0000, -0.2584), float3(0.2829, 0.0000, -0.2762), float3(0.2669, 0.0000, -0.2958), + float3(0.2513, 0.0000, -0.3173), float3(0.2362, 0.0000, -0.3409), float3(0.2218, 0.0000, -0.3668), + float3(-0.1119, 0.0000, -0.7868), float3(-0.1087, 0.0000, -0.7905), float3(-0.1022, 0.0000, -0.7974), + float3(-0.0955, 0.0000, -0.8038), float3(-0.0886, 0.0000, -0.8097), float3(-0.0816, 0.0000, -0.8152), + float3(-0.0744, 0.0000, -0.8201), float3(-0.0671, 0.0000, -0.8246), float3(-0.0597, 0.0000, -0.8286), + float3(-0.0522, 0.0000, -0.8321), float3(-0.0446, 0.0000, -0.8351), float3(-0.0369, 0.0000, -0.8376), + float3(-0.0292, 0.0000, -0.8397), float3(-0.0214, 0.0000, -0.8413), float3(-0.0136, 0.0000, -0.8424), + float3(-0.0057, 0.0000, -0.8430), float3(0.0022, 0.0000, -0.8431), float3(0.0100, 0.0000, -0.8428), + float3(0.0178, 0.0000, -0.8419), float3(0.0257, 0.0000, -0.8407), float3(0.0334, 0.0000, -0.8389), + float3(0.0411, 0.0000, -0.8366), float3(0.0488, 0.0000, -0.8339), float3(0.0564, 0.0000, -0.8308), + float3(0.0638, 0.0000, -0.8271), float3(0.0712, 0.0000, -0.8230), float3(0.0785, 0.0000, -0.8184), + float3(0.0856, 0.0000, -0.8134), float3(0.0925, 0.0000, -0.8079), float3(0.0994, 0.0000, -0.8019), + float3(0.1060, 0.0000, -0.7954), float3(0.1125, 0.0000, -0.7885), float3(0.1187, 0.0000, -0.7812), + float3(-0.1119, 0.0000, -0.2655), float3(-0.1101, 0.0000, -0.2605), float3(-0.1032, 0.0000, -0.2424), + float3(-0.0965, 0.0000, -0.2276), float3(-0.0901, 0.0000, -0.2158), float3(-0.0837, 0.0000, -0.2069), + float3(-0.0775, 0.0000, -0.2006), float3(-0.0712, 0.0000, -0.1967), float3(-0.0650, 0.0000, -0.1949), + float3(-0.0587, 0.0000, -0.1950), float3(-0.0522, 0.0000, -0.1968), float3(-0.0455, 0.0000, -0.2001), + float3(-0.0386, 0.0000, -0.2046), float3(-0.0315, 0.0000, -0.2100), float3(-0.0239, 0.0000, -0.2163), + float3(-0.0160, 0.0000, -0.2230), float3(-0.0075, 0.0000, -0.2301), float3(-0.0002, 0.0000, -0.2342), + float3(0.0054, 0.0000, -0.2340), float3(0.0106, 0.0000, -0.2324), float3(0.0155, 0.0000, -0.2297), + float3(0.0202, 0.0000, -0.2261), float3(0.0249, 0.0000, -0.2219), float3(0.0296, 0.0000, -0.2174), + float3(0.0344, 0.0000, -0.2128), float3(0.0394, 0.0000, -0.2084), float3(0.0448, 0.0000, -0.2044), + float3(0.0506, 0.0000, -0.2012), float3(0.0570, 0.0000, -0.1988), float3(0.0640, 0.0000, -0.1977), + float3(0.0717, 0.0000, -0.1980), float3(0.0804, 0.0000, -0.2001), float3(0.0899, 0.0000, -0.2042), + float3(0.0925, 0.0000, -0.2055), float3(0.7993, 0.0000, 0.3242), float3(0.8169, 0.0000, 0.3354), + float3(0.8512, 0.0000, 0.3542), float3(0.8840, 0.0000, 0.3686), float3(0.9153, 0.0000, 0.3787), + float3(0.9450, 0.0000, 0.3848), float3(0.9729, 0.0000, 0.3871), float3(0.9989, 0.0000, 0.3857), + float3(1.0229, 0.0000, 0.3811), float3(1.0447, 0.0000, 0.3732), float3(1.0643, 0.0000, 0.3624), + float3(1.0814, 0.0000, 0.3490), float3(1.0960, 0.0000, 0.3330), float3(1.1080, 0.0000, 0.3147), + float3(1.1172, 0.0000, 0.2944), float3(1.1235, 0.0000, 0.2723), float3(1.1267, 0.0000, 0.2485), + float3(1.1269, 0.0000, 0.2233), float3(1.1237, 0.0000, 0.1970), float3(1.1172, 0.0000, 0.1697), + float3(1.1071, 0.0000, 0.1417), float3(1.0934, 0.0000, 0.1131), float3(1.0759, 0.0000, 0.0842), + float3(1.0545, 0.0000, 0.0553), float3(1.0291, 0.0000, 0.0265), float3(0.9995, 0.0000, -0.0019), + float3(0.9657, 0.0000, -0.0298), float3(0.9275, 0.0000, -0.0569), float3(0.8847, 0.0000, -0.0829), + float3(0.8373, 0.0000, -0.1077), float3(0.7852, 0.0000, -0.1311), float3(0.7281, 0.0000, -0.1528), + float3(0.6661, 0.0000, -0.1725), float3(-0.7428, 0.0000, 0.2977), float3(-0.7608, 0.0000, 0.3138), + float3(-0.7786, 0.0000, 0.3284), float3(-0.7962, 0.0000, 0.3414), float3(-0.8135, 0.0000, 0.3531), + float3(-0.8306, 0.0000, 0.3633), float3(-0.8473, 0.0000, 0.3722), float3(-0.8637, 0.0000, 0.3798), + float3(-0.8798, 0.0000, 0.3860), float3(-0.8956, 0.0000, 0.3911), float3(-0.9109, 0.0000, 0.3949), + float3(-0.9259, 0.0000, 0.3975), float3(-0.9405, 0.0000, 0.3989), float3(-0.9546, 0.0000, 0.3993), + float3(-0.9682, 0.0000, 0.3986), float3(-0.9814, 0.0000, 0.3969), float3(-0.9940, 0.0000, 0.3941), + float3(-1.0062, 0.0000, 0.3904), float3(-1.0178, 0.0000, 0.3858), float3(-1.0288, 0.0000, 0.3803), + float3(-1.0393, 0.0000, 0.3739), float3(-1.0492, 0.0000, 0.3668), float3(-1.0584, 0.0000, 0.3588), + float3(-1.0670, 0.0000, 0.3501), float3(-1.0750, 0.0000, 0.3407), float3(-1.0822, 0.0000, 0.3307), + float3(-1.0888, 0.0000, 0.3200), float3(-1.0946, 0.0000, 0.3087), float3(-1.0997, 0.0000, 0.2969), + float3(-1.1040, 0.0000, 0.2845), float3(-1.1075, 0.0000, 0.2717), float3(-1.1103, 0.0000, 0.2584), + float3(-1.1122, 0.0000, 0.2447), float3(-1.1132, 0.0000, 0.2306), float3(-1.1134, 0.0000, 0.2162), + float3(-1.1128, 0.0000, 0.2015), float3(-1.1112, 0.0000, 0.1865), float3(-1.1086, 0.0000, 0.1713), + float3(-1.1052, 0.0000, 0.1559), float3(-1.1007, 0.0000, 0.1404), float3(-1.0953, 0.0000, 0.1247), + float3(-1.0889, 0.0000, 0.1090), float3(-1.0814, 0.0000, 0.0932), float3(-1.0729, 0.0000, 0.0774), + float3(-1.0633, 0.0000, 0.0617), float3(-1.0527, 0.0000, 0.0460), float3(-1.0409, 0.0000, 0.0304), + float3(-1.0280, 0.0000, 0.0150), float3(-1.0139, 0.0000, -0.0003), float3(-0.9987, 0.0000, -0.0154), + float3(-0.9823, 0.0000, -0.0302), float3(-0.9646, 0.0000, -0.0447), float3(-0.9458, 0.0000, -0.0589), + float3(-0.9257, 0.0000, -0.0727), float3(-0.9043, 0.0000, -0.0862), float3(-0.8816, 0.0000, -0.0992), + float3(-0.8576, 0.0000, -0.1117), float3(-0.8323, 0.0000, -0.1237), float3(-0.8056, 0.0000, -0.1352), + float3(-0.7775, 0.0000, -0.1461), float3(-0.7481, 0.0000, -0.1564), float3(-0.7172, 0.0000, -0.1660), + float3(-0.6849, 0.0000, -0.1750), float3(-0.6512, 0.0000, -0.1832), float3(0.2721, 0.0000, 0.2084), + float3(0.2721, 0.0000, 0.2112), float3(0.2739, 0.0000, 0.2223), float3(0.2778, 0.0000, 0.2324), + float3(0.2836, 0.0000, 0.2409), float3(0.2910, 0.0000, 0.2471), float3(0.2994, 0.0000, 0.2507), + float3(0.3082, 0.0000, 0.2515), float3(0.3169, 0.0000, 0.2493), float3(0.3248, 0.0000, 0.2443), + float3(0.3315, 0.0000, 0.2369), float3(0.3364, 0.0000, 0.2275), float3(0.3392, 0.0000, 0.2168), + float3(0.3398, 0.0000, 0.2056), float3(0.3381, 0.0000, 0.1945), float3(0.3342, 0.0000, 0.1844), + float3(0.3283, 0.0000, 0.1760), float3(0.3210, 0.0000, 0.1697), float3(0.3126, 0.0000, 0.1661), + float3(0.3038, 0.0000, 0.1653), float3(0.2951, 0.0000, 0.1675), float3(0.2871, 0.0000, 0.1725), + float3(0.2805, 0.0000, 0.1799), float3(0.2756, 0.0000, 0.1893), float3(0.2727, 0.0000, 0.2000), + float3(0.2721, 0.0000, 0.2056), float3(-0.3545, 0.0000, 0.2084), float3(-0.3544, 0.0000, 0.2112), + float3(-0.3527, 0.0000, 0.2223), float3(-0.3488, 0.0000, 0.2324), float3(-0.3430, 0.0000, 0.2409), + float3(-0.3356, 0.0000, 0.2471), float3(-0.3272, 0.0000, 0.2507), float3(-0.3184, 0.0000, 0.2515), + float3(-0.3097, 0.0000, 0.2493), float3(-0.3018, 0.0000, 0.2443), float3(-0.2951, 0.0000, 0.2369), + float3(-0.2902, 0.0000, 0.2275), float3(-0.2874, 0.0000, 0.2168), float3(-0.2868, 0.0000, 0.2056), + float3(-0.2885, 0.0000, 0.1945), float3(-0.2924, 0.0000, 0.1844), float3(-0.2983, 0.0000, 0.1760), + float3(-0.3056, 0.0000, 0.1697), float3(-0.3140, 0.0000, 0.1661), float3(-0.3228, 0.0000, 0.1653), + float3(-0.3315, 0.0000, 0.1675), float3(-0.3394, 0.0000, 0.1725), float3(-0.3461, 0.0000, 0.1799), + float3(-0.3510, 0.0000, 0.1893), float3(-0.3539, 0.0000, 0.2000), float3(-0.3544, 0.0000, 0.2056), + float3(0.1904, 0.0000, 0.0983), float3(0.1997, 0.0000, 0.0774), float3(0.2234, 0.0000, 0.0407), + float3(0.2477, 0.0000, 0.0158), float3(0.2767, 0.0000, -0.0047), float3(0.3061, 0.0000, -0.0179), + float3(0.3346, 0.0000, -0.0247), float3(0.3620, 0.0000, -0.0262), float3(0.3881, 0.0000, -0.0231), + float3(0.4128, 0.0000, -0.0159), float3(0.4360, 0.0000, -0.0049), float3(0.4577, 0.0000, 0.0099), + float3(0.4778, 0.0000, 0.0289), float3(0.4959, 0.0000, 0.0524), float3(0.5114, 0.0000, 0.0806), + float3(0.5229, 0.0000, 0.1134), float3(0.5291, 0.0000, 0.1498), float3(0.5289, 0.0000, 0.1884), + float3(0.5219, 0.0000, 0.2267), float3(0.5087, 0.0000, 0.2616), float3(0.4907, 0.0000, 0.2916), + float3(0.4697, 0.0000, 0.3159), float3(0.4465, 0.0000, 0.3349), float3(0.4220, 0.0000, 0.3489), + float3(0.3964, 0.0000, 0.3582), float3(0.3705, 0.0000, 0.3628), float3(0.3436, 0.0000, 0.3630), + float3(0.3166, 0.0000, 0.3586), float3(0.2897, 0.0000, 0.3491), float3(0.2635, 0.0000, 0.3344), + float3(0.2382, 0.0000, 0.3137), float3(0.2162, 0.0000, 0.2882), float3(0.1949, 0.0000, 0.2516), + float3(-1.0361, 0.0000, 0.1745), float3(-1.0319, 0.0000, 0.1770), float3(-1.0153, 0.0000, 0.1852), + float3(-0.9990, 0.0000, 0.1907), float3(-0.9830, 0.0000, 0.1936), float3(-0.9673, 0.0000, 0.1941), + float3(-0.9522, 0.0000, 0.1923), float3(-0.9376, 0.0000, 0.1885), float3(-0.9236, 0.0000, 0.1827), + float3(-0.9103, 0.0000, 0.1752), float3(-0.8978, 0.0000, 0.1662), float3(-0.8862, 0.0000, 0.1558), + float3(-0.8756, 0.0000, 0.1441), float3(-0.8660, 0.0000, 0.1314), float3(-0.8575, 0.0000, 0.1179), + float3(-0.8501, 0.0000, 0.1036), float3(-0.8441, 0.0000, 0.0889), float3(-0.8416, 0.0000, 0.0813), + float3(0.9747, 0.0000, 0.1745), float3(0.9706, 0.0000, 0.1770), float3(0.9540, 0.0000, 0.1852), + float3(0.9377, 0.0000, 0.1907), float3(0.9216, 0.0000, 0.1936), float3(0.9060, 0.0000, 0.1941), + float3(0.8908, 0.0000, 0.1923), float3(0.8762, 0.0000, 0.1885), float3(0.8622, 0.0000, 0.1827), + float3(0.8490, 0.0000, 0.1752), float3(0.8365, 0.0000, 0.1662), float3(0.8249, 0.0000, 0.1558), + float3(0.8143, 0.0000, 0.1441), float3(0.8046, 0.0000, 0.1314), float3(0.7961, 0.0000, 0.1179), + float3(0.7888, 0.0000, 0.1036), float3(0.7828, 0.0000, 0.0889), float3(0.7802, 0.0000, 0.0813), + float3(-0.1860, 0.0000, 0.0983), float3(-0.1954, 0.0000, 0.0774), float3(-0.2191, 0.0000, 0.0407), + float3(-0.2434, 0.0000, 0.0158), float3(-0.2723, 0.0000, -0.0047), float3(-0.3017, 0.0000, -0.0179), + float3(-0.3302, 0.0000, -0.0247), float3(-0.3576, 0.0000, -0.0262), float3(-0.3837, 0.0000, -0.0231), + float3(-0.4085, 0.0000, -0.0159), float3(-0.4317, 0.0000, -0.0049), float3(-0.4533, 0.0000, 0.0099), + float3(-0.4734, 0.0000, 0.0289), float3(-0.4916, 0.0000, 0.0524), float3(-0.5070, 0.0000, 0.0806), + float3(-0.5185, 0.0000, 0.1134), float3(-0.5247, 0.0000, 0.1498), float3(-0.5246, 0.0000, 0.1884), + float3(-0.5175, 0.0000, 0.2267), float3(-0.5043, 0.0000, 0.2616), float3(-0.4864, 0.0000, 0.2916), + float3(-0.4653, 0.0000, 0.3159), float3(-0.4422, 0.0000, 0.3349), float3(-0.4177, 0.0000, 0.3489), + float3(-0.3921, 0.0000, 0.3582), float3(-0.3661, 0.0000, 0.3628), float3(-0.3392, 0.0000, 0.3630), + float3(-0.3123, 0.0000, 0.3586), float3(-0.2853, 0.0000, 0.3491), float3(-0.2591, 0.0000, 0.3344), + float3(-0.2339, 0.0000, 0.3137), float3(-0.2118, 0.0000, 0.2882), float3(-0.1906, 0.0000, 0.2516), +}); + +static constexpr std::array monkey_line_opa({ + 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, + 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, + 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, + 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, + 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, + 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, + 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, + 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, + 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, + 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, + 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, + 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, + 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, + 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, + 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, + 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, + 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, + 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, + 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, + 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, + 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, + 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, + 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, + 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, + 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, + 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, + 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, + 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, + 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, + 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, + 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, + 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, + 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, + 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, + 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, + 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, + 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, + 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, + 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, + 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, + 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, + 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, + 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, +}); + +static constexpr std::array monkey_line_rad({ + 0.1000, 0.2199, 0.4615, 0.6019, 0.6981, 0.7689, 0.8236, 0.8660, 0.9003, 0.9272, 0.9485, 0.9653, + 0.9781, 0.9876, 0.9942, 0.9983, 0.9997, 0.9990, 0.9963, 0.9912, 0.9834, 0.9724, 0.9576, 0.9385, + 0.9143, 0.8841, 0.8461, 0.7979, 0.7359, 0.6541, 0.5396, 0.3600, 0.1000, 0.1000, 0.2199, 0.4615, + 0.6019, 0.6981, 0.7689, 0.8236, 0.8660, 0.9003, 0.9272, 0.9485, 0.9653, 0.9781, 0.9876, 0.9942, + 0.9983, 0.9997, 0.9990, 0.9963, 0.9912, 0.9834, 0.9724, 0.9576, 0.9385, 0.9143, 0.8841, 0.8461, + 0.7979, 0.7359, 0.6541, 0.5396, 0.3600, 0.1000, 0.1000, 0.1288, 0.2962, 0.4147, 0.5028, 0.5723, + 0.6291, 0.6768, 0.7177, 0.7530, 0.7838, 0.8109, 0.8349, 0.8564, 0.8756, 0.8922, 0.9074, 0.9211, + 0.9329, 0.9440, 0.9531, 0.9617, 0.9688, 0.9755, 0.9808, 0.9858, 0.9894, 0.9930, 0.9952, 0.9973, + 0.9987, 0.9993, 1.0000, 0.9993, 0.9987, 0.9973, 0.9952, 0.9930, 0.9894, 0.9858, 0.9808, 0.9755, + 0.9688, 0.9617, 0.9531, 0.9440, 0.9329, 0.9211, 0.9074, 0.8922, 0.8756, 0.8564, 0.8349, 0.8109, + 0.7838, 0.7530, 0.7177, 0.6768, 0.6291, 0.5723, 0.5028, 0.4147, 0.2962, 0.1288, 0.1000, 0.1000, + 0.1288, 0.4147, 0.5723, 0.6768, 0.7530, 0.8109, 0.8564, 0.8922, 0.9211, 0.9440, 0.9617, 0.9755, + 0.9858, 0.9930, 0.9973, 0.9993, 0.9993, 0.9973, 0.9930, 0.9858, 0.9755, 0.9617, 0.9440, 0.9211, + 0.8922, 0.8564, 0.8109, 0.7530, 0.6768, 0.5723, 0.4147, 0.1288, 0.1000, 0.1000, 0.2199, 0.4615, + 0.6019, 0.6981, 0.7689, 0.8236, 0.8660, 0.9003, 0.9272, 0.9485, 0.9653, 0.9781, 0.9876, 0.9942, + 0.9983, 0.9997, 0.9990, 0.9963, 0.9912, 0.9834, 0.9724, 0.9576, 0.9385, 0.9143, 0.8841, 0.8461, + 0.7979, 0.7359, 0.6541, 0.5396, 0.3600, 0.1000, 0.1000, 0.2199, 0.4615, 0.6019, 0.6981, 0.7689, + 0.8236, 0.8660, 0.9003, 0.9272, 0.9485, 0.9653, 0.9781, 0.9876, 0.9942, 0.9983, 0.9997, 0.9990, + 0.9963, 0.9912, 0.9834, 0.9724, 0.9576, 0.9385, 0.9143, 0.8841, 0.8461, 0.7979, 0.7359, 0.6541, + 0.5396, 0.3600, 0.1000, 0.1000, 0.1288, 0.4147, 0.5723, 0.6768, 0.7530, 0.8109, 0.8564, 0.8922, + 0.9211, 0.9440, 0.9617, 0.9755, 0.9858, 0.9930, 0.9973, 0.9993, 0.9993, 0.9973, 0.9930, 0.9858, + 0.9755, 0.9617, 0.9440, 0.9211, 0.8922, 0.8564, 0.8109, 0.7530, 0.6768, 0.5723, 0.4147, 0.1288, + 0.1000, 0.1000, 0.2199, 0.4615, 0.6019, 0.6981, 0.7689, 0.8236, 0.8660, 0.9003, 0.9272, 0.9485, + 0.9653, 0.9781, 0.9876, 0.9942, 0.9983, 0.9997, 0.9990, 0.9963, 0.9912, 0.9834, 0.9724, 0.9576, + 0.9385, 0.9143, 0.8841, 0.8461, 0.7979, 0.7359, 0.6541, 0.5396, 0.3600, 0.1000, 0.1000, 0.2199, + 0.3600, 0.4615, 0.5396, 0.6019, 0.6541, 0.6981, 0.7359, 0.7689, 0.7979, 0.8236, 0.8461, 0.8660, + 0.8841, 0.9003, 0.9143, 0.9272, 0.9385, 0.9485, 0.9576, 0.9653, 0.9724, 0.9781, 0.9834, 0.9876, + 0.9912, 0.9942, 0.9963, 0.9983, 0.9990, 0.9997, 0.9997, 0.9990, 0.9983, 0.9963, 0.9942, 0.9912, + 0.9876, 0.9834, 0.9781, 0.9724, 0.9653, 0.9576, 0.9485, 0.9385, 0.9272, 0.9143, 0.9003, 0.8841, + 0.8660, 0.8461, 0.8236, 0.7979, 0.7689, 0.7359, 0.6981, 0.6541, 0.6019, 0.5396, 0.4615, 0.3600, + 0.2199, 0.1000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, + 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, + 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, + 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, + 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 1.0000, 0.1000, 0.2199, 0.4615, 0.6019, 0.6981, 0.7689, + 0.8236, 0.8660, 0.9003, 0.9272, 0.9485, 0.9653, 0.9781, 0.9876, 0.9942, 0.9983, 0.9997, 0.9990, + 0.9963, 0.9912, 0.9834, 0.9724, 0.9576, 0.9385, 0.9143, 0.8841, 0.8461, 0.7979, 0.7359, 0.6541, + 0.5396, 0.3600, 0.1000, 0.1000, 0.2199, 0.6019, 0.7689, 0.8660, 0.9272, 0.9653, 0.9876, 0.9983, + 0.9990, 0.9912, 0.9724, 0.9385, 0.8841, 0.7979, 0.6541, 0.3600, 0.1000, 0.1000, 0.2199, 0.6019, + 0.7689, 0.8660, 0.9272, 0.9653, 0.9876, 0.9983, 0.9990, 0.9912, 0.9724, 0.9385, 0.8841, 0.7979, + 0.6541, 0.3600, 0.1000, 0.1000, 0.2199, 0.4615, 0.6019, 0.6981, 0.7689, 0.8236, 0.8660, 0.9003, + 0.9272, 0.9485, 0.9653, 0.9781, 0.9876, 0.9942, 0.9983, 0.9997, 0.9990, 0.9963, 0.9912, 0.9834, + 0.9724, 0.9576, 0.9385, 0.9143, 0.8841, 0.8461, 0.7979, 0.7359, 0.6541, 0.5396, 0.3600, 0.1000, +}); + +static constexpr std::array monkey_line_offsets({ 0, + 33, 66, 131, 165, 198, 231, 265, 298, 362, 388, 414, 447, + 465, 483, 516, +}); + +static const std::array monkey_line_influence({ + 60, 60, 60, 60, 60, 40, 40, 60, 60, 60, 60, 60, 40, 40, 60, +}); + +static const std::array monkey_fill_influence({ + 75, 60, 60, 60, 60, 60, 60, 40, 60, 60, 60, 40, 40, +}); + +void create_suzanne(Main &bmain, Object &object, float4x4 matrix, const int frame_number) +{ + using namespace blender::bke::greasepencil; + GreasePencil &grease_pencil = *static_cast(object.data); + + int color_Black = add_material_from_template(bmain, object, gp_monkey_pct_black); + int color_Eyes = add_material_from_template(bmain, object, gp_monkey_pct_eyes); + int color_Pupils = add_material_from_template(bmain, object, gp_monkey_pct_pupils); + int color_Skin = add_material_from_template(bmain, object, gp_monkey_pct_skin); + int color_Skin_Light = add_material_from_template(bmain, object, gp_monkey_pct_skin_light); + int color_Skin_Shadow = add_material_from_template(bmain, object, gp_monkey_pct_skin_shadow); + object.actcol = color_Black; + + const std::array monkey_line_materials({ + color_Black, + color_Black, + color_Black, + color_Black, + color_Black, + color_Black, + color_Black, + color_Black, + color_Black, + color_Pupils, + color_Pupils, + color_Black, + color_Black, + color_Black, + color_Black, + }); + const std::array monkey_fill_materials({ + color_Skin, + color_Skin_Shadow, + color_Skin_Shadow, + color_Skin_Light, + color_Skin_Light, + color_Skin_Light, + color_Skin_Light, + color_Skin_Light, + color_Eyes, + color_Skin_Shadow, + color_Eyes, + color_Skin_Shadow, + color_Skin_Shadow, + }); + + Layer &layer_fills = grease_pencil.add_layer(grease_pencil.root_group.wrap(), "Fills"); + Layer &layer_lines = grease_pencil.add_layer(grease_pencil.root_group.wrap(), "Lines"); + grease_pencil.active_layer = &layer_lines; + + grease_pencil.add_empty_drawings(2); + + GreasePencilDrawing *drawing_lines = reinterpret_cast( + grease_pencil.drawings_for_write()[0]); + drawing_lines->geometry.wrap() = create_drawing_data(monkey_line_pos, + monkey_line_rad, + monkey_line_opa, + monkey_line_offsets, + monkey_line_materials, + monkey_line_influence, + matrix); + + GreasePencilDrawing *drawing_fills = reinterpret_cast( + grease_pencil.drawings_for_write()[1]); + drawing_fills->geometry.wrap() = create_drawing_data(monkey_fill_pos, + monkey_fill_rad, + monkey_fill_opa, + monkey_fill_offsets, + monkey_fill_materials, + monkey_fill_influence, + matrix); + + GreasePencilFrame frame_lines{0, 0, BEZT_KEYTYPE_KEYFRAME}; + GreasePencilFrame frame_fills{1, 0, BEZT_KEYTYPE_KEYFRAME}; + layer_lines.insert_frame(frame_number, frame_lines); + layer_fills.insert_frame(frame_number, frame_fills); } } // namespace blender::ed::greasepencil \ No newline at end of file diff --git a/source/blender/editors/include/ED_grease_pencil.h b/source/blender/editors/include/ED_grease_pencil.h index 79fcd5556a2..296a0f3a592 100644 --- a/source/blender/editors/include/ED_grease_pencil.h +++ b/source/blender/editors/include/ED_grease_pencil.h @@ -22,8 +22,9 @@ extern "C" { namespace blender::ed::greasepencil { -void create_blank(Main &bmain, Object &object, int frame_numer); -void create_stroke(Main &bmain, Object &object, float4x4 matrix, int frame_numer); +void create_blank(Main &bmain, Object &object, int frame_number); +void create_stroke(Main &bmain, Object &object, float4x4 matrix, int frame_number); +void create_suzanne(Main &bmain, Object &object, float4x4 matrix, const int frame_number); } // namespace blender::ed::greasepencil #endif diff --git a/source/blender/editors/object/object_add.cc b/source/blender/editors/object/object_add.cc index 67844af7283..c275bd71890 100644 --- a/source/blender/editors/object/object_add.cc +++ b/source/blender/editors/object/object_add.cc @@ -1643,7 +1643,16 @@ static int object_grease_pencil_add_exec(bContext *C, wmOperator *op) greasepencil::create_stroke(*bmain, *object, mat, scene->r.cfra); break; } - case GP_MONKEY: + case GP_MONKEY: { + const float radius = RNA_float_get(op->ptr, "radius"); + const float3 scale(radius); + + float4x4 mat; + ED_object_new_primitive_matrix(C, object, loc, rot, scale, mat.ptr()); + + greasepencil::create_suzanne(*bmain, *object, mat, scene->r.cfra); + break; + } case GP_LRT_OBJECT: case GP_LRT_SCENE: case GP_LRT_COLLECTION: {