Changeset View
Changeset View
Standalone View
Standalone View
source/blender/nodes/NOD_math_functions.hh
| Show First 20 Lines • Show All 260 Lines • ▼ Show 20 Lines | switch (operation) { | ||||
| case NODE_VECTOR_MATH_DIVIDE: | case NODE_VECTOR_MATH_DIVIDE: | ||||
| return dispatch([](float3 a, float3 b) { | return dispatch([](float3 a, float3 b) { | ||||
| return float3(safe_divide(a.x, b.x), safe_divide(a.y, b.y), safe_divide(a.z, b.z)); | return float3(safe_divide(a.x, b.x), safe_divide(a.y, b.y), safe_divide(a.z, b.z)); | ||||
| }); | }); | ||||
| case NODE_VECTOR_MATH_CROSS_PRODUCT: | case NODE_VECTOR_MATH_CROSS_PRODUCT: | ||||
| return dispatch([](float3 a, float3 b) { return float3::cross_high_precision(a, b); }); | return dispatch([](float3 a, float3 b) { return float3::cross_high_precision(a, b); }); | ||||
| case NODE_VECTOR_MATH_PROJECT: | case NODE_VECTOR_MATH_PROJECT: | ||||
| return dispatch([](float3 a, float3 b) { | return dispatch([](float3 a, float3 b) { | ||||
| float length_squared = float3::dot(a, b); | float length_squared = float3::dot(b, b); | ||||
| return (length_squared != 0.0) ? (float3::dot(a, b) / length_squared) * b : float3(0.0f); | return (length_squared != 0.0) ? (float3::dot(a, b) / length_squared) * b : float3(0.0f); | ||||
| }); | }); | ||||
| case NODE_VECTOR_MATH_REFLECT: | case NODE_VECTOR_MATH_REFLECT: | ||||
| return dispatch([](float3 a, float3 b) { | return dispatch([](float3 a, float3 b) { | ||||
| b.normalize(); | b.normalize(); | ||||
| return a.reflected(b); | return a.reflected(b); | ||||
| }); | }); | ||||
| case NODE_VECTOR_MATH_SNAP: | case NODE_VECTOR_MATH_SNAP: | ||||
| ▲ Show 20 Lines • Show All 213 Lines • Show Last 20 Lines | |||||