Jump to content
The Dark Mod Forums


Active Developer
  • Content Count

  • Joined

  • Last visited

  • Days Won


Everything posted by OrbWeaver

  1. I've merged your latest changes into a maintenance branch, but there's now a reproducible crash which occurs immediately when I enter lighting preview mode (even in an empty map). I can't make much sense of the stack trace, it seems to be crashing when trying to update the window title, but down at the bottom it looks like shutdownModules() has been called for some reason. I haven't done a Git bisect to establish exactly which commit introduced the crash, but it goes away if I switch back to my unmerged master branch so it has definitely been introduced recently (and there weren't any mer
  2. God damn macros. I had to workaround a similar problem with the Xlib header (which, annoyingly, seems to get included by wxWidgets into almost our entire codebase, even though wxWidgets is supposed to abstract away the lower-level functionality). Apparently the self-centered halfwits who wrote Xlib.h decided it was perfectly fine to spam the global namespace with un-prefixed macros like Bool, Success, Status etc, because obviously nobody else would ever be likely to use such terms in their own code.
  3. That was very straightforward. As expected, the Ubuntu package worked fine and updating the CMake was trivial, since we can just use pkg-config to locate the headers. As of 131139539c3a799540 the submodule is gone (i.e. I deleted the .gitmodules, but you may still need to manually delete the external/eigen directory if it's checked out at your end).
  4. No, we really don't want anything outside of the top-level Eigen directory, where the headers are. But you are right, the repo contains a lot of other crud: an entire "unsupported" directory with another copy of the whole header tree, 2 megabytes of documents, tests, demos, a directory full of Fortran files... To be honest, the main reason I went for a submodule was for simplicity, and the fact that I wouldn't be imposing extra work on you to update the dependencies package on Windows. But if you're happy to do that and would rather avoid the cruft involved in importing a whole external r
  5. Hopefully now fixed in b68926f4dd9344c61a1c3505f2bbf6288db2074b
  6. That's odd, it shouldn't be that big. I just did a clean clone of Eigen into a temporary directory and it takes me just under 17 seconds, with a total of 101.68 MB downloaded (which I agree is a little heavy for some linear algebra headers). But I guess this is heavily affected by internet speed and disk performance. However, if I do a "shallow clone" with "git clone --depth 1" it makes a huge difference: 2.4 seconds to download and only 3.14 MB. I wonder if we can make the submodule shallow by default.
  7. Be warned, there is another disappearing objects bug I discovered today, according to git bisect this was introduced in e71c0c156d9bd1c5862bd709ed47a18df2d710c8 (which is odd because this was supposed to improve safety, but I guess I made some mistake in the logic). If I can't figure out what's wrong I'll just revert this and the commit it was intended to fix (returning Matrix::getIdentity() by value instead of reference).
  8. It sounds like you need the additive lit window texture to give the appearance of a glowing window, and an upward-pointing light to provide the actual light which shines into the room (including its shadows). Remember that this is a game engine not a ray-tracer, and certain physical-based effects that would happen in the real world need to be simulated by hand. Translucent materials in this engine just allow you to see through them, they do not provide full light transmission, caustics or any other effects that a raytracer might simulate.
  9. I guess I'm going against the grain here but I think the image @kingsal posted looks great. It seems that the effect is already aware of the normals — it definitely looks like it is outlining the object, giving less highlight to faces which point directly towards the camera while increasing the effect on edges which face away. Perhaps if people feel it is too strong, the "effect gradient" could be adjusted so that there was even less highlighting in the middle of the object?
  10. Ambient lights only lighting surfaces pointing towards the light is a bug that was fixed in Git commit 07a10bbff7569fcc1a on March the 8th, so it should hopefully be in the next release. It's not possible as far as I know, and this would be a hack anyway. I'd rather have a user-controllable brightness/gamma level for the editor preview which users could set according to their requirements. Actually you can hack it now by increasing the lightScale value in the .game file. However since the .game file is shipped with DR rather than storing user settings, it will likely get reset whe
  11. Isn't that the point, though? FOSS is indeed a niche, typically caricatured as a bunch of basement-dwelling male autists with limited social skills, and even they are not safe from the relentless march of self-serving diversity hustlers, cultural revolution cancel-mobs and the fake female victimhood agenda. Apparently having almost total control over the media, the education system and even the criminal justice system isn't enough for these people. They've already taken over Stack Overflow, infested the Linux kernel community and forced Linus Torvalds to apologise for hurting people's feelings
  12. Or just questioning whether people should be punished for doing any of those things (while not advocating or doing them yourself). It's a full-on "six degrees of separation" thing: not only must you be innocent of wrongthink yourself, but you must also not defend people who are guilty of wrongthink, or defend people who defend people who are guilty of wrongthink, or question whether you should be allowed to defend people who defend people who are guilty of wrongthink, ad infinitum. It seems he also suggested that women should abort pregnancies if the fetus is discovered to have Down's
  13. Just in case anyone is unsure that these people are batshit crazy, this is the text written by RMS that they themselves are claiming is "still transphobic": He's literally telling people not to misgender someone and to use gender-neutral pronouns to avoid inadvertently offending them. But presumably this isn't precise or enthusiastic enough for the True Believer. That's the thing about religious extremists — even if you agree with then 98%, you are still a dangerous heretic who needs to be punished.
  14. Sadly many open source projects and organisations, just like the Silicon Valley corporations, have been captured by the religion of woke and are busy purging anyone who expresses Wrongthink or questions the favoured ideology. They don't need proof or evidence, because it's all about their own feelings and "lived experience", which (just like medieval accusations of witchcraft based on the contents of dreams) is required to be automatically believed. There are more important things than Richard Stallman and the FSF, yes. But outrage mobs using language that could be copied and past
  15. They don't have to, but there does not seem to be a convenient way for us to specify which modules should be checked out by default and which shouldn't. Either you run the command to checkout everything, or you would have to manually specify which ones to checkout (e.g. "git submodule update -i externals/eigen"), which would rapidly become annoying if we ever had more than one submodule. So I agree that it would be preferable to keep the dependency package separate for now.
  16. You're right, it's definitely not needed, and I am aware of your dislike for external dependencies (which is why I'm certainly not suggesting incorporating Eigen or anything else into the main game). However: It's header-only, so we don't pay for anything we don't use at either compile or runtime. I really, really don't like re-inventing wheels (or maintaining badly-reinvented wheels by others). It simplifies the code at our end, since we don't need our own implementation of common functionality. Until a few weeks ago we didn't even have an operator* for matrix multipl
  17. Right, I recall having to set a #define to get it to work as header-only when I was setting up the CMake build. I think the current arrangement is fine, since it is small enough that including it in the main source tree isn't a problem. Yes, that would certainly be an option, although Git isn't particularly suited to maintaining large binary files (checking out could become very heavy since the entire history would be downloaded, and there isn't an efficient way of tracking diffs between binaries). I don't know how large the current windeps archive is, but as a Git repository it would
  18. There is no specific requirement for it to be a submodule — there is a package available on Ubuntu through APT, and the headers could of course be included in the windeps package. But given that it is header-only and never requires any actual library file or changes to compile/link flags, it seemed simpler to me to include it (in)directly in the source much as we do already with the libfmt library, rather than requiring changes to the windeps package. With a submodule it is very easy to update to a new version just by changing the commit hash of the submodule to point to a new tag, whereas oth
  19. I have switched our Matrix4 class to use the Eigen library internally (more specifically, an Eigen::Transform which can represent geometric transformations which decompose to a 4x4 Matrix). The advantages of Eigen are: It's a well-tested and respected linear algebra library, which means we don't need to maintain our own code to perform already-solved problems like matrix multiplication. It can potentially use SIMD instructions (SSE, AVX etc) to improve performance. I haven't yet looked into whether this happens automatically or whether we have to explicitly enable these optimisat
  20. DR calculates and processing bounding boxes internally and they are pretty simple to render, so I don't think it would be all the difficult to allow visualisation of model bounding boxes if enough people felt it would be useful. We'd probably want to check how the game calculates them to make sure we were generating them with the same size (i.e. if there is an internal margin making the AABB slightly larger than the true model bounds).
  21. I'm aware of this issue. Unfortunately the Floating layout is basically broken in Linux because the ESC key never makes it to the window. I poked around a bit but couldn't find an obvious fix. With the next version you can use the wxAUI-based Dockable layout which does not have this problem, and should effectively make obsolete the hacky Floating layout as well as several of the default embedded layouts.
  22. Yes, sorry I was giving the path in the source tree but of course this is different if you're trying to change icons in a full install. I believe /usr/local/share/darkradiant/bitmaps would be the default install path if you have built from source and have not specified a different install location, otherwise in a packaged build it would be /usr/share/darkradiant/bitmaps.
  23. I guess the screenshot proves that the legacy Quake binary can work with a modern OpenGL 4.6 driver, but this in itself does not prove that the driver is doing something special to make Quake work. The whole idea of OpenGL is that it is backwards compatible (except in Core profiles which you don't get by default), which means that a 1998 game designed against OpenGL 1.2 or whatever should continue to work perfectly fine on an OpenGL 4.6 Compatibility profile. All we can see in that screenshot is that OpenGL's generic backwards compatibility is working exactly as it should.
  24. Unfortunately we don't appear to have any control over the shortcut visibility in menus. This is an aspect of how wxWidgets and GTK work, and no functions are exposed to the developer regarding this. Perhaps this is something that will change in a future version of wxWidgets. We can easily change icons, but we don't have any way to detect the colours of the theme, so we would not be able to do this automatically. We could have more than one "icon theme" which users would select, which is something I've seen in other applications like GIMP and Inkscape. You can certainly edit icons yoursel
  25. Compatibility profiles are an aspect of standard OpenGL initialisation. They are not related specifically to AMD or enabling support for particular games. In a Core profile, certain deprecated features (like immediate mode, glBegin/glEnd etc) are removed, whereas in Compatibility profiles they remain available to support legacy applications. The driver is allowed to offer different GL versions for each profile, for example on macOS if you request a Compatibility profile you will never get anything more recent than 2.1. Neither the Core not the Compatibility profile should vary its be
  • Create New...