Download Latest Version Surface Explorer v1.5 source code.zip (259.2 MB)
Home / v1.1
Name Modified Size InfoDownloads / Week
Parent folder
SurfaceExplorer-1.1-windows-x64.zip 2026-07-27 67.7 MB
install-linux.sh 2026-07-27 5.7 kB
SurfaceExplorer-v1.1-linux-x86_64.AppImage 2026-07-27 82.4 MB
SurfaceExplorer-v1.1-macos.dmg 2026-07-26 79.1 MB
README.md 2026-07-26 8.9 kB
Surface Explorer v1.1 source code.tar.gz 2026-07-26 52.0 MB
Surface Explorer v1.1 source code.zip 2026-07-26 52.4 MB
Totals: 7 Items   333.6 MB 7

πŸ› Fixes since v1.0

  • Camera path state reset on tab switch: switching from a record with an active camera path to the default surfaces no longer leaves stale path fields, a stuck "STOP" Departure button, or a shifted camera.
  • Manual stops are respected: a texture/geometry animation stopped from its dock no longer restarts when toggling the background or the Texture checkbox.
  • Video recording respects stopped modules: stopped texture/geometry animations stay frozen in the exported video, a stopped sound is not bounced into the audio track (and doesn't restart afterwards), and stopped rotations no longer spin in the export.
  • Video save dialog: the overwrite confirmation now appears even when the file name is typed without the ".mp4" extension.
  • Constants in camera paths: using A–F/S in a path expression now unlocks the constant's slider/field (it stayed locked and was silently reset to 1 unless the equations also used it).
  • View buttons follow Departure: each Tangent/Center View button is enabled when its path fields are filled or its path is running, so you can pre-select the view of the next path.
  • Smooth 3D↔4D path handover: switching Departure between the 3D and 4D paths now glides the camera onto the new trajectory (~1 s) instead of teleporting it.
  • Records replay what you were doing: each record now saves the view mode of both paths (the 3D view always reloaded as Tangent) and the current camera motion β€” on load it restarts the motion you were using, instead of always preferring the 4D path when rotations and both paths were filled. Older records keep their previous behavior.
  • Preset save dialogs: the overwrite confirmation now appears even when the file name is typed without the ".json" extension (surfaces, records, scripts, textures and sounds).
  • Records keep the saved rotation: rotating a surface by hand and saving a record no longer loses that rotation when the record is reloaded with an active camera path.
  • Recorded video now matches what's on screen: the export loop was re-implementing the live camera/rotation logic instead of reusing it, and the copies had drifted apart. Fixed cases: a camera path recorded with the 3D Center View could show the surface out of frame (it was reading the 4D path's view mode instead of the 3D one); GO rotations advanced about 3Γ— slower in the exported video than on screen; camera paths advanced about 11% slower in the exported video than on screen.

  • Stopped motions stay stopped on equation commit: pressing Enter on an equation no longer restarts a camera path (or rotations) you had explicitly stopped; the last-used motion still restarts on a real master Start and when loading a record.

  • Geodesic flow respects its Stop: with the flow stopped from the Equations dock, moving a constant slider or navigating no longer restarts the time animation of metric/geodesic surfaces.
  • Recording no longer restarts a stopped geometry animation: the recorder judged the geometry clock from the master button (which reads STOP if anything is moving β€” even just an animated background), so a stopped surface animation restarted after every export. It now reads the real clock state β€” the same fix also un-freezes a running 't' animation in the exported video.
  • Geodesic flow animates in exported videos: the flow was frozen at its pre-recording frame in every export (its timer is stopped while recording and the export loop never advanced it). It now advances with the shared live logic at on-screen speed, and the on-screen flow resumes from the pre-recording time when the export ends. Also fixed along the way: the per-frame mesh refresh was overwriting the geodesic grid with a parametric evaluation of the display map, flattening the surface into a sheet.
  • Constant sliders no longer light up on shader variables: single-letter locals in texture/background GLSL code (float a, vec2 F = fragCoord, ...) were counted as uses of the A–F/S constants, enabling some or all sliders on records that use no constants at all. Shader code is now matched case-sensitively and locally declared letters are excluded; math fields keep the old case-insensitive behavior.
  • Camera path equations apply on Enter: editing a path expression while the path is running (adding a constant, changing a term) now takes effect immediately on Enter, without stopping and re-launching the Departure. Constant values were already applied live.

  • New: Field-of-view slider: the Path 3D panel gains a Fov slider (20°–110Β°, default 45Β°). Wider angles give fly-through paths inside a surface more breathing room; in Orthogonal mode it acts like a zoom. Saved in presets and Records (older files reload at 45Β°).

  • Seam-free default checkerboard: the default parametric texture is now procedural like the Checkboard preset β€” no more blended lines on the UV seam of closed surfaces, and the Color 1/2 pickers act on it live.
  • Save dialogs open in the right folder: Save Here from the Library context menu opens in the folder you right-clicked, Save As in the file's folder; built-in presets start at the root of their preset type.
  • New: interior wall cutout for self-intersecting parametric surfaces: an optional //CUTOUT section in the Script dock discards inner-wall fragments at self-intersections; empty/absent leaves every existing preset unchanged.
  • New: independent FOV for both camera paths: the Path 4D panel gains its own Fov slider alongside the existing Path 3D one β€” each path keeps its own field of view, active only while that path is running and projection isn't Orthogonal (it no longer zooms the view outside paths).
  • Stop freezes the last frame: stopping a camera path now holds the exact view it was showing instead of jumping to a different pose; the field of view resets to default only on an explicit View Reset.
  • Live edits during recording: FOV, speed, view mode, and the Departure/GO/Reset controls now work while a video is being recorded, and the change is reflected in the exported clip β€” previously the whole 3D/4D UI was locked during export.
  • New: full-width Library tabs: the four Library tabs (Surfaces/Textures/Sounds/Records) now stretch to fill the dock bar instead of clustering on the left; the dock is fixed at 400 px on every platform.
  • New: full-width Equations tabs & tidier dock titles: the Parametric/Implicit tabs fill their dock as well, the scroll arrows are gone from both tab bars, and dock titles are now uppercase bold (EQUATIONS, RENDERER, 3D VIEW, 4D VIEW, LIBRARY, SCRIPTS). A plain parametric surface (only u, v) also defaults to the disabled Constraints tab instead of leaving an idle Conformal Factor of 1.0 on view.
  • Cutout no longer leaks between surfaces: a //CUTOUT from a previously loaded script (for example a record that uses one) no longer keeps discarding fragments on surfaces loaded afterwards β€” it is realigned to the loaded preset's own script (or cleared) on every surface load and tab switch.
  • Ray-marching texture Run button re-enables after Stop: stopping an animated ray-marching texture that was loaded after a static one no longer leaves its Run button disabled β€” the button's "already applied" state is now cleared when an animated texture is loaded, so Run stays available once the animation is stopped.
  • Transparency safeguards on mobile (Android / iOS): on ray-marching surfaces, enabling transparency on an already-heavy scene now asks for confirmation before the first transparent frame, and a heavy relief (displacement) texture β€” applied live or loaded from a record β€” switches the surface to opaque with the animation still running (lower the slider again to retry). When rendering collapses, the animation is stopped before the warning appears so the dialog stays responsive, and warnings no longer stack or reopen after being dismissed.

  • No false slowdown warning after a video export: exporting a heavy scene no longer pops up the "rendering is slowing down" warning as soon as the video is written. The performance watchdog was measuring the frames drawn while FFmpeg (or the native iOS encoder) was still assembling the file β€” those frames are slow because the encoder is saturating the machine, not because the scene is too heavy, and the same scene never triggers the warning during normal playback. The watchdog now stays suspended until the file is closed and the completion dialog is dismissed. On devices that get hot during a long export the warning can still appear a few seconds later, when the GPU is genuinely throttled; recording at a lower resolution, frame rate or duration reduces it.

Requirements

  • macOS 26 or later (arm64) β€” SurfaceExplorer-v1.1-macos.dmg
Source: README.md, updated 2026-07-26