GPencil: "Add Suzanne" migration to new structure #108503

Merged
Falk David merged 5 commits from ChengduLittleA/blender:gp3-monkey into main 2023-06-01 16:39:52 +02:00
4 changed files with 800 additions and 11 deletions

View File

@ -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):

View File

@ -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<float3> 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<GreasePencil *>(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<GreasePencil *>(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};
filedescriptor marked this conversation as resolved Outdated

Instead of 28 x 3 arrays, there should only be 2 x 3 arrays. For the "Fills" and for the "Lines" you just need one array per attribute. Then there should be a curve offsets array that has all the offsets. E.g. {0, 270, 270 + 33, 270 + 33 + 18, etc. }.

Instead of 28 x 3 arrays, there should only be 2 x 3 arrays. For the "Fills" and for the "Lines" you just need one array per attribute. Then there should be a curve offsets array that has all the offsets. E.g. {0, 270, 270 + 33, 270 + 33 + 18, etc. }.
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,
};
ChengduLittleA marked this conversation as resolved
Review

I would add false, here for clarity.

I would add `false,` here for clarity.
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<float3, 700> 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),
ChengduLittleA marked this conversation as resolved Outdated

drawing -> drawing_fills

`drawing` -> `drawing_fills`
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),
ChengduLittleA marked this conversation as resolved Outdated

drawing -> drawing_lines

`drawing` -> `drawing_lines`
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),
ChengduLittleA marked this conversation as resolved Outdated

frame_color -> frame_fills

And frame_lines needs to index the drawing_lines which is 1.

`frame_color` -> `frame_fills` And `frame_lines` needs to index the `drawing_lines` which is `1`.
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),
filedescriptor marked this conversation as resolved Outdated

This layer should be called "Fills". layer_color -> layer_fills

This layer should be called "Fills". `layer_color` -> `layer_fills`
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),
filedescriptor marked this conversation as resolved Outdated

I think there is a misconception of what a drawing is. Think of a drawing like a bGPDFrame. We don't need 28 keyframes, we just need 2. One for the "Fills" layer and one for the "Lines" layer.

All of the fills go into the first drawing and all of the lines go into the second drawing.

I think there is a misconception of what a drawing is. Think of a drawing like a `bGPDFrame`. We don't need 28 keyframes, we just need 2. One for the "Fills" layer and one for the "Lines" layer. All of the fills go into the first drawing and all of the lines go into the second drawing.
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<float, 700> 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<float, 700> 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<int, 14> monkey_fill_offsets({ 0,
270, 303, 321, 385, 418, 482, 515, 533, 582, 615, 664, 682,
700,
});
static std::array<float3, 516> 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<float, 516> 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<float, 516> 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<int, 16> monkey_line_offsets({ 0,
33, 66, 131, 165, 198, 231, 265, 298, 362, 388, 414, 447,
465, 483, 516,
});
static const std::array<int, 15> monkey_line_influence({
60, 60, 60, 60, 60, 40, 40, 60, 60, 60, 60, 60, 40, 40, 60,
});
static const std::array<int, 13> 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<GreasePencil *>(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<int, 15> 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<int, 13> 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<GreasePencilDrawing *>(
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<GreasePencilDrawing *>(
grease_pencil.drawings_for_write()[1]);
drawing_fills->geometry.wrap() = create_drawing_data(monkey_fill_pos,
monkey_fill_rad,
ChengduLittleA marked this conversation as resolved
Review

Looks like the formatting for this file didn't work.

Looks like the formatting for this file didn't work.
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

View File

@ -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);
ChengduLittleA marked this conversation as resolved Outdated

Typo from me 😅 frame_number

Typo from me 😅 `frame_number`
} // namespace blender::ed::greasepencil
#endif

View File

@ -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: {