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
49 lines
1.6 KiB
C++
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
|