diff --git a/generators/graph/range_utility.cpp b/generators/graph/range_utility.cpp index 8a09eefe..23e405cc 100644 --- a/generators/graph/range_utility.cpp +++ b/generators/graph/range_utility.cpp @@ -11,12 +11,12 @@ using namespace math; void get_curve_monotonic_sections(Curve &curve, std::vector §ions) { const int res = curve.get_bake_resolution(); - float prev_y = curve.interpolate_baked(0.f); + float prev_y = curve.sample_baked(0.f); sections.clear(); CurveMonotonicSection section; section.x_min = 0.f; - section.y_min = curve.interpolate_baked(0.f); + section.y_min = curve.sample_baked(0.f); float prev_x = 0.f; bool current_stationary = true; @@ -24,7 +24,7 @@ void get_curve_monotonic_sections(Curve &curve, std::vector(i) / res; - const float y = curve.interpolate_baked(x); + const float y = curve.sample_baked(x); // Curve can sometimes appear flat but it still oscillates by very small amounts due to float imprecision // which occurred during bake(). Attempting to workaround that by taking the error into account const bool increasing = y > prev_y + CURVE_RANGE_MARGIN; @@ -65,21 +65,21 @@ Interval get_curve_range(Curve &curve, const std::vector unsigned int i = 0; if (x.min < sections[0].x_min) { // X range starts before the curve's minimum X - y = Interval::from_single_value(curve.interpolate_baked(0.f)); + y = Interval::from_single_value(curve.sample_baked(0.f)); } else { // Find section from where the range starts for (; i < sections.size(); ++i) { const CurveMonotonicSection §ion = sections[i]; if (x.min >= section.x_min) { - const float begin_y = curve.interpolate_baked(x.min); + const float begin_y = curve.sample_baked(x.min); if (x.max < section.x_max) { // X range starts and ends in that section - return Interval::from_unordered_values(begin_y, curve.interpolate_baked(x.max)) + return Interval::from_unordered_values(begin_y, curve.sample_baked(x.max)) .padded(CURVE_RANGE_MARGIN); } else { // X range starts in that section, and continues after it. // Will need to keep iterating, starting from here - y = Interval::from_unordered_values(begin_y, curve.interpolate_baked(section.x_max)); + y = Interval::from_unordered_values(begin_y, curve.sample_baked(section.x_max)); ++i; break; } @@ -93,7 +93,7 @@ Interval get_curve_range(Curve &curve, const std::vector y.add_interval(Interval::from_unordered_values(section.y_min, section.y_max)); } else { // X range ends in that section - y.add_interval(Interval::from_unordered_values(section.y_min, curve.interpolate_baked(x.max))); + y.add_interval(Interval::from_unordered_values(section.y_min, curve.sample_baked(x.max))); break; } } @@ -104,12 +104,12 @@ Interval get_curve_range(Curve &curve, bool &is_monotonic_increasing) { // TODO Would be nice to have the cache directly const int res = curve.get_bake_resolution(); Interval range; - float prev_v = curve.interpolate_baked(0.f); - if (curve.interpolate_baked(1.f) > prev_v) { + float prev_v = curve.sample_baked(0.f); + if (curve.sample_baked(1.f) > prev_v) { is_monotonic_increasing = true; } for (int i = 0; i < res; ++i) { - const float v = curve.interpolate_baked(static_cast(i) / res); + const float v = curve.sample_baked(static_cast(i) / res); range.add_point(v); if (v < prev_v) { is_monotonic_increasing = false; diff --git a/generators/graph/voxel_graph_node_db.cpp b/generators/graph/voxel_graph_node_db.cpp index 0ee5049d..fbe88ede 100644 --- a/generators/graph/voxel_graph_node_db.cpp +++ b/generators/graph/voxel_graph_node_db.cpp @@ -1033,14 +1033,14 @@ VoxelGraphNodeDB::VoxelGraphNodeDB() { VoxelGraphRuntime::Buffer &out = ctx.get_output(0); const Params p = ctx.get_params(); for (uint32_t i = 0; i < out.size; ++i) { - out.data[i] = p.curve->interpolate_baked(a.data[i]); + out.data[i] = p.curve->sample_baked(a.data[i]); } }; t.range_analysis_func = [](RangeAnalysisContext &ctx) { const Interval a = ctx.get_input(0); const Params p = ctx.get_params(); if (a.is_single_value()) { - const float v = p.curve->interpolate_baked(a.min); + const float v = p.curve->sample_baked(a.min); ctx.set_output(0, Interval::from_single_value(v)); } else { const Interval r = get_curve_range(*p.curve, p.curve_range_data->sections, a); diff --git a/generators/simple/voxel_generator_noise_2d.cpp b/generators/simple/voxel_generator_noise_2d.cpp index 2e7b0240..947e26a2 100644 --- a/generators/simple/voxel_generator_noise_2d.cpp +++ b/generators/simple/voxel_generator_noise_2d.cpp @@ -81,8 +81,7 @@ VoxelGenerator::Result VoxelGeneratorNoise2D::generate_block(VoxelGenerator::Vox Curve &curve = **params.curve; result = VoxelGeneratorHeightmap::generate( out_buffer, - [&noise, &curve]( - int x, int z) { return curve.interpolate_baked(0.5 + 0.5 * noise.get_noise_2d(x, z)); }, + [&noise, &curve](int x, int z) { return curve.sample_baked(0.5 + 0.5 * noise.get_noise_2d(x, z)); }, input.origin_in_voxels, input.lod); } @@ -114,7 +113,7 @@ void VoxelGeneratorNoise2D::generate_series(Span positions_x, Span< Curve &curve = **params.curve; generate_series_template( [&noise, &curve](float x, float z) { // - return curve.interpolate_baked(0.5 + 0.5 * noise.get_noise_2d(x, z)); + return curve.sample_baked(0.5 + 0.5 * noise.get_noise_2d(x, z)); }, positions_x, positions_y, positions_z, channel, out_values, min_pos, max_pos); } diff --git a/tests/tests.cpp b/tests/tests.cpp index 4fc0f180..7e897edd 100644 --- a/tests/tests.cpp +++ b/tests/tests.cpp @@ -1190,7 +1190,7 @@ void test_get_curve_monotonic_sections() { { math::Interval xi(0.2f, 0.8f); math::Interval yi = get_curve_range(**curve, sections, xi); - math::Interval yi_expected(curve->interpolate_baked(xi.min), curve->interpolate_baked(xi.max)); + math::Interval yi_expected(curve->sample_baked(xi.min), curve->sample_baked(xi.max)); ZYLANN_TEST_ASSERT(L::is_equal_approx(yi.min, yi_expected.min)); ZYLANN_TEST_ASSERT(L::is_equal_approx(yi.max, yi_expected.max)); }