Reference/Release Notes/3.4/Core

= Core =

Overriding Resource Directories
It is now possible to override all `USER` and `SYSTEM` paths using environment variables:
 * `BLENDER_USER_RESOURCES` (accessed via `bpy.utils.resource_path('USER')`).
 * `BLENDER_SYSTEM_RESOURCES` (accessed via `bpy.utils.resource_path('SYSTEM')`).

Previously, sub-directories could be overridden via environment variables such as `BLENDER_USER_CONFIG` and `BLENDER_SYSTEM_PYTHON` (see the `--help` message for a full list). However there was no way to override the top level directories which scripts could access via `bpy.utils.resource_path`. Now the top-level directories can be overridden so the default USER or SYSTEM resource paths aren't used by accident.

Fonts

 * New stack of fonts for improved language and symbol coverage.
 * FreeType caching to allow more simultaneous fonts with less resources and increased performance.
 * Avoid loading fonts that are not actually used.
 * Font sizing now always assumes 72 DPI, simplifying code. DPI argument to blf.size is now optional and deprecated.
 * Gamma correction for text output for improved anti-aliasing. Result is also slightly fuller and brighter.

Performance

 * Create preview thumbnails of WebP images a little quicker while using much less RAM.
 * View layer sync operations are now postponed until the sync results are needed. This greatly speeds up scripts that create many objects in a single operation.
 * Depsgraph: Optimize evaluation of dependencies of disabled modifiers

Others

 * Metaball objects are now evaluated as meshes. Render engines now only need to process the corresponding evaluated mesh object and can skip the evaluated metaball object..
 * Support extracting frames from WebM videos that dynamically change resolution..
 * Video rendering: Support FFmpeg AV1 codec encoding..
 * libOverride: RNA API: Add option to make all overrides editable in `override_hierarchy_create`.