-
Notifications
You must be signed in to change notification settings - Fork 23
Description
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
- Potential mentor(s): Sean Morrison
- Organization website: https://brlcad.org
- Communication channels: https://brlcad.zulipchat.com