Files
test2/source/blender/blenkernel/BKE_subdiv_mesh.hh
Brecht Van Lommel 920e709069 Refactor: Make header files more clangd and clang-tidy friendly
When using clangd or running clang-tidy on headers there are
currently many errors. These are noisy in IDEs, make auto fixes
impossible, and break features like code completion, refactoring
and navigation.

This makes source/blender headers work by themselves, which is
generally the goal anyway. But #includes and forward declarations
were often incomplete.

* Add #includes and forward declarations
* Add IWYU pragma: export in a few places
* Remove some unused #includes (but there are many more)
* Tweak ShaderCreateInfo macros to work better with clangd

Some types of headers still have errors, these could be fixed or
worked around with more investigation. Mostly preprocessor
template headers like NOD_static_types.h.

Note that that disabling WITH_UNITY_BUILD is required for clangd to
work properly, otherwise compile_commands.json does not contain
the information for the relevant source files.

For more details see the developer docs:
https://developer.blender.org/docs/handbook/tooling/clangd/

Pull Request: https://projects.blender.org/blender/blender/pulls/132608
2025-01-07 12:39:13 +01:00

49 lines
1.6 KiB
C++

/* SPDX-FileCopyrightText: 2018 Blender Authors
*
* SPDX-License-Identifier: GPL-2.0-or-later */
/** \file
* \ingroup bke
*/
#pragma once
#include "BLI_math_vector_types.hh"
#include "BLI_offset_indices.hh"
struct Mesh;
namespace blender::bke::subdiv {
struct Subdiv;
struct ToMeshSettings {
/**
* Resolution at which regular PTEX (created for quad face) are being
* evaluated. This defines how many vertices final mesh will have: every
* regular PTEX has resolution^2 vertices. Special (irregular, or PTEX
* created for a corner of non-quad face) will have resolution of
* `resolution - 1`.
*/
int resolution;
/** When true, only edges emitted from coarse ones will be displayed. */
bool use_optimal_display;
};
/** Create real hi-res mesh from subdivision, all geometry is "real". */
Mesh *subdiv_to_mesh(Subdiv *subdiv, const ToMeshSettings *settings, const Mesh *coarse_mesh);
/**
* Interpolate a position along the `coarse_edge` at the relative `u` coordinate.
* If `is_simple` is false, this will perform a B-Spline interpolation using the edge neighbors,
* otherwise a linear interpolation will be done base on the edge vertices.
*/
float3 mesh_interpolate_position_on_edge(Span<float3> coarse_positions,
Span<int2> coarse_edges,
GroupedSpan<int> vert_to_edge_map,
int coarse_edge_index,
bool is_simple,
float u);
} // namespace blender::bke::subdiv