Merge branch 'master' into microfacet_hair
This commit is contained in:
commit
4990122abb
|
@ -593,7 +593,7 @@ mark_as_advanced(
|
|||
# Metal
|
||||
|
||||
if(APPLE)
|
||||
option(WITH_METAL_BACKEND "Use Metal for graphics instead of (or as well as) OpenGL on macOS." OFF)
|
||||
option(WITH_METAL_BACKEND "Use Metal for graphics instead of (or as well as) OpenGL on macOS." ON)
|
||||
mark_as_advanced(WITH_METAL_BACKEND)
|
||||
else()
|
||||
set(WITH_METAL_BACKEND OFF)
|
||||
|
|
|
@ -2243,7 +2243,7 @@ compile_OIIO() {
|
|||
fi
|
||||
|
||||
# To be changed each time we make edits that would modify the compiled result!
|
||||
oiio_magic=18
|
||||
oiio_magic=19
|
||||
_init_oiio
|
||||
|
||||
# Force having own builds for the dependencies.
|
||||
|
@ -2323,7 +2323,7 @@ compile_OIIO() {
|
|||
cmake_d="$cmake_d -D USE_OPENVDB=OFF"
|
||||
cmake_d="$cmake_d -D BUILD_TESTING=OFF"
|
||||
cmake_d="$cmake_d -D OIIO_BUILD_TESTS=OFF"
|
||||
cmake_d="$cmake_d -D OIIO_BUILD_TOOLS=OFF"
|
||||
cmake_d="$cmake_d -D OIIO_BUILD_TOOLS=ON"
|
||||
cmake_d="$cmake_d -D TXT2MAN="
|
||||
#cmake_d="$cmake_d -D CMAKE_EXPORT_COMPILE_COMMANDS=ON"
|
||||
#cmake_d="$cmake_d -D CMAKE_VERBOSE_MAKEFILE=ON"
|
||||
|
|
|
@ -140,8 +140,8 @@ if(WITH_WINDOWS_BUNDLE_CRT)
|
|||
|
||||
install(FILES ${CMAKE_BINARY_DIR}/blender.crt.manifest DESTINATION ./blender.crt)
|
||||
set(BUNDLECRT "<dependency><dependentAssembly><assemblyIdentity type=\"win32\" name=\"blender.crt\" version=\"1.0.0.0\" /></dependentAssembly></dependency>")
|
||||
set(BUNDLECRT "${BUNDLECRT}<dependency><dependentAssembly><assemblyIdentity type=\"win32\" name=\"blender.shared\" version=\"1.0.0.0\" /></dependentAssembly></dependency>")
|
||||
endif()
|
||||
set(BUNDLECRT "${BUNDLECRT}<dependency><dependentAssembly><assemblyIdentity type=\"win32\" name=\"blender.shared\" version=\"1.0.0.0\" /></dependentAssembly></dependency>")
|
||||
configure_file(${CMAKE_SOURCE_DIR}/release/windows/manifest/blender.exe.manifest.in ${CMAKE_CURRENT_BINARY_DIR}/blender.exe.manifest @ONLY)
|
||||
|
||||
|
||||
|
|
|
@ -10,8 +10,9 @@ Only keyword arguments can be used to pass operator properties.
|
|||
Operators don't have return values as you might expect,
|
||||
instead they return a set() which is made up of:
|
||||
``{'RUNNING_MODAL', 'CANCELLED', 'FINISHED', 'PASS_THROUGH'}``.
|
||||
Common return values are ``{'FINISHED'}`` and ``{'CANCELLED'}``.
|
||||
|
||||
Common return values are ``{'FINISHED'}`` and ``{'CANCELLED'}``, the latter
|
||||
meaning that the operator execution was aborted without making any changes or
|
||||
saving an undo history entry.
|
||||
|
||||
Calling an operator in the wrong context will raise a ``RuntimeError``,
|
||||
there is a poll() method to avoid this problem.
|
||||
|
|
|
@ -44,6 +44,7 @@ class ModalOperator(bpy.types.Operator):
|
|||
elif event.type == 'LEFTMOUSE': # Confirm
|
||||
return {'FINISHED'}
|
||||
elif event.type in {'RIGHTMOUSE', 'ESC'}: # Cancel
|
||||
# Revert all changes that have been made
|
||||
context.object.location.x = self.init_loc_x
|
||||
return {'CANCELLED'}
|
||||
|
||||
|
|
|
@ -7,9 +7,16 @@ This script shows simple operator which prints a message.
|
|||
Since the operator only has an :class:`Operator.execute` function it takes no
|
||||
user input.
|
||||
|
||||
The function should return ``{'FINISHED'}`` or ``{'CANCELLED'}``, the latter
|
||||
meaning that operator execution was aborted without making any changes, and
|
||||
saving an undo entry isn't neccesary. If an error is detected after some changes
|
||||
have already been made, use the ``{'FINISHED'}`` return code, or the behavior
|
||||
of undo will be confusing for the user.
|
||||
|
||||
.. note::
|
||||
|
||||
Operator subclasses must be registered before accessing them from blender.
|
||||
|
||||
"""
|
||||
import bpy
|
||||
|
||||
|
|
|
@ -2360,7 +2360,6 @@ def draw_pause(self, context):
|
|||
|
||||
def get_panels():
|
||||
exclude_panels = {
|
||||
'DATA_PT_area',
|
||||
'DATA_PT_camera_dof',
|
||||
'DATA_PT_falloff_curve',
|
||||
'DATA_PT_light',
|
||||
|
|
|
@ -27,8 +27,8 @@ CCL_NAMESPACE_BEGIN
|
|||
* For triangles that are smaller than a texel, this might take too many attempts, so eventually
|
||||
* we just give up and don't jitter in that case.
|
||||
* This is not a particularly elegant solution, but it's probably the best we can do. */
|
||||
ccl_device_inline void bake_jitter_barycentric(float &u,
|
||||
float &v,
|
||||
ccl_device_inline void bake_jitter_barycentric(ccl_private float &u,
|
||||
ccl_private float &v,
|
||||
float2 rand_filter,
|
||||
const float dudx,
|
||||
const float dudy,
|
||||
|
|
|
@ -14,6 +14,8 @@
|
|||
|
||||
#include "BKE_blender_version.h"
|
||||
|
||||
#include "GPU_platform.h"
|
||||
|
||||
#include "BLO_readfile.h" /* own include */
|
||||
|
||||
const UserDef U_default = {
|
||||
|
@ -99,6 +101,7 @@ const UserDef U_default = {
|
|||
.gp_euclideandist = 2,
|
||||
.gp_eraser = 25,
|
||||
.gp_settings = 0,
|
||||
.gpu_backend = GPU_BACKEND_OPENGL,
|
||||
|
||||
/** Initialized by: #BKE_studiolight_default. */
|
||||
.light_param = {{0}},
|
||||
|
|
|
@ -49,16 +49,17 @@ url_manual_mapping = (
|
|||
("bpy.types.movietrackingsettings.refine_intrinsics_principal_point*", "movie_clip/tracking/clip/toolbar/solve.html#bpy-types-movietrackingsettings-refine-intrinsics-principal-point"),
|
||||
("bpy.types.cyclesobjectsettings.shadow_terminator_geometry_offset*", "render/cycles/object_settings/object_data.html#bpy-types-cyclesobjectsettings-shadow-terminator-geometry-offset"),
|
||||
("bpy.types.sequencertoolsettings.use_snap_current_frame_to_strips*", "video_editing/edit/montage/editing.html#bpy-types-sequencertoolsettings-use-snap-current-frame-to-strips"),
|
||||
("bpy.types.clothcollisionsettings.vertex_group_object_collisions*", "physics/cloth/settings/collisions.html#bpy-types-clothcollisionsettings-vertex-group-object-collisions"),
|
||||
("bpy.types.cycleslightsettings.use_multiple_importance_sampling*", "render/cycles/light_settings.html#bpy-types-cycleslightsettings-use-multiple-importance-sampling"),
|
||||
("bpy.types.fluiddomainsettings.sndparticle_potential_max_energy*", "physics/fluid/type/domain/liquid/particles.html#bpy-types-fluiddomainsettings-sndparticle-potential-max-energy"),
|
||||
("bpy.types.fluiddomainsettings.sndparticle_potential_min_energy*", "physics/fluid/type/domain/liquid/particles.html#bpy-types-fluiddomainsettings-sndparticle-potential-min-energy"),
|
||||
("bpy.types.lineartgpencilmodifier.use_overlap_edge_type_support*", "grease_pencil/modifiers/generate/line_art.html#bpy-types-lineartgpencilmodifier-use-overlap-edge-type-support"),
|
||||
("bpy.types.movietrackingsettings.refine_intrinsics_focal_length*", "movie_clip/tracking/clip/toolbar/solve.html#bpy-types-movietrackingsettings-refine-intrinsics-focal-length"),
|
||||
("bpy.types.rigidbodyconstraint.rigidbodyconstraint.use_breaking*", "physics/rigid_body/constraints/introduction.html#bpy-types-rigidbodyconstraint-rigidbodyconstraint-use-breaking"),
|
||||
("bpy.types.clothcollisionsettings.vertex_group_self_collisions*", "physics/cloth/settings/collisions.html#bpy-types-clothcollisionsettings-vertex-group-self-collisions"),
|
||||
("bpy.types.cyclesrendersettings.preview_denoising_input_passes*", "render/cycles/render_settings/sampling.html#bpy-types-cyclesrendersettings-preview-denoising-input-passes"),
|
||||
("bpy.types.cyclesrendersettings.preview_denoising_start_sample*", "render/cycles/render_settings/sampling.html#bpy-types-cyclesrendersettings-preview-denoising-start-sample"),
|
||||
("bpy.types.fluiddomainsettings.sndparticle_sampling_trappedair*", "physics/fluid/type/domain/liquid/particles.html#bpy-types-fluiddomainsettings-sndparticle-sampling-trappedair"),
|
||||
("bpy.types.brush.automasking_boundary_edges_propagation_steps*", "sculpt_paint/sculpting/controls.html#bpy-types-brush-automasking-boundary-edges-propagation-steps"),
|
||||
("bpy.types.fluiddomainsettings.sndparticle_sampling_wavecrest*", "physics/fluid/type/domain/liquid/particles.html#bpy-types-fluiddomainsettings-sndparticle-sampling-wavecrest"),
|
||||
("bpy.types.lineartgpencilmodifier.use_image_boundary_trimming*", "grease_pencil/modifiers/generate/line_art.html#bpy-types-lineartgpencilmodifier-use-image-boundary-trimming"),
|
||||
("bpy.types.materiallineart.use_intersection_priority_override*", "render/materials/line_art.html#bpy-types-materiallineart-use-intersection-priority-override"),
|
||||
|
@ -70,11 +71,13 @@ url_manual_mapping = (
|
|||
("bpy.types.lineartgpencilmodifier.use_face_mark_keep_contour*", "grease_pencil/modifiers/generate/line_art.html#bpy-types-lineartgpencilmodifier-use-face-mark-keep-contour"),
|
||||
("bpy.types.rendersettings.use_sequencer_override_scene_strip*", "editors/video_sequencer/preview/sidebar.html#bpy-types-rendersettings-use-sequencer-override-scene-strip"),
|
||||
("bpy.types.toolsettings.use_transform_correct_keep_connected*", "modeling/meshes/tools/tool_settings.html#bpy-types-toolsettings-use-transform-correct-keep-connected"),
|
||||
("bpy.types.clothsettings.internal_compression_stiffness_max*", "physics/cloth/settings/physical_properties.html#bpy-types-clothsettings-internal-compression-stiffness-max"),
|
||||
("bpy.types.cyclesrendersettings.preview_denoising_prefilter*", "render/cycles/render_settings/sampling.html#bpy-types-cyclesrendersettings-preview-denoising-prefilter"),
|
||||
("bpy.types.cyclesrendersettings.preview_scrambling_distance*", "render/cycles/render_settings/sampling.html#bpy-types-cyclesrendersettings-preview-scrambling-distance"),
|
||||
("bpy.types.fluiddomainsettings.sndparticle_potential_radius*", "physics/fluid/type/domain/liquid/particles.html#bpy-types-fluiddomainsettings-sndparticle-potential-radius"),
|
||||
("bpy.types.objectlineart.use_intersection_priority_override*", "scene_layout/object/properties/line_art.html#bpy-types-objectlineart-use-intersection-priority-override"),
|
||||
("bpy.types.brushgpencilsettings.use_stroke_random_strength*", "grease_pencil/modes/draw/tools/draw.html#bpy-types-brushgpencilsettings-use-stroke-random-strength"),
|
||||
("bpy.types.clothsettings.vertex_group_structural_stiffness*", "physics/cloth/settings/property_weights.html#bpy-types-clothsettings-vertex-group-structural-stiffness"),
|
||||
("bpy.types.cyclesrendersettings.film_transparent_roughness*", "render/cycles/render_settings/film.html#bpy-types-cyclesrendersettings-film-transparent-roughness"),
|
||||
("bpy.types.cyclesrendersettings.preview_adaptive_threshold*", "render/cycles/render_settings/sampling.html#bpy-types-cyclesrendersettings-preview-adaptive-threshold"),
|
||||
("bpy.types.fluiddomainsettings.openvdb_cache_compress_type*", "physics/fluid/type/domain/cache.html#bpy-types-fluiddomainsettings-openvdb-cache-compress-type"),
|
||||
|
@ -101,6 +104,7 @@ url_manual_mapping = (
|
|||
("bpy.types.cyclesobjectsettings.shadow_terminator_offset*", "render/cycles/object_settings/object_data.html#bpy-types-cyclesobjectsettings-shadow-terminator-offset"),
|
||||
("bpy.types.cyclesobjectsettings.use_adaptive_subdivision*", "render/cycles/object_settings/adaptive_subdiv.html#bpy-types-cyclesobjectsettings-use-adaptive-subdivision"),
|
||||
("bpy.types.cyclesrendersettings.debug_use_spatial_splits*", "render/cycles/render_settings/performance.html#bpy-types-cyclesrendersettings-debug-use-spatial-splits"),
|
||||
("bpy.types.cyclesrendersettings.guiding_training_samples*", "render/cycles/render_settings/sampling.html#bpy-types-cyclesrendersettings-guiding-training-samples"),
|
||||
("bpy.types.cyclesrendersettings.light_sampling_threshold*", "render/cycles/render_settings/sampling.html#bpy-types-cyclesrendersettings-light-sampling-threshold"),
|
||||
("bpy.types.cyclesrendersettings.rolling_shutter_duration*", "render/cycles/render_settings/motion_blur.html#bpy-types-cyclesrendersettings-rolling-shutter-duration"),
|
||||
("bpy.types.cyclesrendersettings.volume_preview_step_rate*", "render/cycles/render_settings/volumes.html#bpy-types-cyclesrendersettings-volume-preview-step-rate"),
|
||||
|
@ -113,6 +117,8 @@ url_manual_mapping = (
|
|||
("bpy.types.brushgpencilsettings.eraser_thickness_factor*", "grease_pencil/modes/draw/tools/erase.html#bpy-types-brushgpencilsettings-eraser-thickness-factor"),
|
||||
("bpy.types.brushgpencilsettings.use_random_press_radius*", "grease_pencil/modes/draw/tools/draw.html#bpy-types-brushgpencilsettings-use-random-press-radius"),
|
||||
("bpy.types.brushgpencilsettings.use_settings_stabilizer*", "grease_pencil/modes/draw/tools/draw.html#bpy-types-brushgpencilsettings-use-settings-stabilizer"),
|
||||
("bpy.types.clothsettings.internal_compression_stiffness*", "physics/cloth/settings/physical_properties.html#bpy-types-clothsettings-internal-compression-stiffness"),
|
||||
("bpy.types.clothsettings.internal_tension_stiffness_max*", "physics/cloth/settings/physical_properties.html#bpy-types-clothsettings-internal-tension-stiffness-max"),
|
||||
("bpy.types.collection.use_lineart_intersection_priority*", "scene_layout/collections/collections.html#bpy-types-collection-use-lineart-intersection-priority"),
|
||||
("bpy.types.colormanagedsequencercolorspacesettings.name*", "render/color_management.html#bpy-types-colormanagedsequencercolorspacesettings-name"),
|
||||
("bpy.types.cyclesrendersettings.max_transparent_bounces*", "render/cycles/render_settings/light_paths.html#bpy-types-cyclesrendersettings-max-transparent-bounces"),
|
||||
|
@ -133,6 +139,7 @@ url_manual_mapping = (
|
|||
("bpy.types.brush.show_multiplane_scrape_planes_preview*", "sculpt_paint/sculpting/tools/multiplane_scrape.html#bpy-types-brush-show-multiplane-scrape-planes-preview"),
|
||||
("bpy.types.brushcurvessculptsettings.interpolate_shape*", "sculpt_paint/curves_sculpting/tools/add_curves.html#bpy-types-brushcurvessculptsettings-interpolate-shape"),
|
||||
("bpy.types.brushgpencilsettings.eraser_strength_factor*", "grease_pencil/modes/draw/tools/erase.html#bpy-types-brushgpencilsettings-eraser-strength-factor"),
|
||||
("bpy.types.clothsettings.internal_spring_max_diversion*", "physics/cloth/settings/physical_properties.html#bpy-types-clothsettings-internal-spring-max-diversion"),
|
||||
("bpy.types.cyclesmaterialsettings.volume_interpolation*", "render/cycles/material_settings.html#bpy-types-cyclesmaterialsettings-volume-interpolation"),
|
||||
("bpy.types.cyclesrendersettings.denoising_input_passes*", "render/cycles/render_settings/sampling.html#bpy-types-cyclesrendersettings-denoising-input-passes"),
|
||||
("bpy.types.cyclesrendersettings.film_transparent_glass*", "render/cycles/render_settings/film.html#bpy-types-cyclesrendersettings-film-transparent-glass"),
|
||||
|
@ -154,6 +161,8 @@ url_manual_mapping = (
|
|||
("bpy.types.brushgpencilsettings.use_stroke_random_hue*", "grease_pencil/modes/draw/tools/draw.html#bpy-types-brushgpencilsettings-use-stroke-random-hue"),
|
||||
("bpy.types.brushgpencilsettings.use_stroke_random_sat*", "grease_pencil/modes/draw/tools/draw.html#bpy-types-brushgpencilsettings-use-stroke-random-sat"),
|
||||
("bpy.types.brushgpencilsettings.use_stroke_random_val*", "grease_pencil/modes/draw/tools/draw.html#bpy-types-brushgpencilsettings-use-stroke-random-val"),
|
||||
("bpy.types.clothsettings.internal_spring_normal_check*", "physics/cloth/settings/physical_properties.html#bpy-types-clothsettings-internal-spring-normal-check"),
|
||||
("bpy.types.clothsettings.vertex_group_shear_stiffness*", "physics/cloth/settings/property_weights.html#bpy-types-clothsettings-vertex-group-shear-stiffness"),
|
||||
("bpy.types.colormanageddisplaysettings.display_device*", "render/color_management.html#bpy-types-colormanageddisplaysettings-display-device"),
|
||||
("bpy.types.colormanagedviewsettings.use_curve_mapping*", "render/color_management.html#bpy-types-colormanagedviewsettings-use-curve-mapping"),
|
||||
("bpy.types.cyclesrendersettings.sample_clamp_indirect*", "render/cycles/render_settings/light_paths.html#bpy-types-cyclesrendersettings-sample-clamp-indirect"),
|
||||
|
@ -182,6 +191,8 @@ url_manual_mapping = (
|
|||
("bpy.types.brushgpencilsettings.use_random_press_val*", "grease_pencil/modes/draw/tools/draw.html#bpy-types-brushgpencilsettings-use-random-press-val"),
|
||||
("bpy.types.brushgpencilsettings.use_settings_outline*", "grease_pencil/modes/draw/tools/draw.html#bpy-types-brushgpencilsettings-use-settings-outline"),
|
||||
("bpy.types.brushgpencilsettings.use_stroke_random_uv*", "grease_pencil/modes/draw/tools/draw.html#bpy-types-brushgpencilsettings-use-stroke-random-uv"),
|
||||
("bpy.types.clothcollisionsettings.self_impulse_clamp*", "physics/cloth/settings/collisions.html#bpy-types-clothcollisionsettings-self-impulse-clamp"),
|
||||
("bpy.types.clothcollisionsettings.use_self_collision*", "physics/cloth/settings/collisions.html#bpy-types-clothcollisionsettings-use-self-collision"),
|
||||
("bpy.types.cyclesmaterialsettings.homogeneous_volume*", "render/cycles/material_settings.html#bpy-types-cyclesmaterialsettings-homogeneous-volume"),
|
||||
("bpy.types.cyclesobjectsettings.is_caustics_receiver*", "render/cycles/object_settings/object_data.html#bpy-types-cyclesobjectsettings-is-caustics-receiver"),
|
||||
("bpy.types.cyclesrendersettings.adaptive_min_samples*", "render/cycles/render_settings/sampling.html#bpy-types-cyclesrendersettings-adaptive-min-samples"),
|
||||
|
@ -212,20 +223,26 @@ url_manual_mapping = (
|
|||
("bpy.types.animvizmotionpaths.show_keyframe_numbers*", "animation/motion_paths.html#bpy-types-animvizmotionpaths-show-keyframe-numbers"),
|
||||
("bpy.types.brush.cloth_constraint_softbody_strength*", "sculpt_paint/sculpting/tools/cloth.html#bpy-types-brush-cloth-constraint-softbody-strength"),
|
||||
("bpy.types.brush.elastic_deform_volume_preservation*", "sculpt_paint/sculpting/tools/elastic_deform.html#bpy-types-brush-elastic-deform-volume-preservation"),
|
||||
("bpy.types.brush.use_automasking_boundary_face_sets*", "sculpt_paint/sculpting/tool_settings/brush_settings.html#bpy-types-brush-use-automasking-boundary-face-sets"),
|
||||
("bpy.types.brushcurvessculptsettings.minimum_length*", "sculpt_paint/curves_sculpting/tools/grow_shrink_curves.html#bpy-types-brushcurvessculptsettings-minimum-length"),
|
||||
("bpy.types.brushgpencilsettings.fill_simplify_level*", "grease_pencil/modes/draw/tools/fill.html#bpy-types-brushgpencilsettings-fill-simplify-level"),
|
||||
("bpy.types.brushgpencilsettings.random_value_factor*", "grease_pencil/modes/draw/tools/draw.html#bpy-types-brushgpencilsettings-random-value-factor"),
|
||||
("bpy.types.brushgpencilsettings.use_collide_strokes*", "grease_pencil/modes/draw/tools/fill.html#bpy-types-brushgpencilsettings-use-collide-strokes"),
|
||||
("bpy.types.brushgpencilsettings.use_jitter_pressure*", "grease_pencil/modes/draw/tools/draw.html#bpy-types-brushgpencilsettings-use-jitter-pressure"),
|
||||
("bpy.types.brushgpencilsettings.use_random_press_uv*", "grease_pencil/modes/draw/tools/draw.html#bpy-types-brushgpencilsettings-use-random-press-uv"),
|
||||
("bpy.types.brushgpencilsettings.use_settings_random*", "grease_pencil/modes/draw/tools/draw.html#bpy-types-brushgpencilsettings-use-settings-random"),
|
||||
("bpy.types.clothcollisionsettings.collision_quality*", "physics/cloth/settings/collisions.html#bpy-types-clothcollisionsettings-collision-quality"),
|
||||
("bpy.types.clothcollisionsettings.self_distance_min*", "physics/cloth/settings/collisions.html#bpy-types-clothcollisionsettings-self-distance-min"),
|
||||
("bpy.types.clothsettings.internal_spring_max_length*", "physics/cloth/settings/physical_properties.html#bpy-types-clothsettings-internal-spring-max-length"),
|
||||
("bpy.types.clothsettings.internal_tension_stiffness*", "physics/cloth/settings/physical_properties.html#bpy-types-clothsettings-internal-tension-stiffness"),
|
||||
("bpy.types.collection.lineart_intersection_priority*", "scene_layout/collections/collections.html#bpy-types-collection-lineart-intersection-priority"),
|
||||
("bpy.types.collection.lineart_use_intersection_mask*", "scene_layout/collections/collections.html#bpy-types-collection-lineart-use-intersection-mask"),
|
||||
("bpy.types.colormanagedinputcolorspacesettings.name*", "editors/image/image_settings.html#bpy-types-colormanagedinputcolorspacesettings-name"),
|
||||
("bpy.types.cyclesmaterialsettings.emission_sampling*", "render/cycles/material_settings.html#bpy-types-cyclesmaterialsettings-emission-sampling"),
|
||||
("bpy.types.cyclesrendersettings.denoising_prefilter*", "render/cycles/render_settings/sampling.html#bpy-types-cyclesrendersettings-denoising-prefilter"),
|
||||
("bpy.types.cyclesrendersettings.preview_dicing_rate*", "render/cycles/render_settings/subdivision.html#bpy-types-cyclesrendersettings-preview-dicing-rate"),
|
||||
("bpy.types.cyclesrendersettings.sample_clamp_direct*", "render/cycles/render_settings/light_paths.html#bpy-types-cyclesrendersettings-sample-clamp-direct"),
|
||||
("bpy.types.cyclesrendersettings.scrambling_distance*", "render/cycles/render_settings/sampling.html#bpy-types-cyclesrendersettings-scrambling-distance"),
|
||||
("bpy.types.cyclesrendersettings.use_surface_guiding*", "render/cycles/render_settings/sampling.html#bpy-types-cyclesrendersettings-use-surface-guiding"),
|
||||
("bpy.types.cyclesworldsettings.volume_interpolation*", "render/cycles/world_settings.html#bpy-types-cyclesworldsettings-volume-interpolation"),
|
||||
("bpy.types.fluiddomainsettings.mesh_particle_radius*", "physics/fluid/type/domain/liquid/mesh.html#bpy-types-fluiddomainsettings-mesh-particle-radius"),
|
||||
("bpy.types.fluiddomainsettings.sndparticle_boundary*", "physics/fluid/type/domain/liquid/particles.html#bpy-types-fluiddomainsettings-sndparticle-boundary"),
|
||||
|
@ -253,6 +270,7 @@ url_manual_mapping = (
|
|||
("bpy.types.brushcurvessculptsettings.scale_uniform*", "sculpt_paint/curves_sculpting/tools/grow_shrink_curves.html#bpy-types-brushcurvessculptsettings-scale-uniform"),
|
||||
("bpy.types.brushgpencilsettings.show_fill_boundary*", "grease_pencil/modes/draw/tools/fill.html#bpy-types-brushgpencilsettings-show-fill-boundary"),
|
||||
("bpy.types.brushgpencilsettings.use_default_eraser*", "grease_pencil/modes/draw/tools/erase.html#bpy-types-brushgpencilsettings-use-default-eraser"),
|
||||
("bpy.types.clothsettings.compression_stiffness_max*", "physics/cloth/settings/property_weights.html#bpy-types-clothsettings-compression-stiffness-max"),
|
||||
("bpy.types.colormanagedsequencercolorspacesettings*", "render/color_management.html#bpy-types-colormanagedsequencercolorspacesettings"),
|
||||
("bpy.types.colormanagedviewsettings.view_transform*", "render/color_management.html#bpy-types-colormanagedviewsettings-view-transform"),
|
||||
("bpy.types.cyclesmaterialsettings.volume_step_rate*", "render/cycles/material_settings.html#bpy-types-cyclesmaterialsettings-volume-step-rate"),
|
||||
|
@ -260,6 +278,7 @@ url_manual_mapping = (
|
|||
("bpy.types.cyclesrendersettings.adaptive_threshold*", "render/cycles/render_settings/sampling.html#bpy-types-cyclesrendersettings-adaptive-threshold"),
|
||||
("bpy.types.cyclesrendersettings.camera_cull_margin*", "render/cycles/render_settings/simplify.html#bpy-types-cyclesrendersettings-camera-cull-margin"),
|
||||
("bpy.types.cyclesrendersettings.debug_use_hair_bvh*", "render/cycles/render_settings/performance.html#bpy-types-cyclesrendersettings-debug-use-hair-bvh"),
|
||||
("bpy.types.cyclesrendersettings.use_volume_guiding*", "render/cycles/render_settings/sampling.html#bpy-types-cyclesrendersettings-use-volume-guiding"),
|
||||
("bpy.types.fileassetselectparams.asset_library_ref*", "editors/asset_browser.html#bpy-types-fileassetselectparams-asset-library-ref"),
|
||||
("bpy.types.fluiddomainsettings.export_manta_script*", "physics/fluid/type/domain/cache.html#bpy-types-fluiddomainsettings-export-manta-script"),
|
||||
("bpy.types.fluiddomainsettings.fractions_threshold*", "physics/fluid/type/domain/settings.html#bpy-types-fluiddomainsettings-fractions-threshold"),
|
||||
|
@ -283,6 +302,7 @@ url_manual_mapping = (
|
|||
("bpy.types.movietrackingsettings.use_tripod_solver*", "movie_clip/tracking/clip/toolbar/solve.html#bpy-types-movietrackingsettings-use-tripod-solver"),
|
||||
("bpy.types.rendersettings.simplify_child_particles*", "render/cycles/render_settings/simplify.html#bpy-types-rendersettings-simplify-child-particles"),
|
||||
("bpy.types.rendersettings.use_high_quality_normals*", "render/eevee/render_settings/performance.html#bpy-types-rendersettings-use-high-quality-normals"),
|
||||
("bpy.types.sculpt.automasking_start_normal_falloff*", "sculpt_paint/sculpting/controls.html#bpy-types-sculpt-automasking-start-normal-falloff"),
|
||||
("bpy.types.sequencerpreviewoverlay.show_annotation*", "editors/video_sequencer/preview/display/overlays.html#bpy-types-sequencerpreviewoverlay-show-annotation"),
|
||||
("bpy.types.sequencerpreviewoverlay.show_safe_areas*", "editors/video_sequencer/preview/display/overlays.html#bpy-types-sequencerpreviewoverlay-show-safe-areas"),
|
||||
("bpy.types.sequencertoolsettings.snap_ignore_muted*", "video_editing/edit/montage/editing.html#bpy-types-sequencertoolsettings-snap-ignore-muted"),
|
||||
|
@ -302,7 +322,6 @@ url_manual_mapping = (
|
|||
("bpy.types.brushgpencilsettings.pen_smooth_factor*", "grease_pencil/modes/draw/tools/draw.html#bpy-types-brushgpencilsettings-pen-smooth-factor"),
|
||||
("bpy.types.brushgpencilsettings.random_hue_factor*", "grease_pencil/modes/draw/tools/draw.html#bpy-types-brushgpencilsettings-random-hue-factor"),
|
||||
("bpy.types.cyclescurverendersettings.subdivisions*", "render/cycles/render_settings/hair.html#bpy-types-cyclescurverendersettings-subdivisions"),
|
||||
("bpy.types.cyclesmaterialsettings.sample_as_light*", "render/cycles/material_settings.html#bpy-types-cyclesmaterialsettings-sample-as-light"),
|
||||
("bpy.types.cyclesmaterialsettings.volume_sampling*", "render/cycles/material_settings.html#bpy-types-cyclesmaterialsettings-volume-sampling"),
|
||||
("bpy.types.cyclesobjectsettings.use_deform_motion*", "render/cycles/object_settings/object_data.html#bpy-types-cyclesobjectsettings-use-deform-motion"),
|
||||
("bpy.types.cyclesobjectsettings.use_distance_cull*", "render/cycles/object_settings/object_data.html#bpy-types-cyclesobjectsettings-use-distance-cull"),
|
||||
|
@ -333,6 +352,7 @@ url_manual_mapping = (
|
|||
("bpy.types.movietrackingdopesheet.use_invert_sort*", "movie_clip/tracking/dope_sheet.html#bpy-types-movietrackingdopesheet-use-invert-sort"),
|
||||
("bpy.types.rendersettings_simplify_gpencil_onplay*", "render/cycles/render_settings/simplify.html#bpy-types-rendersettings-simplify-gpencil-onplay"),
|
||||
("bpy.types.rigidbodyconstraint.breaking_threshold*", "physics/rigid_body/constraints/introduction.html#bpy-types-rigidbodyconstraint-breaking-threshold"),
|
||||
("bpy.types.sculpt.use_automasking_cavity_inverted*", "sculpt_paint/sculpting/controls.html#bpy-types-sculpt-use-automasking-cavity-inverted"),
|
||||
("bpy.types.spaceclipeditor.use_manual_calibration*", "editors/clip/display/clip_display.html#bpy-types-spaceclipeditor-use-manual-calibration"),
|
||||
("bpy.types.spacedopesheeteditor.show_pose_markers*", "animation/markers.html#bpy-types-spacedopesheeteditor-show-pose-markers"),
|
||||
("bpy.types.spaceimageoverlay.show_grid_background*", "editors/uv/overlays.html#bpy-types-spaceimageoverlay-show-grid-background"),
|
||||
|
@ -349,6 +369,7 @@ url_manual_mapping = (
|
|||
("bpy.types.toolsettings.use_snap_uv_grid_absolute*", "editors/uv/controls/snapping.html#bpy-types-toolsettings-use-snap-uv-grid-absolute"),
|
||||
("bpy.types.toolsettings.use_transform_data_origin*", "scene_layout/object/tools/tool_settings.html#bpy-types-toolsettings-use-transform-data-origin"),
|
||||
("bpy.types.view3doverlay.sculpt_mode_mask_opacity*", "sculpt_paint/sculpting/editing/mask.html#bpy-types-view3doverlay-sculpt-mode-mask-opacity"),
|
||||
("bpy.types.view3doverlay.viewer_attribute_opacity*", "modeling/geometry_nodes/output/viewer.html#bpy-types-view3doverlay-viewer-attribute-opacity"),
|
||||
("bpy.ops.mesh.customdata_bevel_weight_edge_clear*", "modeling/meshes/properties/custom_data.html#bpy-ops-mesh-customdata-bevel-weight-edge-clear"),
|
||||
("bpy.ops.mesh.customdata_bevel_weight_vertex_add*", "modeling/meshes/properties/custom_data.html#bpy-ops-mesh-customdata-bevel-weight-vertex-add"),
|
||||
("bpy.ops.mesh.customdata_custom_splitnormals_add*", "modeling/meshes/properties/custom_data.html#bpy-ops-mesh-customdata-custom-splitnormals-add"),
|
||||
|
@ -357,13 +378,14 @@ url_manual_mapping = (
|
|||
("bpy.types.brushgpencilsettings.fill_extend_mode*", "grease_pencil/modes/draw/tools/fill.html#bpy-types-brushgpencilsettings-fill-extend-mode"),
|
||||
("bpy.types.brushgpencilsettings.pen_smooth_steps*", "grease_pencil/modes/draw/tools/draw.html#bpy-types-brushgpencilsettings-pen-smooth-steps"),
|
||||
("bpy.types.brushgpencilsettings.show_fill_extend*", "grease_pencil/modes/draw/tools/fill.html#bpy-types-brushgpencilsettings-show-fill-extend"),
|
||||
("bpy.types.brushgpencilsettings.use_collide_only*", "grease_pencil/modes/draw/tools/fill.html#bpy-types-brushgpencilsettings-use-collide-only"),
|
||||
("bpy.types.cycleslightsettings.is_caustics_light*", "render/cycles/light_settings.html#bpy-types-cycleslightsettings-is-caustics-light"),
|
||||
("bpy.types.cyclesrendersettings.max_subdivisions*", "render/cycles/render_settings/subdivision.html#bpy-types-cyclesrendersettings-max-subdivisions"),
|
||||
("bpy.types.cyclesrendersettings.preview_denoiser*", "render/cycles/render_settings/sampling.html#bpy-types-cyclesrendersettings-preview-denoiser"),
|
||||
("bpy.types.cyclesrendersettings.sampling_pattern*", "render/cycles/render_settings/sampling.html#bpy-types-cyclesrendersettings-sampling-pattern"),
|
||||
("bpy.types.cyclesrendersettings.volume_max_steps*", "render/cycles/render_settings/volumes.html#bpy-types-cyclesrendersettings-volume-max-steps"),
|
||||
("bpy.types.cyclesrendersettings.volume_step_rate*", "render/cycles/render_settings/volumes.html#bpy-types-cyclesrendersettings-volume-step-rate"),
|
||||
("bpy.types.cyclesworldsettings.is_caustics_light*", "render/cycles/world_settings.html#bpy-types-cyclesworldsettings-is-caustics-light"),
|
||||
("bpy.types.dynamicpaintbrushsettings.wave_factor*", "physics/dynamic_paint/brush.html#bpy-types-dynamicpaintbrushsettings-wave-factor"),
|
||||
("bpy.types.editbone.bbone_handle_use_scale_start*", "animation/armatures/bones/properties/bendy_bones.html#bpy-types-editbone-bbone-handle-use-scale-start"),
|
||||
("bpy.types.fluiddomainsettings.cache_data_format*", "physics/fluid/type/domain/cache.html#bpy-types-fluiddomainsettings-cache-data-format"),
|
||||
("bpy.types.fluiddomainsettings.cache_frame_start*", "physics/fluid/type/domain/cache.html#bpy-types-fluiddomainsettings-cache-frame-start"),
|
||||
|
@ -392,6 +414,7 @@ url_manual_mapping = (
|
|||
("bpy.types.movietrackingplanetrack.image_opacity*", "movie_clip/tracking/clip/sidebar/track/plane_track.html#bpy-types-movietrackingplanetrack-image-opacity"),
|
||||
("bpy.types.particlesettings.use_parent_particles*", "physics/particles/emitter/render.html#bpy-types-particlesettings-use-parent-particles"),
|
||||
("bpy.types.rigidbodyconstraint.solver_iterations*", "physics/rigid_body/constraints/introduction.html#bpy-types-rigidbodyconstraint-solver-iterations"),
|
||||
("bpy.types.sculpt.automasking_start_normal_limit*", "sculpt_paint/sculpting/controls.html#bpy-types-sculpt-automasking-start-normal-limit"),
|
||||
("bpy.types.sculpt.use_automasking_boundary_edges*", "sculpt_paint/sculpting/controls.html#bpy-types-sculpt-use-automasking-boundary-edges"),
|
||||
("bpy.types.sequenceeditor.use_overlay_frame_lock*", "editors/video_sequencer/preview/sidebar.html#bpy-types-sequenceeditor-use-overlay-frame-lock"),
|
||||
("bpy.types.sequencerpreviewoverlay.show_metadata*", "editors/video_sequencer/preview/display/overlays.html#bpy-types-sequencerpreviewoverlay-show-metadata"),
|
||||
|
@ -407,11 +430,14 @@ url_manual_mapping = (
|
|||
("bpy.types.viewlayer.use_pass_cryptomatte_object*", "render/layers/passes.html#bpy-types-viewlayer-use-pass-cryptomatte-object"),
|
||||
("bpy.ops.armature.rigify_apply_selection_colors*", "addons/rigging/rigify/metarigs.html#bpy-ops-armature-rigify-apply-selection-colors"),
|
||||
("bpy.ops.ed.lib_id_generate_preview_from_object*", "editors/asset_browser.html#bpy-ops-ed-lib-id-generate-preview-from-object"),
|
||||
("bpy.types.brush.use_automasking_boundary_edges*", "sculpt_paint/sculpting/tool_settings/brush_settings.html#bpy-types-brush-use-automasking-boundary-edges"),
|
||||
("bpy.types.brushcurvessculptsettings.add_amount*", "sculpt_paint/curves_sculpting/tools/add_curves.html#bpy-types-brushcurvessculptsettings-add-amount"),
|
||||
("bpy.types.brushgpencilsettings.fill_layer_mode*", "grease_pencil/modes/draw/tools/fill.html#bpy-types-brushgpencilsettings-fill-layer-mode"),
|
||||
("bpy.types.brushgpencilsettings.random_strength*", "grease_pencil/modes/draw/tools/draw.html#bpy-types-brushgpencilsettings-random-strength"),
|
||||
("bpy.types.brushgpencilsettings.simplify_factor*", "grease_pencil/modes/draw/tools/draw.html#bpy-types-brushgpencilsettings-simplify-factor"),
|
||||
("bpy.types.clothcollisionsettings.impulse_clamp*", "physics/cloth/settings/collisions.html#bpy-types-clothcollisionsettings-impulse-clamp"),
|
||||
("bpy.types.clothcollisionsettings.self_friction*", "physics/cloth/settings/collisions.html#bpy-types-clothcollisionsettings-self-friction"),
|
||||
("bpy.types.clothcollisionsettings.use_collision*", "physics/cloth/settings/collisions.html#bpy-types-clothcollisionsettings-use-collision"),
|
||||
("bpy.types.clothsettings.uniform_pressure_force*", "physics/cloth/settings/physical_properties.html#bpy-types-clothsettings-uniform-pressure-force"),
|
||||
("bpy.types.collection.lineart_intersection_mask*", "scene_layout/collections/collections.html#bpy-types-collection-lineart-intersection-mask"),
|
||||
("bpy.types.cyclesobjectsettings.use_camera_cull*", "render/cycles/object_settings/object_data.html#bpy-types-cyclesobjectsettings-use-camera-cull"),
|
||||
("bpy.types.cyclesobjectsettings.use_motion_blur*", "render/cycles/object_settings/object_data.html#bpy-types-cyclesobjectsettings-use-motion-blur"),
|
||||
|
@ -419,6 +445,7 @@ url_manual_mapping = (
|
|||
("bpy.types.cyclesrendersettings.preview_samples*", "render/cycles/render_settings/sampling.html#bpy-types-cyclesrendersettings-preview-samples"),
|
||||
("bpy.types.cyclesrendersettings.use_camera_cull*", "render/cycles/render_settings/simplify.html#bpy-types-cyclesrendersettings-use-camera-cull"),
|
||||
("bpy.types.cyclesworldsettings.volume_step_size*", "render/cycles/world_settings.html#bpy-types-cyclesworldsettings-volume-step-size"),
|
||||
("bpy.types.dynamicpaintbrushsettings.wave_clamp*", "physics/dynamic_paint/brush.html#bpy-types-dynamicpaintbrushsettings-wave-clamp"),
|
||||
("bpy.types.editbone.bbone_handle_use_ease_start*", "animation/armatures/bones/properties/bendy_bones.html#bpy-types-editbone-bbone-handle-use-ease-start"),
|
||||
("bpy.types.fluiddomainsettings.color_ramp_field*", "physics/fluid/type/domain/gas/viewport_display.html#bpy-types-fluiddomainsettings-color-ramp-field"),
|
||||
("bpy.types.fluiddomainsettings.guide_vel_factor*", "physics/fluid/type/domain/guides.html#bpy-types-fluiddomainsettings-guide-vel-factor"),
|
||||
|
@ -430,6 +457,7 @@ url_manual_mapping = (
|
|||
("bpy.types.freestylelinestyle.use_split_pattern*", "render/freestyle/view_layer/line_style/strokes.html#bpy-types-freestylelinestyle-use-split-pattern"),
|
||||
("bpy.types.freestylesettings.use_view_map_cache*", "render/freestyle/view_layer/freestyle.html#bpy-types-freestylesettings-use-view-map-cache"),
|
||||
("bpy.types.geometrynodecurvehandletypeselection*", "modeling/geometry_nodes/curve/handle_type_selection.html#bpy-types-geometrynodecurvehandletypeselection"),
|
||||
("bpy.types.geometrynodedistributepointsinvolume*", "modeling/geometry_nodes/point/distribute_points_in_volume.html#bpy-types-geometrynodedistributepointsinvolume"),
|
||||
("bpy.types.geometrynodeinputmeshvertexneighbors*", "modeling/geometry_nodes/mesh/vertex_neighbors.html#bpy-types-geometrynodeinputmeshvertexneighbors"),
|
||||
("bpy.types.greasepencil.curve_edit_corner_angle*", "grease_pencil/modes/edit/curve_editing.html#bpy-types-greasepencil-curve-edit-corner-angle"),
|
||||
("bpy.types.imageformatsettings.color_management*", "render/output/properties/output.html#bpy-types-imageformatsettings-color-management"),
|
||||
|
@ -466,13 +494,19 @@ url_manual_mapping = (
|
|||
("bpy.types.brushgpencilsettings.fill_draw_mode*", "grease_pencil/modes/draw/tools/fill.html#bpy-types-brushgpencilsettings-fill-draw-mode"),
|
||||
("bpy.types.brushgpencilsettings.fill_threshold*", "grease_pencil/modes/draw/tools/fill.html#bpy-types-brushgpencilsettings-fill-threshold"),
|
||||
("bpy.types.brushgpencilsettings.use_fill_limit*", "grease_pencil/modes/draw/tools/fill.html#bpy-types-brushgpencilsettings-use-fill-limit"),
|
||||
("bpy.types.clothcollisionsettings.distance_min*", "physics/cloth/settings/collisions.html#bpy-types-clothcollisionsettings-distance-min"),
|
||||
("bpy.types.clothsettings.bending_stiffness_max*", "physics/cloth/settings/property_weights.html#bpy-types-clothsettings-bending-stiffness-max"),
|
||||
("bpy.types.clothsettings.compression_stiffness*", "physics/cloth/settings/physical_properties.html#bpy-types-clothsettings-compression-stiffness"),
|
||||
("bpy.types.clothsettings.tension_stiffness_max*", "physics/cloth/settings/property_weights.html#bpy-types-clothsettings-tension-stiffness-max"),
|
||||
("bpy.types.clothsettings.vertex_group_pressure*", "physics/cloth/settings/physical_properties.html#bpy-types-clothsettings-vertex-group-pressure"),
|
||||
("bpy.types.cyclesmaterialsettings.displacement*", "render/cycles/material_settings.html#bpy-types-cyclesmaterialsettings-displacement"),
|
||||
("bpy.types.cyclesrendersettings.fast_gi_method*", "render/cycles/render_settings/light_paths.html#bpy-types-cyclesrendersettings-fast-gi-method"),
|
||||
("bpy.types.cyclesrendersettings.glossy_bounces*", "render/cycles/render_settings/light_paths.html#bpy-types-cyclesrendersettings-glossy-bounces"),
|
||||
("bpy.types.cyclesrendersettings.use_light_tree*", "render/cycles/render_settings/sampling.html#bpy-types-cyclesrendersettings-use-light-tree"),
|
||||
("bpy.types.cyclesrendersettings.volume_bounces*", "render/cycles/render_settings/light_paths.html#bpy-types-cyclesrendersettings-volume-bounces"),
|
||||
("bpy.types.cyclesworldsettings.sampling_method*", "render/cycles/world_settings.html#bpy-types-cyclesworldsettings-sampling-method"),
|
||||
("bpy.types.cyclesworldsettings.volume_sampling*", "render/cycles/world_settings.html#bpy-types-cyclesworldsettings-volume-sampling"),
|
||||
("bpy.types.dynamicpaintbrushsettings.wave_type*", "physics/dynamic_paint/brush.html#bpy-types-dynamicpaintbrushsettings-wave-type"),
|
||||
("bpy.types.editbone.bbone_handle_use_scale_end*", "animation/armatures/bones/properties/bendy_bones.html#bpy-types-editbone-bbone-handle-use-scale-end"),
|
||||
("bpy.types.ffmpegsettings.constant_rate_factor*", "render/output/properties/output.html#bpy-types-ffmpegsettings-constant-rate-factor"),
|
||||
("bpy.types.fieldsettings.use_guide_path_weight*", "physics/forces/force_fields/types/curve_guide.html#bpy-types-fieldsettings-use-guide-path-weight"),
|
||||
|
@ -504,6 +538,7 @@ url_manual_mapping = (
|
|||
("bpy.types.particlesettings.use_modifier_stack*", "physics/particles/emitter/emission.html#bpy-types-particlesettings-use-modifier-stack"),
|
||||
("bpy.types.rendersettings.sequencer_gl_preview*", "editors/video_sequencer/preview/sidebar.html#bpy-types-rendersettings-sequencer-gl-preview"),
|
||||
("bpy.types.rendersettings.simplify_subdivision*", "render/cycles/render_settings/simplify.html#bpy-types-rendersettings-simplify-subdivision"),
|
||||
("bpy.types.sculpt.use_automasking_start_normal*", "sculpt_paint/sculpting/controls.html#bpy-types-sculpt-use-automasking-start-normal"),
|
||||
("bpy.types.sequencerpreviewoverlay.show_cursor*", "editors/video_sequencer/preview/display/overlays.html#bpy-types-sequencerpreviewoverlay-show-cursor"),
|
||||
("bpy.types.spacegrapheditor.show_extrapolation*", "editors/graph_editor/introduction.html#bpy-types-spacegrapheditor-show-extrapolation"),
|
||||
("bpy.types.spaceoutliner.use_filter_collection*", "editors/outliner/interface.html#bpy-types-spaceoutliner-use-filter-collection"),
|
||||
|
@ -516,6 +551,7 @@ url_manual_mapping = (
|
|||
("bpy.types.spacespreadsheetrowfilter.threshold*", "editors/spreadsheet.html#bpy-types-spacespreadsheetrowfilter-threshold"),
|
||||
("bpy.types.toolsettings.use_snap_grid_absolute*", "editors/3dview/controls/snapping.html#bpy-types-toolsettings-use-snap-grid-absolute"),
|
||||
("bpy.types.view3doverlay.show_face_orientation*", "editors/3dview/display/overlays.html#bpy-types-view3doverlay-show-face-orientation"),
|
||||
("bpy.types.view3doverlay.show_viewer_attribute*", "modeling/geometry_nodes/output/viewer.html#bpy-types-view3doverlay-show-viewer-attribute"),
|
||||
("bpy.ops.gpencil.bake_grease_pencil_animation*", "grease_pencil/animation/tools.html#bpy-ops-gpencil-bake-grease-pencil-animation"),
|
||||
("bpy.ops.object.multires_higher_levels_delete*", "modeling/modifiers/generate/multiresolution.html#bpy-ops-object-multires-higher-levels-delete"),
|
||||
("bpy.ops.object.vertex_group_copy_to_selected*", "modeling/meshes/properties/vertex_groups/vertex_groups.html#bpy-ops-object-vertex-group-copy-to-selected"),
|
||||
|
@ -523,7 +559,8 @@ url_manual_mapping = (
|
|||
("bpy.ops.view3d.edit_mesh_extrude_move_normal*", "modeling/meshes/editing/face/extrude_faces.html#bpy-ops-view3d-edit-mesh-extrude-move-normal"),
|
||||
("bpy.types.bakesettings.use_pass_transmission*", "render/cycles/baking.html#bpy-types-bakesettings-use-pass-transmission"),
|
||||
("bpy.types.brushgpencilsettings.input_samples*", "grease_pencil/modes/draw/tools/draw.html#bpy-types-brushgpencilsettings-input-samples"),
|
||||
("bpy.types.clothsettings.internal_compression*", "physics/cloth/settings/physical_properties.html#bpy-types-clothsettings-internal-compression"),
|
||||
("bpy.types.clothsettings.use_internal_springs*", "physics/cloth/settings/physical_properties.html#bpy-types-clothsettings-use-internal-springs"),
|
||||
("bpy.types.clothsettings.vertex_group_bending*", "physics/cloth/settings/property_weights.html#bpy-types-clothsettings-vertex-group-bending"),
|
||||
("bpy.types.cyclescamerasettings.panorama_type*", "render/cycles/object_settings/cameras.html#bpy-types-cyclescamerasettings-panorama-type"),
|
||||
("bpy.types.cyclesrendersettings.dicing_camera*", "render/cycles/render_settings/subdivision.html#bpy-types-cyclesrendersettings-dicing-camera"),
|
||||
("bpy.types.cyclesrendersettings.film_exposure*", "render/cycles/render_settings/film.html#bpy-types-cyclesrendersettings-film-exposure"),
|
||||
|
@ -569,9 +606,11 @@ url_manual_mapping = (
|
|||
("bpy.types.movietrackingdopesheet.sort_method*", "movie_clip/tracking/dope_sheet.html#bpy-types-movietrackingdopesheet-sort-method"),
|
||||
("bpy.types.movietrackingtrack.use_red_channel*", "movie_clip/tracking/clip/sidebar/track/track.html#bpy-types-movietrackingtrack-use-red-channel"),
|
||||
("bpy.types.nodesocketinterface*.default_value*", "interface/controls/nodes/groups.html#bpy-types-nodesocketinterface-default-value"),
|
||||
("bpy.types.object.add_rest_position_attribute*", "animation/shape_keys/shape_keys_panel.html#bpy-types-object-add-rest-position-attribute"),
|
||||
("bpy.types.rendersettings.line_thickness_mode*", "render/freestyle/render.html#bpy-types-rendersettings-line-thickness-mode"),
|
||||
("bpy.types.rendersettings.motion_blur_shutter*", "render/cycles/render_settings/motion_blur.html#bpy-types-rendersettings-motion-blur-shutter"),
|
||||
("bpy.types.rendersettings.use_persistent_data*", "render/cycles/render_settings/performance.html#bpy-types-rendersettings-use-persistent-data"),
|
||||
("bpy.types.sculpt.use_automasking_view_normal*", "sculpt_paint/sculpting/controls.html#bpy-types-sculpt-use-automasking-view-normal"),
|
||||
("bpy.types.sequencertimelineoverlay.show_grid*", "editors/video_sequencer/sequencer/display.html#bpy-types-sequencertimelineoverlay-show-grid"),
|
||||
("bpy.types.sequencertoolsettings.overlap_mode*", "video_editing/edit/montage/editing.html#bpy-types-sequencertoolsettings-overlap-mode"),
|
||||
("bpy.types.spaceclipeditor.show_green_channel*", "editors/clip/display/clip_display.html#bpy-types-spaceclipeditor-show-green-channel"),
|
||||
|
@ -580,6 +619,7 @@ url_manual_mapping = (
|
|||
("bpy.types.spacesequenceeditor.use_clamp_view*", "editors/video_sequencer/sequencer/navigating.html#bpy-types-spacesequenceeditor-use-clamp-view"),
|
||||
("bpy.types.spacespreadsheet.object_eval_state*", "editors/spreadsheet.html#bpy-types-spacespreadsheet-object-eval-state"),
|
||||
("bpy.types.spaceuveditor.display_stretch_type*", "editors/uv/overlays.html#bpy-types-spaceuveditor-display-stretch-type"),
|
||||
("bpy.types.spaceuveditor.show_grid_over_image*", "editors/uv/overlays.html#bpy-types-spaceuveditor-show-grid-over-image"),
|
||||
("bpy.types.toolsettings.transform_pivot_point*", "editors/3dview/controls/pivot_point/index.html#bpy-types-toolsettings-transform-pivot-point"),
|
||||
("bpy.types.toolsettings.use_proportional_edit*", "editors/3dview/controls/proportional_editing.html#bpy-types-toolsettings-use-proportional-edit"),
|
||||
("bpy.types.toolsettings.uv_sticky_select_mode*", "editors/uv/selecting.html#bpy-types-toolsettings-uv-sticky-select-mode"),
|
||||
|
@ -589,8 +629,12 @@ url_manual_mapping = (
|
|||
("bpy.types.brush.html#bpy.types.brush.jitter*", "sculpt_paint/brush/stroke.html#bpy-types-brush-html-bpy-types-brush-jitter"),
|
||||
("bpy.types.brushgpencilsettings.angle_factor*", "grease_pencil/modes/draw/tools/draw.html#bpy-types-brushgpencilsettings-angle-factor"),
|
||||
("bpy.types.brushgpencilsettings.pen_strength*", "grease_pencil/modes/draw/tools/erase.html#bpy-types-brushgpencilsettings-pen-strength"),
|
||||
("bpy.types.clothcollisionsettings.collection*", "physics/cloth/settings/collisions.html#bpy-types-clothcollisionsettings-collection"),
|
||||
("bpy.types.clothsettings.compression_damping*", "physics/cloth/settings/physical_properties.html#bpy-types-clothsettings-compression-damping"),
|
||||
("bpy.types.clothsettings.shear_stiffness_max*", "physics/cloth/settings/property_weights.html#bpy-types-clothsettings-shear-stiffness-max"),
|
||||
("bpy.types.clothsettings.use_pressure_volume*", "physics/cloth/settings/physical_properties.html#bpy-types-clothsettings-use-pressure-volume"),
|
||||
("bpy.types.clothsettings.vertex_group_intern*", "physics/cloth/settings/physical_properties.html#bpy-types-clothsettings-vertex-group-intern"),
|
||||
("bpy.types.clothsettings.vertex_group_shrink*", "physics/cloth/settings/property_weights.html#bpy-types-clothsettings-vertex-group-shrink"),
|
||||
("bpy.types.colormanagedviewsettings.exposure*", "render/color_management.html#bpy-types-colormanagedviewsettings-exposure"),
|
||||
("bpy.types.cyclescamerasettings.fisheye_lens*", "render/cycles/object_settings/cameras.html#bpy-types-cyclescamerasettings-fisheye-lens"),
|
||||
("bpy.types.cyclesobjectsettings.motion_steps*", "render/cycles/object_settings/object_data.html#bpy-types-cyclesobjectsettings-motion-steps"),
|
||||
|
@ -654,6 +698,7 @@ url_manual_mapping = (
|
|||
("bpy.types.brush.cloth_simulation_area_type*", "sculpt_paint/sculpting/tools/cloth.html#bpy-types-brush-cloth-simulation-area-type"),
|
||||
("bpy.types.brushgpencilsettings.eraser_mode*", "grease_pencil/modes/draw/tools/erase.html#bpy-types-brushgpencilsettings-eraser-mode"),
|
||||
("bpy.types.brushgpencilsettings.fill_factor*", "grease_pencil/modes/draw/tools/fill.html#bpy-types-brushgpencilsettings-fill-factor"),
|
||||
("bpy.types.clothsettings.use_sewing_springs*", "physics/cloth/settings/shape.html#bpy-types-clothsettings-use-sewing-springs"),
|
||||
("bpy.types.curve.bevel_factor_mapping_start*", "modeling/curves/properties/geometry.html#bpy-types-curve-bevel-factor-mapping-start"),
|
||||
("bpy.types.cyclescamerasettings.fisheye_fov*", "render/cycles/object_settings/cameras.html#bpy-types-cyclescamerasettings-fisheye-fov"),
|
||||
("bpy.types.cyclesobjectsettings.ao_distance*", "render/cycles/object_settings/object_data.html#bpy-types-cyclesobjectsettings-ao-distance"),
|
||||
|
@ -662,6 +707,7 @@ url_manual_mapping = (
|
|||
("bpy.types.cyclesrendersettings.dicing_rate*", "render/cycles/render_settings/subdivision.html#bpy-types-cyclesrendersettings-dicing-rate"),
|
||||
("bpy.types.cyclesrendersettings.max_bounces*", "render/cycles/render_settings/light_paths.html#bpy-types-cyclesrendersettings-max-bounces"),
|
||||
("bpy.types.cyclesrendersettings.use_fast_gi*", "render/cycles/render_settings/light_paths.html#bpy-types-cyclesrendersettings-use-fast-gi"),
|
||||
("bpy.types.cyclesrendersettings.use_guiding*", "render/cycles/render_settings/sampling.html#bpy-types-cyclesrendersettings-use-guiding"),
|
||||
("bpy.types.editbone.bbone_custom_handle_end*", "animation/armatures/bones/properties/bendy_bones.html#bpy-types-editbone-bbone-custom-handle-end"),
|
||||
("bpy.types.editbone.bbone_handle_type_start*", "animation/armatures/bones/properties/bendy_bones.html#bpy-types-editbone-bbone-handle-type-start"),
|
||||
("bpy.types.fieldsettings.guide_clump_amount*", "physics/forces/force_fields/types/curve_guide.html#bpy-types-fieldsettings-guide-clump-amount"),
|
||||
|
@ -687,6 +733,7 @@ url_manual_mapping = (
|
|||
("bpy.types.geometrynodecurveprimitivecircle*", "modeling/geometry_nodes/curve_primitives/curve_circle.html#bpy-types-geometrynodecurveprimitivecircle"),
|
||||
("bpy.types.geometrynodecurvequadraticbezier*", "modeling/geometry_nodes/curve_primitives/quadratic_bezier.html#bpy-types-geometrynodecurvequadraticbezier"),
|
||||
("bpy.types.geometrynoderemovenamedattribute*", "modeling/geometry_nodes/attribute/remove_named_attribute.html#bpy-types-geometrynoderemovenamedattribute"),
|
||||
("bpy.types.geometrynodesamplenearestsurface*", "modeling/geometry_nodes/mesh/sample_nearest_surface.html#bpy-types-geometrynodesamplenearestsurface"),
|
||||
("bpy.types.gpencillayer.use_viewlayer_masks*", "grease_pencil/properties/layers.html#bpy-types-gpencillayer-use-viewlayer-masks"),
|
||||
("bpy.types.greasepencil.onion_keyframe_type*", "grease_pencil/properties/onion_skinning.html#bpy-types-greasepencil-onion-keyframe-type"),
|
||||
("bpy.types.lineartgpencilmodifier.use_cache*", "grease_pencil/modifiers/generate/line_art.html#bpy-types-lineartgpencilmodifier-use-cache"),
|
||||
|
@ -718,16 +765,18 @@ url_manual_mapping = (
|
|||
("bpy.ops.object.vertex_group_normalize_all*", "sculpt_paint/weight_paint/editing.html#bpy-ops-object-vertex-group-normalize-all"),
|
||||
("bpy.ops.outliner.collection_color_tag_set*", "editors/outliner/editing.html#bpy-ops-outliner-collection-color-tag-set"),
|
||||
("bpy.ops.outliner.collection_enable_render*", "editors/outliner/editing.html#bpy-ops-outliner-collection-enable-render"),
|
||||
("bpy.ops.outliner.collection_exclude_clear*", "render/layers/introduction.html#bpy-ops-outliner-collection-exclude-clear"),
|
||||
("bpy.ops.outliner.collection_exclude_clear*", "editors/outliner/editing.html#bpy-ops-outliner-collection-exclude-clear"),
|
||||
("bpy.ops.outliner.collection_holdout_clear*", "render/layers/introduction.html#bpy-ops-outliner-collection-holdout-clear"),
|
||||
("bpy.ops.sculpt.face_set_change_visibility*", "sculpt_paint/sculpting/editing/face_sets.html#bpy-ops-sculpt-face-set-change-visibility"),
|
||||
("bpy.ops.sculpt.face_sets_randomize_colors*", "sculpt_paint/sculpting/editing/face_sets.html#bpy-ops-sculpt-face-sets-randomize-colors"),
|
||||
("bpy.types.animvizmotionpaths.frame_before*", "animation/motion_paths.html#bpy-types-animvizmotionpaths-frame-before"),
|
||||
("bpy.types.brush.disconnected_distance_max*", "sculpt_paint/sculpting/tools/pose.html#bpy-types-brush-disconnected-distance-max"),
|
||||
("bpy.types.brush.surface_smooth_iterations*", "sculpt_paint/sculpting/tools/smooth.html#bpy-types-brush-surface-smooth-iterations"),
|
||||
("bpy.types.brush.use_automasking_face_sets*", "sculpt_paint/sculpting/tool_settings/brush_settings.html#bpy-types-brush-use-automasking-face-sets"),
|
||||
("bpy.types.brushgpencilsettings.pen_jitter*", "grease_pencil/modes/draw/tools/draw.html#bpy-types-brushgpencilsettings-pen-jitter"),
|
||||
("bpy.types.brushgpencilsettings.show_lasso*", "grease_pencil/modes/draw/tools/draw.html#bpy-types-brushgpencilsettings-show-lasso"),
|
||||
("bpy.types.clothsettings.bending_stiffness*", "physics/cloth/settings/physical_properties.html#bpy-types-clothsettings-bending-stiffness"),
|
||||
("bpy.types.clothsettings.tension_stiffness*", "physics/cloth/settings/physical_properties.html#bpy-types-clothsettings-tension-stiffness"),
|
||||
("bpy.types.clothsettings.vertex_group_mass*", "physics/cloth/settings/shape.html#bpy-types-clothsettings-vertex-group-mass"),
|
||||
("bpy.types.compositornodeconvertcolorspace*", "compositing/types/converter/color_space.html#bpy-types-compositornodeconvertcolorspace"),
|
||||
("bpy.types.cyclescurverendersettings.shape*", "render/cycles/render_settings/hair.html#bpy-types-cyclescurverendersettings-shape"),
|
||||
("bpy.types.cycleslightsettings.cast_shadow*", "render/cycles/light_settings.html#bpy-types-cycleslightsettings-cast-shadow"),
|
||||
|
@ -785,6 +834,7 @@ url_manual_mapping = (
|
|||
("bpy.types.spaceoutliner.use_filter_object*", "editors/outliner/interface.html#bpy-types-spaceoutliner-use-filter-object"),
|
||||
("bpy.types.spacesequenceeditor.use_proxies*", "editors/video_sequencer/preview/sidebar.html#bpy-types-spacesequenceeditor-use-proxies"),
|
||||
("bpy.types.spaceuveditor.edge_display_type*", "editors/uv/overlays.html#bpy-types-spaceuveditor-edge-display-type"),
|
||||
("bpy.types.spaceuveditor.grid_shape_source*", "editors/uv/overlays.html#bpy-types-spaceuveditor-grid-shape-source"),
|
||||
("bpy.types.spaceuveditor.show_pixel_coords*", "editors/uv/sidebar.html#bpy-types-spaceuveditor-show-pixel-coords"),
|
||||
("bpy.types.spaceview3d.show_reconstruction*", "editors/3dview/display/overlays.html#bpy-types-spaceview3d-show-reconstruction"),
|
||||
("bpy.types.toolsettings.gpencil_selectmode*", "grease_pencil/selecting.html#bpy-types-toolsettings-gpencil-selectmode"),
|
||||
|
@ -801,17 +851,17 @@ url_manual_mapping = (
|
|||
("bpy.ops.object.anim_transforms_to_deltas*", "scene_layout/object/editing/apply.html#bpy-ops-object-anim-transforms-to-deltas"),
|
||||
("bpy.ops.object.modifier_copy_to_selected*", "modeling/modifiers/introduction.html#bpy-ops-object-modifier-copy-to-selected"),
|
||||
("bpy.ops.preferences.app_template_install*", "advanced/app_templates.html#bpy-ops-preferences-app-template-install"),
|
||||
("bpy.types.actionposemarkers.active_index*", "animation/armatures/properties/pose_library.html#bpy-types-actionposemarkers-active-index"),
|
||||
("bpy.types.animvizmotionpaths.frame_after*", "animation/motion_paths.html#bpy-types-animvizmotionpaths-frame-after"),
|
||||
("bpy.types.animvizmotionpaths.frame_start*", "animation/motion_paths.html#bpy-types-animvizmotionpaths-frame-start"),
|
||||
("bpy.types.bakesettings.use_pass_indirect*", "render/cycles/baking.html#bpy-types-bakesettings-use-pass-indirect"),
|
||||
("bpy.types.brush.cloth_force_falloff_type*", "sculpt_paint/sculpting/tools/cloth.html#bpy-types-brush-cloth-force-falloff-type"),
|
||||
("bpy.types.brush.use_automasking_topology*", "sculpt_paint/sculpting/tool_settings/brush_settings.html#bpy-types-brush-use-automasking-topology"),
|
||||
("bpy.types.brush.use_automasking_topology*", "sculpt_paint/brush/brush_settings.html#bpy-types-brush-use-automasking-topology"),
|
||||
("bpy.types.brushgpencilsettings.caps_type*", "grease_pencil/modes/draw/tools/draw.html#bpy-types-brushgpencilsettings-caps-type"),
|
||||
("bpy.types.brushgpencilsettings.show_fill*", "grease_pencil/modes/draw/tools/fill.html#bpy-types-brushgpencilsettings-show-fill"),
|
||||
("bpy.types.brushgpencilsettings.uv_random*", "grease_pencil/modes/draw/tools/draw.html#bpy-types-brushgpencilsettings-uv-random"),
|
||||
("bpy.types.brushtextureslot.mask_map_mode*", "sculpt_paint/brush/texture_mask.html#bpy-types-brushtextureslot-mask-map-mode"),
|
||||
("bpy.types.clothsettings.internal_tension*", "physics/cloth/settings/physical_properties.html#bpy-types-clothsettings-internal-tension"),
|
||||
("bpy.types.brushtextureslot.mask_map_mode*", "sculpt_paint/brush/texture.html#bpy-types-brushtextureslot-mask-map-mode"),
|
||||
("bpy.types.clothsettings.sewing_force_max*", "physics/cloth/settings/shape.html#bpy-types-clothsettings-sewing-force-max"),
|
||||
("bpy.types.clothsettings.use_dynamic_mesh*", "physics/cloth/settings/shape.html#bpy-types-clothsettings-use-dynamic-mesh"),
|
||||
("bpy.types.colormanagedviewsettings.gamma*", "render/color_management.html#bpy-types-colormanagedviewsettings-gamma"),
|
||||
("bpy.types.compositornodeplanetrackdeform*", "compositing/types/distort/plane_track_deform.html#bpy-types-compositornodeplanetrackdeform"),
|
||||
("bpy.types.curve.bevel_factor_mapping_end*", "modeling/curves/properties/geometry.html#bpy-types-curve-bevel-factor-mapping-end"),
|
||||
|
@ -842,6 +892,8 @@ url_manual_mapping = (
|
|||
("bpy.types.geometrynodeinputinstancescale*", "modeling/geometry_nodes/instances/instance_scale.html#bpy-types-geometrynodeinputinstancescale"),
|
||||
("bpy.types.geometrynodeinputmaterialindex*", "modeling/geometry_nodes/material/material_index.html#bpy-types-geometrynodeinputmaterialindex"),
|
||||
("bpy.types.geometrynodeinputmeshedgeangle*", "modeling/geometry_nodes/mesh/edge_angle.html#bpy-types-geometrynodeinputmeshedgeangle"),
|
||||
("bpy.types.geometrynodeoffsetcornerinface*", "modeling/geometry_nodes/mesh_topology/offset_corner_in_face.html#bpy-types-geometrynodeoffsetcornerinface"),
|
||||
("bpy.types.geometrynodeoffsetpointincurve*", "modeling/geometry_nodes/curve_topology/offset_point_in_curve.html#bpy-types-geometrynodeoffsetpointincurve"),
|
||||
("bpy.types.geometrynodeseparatecomponents*", "modeling/geometry_nodes/geometry/separate_components.html#bpy-types-geometrynodeseparatecomponents"),
|
||||
("bpy.types.geometrynodesubdivisionsurface*", "modeling/geometry_nodes/mesh/subdivision_surface.html#bpy-types-geometrynodesubdivisionsurface"),
|
||||
("bpy.types.geometrynodetranslateinstances*", "modeling/geometry_nodes/instances/translate_instances.html#bpy-types-geometrynodetranslateinstances"),
|
||||
|
@ -887,7 +939,7 @@ url_manual_mapping = (
|
|||
("bpy.ops.object.assign_property_defaults*", "animation/armatures/posing/editing/apply.html#bpy-ops-object-assign-property-defaults"),
|
||||
("bpy.ops.object.vertex_group_limit_total*", "sculpt_paint/weight_paint/editing.html#bpy-ops-object-vertex-group-limit-total"),
|
||||
("bpy.ops.object.vertex_group_remove_from*", "modeling/meshes/properties/vertex_groups/vertex_groups.html#bpy-ops-object-vertex-group-remove-from"),
|
||||
("bpy.ops.outliner.collection_exclude_set*", "render/layers/introduction.html#bpy-ops-outliner-collection-exclude-set"),
|
||||
("bpy.ops.outliner.collection_exclude_set*", "editors/outliner/editing.html#bpy-ops-outliner-collection-exclude-set"),
|
||||
("bpy.ops.outliner.collection_hide_inside*", "editors/outliner/editing.html#bpy-ops-outliner-collection-hide-inside"),
|
||||
("bpy.ops.outliner.collection_holdout_set*", "render/layers/introduction.html#bpy-ops-outliner-collection-holdout-set"),
|
||||
("bpy.ops.outliner.collection_show_inside*", "editors/outliner/editing.html#bpy-ops-outliner-collection-show-inside"),
|
||||
|
@ -906,8 +958,10 @@ url_manual_mapping = (
|
|||
("bpy.types.brushgpencilsettings.hardness*", "grease_pencil/modes/draw/tools/draw.html#bpy-types-brushgpencilsettings-hardness"),
|
||||
("bpy.types.brushgpencilsettings.use_trim*", "grease_pencil/modes/draw/tools/draw.html#bpy-types-brushgpencilsettings-use-trim"),
|
||||
("bpy.types.brushtextureslot.random_angle*", "sculpt_paint/brush/texture.html#bpy-types-brushtextureslot-random-angle"),
|
||||
("bpy.types.clothsettings.internal_spring*", "physics/cloth/settings/physical_properties.html#bpy-types-clothsettings-internal-spring"),
|
||||
("bpy.types.clothsettings.bending_damping*", "physics/cloth/settings/physical_properties.html#bpy-types-clothsettings-bending-damping"),
|
||||
("bpy.types.clothsettings.pressure_factor*", "physics/cloth/settings/physical_properties.html#bpy-types-clothsettings-pressure-factor"),
|
||||
("bpy.types.clothsettings.shear_stiffness*", "physics/cloth/settings/physical_properties.html#bpy-types-clothsettings-shear-stiffness"),
|
||||
("bpy.types.clothsettings.tension_damping*", "physics/cloth/settings/physical_properties.html#bpy-types-clothsettings-tension-damping"),
|
||||
("bpy.types.colormanagedviewsettings.look*", "render/color_management.html#bpy-types-colormanagedviewsettings-look"),
|
||||
("bpy.types.compositornodecolorcorrection*", "compositing/types/color/color_correction.html#bpy-types-compositornodecolorcorrection"),
|
||||
("bpy.types.compositornodemoviedistortion*", "compositing/types/distort/movie_distortion.html#bpy-types-compositornodemoviedistortion"),
|
||||
|
@ -935,7 +989,6 @@ url_manual_mapping = (
|
|||
("bpy.types.freestylelinestyle.sort_order*", "render/freestyle/view_layer/line_style/strokes.html#bpy-types-freestylelinestyle-sort-order"),
|
||||
("bpy.types.freestylelinestyle.split_dash*", "render/freestyle/view_layer/line_style/strokes.html#bpy-types-freestylelinestyle-split-dash"),
|
||||
("bpy.types.freestylesettings.use_culling*", "render/freestyle/view_layer/freestyle.html#bpy-types-freestylesettings-use-culling"),
|
||||
("bpy.types.geometrynodeattributetransfer*", "modeling/geometry_nodes/attribute/transfer_attribute.html#bpy-types-geometrynodeattributetransfer"),
|
||||
("bpy.types.geometrynodeduplicateelements*", "modeling/geometry_nodes/geometry/duplicate_elements.html#bpy-types-geometrynodeduplicateelements"),
|
||||
("bpy.types.geometrynodeinputmeshfacearea*", "modeling/geometry_nodes/mesh/face_area.html#bpy-types-geometrynodeinputmeshfacearea"),
|
||||
("bpy.types.geometrynodeinputsplinecyclic*", "modeling/geometry_nodes/curve/is_spline_cyclic.html#bpy-types-geometrynodeinputsplinecyclic"),
|
||||
|
@ -956,6 +1009,7 @@ url_manual_mapping = (
|
|||
("bpy.types.rendersettings.pixel_aspect_y*", "render/output/properties/format.html#bpy-types-rendersettings-pixel-aspect-y"),
|
||||
("bpy.types.rigidbodyconstraint.use_limit*", "physics/rigid_body/constraints/introduction.html#bpy-types-rigidbodyconstraint-use-limit"),
|
||||
("bpy.types.sceneeevee.taa_render_samples*", "render/eevee/render_settings/sampling.html#bpy-types-sceneeevee-taa-render-samples"),
|
||||
("bpy.types.sculpt.use_automasking_cavity*", "sculpt_paint/sculpting/controls.html#bpy-types-sculpt-use-automasking-cavity"),
|
||||
("bpy.types.sequence.frame_final_duration*", "editors/video_sequencer/sequencer/sidebar/strip.html#bpy-types-sequence-frame-final-duration"),
|
||||
("bpy.types.spaceoutliner.use_sync_select*", "editors/outliner/interface.html#bpy-types-spaceoutliner-use-sync-select"),
|
||||
("bpy.types.spaceproperties.outliner_sync*", "editors/properties_editor.html#bpy-types-spaceproperties-outliner-sync"),
|
||||
|
@ -964,8 +1018,8 @@ url_manual_mapping = (
|
|||
("bpy.types.spacetexteditor.margin_column*", "editors/text_editor.html#bpy-types-spacetexteditor-margin-column"),
|
||||
("bpy.types.spacetexteditor.use_find_wrap*", "editors/text_editor.html#bpy-types-spacetexteditor-use-find-wrap"),
|
||||
("bpy.types.spaceuveditor.tile_grid_shape*", "editors/uv/overlays.html#bpy-types-spaceuveditor-tile-grid-shape"),
|
||||
("bpy.types.spaceuveditor.use_custom_grid*", "editors/uv/overlays.html#bpy-types-spaceuveditor-use-custom-grid"),
|
||||
("bpy.types.spaceuveditor.use_live_unwrap*", "modeling/meshes/uv/editing.html#bpy-types-spaceuveditor-use-live-unwrap"),
|
||||
("bpy.types.spaceview3d.use_render_border*", "editors/3dview/sidebar.html#bpy-types-spaceview3d-use-render-border"),
|
||||
("bpy.types.toolsettings.double_threshold*", "modeling/meshes/tools/tool_settings.html#bpy-types-toolsettings-double-threshold"),
|
||||
("bpy.types.toolsettings.lock_object_mode*", "interface/window_system/topbar.html#bpy-types-toolsettings-lock-object-mode"),
|
||||
("bpy.types.toolsettings.mesh_select_mode*", "modeling/meshes/selecting/introduction.html#bpy-types-toolsettings-mesh-select-mode"),
|
||||
|
@ -995,6 +1049,7 @@ url_manual_mapping = (
|
|||
("bpy.types.brush.snake_hook_deform_type*", "sculpt_paint/sculpting/tools/snake_hook.html#bpy-types-brush-snake-hook-deform-type"),
|
||||
("bpy.types.brush.use_grab_active_vertex*", "sculpt_paint/sculpting/tools/grab.html#bpy-types-brush-use-grab-active-vertex"),
|
||||
("bpy.types.brush.use_pose_lock_rotation*", "sculpt_paint/sculpting/tools/pose.html#bpy-types-brush-use-pose-lock-rotation"),
|
||||
("bpy.types.clothsettings.rest_shape_key*", "physics/cloth/settings/shape.html#bpy-types-clothsettings-rest-shape-key"),
|
||||
("bpy.types.compositornodebrightcontrast*", "compositing/types/color/bright_contrast.html#bpy-types-compositornodebrightcontrast"),
|
||||
("bpy.types.compositornodedoubleedgemask*", "compositing/types/matte/double_edge_mask.html#bpy-types-compositornodedoubleedgemask"),
|
||||
("bpy.types.cyclesrendersettings.samples*", "render/cycles/render_settings/sampling.html#bpy-types-cyclesrendersettings-samples"),
|
||||
|
@ -1048,6 +1103,7 @@ url_manual_mapping = (
|
|||
("bpy.types.spacepreferences.filter_type*", "editors/preferences/keymap.html#bpy-types-spacepreferences-filter-type"),
|
||||
("bpy.types.spacetexteditor.replace_text*", "editors/text_editor.html#bpy-types-spacetexteditor-replace-text"),
|
||||
("bpy.types.spacetexteditor.use_find_all*", "editors/text_editor.html#bpy-types-spacetexteditor-use-find-all"),
|
||||
("bpy.types.spaceview3d.use_local_camera*", "editors/3dview/sidebar.html#bpy-types-spaceview3d-use-local-camera"),
|
||||
("bpy.types.toolsettings.snap_uv_element*", "editors/uv/controls/snapping.html#bpy-types-toolsettings-snap-uv-element"),
|
||||
("bpy.types.toolsettings.use_snap_rotate*", "editors/3dview/controls/snapping.html#bpy-types-toolsettings-use-snap-rotate"),
|
||||
("bpy.types.toolsettings.uv_relax_method*", "modeling/meshes/uv/tools/relax.html#bpy-types-toolsettings-uv-relax-method"),
|
||||
|
@ -1090,6 +1146,10 @@ url_manual_mapping = (
|
|||
("bpy.types.brushgpencilsettings.dilate*", "grease_pencil/modes/draw/tools/fill.html#bpy-types-brushgpencilsettings-dilate"),
|
||||
("bpy.types.brushgpencilsettings.random*", "grease_pencil/modes/draw/tools/draw.html#bpy-types-brushgpencilsettings-random"),
|
||||
("bpy.types.brushtextureslot.use_random*", "sculpt_paint/brush/texture.html#bpy-types-brushtextureslot-use-random"),
|
||||
("bpy.types.clothsettings.bending_model*", "physics/cloth/settings/physical_properties.html#bpy-types-clothsettings-bending-model"),
|
||||
("bpy.types.clothsettings.fluid_density*", "physics/cloth/settings/physical_properties.html#bpy-types-clothsettings-fluid-density"),
|
||||
("bpy.types.clothsettings.pin_stiffness*", "physics/cloth/settings/shape.html#bpy-types-clothsettings-pin-stiffness"),
|
||||
("bpy.types.clothsettings.shear_damping*", "physics/cloth/settings/physical_properties.html#bpy-types-clothsettings-shear-damping"),
|
||||
("bpy.types.clothsettings.target_volume*", "physics/cloth/settings/physical_properties.html#bpy-types-clothsettings-target-volume"),
|
||||
("bpy.types.colormanageddisplaysettings*", "render/color_management.html#bpy-types-colormanageddisplaysettings"),
|
||||
("bpy.types.colorramp.hue_interpolation*", "interface/controls/templates/color_ramp.html#bpy-types-colorramp-hue-interpolation"),
|
||||
|
@ -1113,12 +1173,14 @@ url_manual_mapping = (
|
|||
("bpy.types.freestylelinestyle.chaining*", "render/freestyle/view_layer/line_style/strokes.html#bpy-types-freestylelinestyle-chaining"),
|
||||
("bpy.types.freestylelinestyle.sort_key*", "render/freestyle/view_layer/line_style/strokes.html#bpy-types-freestylelinestyle-sort-key"),
|
||||
("bpy.types.geometrynodeaccumulatefield*", "modeling/geometry_nodes/utilities/accumulate_field.html#bpy-types-geometrynodeaccumulatefield"),
|
||||
("bpy.types.geometrynodecornersofvertex*", "modeling/geometry_nodes/mesh_topology/corners_of_vertex.html#bpy-types-geometrynodecornersofvertex"),
|
||||
("bpy.types.geometrynodecurvesethandles*", "modeling/geometry_nodes/curve/set_handle_type.html#bpy-types-geometrynodecurvesethandles"),
|
||||
("bpy.types.geometrynodecurvesplinetype*", "modeling/geometry_nodes/curve/set_spline_type.html#bpy-types-geometrynodecurvesplinetype"),
|
||||
("bpy.types.geometrynodeinputmeshisland*", "modeling/geometry_nodes/mesh/mesh_island.html#bpy-types-geometrynodeinputmeshisland"),
|
||||
("bpy.types.geometrynodemergebydistance*", "modeling/geometry_nodes/geometry/merge_by_distance.html#bpy-types-geometrynodemergebydistance"),
|
||||
("bpy.types.geometrynodereplacematerial*", "modeling/geometry_nodes/material/replace_material.html#bpy-types-geometrynodereplacematerial"),
|
||||
("bpy.types.geometrynoderotateinstances*", "modeling/geometry_nodes/instances/rotate_instances.html#bpy-types-geometrynoderotateinstances"),
|
||||
("bpy.types.geometrynodesampleuvsurface*", "modeling/geometry_nodes/mesh/sample_uv_surface.html#bpy-types-geometrynodesampleuvsurface"),
|
||||
("bpy.types.geometrynodesetsplinecyclic*", "modeling/geometry_nodes/curve/set_spline_cyclic.html#bpy-types-geometrynodesetsplinecyclic"),
|
||||
("bpy.types.geometrynodesplineparameter*", "modeling/geometry_nodes/curve/spline_parameter.html#bpy-types-geometrynodesplineparameter"),
|
||||
("bpy.types.gpencillayer.use_mask_layer*", "grease_pencil/properties/layers.html#bpy-types-gpencillayer-use-mask-layer"),
|
||||
|
@ -1183,12 +1245,12 @@ url_manual_mapping = (
|
|||
("bpy.types.bone.use_envelope_multiply*", "animation/armatures/bones/properties/deform.html#bpy-types-bone-use-envelope-multiply"),
|
||||
("bpy.types.brush.boundary_deform_type*", "sculpt_paint/sculpting/tools/boundary.html#bpy-types-brush-boundary-deform-type"),
|
||||
("bpy.types.brush.cursor_overlay_alpha*", "sculpt_paint/brush/cursor.html#bpy-types-brush-cursor-overlay-alpha"),
|
||||
("bpy.types.brush.normal_radius_factor*", "sculpt_paint/sculpting/tool_settings/brush_settings.html#bpy-types-brush-normal-radius-factor"),
|
||||
("bpy.types.brush.normal_radius_factor*", "sculpt_paint/brush/brush_settings.html#bpy-types-brush-normal-radius-factor"),
|
||||
("bpy.types.brush.smooth_stroke_factor*", "sculpt_paint/brush/stroke.html#bpy-types-brush-smooth-stroke-factor"),
|
||||
("bpy.types.brush.smooth_stroke_radius*", "sculpt_paint/brush/stroke.html#bpy-types-brush-smooth-stroke-radius"),
|
||||
("bpy.types.brush.topology_rake_factor*", "sculpt_paint/sculpting/tool_settings/dyntopo.html#bpy-types-brush-topology-rake-factor"),
|
||||
("bpy.types.brush.topology_rake_factor*", "sculpt_paint/brush/brush_settings.html#bpy-types-brush-topology-rake-factor"),
|
||||
("bpy.types.brush.use_pose_ik_anchored*", "sculpt_paint/sculpting/tools/pose.html#bpy-types-brush-use-pose-ik-anchored"),
|
||||
("bpy.types.brush.use_pressure_masking*", "sculpt_paint/brush/texture_mask.html#bpy-types-brush-use-pressure-masking"),
|
||||
("bpy.types.brush.use_pressure_masking*", "sculpt_paint/brush/texture.html#bpy-types-brush-use-pressure-masking"),
|
||||
("bpy.types.brush.use_pressure_spacing*", "sculpt_paint/brush/stroke.html#bpy-types-brush-use-pressure-spacing"),
|
||||
("bpy.types.brushgpencilsettings.angle*", "grease_pencil/modes/draw/tools/draw.html#bpy-types-brushgpencilsettings-angle"),
|
||||
("bpy.types.clothsettings.use_pressure*", "physics/cloth/settings/physical_properties.html#bpy-types-clothsettings-use-pressure"),
|
||||
|
@ -1212,11 +1274,13 @@ url_manual_mapping = (
|
|||
("bpy.types.geometrynodenamedattribute*", "modeling/geometry_nodes/input/named_attribute.html#bpy-types-geometrynodenamedattribute"),
|
||||
("bpy.types.geometrynodepointstovolume*", "modeling/geometry_nodes/point/points_to_volume.html#bpy-types-geometrynodepointstovolume"),
|
||||
("bpy.types.geometrynodescaleinstances*", "modeling/geometry_nodes/instances/scale_instances.html#bpy-types-geometrynodescaleinstances"),
|
||||
("bpy.types.geometrynodesetcurvenormal*", "modeling/geometry_nodes/curve/set_curve_normal.html#bpy-types-geometrynodesetcurvenormal"),
|
||||
("bpy.types.geometrynodesetcurveradius*", "modeling/geometry_nodes/curve/set_curve_radius.html#bpy-types-geometrynodesetcurveradius"),
|
||||
("bpy.types.geometrynodesetpointradius*", "modeling/geometry_nodes/point/set_point_radius.html#bpy-types-geometrynodesetpointradius"),
|
||||
("bpy.types.geometrynodesetshadesmooth*", "modeling/geometry_nodes/mesh/set_shade_smooth.html#bpy-types-geometrynodesetshadesmooth"),
|
||||
("bpy.types.geometrynodestringtocurves*", "modeling/geometry_nodes/text/string_to_curves.html#bpy-types-geometrynodestringtocurves"),
|
||||
("bpy.types.geometrynodesubdividecurve*", "modeling/geometry_nodes/curve/subdivide_curve.html#bpy-types-geometrynodesubdividecurve"),
|
||||
("bpy.types.geometrynodevertexofcorner*", "modeling/geometry_nodes/mesh_topology/vertex_of_corner.html#bpy-types-geometrynodevertexofcorner"),
|
||||
("bpy.types.gpencillayer.channel_color*", "grease_pencil/properties/layers.html#bpy-types-gpencillayer-channel-color"),
|
||||
("bpy.types.gpencillayer.use_solo_mode*", "grease_pencil/properties/layers.html#bpy-types-gpencillayer-use-solo-mode"),
|
||||
("bpy.types.greasepencil.use_multiedit*", "grease_pencil/multiframe.html#bpy-types-greasepencil-use-multiedit"),
|
||||
|
@ -1283,13 +1347,14 @@ url_manual_mapping = (
|
|||
("bpy.types.brush.texture_sample_bias*", "sculpt_paint/brush/texture.html#bpy-types-brush-texture-sample-bias"),
|
||||
("bpy.types.brush.use_cloth_collision*", "sculpt_paint/sculpting/tools/cloth.html#bpy-types-brush-use-cloth-collision"),
|
||||
("bpy.types.brush.use_grab_silhouette*", "sculpt_paint/sculpting/tools/grab.html#bpy-types-brush-use-grab-silhouette"),
|
||||
("bpy.types.brush.use_original_normal*", "sculpt_paint/sculpting/tool_settings/brush_settings.html#bpy-types-brush-use-original-normal"),
|
||||
("bpy.types.brush.use_original_normal*", "sculpt_paint/brush/brush_settings.html#bpy-types-brush-use-original-normal"),
|
||||
("bpy.types.brush.use_pressure_jitter*", "sculpt_paint/brush/stroke.html#bpy-types-brush-use-pressure-jitter"),
|
||||
("bpy.types.brush.use_primary_overlay*", "sculpt_paint/brush/cursor.html#bpy-types-brush-use-primary-overlay"),
|
||||
("bpy.types.brushcurvessculptsettings*", "sculpt_paint/curves_sculpting/index.html#bpy-types-brushcurvessculptsettings"),
|
||||
("bpy.types.brushtextureslot.map_mode*", "sculpt_paint/brush/texture.html#bpy-types-brushtextureslot-map-mode"),
|
||||
("bpy.types.brushtextureslot.use_rake*", "sculpt_paint/brush/texture.html#bpy-types-brushtextureslot-use-rake"),
|
||||
("bpy.types.camera.passepartout_alpha*", "render/cameras.html#bpy-types-camera-passepartout-alpha"),
|
||||
("bpy.types.clothsettings.air_damping*", "physics/cloth/settings/physical_properties.html#bpy-types-clothsettings-air-damping"),
|
||||
("bpy.types.colorrampelement.position*", "interface/controls/templates/color_ramp.html#bpy-types-colorrampelement-position"),
|
||||
("bpy.types.compositornodechromamatte*", "compositing/types/matte/chroma_key.html#bpy-types-compositornodechromamatte"),
|
||||
("bpy.types.compositornodecryptomatte*", "compositing/types/matte/cryptomatte_legacy.html#bpy-types-compositornodecryptomatte"),
|
||||
|
@ -1314,11 +1379,15 @@ url_manual_mapping = (
|
|||
("bpy.types.functionnodeseparatecolor*", "modeling/geometry_nodes/color/separate_color.html#bpy-types-functionnodeseparatecolor"),
|
||||
("bpy.types.functionnodevaluetostring*", "modeling/geometry_nodes/text/value_to_string.html#bpy-types-functionnodevaluetostring"),
|
||||
("bpy.types.geometrynodecurvetopoints*", "modeling/geometry_nodes/curve/curve_to_points.html#bpy-types-geometrynodecurvetopoints"),
|
||||
("bpy.types.geometrynodeedgesofcorner*", "modeling/geometry_nodes/mesh_topology/edges_of_corner.html#bpy-types-geometrynodeedgesofcorner"),
|
||||
("bpy.types.geometrynodeedgesofvertex*", "modeling/geometry_nodes/mesh_topology/edges_of_vertex.html#bpy-types-geometrynodeedgesofvertex"),
|
||||
("bpy.types.geometrynodefieldondomain*", "modeling/geometry_nodes/utilities/interpolate_domain.html#bpy-types-geometrynodefieldondomain"),
|
||||
("bpy.types.geometrynodeinputmaterial*", "modeling/geometry_nodes/input/material.html#bpy-types-geometrynodeinputmaterial"),
|
||||
("bpy.types.geometrynodeinputposition*", "modeling/geometry_nodes/input/position.html#bpy-types-geometrynodeinputposition"),
|
||||
("bpy.types.geometrynodemeshicosphere*", "modeling/geometry_nodes/mesh_primitives/icosphere.html#bpy-types-geometrynodemeshicosphere"),
|
||||
("bpy.types.geometrynodepointsofcurve*", "modeling/geometry_nodes/curve_topology/points_of_curve.html#bpy-types-geometrynodepointsofcurve"),
|
||||
("bpy.types.geometrynoderesamplecurve*", "modeling/geometry_nodes/curve/resample_curve.html#bpy-types-geometrynoderesamplecurve"),
|
||||
("bpy.types.geometrynodesamplenearest*", "modeling/geometry_nodes/geometry/sample_nearest.html#bpy-types-geometrynodesamplenearest"),
|
||||
("bpy.types.geometrynodescaleelements*", "modeling/geometry_nodes/mesh/scale_elements.html#bpy-types-geometrynodescaleelements"),
|
||||
("bpy.types.geometrynodesubdividemesh*", "modeling/geometry_nodes/mesh/subdivide_mesh.html#bpy-types-geometrynodesubdividemesh"),
|
||||
("bpy.types.geometrynodeuvpackislands*", "modeling/geometry_nodes/uv/pack_uv_islands.html#bpy-types-geometrynodeuvpackislands"),
|
||||
|
@ -1375,6 +1444,7 @@ url_manual_mapping = (
|
|||
("bpy.ops.mesh.select_interior_faces*", "modeling/meshes/selecting/all_by_trait.html#bpy-ops-mesh-select-interior-faces"),
|
||||
("bpy.ops.mesh.select_similar_region*", "modeling/meshes/selecting/similar.html#bpy-ops-mesh-select-similar-region"),
|
||||
("bpy.ops.mesh.tris_convert_to_quads*", "modeling/meshes/editing/face/triangles_quads.html#bpy-ops-mesh-tris-convert-to-quads"),
|
||||
("bpy.ops.node.duplicate_move_linked*", "interface/controls/nodes/editing.html#bpy-ops-node-duplicate-move-linked"),
|
||||
("bpy.ops.object.datalayout_transfer*", "scene_layout/object/editing/link_transfer/transfer_mesh_data_layout.html#bpy-ops-object-datalayout-transfer"),
|
||||
("bpy.ops.object.multires_base_apply*", "modeling/modifiers/generate/multiresolution.html#bpy-ops-object-multires-base-apply"),
|
||||
("bpy.ops.object.randomize_transform*", "scene_layout/object/editing/transform/randomize.html#bpy-ops-object-randomize-transform"),
|
||||
|
@ -1386,7 +1456,6 @@ url_manual_mapping = (
|
|||
("bpy.ops.outliner.collection_enable*", "editors/outliner/editing.html#bpy-ops-outliner-collection-enable"),
|
||||
("bpy.ops.palette.extract_from_image*", "editors/image/editing.html#bpy-ops-palette-extract-from-image"),
|
||||
("bpy.ops.pose.user_transforms_clear*", "animation/armatures/posing/editing/clear.html#bpy-ops-pose-user-transforms-clear"),
|
||||
("bpy.ops.poselib.browse_interactive*", "animation/armatures/posing/editing/pose_library.html#bpy-ops-poselib-browse-interactive"),
|
||||
("bpy.ops.screen.region_context_menu*", "interface/controls/buttons/menus.html#bpy-ops-screen-region-context-menu"),
|
||||
("bpy.ops.sculpt.set_persistent_base*", "sculpt_paint/sculpting/tools/layer.html#bpy-ops-sculpt-set-persistent-base"),
|
||||
("bpy.ops.sequencer.crossfade_sounds*", "video_editing/edit/montage/strips/transitions/sound_crossfade.html#bpy-ops-sequencer-crossfade-sounds"),
|
||||
|
@ -1399,12 +1468,15 @@ url_manual_mapping = (
|
|||
("bpy.types.bakesettings.cage_object*", "render/cycles/baking.html#bpy-types-bakesettings-cage-object"),
|
||||
("bpy.types.bakesettings.margin_type*", "render/cycles/baking.html#bpy-types-bakesettings-margin-type"),
|
||||
("bpy.types.bone.use_relative_parent*", "animation/armatures/bones/properties/relations.html#bpy-types-bone-use-relative-parent"),
|
||||
("bpy.types.brush.auto_smooth_factor*", "sculpt_paint/sculpting/tool_settings/brush_settings.html#bpy-types-brush-auto-smooth-factor"),
|
||||
("bpy.types.brush.auto_smooth_factor*", "sculpt_paint/brush/brush_settings.html#bpy-types-brush-auto-smooth-factor"),
|
||||
("bpy.types.brush.smooth_deform_type*", "sculpt_paint/sculpting/tools/smooth.html#bpy-types-brush-smooth-deform-type"),
|
||||
("bpy.types.brush.use_connected_only*", "sculpt_paint/sculpting/tools/pose.html#bpy-types-brush-use-connected-only"),
|
||||
("bpy.types.brush.use_cursor_overlay*", "sculpt_paint/brush/cursor.html#bpy-types-brush-use-cursor-overlay"),
|
||||
("bpy.types.brush.use_original_plane*", "sculpt_paint/sculpting/tool_settings/brush_settings.html#bpy-types-brush-use-original-plane"),
|
||||
("bpy.types.brush.use_original_plane*", "sculpt_paint/brush/brush_settings.html#bpy-types-brush-use-original-plane"),
|
||||
("bpy.types.camera.show_passepartout*", "render/cameras.html#bpy-types-camera-show-passepartout"),
|
||||
("bpy.types.clothsettings.shrink_max*", "physics/cloth/settings/property_weights.html#bpy-types-clothsettings-shrink-max"),
|
||||
("bpy.types.clothsettings.shrink_min*", "physics/cloth/settings/shape.html#bpy-types-clothsettings-shrink-min"),
|
||||
("bpy.types.clothsettings.time_scale*", "physics/cloth/settings/index.html#bpy-types-clothsettings-time-scale"),
|
||||
("bpy.types.collection.lineart_usage*", "scene_layout/collections/collections.html#bpy-types-collection-lineart-usage"),
|
||||
("bpy.types.colormanagedviewsettings*", "render/color_management.html#bpy-types-colormanagedviewsettings"),
|
||||
("bpy.types.compositornodebokehimage*", "compositing/types/input/bokeh_image.html#bpy-types-compositornodebokehimage"),
|
||||
|
@ -1425,6 +1497,8 @@ url_manual_mapping = (
|
|||
("bpy.types.freestylelinestyle.color*", "render/freestyle/view_layer/line_style/color.html#bpy-types-freestylelinestyle-color"),
|
||||
("bpy.types.functionnodecombinecolor*", "modeling/geometry_nodes/color/combine_color.html#bpy-types-functionnodecombinecolor"),
|
||||
("bpy.types.functionnodestringlength*", "modeling/geometry_nodes/text/string_length.html#bpy-types-functionnodestringlength"),
|
||||
("bpy.types.geometrynodecurveofpoint*", "modeling/geometry_nodes/curve_topology/curve_of_point.html#bpy-types-geometrynodecurveofpoint"),
|
||||
("bpy.types.geometrynodefaceofcorner*", "modeling/geometry_nodes/mesh_topology/face_of_corner.html#bpy-types-geometrynodefaceofcorner"),
|
||||
("bpy.types.geometrynodefieldatindex*", "modeling/geometry_nodes/utilities/field_at_index.html#bpy-types-geometrynodefieldatindex"),
|
||||
("bpy.types.geometrynodeimagetexture*", "modeling/geometry_nodes/texture/image.html#bpy-types-geometrynodeimagetexture"),
|
||||
("bpy.types.geometrynodeinputtangent*", "modeling/geometry_nodes/curve/curve_tangent.html#bpy-types-geometrynodeinputtangent"),
|
||||
|
@ -1566,6 +1640,7 @@ url_manual_mapping = (
|
|||
("bpy.types.geometrynodemeshboolean*", "modeling/geometry_nodes/mesh/mesh_boolean.html#bpy-types-geometrynodemeshboolean"),
|
||||
("bpy.types.geometrynodemeshtocurve*", "modeling/geometry_nodes/mesh/mesh_to_curve.html#bpy-types-geometrynodemeshtocurve"),
|
||||
("bpy.types.geometrynodesamplecurve*", "modeling/geometry_nodes/curve/sample_curve.html#bpy-types-geometrynodesamplecurve"),
|
||||
("bpy.types.geometrynodesampleindex*", "modeling/geometry_nodes/geometry/sample_index.html#bpy-types-geometrynodesampleindex"),
|
||||
("bpy.types.geometrynodesetmaterial*", "modeling/geometry_nodes/material/set_material.html#bpy-types-geometrynodesetmaterial"),
|
||||
("bpy.types.geometrynodesetposition*", "modeling/geometry_nodes/geometry/set_position.html#bpy-types-geometrynodesetposition"),
|
||||
("bpy.types.geometrynodetriangulate*", "modeling/geometry_nodes/mesh/triangulate.html#bpy-types-geometrynodetriangulate"),
|
||||
|
@ -1601,6 +1676,10 @@ url_manual_mapping = (
|
|||
("bpy.types.shadernodevolumescatter*", "render/shader_nodes/shader/volume_scatter.html#bpy-types-shadernodevolumescatter"),
|
||||
("bpy.types.simplifygpencilmodifier*", "grease_pencil/modifiers/generate/simplify.html#bpy-types-simplifygpencilmodifier"),
|
||||
("bpy.types.spacegrapheditor.cursor*", "editors/graph_editor/introduction.html#bpy-types-spacegrapheditor-cursor"),
|
||||
("bpy.types.spaceview3d.lock_camera*", "editors/3dview/sidebar.html#bpy-types-spaceview3d-lock-camera"),
|
||||
("bpy.types.spaceview3d.lock_cursor*", "editors/3dview/sidebar.html#bpy-types-spaceview3d-lock-cursor"),
|
||||
("bpy.types.spaceview3d.lock_object*", "editors/3dview/sidebar.html#bpy-types-spaceview3d-lock-object"),
|
||||
("bpy.types.spaceview3d.show_viewer*", "modeling/geometry_nodes/output/viewer.html#bpy-types-spaceview3d-show-viewer"),
|
||||
("bpy.types.texturenodecombinecolor*", "editors/texture_node/types/color/combine_color.html#bpy-types-texturenodecombinecolor"),
|
||||
("bpy.types.texturenodetexdistnoise*", "editors/texture_node/types/textures/distorted_noise.html#bpy-types-texturenodetexdistnoise"),
|
||||
("bpy.types.vertexweightmixmodifier*", "modeling/modifiers/modify/weight_mix.html#bpy-types-vertexweightmixmodifier"),
|
||||
|
@ -1651,10 +1730,12 @@ url_manual_mapping = (
|
|||
("bpy.ops.sequencer.select_handles*", "video_editing/edit/montage/selecting.html#bpy-ops-sequencer-select-handles"),
|
||||
("bpy.ops.ui.copy_data_path_button*", "interface/controls/buttons/menus.html#bpy-ops-ui-copy-data-path-button"),
|
||||
("bpy.ops.uv.average_islands_scale*", "modeling/meshes/uv/editing.html#bpy-ops-uv-average-islands-scale"),
|
||||
("bpy.ops.wm.read_factory_settings*", "interface/window_system/topbar.html#bpy-ops-wm-read-factory-settings"),
|
||||
("bpy.types.action.use_frame_range*", "animation/actions.html#bpy-types-action-use-frame-range"),
|
||||
("bpy.types.armature.axes_position*", "animation/armatures/properties/display.html#bpy-types-armature-axes-position"),
|
||||
("bpy.types.armature.pose_position*", "animation/armatures/properties/skeleton.html#bpy-types-armature-pose-position"),
|
||||
("bpy.types.bakesettings.use_clear*", "render/cycles/baking.html#bpy-types-bakesettings-use-clear"),
|
||||
("bpy.types.bakesettings.view_from*", "render/cycles/baking.html#bpy-types-bakesettings-view-from"),
|
||||
("bpy.types.bone.envelope_distance*", "animation/armatures/bones/properties/deform.html#bpy-types-bone-envelope-distance"),
|
||||
("bpy.types.brightcontrastmodifier*", "editors/video_sequencer/sequencer/sidebar/modifiers.html#bpy-types-brightcontrastmodifier"),
|
||||
("bpy.types.brush.cursor_color_add*", "sculpt_paint/brush/cursor.html#bpy-types-brush-cursor-color-add"),
|
||||
|
@ -1704,6 +1785,7 @@ url_manual_mapping = (
|
|||
("bpy.types.geometrynodeisviewport*", "modeling/geometry_nodes/input/is_viewport.html#bpy-types-geometrynodeisviewport"),
|
||||
("bpy.types.geometrynodemeshcircle*", "modeling/geometry_nodes/mesh_primitives/mesh_circle.html#bpy-types-geometrynodemeshcircle"),
|
||||
("bpy.types.geometrynodeobjectinfo*", "modeling/geometry_nodes/input/object_info.html#bpy-types-geometrynodeobjectinfo"),
|
||||
("bpy.types.geometrynodeselfobject*", "modeling/geometry_nodes/input/self_object.html#bpy-types-geometrynodeselfobject"),
|
||||
("bpy.types.geometrynodesplitedges*", "modeling/geometry_nodes/mesh/split_edges.html#bpy-types-geometrynodesplitedges"),
|
||||
("bpy.types.geometrynodestringjoin*", "modeling/geometry_nodes/text/join_strings.html#bpy-types-geometrynodestringjoin"),
|
||||
("bpy.types.geometrynodevolumecube*", "modeling/geometry_nodes/volume/volume_cube.html#bpy-types-geometrynodevolumecube"),
|
||||
|
@ -1738,6 +1820,7 @@ url_manual_mapping = (
|
|||
("bpy.types.shadernodevectorrotate*", "render/shader_nodes/vector/vector_rotate.html#bpy-types-shadernodevectorrotate"),
|
||||
("bpy.types.shapekey.interpolation*", "animation/shape_keys/shape_keys_panel.html#bpy-types-shapekey-interpolation"),
|
||||
("bpy.types.sound.use_memory_cache*", "editors/video_sequencer/sequencer/sidebar/strip.html#bpy-types-sound-use-memory-cache"),
|
||||
("bpy.types.spaceview3d.clip_start*", "editors/3dview/sidebar.html#bpy-types-spaceview3d-clip-start"),
|
||||
("bpy.types.spaceview3d.show_gizmo*", "editors/3dview/display/gizmo.html#bpy-types-spaceview3d-show-gizmo"),
|
||||
("bpy.types.texturegpencilmodifier*", "grease_pencil/modifiers/modify/texture_mapping.html#bpy-types-texturegpencilmodifier"),
|
||||
("bpy.types.texturenodecoordinates*", "editors/texture_node/types/input/coordinates.html#bpy-types-texturenodecoordinates"),
|
||||
|
@ -1794,11 +1877,10 @@ url_manual_mapping = (
|
|||
("bpy.ops.outliner.collection_new*", "editors/outliner/editing.html#bpy-ops-outliner-collection-new"),
|
||||
("bpy.ops.outliner.show_hierarchy*", "editors/outliner/editing.html#bpy-ops-outliner-show-hierarchy"),
|
||||
("bpy.ops.outliner.show_one_level*", "editors/outliner/editing.html#bpy-ops-outliner-show-one-level"),
|
||||
("bpy.ops.paint.brush_colors_flip*", "sculpt_paint/texture_paint/tool_settings/brush_settings.html#bpy-ops-paint-brush-colors-flip"),
|
||||
("bpy.ops.paint.brush_colors_flip*", "sculpt_paint/brush/brush_settings.html#bpy-ops-paint-brush-colors-flip"),
|
||||
("bpy.ops.paint.weight_from_bones*", "sculpt_paint/weight_paint/editing.html#bpy-ops-paint-weight-from-bones"),
|
||||
("bpy.ops.paintcurve.delete_point*", "sculpt_paint/brush/stroke.html#bpy-ops-paintcurve-delete-point"),
|
||||
("bpy.ops.pose.paths_range_update*", "animation/motion_paths.html#bpy-ops-pose-paths-range-update"),
|
||||
("bpy.ops.poselib.action_sanitize*", "animation/armatures/properties/pose_library.html#bpy-ops-poselib-action-sanitize"),
|
||||
("bpy.ops.preferences.studiolight*", "editors/preferences/lights.html#bpy-ops-preferences-studiolight"),
|
||||
("bpy.ops.scene.view_layer_remove*", "render/layers/introduction.html#bpy-ops-scene-view-layer-remove"),
|
||||
("bpy.ops.screen.screen_full_area*", "interface/window_system/areas.html#bpy-ops-screen-screen-full-area"),
|
||||
|
@ -1823,8 +1905,8 @@ url_manual_mapping = (
|
|||
("bpy.types.brush.boundary_offset*", "sculpt_paint/sculpting/tools/boundary.html#bpy-types-brush-boundary-offset"),
|
||||
("bpy.types.brush.cloth_sim_limit*", "sculpt_paint/sculpting/tools/cloth.html#bpy-types-brush-cloth-sim-limit"),
|
||||
("bpy.types.brush.use_custom_icon*", "sculpt_paint/brush/brush.html#bpy-types-brush-use-custom-icon"),
|
||||
("bpy.types.brushtextureslot.mask*", "sculpt_paint/brush/texture_mask.html#bpy-types-brushtextureslot-mask"),
|
||||
("bpy.types.camerabackgroundimage*", "render/cameras.html#bpy-types-camerabackgroundimage"),
|
||||
("bpy.types.clothsettings.quality*", "physics/cloth/settings/index.html#bpy-types-clothsettings-quality"),
|
||||
("bpy.types.compositornodeboxmask*", "compositing/types/matte/box_mask.html#bpy-types-compositornodeboxmask"),
|
||||
("bpy.types.compositornodedefocus*", "compositing/types/filter/defocus.html#bpy-types-compositornodedefocus"),
|
||||
("bpy.types.compositornodedenoise*", "compositing/types/filter/denoise.html#bpy-types-compositornodedenoise"),
|
||||
|
@ -1847,11 +1929,13 @@ url_manual_mapping = (
|
|||
("bpy.types.fluideffectorsettings*", "physics/fluid/type/effector.html#bpy-types-fluideffectorsettings"),
|
||||
("bpy.types.followtrackconstraint*", "animation/constraints/motion_tracking/follow_track.html#bpy-types-followtrackconstraint"),
|
||||
("bpy.types.functionnodeinputbool*", "modeling/geometry_nodes/input/boolean.html#bpy-types-functionnodeinputbool"),
|
||||
("bpy.types.geometrycornersofface*", "modeling/geometry_nodes/mesh_topology/corners_of_face.html#bpy-types-geometrycornersofface"),
|
||||
("bpy.types.geometrynodecurvestar*", "modeling/geometry_nodes/curve_primitives/star.html#bpy-types-geometrynodecurvestar"),
|
||||
("bpy.types.geometrynodefillcurve*", "modeling/geometry_nodes/curve/fill_curve.html#bpy-types-geometrynodefillcurve"),
|
||||
("bpy.types.geometrynodeflipfaces*", "modeling/geometry_nodes/mesh/flip_faces.html#bpy-types-geometrynodeflipfaces"),
|
||||
("bpy.types.geometrynodeimageinfo*", "modeling/geometry_nodes/input/image_info.html#bpy-types-geometrynodeimageinfo"),
|
||||
("bpy.types.geometrynodeproximity*", "modeling/geometry_nodes/geometry/geometry_proximity.html#bpy-types-geometrynodeproximity"),
|
||||
("bpy.types.geometrynodetransform*", "modeling/geometry_nodes/geometry/transform.html#bpy-types-geometrynodetransform"),
|
||||
("bpy.types.geometrynodetransform*", "modeling/geometry_nodes/geometry/transform_geometry.html#bpy-types-geometrynodetransform"),
|
||||
("bpy.types.geometrynodetrimcurve*", "modeling/geometry_nodes/curve/trim_curve.html#bpy-types-geometrynodetrimcurve"),
|
||||
("bpy.types.gpencillayer.location*", "grease_pencil/properties/layers.html#bpy-types-gpencillayer-location"),
|
||||
("bpy.types.gpencillayer.rotation*", "grease_pencil/properties/layers.html#bpy-types-gpencillayer-rotation"),
|
||||
|
@ -2009,6 +2093,7 @@ url_manual_mapping = (
|
|||
("bpy.types.soundsequence.volume*", "editors/video_sequencer/sequencer/sidebar/strip.html#bpy-types-soundsequence-volume"),
|
||||
("bpy.types.spaceclipeditor.show*", "editors/clip/display/index.html#bpy-types-spaceclipeditor-show"),
|
||||
("bpy.types.spacedopesheeteditor*", "editors/dope_sheet/index.html#bpy-types-spacedopesheeteditor"),
|
||||
("bpy.types.spaceview3d.clip_end*", "editors/3dview/sidebar.html#bpy-types-spaceview3d-clip-end"),
|
||||
("bpy.types.speedcontrolsequence*", "video_editing/edit/montage/strips/effects/speed_control.html#bpy-types-speedcontrolsequence"),
|
||||
("bpy.types.texturenodecurvetime*", "editors/texture_node/types/input/time.html#bpy-types-texturenodecurvetime"),
|
||||
("bpy.types.texturenodetexclouds*", "editors/texture_node/types/textures/clouds.html#bpy-types-texturenodetexclouds"),
|
||||
|
@ -2119,7 +2204,7 @@ url_manual_mapping = (
|
|||
("bpy.types.kinematicconstraint*", "animation/constraints/tracking/ik_solver.html#bpy-types-kinematicconstraint"),
|
||||
("bpy.types.material.line_color*", "render/freestyle/material.html#bpy-types-material-line-color"),
|
||||
("bpy.types.material.pass_index*", "render/materials/settings.html#bpy-types-material-pass-index"),
|
||||
("bpy.types.mesh.use_paint_mask*", "sculpt_paint/brush/introduction.html#bpy-types-mesh-use-paint-mask"),
|
||||
("bpy.types.mesh.use_paint_mask*", "sculpt_paint/selection_visibility.html#bpy-types-mesh-use-paint-mask"),
|
||||
("bpy.types.object.display_type*", "scene_layout/object/properties/display.html#bpy-types-object-display-type"),
|
||||
("bpy.types.objectlineart.usage*", "scene_layout/object/properties/line_art.html#bpy-types-objectlineart-usage"),
|
||||
("bpy.types.paint.input_samples*", "sculpt_paint/brush/stroke.html#bpy-types-paint-input-samples"),
|
||||
|
@ -2235,7 +2320,8 @@ url_manual_mapping = (
|
|||
("bpy.types.armature.show_axes*", "animation/armatures/properties/display.html#bpy-types-armature-show-axes"),
|
||||
("bpy.types.armatureconstraint*", "animation/constraints/relationship/armature.html#bpy-types-armatureconstraint"),
|
||||
("bpy.types.brush.dash_samples*", "sculpt_paint/brush/stroke.html#bpy-types-brush-dash-samples"),
|
||||
("bpy.types.brush.sculpt_plane*", "sculpt_paint/sculpting/tool_settings/brush_settings.html#bpy-types-brush-sculpt-plane"),
|
||||
("bpy.types.brush.sculpt_plane*", "sculpt_paint/brush/brush_settings.html#bpy-types-brush-sculpt-plane"),
|
||||
("bpy.types.clothsettings.mass*", "physics/cloth/settings/physical_properties.html#bpy-types-clothsettings-mass"),
|
||||
("bpy.types.compositornodeblur*", "compositing/types/filter/blur_node.html#bpy-types-compositornodeblur"),
|
||||
("bpy.types.compositornodecrop*", "compositing/types/distort/crop.html#bpy-types-compositornodecrop"),
|
||||
("bpy.types.compositornodeflip*", "compositing/types/distort/flip.html#bpy-types-compositornodeflip"),
|
||||
|
@ -2290,6 +2376,7 @@ url_manual_mapping = (
|
|||
("bpy.types.shadernodetexmagic*", "render/shader_nodes/textures/magic.html#bpy-types-shadernodetexmagic"),
|
||||
("bpy.types.shadernodetexnoise*", "render/shader_nodes/textures/noise.html#bpy-types-shadernodetexnoise"),
|
||||
("bpy.types.shrinkwrapmodifier*", "modeling/modifiers/deform/shrinkwrap.html#bpy-types-shrinkwrapmodifier"),
|
||||
("bpy.types.spaceview3d.camera*", "editors/3dview/sidebar.html#bpy-types-spaceview3d-camera"),
|
||||
("bpy.types.splineikconstraint*", "animation/constraints/tracking/spline_ik.html#bpy-types-splineikconstraint"),
|
||||
("bpy.types.texturenodechecker*", "editors/texture_node/types/patterns/checker.html#bpy-types-texturenodechecker"),
|
||||
("bpy.types.texturenodetexture*", "editors/texture_node/types/input/texture.html#bpy-types-texturenodetexture"),
|
||||
|
@ -2353,8 +2440,6 @@ url_manual_mapping = (
|
|||
("bpy.ops.pose.group_deselect*", "animation/armatures/properties/bone_groups.html#bpy-ops-pose-group-deselect"),
|
||||
("bpy.ops.pose.group_unassign*", "animation/armatures/properties/bone_groups.html#bpy-ops-pose-group-unassign"),
|
||||
("bpy.ops.pose.select_grouped*", "animation/armatures/posing/selecting.html#bpy-ops-pose-select-grouped"),
|
||||
("bpy.ops.poselib.pose_remove*", "animation/armatures/posing/editing/pose_library.html#bpy-ops-poselib-pose-remove"),
|
||||
("bpy.ops.poselib.pose_rename*", "animation/armatures/posing/editing/pose_library.html#bpy-ops-poselib-pose-rename"),
|
||||
("bpy.ops.preferences.keyitem*", "editors/preferences/keymap.html#bpy-ops-preferences-keyitem"),
|
||||
("bpy.ops.screen.area_options*", "interface/window_system/areas.html#bpy-ops-screen-area-options"),
|
||||
("bpy.ops.screen.region_blend*", "interface/window_system/regions.html#bpy-ops-screen-region-blend"),
|
||||
|
@ -2480,7 +2565,6 @@ url_manual_mapping = (
|
|||
("bpy.ops.object.track_clear*", "animation/constraints/interface/adding_removing.html#bpy-ops-object-track-clear"),
|
||||
("bpy.ops.pose.select_linked*", "animation/armatures/posing/selecting.html#bpy-ops-pose-select-linked"),
|
||||
("bpy.ops.pose.select_mirror*", "animation/armatures/posing/selecting.html#bpy-ops-pose-select-mirror"),
|
||||
("bpy.ops.poselib.apply_pose*", "animation/armatures/properties/pose_library.html#bpy-ops-poselib-apply-pose"),
|
||||
("bpy.ops.screen.marker_jump*", "animation/markers.html#bpy-ops-screen-marker-jump"),
|
||||
("bpy.ops.screen.repeat_last*", "interface/undo_redo.html#bpy-ops-screen-repeat-last"),
|
||||
("bpy.ops.sculpt.mask_expand*", "sculpt_paint/sculpting/editing/mask.html#bpy-ops-sculpt-mask-expand"),
|
||||
|
@ -2553,7 +2637,7 @@ url_manual_mapping = (
|
|||
("bpy.types.spaceimageeditor*", "editors/image/index.html#bpy-types-spaceimageeditor"),
|
||||
("bpy.types.spacepreferences*", "editors/preferences/index.html#bpy-types-spacepreferences"),
|
||||
("bpy.types.spacespreadsheet*", "editors/spreadsheet.html#bpy-types-spacespreadsheet"),
|
||||
("bpy.types.spaceview3d.lock*", "editors/3dview/sidebar.html#bpy-types-spaceview3d-lock"),
|
||||
("bpy.types.spaceview3d.lens*", "editors/3dview/sidebar.html#bpy-types-spaceview3d-lens"),
|
||||
("bpy.types.spaceview3d.show*", "editors/3dview/display/index.html#bpy-types-spaceview3d-show"),
|
||||
("bpy.types.sphfluidsettings*", "physics/particles/emitter/physics/fluid.html#bpy-types-sphfluidsettings"),
|
||||
("bpy.types.subtractsequence*", "video_editing/edit/montage/strips/effects/subtract.html#bpy-types-subtractsequence"),
|
||||
|
@ -2602,7 +2686,6 @@ url_manual_mapping = (
|
|||
("bpy.ops.pose.group_assign*", "animation/armatures/properties/bone_groups.html#bpy-ops-pose-group-assign"),
|
||||
("bpy.ops.pose.group_select*", "animation/armatures/properties/bone_groups.html#bpy-ops-pose-group-select"),
|
||||
("bpy.ops.pose.paths_update*", "animation/motion_paths.html#bpy-ops-pose-paths-update"),
|
||||
("bpy.ops.poselib.pose_move*", "animation/armatures/properties/pose_library.html#bpy-ops-poselib-pose-move"),
|
||||
("bpy.ops.preferences.addon*", "editors/preferences/addons.html#bpy-ops-preferences-addon"),
|
||||
("bpy.ops.scene.light_cache*", "render/eevee/render_settings/indirect_lighting.html#bpy-ops-scene-light-cache"),
|
||||
("bpy.ops.screen.actionzone*", "interface/window_system/areas.html#bpy-ops-screen-actionzone"),
|
||||
|
@ -2612,6 +2695,7 @@ url_manual_mapping = (
|
|||
("bpy.ops.sculpt.dirty_mask*", "sculpt_paint/sculpting/editing/mask.html#bpy-ops-sculpt-dirty-mask"),
|
||||
("bpy.ops.sculpt.reveal_all*", "sculpt_paint/sculpting/editing/face_sets.html#bpy-ops-sculpt-reveal-all"),
|
||||
("bpy.ops.sculpt.symmetrize*", "sculpt_paint/sculpting/tool_settings/symmetry.html#bpy-ops-sculpt-symmetrize"),
|
||||
("bpy.ops.uv.align_rotation*", "modeling/meshes/uv/editing.html#bpy-ops-uv-align-rotation"),
|
||||
("bpy.ops.uv.remove_doubles*", "modeling/meshes/uv/editing.html#bpy-ops-uv-remove-doubles"),
|
||||
("bpy.ops.uv.select_similar*", "editors/uv/selecting.html#bpy-ops-uv-select-similar"),
|
||||
("bpy.ops.uv.sphere_project*", "modeling/meshes/editing/uv.html#bpy-ops-uv-sphere-project"),
|
||||
|
@ -2689,7 +2773,6 @@ url_manual_mapping = (
|
|||
("bpy.ops.object.track_set*", "animation/constraints/interface/adding_removing.html#bpy-ops-object-track-set"),
|
||||
("bpy.ops.pose.paths_clear*", "animation/motion_paths.html#bpy-ops-pose-paths-clear"),
|
||||
("bpy.ops.pose.scale_clear*", "animation/armatures/posing/editing/clear.html#bpy-ops-pose-scale-clear"),
|
||||
("bpy.ops.poselib.pose_add*", "animation/armatures/posing/editing/pose_library.html#bpy-ops-poselib-pose-add"),
|
||||
("bpy.ops.scene.view_layer*", "render/layers/introduction.html#bpy-ops-scene-view-layer"),
|
||||
("bpy.ops.screen.area_join*", "interface/window_system/areas.html#bpy-ops-screen-area-join"),
|
||||
("bpy.ops.screen.area_move*", "interface/window_system/areas.html#bpy-ops-screen-area-move"),
|
||||
|
@ -2711,9 +2794,10 @@ url_manual_mapping = (
|
|||
("bpy.ops.view3d.view_roll*", "editors/3dview/navigate/navigation.html#bpy-ops-view3d-view-roll"),
|
||||
("bpy.ops.wm.open_mainfile*", "files/blend/open_save.html#bpy-ops-wm-open-mainfile"),
|
||||
("bpy.ops.wm.owner_disable*", "interface/window_system/workspaces.html#bpy-ops-wm-owner-disable"),
|
||||
("bpy.ops.wm.save_homefile*", "interface/window_system/topbar.html#bpy-ops-wm-save-homefile"),
|
||||
("bpy.ops.wm.save_mainfile*", "files/blend/open_save.html#bpy-ops-wm-save-mainfile"),
|
||||
("bpy.types.bone.show_wire*", "animation/armatures/bones/properties/display.html#bpy-types-bone-show-wire"),
|
||||
("bpy.types.brush.hardness*", "sculpt_paint/sculpting/tool_settings/brush_settings.html#bpy-types-brush-hardness"),
|
||||
("bpy.types.brush.hardness*", "sculpt_paint/brush/brush_settings.html#bpy-types-brush-hardness"),
|
||||
("bpy.types.curves.surface*", "modeling/curves/primitives.html#bpy-types-curves-surface"),
|
||||
("bpy.types.curvesmodifier*", "editors/video_sequencer/sequencer/sidebar/modifiers.html#bpy-types-curvesmodifier"),
|
||||
("bpy.types.ffmpegsettings*", "render/output/properties/output.html#bpy-types-ffmpegsettings"),
|
||||
|
@ -2783,6 +2867,7 @@ url_manual_mapping = (
|
|||
("bpy.ops.object.armature*", "animation/armatures/index.html#bpy-ops-object-armature"),
|
||||
("bpy.ops.object.face_map*", "modeling/meshes/properties/object_data.html#bpy-ops-object-face-map"),
|
||||
("bpy.ops.object.join_uvs*", "scene_layout/object/editing/link_transfer/copy_uvmaps.html#bpy-ops-object-join-uvs"),
|
||||
("bpy.ops.object.mode_set*", "editors/3dview/modes.html#bpy-ops-object-mode-set"),
|
||||
("bpy.ops.outliner.delete*", "editors/outliner/editing.html#bpy-ops-outliner-delete"),
|
||||
("bpy.ops.paintcurve.draw*", "sculpt_paint/brush/stroke.html#bpy-ops-paintcurve-draw"),
|
||||
("bpy.ops.pose.relax_rest*", "animation/armatures/posing/editing/in_betweens.html#bpy-ops-pose-relax-rest"),
|
||||
|
@ -3106,7 +3191,7 @@ url_manual_mapping = (
|
|||
("bpy.ops.marker.add*", "animation/markers.html#bpy-ops-marker-add"),
|
||||
("bpy.ops.mesh.bevel*", "modeling/meshes/editing/edge/bevel.html#bpy-ops-mesh-bevel"),
|
||||
("bpy.ops.mesh.inset*", "modeling/meshes/editing/face/inset_faces.html#bpy-ops-mesh-inset"),
|
||||
("bpy.ops.mesh.knife*", "modeling/meshes/tools/knife.html#bpy-ops-mesh-knife"),
|
||||
("bpy.ops.mesh.knife*", "modeling/meshes/editing/mesh/knife_topology_tool.html#bpy-ops-mesh-knife"),
|
||||
("bpy.ops.mesh.merge*", "modeling/meshes/editing/mesh/merge.html#bpy-ops-mesh-merge"),
|
||||
("bpy.ops.mesh.relax*", "addons/mesh/edit_mesh_tools.html#bpy-ops-mesh-relax"),
|
||||
("bpy.ops.mesh.screw*", "modeling/meshes/editing/edge/screw.html#bpy-ops-mesh-screw"),
|
||||
|
@ -3172,6 +3257,7 @@ url_manual_mapping = (
|
|||
("bpy.ops.outliner*", "editors/outliner/index.html#bpy-ops-outliner"),
|
||||
("bpy.ops.particle*", "physics/particles/index.html#bpy-ops-particle"),
|
||||
("bpy.ops.uv.align*", "modeling/meshes/uv/editing.html#bpy-ops-uv-align"),
|
||||
("bpy.ops.uv.paste*", "modeling/meshes/uv/editing.html#bpy-ops-uv-paste"),
|
||||
("bpy.ops.uv.reset*", "modeling/meshes/editing/uv.html#bpy-ops-uv-reset"),
|
||||
("bpy.ops.wm.addon*", "editors/preferences/addons.html#bpy-ops-wm-addon"),
|
||||
("bpy.types.action*", "animation/actions.html#bpy-types-action"),
|
||||
|
@ -3199,6 +3285,7 @@ url_manual_mapping = (
|
|||
("bpy.ops.ptcache*", "physics/baking.html#bpy-ops-ptcache"),
|
||||
("bpy.ops.surface*", "modeling/surfaces/index.html#bpy-ops-surface"),
|
||||
("bpy.ops.texture*", "render/materials/legacy_textures/index.html#bpy-ops-texture"),
|
||||
("bpy.ops.uv.copy*", "modeling/meshes/uv/editing.html#bpy-ops-uv-copy"),
|
||||
("bpy.ops.uv.hide*", "modeling/meshes/uv/editing.html#bpy-ops-uv-hide"),
|
||||
("bpy.ops.uv.weld*", "modeling/meshes/uv/editing.html#bpy-ops-uv-weld"),
|
||||
("bpy.ops.wm.link*", "files/linked_libraries/link_append.html#bpy-ops-wm-link"),
|
||||
|
|
|
@ -5049,20 +5049,31 @@ def km_sculpt(params):
|
|||
{"properties": [("mode", 'SMOOTH')]}),
|
||||
# Expand
|
||||
("sculpt.expand", {"type": 'A', "value": 'PRESS', "shift": True},
|
||||
{"properties": [("target", "MASK"), ("falloff_type", "GEODESIC"), ("invert", True)]}),
|
||||
{"properties": [
|
||||
("target", "MASK"),
|
||||
("falloff_type", "GEODESIC"),
|
||||
("invert", True),
|
||||
("use_auto_mask", True),
|
||||
("use_mask_preserve" , True)]}),
|
||||
("sculpt.expand", {"type": 'A', "value": 'PRESS', "shift": True, "alt": True},
|
||||
{"properties": [("target", "MASK"), ("falloff_type", "NORMALS"), ("invert", False)]}),
|
||||
{"properties": [
|
||||
("target", "MASK"),
|
||||
("falloff_type", "NORMALS"),
|
||||
("invert", False),
|
||||
("use_mask_preserve" , True)]}),
|
||||
("sculpt.expand", {"type": 'W', "value": 'PRESS', "shift": True},
|
||||
{"properties": [
|
||||
("target", "FACE_SETS"),
|
||||
("falloff_type", "GEODESIC"),
|
||||
("invert", False),
|
||||
("use_mask_preserve" , False),
|
||||
("use_modify_active", False)]}),
|
||||
("sculpt.expand", {"type": 'W', "value": 'PRESS', "shift": True, "alt": True},
|
||||
{"properties": [
|
||||
("target", "FACE_SETS"),
|
||||
("falloff_type", "BOUNDARY_FACE_SET"),
|
||||
("invert", False),
|
||||
("use_mask_preserve" , False),
|
||||
("use_modify_active", True),
|
||||
]}),
|
||||
# Partial Visibility Show/hide
|
||||
|
@ -5621,8 +5632,6 @@ def km_sculpt_curves(params):
|
|||
{"properties": [("mode", 'SMOOTH')]}),
|
||||
("curves.set_selection_domain", {"type": 'ONE', "value": 'PRESS'}, {"properties": [("domain", 'POINT')]}),
|
||||
("curves.set_selection_domain", {"type": 'TWO', "value": 'PRESS'}, {"properties": [("domain", 'CURVE')]}),
|
||||
("curves.disable_selection", {"type": 'ONE', "value": 'PRESS', "alt": True}, None),
|
||||
("curves.disable_selection", {"type": 'TWO', "value": 'PRESS', "alt": True}, None),
|
||||
*_template_paint_radial_control("curves_sculpt"),
|
||||
*_template_items_select_actions(params, "sculpt_curves.select_all"),
|
||||
("sculpt_curves.min_distance_edit", {"type": 'R', "value": 'PRESS', "shift": True}, {}),
|
||||
|
|
|
@ -18,13 +18,15 @@ class MotionPathButtonsPanel:
|
|||
|
||||
mps = avs.motion_path
|
||||
|
||||
# Display Range
|
||||
layout.use_property_split = True
|
||||
layout.use_property_decorate = False
|
||||
|
||||
# Display Range
|
||||
col = layout.column(align=True)
|
||||
col.prop(mps, "type")
|
||||
range_group = col.column(align=True)
|
||||
range_group.active = mps.type == 'RANGE'
|
||||
range_group.prop(mps, "range", text="Calculation Range")
|
||||
|
||||
if mps.type == 'CURRENT_FRAME':
|
||||
col = layout.column(align=True)
|
||||
col.prop(mps, "frame_before", text="Frame Range Before")
|
||||
|
@ -38,9 +40,12 @@ class MotionPathButtonsPanel:
|
|||
start_end_group.prop(mps, "frame_end", text="End")
|
||||
col.prop(mps, "frame_step", text="Step")
|
||||
|
||||
# Calculation Range
|
||||
col = layout.column(align=True)
|
||||
col.prop(mps, "range", text="Calculation Range")
|
||||
if bones:
|
||||
op_category = "pose"
|
||||
icon = 'BONE_DATA'
|
||||
else:
|
||||
op_category = "object"
|
||||
icon = 'OBJECT_DATA'
|
||||
|
||||
if mpath:
|
||||
col = layout.column(align=True)
|
||||
|
@ -49,32 +54,22 @@ class MotionPathButtonsPanel:
|
|||
row.prop(mpath, "frame_start", text="Cached Range")
|
||||
row.prop(mpath, "frame_end", text="")
|
||||
|
||||
# Update Selected.
|
||||
col = layout.column(align=True)
|
||||
if bones:
|
||||
col.operator("pose.paths_update", text="Update Path", icon='BONE_DATA')
|
||||
row = col.row(align=True)
|
||||
row.operator("object.paths_update_visible", text="Update All Paths", icon='WORLD')
|
||||
row.operator("pose.paths_clear", text="", icon='X')
|
||||
else:
|
||||
col.operator("object.paths_update", text="Update Path", icon='OBJECT_DATA')
|
||||
row = col.row(align=True)
|
||||
row.operator("object.paths_update_visible", text="Update All Paths", icon='WORLD')
|
||||
row.operator("object.paths_clear", text="", icon='X')
|
||||
row = col.row(align=True)
|
||||
row.operator(f"{op_category}.paths_update", text="Update Path", icon=icon)
|
||||
row.operator(f"{op_category}.paths_clear", text="", icon='X').only_selected = True
|
||||
else:
|
||||
# Calculate.
|
||||
col = layout.column(align=True)
|
||||
col.label(text="Nothing to show yet...", icon='ERROR')
|
||||
col.operator(f"{op_category}.paths_calculate", text="Calculate...", icon=icon)
|
||||
|
||||
if bones:
|
||||
col.operator("pose.paths_calculate", text="Calculate...", icon='BONE_DATA')
|
||||
else:
|
||||
col.operator("object.paths_calculate", text="Calculate...", icon='OBJECT_DATA')
|
||||
|
||||
row = col.row(align=True)
|
||||
row.operator("object.paths_update_visible", text="Update All Paths", icon='WORLD')
|
||||
if bones:
|
||||
row.operator("pose.paths_clear", text="", icon='X')
|
||||
else:
|
||||
row.operator("object.paths_clear", text="", icon='X')
|
||||
# Update All & Clear All.
|
||||
# Note that 'col' is from inside the preceeding `if` or `else` block.
|
||||
row = col.row(align=True)
|
||||
row.operator("object.paths_update_visible", text="Update All Paths", icon='WORLD')
|
||||
row.operator(f"{op_category}.paths_clear", text="", icon='X').only_selected = False
|
||||
|
||||
|
||||
class MotionPathButtonsPanel_display:
|
||||
|
|
|
@ -227,32 +227,6 @@ class DATA_PT_EEVEE_shadow_contact(DataButtonsPanel, Panel):
|
|||
col.prop(light, "contact_shadow_thickness", text="Thickness")
|
||||
|
||||
|
||||
class DATA_PT_area(DataButtonsPanel, Panel):
|
||||
bl_label = "Area Shape"
|
||||
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_WORKBENCH'}
|
||||
|
||||
@classmethod
|
||||
def poll(cls, context):
|
||||
light = context.light
|
||||
engine = context.engine
|
||||
return (light and light.type == 'AREA') and (engine in cls.COMPAT_ENGINES)
|
||||
|
||||
def draw(self, context):
|
||||
layout = self.layout
|
||||
|
||||
light = context.light
|
||||
|
||||
col = layout.column()
|
||||
col.row().prop(light, "shape", expand=True)
|
||||
sub = col.row(align=True)
|
||||
|
||||
if light.shape in {'SQUARE', 'DISK'}:
|
||||
sub.prop(light, "size")
|
||||
elif light.shape in {'RECTANGLE', 'ELLIPSE'}:
|
||||
sub.prop(light, "size", text="Size X")
|
||||
sub.prop(light, "size_y", text="Size Y")
|
||||
|
||||
|
||||
class DATA_PT_spot(DataButtonsPanel, Panel):
|
||||
bl_label = "Spot Shape"
|
||||
bl_parent_id = "DATA_PT_EEVEE_light"
|
||||
|
@ -315,7 +289,6 @@ classes = (
|
|||
DATA_PT_EEVEE_shadow,
|
||||
DATA_PT_EEVEE_shadow_cascaded_shadow_map,
|
||||
DATA_PT_EEVEE_shadow_contact,
|
||||
DATA_PT_area,
|
||||
DATA_PT_spot,
|
||||
DATA_PT_falloff_curve,
|
||||
DATA_PT_custom_props_light,
|
||||
|
|
|
@ -117,11 +117,10 @@ class GreasePencilDisplayPanel:
|
|||
row = layout.row(align=True)
|
||||
row.prop(settings, "show_brush", text="Display Cursor")
|
||||
|
||||
col = layout.column(align=True)
|
||||
col.active = settings.show_brush
|
||||
|
||||
if brush.gpencil_tool == 'DRAW':
|
||||
col.prop(gp_settings, "show_lasso", text="Show Fill Color While Drawing")
|
||||
row = layout.row(align=True)
|
||||
row.active = settings.show_brush
|
||||
row.prop(gp_settings, "show_lasso", text="Show Fill Color While Drawing")
|
||||
|
||||
elif ob.mode == 'SCULPT_GPENCIL':
|
||||
col = layout.column(align=True)
|
||||
|
|
|
@ -644,7 +644,7 @@ class ASSETBROWSER_MT_editor_menus(AssetBrowserMenu, Menu):
|
|||
|
||||
layout.menu("ASSETBROWSER_MT_view")
|
||||
layout.menu("ASSETBROWSER_MT_select")
|
||||
layout.menu("ASSETBROWSER_MT_edit")
|
||||
layout.menu("ASSETBROWSER_MT_catalog")
|
||||
|
||||
|
||||
class ASSETBROWSER_MT_view(AssetBrowserMenu, Menu):
|
||||
|
@ -683,8 +683,8 @@ class ASSETBROWSER_MT_select(AssetBrowserMenu, Menu):
|
|||
layout.operator("file.select_box")
|
||||
|
||||
|
||||
class ASSETBROWSER_MT_edit(AssetBrowserMenu, Menu):
|
||||
bl_label = "Edit"
|
||||
class ASSETBROWSER_MT_catalog(AssetBrowserMenu, Menu):
|
||||
bl_label = "Catalog"
|
||||
|
||||
def draw(self, _context):
|
||||
layout = self.layout
|
||||
|
@ -692,6 +692,10 @@ class ASSETBROWSER_MT_edit(AssetBrowserMenu, Menu):
|
|||
layout.operator("asset.catalog_undo", text="Undo")
|
||||
layout.operator("asset.catalog_redo", text="Redo")
|
||||
|
||||
layout.separator()
|
||||
layout.operator("asset.catalogs_save")
|
||||
layout.operator("asset.catalog_new").parent_path = ""
|
||||
|
||||
|
||||
class ASSETBROWSER_PT_metadata(asset_utils.AssetBrowserPanel, Panel):
|
||||
bl_region_type = 'TOOL_PROPS'
|
||||
|
@ -844,7 +848,7 @@ classes = (
|
|||
ASSETBROWSER_MT_editor_menus,
|
||||
ASSETBROWSER_MT_view,
|
||||
ASSETBROWSER_MT_select,
|
||||
ASSETBROWSER_MT_edit,
|
||||
ASSETBROWSER_MT_catalog,
|
||||
ASSETBROWSER_MT_metadata_preview_menu,
|
||||
ASSETBROWSER_PT_metadata,
|
||||
ASSETBROWSER_PT_metadata_preview,
|
||||
|
|
|
@ -604,6 +604,27 @@ class USERPREF_PT_system_cycles_devices(SystemPanel, CenterAlignMixIn, Panel):
|
|||
del addon
|
||||
|
||||
|
||||
class USERPREF_PT_system_gpu_backend(SystemPanel, CenterAlignMixIn, Panel):
|
||||
bl_label = "GPU Backend"
|
||||
|
||||
@classmethod
|
||||
def poll(cls, _context):
|
||||
# Only for Apple so far
|
||||
import sys
|
||||
return sys.platform == "darwin"
|
||||
|
||||
def draw_centered(self, context, layout):
|
||||
import gpu
|
||||
prefs = context.preferences
|
||||
system = prefs.system
|
||||
|
||||
col = layout.column()
|
||||
col.prop(system, "gpu_backend")
|
||||
|
||||
if system.gpu_backend != gpu.platform.backend_type_get():
|
||||
layout.label(text="Requires a restart of Blender to take effect.", icon='INFO')
|
||||
|
||||
|
||||
class USERPREF_PT_system_os_settings(SystemPanel, CenterAlignMixIn, Panel):
|
||||
bl_label = "Operating System Settings"
|
||||
|
||||
|
@ -2406,6 +2427,7 @@ classes = (
|
|||
USERPREF_PT_animation_fcurves,
|
||||
|
||||
USERPREF_PT_system_cycles_devices,
|
||||
USERPREF_PT_system_gpu_backend,
|
||||
USERPREF_PT_system_os_settings,
|
||||
USERPREF_PT_system_memory,
|
||||
USERPREF_PT_system_video_sequencer,
|
||||
|
|
|
@ -721,18 +721,9 @@ class VIEW3D_HT_header(Header):
|
|||
curves = obj.data
|
||||
|
||||
row = layout.row(align=True)
|
||||
|
||||
# Combine the "use selection" toggle with the "set domain" operators
|
||||
# to allow turning selection off directly.
|
||||
domain = curves.selection_domain
|
||||
if domain == 'POINT':
|
||||
row.prop(curves, "use_sculpt_selection", text="", icon='CURVE_BEZCIRCLE')
|
||||
else:
|
||||
row.operator("curves.set_selection_domain", text="", icon='CURVE_BEZCIRCLE').domain = 'POINT'
|
||||
if domain == 'CURVE':
|
||||
row.prop(curves, "use_sculpt_selection", text="", icon='CURVE_PATH')
|
||||
else:
|
||||
row.operator("curves.set_selection_domain", text="", icon='CURVE_PATH').domain = 'CURVE'
|
||||
row.operator("curves.set_selection_domain", text="", icon='CURVE_BEZCIRCLE', depress=(domain == 'POINT')).domain = 'POINT'
|
||||
row.operator("curves.set_selection_domain", text="", icon='CURVE_PATH', depress=(domain == 'CURVE')).domain = 'CURVE'
|
||||
|
||||
# Grease Pencil
|
||||
if obj and obj.type == 'GPENCIL' and context.gpencil_data:
|
||||
|
@ -6741,15 +6732,15 @@ class VIEW3D_PT_overlay_sculpt(Panel):
|
|||
overlay = view.overlay
|
||||
|
||||
row = layout.row(align=True)
|
||||
row.prop(sculpt, "show_mask", text="")
|
||||
row.prop(overlay, "sculpt_show_mask", text="")
|
||||
sub = row.row()
|
||||
sub.active = sculpt.show_mask
|
||||
sub.active = overlay.sculpt_show_mask
|
||||
sub.prop(overlay, "sculpt_mode_mask_opacity", text="Mask")
|
||||
|
||||
row = layout.row(align=True)
|
||||
row.prop(sculpt, "show_face_sets", text="")
|
||||
row.prop(overlay, "sculpt_show_face_sets", text="")
|
||||
sub = row.row()
|
||||
sub.active = sculpt.show_face_sets
|
||||
sub.active = overlay.sculpt_show_face_sets
|
||||
row.prop(overlay, "sculpt_mode_face_sets_opacity", text="Face Sets")
|
||||
|
||||
|
||||
|
|
|
@ -25,7 +25,7 @@ extern "C" {
|
|||
|
||||
/* Blender file format version. */
|
||||
#define BLENDER_FILE_VERSION BLENDER_VERSION
|
||||
#define BLENDER_FILE_SUBVERSION 4
|
||||
#define BLENDER_FILE_SUBVERSION 6
|
||||
|
||||
/* Minimum Blender version that supports reading file written with the current
|
||||
* version. Older Blender versions will test this and show a warning if the file
|
||||
|
|
|
@ -83,7 +83,12 @@ BLI_INLINE CCGElem *CCG_elem_next(const CCGKey *key, CCGElem *elem);
|
|||
|
||||
/* inline definitions follow */
|
||||
|
||||
BLI_INLINE float *CCG_elem_co(const CCGKey *UNUSED(key), CCGElem *elem)
|
||||
BLI_INLINE float *CCG_elem_co(const CCGKey *
|
||||
#ifndef __cplusplus
|
||||
UNUSED(key)
|
||||
#endif
|
||||
,
|
||||
CCGElem *elem)
|
||||
{
|
||||
return (float *)elem;
|
||||
}
|
||||
|
|
|
@ -37,6 +37,11 @@ int BKE_object_defgroup_active_index_get(const struct Object *ob);
|
|||
*/
|
||||
void BKE_object_defgroup_active_index_set(struct Object *ob, int new_index);
|
||||
|
||||
/**
|
||||
* Return the ID's vertex group names.
|
||||
* Supports Mesh (ME), Lattice (LT), and GreasePencil (GD) IDs.
|
||||
* \return ListBase of bDeformGroup pointers.
|
||||
*/
|
||||
const struct ListBase *BKE_id_defgroup_list_get(const struct ID *id);
|
||||
struct ListBase *BKE_id_defgroup_list_get_mutable(struct ID *id);
|
||||
int BKE_id_defgroup_name_index(const struct ID *id, const char *name);
|
||||
|
|
|
@ -18,6 +18,8 @@
|
|||
|
||||
#include "BLI_rect.h"
|
||||
|
||||
#include "BKE_image_wrappers.hh"
|
||||
|
||||
#include "DNA_image_types.h"
|
||||
|
||||
extern "C" {
|
||||
|
@ -27,7 +29,6 @@ struct PartialUpdateUser;
|
|||
|
||||
namespace blender::bke::image {
|
||||
|
||||
using TileNumber = int;
|
||||
|
||||
namespace partial_update {
|
||||
|
||||
|
|
|
@ -13,13 +13,16 @@
|
|||
|
||||
namespace blender::bke::image {
|
||||
|
||||
/** Type to use for UDIM tile numbers (1001). */
|
||||
using TileNumber = int32_t;
|
||||
|
||||
struct ImageTileWrapper {
|
||||
ImageTile *image_tile;
|
||||
ImageTileWrapper(ImageTile *image_tile) : image_tile(image_tile)
|
||||
{
|
||||
}
|
||||
|
||||
int get_tile_number() const
|
||||
TileNumber get_tile_number() const
|
||||
{
|
||||
return image_tile->tile_number;
|
||||
}
|
||||
|
@ -31,13 +34,13 @@ struct ImageTileWrapper {
|
|||
|
||||
int get_tile_x_offset() const
|
||||
{
|
||||
int tile_number = get_tile_number();
|
||||
TileNumber tile_number = get_tile_number();
|
||||
return (tile_number - 1001) % 10;
|
||||
}
|
||||
|
||||
int get_tile_y_offset() const
|
||||
{
|
||||
int tile_number = get_tile_number();
|
||||
TileNumber tile_number = get_tile_number();
|
||||
return (tile_number - 1001) / 10;
|
||||
}
|
||||
};
|
||||
|
|
|
@ -401,6 +401,8 @@ bool BKE_lib_override_library_status_check_reference(struct Main *bmain, struct
|
|||
* Compare local and reference data-blocks and create new override operations as needed,
|
||||
* or reset to reference values if overriding is not allowed.
|
||||
*
|
||||
* \param r_report_flags #eRNAOverrideMatchResult flags giving info about the result of this call.
|
||||
*
|
||||
* \note Defining override operations is only mandatory before saving a `.blend` file on disk
|
||||
* (not for undo!).
|
||||
* Knowing that info at runtime is only useful for UI/UX feedback.
|
||||
|
@ -411,11 +413,17 @@ bool BKE_lib_override_library_status_check_reference(struct Main *bmain, struct
|
|||
*
|
||||
* \return true if any library operation was created.
|
||||
*/
|
||||
bool BKE_lib_override_library_operations_create(struct Main *bmain, struct ID *local);
|
||||
void BKE_lib_override_library_operations_create(struct Main *bmain,
|
||||
struct ID *local,
|
||||
int *r_report_flags);
|
||||
/**
|
||||
* Check all overrides from given \a bmain and create/update overriding operations as needed.
|
||||
*
|
||||
* \param r_report_flags #eRNAOverrideMatchResult flags giving info about the result of this call.
|
||||
*/
|
||||
bool BKE_lib_override_library_main_operations_create(struct Main *bmain, bool force_auto);
|
||||
void BKE_lib_override_library_main_operations_create(struct Main *bmain,
|
||||
bool force_auto,
|
||||
int *r_report_flags);
|
||||
|
||||
/**
|
||||
* Reset all overrides in given \a id_root, while preserving ID relations.
|
||||
|
|
|
@ -183,8 +183,8 @@ typedef struct bNodeSocketType {
|
|||
const char *data_path);
|
||||
void (*interface_from_socket)(struct bNodeTree *ntree,
|
||||
struct bNodeSocket *interface_socket,
|
||||
struct bNode *node,
|
||||
struct bNodeSocket *sock);
|
||||
const struct bNode *node,
|
||||
const struct bNodeSocket *sock);
|
||||
|
||||
/* RNA integration */
|
||||
ExtensionRNA ext_socket;
|
||||
|
@ -563,17 +563,17 @@ struct bNodeSocket *ntreeInsertSocketInterface(struct bNodeTree *ntree,
|
|||
struct bNodeSocket *next_sock,
|
||||
const char *name);
|
||||
struct bNodeSocket *ntreeAddSocketInterfaceFromSocket(struct bNodeTree *ntree,
|
||||
struct bNode *from_node,
|
||||
struct bNodeSocket *from_sock);
|
||||
const struct bNode *from_node,
|
||||
const struct bNodeSocket *from_sock);
|
||||
struct bNodeSocket *ntreeAddSocketInterfaceFromSocketWithName(struct bNodeTree *ntree,
|
||||
struct bNode *from_node,
|
||||
struct bNodeSocket *from_sock,
|
||||
const struct bNode *from_node,
|
||||
const struct bNodeSocket *from_sock,
|
||||
const char *idname,
|
||||
const char *name);
|
||||
struct bNodeSocket *ntreeInsertSocketInterfaceFromSocket(struct bNodeTree *ntree,
|
||||
struct bNodeSocket *next_sock,
|
||||
struct bNode *from_node,
|
||||
struct bNodeSocket *from_sock);
|
||||
const struct bNode *from_node,
|
||||
const struct bNodeSocket *from_sock);
|
||||
void ntreeRemoveSocketInterface(struct bNodeTree *ntree, struct bNodeSocket *sock);
|
||||
|
||||
/** \} */
|
||||
|
|
|
@ -5,6 +5,7 @@
|
|||
#include <memory>
|
||||
#include <mutex>
|
||||
|
||||
#include "BLI_cache_mutex.hh"
|
||||
#include "BLI_multi_value_map.hh"
|
||||
#include "BLI_utility_mixins.hh"
|
||||
#include "BLI_vector.hh"
|
||||
|
@ -119,9 +120,8 @@ class bNodeTreeRuntime : NonCopyable, NonMovable {
|
|||
* Protects access to all topology cache variables below. This is necessary so that the cache can
|
||||
* be updated on a const #bNodeTree.
|
||||
*/
|
||||
std::mutex topology_cache_mutex;
|
||||
bool topology_cache_is_dirty = true;
|
||||
bool topology_cache_exists = false;
|
||||
CacheMutex topology_cache_mutex;
|
||||
std::atomic<bool> topology_cache_exists = false;
|
||||
/**
|
||||
* Under some circumstances, it can be useful to use the cached data while editing the
|
||||
* #bNodeTree. By default, this is protected against using an assert.
|
||||
|
@ -298,7 +298,7 @@ inline bool topology_cache_is_available(const bNodeTree &tree)
|
|||
if (tree.runtime->allow_use_dirty_topology_cache.load() > 0) {
|
||||
return true;
|
||||
}
|
||||
if (tree.runtime->topology_cache_is_dirty) {
|
||||
if (tree.runtime->topology_cache_mutex.is_dirty()) {
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
|
@ -417,6 +417,12 @@ inline bool bNodeTree::has_undefined_nodes_or_sockets() const
|
|||
return this->runtime->has_undefined_nodes_or_sockets;
|
||||
}
|
||||
|
||||
inline bNode *bNodeTree::group_output_node()
|
||||
{
|
||||
BLI_assert(blender::bke::node_tree_runtime::topology_cache_is_available(*this));
|
||||
return this->runtime->group_output_node;
|
||||
}
|
||||
|
||||
inline const bNode *bNodeTree::group_output_node() const
|
||||
{
|
||||
BLI_assert(blender::bke::node_tree_runtime::topology_cache_is_available(*this));
|
||||
|
|
|
@ -632,8 +632,6 @@ typedef struct SculptSession {
|
|||
|
||||
/* PBVH acceleration structure */
|
||||
struct PBVH *pbvh;
|
||||
bool show_mask;
|
||||
bool show_face_sets;
|
||||
|
||||
/* Painting on deformed mesh */
|
||||
bool deform_modifiers_active; /* Object is deformed with some modifiers. */
|
||||
|
|
|
@ -435,7 +435,7 @@ static void setup_app_data(bContext *C,
|
|||
reports->duration.lib_overrides_resync;
|
||||
|
||||
/* We need to rebuild some of the deleted override rules (for UI feedback purpose). */
|
||||
BKE_lib_override_library_main_operations_create(bmain, true);
|
||||
BKE_lib_override_library_main_operations_create(bmain, true, NULL);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -1424,7 +1424,7 @@ void BKE_blendfile_library_relocate(BlendfileLinkAppendContext *lapp_context,
|
|||
/* All override rules need to be up to date, since there will be no do_version here, otherwise
|
||||
* older, now-invalid rules might be applied and likely fail, or some changes might be missing,
|
||||
* etc. See T93353. */
|
||||
BKE_lib_override_library_main_operations_create(bmain, true);
|
||||
BKE_lib_override_library_main_operations_create(bmain, true, NULL);
|
||||
|
||||
/* Remove all IDs to be reloaded from Main. */
|
||||
lba_idx = set_listbasepointers(bmain, lbarray);
|
||||
|
@ -1634,7 +1634,7 @@ void BKE_blendfile_library_relocate(BlendfileLinkAppendContext *lapp_context,
|
|||
.reports = reports,
|
||||
});
|
||||
/* We need to rebuild some of the deleted override rules (for UI feedback purpose). */
|
||||
BKE_lib_override_library_main_operations_create(bmain, true);
|
||||
BKE_lib_override_library_main_operations_create(bmain, true, NULL);
|
||||
}
|
||||
|
||||
BKE_main_collection_sync(bmain);
|
||||
|
|
|
@ -387,7 +387,7 @@ void BKE_bpath_missing_files_find(Main *bmain,
|
|||
{
|
||||
struct BPathFind_Data data = {NULL};
|
||||
const int flag = BKE_BPATH_FOREACH_PATH_ABSOLUTE | BKE_BPATH_FOREACH_PATH_RELOAD_EDITED |
|
||||
BKE_BPATH_FOREACH_PATH_RESOLVE_TOKEN;
|
||||
BKE_BPATH_FOREACH_PATH_RESOLVE_TOKEN | BKE_BPATH_TRAVERSE_SKIP_WEAK_REFERENCES;
|
||||
|
||||
data.basedir = BKE_main_blendfile_path(bmain);
|
||||
data.reports = reports;
|
||||
|
|
|
@ -713,7 +713,7 @@ static float cloth_shrink_factor(ClothModifierData *clmd, ClothVertex *verts, in
|
|||
}
|
||||
|
||||
static bool cloth_from_object(
|
||||
Object *ob, ClothModifierData *clmd, Mesh *mesh, float UNUSED(framenr), int first)
|
||||
Object *ob, ClothModifierData *clmd, Mesh *mesh, float /*framenr*/, int first)
|
||||
{
|
||||
int i = 0;
|
||||
ClothVertex *verts = nullptr;
|
||||
|
@ -1168,7 +1168,7 @@ static Mesh *cloth_make_rest_mesh(ClothModifierData *clmd, Mesh *mesh)
|
|||
{
|
||||
Mesh *new_mesh = BKE_mesh_copy_for_eval(mesh, false);
|
||||
ClothVertex *verts = clmd->clothObject->verts;
|
||||
MVert *mvert = BKE_mesh_verts_for_write(mesh);
|
||||
MVert *mvert = BKE_mesh_verts_for_write(new_mesh);
|
||||
|
||||
/* vertex count is already ensured to match */
|
||||
for (uint i = 0; i < mesh->totvert; i++, verts++) {
|
||||
|
|
|
@ -190,7 +190,7 @@ const PointerRNA *CTX_store_ptr_lookup(const bContextStore *store,
|
|||
{
|
||||
for (auto entry = store->entries.rbegin(); entry != store->entries.rend(); ++entry) {
|
||||
if (entry->name == name) {
|
||||
if (type && RNA_struct_is_a(entry->ptr.type, type)) {
|
||||
if (!type || (type && RNA_struct_is_a(entry->ptr.type, type))) {
|
||||
return &entry->ptr;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -307,9 +307,9 @@ static void data_transfer_dtdata_type_preprocess(Mesh *me_src,
|
|||
}
|
||||
}
|
||||
|
||||
static void data_transfer_dtdata_type_postprocess(Object *UNUSED(ob_src),
|
||||
Object *UNUSED(ob_dst),
|
||||
Mesh *UNUSED(me_src),
|
||||
static void data_transfer_dtdata_type_postprocess(Object * /*ob_src*/,
|
||||
Object * /*ob_dst*/,
|
||||
Mesh * /*me_src*/,
|
||||
Mesh *me_dst,
|
||||
const int dtdata_type,
|
||||
const bool changed)
|
||||
|
|
|
@ -125,7 +125,6 @@ static PartialUpdateRegisterImpl *unwrap(struct PartialUpdateRegister *partial_u
|
|||
return static_cast<PartialUpdateRegisterImpl *>(static_cast<void *>(partial_update_register));
|
||||
}
|
||||
|
||||
using TileNumber = int32_t;
|
||||
using ChangesetID = int64_t;
|
||||
constexpr ChangesetID UnknownChangesetID = -1;
|
||||
|
||||
|
|
|
@ -51,10 +51,7 @@
|
|||
|
||||
#include "BLO_read_write.h"
|
||||
|
||||
static void shapekey_copy_data(Main *UNUSED(bmain),
|
||||
ID *id_dst,
|
||||
const ID *id_src,
|
||||
const int UNUSED(flag))
|
||||
static void shapekey_copy_data(Main * /*bmain*/, ID *id_dst, const ID *id_src, const int /*flag*/)
|
||||
{
|
||||
Key *key_dst = (Key *)id_dst;
|
||||
const Key *key_src = (const Key *)id_src;
|
||||
|
@ -2064,7 +2061,7 @@ int BKE_keyblock_curve_element_count(const ListBase *nurb)
|
|||
return tot;
|
||||
}
|
||||
|
||||
void BKE_keyblock_update_from_curve(const Curve *UNUSED(cu), KeyBlock *kb, const ListBase *nurb)
|
||||
void BKE_keyblock_update_from_curve(const Curve * /*cu*/, KeyBlock *kb, const ListBase *nurb)
|
||||
{
|
||||
Nurb *nu;
|
||||
BezTriple *bezt;
|
||||
|
@ -2178,7 +2175,7 @@ static void keyblock_data_convert_to_curve(const float *fp, ListBase *nurb, int
|
|||
}
|
||||
}
|
||||
|
||||
void BKE_keyblock_convert_to_curve(KeyBlock *kb, Curve *UNUSED(cu), ListBase *nurb)
|
||||
void BKE_keyblock_convert_to_curve(KeyBlock *kb, Curve * /*cu*/, ListBase *nurb)
|
||||
{
|
||||
const float *fp = static_cast<const float *>(kb->data);
|
||||
const int tot = min_ii(kb->totelem, BKE_keyblock_curve_element_count(nurb));
|
||||
|
|
|
@ -489,7 +489,7 @@ static void layer_collections_copy_data(ViewLayer *view_layer_dst,
|
|||
}
|
||||
|
||||
void BKE_view_layer_copy_data(Scene *scene_dst,
|
||||
const Scene *UNUSED(scene_src),
|
||||
const Scene * /*scene_src*/,
|
||||
ViewLayer *view_layer_dst,
|
||||
const ViewLayer *view_layer_src,
|
||||
const int flag)
|
||||
|
@ -1257,8 +1257,8 @@ static bool view_layer_objects_base_cache_validate(ViewLayer *view_layer, LayerC
|
|||
return is_valid;
|
||||
}
|
||||
#else
|
||||
static bool view_layer_objects_base_cache_validate(ViewLayer *UNUSED(view_layer),
|
||||
LayerCollection *UNUSED(layer))
|
||||
static bool view_layer_objects_base_cache_validate(ViewLayer * /*view_layer*/,
|
||||
LayerCollection * /*layer*/)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
@ -1650,7 +1650,7 @@ static void layer_collection_flag_unset_recursive(LayerCollection *lc, const int
|
|||
}
|
||||
}
|
||||
|
||||
void BKE_layer_collection_isolate_global(Scene *UNUSED(scene),
|
||||
void BKE_layer_collection_isolate_global(Scene * /*scene*/,
|
||||
ViewLayer *view_layer,
|
||||
LayerCollection *lc,
|
||||
bool extend)
|
||||
|
@ -2266,7 +2266,7 @@ void BKE_view_layer_bases_in_mode_iterator_next(BLI_Iterator *iter)
|
|||
iter->valid = false;
|
||||
}
|
||||
|
||||
void BKE_view_layer_bases_in_mode_iterator_end(BLI_Iterator *UNUSED(iter))
|
||||
void BKE_view_layer_bases_in_mode_iterator_end(BLI_Iterator * /*iter*/)
|
||||
{
|
||||
/* do nothing */
|
||||
}
|
||||
|
@ -2535,12 +2535,12 @@ void BKE_view_layer_set_active_aov(ViewLayer *view_layer, ViewLayerAOV *aov)
|
|||
}
|
||||
|
||||
static void bke_view_layer_verify_aov_cb(void *userdata,
|
||||
Scene *UNUSED(scene),
|
||||
ViewLayer *UNUSED(view_layer),
|
||||
Scene * /*scene*/,
|
||||
ViewLayer * /*view_layer*/,
|
||||
const char *name,
|
||||
int UNUSED(channels),
|
||||
const char *UNUSED(chanid),
|
||||
eNodeSocketDatatype UNUSED(type))
|
||||
int /*channels*/,
|
||||
const char * /*chanid*/,
|
||||
eNodeSocketDatatype /*type*/)
|
||||
{
|
||||
GHash *name_count = static_cast<GHash *>(userdata);
|
||||
void **value_p;
|
||||
|
|
|
@ -1427,7 +1427,7 @@ bool BKE_lib_override_library_create(Main *bmain,
|
|||
BKE_main_id_tag_all(bmain, LIB_TAG_DOIT, false);
|
||||
|
||||
/* We need to rebuild some of the deleted override rules (for UI feedback purpose). */
|
||||
BKE_lib_override_library_main_operations_create(bmain, true);
|
||||
BKE_lib_override_library_main_operations_create(bmain, true, nullptr);
|
||||
|
||||
return success;
|
||||
}
|
||||
|
@ -3297,19 +3297,18 @@ bool BKE_lib_override_library_status_check_reference(Main *bmain, ID *local)
|
|||
return true;
|
||||
}
|
||||
|
||||
bool BKE_lib_override_library_operations_create(Main *bmain, ID *local)
|
||||
void BKE_lib_override_library_operations_create(Main *bmain, ID *local, int *r_report_flags)
|
||||
{
|
||||
BLI_assert(!ID_IS_LINKED(local));
|
||||
BLI_assert(local->override_library != nullptr);
|
||||
const bool is_template = (local->override_library->reference == nullptr);
|
||||
bool created = false;
|
||||
|
||||
if (!is_template) {
|
||||
/* Do not attempt to generate overriding rules from an empty place-holder generated by link
|
||||
* code when it cannot find the actual library/ID. Much better to keep the local data-block as
|
||||
* is in the file in that case, until broken lib is fixed. */
|
||||
if (ID_MISSING(local->override_library->reference)) {
|
||||
return created;
|
||||
return;
|
||||
}
|
||||
|
||||
if (GS(local->name) == ID_OB) {
|
||||
|
@ -3330,7 +3329,7 @@ bool BKE_lib_override_library_operations_create(Main *bmain, ID *local)
|
|||
RNA_id_pointer_create(local, &rnaptr_local);
|
||||
RNA_id_pointer_create(local->override_library->reference, &rnaptr_reference);
|
||||
|
||||
eRNAOverrideMatchResult report_flags = (eRNAOverrideMatchResult)0;
|
||||
eRNAOverrideMatchResult local_report_flags = RNA_OVERRIDE_MATCH_RESULT_INIT;
|
||||
RNA_struct_override_matches(
|
||||
bmain,
|
||||
&rnaptr_local,
|
||||
|
@ -3339,28 +3338,27 @@ bool BKE_lib_override_library_operations_create(Main *bmain, ID *local)
|
|||
0,
|
||||
local->override_library,
|
||||
(eRNAOverrideMatch)(RNA_OVERRIDE_COMPARE_CREATE | RNA_OVERRIDE_COMPARE_RESTORE),
|
||||
&report_flags);
|
||||
&local_report_flags);
|
||||
|
||||
if (report_flags & RNA_OVERRIDE_MATCH_RESULT_CREATED) {
|
||||
created = true;
|
||||
}
|
||||
|
||||
if (report_flags & RNA_OVERRIDE_MATCH_RESULT_RESTORED) {
|
||||
if (local_report_flags & RNA_OVERRIDE_MATCH_RESULT_RESTORED) {
|
||||
CLOG_INFO(&LOG, 2, "We did restore some properties of %s from its reference", local->name);
|
||||
}
|
||||
if (report_flags & RNA_OVERRIDE_MATCH_RESULT_CREATED) {
|
||||
if (local_report_flags & RNA_OVERRIDE_MATCH_RESULT_CREATED) {
|
||||
CLOG_INFO(&LOG, 2, "We did generate library override rules for %s", local->name);
|
||||
}
|
||||
else {
|
||||
CLOG_INFO(&LOG, 2, "No new library override rules for %s", local->name);
|
||||
}
|
||||
|
||||
if (r_report_flags != nullptr) {
|
||||
*r_report_flags |= local_report_flags;
|
||||
}
|
||||
}
|
||||
return created;
|
||||
}
|
||||
|
||||
struct LibOverrideOpCreateData {
|
||||
Main *bmain;
|
||||
bool changed;
|
||||
eRNAOverrideMatchResult report_flags;
|
||||
};
|
||||
|
||||
static void lib_override_library_operations_create_cb(TaskPool *__restrict pool, void *taskdata)
|
||||
|
@ -3369,14 +3367,16 @@ static void lib_override_library_operations_create_cb(TaskPool *__restrict pool,
|
|||
BLI_task_pool_user_data(pool));
|
||||
ID *id = static_cast<ID *>(taskdata);
|
||||
|
||||
if (BKE_lib_override_library_operations_create(create_data->bmain, id)) {
|
||||
/* Technically no need for atomic, all jobs write the same value and we only care if one did
|
||||
* it. But play safe and avoid implicit assumptions. */
|
||||
atomic_fetch_and_or_uint8(reinterpret_cast<uint8_t *>(&create_data->changed), true);
|
||||
}
|
||||
eRNAOverrideMatchResult report_flags = RNA_OVERRIDE_MATCH_RESULT_INIT;
|
||||
BKE_lib_override_library_operations_create(
|
||||
create_data->bmain, id, reinterpret_cast<int *>(&report_flags));
|
||||
atomic_fetch_and_or_uint32(reinterpret_cast<uint32_t *>(&create_data->report_flags),
|
||||
report_flags);
|
||||
}
|
||||
|
||||
bool BKE_lib_override_library_main_operations_create(Main *bmain, const bool force_auto)
|
||||
void BKE_lib_override_library_main_operations_create(Main *bmain,
|
||||
const bool force_auto,
|
||||
int *r_report_flags)
|
||||
{
|
||||
ID *id;
|
||||
|
||||
|
@ -3403,7 +3403,7 @@ bool BKE_lib_override_library_main_operations_create(Main *bmain, const bool for
|
|||
|
||||
LibOverrideOpCreateData create_pool_data{};
|
||||
create_pool_data.bmain = bmain;
|
||||
create_pool_data.changed = false;
|
||||
create_pool_data.report_flags = RNA_OVERRIDE_MATCH_RESULT_INIT;
|
||||
TaskPool *task_pool = BLI_task_pool_create(&create_pool_data, TASK_PRIORITY_HIGH);
|
||||
|
||||
FOREACH_MAIN_ID_BEGIN (bmain, id) {
|
||||
|
@ -3443,6 +3443,10 @@ bool BKE_lib_override_library_main_operations_create(Main *bmain, const bool for
|
|||
|
||||
BLI_task_pool_free(task_pool);
|
||||
|
||||
if (r_report_flags != nullptr) {
|
||||
*r_report_flags |= create_pool_data.report_flags;
|
||||
}
|
||||
|
||||
if (force_auto) {
|
||||
BKE_lib_override_library_main_unused_cleanup(bmain);
|
||||
}
|
||||
|
@ -3450,8 +3454,6 @@ bool BKE_lib_override_library_main_operations_create(Main *bmain, const bool for
|
|||
#ifdef DEBUG_OVERRIDE_TIMEIT
|
||||
TIMEIT_END_AVERAGED(BKE_lib_override_library_main_operations_create);
|
||||
#endif
|
||||
|
||||
return create_pool_data.changed;
|
||||
}
|
||||
|
||||
static bool lib_override_library_id_reset_do(Main *bmain,
|
||||
|
@ -3906,7 +3908,7 @@ ID *BKE_lib_override_library_operations_store_start(Main *bmain,
|
|||
UNUSED_VARS_NDEBUG(override_storage);
|
||||
|
||||
/* Forcefully ensure we know about all needed override operations. */
|
||||
BKE_lib_override_library_operations_create(bmain, local);
|
||||
BKE_lib_override_library_operations_create(bmain, local, nullptr);
|
||||
|
||||
ID *storage_id;
|
||||
#ifdef DEBUG_OVERRIDE_TIMEIT
|
||||
|
|
|
@ -628,8 +628,8 @@ static void direct_link_linestyle_thickness_modifier(BlendDataReader *reader,
|
|||
}
|
||||
}
|
||||
|
||||
static void direct_link_linestyle_geometry_modifier(BlendDataReader *UNUSED(reader),
|
||||
LineStyleModifier *UNUSED(modifier))
|
||||
static void direct_link_linestyle_geometry_modifier(BlendDataReader * /*reader*/,
|
||||
LineStyleModifier * /*modifier*/)
|
||||
{
|
||||
}
|
||||
|
||||
|
@ -1147,7 +1147,7 @@ LineStyleModifier *BKE_linestyle_alpha_modifier_add(FreestyleLineStyle *linestyl
|
|||
|
||||
LineStyleModifier *BKE_linestyle_alpha_modifier_copy(FreestyleLineStyle *linestyle,
|
||||
const LineStyleModifier *m,
|
||||
const int UNUSED(flag))
|
||||
const int /*flag*/)
|
||||
{
|
||||
LineStyleModifier *new_m;
|
||||
|
||||
|
@ -1735,7 +1735,7 @@ LineStyleModifier *BKE_linestyle_geometry_modifier_add(FreestyleLineStyle *lines
|
|||
|
||||
LineStyleModifier *BKE_linestyle_geometry_modifier_copy(FreestyleLineStyle *linestyle,
|
||||
const LineStyleModifier *m,
|
||||
const int UNUSED(flag))
|
||||
const int /*flag*/)
|
||||
{
|
||||
LineStyleModifier *new_m;
|
||||
|
||||
|
|
|
@ -1411,7 +1411,7 @@ static bool ntree_foreach_texnode_recursive(bNodeTree *nodetree,
|
|||
return true;
|
||||
}
|
||||
|
||||
static bool count_texture_nodes_cb(bNode *UNUSED(node), void *userdata)
|
||||
static bool count_texture_nodes_cb(bNode * /*node*/, void *userdata)
|
||||
{
|
||||
(*((int *)userdata))++;
|
||||
return true;
|
||||
|
|
|
@ -979,6 +979,18 @@ Mesh *BKE_mesh_new_nomain(
|
|||
return mesh;
|
||||
}
|
||||
|
||||
static void copy_attribute_names(const Mesh &mesh_src, Mesh &mesh_dst)
|
||||
{
|
||||
if (mesh_src.active_color_attribute) {
|
||||
MEM_SAFE_FREE(mesh_dst.active_color_attribute);
|
||||
mesh_dst.active_color_attribute = BLI_strdup(mesh_src.active_color_attribute);
|
||||
}
|
||||
if (mesh_src.default_color_attribute) {
|
||||
MEM_SAFE_FREE(mesh_dst.default_color_attribute);
|
||||
mesh_dst.default_color_attribute = BLI_strdup(mesh_src.default_color_attribute);
|
||||
}
|
||||
}
|
||||
|
||||
void BKE_mesh_copy_parameters(Mesh *me_dst, const Mesh *me_src)
|
||||
{
|
||||
/* Copy general settings. */
|
||||
|
@ -1008,6 +1020,7 @@ void BKE_mesh_copy_parameters_for_eval(Mesh *me_dst, const Mesh *me_src)
|
|||
BLI_assert(me_dst->id.tag & (LIB_TAG_NO_MAIN | LIB_TAG_COPIED_ON_WRITE));
|
||||
|
||||
BKE_mesh_copy_parameters(me_dst, me_src);
|
||||
copy_attribute_names(*me_src, *me_dst);
|
||||
|
||||
/* Copy vertex group names. */
|
||||
BLI_assert(BLI_listbase_is_empty(&me_dst->vertex_group_names));
|
||||
|
|
|
@ -689,7 +689,7 @@ static void merge_vertex_loop_poly_customdata_layers(Mesh *target, MeshesToIMesh
|
|||
|
||||
static void merge_edge_customdata_layers(Mesh *target, MeshesToIMeshInfo &mim)
|
||||
{
|
||||
for (int mesh_index = 1; mesh_index < mim.meshes.size(); ++mesh_index) {
|
||||
for (int mesh_index = 0; mesh_index < mim.meshes.size(); ++mesh_index) {
|
||||
const Mesh *me = mim.meshes[mesh_index];
|
||||
if (me->totedge) {
|
||||
CustomData_merge(
|
||||
|
|
|
@ -1191,6 +1191,16 @@ void BKE_mesh_nomain_to_mesh(Mesh *mesh_src, Mesh *mesh_dst, Object *ob)
|
|||
CustomData_copy(&mesh_src->pdata, &mesh_dst->pdata, mask.pmask, CD_ASSIGN, mesh_src->totpoly);
|
||||
CustomData_copy(&mesh_src->ldata, &mesh_dst->ldata, mask.lmask, CD_ASSIGN, mesh_src->totloop);
|
||||
|
||||
/* Make sure active/default color attribute (names) are brought over. */
|
||||
if (mesh_src->active_color_attribute) {
|
||||
MEM_SAFE_FREE(mesh_dst->active_color_attribute);
|
||||
mesh_dst->active_color_attribute = BLI_strdup(mesh_src->active_color_attribute);
|
||||
}
|
||||
if (mesh_src->default_color_attribute) {
|
||||
MEM_SAFE_FREE(mesh_dst->default_color_attribute);
|
||||
mesh_dst->default_color_attribute = BLI_strdup(mesh_src->default_color_attribute);
|
||||
}
|
||||
|
||||
BLI_freelistN(&mesh_dst->vertex_group_names);
|
||||
mesh_dst->vertex_group_names = mesh_src->vertex_group_names;
|
||||
BLI_listbase_clear(&mesh_src->vertex_group_names);
|
||||
|
|
|
@ -445,27 +445,27 @@ Mesh *BKE_mesh_mirror_apply_mirror_on_axis_for_modifier(MirrorModifierData *mmd,
|
|||
}
|
||||
|
||||
/* handle vgroup stuff */
|
||||
if ((mmd->flag & MOD_MIR_VGROUP) && CustomData_has_layer(&result->vdata, CD_MDEFORMVERT)) {
|
||||
MDeformVert *dvert = BKE_mesh_deform_verts_for_write(result) + maxVerts;
|
||||
int *flip_map = nullptr, flip_map_len = 0;
|
||||
if (BKE_object_supports_vertex_groups(ob)) {
|
||||
if ((mmd->flag & MOD_MIR_VGROUP) && CustomData_has_layer(&result->vdata, CD_MDEFORMVERT)) {
|
||||
MDeformVert *dvert = BKE_mesh_deform_verts_for_write(result) + maxVerts;
|
||||
int flip_map_len = 0;
|
||||
int *flip_map = BKE_object_defgroup_flip_map(ob, false, &flip_map_len);
|
||||
if (flip_map) {
|
||||
for (i = 0; i < maxVerts; dvert++, i++) {
|
||||
/* merged vertices get both groups, others get flipped */
|
||||
if (use_correct_order_on_merge && do_vtargetmap && (vtargetmap[i + maxVerts] != -1)) {
|
||||
BKE_defvert_flip_merged(dvert - maxVerts, flip_map, flip_map_len);
|
||||
}
|
||||
else if (!use_correct_order_on_merge && do_vtargetmap && (vtargetmap[i] != -1)) {
|
||||
BKE_defvert_flip_merged(dvert, flip_map, flip_map_len);
|
||||
}
|
||||
else {
|
||||
BKE_defvert_flip(dvert, flip_map, flip_map_len);
|
||||
}
|
||||
}
|
||||
|
||||
flip_map = BKE_object_defgroup_flip_map(ob, false, &flip_map_len);
|
||||
|
||||
if (flip_map) {
|
||||
for (i = 0; i < maxVerts; dvert++, i++) {
|
||||
/* merged vertices get both groups, others get flipped */
|
||||
if (use_correct_order_on_merge && do_vtargetmap && (vtargetmap[i + maxVerts] != -1)) {
|
||||
BKE_defvert_flip_merged(dvert - maxVerts, flip_map, flip_map_len);
|
||||
}
|
||||
else if (!use_correct_order_on_merge && do_vtargetmap && (vtargetmap[i] != -1)) {
|
||||
BKE_defvert_flip_merged(dvert, flip_map, flip_map_len);
|
||||
}
|
||||
else {
|
||||
BKE_defvert_flip(dvert, flip_map, flip_map_len);
|
||||
}
|
||||
MEM_freeN(flip_map);
|
||||
}
|
||||
|
||||
MEM_freeN(flip_map);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -489,6 +489,16 @@ void BKE_remesh_reproject_vertex_paint(Mesh *target, const Mesh *source)
|
|||
}
|
||||
}
|
||||
|
||||
/* Make sure active/default color attribute (names) are brought over. */
|
||||
if (source->active_color_attribute) {
|
||||
MEM_SAFE_FREE(target->active_color_attribute);
|
||||
target->active_color_attribute = BLI_strdup(source->active_color_attribute);
|
||||
}
|
||||
if (source->default_color_attribute) {
|
||||
MEM_SAFE_FREE(target->default_color_attribute);
|
||||
target->default_color_attribute = BLI_strdup(source->default_color_attribute);
|
||||
}
|
||||
|
||||
MEM_SAFE_FREE(source_lmap);
|
||||
MEM_SAFE_FREE(source_lmap_mem);
|
||||
MEM_SAFE_FREE(target_lmap);
|
||||
|
|
|
@ -2010,7 +2010,7 @@ bNode *nodeFindNodebyName(bNodeTree *ntree, const char *name)
|
|||
void nodeFindNode(bNodeTree *ntree, bNodeSocket *sock, bNode **r_node, int *r_sockindex)
|
||||
{
|
||||
*r_node = nullptr;
|
||||
if (!ntree->runtime->topology_cache_is_dirty) {
|
||||
if (ntree->runtime->topology_cache_mutex.is_cached()) {
|
||||
bNode *node = &sock->owner_node();
|
||||
*r_node = node;
|
||||
if (r_sockindex) {
|
||||
|
@ -2369,6 +2369,8 @@ bNodeLink *nodeAddLink(
|
|||
{
|
||||
BLI_assert(fromnode);
|
||||
BLI_assert(tonode);
|
||||
BLI_assert(ntree->all_nodes().contains(fromnode));
|
||||
BLI_assert(ntree->all_nodes().contains(tonode));
|
||||
|
||||
bNodeLink *link = nullptr;
|
||||
if (fromsock->in_out == SOCK_OUT && tosock->in_out == SOCK_IN) {
|
||||
|
@ -3388,16 +3390,16 @@ bNodeSocket *ntreeInsertSocketInterface(bNodeTree *ntree,
|
|||
}
|
||||
|
||||
bNodeSocket *ntreeAddSocketInterfaceFromSocket(bNodeTree *ntree,
|
||||
bNode *from_node,
|
||||
bNodeSocket *from_sock)
|
||||
const bNode *from_node,
|
||||
const bNodeSocket *from_sock)
|
||||
{
|
||||
return ntreeAddSocketInterfaceFromSocketWithName(
|
||||
ntree, from_node, from_sock, from_sock->idname, from_sock->name);
|
||||
}
|
||||
|
||||
bNodeSocket *ntreeAddSocketInterfaceFromSocketWithName(bNodeTree *ntree,
|
||||
bNode *from_node,
|
||||
bNodeSocket *from_sock,
|
||||
const bNode *from_node,
|
||||
const bNodeSocket *from_sock,
|
||||
const char *idname,
|
||||
const char *name)
|
||||
{
|
||||
|
@ -3413,8 +3415,8 @@ bNodeSocket *ntreeAddSocketInterfaceFromSocketWithName(bNodeTree *ntree,
|
|||
|
||||
bNodeSocket *ntreeInsertSocketInterfaceFromSocket(bNodeTree *ntree,
|
||||
bNodeSocket *next_sock,
|
||||
bNode *from_node,
|
||||
bNodeSocket *from_sock)
|
||||
const bNode *from_node,
|
||||
const bNodeSocket *from_sock)
|
||||
{
|
||||
bNodeSocket *iosock = ntreeInsertSocketInterface(
|
||||
ntree,
|
||||
|
|
|
@ -22,26 +22,6 @@ void preprocess_geometry_node_tree_for_evaluation(bNodeTree &tree_cow)
|
|||
blender::nodes::ensure_geometry_nodes_lazy_function_graph(tree_cow);
|
||||
}
|
||||
|
||||
static void double_checked_lock(std::mutex &mutex, bool &data_is_dirty, FunctionRef<void()> fn)
|
||||
{
|
||||
if (!data_is_dirty) {
|
||||
return;
|
||||
}
|
||||
std::lock_guard lock{mutex};
|
||||
if (!data_is_dirty) {
|
||||
return;
|
||||
}
|
||||
fn();
|
||||
data_is_dirty = false;
|
||||
}
|
||||
|
||||
static void double_checked_lock_with_task_isolation(std::mutex &mutex,
|
||||
bool &data_is_dirty,
|
||||
FunctionRef<void()> fn)
|
||||
{
|
||||
double_checked_lock(mutex, data_is_dirty, [&]() { threading::isolate_task(fn); });
|
||||
}
|
||||
|
||||
static void update_interface_sockets(const bNodeTree &ntree)
|
||||
{
|
||||
bNodeTreeRuntime &tree_runtime = *ntree.runtime;
|
||||
|
@ -434,37 +414,34 @@ static void update_group_output_node(const bNodeTree &ntree)
|
|||
static void ensure_topology_cache(const bNodeTree &ntree)
|
||||
{
|
||||
bNodeTreeRuntime &tree_runtime = *ntree.runtime;
|
||||
double_checked_lock_with_task_isolation(
|
||||
tree_runtime.topology_cache_mutex, tree_runtime.topology_cache_is_dirty, [&]() {
|
||||
update_interface_sockets(ntree);
|
||||
update_node_vector(ntree);
|
||||
update_link_vector(ntree);
|
||||
update_socket_vectors_and_owner_node(ntree);
|
||||
update_internal_link_inputs(ntree);
|
||||
update_directly_linked_links_and_sockets(ntree);
|
||||
threading::parallel_invoke(
|
||||
tree_runtime.nodes_by_id.size() > 32,
|
||||
[&]() { update_logical_origins(ntree); },
|
||||
[&]() { update_nodes_by_type(ntree); },
|
||||
[&]() { update_sockets_by_identifier(ntree); },
|
||||
[&]() {
|
||||
update_toposort(ntree,
|
||||
ToposortDirection::LeftToRight,
|
||||
tree_runtime.toposort_left_to_right,
|
||||
tree_runtime.has_available_link_cycle);
|
||||
},
|
||||
[&]() {
|
||||
bool dummy;
|
||||
update_toposort(ntree,
|
||||
ToposortDirection::RightToLeft,
|
||||
tree_runtime.toposort_right_to_left,
|
||||
dummy);
|
||||
},
|
||||
[&]() { update_root_frames(ntree); },
|
||||
[&]() { update_direct_frames_childrens(ntree); });
|
||||
update_group_output_node(ntree);
|
||||
tree_runtime.topology_cache_exists = true;
|
||||
});
|
||||
tree_runtime.topology_cache_mutex.ensure([&]() {
|
||||
update_interface_sockets(ntree);
|
||||
update_node_vector(ntree);
|
||||
update_link_vector(ntree);
|
||||
update_socket_vectors_and_owner_node(ntree);
|
||||
update_internal_link_inputs(ntree);
|
||||
update_directly_linked_links_and_sockets(ntree);
|
||||
threading::parallel_invoke(
|
||||
tree_runtime.nodes_by_id.size() > 32,
|
||||
[&]() { update_logical_origins(ntree); },
|
||||
[&]() { update_nodes_by_type(ntree); },
|
||||
[&]() { update_sockets_by_identifier(ntree); },
|
||||
[&]() {
|
||||
update_toposort(ntree,
|
||||
ToposortDirection::LeftToRight,
|
||||
tree_runtime.toposort_left_to_right,
|
||||
tree_runtime.has_available_link_cycle);
|
||||
},
|
||||
[&]() {
|
||||
bool dummy;
|
||||
update_toposort(
|
||||
ntree, ToposortDirection::RightToLeft, tree_runtime.toposort_right_to_left, dummy);
|
||||
},
|
||||
[&]() { update_root_frames(ntree); },
|
||||
[&]() { update_direct_frames_childrens(ntree); });
|
||||
update_group_output_node(ntree);
|
||||
tree_runtime.topology_cache_exists = true;
|
||||
});
|
||||
}
|
||||
|
||||
} // namespace blender::bke::node_tree_runtime
|
||||
|
|
|
@ -5,6 +5,7 @@
|
|||
|
||||
#include "NOD_node_declaration.hh"
|
||||
|
||||
#include "BLI_resource_scope.hh"
|
||||
#include "BLI_set.hh"
|
||||
#include "BLI_stack.hh"
|
||||
|
||||
|
@ -91,9 +92,10 @@ static OutputFieldDependency get_interface_output_field_dependency(const bNode &
|
|||
return socket_decl.output_field_dependency();
|
||||
}
|
||||
|
||||
static FieldInferencingInterface get_dummy_field_inferencing_interface(const bNode &node)
|
||||
static const FieldInferencingInterface &get_dummy_field_inferencing_interface(const bNode &node,
|
||||
ResourceScope &scope)
|
||||
{
|
||||
FieldInferencingInterface inferencing_interface;
|
||||
auto &inferencing_interface = scope.construct<FieldInferencingInterface>();
|
||||
inferencing_interface.inputs.append_n_times(InputSocketFieldType::None,
|
||||
node.input_sockets().size());
|
||||
inferencing_interface.outputs.append_n_times(OutputFieldDependency::ForDataSource(),
|
||||
|
@ -106,17 +108,19 @@ static FieldInferencingInterface get_dummy_field_inferencing_interface(const bNo
|
|||
* In the future, this information can be stored in the node declaration. This would allow this
|
||||
* function to return a reference, making it more efficient.
|
||||
*/
|
||||
static FieldInferencingInterface get_node_field_inferencing_interface(const bNode &node)
|
||||
static const FieldInferencingInterface &get_node_field_inferencing_interface(const bNode &node,
|
||||
ResourceScope &scope)
|
||||
{
|
||||
/* Node groups already reference all required information, so just return that. */
|
||||
if (node.is_group()) {
|
||||
bNodeTree *group = (bNodeTree *)node.id;
|
||||
if (group == nullptr) {
|
||||
return FieldInferencingInterface();
|
||||
static const FieldInferencingInterface empty_interface;
|
||||
return empty_interface;
|
||||
}
|
||||
if (!ntreeIsRegistered(group)) {
|
||||
/* This can happen when there is a linked node group that was not found (see T92799). */
|
||||
return get_dummy_field_inferencing_interface(node);
|
||||
return get_dummy_field_inferencing_interface(node, scope);
|
||||
}
|
||||
if (!group->runtime->field_inferencing_interface) {
|
||||
/* This shouldn't happen because referenced node groups should always be updated first. */
|
||||
|
@ -125,7 +129,7 @@ static FieldInferencingInterface get_node_field_inferencing_interface(const bNod
|
|||
return *group->runtime->field_inferencing_interface;
|
||||
}
|
||||
|
||||
FieldInferencingInterface inferencing_interface;
|
||||
auto &inferencing_interface = scope.construct<FieldInferencingInterface>();
|
||||
for (const bNodeSocket *input_socket : node.input_sockets()) {
|
||||
inferencing_interface.inputs.append(get_interface_input_field_type(node, *input_socket));
|
||||
}
|
||||
|
@ -185,7 +189,9 @@ static Vector<const bNodeSocket *> gather_input_socket_dependencies(
|
|||
* to figure out if it is always a field or if it depends on any group inputs.
|
||||
*/
|
||||
static OutputFieldDependency find_group_output_dependencies(
|
||||
const bNodeSocket &group_output_socket, const Span<SocketFieldState> field_state_by_socket_id)
|
||||
const bNodeSocket &group_output_socket,
|
||||
const Span<const FieldInferencingInterface *> interface_by_node,
|
||||
const Span<SocketFieldState> field_state_by_socket_id)
|
||||
{
|
||||
if (!is_field_socket_type(group_output_socket)) {
|
||||
return OutputFieldDependency::ForDataSource();
|
||||
|
@ -227,8 +233,8 @@ static OutputFieldDependency find_group_output_dependencies(
|
|||
}
|
||||
}
|
||||
else if (!origin_state.is_single) {
|
||||
const FieldInferencingInterface inferencing_interface =
|
||||
get_node_field_inferencing_interface(origin_node);
|
||||
const FieldInferencingInterface &inferencing_interface =
|
||||
*interface_by_node[origin_node.index()];
|
||||
const OutputFieldDependency &field_dependency =
|
||||
inferencing_interface.outputs[origin_socket->index()];
|
||||
|
||||
|
@ -251,13 +257,14 @@ static OutputFieldDependency find_group_output_dependencies(
|
|||
}
|
||||
|
||||
static void propagate_data_requirements_from_right_to_left(
|
||||
const bNodeTree &tree, const MutableSpan<SocketFieldState> field_state_by_socket_id)
|
||||
const bNodeTree &tree,
|
||||
const Span<const FieldInferencingInterface *> interface_by_node,
|
||||
const MutableSpan<SocketFieldState> field_state_by_socket_id)
|
||||
{
|
||||
const Span<const bNode *> toposort_result = tree.toposort_right_to_left();
|
||||
|
||||
for (const bNode *node : toposort_result) {
|
||||
const FieldInferencingInterface inferencing_interface = get_node_field_inferencing_interface(
|
||||
*node);
|
||||
const FieldInferencingInterface &inferencing_interface = *interface_by_node[node->index()];
|
||||
|
||||
for (const bNodeSocket *output_socket : node->output_sockets()) {
|
||||
SocketFieldState &state = field_state_by_socket_id[output_socket->index_in_tree()];
|
||||
|
@ -369,7 +376,9 @@ static void determine_group_input_states(
|
|||
}
|
||||
|
||||
static void propagate_field_status_from_left_to_right(
|
||||
const bNodeTree &tree, const MutableSpan<SocketFieldState> field_state_by_socket_id)
|
||||
const bNodeTree &tree,
|
||||
const Span<const FieldInferencingInterface *> interface_by_node,
|
||||
const MutableSpan<SocketFieldState> field_state_by_socket_id)
|
||||
{
|
||||
const Span<const bNode *> toposort_result = tree.toposort_left_to_right();
|
||||
|
||||
|
@ -378,8 +387,7 @@ static void propagate_field_status_from_left_to_right(
|
|||
continue;
|
||||
}
|
||||
|
||||
const FieldInferencingInterface inferencing_interface = get_node_field_inferencing_interface(
|
||||
*node);
|
||||
const FieldInferencingInterface &inferencing_interface = *interface_by_node[node->index()];
|
||||
|
||||
/* Update field state of input sockets, also taking into account linked origin sockets. */
|
||||
for (const bNodeSocket *input_socket : node->input_sockets()) {
|
||||
|
@ -440,9 +448,11 @@ static void propagate_field_status_from_left_to_right(
|
|||
}
|
||||
}
|
||||
|
||||
static void determine_group_output_states(const bNodeTree &tree,
|
||||
FieldInferencingInterface &new_inferencing_interface,
|
||||
const Span<SocketFieldState> field_state_by_socket_id)
|
||||
static void determine_group_output_states(
|
||||
const bNodeTree &tree,
|
||||
FieldInferencingInterface &new_inferencing_interface,
|
||||
const Span<const FieldInferencingInterface *> interface_by_node,
|
||||
const Span<SocketFieldState> field_state_by_socket_id)
|
||||
{
|
||||
const bNode *group_output_node = tree.group_output_node();
|
||||
if (!group_output_node) {
|
||||
|
@ -451,7 +461,7 @@ static void determine_group_output_states(const bNodeTree &tree,
|
|||
|
||||
for (const bNodeSocket *group_output_socket : group_output_node->input_sockets().drop_back(1)) {
|
||||
OutputFieldDependency field_dependency = find_group_output_dependencies(
|
||||
*group_output_socket, field_state_by_socket_id);
|
||||
*group_output_socket, interface_by_node, field_state_by_socket_id);
|
||||
new_inferencing_interface.outputs[group_output_socket->index()] = std::move(field_dependency);
|
||||
}
|
||||
}
|
||||
|
@ -486,10 +496,25 @@ static void update_socket_shapes(const bNodeTree &tree,
|
|||
}
|
||||
}
|
||||
|
||||
static void prepare_inferencing_interfaces(
|
||||
const Span<const bNode *> nodes,
|
||||
MutableSpan<const FieldInferencingInterface *> interface_by_node,
|
||||
ResourceScope &scope)
|
||||
{
|
||||
for (const int i : nodes.index_range()) {
|
||||
interface_by_node[i] = &get_node_field_inferencing_interface(*nodes[i], scope);
|
||||
}
|
||||
}
|
||||
|
||||
bool update_field_inferencing(const bNodeTree &tree)
|
||||
{
|
||||
tree.ensure_topology_cache();
|
||||
|
||||
const Span<const bNode *> nodes = tree.all_nodes();
|
||||
ResourceScope scope;
|
||||
Array<const FieldInferencingInterface *> interface_by_node(nodes.size());
|
||||
prepare_inferencing_interfaces(nodes, interface_by_node, scope);
|
||||
|
||||
/* Create new inferencing interface for this node group. */
|
||||
std::unique_ptr<FieldInferencingInterface> new_inferencing_interface =
|
||||
std::make_unique<FieldInferencingInterface>();
|
||||
|
@ -501,10 +526,12 @@ bool update_field_inferencing(const bNodeTree &tree)
|
|||
/* Keep track of the state of all sockets. The index into this array is #SocketRef::id(). */
|
||||
Array<SocketFieldState> field_state_by_socket_id(tree.all_sockets().size());
|
||||
|
||||
propagate_data_requirements_from_right_to_left(tree, field_state_by_socket_id);
|
||||
propagate_data_requirements_from_right_to_left(
|
||||
tree, interface_by_node, field_state_by_socket_id);
|
||||
determine_group_input_states(tree, *new_inferencing_interface, field_state_by_socket_id);
|
||||
propagate_field_status_from_left_to_right(tree, field_state_by_socket_id);
|
||||
determine_group_output_states(tree, *new_inferencing_interface, field_state_by_socket_id);
|
||||
propagate_field_status_from_left_to_right(tree, interface_by_node, field_state_by_socket_id);
|
||||
determine_group_output_states(
|
||||
tree, *new_inferencing_interface, interface_by_node, field_state_by_socket_id);
|
||||
update_socket_shapes(tree, field_state_by_socket_id);
|
||||
|
||||
/* Update the previous group interface. */
|
||||
|
|
|
@ -51,7 +51,7 @@ enum eNodeTreeChangedFlag {
|
|||
static void add_tree_tag(bNodeTree *ntree, const eNodeTreeChangedFlag flag)
|
||||
{
|
||||
ntree->runtime->changed_flag |= flag;
|
||||
ntree->runtime->topology_cache_is_dirty = true;
|
||||
ntree->runtime->topology_cache_mutex.tag_dirty();
|
||||
}
|
||||
|
||||
static void add_node_tag(bNodeTree *ntree, bNode *node, const eNodeTreeChangedFlag flag)
|
||||
|
|
|
@ -1675,8 +1675,6 @@ static void sculpt_update_object(
|
|||
ss->depsgraph = depsgraph;
|
||||
|
||||
ss->deform_modifiers_active = sculpt_modifiers_active(scene, sd, ob);
|
||||
ss->show_mask = (sd->flags & SCULPT_HIDE_MASK) == 0;
|
||||
ss->show_face_sets = (sd->flags & SCULPT_HIDE_FACE_SETS) == 0;
|
||||
|
||||
ss->building_vp_handle = false;
|
||||
|
||||
|
@ -1775,9 +1773,6 @@ static void sculpt_update_object(
|
|||
}
|
||||
}
|
||||
|
||||
pbvh_show_mask_set(ss->pbvh, ss->show_mask);
|
||||
pbvh_show_face_sets_set(ss->pbvh, ss->show_face_sets);
|
||||
|
||||
if (ss->deform_modifiers_active) {
|
||||
/* Painting doesn't need crazyspace, use already evaluated mesh coordinates if possible. */
|
||||
bool used_me_eval = false;
|
||||
|
@ -2173,8 +2168,6 @@ static PBVH *build_pbvh_for_dynamic_topology(Object *ob)
|
|||
ob->sculpt->bm_log,
|
||||
ob->sculpt->attrs.dyntopo_node_id_vertex->bmesh_cd_offset,
|
||||
ob->sculpt->attrs.dyntopo_node_id_face->bmesh_cd_offset);
|
||||
pbvh_show_mask_set(pbvh, ob->sculpt->show_mask);
|
||||
pbvh_show_face_sets_set(pbvh, false);
|
||||
return pbvh;
|
||||
}
|
||||
|
||||
|
@ -2207,9 +2200,6 @@ static PBVH *build_pbvh_from_regular_mesh(Object *ob, Mesh *me_eval_deform, bool
|
|||
looptri,
|
||||
looptris_num);
|
||||
|
||||
pbvh_show_mask_set(pbvh, ob->sculpt->show_mask);
|
||||
pbvh_show_face_sets_set(pbvh, ob->sculpt->show_face_sets);
|
||||
|
||||
const bool is_deformed = check_sculpt_object_deformed(ob, true);
|
||||
if (is_deformed && me_eval_deform != nullptr) {
|
||||
int totvert;
|
||||
|
@ -2240,8 +2230,6 @@ static PBVH *build_pbvh_from_ccg(Object *ob, SubdivCCG *subdiv_ccg, bool respect
|
|||
subdiv_ccg->grid_hidden,
|
||||
base_mesh,
|
||||
subdiv_ccg);
|
||||
pbvh_show_mask_set(pbvh, ob->sculpt->show_mask);
|
||||
pbvh_show_face_sets_set(pbvh, ob->sculpt->show_face_sets);
|
||||
return pbvh;
|
||||
}
|
||||
|
||||
|
|
|
@ -3419,16 +3419,6 @@ bool pbvh_has_face_sets(PBVH *pbvh)
|
|||
return false;
|
||||
}
|
||||
|
||||
void pbvh_show_mask_set(PBVH *pbvh, bool show_mask)
|
||||
{
|
||||
pbvh->show_mask = show_mask;
|
||||
}
|
||||
|
||||
void pbvh_show_face_sets_set(PBVH *pbvh, bool show_face_sets)
|
||||
{
|
||||
pbvh->show_face_sets = show_face_sets;
|
||||
}
|
||||
|
||||
void BKE_pbvh_set_frustum_planes(PBVH *pbvh, PBVHFrustumPlanes *planes)
|
||||
{
|
||||
pbvh->num_planes = planes->num_planes;
|
||||
|
|
|
@ -191,8 +191,6 @@ struct PBVH {
|
|||
|
||||
/* flag are verts/faces deformed */
|
||||
bool deformed;
|
||||
bool show_mask;
|
||||
bool show_face_sets;
|
||||
bool respect_hide;
|
||||
|
||||
/* Dynamic topology */
|
||||
|
|
|
@ -626,7 +626,7 @@ PointDensity *BKE_texture_pointdensity_add(void)
|
|||
return pd;
|
||||
}
|
||||
|
||||
PointDensity *BKE_texture_pointdensity_copy(const PointDensity *pd, const int UNUSED(flag))
|
||||
PointDensity *BKE_texture_pointdensity_copy(const PointDensity *pd, const int /*flag*/)
|
||||
{
|
||||
PointDensity *pdn;
|
||||
|
||||
|
|
|
@ -27,6 +27,8 @@
|
|||
#include "BKE_main.h"
|
||||
#include "BKE_undo_system.h"
|
||||
|
||||
#include "RNA_access.h"
|
||||
|
||||
#include "MEM_guardedalloc.h"
|
||||
|
||||
#define undo_stack _wm_undo_stack_disallow /* pass in as a variable always. */
|
||||
|
@ -494,7 +496,9 @@ eUndoPushReturn BKE_undosys_step_push_with_type(UndoStack *ustack,
|
|||
|
||||
/* Might not be final place for this to be called - probably only want to call it from some
|
||||
* undo handlers, not all of them? */
|
||||
if (BKE_lib_override_library_main_operations_create(G_MAIN, false)) {
|
||||
eRNAOverrideMatchResult report_flags = RNA_OVERRIDE_MATCH_RESULT_INIT;
|
||||
BKE_lib_override_library_main_operations_create(G_MAIN, false, (int *)&report_flags);
|
||||
if (report_flags & RNA_OVERRIDE_MATCH_RESULT_CREATED) {
|
||||
retval |= UNDO_PUSH_RET_OVERRIDE_CHANGED;
|
||||
}
|
||||
|
||||
|
|
|
@ -152,9 +152,7 @@ BLI_INLINE ColorTheme4<uint8_t> BLI_color_convert_to_theme4b(const ColorTheme4<f
|
|||
template<eAlpha Alpha>
|
||||
class ColorSceneLinear4f final : public ColorRGBA<float, eSpace::SceneLinear, Alpha> {
|
||||
public:
|
||||
constexpr ColorSceneLinear4f<Alpha>() : ColorRGBA<float, eSpace::SceneLinear, Alpha>()
|
||||
{
|
||||
}
|
||||
constexpr ColorSceneLinear4f<Alpha>() = default;
|
||||
|
||||
constexpr ColorSceneLinear4f<Alpha>(const float *rgba)
|
||||
: ColorRGBA<float, eSpace::SceneLinear, Alpha>(rgba)
|
||||
|
|
|
@ -664,11 +664,13 @@ extern bool BLI_memory_is_zero(const void *arr, size_t arr_size);
|
|||
/** \name Unused Function/Argument Macros
|
||||
* \{ */
|
||||
|
||||
#ifndef __cplusplus
|
||||
/* UNUSED macro, for function argument */
|
||||
#if defined(__GNUC__) || defined(__clang__)
|
||||
# define UNUSED(x) UNUSED_##x __attribute__((__unused__))
|
||||
#else
|
||||
# define UNUSED(x) UNUSED_##x
|
||||
# if defined(__GNUC__) || defined(__clang__)
|
||||
# define UNUSED(x) UNUSED_##x __attribute__((__unused__))
|
||||
# else
|
||||
# define UNUSED(x) UNUSED_##x
|
||||
# endif
|
||||
#endif
|
||||
|
||||
/**
|
||||
|
|
|
@ -42,6 +42,8 @@ ScopedTimerAveraged::~ScopedTimerAveraged()
|
|||
print_duration(total_time_ / total_count_);
|
||||
std::cout << ", Min: ";
|
||||
print_duration(min_time_);
|
||||
std::cout << ", Last: ";
|
||||
print_duration(duration);
|
||||
std::cout << ")\n";
|
||||
}
|
||||
|
||||
|
|
|
@ -10,6 +10,7 @@ set(INC
|
|||
../depsgraph
|
||||
../draw
|
||||
../editors/include
|
||||
../gpu
|
||||
../imbuf
|
||||
../makesdna
|
||||
../makesrna
|
||||
|
|
|
@ -2020,8 +2020,17 @@ static void direct_link_id_common(
|
|||
/* When actually reading a file, we do want to reset/re-generate session UUIDS.
|
||||
* In undo case, we want to re-use existing ones. */
|
||||
id->session_uuid = MAIN_ID_SESSION_UUID_UNSET;
|
||||
|
||||
/* Runtime IDs should never be written in .blend files (except memfiles from undo). */
|
||||
BLI_assert((id->tag & LIB_TAG_RUNTIME) == 0);
|
||||
}
|
||||
|
||||
/* No-main and other types of special IDs should never be written in .blend files. */
|
||||
/* NOTE: `NO_MAIN` is commented for now as some code paths may still generate embedded IDs with
|
||||
* this tag, see T103389. Related to T88555. */
|
||||
BLI_assert(
|
||||
(id->tag & (/*LIB_TAG_NO_MAIN |*/ LIB_TAG_NO_USER_REFCOUNT | LIB_TAG_NOT_ALLOCATED)) == 0);
|
||||
|
||||
if ((tag & LIB_TAG_TEMP_MAIN) == 0) {
|
||||
BKE_lib_libblock_session_uuid_ensure(id);
|
||||
}
|
||||
|
@ -2034,7 +2043,12 @@ static void direct_link_id_common(
|
|||
id->py_instance = nullptr;
|
||||
|
||||
/* Initialize with provided tag. */
|
||||
id->tag = tag;
|
||||
if (BLO_read_data_is_undo(reader)) {
|
||||
id->tag = tag | (id->tag & LIB_TAG_KEEP_ON_UNDO);
|
||||
}
|
||||
else {
|
||||
id->tag = tag;
|
||||
}
|
||||
|
||||
if (ID_IS_LINKED(id)) {
|
||||
id->library_weak_reference = nullptr;
|
||||
|
@ -3105,7 +3119,7 @@ static void read_libblock_undo_restore_identical(
|
|||
BLI_assert(id_old != nullptr);
|
||||
|
||||
/* Some tags need to be preserved here. */
|
||||
id_old->tag = tag | (id_old->tag & LIB_TAG_EXTRAUSER);
|
||||
id_old->tag = tag | (id_old->tag & LIB_TAG_KEEP_ON_UNDO);
|
||||
id_old->lib = main->curlib;
|
||||
id_old->us = ID_FAKE_USERS(id_old);
|
||||
/* Do not reset id->icon_id here, memory allocated for it remains valid. */
|
||||
|
@ -3907,6 +3921,11 @@ BlendFileData *blo_read_file_internal(FileData *fd, const char *filepath)
|
|||
BKE_lib_override_library_main_validate(bfd->main, fd->reports->reports);
|
||||
BKE_lib_override_library_main_update(bfd->main);
|
||||
|
||||
/* FIXME Temporary 'fix' to a problem in how temp ID are copied in
|
||||
* `BKE_lib_override_library_main_update`, see T103062.
|
||||
* Proper fix involves first addressing T90610. */
|
||||
BKE_main_collections_parent_relations_rebuild(bfd->main);
|
||||
|
||||
fd->reports->duration.lib_overrides = PIL_check_seconds_timer() -
|
||||
fd->reports->duration.lib_overrides;
|
||||
}
|
||||
|
@ -4529,6 +4548,11 @@ static void library_link_end(Main *mainl, FileData **fd, const int flag)
|
|||
|
||||
BKE_main_id_tag_all(mainvar, LIB_TAG_NEW, false);
|
||||
|
||||
/* FIXME Temporary 'fix' to a problem in how temp ID are copied in
|
||||
* `BKE_lib_override_library_main_update`, see T103062.
|
||||
* Proper fix involves first addressing T90610. */
|
||||
BKE_main_collections_parent_relations_rebuild(mainvar);
|
||||
|
||||
/* Make all relative paths, relative to the open blend file. */
|
||||
fix_relpaths_library(BKE_main_blendfile_path(mainvar), mainvar);
|
||||
|
||||
|
|
|
@ -3822,6 +3822,19 @@ void blo_do_versions_300(FileData *fd, Library * /*lib*/, Main *bmain)
|
|||
}
|
||||
}
|
||||
|
||||
if (!MAIN_VERSION_ATLEAST(bmain, 305, 6)) {
|
||||
LISTBASE_FOREACH (bScreen *, screen, &bmain->screens) {
|
||||
LISTBASE_FOREACH (ScrArea *, area, &screen->areabase) {
|
||||
LISTBASE_FOREACH (SpaceLink *, sl, &area->spacedata) {
|
||||
if (sl->spacetype == SPACE_VIEW3D) {
|
||||
View3D *v3d = (View3D *)sl;
|
||||
v3d->overlay.flag |= (int)(V3D_OVERLAY_SCULPT_SHOW_MASK |
|
||||
V3D_OVERLAY_SCULPT_SHOW_FACE_SETS);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
/**
|
||||
* Versioning code until next subversion bump goes here.
|
||||
*
|
||||
|
@ -3833,5 +3846,9 @@ void blo_do_versions_300(FileData *fd, Library * /*lib*/, Main *bmain)
|
|||
*/
|
||||
{
|
||||
/* Keep this block, even when empty. */
|
||||
const int CV_SCULPT_SELECTION_ENABLED = (1 << 1);
|
||||
LISTBASE_FOREACH (Curves *, curves_id, &bmain->hair_curves) {
|
||||
curves_id->flag &= ~CV_SCULPT_SELECTION_ENABLED;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -31,6 +31,8 @@
|
|||
|
||||
#include "BLO_readfile.h"
|
||||
|
||||
#include "GPU_platform.h"
|
||||
|
||||
#include "readfile.h" /* Own include. */
|
||||
|
||||
#include "WM_types.h"
|
||||
|
@ -766,6 +768,11 @@ void blo_do_versions_userdef(UserDef *userdef)
|
|||
userdef->dupflag |= USER_DUP_CURVES | USER_DUP_POINTCLOUD;
|
||||
}
|
||||
|
||||
/* Set GPU backend to OpenGL. */
|
||||
if (!USER_VERSION_ATLEAST(305, 5)) {
|
||||
userdef->gpu_backend = GPU_BACKEND_OPENGL;
|
||||
}
|
||||
|
||||
/**
|
||||
* Versioning code until next subversion bump goes here.
|
||||
*
|
||||
|
|
|
@ -1097,7 +1097,10 @@ static int write_id_direct_linked_data_process_cb(LibraryIDLinkCallbackData *cb_
|
|||
}
|
||||
BLI_assert(!ID_IS_LINKED(id_self));
|
||||
BLI_assert((cb_flag & IDWALK_CB_INDIRECT_USAGE) == 0);
|
||||
UNUSED_VARS_NDEBUG(id_self);
|
||||
|
||||
if (id_self->tag & LIB_TAG_RUNTIME) {
|
||||
return IDWALK_RET_NOP;
|
||||
}
|
||||
|
||||
if (cb_flag & IDWALK_CB_DIRECT_WEAK_LINK) {
|
||||
id_lib_indirect_weak_link(id);
|
||||
|
@ -1207,12 +1210,18 @@ static bool write_file_handle(Main *mainvar,
|
|||
|
||||
/* We only write unused IDs in undo case.
|
||||
* NOTE: All Scenes, WindowManagers and WorkSpaces should always be written to disk, so
|
||||
* their user-count should never be nullptr currently. */
|
||||
* their user-count should never be zero currently. */
|
||||
if (id->us == 0 && !wd->use_memfile) {
|
||||
BLI_assert(!ELEM(GS(id->name), ID_SCE, ID_WM, ID_WS));
|
||||
continue;
|
||||
}
|
||||
|
||||
if ((id->tag & LIB_TAG_RUNTIME) != 0 && !wd->use_memfile) {
|
||||
/* Runtime IDs are never written to .blend files, and they should not influence
|
||||
* (in)direct status of linked IDs they may use. */
|
||||
continue;
|
||||
}
|
||||
|
||||
const bool do_override = !ELEM(override_storage, nullptr, bmain) &&
|
||||
ID_IS_OVERRIDE_LIBRARY_REAL(id);
|
||||
|
||||
|
@ -1253,7 +1262,12 @@ static bool write_file_handle(Main *mainvar,
|
|||
memcpy(id_buffer, id, idtype_struct_size);
|
||||
|
||||
/* Clear runtime data to reduce false detection of changed data in undo/redo context. */
|
||||
((ID *)id_buffer)->tag = 0;
|
||||
if (wd->use_memfile) {
|
||||
((ID *)id_buffer)->tag &= LIB_TAG_KEEP_ON_UNDO;
|
||||
}
|
||||
else {
|
||||
((ID *)id_buffer)->tag = 0;
|
||||
}
|
||||
((ID *)id_buffer)->us = 0;
|
||||
((ID *)id_buffer)->icon_id = 0;
|
||||
/* Those listbase data change every time we add/remove an ID, and also often when
|
||||
|
|
|
@ -139,9 +139,9 @@ static void bm_vert_calc_normals_impl(BMVert *v)
|
|||
normalize_v3_v3(v_no, v->co);
|
||||
}
|
||||
|
||||
static void bm_vert_calc_normals_cb(void *UNUSED(userdata),
|
||||
static void bm_vert_calc_normals_cb(void * /*userdata*/,
|
||||
MempoolIterData *mp_v,
|
||||
const TaskParallelTLS *__restrict UNUSED(tls))
|
||||
const TaskParallelTLS *__restrict /*tls*/)
|
||||
{
|
||||
BMVert *v = (BMVert *)mp_v;
|
||||
bm_vert_calc_normals_impl(v);
|
||||
|
@ -192,7 +192,7 @@ static void bm_vert_calc_normals_with_coords(BMVert *v, BMVertsCalcNormalsWithCo
|
|||
|
||||
static void bm_vert_calc_normals_with_coords_cb(void *userdata,
|
||||
MempoolIterData *mp_v,
|
||||
const TaskParallelTLS *__restrict UNUSED(tls))
|
||||
const TaskParallelTLS *__restrict /*tls*/)
|
||||
{
|
||||
BMVertsCalcNormalsWithCoordsData *data = static_cast<BMVertsCalcNormalsWithCoordsData *>(
|
||||
userdata);
|
||||
|
@ -224,9 +224,9 @@ static void bm_mesh_verts_calc_normals(BMesh *bm,
|
|||
}
|
||||
}
|
||||
|
||||
static void bm_face_calc_normals_cb(void *UNUSED(userdata),
|
||||
static void bm_face_calc_normals_cb(void * /*userdata*/,
|
||||
MempoolIterData *mp_f,
|
||||
const TaskParallelTLS *__restrict UNUSED(tls))
|
||||
const TaskParallelTLS *__restrict /*tls*/)
|
||||
{
|
||||
BMFace *f = (BMFace *)mp_f;
|
||||
|
||||
|
@ -262,20 +262,20 @@ void BM_mesh_normals_update(BMesh *bm)
|
|||
* \{ */
|
||||
|
||||
static void bm_partial_faces_parallel_range_calc_normals_cb(
|
||||
void *userdata, const int iter, const TaskParallelTLS *__restrict UNUSED(tls))
|
||||
void *userdata, const int iter, const TaskParallelTLS *__restrict /*tls*/)
|
||||
{
|
||||
BMFace *f = ((BMFace **)userdata)[iter];
|
||||
BM_face_calc_normal(f, f->no);
|
||||
}
|
||||
|
||||
static void bm_partial_verts_parallel_range_calc_normal_cb(
|
||||
void *userdata, const int iter, const TaskParallelTLS *__restrict UNUSED(tls))
|
||||
void *userdata, const int iter, const TaskParallelTLS *__restrict /*tls*/)
|
||||
{
|
||||
BMVert *v = ((BMVert **)userdata)[iter];
|
||||
bm_vert_calc_normals_impl(v);
|
||||
}
|
||||
|
||||
void BM_mesh_normals_update_with_partial_ex(BMesh *UNUSED(bm),
|
||||
void BM_mesh_normals_update_with_partial_ex(BMesh * /*bm*/,
|
||||
const BMPartialUpdate *bmpinfo,
|
||||
const struct BMeshNormalsUpdate_Params *params)
|
||||
{
|
||||
|
@ -1192,7 +1192,7 @@ static void bm_mesh_loops_calc_normals_for_vert_init_fn(const void *__restrict u
|
|||
}
|
||||
|
||||
static void bm_mesh_loops_calc_normals_for_vert_reduce_fn(const void *__restrict userdata,
|
||||
void *__restrict UNUSED(chunk_join),
|
||||
void *__restrict /*chunk_join*/,
|
||||
void *__restrict chunk)
|
||||
{
|
||||
auto *data = static_cast<const BMLoopsCalcNormalsWithCoordsData *>(userdata);
|
||||
|
|
|
@ -60,7 +60,7 @@ struct MetaDataExtractCallbackData {
|
|||
static void extract_cryptomatte_meta_data(void *_data,
|
||||
const char *propname,
|
||||
char *propvalue,
|
||||
int UNUSED(len));
|
||||
int /*len*/);
|
||||
};
|
||||
|
||||
} // namespace blender::compositor
|
||||
|
|
|
@ -102,8 +102,9 @@ class Evaluator {
|
|||
private:
|
||||
/* A reference to the compositor context. */
|
||||
Context &context_;
|
||||
/* A reference to the compositor node tree. */
|
||||
bNodeTree &node_tree_;
|
||||
/* A derived node tree representing the compositor node tree. This is constructed when the node
|
||||
* tree is compiled and reset when the evaluator is reset, so it gets reconstructed every time
|
||||
* the node tree changes. */
|
||||
std::unique_ptr<DerivedNodeTree> derived_node_tree_;
|
||||
/* The compiled operations stream. This contains ordered pointers to the operations that were
|
||||
* compiled. This is initialized when the node tree is compiled and freed when the evaluator
|
||||
|
@ -116,8 +117,8 @@ class Evaluator {
|
|||
bool is_compiled_ = false;
|
||||
|
||||
public:
|
||||
/* Construct an evaluator from a compositor node tree and a context. */
|
||||
Evaluator(Context &context, bNodeTree &node_tree);
|
||||
/* Construct an evaluator from a context. */
|
||||
Evaluator(Context &context);
|
||||
|
||||
/* Evaluate the compositor node tree. If the node tree is already compiled into an operations
|
||||
* stream, that stream will be evaluated directly. Otherwise, the node tree will be compiled and
|
||||
|
|
|
@ -21,8 +21,7 @@ namespace blender::realtime_compositor {
|
|||
|
||||
using namespace nodes::derived_node_tree_types;
|
||||
|
||||
Evaluator::Evaluator(Context &context, bNodeTree &node_tree)
|
||||
: context_(context), node_tree_(node_tree)
|
||||
Evaluator::Evaluator(Context &context) : context_(context)
|
||||
{
|
||||
}
|
||||
|
||||
|
@ -67,7 +66,7 @@ bool Evaluator::validate_node_tree()
|
|||
|
||||
void Evaluator::compile_and_evaluate()
|
||||
{
|
||||
derived_node_tree_ = std::make_unique<DerivedNodeTree>(node_tree_);
|
||||
derived_node_tree_ = std::make_unique<DerivedNodeTree>(*context_.get_scene()->nodetree);
|
||||
|
||||
if (!validate_node_tree()) {
|
||||
return;
|
||||
|
|
|
@ -90,7 +90,7 @@ class Engine {
|
|||
public:
|
||||
Engine(char *info_message)
|
||||
: context_(texture_pool_, info_message),
|
||||
evaluator_(context_, node_tree()),
|
||||
evaluator_(context_),
|
||||
last_viewport_size_(context_.get_output_size())
|
||||
{
|
||||
}
|
||||
|
@ -124,12 +124,6 @@ class Engine {
|
|||
evaluator_.reset();
|
||||
}
|
||||
}
|
||||
|
||||
/* Get a reference to the compositor node tree. */
|
||||
static bNodeTree &node_tree()
|
||||
{
|
||||
return *DRW_context_state_get()->scene->nodetree;
|
||||
}
|
||||
};
|
||||
|
||||
} // namespace blender::draw::compositor
|
||||
|
|
|
@ -1319,9 +1319,7 @@ static char *eevee_get_defines(int options)
|
|||
return str;
|
||||
}
|
||||
|
||||
static void eevee_material_post_eval(void *UNUSED(thunk),
|
||||
GPUMaterial *mat,
|
||||
GPUCodegenOutput *codegen)
|
||||
static void eevee_material_post_eval(void * /*thunk*/, GPUMaterial *mat, GPUCodegenOutput *codegen)
|
||||
{
|
||||
/* Fetch material-specific Create-info's and source. */
|
||||
uint64_t options = GPU_material_uuid_get(mat);
|
||||
|
@ -1344,7 +1342,7 @@ static void eevee_material_post_eval(void *UNUSED(thunk),
|
|||
}
|
||||
|
||||
static struct GPUMaterial *eevee_material_get_ex(
|
||||
struct Scene *UNUSED(scene), Material *ma, World *wo, int options, bool deferred)
|
||||
struct Scene * /*scene*/, Material *ma, World *wo, int options, bool deferred)
|
||||
{
|
||||
BLI_assert(ma || wo);
|
||||
const bool is_volume = (options & VAR_MAT_VOLUME) != 0;
|
||||
|
|
|
@ -23,8 +23,8 @@ uniform sampler2DArray utilTex;
|
|||
#define LTC_DISK_LAYER 3 /* UNUSED */
|
||||
|
||||
/* Layers 4 to 20 are for BTDF Lut. */
|
||||
const float lut_btdf_layer_first = 4.0;
|
||||
const float lut_btdf_layer_count = 16.0;
|
||||
#define lut_btdf_layer_first 4.0
|
||||
#define lut_btdf_layer_count 16.0
|
||||
|
||||
/**
|
||||
* Reminder: The 4 noise values are based of 3 uncorrelated blue noises:
|
||||
|
|
|
@ -1,12 +1,7 @@
|
|||
|
||||
#ifdef GPU_ARB_texture_cube_map_array
|
||||
|
||||
# define textureLod_cubemapArray(tex, co, lod) textureLod(tex, co, lod)
|
||||
|
||||
#else
|
||||
|
||||
/* Fallback implementation for hardware not supporting cubemap arrays. */
|
||||
# define samplerCubeArray sampler2DArray
|
||||
/* Fallback implementation for hardware not supporting cubemap arrays.
|
||||
* `samplerCubeArray` fallback declaration as sampler2DArray in `glsl_shader_defines.glsl`*/
|
||||
#ifndef GPU_ARB_texture_cube_map_array
|
||||
|
||||
float cubemap_face_index(vec3 P)
|
||||
{
|
||||
|
|
|
@ -6,10 +6,10 @@
|
|||
|
||||
#pragma BLENDER_REQUIRE(effect_dof_lib.glsl)
|
||||
|
||||
const float tile_to_fullres_factor = float(DOF_TILE_DIVISOR);
|
||||
#define tile_to_fullres_factor float(DOF_TILE_DIVISOR)
|
||||
|
||||
/* Error introduced by the random offset of the gathering kernel's center. */
|
||||
const float bluring_radius_error = 1.0 + 1.0 / (gather_ring_count + 0.5);
|
||||
#define bluring_radius_error (1.0 + 1.0 / (gather_ring_count + 0.5))
|
||||
|
||||
void main()
|
||||
{
|
||||
|
|
|
@ -10,6 +10,7 @@
|
|||
|
||||
void main()
|
||||
{
|
||||
DEFINE_DOF_QUAD_OFFSETS
|
||||
vec2 halfres_texel_size = 1.0 / vec2(textureSize(colorBuffer, 0).xy);
|
||||
/* Center uv around the 4 halfres pixels. */
|
||||
vec2 quad_center = (floor(gl_FragCoord.xy) * 2.0 + 1.0) * halfres_texel_size;
|
||||
|
|
|
@ -9,7 +9,7 @@
|
|||
|
||||
#pragma BLENDER_REQUIRE(effect_dof_lib.glsl)
|
||||
|
||||
const int halfres_tile_divisor = DOF_TILE_DIVISOR / 2;
|
||||
#define halfres_tile_divisor (DOF_TILE_DIVISOR / 2)
|
||||
|
||||
void main()
|
||||
{
|
||||
|
|
|
@ -18,9 +18,9 @@ vec2 outOcclusion;
|
|||
#endif
|
||||
|
||||
#ifdef DOF_FOREGROUND_PASS
|
||||
const bool is_foreground = true;
|
||||
# define is_foreground true
|
||||
#else /* DOF_BACKGROUND_PASS */
|
||||
const bool is_foreground = false;
|
||||
# define is_foreground false
|
||||
#endif
|
||||
|
||||
const float unit_ring_radius = 1.0 / float(gather_ring_count);
|
||||
|
|
|
@ -12,38 +12,41 @@
|
|||
// #define DOF_DEBUG_GATHER_PERF
|
||||
// #define DOF_DEBUG_SCATTER_PERF
|
||||
|
||||
const bool no_smooth_intersection = false;
|
||||
const bool no_gather_occlusion = false;
|
||||
const bool no_gather_mipmaps = false;
|
||||
const bool no_gather_random = false;
|
||||
const bool no_gather_filtering = false;
|
||||
const bool no_scatter_occlusion = false;
|
||||
const bool no_scatter_pass = false;
|
||||
const bool no_foreground_pass = false;
|
||||
const bool no_background_pass = false;
|
||||
const bool no_slight_focus_pass = false;
|
||||
const bool no_focus_pass = false;
|
||||
const bool no_holefill_pass = false;
|
||||
#define no_smooth_intersection false
|
||||
#define no_gather_occlusion false
|
||||
#define no_gather_mipmaps false
|
||||
#define no_gather_random false
|
||||
#define no_gather_filtering false
|
||||
#define no_scatter_occlusion false
|
||||
#define no_scatter_pass false
|
||||
#define no_foreground_pass false
|
||||
#define no_background_pass false
|
||||
#define no_slight_focus_pass false
|
||||
#define no_focus_pass false
|
||||
#define no_holefill_pass false
|
||||
|
||||
/* -------------- Quality Defines ------------- */
|
||||
|
||||
#ifdef DOF_HOLEFILL_PASS
|
||||
/* No need for very high density for holefill. */
|
||||
const int gather_ring_count = 3;
|
||||
const int gather_ring_density = 3;
|
||||
const int gather_max_density_change = 0;
|
||||
const int gather_density_change_ring = 1;
|
||||
# define gather_ring_count 3
|
||||
# define gather_ring_density 3
|
||||
# define gather_max_density_change 0
|
||||
# define gather_density_change_ring 1
|
||||
#else
|
||||
const int gather_ring_count = DOF_GATHER_RING_COUNT;
|
||||
const int gather_ring_density = 3;
|
||||
const int gather_max_density_change = 50; /* Dictates the maximum good quality blur. */
|
||||
const int gather_density_change_ring = 1;
|
||||
# define gather_ring_count DOF_GATHER_RING_COUNT
|
||||
# define gather_ring_density 3
|
||||
# define gather_max_density_change 50 /* Dictates the maximum good quality blur. */
|
||||
# define gather_density_change_ring 1
|
||||
#endif
|
||||
|
||||
/* -------------- Utils ------------- */
|
||||
|
||||
const vec2 quad_offsets[4] = vec2[4](
|
||||
vec2(-0.5, 0.5), vec2(0.5, 0.5), vec2(0.5, -0.5), vec2(-0.5, -0.5));
|
||||
/* For performance on macOS, constants declared within function scope utilize constant uniform
|
||||
register space rather than per-thread, reducing spill and incrasing
|
||||
thread execution width - and thus performance */
|
||||
#define DEFINE_DOF_QUAD_OFFSETS \
|
||||
const vec2 quad_offsets[4] = vec2[4]( \
|
||||
vec2(-0.5, 0.5), vec2(0.5, 0.5), vec2(0.5, -0.5), vec2(-0.5, -0.5));
|
||||
|
||||
/* Divide by sensor size to get the normalized size. */
|
||||
#define calculate_coc_persp(zdepth) (cocMul / zdepth - cocBias)
|
||||
|
@ -128,11 +131,11 @@ float dof_load_gather_coc(sampler2D gather_input_coc_buffer, vec2 uv, float lod)
|
|||
}
|
||||
|
||||
/* Distribute weights between near/slightfocus/far fields (slide 117). */
|
||||
const float layer_threshold = 4.0;
|
||||
#define layer_threshold 4.0
|
||||
/* Make sure it overlaps. */
|
||||
const float layer_offset_fg = 0.5 + 1.0;
|
||||
#define layer_offset_fg (0.5 + 1.0)
|
||||
/* Extra offset for convolution layers to avoid light leaking from background. */
|
||||
const float layer_offset = 0.5 + 0.5;
|
||||
#define layer_offset (0.5 + 0.5)
|
||||
|
||||
#define DOF_MAX_SLIGHT_FOCUS_RADIUS 16
|
||||
|
||||
|
|
|
@ -11,6 +11,7 @@
|
|||
/* NOTE: Do not compare alpha as it is not scattered by the scatter pass. */
|
||||
float dof_scatter_neighborhood_rejection(vec3 color)
|
||||
{
|
||||
DEFINE_DOF_QUAD_OFFSETS;
|
||||
color = min(vec3(scatterColorNeighborMax), color);
|
||||
|
||||
float validity = 0.0;
|
||||
|
@ -132,6 +133,7 @@ void main()
|
|||
/* Downsample pass done for each mip starting from mip1. */
|
||||
void main()
|
||||
{
|
||||
DEFINE_DOF_QUAD_OFFSETS
|
||||
vec2 input_texel_size = 1.0 / vec2(textureSize(colorBuffer, 0).xy);
|
||||
/* Center uv around the 4 pixels of the previous mip. */
|
||||
vec2 quad_center = (floor(gl_FragCoord.xy) * 2.0 + 1.0) * input_texel_size;
|
||||
|
|
|
@ -29,6 +29,7 @@ float bokeh_shape(vec2 center)
|
|||
|
||||
void main(void)
|
||||
{
|
||||
DEFINE_DOF_QUAD_OFFSETS
|
||||
vec4 shapes;
|
||||
for (int i = 0; i < 4; i++) {
|
||||
shapes[i] = bokeh_shape(spritepos + quad_offsets[i]);
|
||||
|
|
|
@ -37,6 +37,7 @@ void vertex_discard()
|
|||
|
||||
void main()
|
||||
{
|
||||
DEFINE_DOF_QUAD_OFFSETS
|
||||
ivec2 tex_size = textureSize(cocBuffer, 0);
|
||||
|
||||
int t_id = gl_VertexID / 3; /* Triangle Id */
|
||||
|
|
|
@ -10,6 +10,7 @@
|
|||
|
||||
void main()
|
||||
{
|
||||
DEFINE_DOF_QUAD_OFFSETS
|
||||
vec2 fullres_texel_size = 1.0 / vec2(textureSize(colorBuffer, 0).xy);
|
||||
/* Center uv around the 4 fullres pixels. */
|
||||
vec2 quad_center = (floor(gl_FragCoord.xy) * 2.0 + 1.0) * fullres_texel_size;
|
||||
|
|
|
@ -47,53 +47,4 @@ HitData decode_hit_data(vec4 hit_data, float hit_depth)
|
|||
|
||||
/* Blue noise categorized into 4 sets of samples.
|
||||
* See "Stochastic all the things" presentation slide 32-37. */
|
||||
const int resolve_samples_count = 9;
|
||||
const vec2 resolve_sample_offsets[36] = vec2[36](
|
||||
/* Set 1. */
|
||||
/* First Ring (2x2). */
|
||||
vec2(0, 0),
|
||||
/* Second Ring (6x6). */
|
||||
vec2(-1, 3),
|
||||
vec2(1, 3),
|
||||
vec2(-1, 1),
|
||||
vec2(3, 1),
|
||||
vec2(-2, 0),
|
||||
vec2(3, 0),
|
||||
vec2(2, -1),
|
||||
vec2(1, -2),
|
||||
/* Set 2. */
|
||||
/* First Ring (2x2). */
|
||||
vec2(1, 1),
|
||||
/* Second Ring (6x6). */
|
||||
vec2(-2, 3),
|
||||
vec2(3, 3),
|
||||
vec2(0, 2),
|
||||
vec2(2, 2),
|
||||
vec2(-2, -1),
|
||||
vec2(1, -1),
|
||||
vec2(0, -2),
|
||||
vec2(3, -2),
|
||||
/* Set 3. */
|
||||
/* First Ring (2x2). */
|
||||
vec2(0, 1),
|
||||
/* Second Ring (6x6). */
|
||||
vec2(0, 3),
|
||||
vec2(3, 2),
|
||||
vec2(-2, 1),
|
||||
vec2(2, 1),
|
||||
vec2(-1, 0),
|
||||
vec2(-2, -2),
|
||||
vec2(0, -1),
|
||||
vec2(2, -2),
|
||||
/* Set 4. */
|
||||
/* First Ring (2x2). */
|
||||
vec2(1, 0),
|
||||
/* Second Ring (6x6). */
|
||||
vec2(2, 3),
|
||||
vec2(-2, 2),
|
||||
vec2(-1, 2),
|
||||
vec2(1, 2),
|
||||
vec2(2, 0),
|
||||
vec2(-1, -1),
|
||||
vec2(3, -1),
|
||||
vec2(-1, -2));
|
||||
#define resolve_samples_count 9
|
|
@ -102,6 +102,58 @@ void raytrace_resolve(ClosureInputGlossy cl_in,
|
|||
inout ClosureEvalCommon cl_common,
|
||||
inout ClosureOutputGlossy cl_out)
|
||||
{
|
||||
/* Note: Reflection samples declared in function scope to avoid per-thread memory pressure on
|
||||
* tile-based GPUs e.g. Apple Silicon. */
|
||||
const vec2 resolve_sample_offsets[36] = vec2[36](
|
||||
/* Set 1. */
|
||||
/* First Ring (2x2). */
|
||||
vec2(0, 0),
|
||||
/* Second Ring (6x6). */
|
||||
vec2(-1, 3),
|
||||
vec2(1, 3),
|
||||
vec2(-1, 1),
|
||||
vec2(3, 1),
|
||||
vec2(-2, 0),
|
||||
vec2(3, 0),
|
||||
vec2(2, -1),
|
||||
vec2(1, -2),
|
||||
/* Set 2. */
|
||||
/* First Ring (2x2). */
|
||||
vec2(1, 1),
|
||||
/* Second Ring (6x6). */
|
||||
vec2(-2, 3),
|
||||
vec2(3, 3),
|
||||
vec2(0, 2),
|
||||
vec2(2, 2),
|
||||
vec2(-2, -1),
|
||||
vec2(1, -1),
|
||||
vec2(0, -2),
|
||||
vec2(3, -2),
|
||||
/* Set 3. */
|
||||
/* First Ring (2x2). */
|
||||
vec2(0, 1),
|
||||
/* Second Ring (6x6). */
|
||||
vec2(0, 3),
|
||||
vec2(3, 2),
|
||||
vec2(-2, 1),
|
||||
vec2(2, 1),
|
||||
vec2(-1, 0),
|
||||
vec2(-2, -2),
|
||||
vec2(0, -1),
|
||||
vec2(2, -2),
|
||||
/* Set 4. */
|
||||
/* First Ring (2x2). */
|
||||
vec2(1, 0),
|
||||
/* Second Ring (6x6). */
|
||||
vec2(2, 3),
|
||||
vec2(-2, 2),
|
||||
vec2(-1, 2),
|
||||
vec2(1, 2),
|
||||
vec2(2, 0),
|
||||
vec2(-1, -1),
|
||||
vec2(3, -1),
|
||||
vec2(-1, -2));
|
||||
|
||||
float roughness = cl_in.roughness;
|
||||
|
||||
vec4 ssr_accum = vec4(0.0);
|
||||
|
|
|
@ -59,7 +59,9 @@ GPU_SHADER_CREATE_INFO(eevee_legacy_material_surface_vert_common)
|
|||
.additional_info("eevee_legacy_material_empty_base")
|
||||
.additional_info("draw_resource_id_varying")
|
||||
.additional_info("eevee_legacy_common_utiltex_lib")
|
||||
.additional_info("eevee_legacy_closure_eval_surface_lib");
|
||||
.additional_info("eevee_legacy_closure_eval_surface_lib")
|
||||
/* Planar reflections assigns to gl_ClipDistance via surface_vert.glsl. */
|
||||
.define("USE_CLIP_PLANES");
|
||||
|
||||
GPU_SHADER_CREATE_INFO(eevee_legacy_material_surface_vert)
|
||||
.additional_info("eevee_legacy_material_surface_vert_common")
|
||||
|
|
|
@ -70,7 +70,7 @@ int g_curves_attr_id = 0;
|
|||
int curves_attribute_element_id()
|
||||
{
|
||||
int id = hairStrandID;
|
||||
if (drw_curves.is_point_attribute[g_curves_attr_id][0] != 0) {
|
||||
if (drw_curves.is_point_attribute[g_curves_attr_id][0] != 0u) {
|
||||
id = hair_get_base_id();
|
||||
}
|
||||
|
||||
|
|
|
@ -77,7 +77,7 @@ int g_curves_attr_id = 0;
|
|||
int curves_attribute_element_id()
|
||||
{
|
||||
int id = hairStrandID;
|
||||
if (drw_curves.is_point_attribute[g_curves_attr_id][0] != 0) {
|
||||
if (drw_curves.is_point_attribute[g_curves_attr_id][0] != 0u) {
|
||||
id = hair_get_base_id();
|
||||
}
|
||||
|
||||
|
|
|
@ -133,7 +133,7 @@ int g_curves_attr_id = 0;
|
|||
int curves_attribute_element_id()
|
||||
{
|
||||
int id = interp.curves_strand_id;
|
||||
if (drw_curves.is_point_attribute[g_curves_attr_id][0] != 0) {
|
||||
if (drw_curves.is_point_attribute[g_curves_attr_id][0] != 0u) {
|
||||
# ifdef COMMON_HAIR_LIB
|
||||
id = hair_get_base_id();
|
||||
# endif
|
||||
|
|
|
@ -88,7 +88,7 @@ class SpaceImageAccessor : public AbstractSpaceAccessor {
|
|||
}
|
||||
|
||||
void init_ss_to_texture_matrix(const ARegion *region,
|
||||
const float UNUSED(image_resolution[2]),
|
||||
const float /*image_resolution*/[2],
|
||||
float r_uv_to_texture[4][4]) const override
|
||||
{
|
||||
unit_m4(r_uv_to_texture);
|
||||
|
|
|
@ -92,10 +92,10 @@ static void OVERLAY_engine_init(void *vedata)
|
|||
}
|
||||
|
||||
if (ts->sculpt) {
|
||||
if (ts->sculpt->flags & SCULPT_HIDE_FACE_SETS) {
|
||||
if (!(v3d->overlay.flag & (int)V3D_OVERLAY_SCULPT_SHOW_FACE_SETS)) {
|
||||
pd->overlay.sculpt_mode_face_sets_opacity = 0.0f;
|
||||
}
|
||||
if (ts->sculpt->flags & SCULPT_HIDE_MASK) {
|
||||
if (!(v3d->overlay.flag & (int)V3D_OVERLAY_SCULPT_SHOW_MASK)) {
|
||||
pd->overlay.sculpt_mode_mask_opacity = 0.0f;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -31,10 +31,6 @@ void OVERLAY_sculpt_curves_cache_init(OVERLAY_Data *vedata)
|
|||
|
||||
static bool everything_selected(const Curves &curves_id)
|
||||
{
|
||||
if (!(curves_id.flag & CV_SCULPT_SELECTION_ENABLED)) {
|
||||
/* When the selection is disabled, conceptually everything is selected. */
|
||||
return true;
|
||||
}
|
||||
const blender::bke::CurvesGeometry &curves = blender::bke::CurvesGeometry::wrap(
|
||||
curves_id.geometry);
|
||||
blender::VArray<float> selection;
|
||||
|
|
|
@ -397,8 +397,8 @@ GPU_SHADER_CREATE_INFO(overlay_edit_curve_handle_no_geom)
|
|||
/* NOTE: Color already in Linear space. Which is what we want. */
|
||||
.define("srgbTarget", "false")
|
||||
.vertex_in(0, Type::VEC3, "pos")
|
||||
.vertex_in(1, Type::UINT, "data")
|
||||
.vertex_out(overlay_edit_curve_handle_iface)
|
||||
.vertex_in(1, Type::UCHAR, "data")
|
||||
.vertex_out(overlay_edit_smooth_color_iface)
|
||||
.push_constant(Type::BOOL, "showCurveHandles")
|
||||
.push_constant(Type::INT, "curveHandleDisplay")
|
||||
.fragment_out(0, Type::VEC4, "fragColor")
|
||||
|
|
|
@ -1,16 +1,166 @@
|
|||
/* TODO(Metal): Implement correct SSBO implementation for geom shader workaround.
|
||||
* Currently included as placeholder to unblock failing compilation in Metal. */
|
||||
|
||||
#pragma BLENDER_REQUIRE(common_view_clipping_lib.glsl)
|
||||
#pragma BLENDER_REQUIRE(common_view_lib.glsl)
|
||||
#pragma USE_SSBO_VERTEX_FETCH(TriangleStrip, 10)
|
||||
|
||||
#define DISCARD_VERTEX \
|
||||
gl_Position = vec4(0.0); \
|
||||
finalColor = vec4(0.0); \
|
||||
return;
|
||||
|
||||
void output_line(vec2 offset, vec4 color, vec3 out_world_pos, vec4 out_ndc_pos)
|
||||
{
|
||||
finalColor = color;
|
||||
gl_Position = out_ndc_pos;
|
||||
gl_Position.xy += offset * out_ndc_pos.w;
|
||||
view_clipping_distances(out_world_pos);
|
||||
}
|
||||
|
||||
void main()
|
||||
{
|
||||
GPU_INTEL_VERTEX_SHADER_WORKAROUND
|
||||
|
||||
vec3 world_pos = point_object_to_world(pos);
|
||||
gl_Position = point_world_to_ndc(world_pos);
|
||||
vert.flag = data;
|
||||
/* Perform vertex shader for each input primitive. */
|
||||
vec3 in_pos[2];
|
||||
vec3 world_pos[2];
|
||||
vec4 ndc_pos[2];
|
||||
uint vert_flag[2];
|
||||
|
||||
view_clipping_distances(world_pos);
|
||||
/* Input prim is LineList. */
|
||||
/* Index of the input line primitive. */
|
||||
int input_line_id = gl_VertexID / 10;
|
||||
/* Index of output vertex set. Grouped into pairs as outputted by original "output_line" function
|
||||
* in overlay_edit_curve_handle_geom.glsl. */
|
||||
int output_prim_id = (gl_VertexID / 2) % 5;
|
||||
/* ID of vertex within line primitive (0 or 1) for current vertex. */
|
||||
int output_prim_vert_id = gl_VertexID % 2;
|
||||
|
||||
for (int i = 0; i < 2; i++) {
|
||||
in_pos[i] = vertex_fetch_attribute((input_line_id * 2) + i, pos, vec3).xyz;
|
||||
vert_flag[i] = (uint)vertex_fetch_attribute((input_line_id * 2) + i, data, uchar);
|
||||
world_pos[i] = point_object_to_world(in_pos[i]);
|
||||
ndc_pos[i] = point_world_to_ndc(world_pos[i]);
|
||||
}
|
||||
|
||||
/* Perform Geometry shader equivalent calculation. */
|
||||
uint is_active_nurb = (vert_flag[1] & ACTIVE_NURB);
|
||||
uint color_id = (vert_flag[1] >> COLOR_SHIFT);
|
||||
|
||||
/* Don't output any edges if we don't show handles */
|
||||
if (!showCurveHandles && (color_id < 5)) {
|
||||
return;
|
||||
}
|
||||
|
||||
bool edge_selected = (((vert_flag[1] | vert_flag[0]) & VERT_SELECTED) != 0u);
|
||||
bool handle_selected = (showCurveHandles &&
|
||||
(((vert_flag[1] | vert_flag[0]) & VERT_SELECTED_BEZT_HANDLE) != 0u));
|
||||
|
||||
bool is_gpencil = ((vert_flag[1] & VERT_GPENCIL_BEZT_HANDLE) != 0u);
|
||||
|
||||
/* If handle type is only selected and the edge is not selected, don't show. */
|
||||
if ((curveHandleDisplay != CURVE_HANDLE_ALL) && (!handle_selected)) {
|
||||
/* Nurbs must show the handles always. */
|
||||
bool is_u_segment = (((vert_flag[1] ^ vert_flag[0]) & EVEN_U_BIT) != 0u);
|
||||
if ((!is_u_segment) && (color_id <= 4)) {
|
||||
return;
|
||||
}
|
||||
if (is_gpencil) {
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
vec4 inner_color;
|
||||
if (color_id == 0) {
|
||||
inner_color = (edge_selected) ? colorHandleSelFree : colorHandleFree;
|
||||
}
|
||||
else if (color_id == 1) {
|
||||
inner_color = (edge_selected) ? colorHandleSelAuto : colorHandleAuto;
|
||||
}
|
||||
else if (color_id == 2) {
|
||||
inner_color = (edge_selected) ? colorHandleSelVect : colorHandleVect;
|
||||
}
|
||||
else if (color_id == 3) {
|
||||
inner_color = (edge_selected) ? colorHandleSelAlign : colorHandleAlign;
|
||||
}
|
||||
else if (color_id == 4) {
|
||||
inner_color = (edge_selected) ? colorHandleSelAutoclamp : colorHandleAutoclamp;
|
||||
}
|
||||
else {
|
||||
bool is_selected = (((vert_flag[1] & vert_flag[0]) & VERT_SELECTED) != 0);
|
||||
bool is_u_segment = (((vert_flag[1] ^ vert_flag[0]) & EVEN_U_BIT) != 0);
|
||||
if (is_u_segment) {
|
||||
inner_color = (is_selected) ? colorNurbSelUline : colorNurbUline;
|
||||
}
|
||||
else {
|
||||
inner_color = (is_selected) ? colorNurbSelVline : colorNurbVline;
|
||||
}
|
||||
}
|
||||
|
||||
vec4 outer_color = (is_active_nurb != 0) ?
|
||||
mix(colorActiveSpline,
|
||||
inner_color,
|
||||
0.25) /* Minimize active color bleeding on inner_color. */
|
||||
:
|
||||
vec4(inner_color.rgb, 0.0);
|
||||
|
||||
vec2 v1_2 = (ndc_pos[1].xy / ndc_pos[1].w - ndc_pos[0].xy / ndc_pos[0].w);
|
||||
vec2 offset = sizeEdge * 4.0 * sizeViewportInv; /* 4.0 is eyeballed */
|
||||
|
||||
if (abs(v1_2.x * sizeViewport.x) < abs(v1_2.y * sizeViewport.y)) {
|
||||
offset.y = 0.0;
|
||||
}
|
||||
else {
|
||||
offset.x = 0.0;
|
||||
}
|
||||
|
||||
/* Output geometry based on output line ID. */
|
||||
switch (output_prim_id) {
|
||||
case 0: {
|
||||
/* draw the transparent border (AA). */
|
||||
if (is_active_nurb != 0u) {
|
||||
offset *= 0.75; /* Don't make the active "halo" appear very thick. */
|
||||
output_line(offset * 2.0,
|
||||
vec4(colorActiveSpline.rgb, 0.0),
|
||||
world_pos[output_prim_vert_id],
|
||||
ndc_pos[output_prim_vert_id]);
|
||||
}
|
||||
else {
|
||||
DISCARD_VERTEX
|
||||
}
|
||||
break;
|
||||
}
|
||||
case 1: {
|
||||
/* draw the outline. */
|
||||
output_line(
|
||||
offset, outer_color, world_pos[output_prim_vert_id], ndc_pos[output_prim_vert_id]);
|
||||
break;
|
||||
}
|
||||
case 2: {
|
||||
/* draw the core of the line. */
|
||||
output_line(
|
||||
vec2(0.0), inner_color, world_pos[output_prim_vert_id], ndc_pos[output_prim_vert_id]);
|
||||
break;
|
||||
}
|
||||
case 3: {
|
||||
/* draw the outline. */
|
||||
output_line(
|
||||
-offset, outer_color, world_pos[output_prim_vert_id], ndc_pos[output_prim_vert_id]);
|
||||
break;
|
||||
}
|
||||
case 4: {
|
||||
/* draw the transparent border (AA). */
|
||||
if (is_active_nurb != 0u) {
|
||||
output_line(offset * -2.0,
|
||||
vec4(colorActiveSpline.rgb, 0.0),
|
||||
world_pos[output_prim_vert_id],
|
||||
ndc_pos[output_prim_vert_id]);
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
default: {
|
||||
DISCARD_VERTEX
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -17,7 +17,7 @@ vec4 EDIT_MESH_edge_color_inner(uint edge_flag)
|
|||
color = ((edge_flag & EDGE_SELECTED) != 0u) ? color_select : color;
|
||||
color = ((edge_flag & EDGE_ACTIVE) != 0u) ? colorEditMeshActive : color;
|
||||
|
||||
color.a = (selectEdges || (edge_flag & (EDGE_SELECTED | EDGE_ACTIVE)) != 0) ? 1.0 : 0.7;
|
||||
color.a = (selectEdges || (edge_flag & (EDGE_SELECTED | EDGE_ACTIVE)) != 0u) ? 1.0 : 0.7;
|
||||
return color;
|
||||
}
|
||||
|
||||
|
@ -35,7 +35,7 @@ vec4 EDIT_MESH_edge_vertex_color(uint vertex_flag)
|
|||
|
||||
vec4 EDIT_MESH_vertex_color(uint vertex_flag, float vertex_crease)
|
||||
{
|
||||
if ((vertex_flag & VERT_ACTIVE) != 0) {
|
||||
if ((vertex_flag & VERT_ACTIVE) != 0u) {
|
||||
return vec4(colorEditMeshActive.xyz, 1.0);
|
||||
}
|
||||
else if ((vertex_flag & VERT_SELECTED) != 0u) {
|
||||
|
@ -57,7 +57,7 @@ vec4 EDIT_MESH_face_color(uint face_flag)
|
|||
color = ((face_flag & FACE_FREESTYLE) != 0u) ? colorFaceFreestyle : color;
|
||||
color = ((face_flag & FACE_SELECTED) != 0u) ? colorFaceSelect : color;
|
||||
color = ((face_flag & FACE_ACTIVE) != 0u) ? color_active : color;
|
||||
color.a *= ((face_flag & (FACE_FREESTYLE | FACE_SELECTED | FACE_ACTIVE)) == 0 || selectFaces) ?
|
||||
color.a *= ((face_flag & (FACE_FREESTYLE | FACE_SELECTED | FACE_ACTIVE)) == 0u || selectFaces) ?
|
||||
1.0 :
|
||||
0.5;
|
||||
return color;
|
||||
|
|
|
@ -38,10 +38,10 @@ void main()
|
|||
finalColor = EDIT_MESH_vertex_color(m_data.y, vertexCrease);
|
||||
gl_PointSize = sizeVertex * ((vertexCrease > 0.0) ? 3.0 : 2.0);
|
||||
/* Make selected and active vertex always on top. */
|
||||
if ((data.x & VERT_SELECTED) != 0) {
|
||||
if ((data.x & VERT_SELECTED) != 0u) {
|
||||
gl_Position.z -= 5e-7 * abs(gl_Position.w);
|
||||
}
|
||||
if ((data.x & VERT_ACTIVE) != 0) {
|
||||
if ((data.x & VERT_ACTIVE) != 0u) {
|
||||
gl_Position.z -= 5e-7 * abs(gl_Position.w);
|
||||
}
|
||||
|
||||
|
|
|
@ -11,9 +11,9 @@ void main()
|
|||
half_pixel_offset;
|
||||
|
||||
#ifdef USE_EDGE_SELECT
|
||||
bool is_select = (flag & int(EDGE_UV_SELECT)) != 0u;
|
||||
bool is_select = (flag & int(EDGE_UV_SELECT)) != 0;
|
||||
#else
|
||||
bool is_select = (flag & int(VERT_UV_SELECT)) != 0u;
|
||||
bool is_select = (flag & int(VERT_UV_SELECT)) != 0;
|
||||
#endif
|
||||
geom_in.selectionFac = is_select ? 1.0 : 0.0;
|
||||
/* Move selected edges to the top
|
||||
|
|
|
@ -5,8 +5,8 @@ void main()
|
|||
vec3 world_pos = point_object_to_world(vec3(au, 0.0));
|
||||
gl_Position = point_world_to_ndc(world_pos);
|
||||
|
||||
bool is_selected = (flag & FACE_UV_SELECT) != 0;
|
||||
bool is_active = (flag & FACE_UV_ACTIVE) != 0;
|
||||
bool is_selected = (flag & FACE_UV_SELECT) != 0u;
|
||||
bool is_active = (flag & FACE_UV_ACTIVE) != 0u;
|
||||
|
||||
finalColor = (is_selected) ? colorFaceSelect : colorFace;
|
||||
finalColor = (is_active) ? colorEditMeshActive : finalColor;
|
||||
|
|
|
@ -5,8 +5,8 @@ const vec4 pinned_col = vec4(1.0, 0.0, 0.0, 1.0);
|
|||
|
||||
void main()
|
||||
{
|
||||
bool is_selected = (flag & (VERT_UV_SELECT | FACE_UV_SELECT)) != 0;
|
||||
bool is_pinned = (flag & VERT_UV_PINNED) != 0;
|
||||
bool is_selected = (flag & (VERT_UV_SELECT | FACE_UV_SELECT)) != 0u;
|
||||
bool is_pinned = (flag & VERT_UV_PINNED) != 0u;
|
||||
vec4 deselect_col = (is_pinned) ? pinned_col : vec4(color.rgb, 1.0);
|
||||
fillColor = (is_selected) ? colorVertexSelect : deselect_col;
|
||||
outlineColor = (is_pinned) ? pinned_col : vec4(fillColor.rgb, 0.0);
|
||||
|
|
|
@ -24,7 +24,7 @@ void main()
|
|||
}
|
||||
|
||||
if (showKeyFrames) {
|
||||
if ((flag & MOTIONPATH_VERT_KEY) != 0) {
|
||||
if ((flag & MOTIONPATH_VERT_KEY) != 0u) {
|
||||
gl_PointSize = float(pointSize + 5);
|
||||
finalColor = colorVertexSelect;
|
||||
/* Bias more to get these on top of regular points */
|
||||
|
|
|
@ -182,13 +182,15 @@ void eval_volume_step(inout vec3 Lscat, float extinction, float step_len, out fl
|
|||
}
|
||||
|
||||
#define P(x) ((x + 0.5) * (1.0 / 16.0))
|
||||
const vec4 dither_mat[4] = vec4[4](vec4(P(0.0), P(8.0), P(2.0), P(10.0)),
|
||||
vec4(P(12.0), P(4.0), P(14.0), P(6.0)),
|
||||
vec4(P(3.0), P(11.0), P(1.0), P(9.0)),
|
||||
vec4(P(15.0), P(7.0), P(13.0), P(5.0)));
|
||||
|
||||
vec4 volume_integration(vec3 ray_ori, vec3 ray_dir, float ray_inc, float ray_max, float step_len)
|
||||
{
|
||||
/* Note: Constant array declared inside function scope to reduce shader core thread memory
|
||||
* pressure on Apple Silicon. */
|
||||
const vec4 dither_mat[4] = vec4[4](vec4(P(0.0), P(8.0), P(2.0), P(10.0)),
|
||||
vec4(P(12.0), P(4.0), P(14.0), P(6.0)),
|
||||
vec4(P(3.0), P(11.0), P(1.0), P(9.0)),
|
||||
vec4(P(15.0), P(7.0), P(13.0), P(5.0)));
|
||||
/* Start with full transmittance and no scattered light. */
|
||||
vec3 final_scattering = vec3(0.0);
|
||||
float final_transmittance = 1.0;
|
||||
|
|
|
@ -271,7 +271,7 @@ static void curves_batch_cache_fill_segments_proc_pos(
|
|||
|
||||
static void curves_batch_cache_ensure_procedural_pos(const Curves &curves,
|
||||
CurvesEvalCache &cache,
|
||||
GPUMaterial *UNUSED(gpu_material))
|
||||
GPUMaterial * /*gpu_material*/)
|
||||
{
|
||||
if (cache.proc_point_buf == nullptr || DRW_vbo_requested(cache.proc_point_buf)) {
|
||||
/* Initialize vertex format. */
|
||||
|
@ -391,7 +391,7 @@ static void curves_batch_cache_ensure_procedural_final_attr(CurvesEvalCache &cac
|
|||
const GPUVertFormat *format,
|
||||
const int subdiv,
|
||||
const int index,
|
||||
const char *UNUSED(name))
|
||||
const char * /*name*/)
|
||||
{
|
||||
CurvesEvalFinalCache &final_cache = cache.final[subdiv];
|
||||
final_cache.attributes_buf[index] = GPU_vertbuf_create_with_format_ex(
|
||||
|
|
|
@ -386,8 +386,8 @@ static void gpencil_buffer_add_fill(GPUIndexBufBuilder *ibo, const bGPDstroke *g
|
|||
}
|
||||
}
|
||||
|
||||
static void gpencil_stroke_iter_cb(bGPDlayer *UNUSED(gpl),
|
||||
bGPDframe *UNUSED(gpf),
|
||||
static void gpencil_stroke_iter_cb(bGPDlayer * /*gpl*/,
|
||||
bGPDframe * /*gpf*/,
|
||||
bGPDstroke *gps,
|
||||
void *thunk)
|
||||
{
|
||||
|
@ -398,8 +398,8 @@ static void gpencil_stroke_iter_cb(bGPDlayer *UNUSED(gpl),
|
|||
gpencil_buffer_add_stroke(&iter->ibo, iter->verts, iter->cols, gps);
|
||||
}
|
||||
|
||||
static void gpencil_object_verts_count_cb(bGPDlayer *UNUSED(gpl),
|
||||
bGPDframe *UNUSED(gpf),
|
||||
static void gpencil_object_verts_count_cb(bGPDlayer * /*gpl*/,
|
||||
bGPDframe * /*gpf*/,
|
||||
bGPDstroke *gps,
|
||||
void *thunk)
|
||||
{
|
||||
|
@ -503,8 +503,8 @@ GPUVertBuf *DRW_cache_gpencil_color_buffer_get(Object *ob, int cfra)
|
|||
return cache->vbo_col;
|
||||
}
|
||||
|
||||
static void gpencil_lines_indices_cb(bGPDlayer *UNUSED(gpl),
|
||||
bGPDframe *UNUSED(gpf),
|
||||
static void gpencil_lines_indices_cb(bGPDlayer * /*gpl*/,
|
||||
bGPDframe * /*gpf*/,
|
||||
bGPDstroke *gps,
|
||||
void *thunk)
|
||||
{
|
||||
|
@ -785,7 +785,7 @@ static void gpencil_edit_stroke_iter_cb(bGPDlayer *gpl,
|
|||
}
|
||||
|
||||
static void gpencil_edit_curve_stroke_count_cb(bGPDlayer *gpl,
|
||||
bGPDframe *UNUSED(gpf),
|
||||
bGPDframe * /*gpf*/,
|
||||
bGPDstroke *gps,
|
||||
void *thunk)
|
||||
{
|
||||
|
@ -821,7 +821,7 @@ static uint32_t gpencil_beztriple_vflag_get(char flag,
|
|||
}
|
||||
|
||||
static void gpencil_edit_curve_stroke_iter_cb(bGPDlayer *gpl,
|
||||
bGPDframe *UNUSED(gpf),
|
||||
bGPDframe * /*gpf*/,
|
||||
bGPDstroke *gps,
|
||||
void *thunk)
|
||||
{
|
||||
|
|
|
@ -312,7 +312,8 @@ static DRWVolumeGrid *volume_grid_cache_get(const Volume *volume,
|
|||
1,
|
||||
format,
|
||||
GPU_DATA_FLOAT,
|
||||
GPU_TEXTURE_USAGE_SHADER_READ,
|
||||
GPU_TEXTURE_USAGE_SHADER_READ |
|
||||
GPU_TEXTURE_USAGE_MIP_SWIZZLE_VIEW,
|
||||
dense_grid.voxels);
|
||||
/* The texture can be null if the resolution along one axis is larger than
|
||||
* GL_MAX_3D_TEXTURE_SIZE. */
|
||||
|
|
|
@ -62,6 +62,9 @@ void ResourceBind::execute() const
|
|||
case ResourceBind::Type::VertexAsStorageBuf:
|
||||
GPU_vertbuf_bind_as_ssbo(is_reference ? *vertex_buf_ref : vertex_buf, slot);
|
||||
break;
|
||||
case ResourceBind::Type::IndexAsStorageBuf:
|
||||
GPU_indexbuf_bind_as_ssbo(is_reference ? *index_buf_ref : index_buf, slot);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -278,6 +281,9 @@ std::string ResourceBind::serialize() const
|
|||
case Type::VertexAsStorageBuf:
|
||||
return std::string(".bind_vertbuf_as_ssbo") + (is_reference ? "_ref" : "") + "(" +
|
||||
std::to_string(slot) + ")";
|
||||
case Type::IndexAsStorageBuf:
|
||||
return std::string(".bind_indexbuf_as_ssbo") + (is_reference ? "_ref" : "") + "(" +
|
||||
std::to_string(slot) + ")";
|
||||
default:
|
||||
BLI_assert_unreachable();
|
||||
return "";
|
||||
|
@ -513,8 +519,8 @@ std::string StateSet::serialize() const
|
|||
std::string StencilSet::serialize() const
|
||||
{
|
||||
std::stringstream ss;
|
||||
ss << ".stencil_set(write_mask=0b" << std::bitset<8>(write_mask) << ", compare_mask=0b"
|
||||
<< std::bitset<8>(compare_mask) << ", reference=0b" << std::bitset<8>(reference);
|
||||
ss << ".stencil_set(write_mask=0b" << std::bitset<8>(write_mask) << ", reference=0b"
|
||||
<< std::bitset<8>(reference) << ", compare_mask=0b" << std::bitset<8>(compare_mask) << ")";
|
||||
return ss.str();
|
||||
}
|
||||
|
||||
|
|
|
@ -140,6 +140,7 @@ struct ResourceBind {
|
|||
StorageBuf,
|
||||
UniformAsStorageBuf,
|
||||
VertexAsStorageBuf,
|
||||
IndexAsStorageBuf,
|
||||
} type;
|
||||
|
||||
union {
|
||||
|
@ -154,6 +155,8 @@ struct ResourceBind {
|
|||
GPUTexture **texture_ref;
|
||||
GPUVertBuf *vertex_buf;
|
||||
GPUVertBuf **vertex_buf_ref;
|
||||
GPUIndexBuf *index_buf;
|
||||
GPUIndexBuf **index_buf_ref;
|
||||
};
|
||||
|
||||
ResourceBind() = default;
|
||||
|
@ -174,6 +177,10 @@ struct ResourceBind {
|
|||
: slot(slot_), is_reference(false), type(Type::VertexAsStorageBuf), vertex_buf(res){};
|
||||
ResourceBind(int slot_, GPUVertBuf **res, Type /* type */)
|
||||
: slot(slot_), is_reference(true), type(Type::VertexAsStorageBuf), vertex_buf_ref(res){};
|
||||
ResourceBind(int slot_, GPUIndexBuf *res, Type /* type */)
|
||||
: slot(slot_), is_reference(false), type(Type::IndexAsStorageBuf), index_buf(res){};
|
||||
ResourceBind(int slot_, GPUIndexBuf **res, Type /* type */)
|
||||
: slot(slot_), is_reference(true), type(Type::IndexAsStorageBuf), index_buf_ref(res){};
|
||||
ResourceBind(int slot_, draw::Image *res)
|
||||
: slot(slot_), is_reference(false), type(Type::Image), texture(draw::as_texture(res)){};
|
||||
ResourceBind(int slot_, draw::Image **res)
|
||||
|
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue