IRC Logs for #zfx


2021-04-18

07:55:57 Schrompf joined the channel
08:13:38 xq: moin moin
08:14:01 Biolunar: ahoi
08:18:05 IceGuestAgain: moin
08:18:18 IceGuestAgain: was ein Wetter zum wandern
08:21:27 xq: hhuhu IceGuestAgain
08:21:31 xq: vom wandern hab ich genug
08:21:34 xq: ich gammel im bett
08:21:35 xq: \o/
08:21:54 IceGuestAgain: ich wär gern gegangen, aber muss arbeiten für mein Privatprojekt und es kotzt mich an
08:22:35 IceGuestAgain: nix getan hab ich gestern und war seit langem nicht mehr so unzufrieden
08:23:19 xq: but why?
08:23:25 xq: nix tun ist befriedigend!
08:23:28 xq: das ist auch wichtig
08:25:05 IceGuestAgain: mein Problem ist, dass das Projekt, für das ich jetzt fast 8 Jahre nebenbei gearbeitet hab quasi ein Flop ist
08:25:43 IceGuestAgain: aber es gibt noch ein paar Chancen, dass es vll doch zumindest ein bisschen was bringt. Nix, wovon man leben kann, vll ein ganz schlecht bezahlter Nebenjob, aber na ja... dafür gibt's ne gewisse Chance, dafür muss ich aber schon noch ein paar Releases machen, damit die Software zumindest nicht komplett nutzlos ist
08:26:11 IceGuestAgain: ich steh also gerade zwischen "ich sollte das Ding einfach abschießen" und "ich kann jetzt noch ein bisschen was in das totgerittene Pferd stecken, weil es zumindest noch ein paar Chancen gibt"
08:26:35 IceGuestAgain: versagt hab ich eh, daher ist es ätzend daran zu arbeiten. Aber nix zu tun ist ätzender
08:26:59 xq: > Aber nix zu tun ist ätzender
08:27:00 xq: wieso das?
08:27:32 IceGuestAgain: weil das Produkt ja schon auf dem Markt ist. Wenn ich jetzt gar nix tue, ist sofort klar "da kommt nix mehr". Und dann hätte ich die ganzen Jahre umsonst reingesteckt
08:27:48 IceGuestAgain: ist halt nicht so geil was einzustampfen, woran man so lange gesessen hat
08:28:05 xq: ah
08:28:20 IceGuestAgain: ich kann Nixtun daher gerade auch nicht genießen, es wurd hier und da was angekündigt und es kommt gerade nix
08:28:42 IceGuestAgain: daher plan heute, gerade so viel zu machen, dass ich zumindest ein bisschen was zeigen kann, das zu releasen und dann hoffentlich ein bisschen innere Ruhe zu finden
08:29:25 IceGuestAgain: normalerweise kann ich zumindest beim Schlafen abschalten, jedes WE ist so ein Ringen darum gerade genug Energie für die nächste Woche zu haben. fun fact: Schlaf war dieses WE nix :D
08:29:38 IceGuestAgain: Gedankenkarussel ftw
08:29:44 xq: puh
08:29:45 IceGuestAgain: sorry, ich schreib zu viel, sollte mehr arbeiten
08:30:57 IceGuestAgain: ach ja, eins noch, Urlaub bei uns steht auch ständig auf der Kippe, insbesondere als Teamlead, jay! Warum auch Lichtblicke schaffen
08:31:11 Schrompf: und... ach mist, falsch angefangen. moin
08:31:12 IceGuestAgain: ok, ist TMY, sorry, ist prokrasti-mimimi-n
08:31:23 IceGuestAgain: moin Schrompf
08:32:50 Schrompf: und warum ist die app plötzlich nicht mhr nützlich? hat jemand ne bessere app veröffentlicht?
08:35:15 IceGuestAgain: sie ist nützlich und hat ein paar kleinere USPs, aber nicht genug
08:35:26 IceGuestAgain: es gibt andre Tools, die so 80% meiner Funktionen haben
08:35:37 Schrompf: dann müssen die doch fürchten, und nicht du
08:35:58 IceGuestAgain: die sind günstiger, mehr auf dem Markt verbreitet, aber unabhängig davon gibt es halt leider ein größeres Problem
08:36:09 IceGuestAgain: Analysetools wie meins, wo man alles brav eingibt und output kriegt, sind generell out
08:36:28 IceGuestAgain: mittlerweile wollen die Leute nur noch Solver. Du gibst ne Spielsituation ein und der berechnet dir ein GTO
08:36:42 Schrompf: was ist ein gto?
08:36:49 IceGuestAgain: spieltheoretisches Optimum
08:36:57 Schrompf: nuja, das fällt doch auch raus
08:37:03 IceGuestAgain: klar, es gibt Einschränkungen, aber du kannst dir quasi für viele Situationen mit viel Rechenzeit und Rechenpower die optimale Strategie ausgeben lassen
08:37:24 IceGuestAgain: unter Berücksichtigung, dass der Gegner eben auch immer optimal reagiert
08:37:45 Schrompf: joa, spieltheorie halt. ich dachte, beim poker ginge es eh um den menschlichen teil hinter den stats
08:38:08 IceGuestAgain: wenn der Gegner ne optimale Strategie spielt, verlierst du mit GTO halt kein Geld
08:38:16 IceGuestAgain: wenn er davon abweicht, kannst du ne bessere Strategie finden
08:38:28 IceGuestAgain: die Tendenz im Onlinepoker ist mittlerweile mehr nach GTO zu spielen
08:38:31 Schrompf: knifflige Situation jedenfalls, IceGuestAgain. Denk mal vom Ende her: wenn Du Dein Projekt jetzt aufgeben würdest, wie würde sich Dein Leben verändern?
08:38:45 IceGuestAgain: ich wär jahrelang frustriert, weil ich die Zeit komplett sinnlos investiert hätte
08:38:47 Schrompf: Online ja, ist sinnvoll. da kennst du deine gegenüber nicht,
08:38:52 xq: Schrompf, hast du mir eigentlich von deinem Voxelkram den letzten Screenshot? Ich wollte das gestern nem Kumpel zeigen und habs nicht gefunden
08:38:54 IceGuestAgain: ja, und das ist halt der Markt
08:39:41 Schrompf: xq: http://www.splitterwelten.info/privat/voxelcone_stabil.png
08:39:58 IceGuestAgain: nice :)
08:40:11 Schrompf: wenn ich das jetzt so sehe, will ich daran auch wieder weitermachen
08:40:15 xq: Schrompf: <3
08:40:23 IceGuestAgain: ja dann ran den Speck! :)
08:40:39 Schrompf: aber meine content gen engine ist gerade ultrahot am burnen voll tight, da will ich nicht weg
08:40:44 IceGuestAgain: ah
08:40:46 xq: ja, mach daran weiter
08:40:47 xq: das ist auch sexy
08:40:52 xq: und am ende: "now kiss"
08:40:57 IceGuestAgain: der Wal der Qual: zwei geile Projekte :D
08:40:58 Schrompf: hihi
08:41:29 xq: hatte ja gestern mit joeydee ne ausführliche diskussion über den sinn und nutzen von kreissegmenten
08:41:52 xq: und grüble jetzt, ob ich die in meinen format haben will
08:42:08 Schrompf: hab ich auch schon überlegt. der ausgangspunkt ist halt kacke, weil aus den voxeln ein extrem dichter mesh rauskommt, den man mit sowas nur noch schwer aufhübschen kann. aber wenn man irgendwo vorher schon abbiegt, also beim voxelwelt-gen bis zu ner gewissen detailstufe auf basisdreiecken arbeitet, könnte das zünden
08:42:44 Schrompf: nuja, ding für später. ich geh erstmal joggen, wenn es die familienlaune gerade her gibt
08:44:17 IceGuestAgain: Joggen, das ist auch lang her
08:44:19 IceGuestAgain: viel Spaß :)
08:47:43 xq: Schrompf: ich guck mir heute mal Vulkan etwas genauer an
08:48:16 IceGuestAgain: Vulkan ist auch multi-OS, oder? hm
08:48:41 xq: jo
08:48:46 xq: bzw. das ist falsch
08:48:49 xq: es ist os-los
08:48:57 xq: vulkan per se hat keine OS-spezifischen APIs
08:49:14 Schrompf: sag mal bescheid, wenn du was gegen diese loaderlib unternehmen kannst. aktuell kann ich das sdk nicht einfach einchecken, weil der ne bestimmte dll und in bestimmten pfaden nach irgendwelchem json sucht, und das *kotzt mich an*. ich will autarke software
08:49:23 xq: örm
08:49:29 xq: ich hab autarke software
08:49:31 xq: :D
08:49:37 Schrompf: pfff. linuxnase
08:49:41 xq: zig-nase
08:50:03 Schrompf: ahso, stop. du wirst bei vulkan feststellen, dass da noch ne stufe dazwischen ist
08:50:09 xq: hm?
08:50:30 Schrompf: quasi ne lösung für das alte "app will opengl.so öffnen, aber welcher treiber welcher gpu stellt diese .so?"
08:50:53 Biolunar: haha, ich hab vor ein paar tagen erstmal einen zig wrapper für vulkan geschrieben
08:51:04 xq: Biolunar: https://github.com/Snektron/vulkan-zig
08:51:06 Schrompf: das haben sie jetzt über ne loader.so gelöst, aber die muss halt zentral da sein. oder man baut sie selbst und linkt sie statisch, dann hast du halt das problem, dass in zwanzig jahren deine app ne neue gpu nicht mehr erkennt
08:51:35 Schrompf: naja, bin jetzt wirklich fort. sagt bescheid, wenn es ne coole lösung dafür gibt. die nicht zig-only ist
08:52:10 xq: du kannst die zig-lösung ja portieren ;)
08:52:17 Biolunar: xq: hab das manuell gemacht um mir maximale flexibilität zu ermöglichen
08:52:24 xq: inwiefern?
08:53:28 Biolunar: Mein Plan ist so viel zig-ismus wie möglich zu verwenden, sprich optionals, default struct values, [*]T, [*:0]const u8, statt [*c]
08:53:46 xq: ah, ich denke, der loader von snektron tut das auch
08:54:04 xq: das sind ja aus vk.xml generierte bindings, kein translate-c output
08:54:15 Biolunar: Vielleicht hätte ich mir vorher mal die vulkan.xml anschauen sollen um zu checken, ob solche infos überhaupt kodiert sind
08:54:45 xq: https://zigbin.io/110e65
08:54:51 xq: ja, sind sie
08:55:08 xq: inklusive error set
08:55:30 Biolunar: geil
08:55:51 Biolunar: Ganze Arbeit umsonst xD
08:56:11 xq: wie schmeckt dir eigentlich Zig mittlerweile so?
08:56:47 Biolunar: Hmmm eine Sache noch: die Wayland extensions verwenden bei mir meinen eigenen Wayland zig header, statt dem C header
08:57:14 Biolunar: Dort bin ich nämlich genau so vorgegangen wie mit dem Vulkan header
08:57:26 Biolunar: xq: Zig is love, Zig is life
08:57:36 Biolunar: (außer, dass ich noch immer /* */ vermisse)
08:57:52 xq: hehe, dachte mir doch, dass dir das schmeckt
08:58:02 xq: es ist halt *wirklich* eine geile C-Alternative
08:58:41 xq: aber halt so high-level an anderen stellen, das C++ sich schämen muss :D
08:59:14 Biolunar: Jap, Zig hat alles was ich mir in C wünschte (und mehr!) integriert
08:59:28 Biolunar: Aber auch nicht zu viel
08:59:30 xq: jo
08:59:35 xq: das type system ist auch einfach brilliant imho
08:59:52 xq: "[*:0]const u8" vs "char const *" ^^
09:00:08 Biolunar: Ich liebe die verschiedenen pointer typen
09:00:14 xq: PRÄZISION!
09:00:25 xq: "oh, der typ sagt mir, was die funktion erwartet. das ist ja krass" :D
09:01:23 Biolunar: Und die strikte Trennung von Sprache und Stdlib ist exzellent
09:01:40 xq: tut halt :D
09:01:51 xq: ist übrigens nicht ganz korrekt, aber funktioniert ausreichend gut :)
09:02:08 xq: (eigentlich compiliert zig ja immer ein '_ = @import("std");'
09:02:20 Biolunar: okay @import("buildin") ist notwendig
09:02:25 Biolunar: *builtin
09:02:36 xq: dieses importiert std.zig, welches start.zig importiert, welches das package "root" importiert, welches dann dein main source file importiert, welches dann _start exportiert *rofl*
09:03:15 Biolunar: Ich glaube das ist mir auch schon aufgefallen und es wäre schön, wenn das vor 1.0 noch geändert wird
09:03:37 Biolunar: Habe nämlich natürlich mit freestanding experimentiert ;)
09:04:17 xq: jo, machen ja viele :)
09:06:04 Biolunar: Dabei ist das eigentlich gaaaar nicht so wichtig wie bei C, da auch die Binary eines normalen Programms kein bloat mehr enthält, im Gegensatz zu C mit glibc
09:06:13 xq: yep :)
09:06:23 Biolunar: musl ist da zwar besser, aber auch nicht auf dem Zig Level
09:06:27 xq: hast du das gelesen/gesehen was andrew die tage gebenchmarkt hat?
09:06:31 Biolunar: Ne
09:06:50 xq: stage2 parsed die komplette stdlib (und generiert daraus ZIR) in ~ 7ms
09:07:05 xq: und ist damit schneller als "clang --help"
09:07:14 Biolunar: Ah das sagtest du bereits :D
09:07:17 xq: jo
09:07:22 xq: das ist so komplett over-the-top :D
09:07:37 xq: ich geh davon aus, dass die meisten zig-projekte unter 500ms zum compilieren brauchen
09:07:41 xq: jedenfalls für debugbuilds
09:07:48 Biolunar: Das ist so ein Segen
09:07:57 Biolunar: Fuck C++ und fuck Rust
09:08:08 xq: ohja
09:08:13 xq: Rust ist ja *noch* schlimmer als c++
09:08:26 xq: Zig könnte sogar den TurboDelphi-Compiler schlagen
09:08:32 xq: und dabei compiliert man *immer* from source
09:08:57 xq: übrigens grübelt andrew grade darüber nach, ob man nicht irgendwann™ mal nen C-Frontend für das stage2-Backend baut
09:08:58 Biolunar: Rust muss nicht soooo schlimm sein, aber die verkackten 1000 dependencies, die jedes noch so kleine Rustprojekt mit sich bringt…
09:09:05 xq: damit hätte man die compile speeds auch mit C
09:10:29 Biolunar: An die compile from source Philosophie habe ich mich noch nicht gewöhnt
09:10:43 xq: ist halt notwendig, um diverse optimierungen zu machen
09:10:48 xq: und es ist gut für wartbarkeit :)
09:10:56 xq: endlich vernünftige stack traces! \o/
09:11:10 Biolunar: Für die Optimierungen ist das wohl war
09:11:37 xq: ich find auch die sache mit "structlayout ist undefined" sehr sehr gut
09:11:40 Biolunar: Aber ich hätte auch nichts dagegen binary libs zu ermöglichen
09:11:54 xq: geht halt erst mal nicht mit der aktuellen semantik (und mit comptime sowieso nicht)
09:12:28 xq: ReleaseSmall könnte halt aber ernsthaft alle structs packen :D
09:12:42 xq: ReleaseFast kann alignment-optimierungen auf kosten von größe machen
09:12:54 xq: ReleaseSafe kann Tags in structs embedden, um sowas wie "ist undefined" zu speichern
09:12:57 xq: das is schon cool
09:13:22 Biolunar: Simpel und effektiv
09:13:49 xq: jop, verbietet halt leider binary distribution
09:16:21 Biolunar: Ist ja erstmal nicht schlimm. Man kann ja C binaries produzieren, was völlig ausreichend ist
09:17:19 xq: jop
09:18:01 xq: ich schreib auch für meine zig libraries mittlerweile immer öfter C frontends :)
09:22:03 xq: Biolunar: vermisst du error payloads?
09:23:03 Biolunar: Hab ich mal vermisst, ja. Aber kann auch ohne leben, wenn es bedeuet die Sprache simpel zu halten
09:23:18 xq: wird halt krass komplex sonst
09:24:05 Biolunar: Wenn man das unbedingt braucht, kann man das ja manuell machen wie in C, statt den Zig errors
09:24:41 Biolunar: Und da man gezwungen wird den Rückgabewert einer Funktion zu verwenden, entgehen auch nicht so leicht Fehler
09:25:48 xq: jo
09:26:13 xq: explicit discard ist toll
09:26:20 xq: explicit init auch :)
09:26:25 Biolunar: jap
09:26:37 IceGuestAgain: agreed
09:27:18 Magister joined the channel
09:27:21 xq: beides sehr schöne features. verhindern zu viele fehler, um nervig zu sein
09:27:46 Biolunar: Eine Sache ist mir letztens aufgefallen. Es ist ja geplant Funktionen auch mit pub const foo = fn() T {} zu definieren. Dann hat man demnächt in jeder Zeile nur noch pub const zu anfang stehen xD
09:28:43 Biolunar: (außer halt private Symbole und nicht const Zeug)
09:28:56 xq: jo
09:29:19 xq: es gab … auch mal eine diskussion darüber
09:29:21 xq: ob man das weg macht
09:29:43 xq: https://github.com/ziglang/zig/issues/5076
09:30:21 xq: https://www.youtube.com/watch?v=880uR25pP5U
09:30:30 xq: das youtube-video sagt alles dazu
09:31:32 Biolunar: wat 😂
09:32:02 xq: das issue eskalierte
09:32:10 xq: und es kamen die absurdesten syntaxvorschläge
09:32:16 xq: ich liebe ja immer noch (&x).* = 10;
09:35:02 xq: info: Using device: AMD Radeon(TM) Vega 10 Graphics
09:35:03 xq: \o/
09:35:08 xq: device creation: check
09:35:29 xq: (okay, ich kopier eigentlich nur ganz viel stuff aus dem triangle-example, aber hey :D)
09:37:05 Biolunar: Das sind ähhhh … interessante Syntaxvorschläge :D
09:37:20 xq: ja :D
09:38:13 Biolunar: Ich bin mit meinem Vulkan Test bisher erst zur Instance Erstellung gekommen. Folge aber auch keinem Example
09:38:20 xq: ah
09:38:25 xq: jo, das ist alles non-trivial shit
09:38:30 xq: aber der code fühlt sich gut an
09:38:38 xq: (hab das gestern nacht mit snektron durchgequatscht)
09:38:48 xq: das ist alles logisch und bekannt von OpenGL
09:38:53 xq: nur halt explizit statt implizit
09:39:07 Biolunar: Und mein Laptop hat keine Vulkan fähige Graka, muss daher software rasterizer verwenden 🙈
09:39:17 xq: ah shit
09:39:37 Biolunar: Ich hab halt auch keine OpenGL Erfahrung
09:40:21 xq: ah
09:40:27 Biolunar: Vorteil vom Laptop ist aber, dass ich im Bett liegen kann und nicht an den Schreibtisch muss
09:40:29 xq: ich finde, modernes OpenGL ist schon sehr nice
09:40:33 xq: Biolunar: EXAKT
09:41:11 Biolunar: Beste Leben
09:42:43 Biolunar: Wir schrubten
09:43:18 xq: Gummipunkt? :D
10:10:26 IceGuestAgain: schrubten gibt keinen Gummipunkt
10:10:39 IceGuestAgain: außer man akzeptiert das als Plusquamperfekt, aber dann muss es halt im Kontext stehen
10:24:12 xq: Schrompf: übrigens, micht juckt es in den Fingern, ein Walter Moers-Fangame zu basteln…
10:24:22 xq: Dungeon Crawler in Buchheim
11:13:45 Hannes joined the channel
11:13:58 Hannes: heyho
11:16:44 Hannes: jemand da?
11:16:56 xq: heya Hannes!
11:17:03 Hannes: hi xq
11:17:52 Hannes: hast du schonmal in windows 10 openGL von hand initialisiert? Also ohne hilfslibs?
11:19:59 Hannes: man muss ja alle functionen
11:20:05 Hannes: rausziehen
11:20:22 Hannes: aber ich bekomme nur openGL 1 funktionen
11:21:05 xq: jop, hab ich
11:21:19 xq: du musst erst einen kontext erstellen
11:21:25 xq: bevor du zugriff auf die funktionen bekommst
11:21:32 xq: guck mal hier: https://www.khronos.org/opengl/wiki/Creating_an_OpenGL_Context_(WGL)
11:21:33 xq: :)
11:21:59 xq: und in gl3w
11:22:05 xq: https://github.com/skaslev/gl3w
11:23:08 xq: https://github.com/skaslev/gl3w/blob/master/gl3w_gen.py#L199-L222
11:30:00 Hannes: ich hab nen context mit der WINAPI funktion ChoosePixelFormat
11:30:16 Hannes: und nen paar funktionen rausgezogen
11:30:51 Hannes: muss ich jetzt das fenster zerstören und ein context mit wglChoosePixelFormat erstellen?
11:31:05 Hannes: mit nem neuen fenster
11:31:20 xq: yep
11:31:23 xq: das ist ziemlich kacke
11:31:27 xq: aber das ist so
11:32:33 Hannes: ich probiers mal aus
11:33:40 xq: viel erfolg :)
11:34:56 Hannes: :)
12:34:33 Schrompf: saumgenerierung geht endlich
12:34:46 Schrompf: bild brauch ich nicht zu zeigen, sieht genauso aus wie vorher
12:35:41 Schrompf: nur dass er jetzt halt die lücken auffüllt, die zwangsweise entstehen, wenn die eine seite der kante anders unterteilt als die andere seite
12:36:24 Schrompf: und es ruckt, durch die permanenten uploads großer texturen. spätestens da brauch ich vulkan mit seiner separaten transfer queue
12:38:22 xq: ach was
12:38:26 xq: opengl, shared context, ab dafür!
12:56:44 Schrompf: wenn ich mal groß bin. muss jetzt erstmal los, kindernachmittag
12:56:53 Schrompf: bild im zfx
12:58:22 xq: Biolunar: first blood! https://mq32.de/public/19f609451b8321044877e64c179f472489aa472d.png
12:58:32 xq: vulkan render 2 texture :)
13:37:28 Biolunar: yeah
13:38:21 Biolunar: Soweit war ich damals auch mal. In C. Mit Vulkan 1.0, als es grad neu war :D Danach hab ich es nicht mehr angefasst, weil tausende Zeilen für ein pupsiges Dreieck
13:46:05 xq: so viele sinds gar nicht :D
13:46:07 xq: ich hab jetzt vulkan 1.2
13:46:16 xq: und nur 800 LOC :D
13:46:23 xq: für render to texture
13:46:32 xq: und bin grade dabei, MSAA reinzufrickeln
13:47:27 Biolunar: Ich hab irgendwie 3k Zeilen im Kopf, also alles drum und dran. Wayland Fenster und Input, sowie Vulkan Kram mit dynamischem Laden der Funktionszeiger
13:47:47 xq: jo
13:47:50 xq: kann gut sein
13:48:01 xq: aber robin/snektron meinte gestern:
13:48:15 xq: überleg dir mal, wie viel code du brauchst, um ne x86 CPU zu bootstrappen
13:48:18 xq: und nix anderes machen wir hier
13:48:29 xq: gpu ist halt nen vergleichbar komplexer coprozessor
13:49:44 Biolunar: jo, ist halt der Anfangscode. Danach dürfte alles weitere nicht mehr so viel brauchen
13:50:18 xq: jop
13:50:19 Biolunar: Wayland hat auch so viele callbacks gerade für den Input, die man alle irgendwo haben muss
13:50:38 xq: jo, davon kann ifreund ein lied singen (der dude, der nen zig-wayland-compositor gebaut hat)
13:59:34 xq: https://mq32.de/public/51cd517afb457a968bc0077f83e415e17bccf8eb.png
13:59:55 Biolunar: jetzt ist das Dreieck richtig herum!
14:00:23 xq: ich weiß nicht, warum sich das gedreht hat…
14:00:45 xq: "convert" hat das bild gedreht
14:00:45 xq: wtf
14:00:46 xq: :D
14:03:29 Biolunar: Es hat intuitiv das richtige getan!
17:00:28 joeydee joined the channel
17:00:37 joeydee: moin
17:01:34 xq: huhu
17:04:22 joeydee: xq, ich würds letztendlich so machen mit den Arcs: im Format optional drin lassen, d.h. wenn sievon SVG und Co in einem Pfad so reikommen, drinlassen. Aber beim Rendern: als Bezier übersetzen und in einem Abwasch mit dem Rest rendern, ist glaub ich am wenigsten Mathe, und kannst trotzdem kleine Formate haben
17:05:00 xq: jo, das wäre ja sowieso der plan gewesen ;)
17:05:09 xq: aber für compression isses im format selbst gut
17:06:22 joeydee: denk ich wie gesagt nicht, nur wenn sie exzessiv benutzt wurden, was schonsehr speziell wäre, aber ist ja auch egal.
17:07:49 xq: übrigens, mal was anderes
17:07:49 xq: https://mq32.de/public/2b6abaa2cd9158dd59f2310ee59b6c86eb57c70a.png
17:07:50 xq: guck mal hier
17:08:47 joeydee: Was ist neu? Die Bögen?
17:09:08 xq: Vulkan rendering statt Software und 8×MSAA
17:09:23 joeydee: ah prima
17:09:29 xq: gradiente fehlen noch, linien ebens
17:10:05 joeydee: AA ist schonmal ne prima Sache :)
17:10:22 xq: jo
17:10:24 xq: tut gut
17:40:07 xq: joeydee: v
17:40:08 xq: https://mq32.de/public/f93905829b3c4406d62698ebf336ecb8fc934109.png
17:40:41 joeydee: :)
17:40:49 xq: geht voran
17:41:22 xq: jetzt: linien
17:41:26 xq: aber wie? *thinking*
17:42:17 xq: jetzt brauch ich ja auch arc logic :(
17:43:41 joeydee: wieso?
17:44:31 xq: wenn ich linien rendern will, muss ich ja polygone draus machen
17:45:38 joeydee: aber du brauchst keine arc loic, sondern musst wissen wie man Beziers gleichmäßig verschiebt
17:49:10 joeydee: Also eigentlich nur: du hast die mittleren Liniensegmente berechnet, und verschiebst alle Punkte entlang ihrer gemittelten Normalen, dann bekommst du lauter Quad-Segmente.
17:50:37 joeydee: Wie füllst du eigentlich deine Polygone in Vulkan? sind das Triangles, oder hast du einen Pixel-Tracer über die Form?
17:55:09 xq: triangles
17:55:14 xq: ear-clipping
17:55:24 xq: mit nem pixel-tracer bekommst du kein gratis AA
17:59:42 xq: joeydee: die idee mit den quad-segmenten ist gut, klappt aber nicht
18:00:28 joeydee: naja, ist ja irgendwo gelöst, findest du sicher.
18:00:59 xq: https://mq32.de/public/3106672ae2a266453935c736f2c6e6e079c55301.png
18:01:04 xq: das hier ist das problem mit deiner lösung:
18:01:16 xq: die linie verliert je nach knickstärke massiv an dicke
18:01:19 joeydee: habs auchgrad gesehen, als ichs mal notiert hatte
18:01:45 xq: ich würde gerne round caps für linien haben
18:01:56 xq: (finde das am natürlichlichsten=
18:02:05 joeydee: ja
18:03:09 xq: minkowski-summe wäre ja das korrekte
18:03:49 joeydee: ? hat die damit was zu tun? seh ich nicht auf Anhieb, aber glaubs dir wenn du es sagst
18:04:01 xq: ich mach jetzt mal dumme quad-linien
18:04:05 xq: https://doc.cgal.org/latest/Minkowski_sum_2/index.html
18:04:11 xq: minkowski-summe aus der linie und einem kreis :D
18:04:44 joeydee: Ja, jetzt seh ichs :)
18:05:19 Schrompf joined the channel
18:05:32 joeydee: hatte MarcGFX das Problem nicht in seinem Rennspiel für Straßen gelöst?
18:07:00 xq: kann gut sein
18:07:23 xq: guten Schrompf, der Abend!
18:07:37 Schrompf: xq hey!
18:07:46 Schrompf: ich lese gerade, du hast vulkan besiegt
18:08:24 Schrompf: mir hat sich ehrlich gesagt immer der kopf gedreht von renderpasses, dependencies, barriers und dem ganzen scheiß. ich glaube, wenn ich daran vorbei käme, wäre der rest wieder gewohntes drawcall-abfeuern
18:09:03 xq: ich hab den easy path genommen
18:09:06 xq: und hab exakt keinen sync :D
18:11:16 Schrompf: schreit denn das dann nicht die ganze zeit im debuglayer?
18:11:27 xq: nope
18:11:31 xq: ich hab one-shot rendering
18:11:33 Schrompf: und wie machst du data upload? den muss man doch auch mit dem drawcall syncen
18:11:39 Schrompf: hä?
18:11:52 xq: ich benutze eine command queue
18:12:00 Schrompf: du kannst doch auch nicht die ganzen structs aufsetzen, die müssen doch auch weiterleben
18:12:01 joeydee: xq, wenn du Line-Rechtecke zeichnest und an jedem Vertex einen Kreis,
18:12:03 Schrompf: moment, kind
18:12:09 joeydee: müsste gehen, ist halt overdraw
18:12:15 xq: joeydee: das klappt leider nicht perfekt :(
18:12:22 xq: ich zeig dir gleich warum
18:12:33 xq: Schrompf: upload, draw, download, WAIT ALL
18:21:41 xq: joeydee: https://mq32.de/public/d96085c1532951ff10ffc52277f3d3871a7411f1.png
18:21:45 xq: man siehts jetzt nicht perfekt
18:22:22 xq: aber das problem ist, dass du eine non-kontinuität bei ausreichender kürze hast
18:22:55 xq: https://mq32.de/public/6e19b54b392be68631fbdb7e384a02e4d6d22b8e.png
18:22:58 xq: hier sieht mans besser
18:24:20 joeydee: da bist du aber schon wieder beim nächsten Thema? Wusste nicht dass du variable Linienbreiten schon drin hattest. Natürlich geht das nicht. Ich war bei gleichmäßigem Offset. Also Notlösung mit Overdraw.
18:24:39 xq: ja, hab ich /o\
18:24:54 xq: ich hab jetzt mal eckigen abschluss gemacht
18:25:05 joeydee: Ich kann keine Gedanken lesen ;)
18:25:09 xq: jo, ich weiß
18:25:20 xq: https://mq32.de/public/15668f50fc2a5fe18fa86e260983bd337e1b7ecf.png
18:25:37 xq: das sieht halt einfach schon 100 mal besser als als das pixelgekröse vorher
18:26:35 joeydee: Bis dahin kannste auch erstmal Kreise auf die Vertices rendern.
18:27:05 xq: jop
19:10:10 Hannes joined the channel
19:10:24 Hannes: ahoi
19:11:08 xq: huhu
19:12:17 Schrompf: ahuhoi
19:15:07 Hannes: ich würde gerne im namespace GL den funktionspointer wglCreateContextAttribsARBProc wglCreateContextAttribsARB; haben. wie mache ich es, dass der linker keinen mehrfachdefinitions fehler schmeißt?
19:15:30 Hannes: ich benutze c++
19:15:32 xq: Hannes: im header als "extern" markieren
19:15:46 xq: in einem cpp-file dann wglCreateContextAttribsARBProc GL::wglCreateContextAttribsARB; deklarieren
19:19:00 Hannes: hm, jetzt gibt es ein nicht aufgelöstes externes symbol als meldung
19:19:30 xq: hast du das cpp file denn auch gelinked?
19:20:36 Hannes: passiert doch automatisch in visual studio c++
19:21:45 Hannes: ich versteh das nicht
19:22:09 Hannes: ich weiß wieder warum ich c# genommen habe
19:22:21 Hannes: für anderen kram
19:23:11 xq: Hannes: wie sieht denn die deklaration aus?
19:23:14 Schrompf: "zig", sacht er
19:23:16 xq: hast du da auch brav GL:: dran? ;)
19:23:18 xq: Schrompf: psst!
19:23:44 Schrompf: hannes, du musst in nem header das ding extern sülz palaver; deklarieren und in nem .cpp das dann mit sülz palaver = nullptr; definieren
19:26:53 Hannes: ich verlink mal pastebins
19:27:22 Hannes: der header: https://pastebin.com/hY4GjqPy
19:27:40 xq: ich empfehle https://bpaste.net, da kannst du auch mehr als eine datei pasten :)
19:27:57 Hannes: das c++ file: https://pastebin.com/Tsf5TyMG
19:28:16 xq: ich würde dir empfehlen, in den C++-Files keine namespace Name {} blöcke zu nehmen
19:28:51 Hannes: immer ausschreiben dann?
19:28:56 xq: jop
19:29:01 xq: so kannst du nen tippfehler nicht finden
19:29:07 xq: und das ergebnis ist der fehler, den du grade hast
19:29:18 xq: GL::wglChoosePixelFormatARBProc wglChoosePixelFormatARB = nullptr;
19:29:21 xq: das ist aber auch falsch
19:29:33 xq: damit schiebst du den *typ* in den namespace GL
19:29:37 xq: nicht aber deine variable ;)
19:29:44 xq: wglChoosePixelFormatARBProc GL::wglChoosePixelFormatARB = nullptr;
19:30:14 Hannes: ich teste mal
19:30:40 Hannes: es funktioniert
19:30:49 Hannes: danke
19:33:01 xq: you're welcome
19:33:23 Hannes: ich hab nen pinken bildschirm
19:35:08 xq: hat hier mal jemand was mit raylib gemacht?
19:35:29 Hannes: ich nicht
19:41:54 Schrompf: nö, ich auch nicht
19:45:45 Hannes: was ist die aktuelle opengl version?
19:46:01 Hannes: mein intel hd unterstützt 4.3
19:46:20 Hannes: ne, 4.6
19:46:28 Hannes: was auch immer die features sind
19:47:21 xq: 4.6
19:47:34 xq: 4.6 hat eigentlich nur "1" relevantes feature: SpirV support
19:47:49 xq: 4.5 ist relativ nice, weil GL_ARB_direct_state_access jetzt "core" ist
19:48:12 xq: ab 4.0 hast du tesselation shader
19:48:24 xq: wenn du die nicht brauchst, würde ich auf "3.3+GL_ARB_direct_state_access" setzen
19:48:32 xq: das ist mein bevorzugtes API-Level
19:48:48 xq: schön großer support für *viel* hardware, aber auch kein großer schmerz, weil viel bessere API durch die extension
19:49:00 xq: die extension ist auch auf allen platformen verfügbar, die GL 3.3 können
20:32:20 Hannes: ich lese noch ein wenig und geh dann schlafen
20:32:25 Hannes: bis einander mal
20:32:30 Hannes: gn8