There is a corner case where one side of a quad needs splitting and the other side has only one segment. Previously this would produce either gaps or after recent changes to stitch together geometry, uninitialized memory. Now solve this by splitting into triangular patches, as suggested in the DiagSplit paper. These triangular patches can be further subdivided themselves. Dicing has special cases for 1 or 2 segments on edges. For more segments it works the same as: quad dicing: A regular inner triangle grid stitched to the outer edges. Fix #136973: Inconsistent results with adaptive subdivision Pull Request: https://projects.blender.org/blender/blender/pulls/139062
18 lines
303 B
C++
18 lines
303 B
C++
/* SPDX-FileCopyrightText: 2011-2022 Blender Foundation
|
|
*
|
|
* SPDX-License-Identifier: Apache-2.0 */
|
|
|
|
#pragma once
|
|
|
|
#include <algorithm> // IWYU pragma: export
|
|
|
|
CCL_NAMESPACE_BEGIN
|
|
|
|
using std::remove;
|
|
using std::sort;
|
|
using std::stable_sort;
|
|
using std::swap;
|
|
using std::upper_bound;
|
|
|
|
CCL_NAMESPACE_END
|