Rendering & Textures |
← Implicit Surfaces (Ray Marching) · Contents · Sounds & Audio →
The Renderer dock is organized around three independent choices: the rendering style of the surface, the edit target that the colors and textures act upon, and — on multi-mesh surfaces — the scope those controls apply to.
Rendering Style (Surface) |
This selects how the surface itself is drawn. The three modes are mutually exclusive:
Headlight (Ray Marching) |
Implicit surfaces are lit by two fixed lights, one from the side and one from behind. Between them they leave some faces dark whatever you do: the inside of a cavity, a tube seen down its own axis, a face turned edge-on to the view. The Headlight slider adds a third light that comes from the observer, so it always illuminates what you are looking at — which is exactly what a cavity needs.
It is off at zero, which is the default, and there the image is identical to the one before this slider existed. Raise it only when something you want to see is in shadow; it deliberately ignores ambient occlusion, because the places that need filling are the ones where occlusion is strongest. The value is saved with the scene.
Multi Mesh (All / Mesh) |
A surface built from several independent grids (see Multi-Mesh Surfaces in the Script Guide) can be styled grid by grid. The Multi Mesh box decides the scope of the appearance controls — colour, transparency, Light Intensity and the Solid/Phong/WireFrame choice:
Switching to All does not erase what you set per grid: those values are only suspended, and they come back exactly as they were when you switch to Mesh. A grid you never touched simply follows the global settings, so surfaces made of a single mesh — and every preset built before this feature — behave as they always did. Both the per-mesh appearance and the active scope are stored in the preset.
Per-mesh limits (u_a / u_b / v_a / v_b) |
Below the selector, four fields set the parametric domain — the portion of the surface each grid actually draws. They follow the same scope rule as the controls above, and they take the same expressions as the U/V limits of the Equations dock (numbers, pi, tau, the constants A–F and S):
v_b draws half of that grid and leaves the others whole — a way to open a figure up and look inside it without touching the script.Unlike the appearance controls, a domain generates the vertices, so each change rebuilds the grid. The fields confirm on Enter or when they lose focus, and they apply at once — there is no Run to press.
The value you type wins over the script. A grid whose domain you edited keeps it through Master START, both Run buttons, an Enter in the equation fields and a reload, and it is saved in the preset. The trade-off is that such a grid stops following its own //MESH_BEGIN section: editing that section in the script no longer changes it. To hand the grid back to the script, type the values its //MESH_BEGIN block declares — or load the preset afresh, which restores the declared domain for every grid you never customized.
Note: the U/V limits in the Equations dock govern single-mesh surfaces. On a multi-mesh surface each grid carries its own domain, so those fields no longer drive the geometry — these do.
Note: a per-mesh colour has no effect while a texture is active on the surface, because the texture carries its own colours (see the u_col1 token in the Script Guide).
Edit Target (Surface / Background) |
This pair of buttons is a single exclusive choice that decides what the color sliders, the Texture checkbox and the Library textures act upon. Switching the target never changes the rendering style above — the two are completely separate axes.
Note: If no background image is explicitly loaded, a fallback procedural Deep Space gradient will be automatically generated to ensure a sleek presentation.
Applying Textures (Surface vs. Background) |
Textures (both procedural scripts and static images) follow whichever edit target is selected:
When a colored procedural texture is active, the Color 1 and Color 2 buttons appear and let the sliders edit the two tint slots of that texture. In the Surface target, picking Color 1, Color 2 or Surface is a single mutually-exclusive choice of what the sliders control; in the Background target, Color 1/Color 2 instead drive the two background-texture colors.
Procedural Textures (GLSL) |
Besides loading images (PNG/JPG), you can write custom GLSL scripts to generate mathematical textures in real-time.
// Example Texture Script float r = sin(u * 10.0); float g = cos(v * 10.0); return vec3(r, g, 0.5);
Putting an Image on a Single Mesh (Animated Images) |
Procedural textures can be given to one grid at a time, but images behave differently: an image is a single graphics resource shared by the whole surface, not code that can be duplicated per grid. Loading one from the Library therefore always covers the entire surface, even when the Multi Mesh scope is set to Mesh. The application says so with a one-off notice the first time it happens.
The way to bring an image onto a single grid is the Animated Images folder, under Textures > Procedurals in the Library. These are procedural scripts — so they do apply per mesh — that redisplay the image already loaded rather than generating a pattern of their own. Two steps:
Repeat the second step on each grid that should display the image. Every grid keeps its own framing and its own movement, and the ones you leave alone stay in plain colour — so the same photograph can drift on one branch of a surface and rotate on another. A grid that already carries a texture of its own keeps showing that one.
Choosing the preset. Still Image shows the picture motionless and is the one to use for a simple per-mesh image. Drifting, Rotating, Breathing, Shearing and Squished animate it in different ways — sliding, turning, pulsing, slanting and stretching respectively. Each script carries a short block of parameters (speed, amount) at the top of its code, so the effect can be tuned in the Script dock without rewriting anything.
← Implicit Surfaces (Ray Marching) · Contents · Sounds & Audio →