Changeset View
Changeset View
Standalone View
Standalone View
source/blender/nodes/intern/node_tree_multi_function.cc
| Show First 20 Lines • Show All 160 Lines • ▼ Show 20 Lines | |||||
| static DataTypeConversions create_implicit_conversions() | static DataTypeConversions create_implicit_conversions() | ||||
| { | { | ||||
| DataTypeConversions conversions; | DataTypeConversions conversions; | ||||
| add_implicit_conversion<float, float2>(conversions); | add_implicit_conversion<float, float2>(conversions); | ||||
| add_implicit_conversion<float, float3>(conversions); | add_implicit_conversion<float, float3>(conversions); | ||||
| add_implicit_conversion<float, int32_t>(conversions); | add_implicit_conversion<float, int32_t>(conversions); | ||||
| add_implicit_conversion<float, bool>( | add_implicit_conversion<float, bool>( | ||||
| conversions, "float to boolean", [](float a) { return a > 0.0f; }); | conversions, "float to boolean", [](float a) { return a > 0.0f; }); | ||||
| add_implicit_conversion<float, Color4f>( | add_implicit_conversion<float, ColorGeometry>( | ||||
| conversions, "float to Color4f", [](float a) { return Color4f(a, a, a, 1.0f); }); | conversions, "float to ColorGeometry", [](float a) { return ColorGeometry(a, a, a, 1.0f); }); | ||||
| add_implicit_conversion<float2, float3>( | add_implicit_conversion<float2, float3>( | ||||
| conversions, "float2 to float3", [](float2 a) { return float3(a.x, a.y, 0.0f); }); | conversions, "float2 to float3", [](float2 a) { return float3(a.x, a.y, 0.0f); }); | ||||
| add_implicit_conversion<float2, float>( | add_implicit_conversion<float2, float>( | ||||
| conversions, "float2 to float", [](float2 a) { return (a.x + a.y) / 2.0f; }); | conversions, "float2 to float", [](float2 a) { return (a.x + a.y) / 2.0f; }); | ||||
| add_implicit_conversion<float2, int32_t>( | add_implicit_conversion<float2, int32_t>( | ||||
| conversions, "float2 to int32_t", [](float2 a) { return (int32_t)((a.x + a.y) / 2.0f); }); | conversions, "float2 to int32_t", [](float2 a) { return (int32_t)((a.x + a.y) / 2.0f); }); | ||||
| add_implicit_conversion<float2, bool>( | add_implicit_conversion<float2, bool>( | ||||
| conversions, "float2 to bool", [](float2 a) { return !is_zero_v2(a); }); | conversions, "float2 to bool", [](float2 a) { return !is_zero_v2(a); }); | ||||
| add_implicit_conversion<float2, Color4f>( | add_implicit_conversion<float2, ColorGeometry>( | ||||
| conversions, "float2 to Color4f", [](float2 a) { return Color4f(a.x, a.y, 0.0f, 1.0f); }); | conversions, "float2 to ColorGeometry", [](float2 a) { | ||||
| return ColorGeometry(a.x, a.y, 0.0f, 1.0f); | |||||
| }); | |||||
| add_implicit_conversion<float3, bool>( | add_implicit_conversion<float3, bool>( | ||||
| conversions, "float3 to boolean", [](float3 a) { return !is_zero_v3(a); }); | conversions, "float3 to boolean", [](float3 a) { return !is_zero_v3(a); }); | ||||
| add_implicit_conversion<float3, float>( | add_implicit_conversion<float3, float>( | ||||
| conversions, "float3 to float", [](float3 a) { return (a.x + a.y + a.z) / 3.0f; }); | conversions, "float3 to float", [](float3 a) { return (a.x + a.y + a.z) / 3.0f; }); | ||||
| add_implicit_conversion<float3, int32_t>( | add_implicit_conversion<float3, int32_t>( | ||||
| conversions, "float3 to int32_t", [](float3 a) { return (int)((a.x + a.y + a.z) / 3.0f); }); | conversions, "float3 to int32_t", [](float3 a) { return (int)((a.x + a.y + a.z) / 3.0f); }); | ||||
| add_implicit_conversion<float3, float2>(conversions); | add_implicit_conversion<float3, float2>(conversions); | ||||
| add_implicit_conversion<float3, Color4f>( | add_implicit_conversion<float3, ColorGeometry>( | ||||
| conversions, "float3 to Color4f", [](float3 a) { return Color4f(a.x, a.y, a.z, 1.0f); }); | conversions, "float3 to ColorGeometry", [](float3 a) { | ||||
| return ColorGeometry(a.x, a.y, a.z, 1.0f); | |||||
| }); | |||||
| add_implicit_conversion<int32_t, bool>( | add_implicit_conversion<int32_t, bool>( | ||||
| conversions, "int32 to boolean", [](int32_t a) { return a > 0; }); | conversions, "int32 to boolean", [](int32_t a) { return a > 0; }); | ||||
| add_implicit_conversion<int32_t, float>(conversions); | add_implicit_conversion<int32_t, float>(conversions); | ||||
| add_implicit_conversion<int32_t, float2>( | add_implicit_conversion<int32_t, float2>( | ||||
| conversions, "int32 to float2", [](int32_t a) { return float2((float)a); }); | conversions, "int32 to float2", [](int32_t a) { return float2((float)a); }); | ||||
| add_implicit_conversion<int32_t, float3>( | add_implicit_conversion<int32_t, float3>( | ||||
| conversions, "int32 to float3", [](int32_t a) { return float3((float)a); }); | conversions, "int32 to float3", [](int32_t a) { return float3((float)a); }); | ||||
| add_implicit_conversion<int32_t, Color4f>(conversions, "int32 to Color4f", [](int32_t a) { | add_implicit_conversion<int32_t, ColorGeometry>( | ||||
| return Color4f((float)a, (float)a, (float)a, 1.0f); | conversions, "int32 to ColorGeometry", [](int32_t a) { | ||||
| return ColorGeometry((float)a, (float)a, (float)a, 1.0f); | |||||
| }); | }); | ||||
| add_implicit_conversion<bool, float>(conversions); | add_implicit_conversion<bool, float>(conversions); | ||||
| add_implicit_conversion<bool, int32_t>(conversions); | add_implicit_conversion<bool, int32_t>(conversions); | ||||
| add_implicit_conversion<bool, float2>( | add_implicit_conversion<bool, float2>( | ||||
| conversions, "boolean to float2", [](bool a) { return (a) ? float2(1.0f) : float2(0.0f); }); | conversions, "boolean to float2", [](bool a) { return (a) ? float2(1.0f) : float2(0.0f); }); | ||||
| add_implicit_conversion<bool, float3>( | add_implicit_conversion<bool, float3>( | ||||
| conversions, "boolean to float3", [](bool a) { return (a) ? float3(1.0f) : float3(0.0f); }); | conversions, "boolean to float3", [](bool a) { return (a) ? float3(1.0f) : float3(0.0f); }); | ||||
| add_implicit_conversion<bool, Color4f>(conversions, "boolean to Color4f", [](bool a) { | add_implicit_conversion<bool, ColorGeometry>( | ||||
| return (a) ? Color4f(1.0f, 1.0f, 1.0f, 1.0f) : Color4f(0.0f, 0.0f, 0.0f, 1.0f); | conversions, "boolean to ColorGeometry", [](bool a) { | ||||
| return (a) ? ColorGeometry(1.0f, 1.0f, 1.0f, 1.0f) : ColorGeometry(0.0f, 0.0f, 0.0f, 1.0f); | |||||
| }); | }); | ||||
| add_implicit_conversion<Color4f, bool>( | add_implicit_conversion<ColorGeometry, bool>( | ||||
| conversions, "Color4f to boolean", [](Color4f a) { return rgb_to_grayscale(a) > 0.0f; }); | conversions, "ColorGeometry to boolean", [](ColorGeometry a) { | ||||
| add_implicit_conversion<Color4f, float>( | return rgb_to_grayscale(a) > 0.0f; | ||||
| conversions, "Color4f to float", [](Color4f a) { return rgb_to_grayscale(a); }); | }); | ||||
| add_implicit_conversion<Color4f, float2>( | add_implicit_conversion<ColorGeometry, float>( | ||||
| conversions, "Color4f to float2", [](Color4f a) { return float2(a.r, a.g); }); | conversions, "ColorGeometry to float", [](ColorGeometry a) { return rgb_to_grayscale(a); }); | ||||
| add_implicit_conversion<Color4f, float3>( | add_implicit_conversion<ColorGeometry, float2>( | ||||
| conversions, "Color4f to float3", [](Color4f a) { return float3(a.r, a.g, a.b); }); | conversions, "ColorGeometry to float2", [](ColorGeometry a) { return float2(a.r, a.g); }); | ||||
| add_implicit_conversion<ColorGeometry, float3>( | |||||
| conversions, "ColorGeometry to float3", [](ColorGeometry a) { | |||||
| return float3(a.r, a.g, a.b); | |||||
| }); | |||||
| return conversions; | return conversions; | ||||
| } | } | ||||
| const DataTypeConversions &get_implicit_type_conversions() | const DataTypeConversions &get_implicit_type_conversions() | ||||
| { | { | ||||
| static const DataTypeConversions conversions = create_implicit_conversions(); | static const DataTypeConversions conversions = create_implicit_conversions(); | ||||
| return conversions; | return conversions; | ||||
| ▲ Show 20 Lines • Show All 282 Lines • Show Last 20 Lines | |||||