IRC Logs for #zfx


2021-04-17

06:42:05 xq: Biolunar: was war der PR?
06:42:44 xq: ah, tgkill
06:43:17 xq: Biolunar: andrew hat im Discord grade nen Satz rausgehauen *rofl*
06:43:24 xq: > My favorite part of that stream was that we learned Zig can generate ZIR for the entire std lib before clang finishes printing its help menu to /dev/null
07:06:01 Biolunar: haha
07:16:37 xq: ⚡️⚡️⚡️ gotta go fast ⚡️⚡️⚡️
11:13:28 Schrompf joined the channel
11:15:59 Schrompf: servus
11:55:53 Biolunar: o/
12:26:10 xq: huhu o/
13:52:55 Magister joined the channel
14:07:01 joeydee joined the channel
14:07:06 joeydee: moin
16:30:32 xq: heya joeydee
16:43:35 joeydee: na was geeeeht?
16:59:11 xq: https://raw.githubusercontent.com/MasterQ32/tvg/master/examples/feature-showcase.png
16:59:14 xq: fortschritte!
16:59:50 joeydee: oh cool :)
17:00:06 xq: png vs tvg: Faktor 25
17:00:34 xq: aber was man hier sieht:
17:00:44 xq: oben von links nach rechts drei spalten
17:00:54 xq: 1. draw rectangles (mit jeweils zwei rechtecken)
17:01:05 xq: 2. *fill polygon
17:01:09 xq: 3. fill path
17:01:22 xq: jeweils mit flat shading, linearem oder radialem gradienten
17:01:33 xq: (irgendwas bei den gradienten stimmt noch nicht :( )
17:01:46 xq: danach kommen 3×3 "outlined fill rectangle"
17:01:53 xq: mit allen möglichen varianten
17:02:22 xq: unter dem ganzen gehts weiter mit (lines, line strip, line loop, line path) × (flat, linear, radial)
17:08:37 joeydee: Was stimmt bei den Gradienten noch nicht?
17:10:05 xq: siehst du das "banding"?
17:10:16 xq: auf dem grün-orangenen rechteck?
17:10:21 xq: da ist noch was im argen
17:14:17 joeydee: Nein sehe ich nicht, auch nicht bei viel Kontrast, nur pixelweise, was ja normal ist ohne Dither.
17:18:22 joeydee: Also ich denke, deine Berechnung stimmt schon so, aber es kann sei dass da gerundete Sprünge auftauchen, z.B Grünkanal je Pixelzeile +2,+2,+3,+2 usw
17:19:27 joeydee: und/oder die Grafikkarte und/oder Monitor den Abstand 202 zu 204 sowie 212 zu 214 nicht fürs menschliche Auge im exakt gleichen Verhältnis darstellen kann.
17:20:07 joeydee: Da sind wir Menschen extrem empfindlich was Kontinuität angeht ;) Kann Photoshop auch nicht, Lösung ist einfach leicht Dithern.
17:21:05 xq: dankeschön :)
17:21:26 xq: was würdest du denn noch vermissen?
17:26:46 xq: joeydee: angenommen, ich hätte einen editor und du solltest damit arbeiten, was möchtest du haben? :D
17:27:21 joeydee: mom...
17:28:19 joeydee: Hier mal Photoshop-Verlauf ohne und mit Dither (ist optional): https://www.phoximages.de/uploads/2021/04/i68337bys2zo.png
17:28:33 joeydee: Und hier mit Kontrast: https://www.phoximages.de/uploads/2021/04/i68338bz5sbb.png
17:30:24 joeydee: Was ich in einem Editor zuerst testen würde: wie füllt sich der Pfad bei Selbstüberlappung wie in allen anderen Vektorprogrammen gewohnt?
17:30:55 joeydee: Was ich zuerst vermissen würde (ist aber eher Editor- nicht Formatgeschichte): CSG.
17:32:04 joeydee: Formattechnisch halt noch Text
17:32:26 xq: text würde ich nur über pfade machen
17:32:32 xq: ggf. mit ner glyph-table
17:32:49 xq: SVG hat die dumme Idee, text über fonts zu machen
17:34:16 xq: das ist halt exakt "0" portabel :(
17:34:55 joeydee: Klar, wegen Editierbarkeit. Wegen Größe werden oft auch nur Subsets des Fonts eingebunden, was dann wiederum Lizenzgeschichte ist (PDF macht das so).
17:35:16 joeydee: Aber sonst ist es tatsächlich üblich, Text in Pfade zu wandeln, wenn man das fertig weitergibt.
17:35:44 xq: jo mein format ist nur für "fertig weitergeben" gedacht
17:36:51 xq: für text würde ich ne art pfad-tabelle anlegen und jede glyphe direkt als pfad ablegen
17:38:30 joeydee: Genau. Also bei der nächsten Demo bitte ein paar Buchstaben aus irgendwelchen Fancy Fonts drauf :)
17:39:11 xq: haha
17:39:21 xq: da muss ich erst mal fonts laden
17:42:49 joeydee: Viele Vektorformate können dann noch Bitmaps einbinden, oder "Beschneidungsrahmen", d.h. Polygon mit einer anderen Zeichnung/Bitmap füllen.
17:43:49 joeydee: Dann noch Musterfüllungen, im Prinzip dasselbe mit wiederholender Zeichnung.
17:44:03 joeydee: Sind aber evtl. gar nicht wichtig für deine Zwecke.
17:46:19 xq: hatte drüber nachgedacht
17:46:31 xq: das bitmap-format wäre dann aber super-dense packed
17:47:10 xq: könnte ja als vierten style nen bitmap-pattern-style machen…
17:48:08 joeydee: mach einen allgemeinen "Bild-Pattern-Style", auch für Vektor.
17:48:16 xq: puh
17:48:26 xq: damit hätte ich nen rekursives dateiformat
17:48:31 xq: das will ich eigentlich gerne vermeiden
17:49:18 joeydee: ja wäre halt ein Tree
17:49:47 xq: jo, das wäre ungut :D
17:50:05 joeydee: aber wie gesagt, kommt drauf an was du wirklich willst/brauchst. Das meiste kannst du ja so darstellen.
17:50:52 xq: https://github.com/MasterQ32/tvg#use-cases
17:51:03 xq: das meiste davon dürfte ich schon abdecken können
17:51:48 joeydee: Wollt gerade danach fragen :)
17:52:24 joeydee: Machst du einen eigenen Editor dazu? Oder Konverter (der z.B. ein Subset von SVG konvertieren kann und Rest ignoriert)?
17:52:34 xq: irgendwie sowas
17:53:30 xq: "blur()" wäre wahrscheinlich noch nen guter "filter", oder?
17:54:07 joeydee: Hm, das sind so Postprozess-Anzeigefilter, würd ich für Vektor erstmal ganz weglassen.
17:54:28 xq: wenn ich das bild hier transponiert bekomme, bin ich glücklich: https://raw.githubusercontent.com/MasterQ32/LoLa/master/design/lola.png
17:54:36 joeydee: Da gäbe es noch Glow, Schlagschatten, den ganzen Kram ...
17:56:07 xq: jo
17:56:11 xq: das lass ich lieber weg
17:56:12 xq: zu komplex
17:56:40 joeydee: Die Farbübergänge in dem Bild sind (höchstwahrscheinlich) kein Blur-Flilter, sondern lauter übereinanderliegende Vektor-Flat-Filled-Polygone mit leichtem Unterschied.
17:57:19 joeydee: Also wenn ein Künstler sowas als "Vektorgrafik" anbietet, wäre es jedenfalls verpönt, das über Pixelfilter zu machen :)
17:57:35 joeydee: D.h. dü müsstest das jetzt schon rendern können.
17:58:30 joeydee: Die Linienstärken müssten, wenn sauber exportiert, auch als Flächen vorliegen.
17:58:54 xq: ist aber afaik ne pixelgrafik :D
17:59:44 joeydee: Ja, stammt aber evtl aus einer Vektorgrafik. Sonst hätte ich reingeschaut und genau das überprüft ;)
18:00:27 xq: ich frag sie mal :D
18:02:07 joeydee: Am Kinngrübchen und den Fingeransätzen gibts z.B. so Schattenverläufe, die nach Vektor aussehen.
18:02:35 xq: war pixelgrafik
18:04:24 xq: auf jeden fall: Das Bild ist imho nen guter Benchmark
18:06:59 joeydee: Wäre ja nur Benchmark, wenn du es als Vektor hättest
18:07:36 xq: naja, muss ich halt nachmalen :D
18:08:26 xq: jetzt muss ich mir mal gedanken machen, wie das mit fonts so läuft
18:08:32 joeydee: Lieber andersrum, such dir ne komplexe Vektorgrafik und wandle sie in ein Pixelbild ;)
18:09:00 xq: naja
18:09:06 xq: dann ist das aber kein guter benchmark für TVG :D
18:09:18 xq: wie oft hat man dann üblicherweise sich wiederholende pfade in bildern?
18:09:19 joeydee: Wieso?
18:09:36 xq: naja, ich muss ja dann vektorgrafik → vektorgrafik konvertieren
18:10:06 joeydee: Ich dachte, Benchmark du willst wissen wie gut sich tvg vs png verhält
18:10:16 xq: auch gegen SVG ;)
18:10:24 xq: gegen PNG gewinn ich grade quasi immer
18:10:33 xq: examples/app_menu.tvg has size 72, which are 25% of 277
18:10:33 xq: examples/feature-showcase.tvg has size 1247, which are 4% of 26743
18:10:33 xq: examples/shield.tvg has size 207, which are 57% of 362
18:10:33 xq: examples/workspace_add.tvg has size 85, which are 26% of 317
18:10:34 xq: examples/workspace.tvg has size 56, which are 17% of 312
18:12:45 joeydee: gegen Pixelformate geht ja Komplexität vs. Anzeigegröße, also kann man nicht Pauschal sagen, aber für so ein Anime-Girl mit Schatten wirds dann interessant, so dachte ich.
18:13:09 joeydee: Nochmal zurück zu den Schatten
18:13:30 joeydee: ich lad nur schnell ein Beispiel hoch
18:16:42 joeydee: https://www.phoximages.de/uploads/2021/04/i68339bhj07w.png
18:17:27 joeydee: Diese Art von Verläufen meinte ich, daher hatte ich vermutet, könnte auch ursprünglich Vektor gewesen sein.
18:18:10 joeydee: links Vektor, sich automatisch angleichende Flächen. Oben halt nur 100 Stufen statt nur 5.
18:18:48 joeydee: Ich weiß nicht ob SVG das kompakt speichern kann oder nur in 100 Flächen aufgelöst, aber wäre auch so ein Kompressionsfeature.
18:19:31 joeydee: Nur nicht ganz einfach denke ich. Nicht sicher ob das überhaupt eindeutig festzulegen wäre, oder interpretationsbedürftig ist.
18:20:26 joeydee: Ich denke mal, exportier wird in der Regel eher, wie bei den Fonts, in Einzelpfade aufgelöst.
18:20:52 joeydee: Aber genau dann werden Dateigrößen vs. Bitmap wieder interessant.
18:21:27 xq: Das Beispiel wurde einfach mit "Schmieren" gemacht :d
18:22:35 joeydee: Ja klar, sage nur: das wäre noch typisch für Vektor. Also wenn du Manga/Comics als Use-Case bewirbst, solltest du davon ausgehen, dass das massiv benutzt wird.
18:23:10 xq: ja, da war mein gedanke, das mit farbverläufen zu lösen
18:23:45 joeydee: Sind aber keine Verläufe, auch keine Pixelfilter, sondern Tweens.
18:24:30 xq: hm?
18:25:34 joeydee: Polygon-Morphing. Die roten Linien. Da sind nur die erste und letzte Fläche gezeichnet, die Zwischensteps werden daraus berechnet. Sowohl Form als auch Farbe angeglichen.
18:28:46 joeydee: Gibt jetzt 2 Möglichkeiten: es liegt alles fertig ausgerechnet als Fläche vor. Dann kann die Vektordatei riesig werden, wenn massiv benutzt. Oder es liegt komprimiert vor. Dann musst du es berechnen können, aber die Datei bleibt klein.
18:29:20 xq: hm
18:29:42 xq: das ist keine triviale implementierung
18:29:49 joeydee: Ja.
18:30:18 xq: jetz erst mal arc segments…
18:30:20 joeydee: Daher vermute ich, das SVG das auch gar nicht interpretieren kann. Nur interne Editorformate wie Illustrator z.B.
18:30:42 xq: lul
18:30:50 xq: du weißt, dass SVG raw sockets nutzen kann?
18:30:55 xq: ich weiß nicht, wofür, aber es ist in der spec :D
18:31:06 joeydee: ich weiß nichtmal was raw sockets sind
18:31:55 xq: sockets
18:31:57 xq: tcp und udp
18:33:32 joeydee: Sachen mit denen ich mich nicht beschäftige
18:34:10 joeydee: weiß auch nicht was das in nem Grafikformat genau zu suchen hat
18:35:26 joeydee: was war mit arc?
18:36:16 xq: https://www.w3.org/TR/2004/WD-SVG12-20040510/
18:36:27 xq: schau mal das *inhaltsverzeichnis* an
18:36:48 xq: file upload, javascript, …
18:36:59 xq: du kannst in ner standard-konformen nen komplettes online-spiel embedden
18:38:32 xq: was war mit arc?
18:38:36 xq: muss ich mir jetzt mal die mathe angucken
18:39:07 joeydee: Überlege, ob wirklich notwendig.
18:39:27 xq: ich bekomm mit purem bezier keine guten kreise hin
18:40:20 joeydee: Man kann jeden Kreis ausreichend damit annähern, wie jede andere beliebige Kurve auch.
18:40:21 joeydee: https://stackoverflow.com/questions/1734745/how-to-create-circle-with-b%C3%A9zier-curves
18:41:42 joeydee: Kommt also nur darauf an, was deine Quelle ist: wenn du SVG-Pfade importieren willst, konvertiere alles in Bezier, was keine gerade Linie ist, und behandle evtl. nur komplette Kreise eigenständig.
18:42:10 xq: man kann echte kreise und kreissegmente halt sehr viel effizienter rendern
18:42:21 xq: und es kodiert sehr viel kleiner
18:42:29 xq: (was mein hauptargument ist)
18:43:04 joeydee: Du kannst es ja im Dateiformat lassen, aber zum rendern würde ich mir kein Bein ausreißen.
18:43:20 xq: ja, aber auch da brauch ich erst mal die passende mathe :D
18:44:39 xq: also aus {radius-x, radius-y, drehung, punkt a, punkt b, mirrored} den passenden basiskreis berechnen
18:45:37 joeydee: Das wäre jetzt Kreis/Ellipse/-segment, nicht ArcTo etc im Pfad, oder?
18:45:59 xq: same difference am ende
18:46:34 xq: oder was meinst du mit "arc to"?
18:47:16 joeydee: Als Pfadabschnitt wie LineTo müsste es auch ArcTo geben, der statt Bezier eine Kreissegment rendert.
18:47:32 xq: achso, ja
18:47:40 xq: https://github.com/MasterQ32/tvg/blob/master/documents/specification.md#arc_circ4-arc-segment-circle
18:48:34 joeydee: Aber nochmal: das sind Konvertierungsgeschichten, überlege ob du die wirklich in deinem Format brauchst.
18:49:12 joeydee: Wenn du CAD-Anwendungen, also z.B tvg in DXF im Use-Case hättest, dann ja.
18:49:48 xq: joeydee: es geht mir auch um relativ gute kodierung
18:50:23 joeydee: Ich meine damit: wie oft wird der Use-Case auftreten, damit das wirklich ins Gewicht fällt?
18:50:34 xq: kreisrunde icons sind häufig
18:50:45 xq: oder abgerundete ecken
18:51:07 xq: und nen 270°-Bogen kann ich mit sehr wenig punkten oder sehr vielen beziers kodieren
18:51:57 joeydee: mom, ich schau grad mal was nach
18:55:41 joeydee: Hast du das mal ausprobiert? https://i.stack.imgur.com/aEsuA.png
18:55:52 joeydee: Kreis aus Bezier mit 4 Punkten.
18:56:11 xq: ja, das klappt relativ gut
18:56:15 joeydee: Nicht "sehr viele Beziers".
18:56:48 joeydee: Also wo ist das Kodierungsproblem?
18:57:16 joeydee: Jedes Kreissegment <90 Grad ist auch nur eine einzige Bezierkurve
18:57:38 xq: aber das sind halt 480% encoding size
18:58:04 xq: 24 byte vs. 5
18:58:37 joeydee: Und da kommt mein Argument "Quelle" bzw. "Use Case" wieder ins Spiel.
18:59:10 xq: ja?
18:59:16 joeydee: Für ein paar Icons bleibt es bei den paar Byte. WENN überhaupt deine Quelle das als Arc exportiert hatte.
18:59:50 xq: es geht mir darum, einen effizienten fall anzubieten
19:00:04 xq: wenn du nur 2k RAM hast, zählt jedes byte
19:00:04 joeydee: Bei einer komplexen Zeichnung, dem Manga-Girl als Vektor z.B., wirst du dagegen von vornherein gar keine Arcs haben.
19:00:10 xq: jo, ich weiß
19:00:17 xq: aber bei technischen grafiken zum beispiel sehr viele
19:00:58 xq: pie-charts, irgendwelche flussdiagramme mit schönen abgerundeten ecken, …
19:01:03 xq: da wirds dann wieder relevant
19:02:27 joeydee: Ja, aber solche Charts oder auch Icons sind für sich wieder recht klein. Wenn du natürlich innerhalb einer Anwendung da Tausende durchpusten willst, wirds wieder relevant.
19:02:39 xq: dies.
19:03:05 xq: ich hab halt ggf. auch einfach interesse, das ding bei uns in der firma zu etablieren, weil *kleiner* als bitmap-grafiken
19:03:12 xq: und ggf. sehr viel schneller zeichenbar
19:05:13 joeydee: kleiner/schneller: wie gesagt, das ist nicht pauschal vergleichbar. Das kommt auf die Komplexität an. Und die paar Arc-Bytes die du da zu sparen hoffst machen den Bock nicht unbedingt fett, wenn du schon Bitmap-Icons vergleichen willst.
19:06:26 joeydee: Wenn so ein Shape-Verlauf in Polygonen mit 100 Punkten und 100 Farbflächen daherkommt, und das auf Icon-Größe gerendert wird, ist Bitmap sicher kleiner und schneller.
19:07:02 xq: jo, aber die meisten icons die ich kenne brauchen überhaupt keine shape-verläufe :D
19:07:44 xq: aber die frage ist es, eine relativ naheliegende optimierung fallen zu lassen
19:08:26 joeydee: Die Frage ist, wieviel du dafür investierst (an Mathe) gegenüber dem, was du in der Praxis jemals sparen würdest.
19:08:46 xq: genug
19:09:01 xq: wir kodieren unseere bitmaps schon mit 1,2 oder 4 bits
19:09:11 xq: mehr als 16 farben können wir uns gar nicht leisten, nicht genug speicher
19:09:40 joeydee: Dann mach. aber dann brauchst du auch Quellen für die Icons, die das ausnutzen.
19:09:55 joeydee: Also mit Arcs arbeiten, wo nur möglich.
19:10:03 xq: jo, die werd ich wohl hand-konvertieren :D
19:10:40 xq: die mathe wird auch nicht so schwer sein denke ich
19:11:12 joeydee: Wie ich sagte: muss sich halt lohnen das alles auf sich zu nehmen. Ich seh's nicht wirklich.
19:11:40 xq: ist halt die frage, wie viel RAM man hat
19:11:45 xq: ich würde gerne einen dunstblick-client auf embedded devices ermöglichen
19:11:58 xq: dafür muss ich aber ne möglichkeit haben, alles relativ klein zu kodieren
19:12:03 joeydee: Mit deinem Firmen-Use-Case bist du halt auch erst die letzten 5 Minuten um die Ecke gekommen.
19:12:32 joeydee: Vorhin war noch von Manga-Illustrationen die Rede.
19:12:46 xq: joeydee: hast du die usecase-liste angeguckt? :d
19:13:15 joeydee: Toolbar Icons (small, simple)
19:13:24 xq: jo, das hab ich ja quasi schon
19:13:55 xq: wenn du hoch scrollst, siehst du noch mehr anforderungen
19:14:21 xq: ich hab das Projekt nicht angefangen, weil ich *einen* use case habe
19:14:52 xq: Dunstblick, ggf. für die Firma, Embedded im allgemeinen, Games, Web sind jetzt die, die mir spontan einfallen
19:15:01 xq: brb, dusche
19:18:13 joeydee: Woraus ich leider nicht schließen konnte, dass ein paar Bytes ein dermaßen entscheidendes Kriterium sind, weil da die 4 runden Ecken eines Icons als Arc statt Bezier abgelegt sind ...
19:46:04 Hannes joined the channel
19:46:47 Hannes: ahoi
19:57:17 xq: ohai
20:35:03 Hannes joined the channel
21:03:47 Hannes joined the channel