Features
- Viewport render mode is now a 7-way dropdown (Wireframe 2D, Wireframe 3D, Hidden Line, Flat Shaded, Gouraud Shaded, Flat Shaded with Edges, Gouraud Shaded with Edges) instead of a binary wireframe/solid toggle.
- Wireframe 2D / 3D draw 3D solids and meshes as their triangle edges only; PolyfaceMesh / PolygonMesh face fills are dropped while 2D fills (text-LOD greek, MultiLeader backgrounds) stay visible.
- Hidden Line runs a depth-only prepass so edges occluded by closer geometry disappear; text greek and other 2D fills remain drawn.
- Flat vs Gouraud shading: Flat uses a per-triangle face normal (derivative-based) for a faceted look; Gouraud keeps the smooth interpolated normal. Lighting widened to a higher-contrast range so the difference reads clearly on curved surfaces.
- *WithEdges variants overlay triangle edges on top of the shaded fill; the plain shaded modes hide 3DFACE / PolyfaceMesh outlines for a clean surface.
- Each paper-space viewport now renders through its own
render_mode(visual style) — the model-space dropdown only governs the Model layout. - Relative coordinate entry:
@x,y[,z]is relative to the last point,#x,y[,z]forces absolute, and with DYN on bare coordinates default to relative (#26). - Dynamic input shows editable boxes near the cursor with the quantity the command is asking for (X/Y, polar distance + angle, a single radius, or an angle in degrees). TAB moves between boxes; typing locks a box to a fixed value while the rest track the cursor; Enter commits the resolved point. Numpad digits are captured too.
Fixes
- Dynamic input now reports the cursor's Y ordinate correctly in 3D views — it previously always showed 0 because it read the world Z component (#27).
- ViewCube clicks snap to the picked face/edge/corner while preserving the user's up-sense: the nearest world axis to the current up is chosen and projected onto the new view plane, so neighbouring picks rotate the cube without rolling the screen.
- Sub-pixel 3D entities (3DFACE, Solid3D, Mesh, PolyfaceMesh, PolygonMesh, Body, Region) keep their true 3D position and Z range when they shrink below the LOD threshold instead of collapsing to a flat z = 0 stub.
Full Changelog: v0.4.1...v0.4.2