Each mix in the palette now becomes a mixed filament slot, and the mask names
that slot. The slicer alternates its components from one print layer to the
next, so the blend is as fine as the layer height.
Painting the interleave into the mesh could never be finer than the triangles,
which is why color_band_mm() had to widen a band to two triangle rows and why
lowering the layer height did not make the bands thinner. That path is gone:
ColorMixMode, make_mix_resolver(), ColorResolveFn and the shaders' own
interleave go with it.
Sidebar::ensure_mixed_filament() creates or finds a slot, so a feature can ask
for a blend without the modal dialog. A paint mask names at most ExtruderMax
states, so the palette is capped to fit beside the physical filaments; a mix
with no slot left falls back to its dominant component.
The palette is built from physical filaments only - the slots it creates are
extruders too, and feeding them back in produced mixes of mixes with components
no blend can name. Preview colouring uses the full extruder list instead, since
the bake writes slot indices; grouping against the shorter list dropped those
triangles out of the mesh.
Also lowers PREFER_PURE_DE from 10 to 2: ten Delta E is not a visible step but a
different colour, and it turned most lookups that wanted a mix back into a plain
filament.
- Bake: each layer is sampled only on its own painted area; analytic
projections used to stack every layer over every painted region, so the
top layer's texture showed on all of them (colour sampler too)
- Auto resolution follows the texture's texel size and sharpness again
- Unwrap: charts cut by each face's own normal (a cube gives 6 islands, not
12 triangles); non-disk charts (tubes, closed shells) are split until they
flatten; connected nets test real triangle overlap, grow from the largest
chart and are packed side by side
- UV edits are stored per unwrapped copy, so dragging a seam vertex no
longer moves its copies in neighbouring islands
- UV pane: tool strip with unwrap settings moved in from the panel, sharp
HiDPI icons, clearer island/edge/selection drawing with hover, texture
picker from the thumbnail, texture no longer lost on reopen (GL state
from the 3D view, background upload retries)
- Panel: whole-model select/erase as icons in the tools row; inactive
layers' paint shown muted; colour textures shown in colour in the picker
- Built-in displacement texture library
- Tests for unwrap segmentation, connected nets, UV edits and per-layer
sampling
* Expose Antialiasing velues
Expose Antialiasing multipliers.
Default to 4 as current implementation but enables the user to disable it to improve performante or increase sampling to improve quality.
* FXAA
* Improve descriptions
* Require restart when MSAA setting changes
Detect changes to the OpenGL MSAA (multisample anti-aliasing) preference when opening Preferences and prompt the user to restart the application to apply the change. Adds a constant key for the MSAA setting, stores the previous value, checks for changes (similar to the existing FXAA handling), and shows a warning dialog explaining the restart will close the current project without saving. If the user accepts, recreate_GUI is invoked to apply the MSAA change immediately.
* Revert "Require restart when MSAA setting changes"
This reverts commit dde134d346c3849598c91d025d2faed1b51c8a22.
* Menu and FPS options
* Fix FPS limiter and remove VSYNC
* Grouped FPS settings and mode up rigth fps counter
---------
Co-authored-by: Noisyfox <timemanager.rick@gmail.com>
* Add a simple subtle outline effect by drawing back faces using wireframe mode
* Show outline in white if the model color is too dark
* Make the outline algorithm more reliable
* Enable cull face, which fix render on Linux
* Fix `disable_cullface`