4 ms·
Author here. I haven't updated this project in a few years. I burned out on it almost immediately. I wrote a little retrospective for it on here before, the las
by Jasper_ 6y ago
Author here. I haven't updated this project in a few years. I burned out on it almost immediately. I wrote a little retrospective for it on here before, the last time it was posted: https://news.ycombinator.com/item?id=21041340 https://news.ycombinator.com/item?id=21041340
In the days since, I've joined the games industry, fell in love with it there, and am working a bit more on more video game-focused content:
https://noclip.website https://noclip.website
https://www.youtube.com/watch?v=mnxs6CR6Zrk https://www.youtube.com/watch?v=mnxs6CR6Zrk
https://www.youtube.com/watch?v=8rCRsOLiO7k https://www.youtube.com/watch?v=8rCRsOLiO7k
If anybody has any questions about game graphics, Linux graphics, or X11, feel free to ask.
- pandatigox 6y agoAmazing work! I can understand how you can burn out on it though. The explanations are very friendly and easy to follow, so don't be deterred if you want to create more EXPLANATION content!
- Jasper_ 6y agoI have no desire to continue the Explanations series. The videos are where I'm spending my focus now.
- rpmuller 6y agoThank you for putting this together. This answered many of the questions I've had about X for multiple decades.
- exikyut 6y agoI just checked Xplain out and wow, it's a bit expanded from how I remember it from a few years ago, I'm definitely going to be fine-tooth-combing through it at some point, particularly the section on regions which looks like it'll help me crack the overlapping-window problem. The rasterization section also looks like it'll be fun to "??!?" through, thanks for making that! (Compositing was also interesting to look through; I always thought it was extremely curious how no X11 windowmanagers ever did hybrid compositing, where they only composited minimized windows into thumbnails but left actual open windows alone without inducing ≈1 frame of extra latency. I'm very curious if Wayland can avoid that, but that's just idle curiosity at this point.) NB. noclip.website is throwing "program not valid" from `this.gl.useProgram(e.gl_program)` (line 100,924 :D) with a HD Graphics 3000 on oldish i5-3360M (HP 8470p). Chances are it needs a beefier GPU.
- Crespyl 6y agoRegarding "hybrid" compositors, I believe there used to be a few that had an "un-redirect fullscreen windows" feature that essentially did what you're suggesting. I think there was some sort of difficulty with doing this for regular/non-fullscreen windows and still having a consistent/smooth experience with the rest of the features you'd want out of a compositor. These days, at least in KWin land, there's just an "allow applications to block compositing" feature that automatically disables compositing (globally) when it makes sense. I'm not sure exactly what rules trigger it (simply putting, say, FireFox, into fullscreen doesn't do it, but Dota 2 does), but it seems to work pretty well.
- Jasper_ 6y agoSDL2 sets this on windows by default, which is likely what's doing it: https://specifications.freedesktop.org/wm-spec/wm-spec-latest.html#idm46035372472224 https://specifications.freedesktop.org/wm-spec/wm-spec-lates... Compositing is required for any sort of antialiasing, especially including window borders, so it's difficult to turn off without having a lot of artifacts. And it also solves vsync which a lot of raw X11 applications can't possibly render correctly with.
- badsectoracula 6y agoI implemented fullscreen OpenGL in my 3D engine a few years ago and this was kind of an interesting part. It was one of the hardest to get right, especially if you want to avoid dictating sort of WM your users will have to use (which IMO is one of X11 strengths over pretty much any other desktop GUI). Some window managers treat any window that covers the entire screen as being fine to bypass composition. Other window managers need hints - which will be ignored by some other window managers. And a few compositors simply seem to ignore any hint or window state, but they will disable composition for fullscreen windows that also bypass window management (which in general is kind of a "nuclear option" for fullscreen modes since it also bypasses other window manager functionality like alt-tab, etc). Also as a cherry on top, i had a window manager which refused to treat the window as a fullscreen window (added borders, etc) unless i set up things in a very specific order (which i found out via trial and error because normally it shouldn't be an issue - and wasn't in every other window manager i tried). (that last part was kinda interesting because i downloaded every window manager i could find on Debian and after i tested my code and debugged it with everything i could get my hands on, i sent it to a friend of mine to try it out and he immediately told me that in his computer he got borders :-P) Should be noted that neither SDL1 nor SDL2 (which are pretty much recommended by people who haven't bothered to create their own engines as "obvious" solutions to not have to bother with OS-specific stuff) handled all the above (SDL1 always bypasses the window manager, which in general works but disables alt-tabbing and other WM functionality whereas SDL2 assumes all window managers support the fullscreen hint, which is certainly not the case - especially with more minimalistic window managers - while compositor support is hit and miss).
- simlevesque 6y agoI had never heard of noclip.website... our office stopped for a couple minutes.
- dang 6y agoWhat year do you suggest we put in the title above? https://news.ycombinator.com/item?id=21039848 https://news.ycombinator.com/item?id=21039848 said 2017 but clearly the project goes back earlier.
- voltagex_ 6y agoOT: Noclip is amazing, thank you. It's sorely needed in an industry that's (mostly unintentionally) very good at erasing its history.