IRC Logs for #zfx


2021-11-21

09:20:27 IceMichael: moin
09:20:37 IceMichael: uh, clientbuffer scheint doch zu klappen :) gut, dass anna was geschrieben hat
09:26:56 xq: moin
09:49:37 IceMichael: na xq, wieder gebinged bis 6? oder diesmal nur bis 5?
09:49:44 xq: ne
09:49:47 xq: bis 23:50
09:49:53 xq: und dann bis 10:15 durchgepennt <3
10:02:06 IceMichael: traumhaft :D
10:02:23 IceMichael: unsere Schlafeffizienz ist gerade fatal. Wir liegen so 12h im Bett und versuchen dadurch 6-8h Schlaf zu bekommen
10:02:40 IceMichael: (und Serien schauen wir im Wohnzimmer, im Bett nichts dergleichen)
10:03:26 xq: is ja langweilig. serien muss im bett!
10:07:37 IceMichael: ja aber mit kind sn..
10:14:04 xq: jo
10:57:48 xq: IceMichael: ich mach jetzt mal nen raytracer ^^
10:57:54 xq: endlich mal leeway
10:58:52 IceMichael: nice. und leeway?
11:00:31 xq: freizeit für bullshit :D
11:00:37 xq: https://github.com/MasterQ32/zig-opengl/actions/runs/1486676812
11:00:44 xq: hab grade mal wieder nen projekt von mir getuned
11:00:49 xq: nachdem leute mich gefragt haben :)
11:18:15 Magister joined the channel
11:53:43 Magister joined the channel
12:37:15 Magister joined the channel
13:01:03 xq: IceMichael: https://github.com/MasterQ32/weekend-raytracer
13:01:12 xq: https://github.com/MasterQ32/weekend-raytracer/blob/master/src/raytracer.cpp
13:02:20 xq: ist c++17, keine dependencies
13:02:23 xq: spuckt das bild in der readme aus
13:04:14 xq: oh
13:04:19 xq: ich hab ndotl vergessen ^^
14:46:41 IceMichael: was ist pgm fuern Outputformat? Das wird ja dan durch was andres gerendert
14:47:17 IceMichael: also das Programm erzeugt ja das pgm
14:47:29 xq: ja
14:47:31 xq: pgm ist nen bildformat
14:47:42 xq: https://de.wikipedia.org/wiki/Portable_Anymap
14:47:48 xq: es ist halt strunzeinfach :D
14:54:49 IceMichael: ah, main definiert es ja sehr klar
14:55:11 IceMichael: man schickt also aus Kameraperspektive Strahlen in alle moeglichen Richtungen mit jeweils ner Zufallslaenge?
14:55:50 xq: nope, die länge ist fest
14:55:53 IceMichael: war kurz irritiert vom final Variablennamen... darf man keywords als Vars nutzen, wenn sie im Kontext keine Bedeutung haben?
14:55:58 IceMichael: ok, was sind dann dx, dy?
14:56:05 xq: final ist kein c++ keyword
14:56:08 xq: dx,dy ist jitter
14:56:12 xq: das ist multisampling
14:56:19 xq: jeder pixel bekommt 64 zufällige samples
14:56:27 xq: und aus denen wird der average genommen
14:56:30 xq: => anti-aliasing
14:56:41 IceMichael: klar ist final ein C++-keyword? Oder wie definierst du keyword? :D
14:56:51 IceMichael: ah ok
14:57:19 xq: huch
14:57:28 IceMichael: okay, also Strahl aus Kamerarichtung auf jeden Pixel auf der Box
14:57:31 xq: > In addition to keywords, there are identifiers with special meaning, which may be used as names of objects or functions, but have special meaning in certain contexts.
14:57:32 xq: ah
14:57:45 xq: final ist kein keyword, sondern ein special name
14:57:55 IceMichael: special name heisst es? okay, wieder was gelernt
14:58:10 xq: es ist *kein* keyword ^^
14:58:20 xq: es ist nur an manchen stellen zusätzlich erlaubt
14:58:23 xq: IceMichael: ein strahl für jeden pixel
14:58:32 xq: "jeden pixel auf der box" ist schwer zu berechnen
14:58:37 xq: zudem ist das bild dann unvollständig
14:58:43 xq: einfach: jeder einzelne pixel im finalen bild und jut
14:59:05 IceMichael: also auf dem Teil, den man sieht, von der Box, mein ich. Dann ist es doch ne Bijektion, eh?
14:59:17 IceMichael: okay, ja, meinte ich, doof ausgedrueckt, dann passt's
14:59:25 xq: nein, ist keine bijektion
14:59:31 xq: du siehst auch keine box
14:59:36 xq: du siehst 5 unendlich große flächen
14:59:46 IceMichael: ah und Strahlablenkung ueber Rekursion? nice
15:00:01 IceMichael: aber du hast doch Strahl : sichtbarem Pixel 1:1 oder nicht?
15:00:11 xq: strahl : sichtbarer pixel = 64
15:00:47 IceMichael: ein Strahl versorgt 64 Pixel? ahso
15:00:51 xq: nein
15:01:00 xq: wir haben 64 strahlen pro pixel
15:01:05 IceMichael: ok, weil du oben schriebst "ein strahl für jeden pixel"
15:01:11 xq: ja, in der grundidee
15:01:14 xq: dann wirds halt kantig
15:01:23 IceMichael: in der Grundidee also ne Bijektion
15:01:25 xq: 64 ungefähr gleich verteilte strahlen pro pixel => wenige kanten
15:01:33 IceMichael: in deiner Impl fuer Niceheit 64 mit Jitter, das ist ja klar
15:02:04 xq: aber was meinst du hier konkret mit bijektion?
15:02:10 xq: pro pixel wird mind. ein strahl geschossen
15:02:22 xq: und wenn der ne reflektive fläche trifft, gehts halt mit mehr strahlen weiter
15:02:22 IceMichael: in der Grundidee kriegt ein Pixel nen Strahl und ein Strahl versorgt einen Pixel
15:02:37 IceMichael: aber egal, ich hab's schon laengst verstanden
15:02:42 IceMichael: und nice ist's :) echt einfacher als gedacht
15:02:58 xq: es ist *wirklich* einfach :D
15:03:23 xq: 200 von 500 zeilen sind quasi "imaging + linalg library"
15:03:32 IceMichael: ich schau spaeter vll noch mehr in die Details, aber echt cool, dass die Grundidee so gut zu verstehen ist
15:03:55 IceMichael: der shader, den joeydee gepostet hat, war aber dennoch sehr kurz. Box-Intersections und die Boxobjekte selbst haette man ja eigentlich schon haben muessen?
15:04:10 xq: nein
15:04:18 IceMichael: oder die Boxen wurden auf eine Weise generiert, dass man das mit intersection irgendwie implizieren konnte
15:04:18 xq: der shader von joeydee macht sehr viele wilde ding
15:04:21 xq: der hat auch keine "boxen"
15:04:29 IceMichael: man sieht optisch aber welche
15:04:32 xq: ja
15:04:36 xq: aber es sind mathematisch keine ^^
15:04:43 xq: das ist irgendwelche weirde fraktalscheiße
15:05:03 xq: und wahrscheinlich eher nen raymarcher
15:05:08 xq: der ist nämlich kleiner im source
15:05:31 IceMichael: ja, aber wie man dahin kommen koennte waere ja: 1) generelle Boxgleichungen aufstellen 2) dazu die Intersection-Mathematik bauen inkl. Reflektionen 3) Spezialfaelle in 1 suchen, fuer welche 2 zusammen mit 1 einfache closed-form-Formeln ergibt 4) done
15:05:37 IceMichael: aber ich hab den Code null betrachtet, nur die Laenge
15:05:48 IceMichael: hm ok, kenne obv keine weitere Theorie dazu, wsl lief es ganz anders
15:05:53 xq: "intersection mathe" und "reflektion" sind zwei sehr unabhängige dinge :D
15:06:16 IceMichael: hm auch wieder wahr
15:06:32 xq: reflektion ist auch nur I - 2 * dot(N,I) * N
15:06:47 IceMichael: aber bei dieser einen Seite von diesem Shaderexperten, die du mal gepostet hattest, wurden ja viele "Tricks" und "Abkuerzungen" auch ueber gescheite Herleitungen erreicht
15:06:56 xq: ja
15:06:56 IceMichael: daher haette ich so was hier jetzt auch vermutet
15:07:11 IceMichael: schwer war das ja alles nicht, jedenfalls retrospektiv
15:07:15 xq: aber das ding ist halt auch "einfach mehr rechenleistung auf das problem werfen"
15:07:28 IceMichael: muss mal los mit Kind :) danke fuer den Code, klaert echt viele Fragen! schau ich spaeter im Detail nochmal mehr an
15:07:34 xq: mach das
15:07:36 xq: auch selber compilieren!
15:10:36 IceMichael: wozu eigentlich? ich glaub dir das ja alles und kenn auch den output
15:10:43 xq: hihi
15:10:50 xq: (gucken obs geht)
15:11:02 xq: auf jeden fall:
15:11:13 xq: ich will in dem repo den gleichen raytracer auch mal in C, Zig, Rust und Go implementieren
15:11:16 xq: und andere Sprachen
15:11:24 xq: einfach, um da mal nen direkten vergleich zu haben
15:11:39 xq: quasi algorithmisch identisch, aber jeweils idiomatisch zur sprache
15:11:44 xq: aber auch afk
16:31:59 IceMichael: xq: fuer Performance-Vergleich oder wozu genau?
16:50:49 IceMichael: xq, compiled mit clang++, aber wie lange braucht der denn?
16:52:09 IceMichael: oh, hatte O3 vergessen, compile vom terminal so wenig
16:52:13 IceMichael: na ja, output klappt jdf
16:58:37 IceMichael: pbm/pgm/ppm sind ja meganice
16:58:59 IceMichael: hab mich letztens eh gefragt, wie ich ad hoc mal schnell ein Bild clientseitg generieren lassen kann, was dann angezeigt wird... zwar nicht effizient, aber sehr einfach
17:49:13 Magister joined the channel
18:46:51 joeydee joined the channel
18:46:56 joeydee: moin