| Name | Modified | Size | Downloads / Week |
|---|---|---|---|
| Parent folder | |||
| SurfaceExplorer-v1.4-macos.dmg | 2026-10-11 | 33.8 MB | |
| README.md | 2026-09-29 | 13.2 kB | |
| Surface Explorer v1.4 beta source code.tar.gz | 2026-09-29 | 240.8 MB | |
| Surface Explorer v1.4 beta source code.zip | 2026-09-29 | 241.4 MB | |
| Totals: 4 Items | 516.1 MB | 0 | |
What's new since v1.3
- Ray marching: with the Precise marcher, Ray Steps and Step Relax are active again — they still shape the ray's approach and can close holes the precise search would miss. Ambient occlusion no longer depends on the scale factor written in front of the equation, so the 0.1 multiplier no longer darkens the shadows. The x/y/z limits accept the constants A–F and S, like the u/v/w limits, and are saved as written.
- Fixes: restarting a 4D camera path after Stop no longer makes the slice jump, and switching Shell → Solid → Shell restores the shell thickness instead of dropping it to the minimum.
- Renderer dock: with Background selected, the surface controls (Base/Phong/Wireframe, wireframe density, Transparency, Light, Headlight, FOV) are greyed out until you select Surface again.
- Meshes: the Multi Mesh panel of the Renderer dock has a Meshes field with its slider: how many copies of the surface, or of the curve in Solid Curve, to draw. The equations tell the copies apart with
mesh(0, 1, 2…), and each copy is a mesh with its own appearance. The field also takes an expression with the constants, such asA*A, so a constant's slider adds and removes copies. The library presets that used a constant to show only some of their meshes (Calabi-Yau, Brieskorn-Pham, Hopf tori, Clifford labyrinths) now use it, and no longer compute the hidden meshes. A script that declares several//MESH_BEGINsections sets the count itself: the field shows it and is locked, and its tooltip says why. - Multi-mesh images: each strip can have its own image. With a strip selected, an image picked in the Library goes onto that strip only, motionless (before it always covered the whole surface), and different strips can show different images. An Animated Images script applied to a strip animates that strip's image; an ordinary procedural texture replaces it. In All the surface image is shown, as before.
- Library: files and folders can be renamed from the context menu.
- Hints: each slider legend says what it acts on — Surface sliders, Texture sliders, Border sliders, Background sliders.
- Master START/STOP: it reads STOP only when every animated module is running. START turns on whatever is off without touching what already runs, so switching everything on takes one press instead of STOP then START; each module keeps its own button.
- Solid Curve: the Parametric tab has two sub-tabs, Surface and Solid Curve. In Solid Curve you write a curve X(u), Y(u), Z(u), adding P(u) for a curve in 4D, and the tube around it is drawn; empty fields count as 0. Thickness sets its width: the slider goes up to 3, and a larger value typed in the field widens it, as for the constants. The curve can use the constants and the time t. Tube scenes are saved and reopened like any surface. Several tubes come from a script: on the Solid Curve sub-tab the Script dock describes the curve, returning the point
vec4(x, y, z, p)at u; each//MESH_BEGINsection is one tube, with its own u range and an optionalthickness:, andmeshtells the tubes apart. Each tube is a mesh of its own, styled from the Renderer dock like those of the other multi-mesh surfaces. - Equations dock: the sub-tab buttons fill the dock width; the constant fields are narrower, leaving the sliders more room.
- RESET: it brings the scene back to how it opened. When something is moving it asks what to reset: the View (camera, zoom and field of view), the Motions (rotations, camera paths and everything animated by t), or both; while a camera path is running only the motions can be reset, since the view follows the path. Before, it only cleared the view and set the rotations to zero: animations in t went on from where they were, and the zoom (Forward/Backward) stayed.
- Border: a parametric surface can have a border, a tube along the edges of its domain. In the Renderer dock, Surface and Border choose what the controls act on: with Border selected, the color sliders, Base/Phong/Wireframe, the wireframe densities and the Texture checkbox act on the border alone, and textures picked in the Library go onto the border. Border Thickness sets its width (0 = no border; selecting Border turns on a thin one). Edges that close up (the seam of a torus, the twisted seam of a Möbius strip, the poles of a sphere) get no border. The border is saved with the scene; it is not available in ray marching.
- Renderer dock layout: the Surface/Background row at the top is gone: Surface and Border head the surface controls, Background heads the background controls. The background shape (Fixed, Sphere, Cylinder, Cube) is enabled only while the background texture is on, and disabled sliders turn grey.
Main fixes
- Video recording: the video runs at the same speed as the screen, with no jump when recording starts or stops, or after Stop/Start.
- Background image lost from records: a saved record could reopen with the default background. Turning the background off now clears it completely.
- Presets no longer depend on the one opened before: Cross Section equation, background framing, composition fields, transparency and lighting no longer carry over.
- Records without a setting use its default: camera, motion, 4D observer and background are no longer inherited from the previous record.
- Transparency: records save the transparency on screen and restore it on load.
- Discrete constants: Save Surface now keeps them.
- Multi-mesh records: saving no longer writes an old texture zoom onto the first mesh.
- Texture on/off: saving in Wireframe keeps the texture; the Texture checkbox shows the selected strip's state.
- Texture colors: on a strip without its own colors, Color 1/2 show the inherited colors, not those of the previous strip.
- Relief (displacement) and ray-marching texture: no longer linger after opening a parametric record following a ray-marching one.
- Hand-written sounds: a
mainSoundtyped in the Sound dock without markers is saved in its own block; before it ended up inside the texture code and the record's texture no longer compiled. - Texture scripts not yet run, or that do not compile: Save, Run, Run Sound or picking a sound no longer treat them as applied, and picking a sound no longer wipes them from the editor.
- Save Texture on Background: saves the background's code and image (in ray marching it saved the surface texture).
- Surface image: choosing the same procedural background twice in a row (e.g. after switching the background off) no longer drops the surface image from the saved record.
- Multi-mesh, Run with a strip selected: the strip's texture script is no longer applied to the whole surface.
- Color 1/2: after running a strip's texture script, the pickers of the default checkerboard stay enabled in All.
- Constants while editing: a constant (A–F) keeps its value while you rewrite an equation without it; it goes back to 1 only after Run, if the new equation no longer uses it.
- Constants of a background texture: choosing a background that uses a constant now enables its slider right away.
- Constants of a texture switched off: the slider is disabled instead of staying on with nothing to move.
- Constants defined from another: with
B = A/10and equations that use only B, A no longer goes back to 1 at Run (which changed B and the surface). - Minimum of a constant: a script's
A := min(…)no longer applies to the surface loaded after it. - Cross Section: a ray-marching script preset opened after a Cross Section no longer keeps its sub-tab and slicing rotation.
- Enter on a constant: after opening a record and then a surface, it no longer brings back the record's equations; and it no longer undoes an equation edited on the fly while the animation was running.
- Composition and constraints not yet run: Enter on a constant no longer applies them halfway (new composition on the previous equations); they wait for Run.
- Sound between spaced markers: a record whose texture carries its sound between
// SOUND_BEGINand// SOUND_END(with a space) now shows its texture; the sound code stayed inside it and the texture did not compile (e.g. Kerr Spin Animated). - Sound saved twice: a record carrying the same sound in both its texture and its background (written by older versions) is now saved with a single copy.
- Paths after NEW or a new surface: a path written from scratch no longer starts with the view (Center) and speed of the record opened before.
- Master Start: also starts a path written with a single coordinate other than X, as DEPARTURE does.
- Reset view: the FOV slider follows the projection back to the scene's field of view (it stayed on the old value).
- "Unsaved work" prompt: it now compares the scene with the one loaded or last saved. Putting a control back where it was no longer asks to save, and controls that were not tracked (projection, path view, starting a rotation) are now protected.
- Equations typed but never run: on a preset just opened, text that was never run (or gives an error) no longer triggers the prompt.
- Texture and background framing after NEW: NEW or a mode switch no longer keeps the zoom, pan and rotation of the previous record's texture and background (the default checkerboard came back zoomed, and saving wrote them into the new scene).
- Texture checkbox in ray marching: after NEW or a mode switch with Background selected, it no longer stays ticked and labelled "Background Texture".
- Geodesic flow, conformal factor: a factor using a constant finer than 0.01 (e.g.
200*Awith A = 0.005) is no longer read as zero. - Script dock, Run button: it stays enabled until what is written has actually been run. Cycling Surface / Texture / Sound, or switching Surface / Background, no longer turns it off on a script that was never run.
- Surface script typed but never run: after cycling the Script dock it no longer disables the Run buttons of the Equations dock.
- Enter on a constant while editing a surface script: re-applies the script on screen, not the one still being edited (as it already did for equations).
- Master Start with an edited surface script: the saved record now carries the script that was run.
- Ray-marching texture with Background selected: switching the background off no longer stops the surface texture, and Master Start and the texture Run restart it (they looked at the Texture checkbox, which shows the background there).
- Texture checkbox after a load: loading a surface while Background was selected no longer leaves the Texture checkbox ticked on a scene without texture.
- Limits written with a constant: a limit such as
u max = Aor6.28/Cfollows the constant's slider; before it kept the value it had when confirmed. - Library focus: opening or closing a folder (tap, or double-click on desktop) no longer moves the highlight off the loaded preset, and clicking a folder no longer clears the highlight in the other branches.
- Copy and paste of a folder: pasting a folder next to the original now creates the copy with all its content (before nothing was pasted), and a folder can be pasted or dragged into one whose name begins the same (e.g. Paths into Paths2).
- Multi-mesh record opened after a ray-marching one: the first strip no longer gets a transparency of its own (it stayed opaque when the Transparency slider was lowered, and saving wrote it into the record).
- Script presets reopened: a constant or a u/v limit changed after Run and saved is kept when the preset is opened again (the script's
A := …/u_max := …overwrote it). Script records opened after a metric one no longer lose their u/v limits. - Steps after NEW or a tab re-click: restarting in one mode no longer changes the Steps (or Ray Steps) the other mode gets back when you switch to it.
-
Texture of the other mode: a ray-marching texture picked on a parametric surface, strip, border or background (or a parametric texture in ray marching) is refused with a warning, and the scene stays as it is. Before, on the surface it switched mode and replaced the surface with the default one, and on the background it covered the surface image with the checkerboard.
-
Strip image not found: opening a record whose strip image is missing now warns, as for the surface and background images (the strip silently showed the surface image).
-
Ray-marching texture from the Library that does not compile: after the error, the color sliders and switching the Texture checkbox back on work again (they did nothing until the next load or NEW).
- Constant sliders while editing: typing a constant's letter in an equation no longer unlocks its slider before Run (it moved nothing).
- u/v/w limits: leaving a limit field while its pair is still incomplete, or clicking NEW, no longer shows an error; Run stays off until both limits are written.