22 class RandomNumberGenerator;
103 float approximate_density,
126 const float2 &sample_pos_re,
127 float sample_radius_re,
129 bool front_face_only,
143 const Span<T> corner_attribute)
146 corner_attribute[looptri.
tri[0]],
147 corner_attribute[looptri.
tri[1]],
148 corner_attribute[looptri.
tri[2]]);
Generic geometry attributes built on CustomData.
Span< float3 > ensure_nearest_weights()
void sample_data(const GVArray &src, eAttrDomain domain, eAttributeMapMode mode, const GMutableSpan dst)
void sample_attribute(const GAttributeReader &src_attribute, GSpanAttributeWriter &dst_attribute, eAttributeMapMode mode)
Span< float3 > ensure_barycentric_coords()
MeshAttributeInterpolator(const Mesh *mesh, const IndexMask mask, const Span< float3 > positions, const Span< int > looptri_indices)
SyclQueue void void * src
ccl_device_inline float4 mask(const int4 &mask, const float4 &a)
T mix3(const float3 &weights, const T &v0, const T &v1, const T &v2)
void sample_face_attribute(const Mesh &mesh, Span< int > looptri_indices, const GVArray &data_in, const IndexMask mask, GMutableSpan data_out)
float3 compute_bary_coord_in_triangle(const Mesh &mesh, const MLoopTri &looptri, const float3 &position)
void sample_point_attribute(const Mesh &mesh, Span< int > looptri_indices, Span< float3 > bary_coords, const GVArray &data_in, const IndexMask mask, GMutableSpan data_out)
T sample_corner_attrribute_with_bary_coords(const float3 &bary_weights, const MLoopTri &looptri, const Span< T > corner_attribute)
int sample_surface_points_spherical(RandomNumberGenerator &rng, const Mesh &mesh, Span< int > looptri_indices_to_sample, const float3 &sample_pos, float sample_radius, float approximate_density, Vector< float3 > &r_bary_coords, Vector< int > &r_looptri_indices, Vector< float3 > &r_positions)
int sample_surface_points_projected(RandomNumberGenerator &rng, const Mesh &mesh, BVHTreeFromMesh &mesh_bvhtree, const float2 &sample_pos_re, float sample_radius_re, FunctionRef< void(const float2 &pos_re, float3 &r_start, float3 &r_end)> region_position_to_ray, bool front_face_only, int tries_num, int max_points, Vector< float3 > &r_bary_coords, Vector< int > &r_looptri_indices, Vector< float3 > &r_positions)
void sample_corner_attribute(const Mesh &mesh, Span< int > looptri_indices, Span< float3 > bary_coords, const GVArray &data_in, const IndexMask mask, GMutableSpan data_out)
MutableSpan< float3 > positions