Skip to content

Add infinite Mandelbulb zoom pattern - #6

Merged
tiye merged 1 commit into
mainfrom
codex/infinite-mandelbulb-zoom
Aug 19, 2026
Merged

Add infinite Mandelbulb zoom pattern#6
tiye merged 1 commit into
mainfrom
codex/infinite-mandelbulb-zoom

Conversation

@tiye

@tiye tiye commented Aug 19, 2026

Copy link
Copy Markdown
Contributor

Summary

  • add a continuously rebased Infinite Mandelbulb Zoom renderer and Metal shader
  • expose zoom direction, speed, and quality controls in the pattern panel
  • register the pattern with the renderer and request World Tracking authorization before starting ARSession

Validation

  • InfiniteMandelbulbZoom Metal shader: passed xcrun metal type-check
  • related Swift sources: passed swiftc -parse
  • full Xcode build was unavailable because the environment does not have the visionOS SDK installed

This branch is based on the merged origin/main, so the previous DynamicBox PR changes are not duplicated.

Copilot AI lite review requested due to automatic review settings August 19, 2026 17:14
@tiye
tiye merged commit ea5f21e into main Aug 19, 2026
1 check passed
@tiye
tiye deleted the codex/infinite-mandelbulb-zoom branch August 19, 2026 17:15

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Adds a new “Infinite Mandelbulb Zoom” visual pattern to the renderer stack, including its Metal ray-marching shader and UI controls for tuning zoom behavior and quality, plus an authorization step before starting world tracking.

Changes:

  • Introduces InfiniteMandelbulbZoomRenderer + CPU/GPU uniform types and a new Metal shader (InfiniteMandelbulbZoomShaders.metal).
  • Extends the shared simulation context and the pattern menu model/coordinator to expose infinite-zoom rate, direction, and quality.
  • Registers the new pattern and requests World Tracking authorization before starting the ARSession.

Reviewed changes

Copilot reviewed 7 out of 7 changed files in this pull request and generated 2 comments.

Show a summary per file
File Description
vr-dive/Renderer/RendererTypes.swift Extends PatternSimulationContext with infinite-zoom controls passed to patterns.
vr-dive/Renderer/Renderer.swift Requests world-tracking authorization before arSession.run, passes new simulation fields, registers the new pattern controller.
vr-dive/Renderer/PatternSelection.swift Adds new pattern kind, adds coordinator/menu model state for infinite zoom, and sets it as the default selection.
vr-dive/Demos/InfiniteMandelbulbZoom/InfiniteMandelbulbZoomTypes.swift Defines Swift-side uniform structs for the Mandelbulb zoom renderer/shader contract.
vr-dive/Demos/InfiniteMandelbulbZoom/InfiniteMandelbulbZoomShaders.metal Implements the Metal vertex/fragment shader for the infinite Mandelbulb zoom ray marcher.
vr-dive/Demos/InfiniteMandelbulbZoom/InfiniteMandelbulbZoomRenderer.swift Implements the new VisualPatternController that drives zoom rebasing and encodes the fullscreen render pass.
vr-dive/ContentView.swift Adds pattern-panel UI controls (rate, direction toggle, quality picker) for Infinite Mandelbulb Zoom.

💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.

Comment on lines 602 to 604
private let queue = DispatchQueue(label: "vr-dive.pattern.coordinator", attributes: .concurrent)
private var _current: VisualPatternKind = .lunarSurface
private var _current: VisualPatternKind = .infiniteMandelbulbZoom
private var _isPaused: Bool = false
Comment on lines +148 to +152
let requiredAuthorizations = WorldTrackingProvider.requiredAuthorizations
let authorization = await arSession.requestAuthorization(for: requiredAuthorizations)
let denied = authorization.filter { $0.value != .allowed }
guard denied.isEmpty else {
print("[Renderer] World tracking authorization was not granted: \(authorization)")

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Fixed in follow-up PR #7: the render thread now starts only after World Tracking authorization is granted and arSession.run([worldTracking]) succeeds. The default pattern change was intentionally left untouched.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants