mPainter: niezależne krzywe nacisku i czyste końce kresek
Niezależne krzywe nacisku — i koniec z „kropkami" na końcach kresek
Tym razem zajrzeliśmy pod maskę silnika pędzla. Trzy rzeczy, które realnie czuć przy rysowaniu piórem: osobne krzywe nacisku dla każdej dynamiki, koniec z przypadkowymi kropkami na końcach pociągnięć oraz lżejsze stemplowanie.
Osobna krzywa dla rozmiaru, krycia i flow
Dotąd wszystkie trzy dynamiki nacisku — rozmiar, krycie i flow — dzieliły jedną wspólną krzywą transferu. W praktyce znaczyło to, że edytując krzywą w oknie „Nacisk → Krycie" zmieniałeś przy okazji odpowiedź rozmiaru. A podgląd w oknie krycia i tak pokazywał zmianę rozmiaru — bo to rozmiar jest domyślnie sterowany naciskiem.
Teraz każda dynamika ma własną, niezależną krzywą:
- Rozmiar może narastać ostro — cienko przy lekkim dotyku, grubo przy mocnym dociśnięciu,
- Krycie — łagodnie, dla miękkich przejść,
- Flow — wedle uznania,
i żadna edycja nie wpływa na pozostałe. Okno „Nacisk → …" edytuje oraz pokazuje w podglądzie wyłącznie swój parametr. Stare presety i zapamiętane ustawienia narzędzi z jedną krzywą migrują automatycznie — wszystkie trzy dziedziczą dotychczasową krzywą, więc nic nie wygląda inaczej, dopóki sam nie rozjedziesz krzywych.
Koniec z „kropkami"
Zdarzało się, że przy rysowaniu — zwłaszcza na początku i końcu kreski — pojawiała się lita kropka, jakby niezależna od rozmiaru pędzla. To była kombinacja dwóch rzeczy:
- przy znikomym nacisku rozmiar daba zapadał się do podłogi 1px, identycznej dla pędzla 20px i 200px,
- a krycie nie było obniżane (domyślnie nacisk nie steruje kryciem), więc ten jednopikselowy ślad był w pełni kryjący — lita kropka.
Do tego pióro raportujące dokładnie zerowy nacisk (typowe przy odrywaniu) było traktowane jak pełny nacisk, co zostawiało pełnowymiarową plamę na końcu kreski.
Teraz daby mniejsze niż piksel renderują się na podłodze 1px, ale z proporcjonalnie obniżonym pokryciem — czubek wygasa płynnie zamiast zostawiać kropkę. A prawdziwe zero nacisku z pióra nie jest już podbijane do pełni (rozróżniamy pióro z czujnikiem nacisku od urządzenia bez niego). Końce kresek są czyste.
Lżejsze stemplowanie
Przy okazji uprościliśmy gorącą pętlę rysowania. Stemplowanie daba i scalanie pociągnięcia z warstwą rozwiązywały kafel obrazu osobno dla każdego piksela (wyszukiwanie w mapie + sprawdzenie kopiowania-przy-zapisie). Teraz robią to raz na kafel — tak samo jak wypełnianie prostokąta. Wynik rysowania jest identyczny, ale przy dużych pędzlach i przy zatwierdzaniu pociągnięcia ubywa narzutu CPU.
Co to daje
Pełna kontrola nad tym, jak pióro przekłada się na ślad — osobno dla grubości, krycia i flow, bez wzajemnych zależności. Czyste, wygasające końce kresek bez przypadkowych kropek. I trochę lżejszy silnik pod spodem.