About this drop
The scene is drawn by react-native-webgpu on the same Dawn device Skia Graphite (react-native-skia v3) renders with: Skia.getNativeDevice() is imported into WebGPU, so each resolved frame is wrapped as an SkImage with no copy and no readback. Skia draws the room, the floor light, the contact shadow and SkSL light shafts behind that layer, then two threshold-and-blur bloom passes over it. The rock has no mesh: it is a convex polyhedron of 13 to 20 half-spaces, ray-traced per pixel in WGSL, and the last hit splits it into Voronoi cells that stay convex and ray-traceable. Cracks are capsules rendered into a float crack map with MAX blending, and particles live in a GPU ring buffer stepped by a compute pass. Gesture.Tap writes taps into a Reanimated shared value; the game step, GPU encoding and hand-off to Skia run in a worklet frame loop on the UI thread. The JS thread only receives events, via scheduleOnRN, for expo-audio, expo-haptics and the counter. Each sound plays on a fresh preloaded voice, because rewinding an iOS AVPlayer with seekTo cost the UI thread whole frames. Needs a development build: Expo Go ships Skia v2, and without Graphite the screen shows an error rather than a fallback. Android needs minSdk 26. Built on Expo SDK 57 and React Native 0.86.