Skip to content

Conversation

@slarson
Copy link
Member

@slarson slarson commented Dec 27, 2025

Summary

  • Fix Metal rendering pipeline (missing setFragmentBuffer for fragment shader)
  • Implement staged opacity for layer peeling (cuticle→organs→muscles→neurons)
  • Fix initial camera zoom to properly fill screen
  • Add fallback colors for missing materials
  • Add fallback OWDraw creation when bounding boxes missing

Test Coverage (107 tests)

Test Suite Tests Description
OWVectorTests 13 Math/vector operations
OWInterpolantTests 20 Animation tweening
OWNavigateTests 33 Camera/navigation
OWResourceTests 41 Mesh/metadata loading

Test Plan

  • All 107 unit tests passing
  • App builds on iOS Simulator
  • Worm renders with proper colors
  • Opacity slider peels layers correctly
  • Pinch/pan gestures work

slarson added 30 commits June 30, 2025 15:53
…etal

Use Metal for rendering -- first cut
…-documentation

Fix search mapping bug and clarify build setup
…r-metal-compatibility

Port leftover OpenGL types to Metal-safe equivalents
…dencies-and-implement-picking

Implement Metal picking and simd vectors
…ling in the view controller

Replaced hardcoded tag values with the new enum throughout button setup and action handling

Improved entity lookup logic in OWResource to avoid the inefficient search path and removed the warning comment

Updated the README to document that Doxygen is now used for generating the docset
…atibility

Fix Metal camera transformations and depth
…nt-names-and-method-conflict-in-ow

Fix vector component names and count cast
…ndeclared-identifiers

Fix compile issues
…nd-duplicate-symbols

Fix duplicate symbol by removing unused uniform array
slarson added 18 commits June 30, 2025 22:59
…d-linker-error

Fix WKWebView link error and warnings
…rd-error-in-xcode-build

Fix LaunchScreen storyboard
…rd-error-in-xcode-build

Fix LaunchScreen storyboard type
…r-in-xcode-build

Fix compile storyboard error
- Fix Metal rendering pipeline (missing setFragmentBuffer for fragment shader)
- Implement staged opacity for layer peeling (cuticle→organs→muscles→neurons)
- Fix initial camera zoom to properly fill screen
- Add fallback colors for missing materials
- Add fallback OWDraw creation when bounding boxes missing

Test coverage (107 tests):
- OWVectorTests: 13 tests for math/vector operations
- OWInterpolantTests: 20 tests for animation tweening
- OWNavigateTests: 33 tests for camera/navigation
- OWResourceTests: 41 tests for mesh/metadata loading
The setter was calling self.paused = paused which invokes the setter
again, causing stack overflow. Changed to use backing ivar _paused.
- Change background from dark blue-gray to kWormGreen (0.6, 0.8, 0.2)
- Fix layer index constants to match enum in OWDefines.h
- Add proper index mapping for horizontal slider mode
Allow zoom gestures to work during cameraStateReturning state,
not just cameraStateFree and cameraStatePill states.
- Fix per-material colors not rendering distinctly
  Use setFragmentBytes instead of shared uniformBuffer to pass
  uniforms per draw call. Metal's deferred command encoding caused
  all draws to see the last color written to a shared buffer.

- Fix slider at bottom showing blank screen
  Keep neurons at full opacity (1.0) when slider is at bottom position.
  The innermost layer should stay visible, not fade to nothing.

- Minor cleanup of debug logging in OWNavigate
Changed render order in horizontal slider mode from array order to explicit
back-to-front order (neurons → muscles → organs → cuticle) matching the
original GL implementation. This ensures layers below become visible when
outer layers are faded using the individual slider controls.
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