This was the production checklist for the Metal Path Tracer release: the rendering, acceleration, material, camera, and interface work I wanted resolved before considering the project production-ready.
Critical Features
- Caustics support
- Target: v2.0 release.
- Automatic HWRT availability detection
- Use HWRT when available.
- Automatically fall back to SWRT when hardware acceleration is unavailable.
- Screenshot capture directly from ImGui
- EXR output.
Improvements & Performance
- Refactor HWRT / SWRT backend selection
- SWRT should remain the baseline implementation.
- Use HWRT by default when available.
- Provide an HWRT toggle when supported.
- Automatically fall back to SWRT when HWRT is unavailable.
- Fix HWRT acceleration structure issues — Critical
- Multiple meshes / instances in BLAS.
- Mesh indexing issues in TLAS.
- Requires Xcode GPU Capture.
- Determine whether the remaining problems are renderer-side or an Apple Metal / hardware issue.
- Improve HWRT performance
- Fix camera orbiting stutter
- Review implemented materials
- Alloys
- Plastic
- Glass
- Marble
- Car paint / coating
- Wax
Minor Improvements
- Fix HiDPI scaling
- Allow high user-facing resolutions such as 1920×1080 without breaking ImGui.
- Fix UI sizing and responsiveness issues.
ImGui Overlay
- Add environment map selector
- Move environment map and scene selectors to the top
- Place below sample count.
- Remove Scene collapsible header
- Review whether Debug collapsible header is still necessary
Camera
- Add yaw control
- Add pitch control
Objects / ImGuizmo
- Add Objects collapsible header
- Add object material index
- Add real-time material editing
- Albedo color picker
- Metallic
- Roughness
- Isotropic
- Subsurface
- IOR
- Additional material-specific properties
- Add transform controls
- Position X / Y / Z
- Rotation X / Y / Z
- Scale X / Y / Z
- Add ImGuizmo viewport controls
- Translate
- Rotate
- Scale
- Add Local / World coordinate toggle
- Display Local → World values
- Display World → Local values