bforartists Documentation

repository·master·Indexed 20 days ago

https://github.com/bforartists/bforartists

Documentation for the bforartists project, featuring the BFA Central Asset Library System for managing shared asset libraries across Blender/Bforartists addons. This repository also includes documentation for integrated external libraries such as Audaspace (audio processing), fast_float (high-performance floating-point parsing), gflags, gMock, and Google Test.

Tokens
44.8K
Snippets
126
Records
243
Agent score
73%

What's inside bforartists

  1. Overview of PolyMender programs

    master

    PolyMender is a tool for robustly repairing polygonal models by producing a closed surface that approximates the original geometry. It is suitable for repairing CAD models or large-scale scanned models. The package provides three distinct executable types depending on your needs:

    1. PolyMender / PolyMender-clean: Best for general-purpose models (e.g., from range scanners). It uses Marching Cubes to generate closed, manifold triangular surfaces. It is memory and time efficient.
    2. PolyMender-qd / PolyMender-qd-clean: Same as above, but specifically outputs a quad-mesh.
    3. PolyMender-dc / PolyMender-dc-clean: Best for models with sharp features (e.g., CAD models). It uses Dual Contouring with manifold topology to reproduce sharp edges and corners. This method requires more memory but generates both triangular and quadrilateral surfaces.

    Note on -clean: Adding the -clean flag to any of these programs removes isolated/disconnected components from the output.

  2. Overview of the gMock Framework

    master

    gMock is a C++ framework for writing and using mock classes. It is designed to help developers derive better system designs and write more effective tests by providing a declarative syntax for defining mocks and controlling their behavior.

    Key capabilities include:

    • Declarative Mock Definition: Define mocks using a clear syntax.
    • Partial (Hybrid) Mocks: Create mocks that combine real object behavior with mocked behavior.
    • Complex Function Support: Handles overloaded functions and functions of arbitrary types.
    • Argument Validation: Uses a rich set of matchers to validate function arguments.
    • Behavior Control: Intuitive syntax for specifying how mocks should behave during tests.
    • Automatic Verification: Automatically verifies expectations without requiring a manual record-and-replay cycle.
    • Ordering Constraints: Allows expressing arbitrary (partial) ordering constraints on function calls.
    • Extensibility: Users can define custom matchers and actions.
    • No Exceptions: The framework does not rely on C++ exceptions.
  3. Overview of Google Test and Google Mock

    master

    Google Test is a C++ testing framework that provides an xUnit-style testing environment. It includes features such as test discovery, a rich set of assertions (including user-defined ones), death tests, fatal and non-fatal failures, and support for both value-parameterized and type-parameterized tests. It also supports XML test report generation.

    Google Mock is an extension to Google Test specifically designed for writing and using C++ mock classes. The two projects are maintained together in a single repository.

  4. Overview of Blender Dev Tools categories

    master

    The tools in this repository are organized into four main categories:

    • Check Source: Tools for scanning source files to report issues regarding code style, conventions, or deprecated features.
    • Config: Configuration files for 3rd party applications such as IDEs, code-analysis tools, and debuggers.
    • Git: Scripts and utilities specifically designed for working with Git.
    • Utils: General development programs, including format converters, mouse cursor creators, and theme updaters.
  5. Overview of Vulkan Memory Allocator (VMA)

    master
    Vulkan Memory Allocator (VMA) is a library used for managing Vulkan memory. It is widely adopted in high-performance graphics software, including Blender, Godot Engine, Skia, and various AAA game titles like Cyberpunk 2077 and Baldur's Gate III. Because VMA is primarily a header-only library (or contains no source files that require manual compilation in many workflows), it can be integrated into projects quickly.
  6. Overview of the BFA Central Asset Library System

    master

    The BFA Central Asset Library System is a framework for Blender/Bforartists addons that allows multiple library-based addons to share a single, unified asset library in user preferences. This prevents asset duplication and provides smart management, including automatic cleanup when the last contributing addon is uninstalled.

    Key Benefits

    • Single Library Registration: Users see one unified library instead of multiple duplicates.
    • Automatic Management: Assets are automatically copied, tracked, and cleaned up.
    • Modular Installation: Uses a parent/child architecture where a 'Parent Addon' manages registration and a 'Child Addon' provides functional components (operators, wizards, panels).
    • Version Safety: Automatically updates child addons to match the parent version while preventing accidental downgrades.
  7. Integrate Vulkan Memory Allocator (VMA) into your project

    master
    VMA is a self-contained C++ library (single header) that simplifies Vulkan memory management. It handles choosing optimal memory types, managing VkDeviceMemory blocks, and binding memory to resources like buffers and images. It is thread-safe and supports Vulkan 1.0 through 1.4, including various extensions like VK_KHR_dedicated_allocation and VK_EXT_memory_budget.
  8. What is volk and why use it?

    master

    volk is a meta-loader for Vulkan that allows for dynamic loading of Vulkan entrypoints. It provides several advantages over standard linking:

    • Dynamic Loading: Load entrypoints without linking to vulkan-1.dll or statically linking the Vulkan loader.
    • Extension Support: Automatically loads all entrypoints associated with Vulkan extensions.
    • Performance: Enables loading Vulkan entrypoints directly from the driver, skipping loader dispatch overhead.

    It is written in C89 and supports Windows, Linux, Android, and macOS (via MoltenVK).