Skip to content

Stabilize Appleseed Rendering #108

@brlcad

Description

@brlcad

Stabilizing Appleseed Rendering Resolving Dependency Regressions and (potentially) Windows-Specific Rendering Bugs

Outline

Our Appleseed renderer prototype is currently hampered by a significant bug likely introduced during recent upgrades of core dependencies like OSL and Boost. This bug manifests most prominently on Windows, often resulting in crashes or incorrect memory handling during the initialization of the appleseed optics pipeline. This project aims to perform a deep-dive forensic debug of the codebase to identify the changed API or incompatible logic, fix the regression, and establish a more robust dependency-tracking system to prevent future breakage.

Details

The project will follow a structured debugging and stabilization path:

  • Forensic Environment Setup: Establishing a Windows-based development environment that reproduces the bug using the latest BRL-CAD trunk and specific versions of OSL and Boost.
  • Root Cause Analysis: Using advanced debugging tools (e.g., Visual Studio Debugger, WinDbg, or Valgrind on Linux) to determine if the issue stems from:
    -- OSL API Changes: Regressions in how Appleseed passes intersection data to the latest OSL RendererServices.
    -- Symbol Visibility: Incompatibilities in how Boost or OSL symbols are exported/imported on Windows (DLL hell).
    -- Boost Migration: Breaking changes in Boost.Filesystem or Boost.System utilized by the appleseed bridge.
  • Patch Implementation: Refactoring the bridge logic to accommodate the updated dependencies.

Contingency/Stretch Goals: If the fix is straightforward, the project will pivot to:

  • CI Robustness: Enhancing Appleseed's CI/CD to catch dependency regressions earlier.
  • Feature Parity: Implementing missing command-line flags (e.g., specific AOV outputs) in BRL-CAD's "art" Appleseed-based renderer.

Expected Outcome

  • A report on the specific incompatibility found and the logic used to resolve it.
  • A fully functional appleseed/art renderer that works reliably with current versions of OSL and Boost across all platforms (specifically Windows).

Future Possibilities

  • Automated Regression Testing: Creating a "golden image" test suite that runs automatically upon dependency updates.
  • Plugin Architecture: Moving Appleseed toward a more modular plugin system to isolate it from dependency updates.

Project Properties

Skills

Languages: C++, CMake.
Tools: Debugging on Windows (Visual Studio/MSVC), dependency management.
Domain Knowledge: Basic understanding of how renderers interface with external libraries (OSL/Boost).

Difficulty

Easy/Medium

Size

Medium

Additional Information

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions