17.06.2026 22:39

mPainter: niezależne krzywe nacisku i czyste końce kresek

⏱️ 3 min read
Share:

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.

📚 Related posts

23.07.2026 19:40

Moonlight Animate: zapis, który mówi, i eksport, który pokazuje

Ctrl+S wreszcie zapisuje po cichu, każdy zapis potwierdza nazwę i wagę pliku, a nowy dialog „Eksportuj jako” pokazuje zakodowany wynik i dokładny rozm...
Continue reading →
14.07.2026 22:19

Silnik gier: od szablonu do grywalnej gry RPG top-down

Startowy szablon silnika gier to teraz kompletny, grywalny wycinek gry RPG top-down: chodzenie po siatce, rozmowy z postaciami, przeciwnik goniący gdy...
Continue reading →
14.07.2026 19:16

Moonlight Animate — system dialogów w grach

Silnik gier 2D w Moonlight Animate ma teraz kompletny system dialogów: kwestie z efektem maszyny do pisania, wybory z warunkami, zmienne fabularne i g...
Continue reading →

📧 Stay up to date!

Join the waitlist to get notified about new Dev Blog posts and Moonlight platform launch.