forked from blender/blender
main sync #3
@ -81,7 +81,7 @@ class DeviceInfo {
|
|||||||
bool has_gpu_queue; /* Device supports GPU queue. */
|
bool has_gpu_queue; /* Device supports GPU queue. */
|
||||||
bool use_metalrt; /* Use MetalRT to accelerate ray queries (Metal only). */
|
bool use_metalrt; /* Use MetalRT to accelerate ray queries (Metal only). */
|
||||||
KernelOptimizationLevel kernel_optimization_level; /* Optimization level applied to path tracing
|
KernelOptimizationLevel kernel_optimization_level; /* Optimization level applied to path tracing
|
||||||
kernels (Metal only). */
|
* kernels (Metal only). */
|
||||||
DenoiserTypeMask denoisers; /* Supported denoiser types. */
|
DenoiserTypeMask denoisers; /* Supported denoiser types. */
|
||||||
int cpu_threads;
|
int cpu_threads;
|
||||||
vector<DeviceInfo> multi_devices;
|
vector<DeviceInfo> multi_devices;
|
||||||
|
@ -202,7 +202,7 @@ ccl_device float2 direction_to_mirrorball(float3 dir)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* Single face of a equiangular cube map projection as described in
|
/* Single face of a equiangular cube map projection as described in
|
||||||
https://blog.google/products/google-ar-vr/bringing-pixels-front-and-center-vr-video/ */
|
* https://blog.google/products/google-ar-vr/bringing-pixels-front-and-center-vr-video/ */
|
||||||
ccl_device float3 equiangular_cubemap_face_to_direction(float u, float v)
|
ccl_device float3 equiangular_cubemap_face_to_direction(float u, float v)
|
||||||
{
|
{
|
||||||
u = (1.0f - u);
|
u = (1.0f - u);
|
||||||
|
@ -1076,7 +1076,8 @@ ccl_device VolumeIntegrateEvent volume_integrate(KernelGlobals kg,
|
|||||||
/* If the direct scatter event is generated using VOLUME_SAMPLE_EQUIANGULAR the direct
|
/* If the direct scatter event is generated using VOLUME_SAMPLE_EQUIANGULAR the direct
|
||||||
* event will happen at a separate position as the indirect event and the direct light
|
* event will happen at a separate position as the indirect event and the direct light
|
||||||
* contribution will contribute to the position of the current/previous path segment. The
|
* contribution will contribute to the position of the current/previous path segment. The
|
||||||
* unlit_throughput has to be adjusted to include the scattering at the previous segment.*/
|
* unlit_throughput has to be adjusted to include the scattering at the previous segment.
|
||||||
|
*/
|
||||||
float3 scatterEval = one_float3();
|
float3 scatterEval = one_float3();
|
||||||
if (state->guiding.path_segment) {
|
if (state->guiding.path_segment) {
|
||||||
pgl_vec3f scatteringWeight = state->guiding.path_segment->scatteringWeight;
|
pgl_vec3f scatteringWeight = state->guiding.path_segment->scatteringWeight;
|
||||||
|
@ -133,21 +133,26 @@ void BKE_curvemapping_table_RGBA(const struct CurveMapping *cumap, float **array
|
|||||||
void BKE_curvemapping_get_range_minimums(const struct CurveMapping *curve_mapping,
|
void BKE_curvemapping_get_range_minimums(const struct CurveMapping *curve_mapping,
|
||||||
float minimums[4]);
|
float minimums[4]);
|
||||||
|
|
||||||
/** Get the reciprocal of the difference between the maximum and the minimum x value of each curve
|
/**
|
||||||
|
* Get the reciprocal of the difference between the maximum and the minimum x value of each curve
|
||||||
* map table. Evaluation parameters can be multiplied by this value to be normalized. If the
|
* map table. Evaluation parameters can be multiplied by this value to be normalized. If the
|
||||||
* difference is zero, 1^8 is returned. */
|
* difference is zero, 1^8 is returned.
|
||||||
|
*/
|
||||||
void BKE_curvemapping_compute_range_dividers(const struct CurveMapping *curve_mapping,
|
void BKE_curvemapping_compute_range_dividers(const struct CurveMapping *curve_mapping,
|
||||||
float dividers[4]);
|
float dividers[4]);
|
||||||
|
|
||||||
/** Compute the slopes at the start and end points of each curve map. The slopes are multiplied by
|
/**
|
||||||
|
* Compute the slopes at the start and end points of each curve map. The slopes are multiplied by
|
||||||
* the range of the curve map to compensate for parameter normalization. If the slope is vertical,
|
* the range of the curve map to compensate for parameter normalization. If the slope is vertical,
|
||||||
* 1^8 is returned. */
|
* 1^8 is returned.
|
||||||
|
*/
|
||||||
void BKE_curvemapping_compute_slopes(const struct CurveMapping *curve_mapping,
|
void BKE_curvemapping_compute_slopes(const struct CurveMapping *curve_mapping,
|
||||||
float start_slopes[4],
|
float start_slopes[4],
|
||||||
float end_slopes[4]);
|
float end_slopes[4]);
|
||||||
|
|
||||||
/** Check if the curve map at the index is identity, that is, does nothing. A curve map is said to
|
/**
|
||||||
* be identity if:
|
* Check if the curve map at the index is identity, that is, does nothing.
|
||||||
|
* A curve map is said to be identity if:
|
||||||
* - The curve mapping uses extrapolation.
|
* - The curve mapping uses extrapolation.
|
||||||
* - Its range is 1.
|
* - Its range is 1.
|
||||||
* - The slope at its start point is 1.
|
* - The slope at its start point is 1.
|
||||||
|
@ -139,11 +139,15 @@ enum {
|
|||||||
/** Do not process ID pointers inside embedded IDs. Needed by depsgraph processing e.g. */
|
/** Do not process ID pointers inside embedded IDs. Needed by depsgraph processing e.g. */
|
||||||
IDWALK_IGNORE_EMBEDDED_ID = (1 << 3),
|
IDWALK_IGNORE_EMBEDDED_ID = (1 << 3),
|
||||||
|
|
||||||
/** Also process internal ID pointers like `ID.newid` or `ID.orig_id`.
|
/**
|
||||||
* WARNING: Dangerous, use with caution. */
|
* Also process internal ID pointers like `ID.newid` or `ID.orig_id`.
|
||||||
|
* WARNING: Dangerous, use with caution.
|
||||||
|
*/
|
||||||
IDWALK_DO_INTERNAL_RUNTIME_POINTERS = (1 << 9),
|
IDWALK_DO_INTERNAL_RUNTIME_POINTERS = (1 << 9),
|
||||||
/** Also process the ID.lib pointer. It is an option because this pointer can usually be fully
|
/**
|
||||||
ignored. */
|
* Also process the ID.lib pointer. It is an option because this pointer can usually be fully
|
||||||
|
* ignored.
|
||||||
|
*/
|
||||||
IDWALK_DO_LIBRARY_POINTER = (1 << 10),
|
IDWALK_DO_LIBRARY_POINTER = (1 << 10),
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -410,7 +410,7 @@ void BKE_curve_init(Curve *cu, const short curve_type)
|
|||||||
}
|
}
|
||||||
cu->bevel_profile = nullptr;
|
cu->bevel_profile = nullptr;
|
||||||
/* Initialize the offset to 1.0, to compensate for it being set to -1.0
|
/* Initialize the offset to 1.0, to compensate for it being set to -1.0
|
||||||
in the property getter. */
|
* in the property getter. */
|
||||||
cu->offset = 1.0f;
|
cu->offset = 1.0f;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -589,7 +589,7 @@ static bool get_fcurve_end_keyframes(const FCurve *fcu,
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* The binary search returns an index where a keyframe would be inserted,
|
/* The binary search returns an index where a keyframe would be inserted,
|
||||||
so it needs to be clamped to ensure it is in range of the array. */
|
* so it needs to be clamped to ensure it is in range of the array. */
|
||||||
first_index = clamp_i(first_index, 0, fcu->totvert - 1);
|
first_index = clamp_i(first_index, 0, fcu->totvert - 1);
|
||||||
last_index = clamp_i(last_index - 1, 0, fcu->totvert - 1);
|
last_index = clamp_i(last_index - 1, 0, fcu->totvert - 1);
|
||||||
}
|
}
|
||||||
|
@ -1275,9 +1275,8 @@ bGPDframe *BKE_gpencil_layer_frame_get(bGPDlayer *gpl, int cframe, eGP_GetFrame_
|
|||||||
gpl->actframe = gpf;
|
gpl->actframe = gpf;
|
||||||
}
|
}
|
||||||
else if (addnew == GP_GETFRAME_ADD_COPY) {
|
else if (addnew == GP_GETFRAME_ADD_COPY) {
|
||||||
/* The frame_addcopy function copies the active frame of gpl,
|
/* The #BKE_gpencil_frame_addcopy function copies the active frame of gpl,
|
||||||
so we need to set the active frame before copying.
|
* so we need to set the active frame before copying. */
|
||||||
*/
|
|
||||||
gpl->actframe = gpf;
|
gpl->actframe = gpf;
|
||||||
gpl->actframe = BKE_gpencil_frame_addcopy(gpl, cframe);
|
gpl->actframe = BKE_gpencil_frame_addcopy(gpl, cframe);
|
||||||
}
|
}
|
||||||
@ -1306,9 +1305,8 @@ bGPDframe *BKE_gpencil_layer_frame_get(bGPDlayer *gpl, int cframe, eGP_GetFrame_
|
|||||||
gpl->actframe = gpf;
|
gpl->actframe = gpf;
|
||||||
}
|
}
|
||||||
else if (addnew == GP_GETFRAME_ADD_COPY) {
|
else if (addnew == GP_GETFRAME_ADD_COPY) {
|
||||||
/* The frame_addcopy function copies the active frame of gpl;
|
/* The #BKE_gpencil_frame_addcopy function copies the active frame of gpl;
|
||||||
so we need to set the active frame before copying.
|
* so we need to set the active frame before copying. */
|
||||||
*/
|
|
||||||
gpl->actframe = gpf;
|
gpl->actframe = gpf;
|
||||||
gpl->actframe = BKE_gpencil_frame_addcopy(gpl, cframe);
|
gpl->actframe = BKE_gpencil_frame_addcopy(gpl, cframe);
|
||||||
}
|
}
|
||||||
|
@ -2803,8 +2803,7 @@ static void sculpt_attribute_update_refs(Object *ob)
|
|||||||
{
|
{
|
||||||
SculptSession *ss = ob->sculpt;
|
SculptSession *ss = ob->sculpt;
|
||||||
|
|
||||||
/* run twice, in case sculpt_attr_update had to recreate a layer and
|
/* Run twice, in case sculpt_attr_update had to recreate a layer and messed up #BMesh offsets. */
|
||||||
messed up the bmesh offsets. */
|
|
||||||
for (int i = 0; i < 2; i++) {
|
for (int i = 0; i < 2; i++) {
|
||||||
for (int j = 0; j < SCULPT_MAX_ATTRIBUTES; j++) {
|
for (int j = 0; j < SCULPT_MAX_ATTRIBUTES; j++) {
|
||||||
SculptAttribute *attr = ss->temp_attributes + j;
|
SculptAttribute *attr = ss->temp_attributes + j;
|
||||||
|
@ -586,7 +586,7 @@ static const AVCodec *get_av1_encoder(
|
|||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
/* Is not a square num, set greater side based on longer side, or use a square if both
|
/* Is not a square num, set greater side based on longer side, or use a square if both
|
||||||
sides are equal. */
|
* sides are equal. */
|
||||||
int sqrt_p2 = power_of_2_min_i(threads_sqrt);
|
int sqrt_p2 = power_of_2_min_i(threads_sqrt);
|
||||||
if (sqrt_p2 < 2) {
|
if (sqrt_p2 < 2) {
|
||||||
/* Ensure a default minimum. */
|
/* Ensure a default minimum. */
|
||||||
|
@ -30,7 +30,7 @@ namespace blender::compositor {
|
|||||||
* - Distance between the center of the image and the pixel to be evaluated.
|
* - Distance between the center of the image and the pixel to be evaluated.
|
||||||
* - Distance between the center of the image and the outer-edge.
|
* - Distance between the center of the image and the outer-edge.
|
||||||
* - Distance between the center of the image and the inner-edge.
|
* - Distance between the center of the image and the inner-edge.
|
||||||
|
*
|
||||||
* With a simple compare it can be detected if the evaluated pixel is between the outer and inner
|
* With a simple compare it can be detected if the evaluated pixel is between the outer and inner
|
||||||
* edge.
|
* edge.
|
||||||
*/
|
*/
|
||||||
|
@ -798,7 +798,7 @@ static void gpencil_create_extensions_radius(tGPDfill *tgpf)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* Don't check endpoint distances unless the bounding boxes of the strokes
|
/* Don't check endpoint distances unless the bounding boxes of the strokes
|
||||||
are close enough together that they can plausibly be connected. */
|
* are close enough together that they can plausibly be connected. */
|
||||||
if (!extended_bbox_overlap(gps->boundbox_min,
|
if (!extended_bbox_overlap(gps->boundbox_min,
|
||||||
gps->boundbox_max,
|
gps->boundbox_max,
|
||||||
gps2->boundbox_min,
|
gps2->boundbox_min,
|
||||||
|
@ -109,7 +109,7 @@ enum {
|
|||||||
/* Display the hover region (edge or corner) of the underlying bounding box. */
|
/* Display the hover region (edge or corner) of the underlying bounding box. */
|
||||||
ED_GIZMO_CAGE2D_STYLE_BOX = 0,
|
ED_GIZMO_CAGE2D_STYLE_BOX = 0,
|
||||||
/* Display the bounding box plus dots on four corners while hovering, usually used for
|
/* Display the bounding box plus dots on four corners while hovering, usually used for
|
||||||
transforming a 2D shape. */
|
* transforming a 2D shape. */
|
||||||
ED_GIZMO_CAGE2D_STYLE_BOX_TRANSFORM,
|
ED_GIZMO_CAGE2D_STYLE_BOX_TRANSFORM,
|
||||||
/* Display the bounding circle while hovering. */
|
/* Display the bounding circle while hovering. */
|
||||||
ED_GIZMO_CAGE2D_STYLE_CIRCLE,
|
ED_GIZMO_CAGE2D_STYLE_CIRCLE,
|
||||||
|
@ -1177,7 +1177,7 @@ void SCULPT_OT_mesh_filter(wmOperatorType *ot)
|
|||||||
ot->ui = sculpt_mesh_ui_exec;
|
ot->ui = sculpt_mesh_ui_exec;
|
||||||
|
|
||||||
/* Doesn't seem to actually be called?
|
/* Doesn't seem to actually be called?
|
||||||
Check `sculpt_mesh_filter_modal` to see where it's really called. */
|
* Check `sculpt_mesh_filter_modal` to see where it's really called. */
|
||||||
ot->cancel = sculpt_mesh_filter_cancel;
|
ot->cancel = sculpt_mesh_filter_cancel;
|
||||||
|
|
||||||
ot->flag = OPTYPE_REGISTER | OPTYPE_UNDO | OPTYPE_GRAB_CURSOR_X | OPTYPE_BLOCKING |
|
ot->flag = OPTYPE_REGISTER | OPTYPE_UNDO | OPTYPE_GRAB_CURSOR_X | OPTYPE_BLOCKING |
|
||||||
|
@ -3169,13 +3169,12 @@ static void uv_map_mirror(BMFace *efa,
|
|||||||
* than 0.5 units in the *u* coordinate.
|
* than 0.5 units in the *u* coordinate.
|
||||||
* If we find such a face, we try and improve the unwrapping
|
* If we find such a face, we try and improve the unwrapping
|
||||||
* by adding (1.0, 0.0) onto some of the face's UVs.
|
* by adding (1.0, 0.0) onto some of the face's UVs.
|
||||||
|
*
|
||||||
* Note that this is only a heuristic. The property we're
|
* Note that this is only a heuristic. The property we're
|
||||||
* attempting to maintain is that the winding of the face
|
* attempting to maintain is that the winding of the face
|
||||||
* in UV space corresponds with the handedness of the face
|
* in UV space corresponds with the handedness of the face
|
||||||
* in 3D space w.r.t to the unwrapping. Even for triangles,
|
* in 3D space w.r.t to the unwrapping. Even for triangles,
|
||||||
* that property is somewhat complicated to evaluate.
|
* that property is somewhat complicated to evaluate. */
|
||||||
*/
|
|
||||||
|
|
||||||
float right_u = -1.0e30f;
|
float right_u = -1.0e30f;
|
||||||
BMLoop *l;
|
BMLoop *l;
|
||||||
|
@ -39,8 +39,8 @@ class UVAABBIsland {
|
|||||||
*
|
*
|
||||||
* In theory, alpaca_turbo should be the fastest non-trivial packer, hence the "turbo" suffix.
|
* In theory, alpaca_turbo should be the fastest non-trivial packer, hence the "turbo" suffix.
|
||||||
*
|
*
|
||||||
* Technically, the algorithm here is only O(n), In practice, to get reasonable results, the input
|
* Technically, the algorithm here is only `O(n)`, In practice, to get reasonable results,
|
||||||
* must be pre-sorted, which costs an additional O(nlogn) time complexity.
|
* the input must be pre-sorted, which costs an additional `O(nlogn)` time complexity.
|
||||||
*/
|
*/
|
||||||
static void pack_islands_alpaca_turbo(const Span<UVAABBIsland *> islands,
|
static void pack_islands_alpaca_turbo(const Span<UVAABBIsland *> islands,
|
||||||
float *r_max_u,
|
float *r_max_u,
|
||||||
@ -100,21 +100,20 @@ static float pack_islands_scale_margin(const Span<PackIsland *> islands,
|
|||||||
const float scale,
|
const float scale,
|
||||||
const float margin)
|
const float margin)
|
||||||
{
|
{
|
||||||
/* #BLI_box_pack_2d produces layouts with high packing efficiency, but has O(n^3)
|
/* #BLI_box_pack_2d produces layouts with high packing efficiency, but has `O(n^3)`
|
||||||
* time complexity, causing poor performance if there are lots of islands. See: #102843.
|
* time complexity, causing poor performance if there are lots of islands. See: #102843.
|
||||||
* #pack_islands_alpaca_turbo is designed to be the fastest packing method, O(nlogn),
|
* #pack_islands_alpaca_turbo is designed to be the fastest packing method, `O(nlogn)`,
|
||||||
* but has poor packing efficiency if the AABBs have a spread of sizes and aspect ratios.
|
* but has poor packing efficiency if the AABBs have a spread of sizes and aspect ratios.
|
||||||
* Here, we merge the best properties of both packers into one combined packer.
|
* Here, we merge the best properties of both packers into one combined packer.
|
||||||
|
*
|
||||||
* The free tuning parameter, `alpaca_cutoff` will determine how many islands are packed
|
* The free tuning parameter, `alpaca_cutoff` will determine how many islands are packed
|
||||||
* using each method.
|
* using each method.
|
||||||
|
*
|
||||||
* The current strategy is:
|
* The current strategy is:
|
||||||
* - Sort islands in size order.
|
* - Sort islands in size order.
|
||||||
* - Call #BLI_box_pack_2d on the first `alpaca_cutoff` islands.
|
* - Call #BLI_box_pack_2d on the first `alpaca_cutoff` islands.
|
||||||
* - Call #pack_islands_alpaca_turbo on the remaining islands.
|
* - Call #pack_islands_alpaca_turbo on the remaining islands.
|
||||||
* - Combine results.
|
* - Combine results.
|
||||||
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/* First, copy information from our input into the AABB structure. */
|
/* First, copy information from our input into the AABB structure. */
|
||||||
|
@ -619,7 +619,7 @@ void MTLBatch::prepare_vertex_descriptor_and_bindings(
|
|||||||
* Vertex Descriptors are required to generate a pipeline state, based on the current Batch's
|
* Vertex Descriptors are required to generate a pipeline state, based on the current Batch's
|
||||||
* buffer bindings. These bindings are a unique matching, depending on what input attributes a
|
* buffer bindings. These bindings are a unique matching, depending on what input attributes a
|
||||||
* batch has in its buffers, and those which are supported by the shader interface.
|
* batch has in its buffers, and those which are supported by the shader interface.
|
||||||
|
*
|
||||||
* We iterate through the buffers and resolve which attributes satisfy the requirements of the
|
* We iterate through the buffers and resolve which attributes satisfy the requirements of the
|
||||||
* currently bound shader. We cache this data, for a given Batch<->ShderInterface pairing in a
|
* currently bound shader. We cache this data, for a given Batch<->ShderInterface pairing in a
|
||||||
* VAO cache to avoid the need to recalculate this data. */
|
* VAO cache to avoid the need to recalculate this data. */
|
||||||
|
@ -27,7 +27,7 @@ namespace blender::gpu {
|
|||||||
* uint32_t instanceCount;
|
* uint32_t instanceCount;
|
||||||
* uint32_t vertexStart;
|
* uint32_t vertexStart;
|
||||||
* uint32_t baseInstance;
|
* uint32_t baseInstance;
|
||||||
};*/
|
* }; */
|
||||||
|
|
||||||
/* MTLDrawIndexedPrimitivesIndirectArguments --
|
/* MTLDrawIndexedPrimitivesIndirectArguments --
|
||||||
* https://developer.apple.com/documentation/metal/mtldrawindexedprimitivesindirectarguments?language=objc
|
* https://developer.apple.com/documentation/metal/mtldrawindexedprimitivesindirectarguments?language=objc
|
||||||
@ -38,7 +38,7 @@ namespace blender::gpu {
|
|||||||
* uint32_t indexStart;
|
* uint32_t indexStart;
|
||||||
* uint32_t baseVertex;
|
* uint32_t baseVertex;
|
||||||
* uint32_t baseInstance;
|
* uint32_t baseInstance;
|
||||||
};*/
|
* }; */
|
||||||
|
|
||||||
#define MDI_ENABLED (buffer_size_ != 0)
|
#define MDI_ENABLED (buffer_size_ != 0)
|
||||||
#define MDI_DISABLED (buffer_size_ == 0)
|
#define MDI_DISABLED (buffer_size_ == 0)
|
||||||
|
@ -23,7 +23,7 @@ void main()
|
|||||||
|
|
||||||
vec2 circle_center = vec2(circle_radius_outer - text_width, 0.5);
|
vec2 circle_center = vec2(circle_radius_outer - text_width, 0.5);
|
||||||
|
|
||||||
/* radius in icon space (1 is the icon width). */
|
/* Radius in icon space (1 is the icon width). */
|
||||||
float radius = length(mask_coord_interp - circle_center);
|
float radius = length(mask_coord_interp - circle_center);
|
||||||
float mask = smoothstep(circle_radius_inner, circle_radius_outer, radius);
|
float mask = smoothstep(circle_radius_inner, circle_radius_outer, radius);
|
||||||
|
|
||||||
|
@ -55,7 +55,7 @@ GPU_SHADER_CREATE_INFO(gpu_compute_ssbo_binding_test)
|
|||||||
.compute_source("gpu_compute_dummy_test.glsl")
|
.compute_source("gpu_compute_dummy_test.glsl")
|
||||||
.do_static_compilation(true);
|
.do_static_compilation(true);
|
||||||
|
|
||||||
/* Push constants*/
|
/* Push constants. */
|
||||||
GPU_SHADER_CREATE_INFO(gpu_push_constants_base_test)
|
GPU_SHADER_CREATE_INFO(gpu_push_constants_base_test)
|
||||||
.local_group_size(1)
|
.local_group_size(1)
|
||||||
.storage_buf(0, Qualifier::WRITE, "float", "data_out[]")
|
.storage_buf(0, Qualifier::WRITE, "float", "data_out[]")
|
||||||
|
@ -11,9 +11,9 @@ namespace blender::io::usd {
|
|||||||
|
|
||||||
void ensure_usd_plugin_path_registered()
|
void ensure_usd_plugin_path_registered()
|
||||||
{
|
{
|
||||||
/* if PXR_PYTHON_SUPPORT_ENABLED is defined, we *must* be dynamic and
|
/* If #PXR_PYTHON_SUPPORT_ENABLED is defined, we *must* be dynamic and
|
||||||
the plugins are placed relative to the USD shared library hence no
|
* the plugins are placed relative to the USD shared library hence no
|
||||||
hinting is required. */
|
* hinting is required. */
|
||||||
#ifndef PXR_PYTHON_SUPPORT_ENABLED
|
#ifndef PXR_PYTHON_SUPPORT_ENABLED
|
||||||
static bool plugin_path_registered = false;
|
static bool plugin_path_registered = false;
|
||||||
if (plugin_path_registered) {
|
if (plugin_path_registered) {
|
||||||
|
@ -36,9 +36,9 @@ std::string register_usd_plugins_for_tests()
|
|||||||
BLI_assert(path_len + 1 < FILE_MAX);
|
BLI_assert(path_len + 1 < FILE_MAX);
|
||||||
usd_datafiles_dir[path_len] = '/';
|
usd_datafiles_dir[path_len] = '/';
|
||||||
usd_datafiles_dir[path_len + 1] = '\0';
|
usd_datafiles_dir[path_len + 1] = '\0';
|
||||||
/* if PXR_PYTHON_SUPPORT_ENABLED is defined, we *must* be dynamic and
|
/* If #PXR_PYTHON_SUPPORT_ENABLED is defined, we *must* be dynamic and
|
||||||
the plugins are placed relative to the USD shared library hence no
|
* the plugins are placed relative to the USD shared library hence no
|
||||||
hinting is required. */
|
* hinting is required. */
|
||||||
#ifndef PXR_PYTHON_SUPPORT_ENABLED
|
#ifndef PXR_PYTHON_SUPPORT_ENABLED
|
||||||
pxr::PlugRegistry::GetInstance().RegisterPlugins(usd_datafiles_dir);
|
pxr::PlugRegistry::GetInstance().RegisterPlugins(usd_datafiles_dir);
|
||||||
#endif
|
#endif
|
||||||
|
@ -2390,7 +2390,7 @@ void RNA_property_boolean_set_array(PointerRNA *ptr, PropertyRNA *prop, const bo
|
|||||||
}
|
}
|
||||||
else if (idprop->subtype == IDP_INT) {
|
else if (idprop->subtype == IDP_INT) {
|
||||||
/* Support writing to integer and boolean IDProperties, since boolean
|
/* Support writing to integer and boolean IDProperties, since boolean
|
||||||
RNA properties used to be stored with integer IDProperties. */
|
* RNA properties used to be stored with integer IDProperties. */
|
||||||
int *values_dst = static_cast<int *>(IDP_Array(idprop));
|
int *values_dst = static_cast<int *>(IDP_Array(idprop));
|
||||||
for (uint i = 0; i < idprop->len; i++) {
|
for (uint i = 0; i < idprop->len; i++) {
|
||||||
values_dst[i] = int(values[i]);
|
values_dst[i] = int(values[i]);
|
||||||
|
@ -1088,7 +1088,7 @@ static void extrude_individual_mesh_faces(Mesh &mesh,
|
|||||||
/* For every selected polygon, change it to use the new extruded vertices and the duplicate
|
/* For every selected polygon, change it to use the new extruded vertices and the duplicate
|
||||||
* edges, and build the faces that form the sides of the extrusion. Build "original index"
|
* edges, and build the faces that form the sides of the extrusion. Build "original index"
|
||||||
* arrays for the new vertices and edges so they can be accessed later.
|
* arrays for the new vertices and edges so they can be accessed later.
|
||||||
|
*
|
||||||
* Filling some of this data like the new edges or polygons could be easily split into
|
* Filling some of this data like the new edges or polygons could be easily split into
|
||||||
* separate loops, which may or may not be faster, but would involve more duplication. */
|
* separate loops, which may or may not be faster, but would involve more duplication. */
|
||||||
Array<int> new_vert_indices(extrude_corner_size);
|
Array<int> new_vert_indices(extrude_corner_size);
|
||||||
|
Loading…
Reference in New Issue
Block a user