|
Post by 3t0 on Nov 9, 2022 9:45:19 GMT -5
My GOD, I killed yesterday late afternoon and evening after work replaying DOOM I and DOOM II, ketmar what have you done to me, you hellspawn fiend ! Hardware: : lspci | ag vga | cut -d: -f3 | ag nv NVIDIA Corporation GK106GLM [Quadro K2100M] (rev a1) : lscpu | ag 'model name' | cut -d: -f2 | sed 's|^ ||g' Intel(R) Core(TM) i7-4810MQ CPU @ 2.80GHz
It looks fabulous no performance issues whatsover during normal play, although voxel loader on ultra voxel optimizations is pretty slow.
|
|
|
Post by ketmar on Nov 9, 2022 10:09:47 GMT -5
you can say "r_preload_alias_models 0" in the console, and restart the engine. it will load models on demand, which is a one-time hiccup instead of startup pause.
there will be performance problems in light-heavy environments, but i'm working on it. added option to use sprites for shadow casting; most of the time it looks acceptable, and can boost FPS by the factor of two sometimes. also, lightmapped renderer is MUCH faster, almost always silk smooth (of course, no object shadows there).
|
|
|
Post by 3t0 on Nov 9, 2022 16:23:52 GMT -5
With classic Doom maps, where there are not many "handcrafted" lightning schemes, I have yet to hit any slowdowns on configuration listed, so I didn't even bother switch to lightmapped - but will do. This is insane.
For now lengthier loads at the boot seems easier to swallow (for me at least, after all there is rebuild/recalc wait, each 1st level load too), but will try the "deffered" loading too. I was just surprised that voxel optimizer really works hard on k8v boot now. At first I thought game hanged out, but then I enabled diagnostic messages and seeing all that scrolling by proves that machine is indeed working quite hard.
One interesting thing, completely unrelated to the game: I now noticed that my item pickup ratio is not 100% anymore more times then I would admit/like: seems like my brain is not so into picking up all the pickable items once they become fully 3d - very weird.
It also became much harder do discern small items like shells and clips. I bet it is also orientation effect in my case (because normal item sprites are all directions, and mappers didn't bother orienting them (large medkits, stimpacks), I don't spot them the same way once they are 3d). Medkits at least have fullbright parts, and dropped clips rotate and hover up and down, but I still don't spot them same way. Fascinating.
Regarding the monster voxel volumes: your tuning (no smooth rotations, steppy animations, (but seems it seems you kept) interpolated "moves") makes it really hard for my brain discern them as voxels - they almost always feel as sprites until the don't (often only when they get very close, or die). Due to "framerate issues" in GZ, the effect sometimes breaks and I realize they are 3D things sooner and most often: "ah! of course those are, those are voxels!" - but here it took me 3/4 of doom 1 to spot that spectre is actually still a sprite (which is good I think - it looks much better that way and our brains are still confused by the voxelization that they don't spot it anyway).
After finishing D1 fully like this, I am now pretty convinced this is the best way to play the original Doom! Who would have thought voxels are the secret magic thing needed to keep the game very doomy yet make it fully 3D? Insane idea, possible to invent only by Ken Silverman for Blood.
Now after looking deeper at GZ family: does this mean that besides Deplhi Doom your k8v's implementation, is only one that is in c/c++ and is not encumbered by "communist" non-friendly "Ken License" (as I call the Ken's "KENLIC" abomination - I guess he meant well, but somehow fucked it).
|
|
|
Post by ketmar on Nov 10, 2022 2:49:23 GMT -5
With classic Doom maps, where there are not many "handcrafted" lightning schemes, I have yet to hit any slowdowns on configuration listed, so I didn't even bother switch to lightmapped - but will do. This is insane. with recent commits you can turn on "sprite shadows" for monsters and corpses, it will be MUCH faster this way. currently it is using the original sprites, but i'm planning to implement automatic building of "shadow sprites" from models. also, i'll drop you an updated pack later, it is slightly better optimised with manual "spriteshadow" flags. ;-) (update your repo clone often, it never hurts! ;-)For now lengthier loads at the boot seems easier to swallow (for me at least, after all there is rebuild/recalc wait, each 1st level load too), but will try the "deffered" loading too. I was just surprised that voxel optimizer really works hard on k8v boot now. At first I thought game hanged out, but then I enabled diagnostic messages and seeing all that scrolling by proves that machine is indeed working quite hard. not that is has much work to do, as it prefers voxels with many big flat areas. but it doesn't hurt also. btw, it should be very slow only on the first start: the engine will notice that conversion takes a lot of time, and will automatically turn on the cache. still, loading almost 400 models (82 MB of *compressed* data) is quite slow anyway. but after initial conversion, my engine spends only about 2-3 seconds to load everything. Medkits at least have fullbright parts yes, that's why i took them from Reikall pack — exactly to have fullbright crosses. ;-) and dropped clips rotate and hover up and down, but I still don't spot them same way. Fascinating. yeah. that may be "too modern" for some people, but bobbing and rotating really helps to notice dropped ammo (and weapons). Regarding the monster voxel volumes: your tuning (no smooth rotations, steppy animations, (but seems it seems you kept) interpolated "moves") makes it really hard for my brain discern them as voxels - they almost always feel as sprites until the don't (often only when they get very close, or die). yeah, that was exactly the effect i wanted to achieve! tbh, at the beginning i was often typing "freeze" and walking around to see if it is really a model, because i was afraid that the engine somehow failed to render models, and used sprites instead. ;-) Cheello is genius, i'm absolutely sure that he should get the same praise and fame as id team! there is a major problem with voxel models and dynamic lighting, though: if you'll look at the monster lit by dynamic light in a dark environment, you'll immediately notice the cubes. this is because each cube face is independent of others, and has its own normal. i'm not sure if it is possible to solve yet. but it's not a huge problem anyway (at least i think so). but here it took me 3/4 of doom 1 to spot that spectre is actually still a sprite (which is good I think - it looks much better that way and our brains are still confused by the voxelization that they don't spot it anyway). this actually due to the bug in my converter. ;-) the converter doesn't know about actor inheritance, and as Spectre is inherited from Demon and doesn't have explicit states, it wasn't detected as something that need to be processed. ;-) but this is a good bug, because the engine simply doesn't know how to render models with "shadow effect". Now after looking deeper at GZ family: does this mean that besides Deplhi Doom your k8v's implementation, is only one that is in c/c++ and is not encumbered by "communist" non-friendly "Ken License" (as I call the Ken's "KENLIC" abomination - I guess he meant well, but somehow fucked it). at least EDGE Classic is using my voxelib to convert voxels too. also, any engine with GPU renderer doesn't need Ken code at all, because Ken only wrote software renderer. and i believe that GZ replaced Ken code long time ago anyway, because otherwise they won't be able to switch to GPL.
|
|
tdrr
Doomer
Posts: 66
|
Post by tdrr on Nov 11, 2022 21:07:23 GMT -5
and i believe that GZ replaced Ken code long time ago anyway, because otherwise they won't be able to switch to GPL. Actually, nope! Ken simply gave permission to relicense those bits under GPLv3. I know, I know, it's so hard to believe Ken would ever do that, it didn't even cross my mind that would be a possibility
|
|
|
Post by ketmar on Nov 12, 2022 6:46:56 GMT -5
some useless numbers on voxel convertion: spidp.kvx (Mastermind explosion, highly irregular shape). contains 134311 individual voxels.
vertical strip optimisation: 229682 quads, 459364 tris (this is what, i believe, GZDoom is using).
longest x/y strip optimisation: 165449 quads, 330898 tris.
quad merger ("ultra") optimisation: 135957 quads, 271914 tris.
voxelib was definitely worth the efforts! ;-)
|
|
|
Post by Steinkrauz on Nov 12, 2022 15:31:29 GMT -5
Are you playing at work?
|
|
|
Post by 3t0 on Nov 15, 2022 9:44:59 GMT -5
Buhahahahahaha ... NO !? If I was mentally weaker I would be offended now . Just joking. Anyway I am now really curious about thought process that lead you to draw that conclusion: because it's "Quadro"? or because it's mobile "M"? Actually, nope! Ken simply gave permission to relicense those bits under GPLv3. I know, I know, it's so hard to believe Ken would ever do that, it didn't even cross my mind that would be a possibility I think I heard something similar. Although I hold Ken in high regard, he is not exactly as OSS friendly person as Carmack was (although he really went and did polymost after OSSing). at least EDGE Classic is using my voxelib to convert voxels too. also, any engine with GPU renderer doesn't need Ken code at all, because Ken only wrote software renderer. and i believe that GZ replaced Ken code long time ago anyway, because otherwise they won't be able to switch to GPL. ... voxelib was definitely worth the efforts! ;-) Is the magic in this chunk: source/render/modelparse/voxelib.cpp? This seems pretty well self-contained... Would it be possible to use it other projects?
|
|
|
Post by ketmar on Nov 15, 2022 21:42:58 GMT -5
Is the magic in this chunk: source/render/modelparse/voxelib.cpp? This seems pretty well self-contained... Would it be possible to use it other projects? yes, that's it. and it is totally self-contained, it doesn't even use STL. it was specifically written so any project can simply copy those two voxelib files, and use them as is. i even tried to support m$vc (i'm not sure if it works, but i did my best). i tried to promote it on DW, but nobody was interested (except EDGE Classic devs ;-). so be it. i also recently added support for MagicaVoxel format (no submodels or layers yet, tho). maybe i'll later add Goxel support too.
|
|
|
Post by Steinkrauz on Nov 16, 2022 13:24:34 GMT -5
This. Quadros are pricey but are good just with heavy CAD like NX or Catia so I ever saw them only in enterprise workstations.
|
|
|
Post by ketmar on Nov 16, 2022 17:31:46 GMT -5
dammit. so there is NO good FOSS voxel editor for GNU/Linux. the something that at least resembles the real software is Goxel, but oh boy, it's so fuckin' broken! i wanted to write a huge rant about it, but meh… just to give you some feeling of it: file i/o code NEVER checks for file errors. it is always sure that `fopen()` succeeds, and further reads/writes too. 8 fuckin' years of development. of course, i forked it, but i'm not sure if i'll have enough time and resources to fix it.
|
|
|
Post by 3t0 on Nov 17, 2022 20:57:08 GMT -5
This. Quadros are pricey but are good just with heavy CAD like NX or Catia so I ever saw them only in enterprise workstations. Heh, as with everything with me, there is a little story behind it . When I was going for subcontractor 9 years ago, I took all money I had on hand and then some and bought a single machine: this one. And well this was the GPU that came in it. So that is TLDR, read further only for amusement . As I was buying this to run Linux, and at the time the situation was what it was (post vista/7 scare, it was not clear windows is gonna die/zombify yet, nVidia "tackling" mobility with optimus, their way), I ended up with this nVidia POS. I wanted to have some bearable OpenGL capability, so I took it (it's soldered on mobo and you can't do much with that), but my main aim was my CPU, memory extensibility and virtualization capability, so I could emulate clients' (subcontractor, remember?) environments. The choice turned out great: my 8 year notebook even now beats shit out of some of today's low spec and medium tier desktops(!), lol. The notebook also has integrated Intel GPU and that one is wondrous piece of tech, battery and Linux kernel driver wise etc. I hear Intels are quite shitty but it turned out this one is enough for most daily OpenGL (not games mind you). Did I say it is good for battery too? On powersave CPU governor, meticulous "powertopping", and with new battery I could pull 10-11 hours easily, 6-7 these days. For example first two years I didn't even bother to (got to) run that nVidia. This is "Optimus" tech, and that thing is one piece of shit layered on top of other shit so it's all "beautiful" pool of bullshit. I tried jokes, like "bumblebee" and other crap Linux users came up with, but it was all a tragedy. I was moving a lot to clients, on-prem, so Intel was good for me at that time, both for battery and good enough on the road/traveling (buses and trains). Eventually 3-4 years-in, nVidia finally pulled it's head out it's ass somewhat (but just so that only one nostril peaks out ), that with recentlish Xorg, you can actually run natively on nVidia. Just half a year after that my card was declared not cool enough, because of AI and because most gamer kids are on crack, so I am now running "legacy" driver. Every three to six months, there is some major nVidia only fuckup, but so far, knocking on wood, I got around. I don't want to go deeply into Optimus (and shit it is), but in my case running Xorg natively on nVidia neuters Intel GPU and vice versa. I hear situation is even more glorious in mobile space (smartphones and tablets). But being the freak I am, I have script, service supervision and detection shell glue written, by which notebook "knows" whether I am in "travel mode" or "station mode", as I call them, and starts Xorg in respective configuration accordingly. With nVidia on maxed out for perfomance when on full AC power and with 3 monitors. Otherwise it's Intel for battery saving and traveling (which I don't do that much anymore). I "game" (all I play is retro games (mostly form GOG), doom and quake basically) on AC power only and that why Quadro "leaks" into my reports . My notebook is not made anymore but it's roughly equivalent Lenovo Thinkpad P series, just from a "decade" ago. Look them up if you wish, they (Ps) still come with Quadros I bet. Recently I had anxiety attack and was calculating how much would replacing this machine cost me and ended up with quote for Thinkpad P from Lenovo guy, weighting somewhere at 7 grands currently - and it would be same nVidia shit all over again. It almost bought me to tears, we are definitely fucked as humanity. I don't have that much money for a new computer. Even if I had, I refuse to pay so much for shitty nVidia, so I am hoping for some AMD based Thinkpad P in the same ballpark will appear in years, but they, for some fucking reason are not making them. Looking at developments in Macs (I worked for several macfags in the past - it used to be good to be on Mac, but it is not anymore, they themselves were crying - but macfags will take it anyway, because they are just bunch of whores and can sit comfortably on any dick of any size) in last few years and seeing plebsbookmakers adopting the same approaches (soldered-on memory and soldered-on SSDs), I think we are very quickly heading into peak-shit everything territory. Logic is obvious for anybody who works in the business (especially on other side, like I am), but it's all about making the machines as cheap possible with artificially capped memories and storage, so all your data can be comfortably exfiltrated to the cloud. Your machine is just glorified terminal of the past eras and cloud is the "new mainframe". You are too stupid to manage your storage or anything really. In fact you are too stupid to manage yourself even, period, so we will mange you for you instead . Especially notion of personal freedom is very dangerous thing these days and will be even more, reserved only to privileged (like guess I am, at this point, it seems). Portable workstation class notebook, with enough memory and storage to do useful things is very freedomy thing to have, so you either pay an extra for it or go with sub-par cutting board tablets pretending to be notebooks. Hope you enjoyed . yes, that's it. and it is totally self-contained, it doesn't even use STL. it was specifically written so any project can simply copy those two voxelib files, and use them as is. i even tried to support m$vc (i'm not sure if it works, but i did my best). i tried to promote it on DW, but nobody was interested (except EDGE Classic devs ;-). so be it. i also recently added support for MagicaVoxel format (no submodels or layers yet, tho). maybe i'll later add Goxel support too. Nom, nom, "it doesn't even use STL", sounds exquisite! With your work not being used - you know - you are Dark Ketmar - that means you are basically Dark Templar . Which means you are true illuminatus knight warrior monk . Kinda like me and few other weirdos I know. Touching your stuff is to many like touching obelisk in Space Odyssey 2001 - might change you, give you weird ideas, one might even end up with straight non-PC demonic possession . That would awful. After all k8vavoom is straight programming black magic . I understand "them".
|
|
|
Post by ketmar on Nov 18, 2022 1:28:24 GMT -5
Nom, nom, "it doesn't even use STL", sounds exquisite! :) yeah, i hate STL with a passion. that infernal abomination should be banished back into hell, where it belongs. Vavoom (and k8vavoom) doesn't use STL too. After all k8vavoom is straight programming black magic :). oh, i'm only a pile of dust at the feet of Elder Ones, like DJB and Fabrice Bellard…
|
|
|
Post by Steinkrauz on Nov 18, 2022 13:51:10 GMT -5
there is a little story behind it Thank you for sharing it! The story is cool on the liquid nitrogen level!
|
|
|
Post by ketmar on Nov 28, 2022 7:12:45 GMT -5
hm. after trying to fix and rework Goxel, i have a strong feeling that it's time to throw it away, and start from the blank page. i dislike almost everything in Goxel architecture (not that it is awful as fuck, just not my style), and i will eventually rewrite everything anyway. so why bother fixing it? i'm almost sure that i can do it better and faster if i'll implement my own design (and i'll have nice libraries for voxel mesh manipulation, rendering, and such as a byproduct). (sighs) but i still believe that someday i'll find some app that i will not want to immediately rewrite…
|
|
|
Post by 3t0 on Dec 3, 2022 16:51:35 GMT -5
Hmmm - so I finished Sigil finally (I bought it months ago). On "Hurt me plenty" only, as I heard from net/youtube it's insane on UV. Still hard for me. Pretty glad I made it to finish. Using : sha256sum cheello_voxels_prealpha.pk3 a6f471db1b1dd3d5869e2b1e185ac92dfe990c4f208388996af3dbac8bbab844 cheello_voxels_prealpha.pk3
it was quite an experience. Few things from that: - Very cosmetic: When using voxels woudln't it be possible to ensure "whole cube" gets lit? Currently each face is lit, which makes voxels obvious under certain situations and lightning conditions, especially when face on top of the cubes is dark.
- Can we get the toggle to not have fullbright blood (circular) particles? I still prefer fullbright bullet puff particles tho.
- To me DARKDOOM render mode (baneded or not) seems too dark, I had to add ambient light to 128 at least to be able to discern anything in Romero's dark rooms - would it be possible to add LIGHTDOOM mode that would be roughly ambient light=~128 lighter (or more) by default?
|
|
|
Post by ketmar on Dec 3, 2022 17:15:28 GMT -5
Very cosmetic: When using voxels woudln't it be possible to ensure "whole cube" gets lit? sadly, nope. there is no such thing as "voxel model" for the engine, and there is no proper way to get a suitable normal for that. it will require a whole new renderer specifically for voxels to do it. Can we get the toggle to not have fullbright blood (circular) particles? sadly, nope again: particles are not affected by lighting at all, it is too expensive to calculate lighting info for them (there can be a lot of particles, and the engine doesn't know which ones are from the blood). it will require two different particle systems. To me DARKDOOM render mode (baneded or not) seems too dark, I had to add ambient light to 128 at least to be able to discern anything in Romero's dark rooms - would it be possible to add LIGHTDOOM mode that would be roughly ambient light=~128 lighter (or more) by default? original Doom lighting calculation (that's what "darkdoom" really is; or at least tries to be) doesn't simulate any proper lighting model at all. light falloff is especially weird. most hardware renderers (including the original Vavoom) had lighting completely wrong, and i bet Romero wasn't using vanilla for testing. ;-) that's how it looks in vanilla. you can adjust overall brighness to make it a little better, but sadly, there is no way to make the lighting "universally right". that's why i put the option there. this prolly can be solved by creating "presets" mechanics (it is in TODO), but until then — sorry, you have to manually adjust the things for each mapset. i.e. it is all doable, but i don't have any resources to do it now, sorry. actually, k8vavoom project will prolly be put on hold (indifinitely), because i simply cannot develop it further due to constant power outages. 4 hours of power is absolutely not enough to code anything more complex than "hello, dear world" for me, and i expect that time to shrink even more in the future. alas.
|
|
Lobo
Doomer
Posts: 556
|
Post by Lobo on Dec 4, 2022 16:43:01 GMT -5
Damn, with just 4 hours of electricity I'd use up the time only cooking and cleaning: Wouldnt be enough time to do anything on computer.
|
|
|
Post by ketmar on Dec 4, 2022 16:54:55 GMT -5
Damn, with just 4 hours of electricity I'd use up the time only cooking and cleaning: Wouldnt be enough time to do anything on computer. ok, to be honest it is "4 hours on, 4 hours off", and so on. but it doesn't really change the big picture: even if i'll design everything in my head, it won't be enough time to implement anything serious anyway, and each break means starting almost from the scratch (the famous "being in the Zone" thing)… p.s.: it's fuckin' frustrating, i must confess. all the interesting ideas always comes when you cannot implement them, and that's REALLY annoying. ;-)
|
|
Lobo
Doomer
Posts: 556
|
Post by Lobo on Dec 4, 2022 17:01:43 GMT -5
I get my best ideas at moments when I cant even write them down somewhere If I'm lucky I might remember again weeks/months later...
|
|
|
Post by ketmar on Dec 4, 2022 20:17:49 GMT -5
a-a-a-and… they just switched to 2 hours. fuckin' amazing! I get my best ideas at moments when I cant even write them down somewhere If I'm lucky I might remember again weeks/months later... yeah, same here. and it's also hard to write anything when there is no lights. ;-) and prices for candles rocketed at least by x4, lol. p.s.: if they don't want me to write voxel model editor so much, they could just tell me…
|
|
|
Post by ketmar on Dec 13, 2022 22:38:28 GMT -5
they can't stop me; not that easy! voxel rendering; GPU data: 20 bytes per voxel; creating faces in geometry shader using face visibility flags a-la KVX; grid added as a post-process step, and independent of voxel complexity (i.e. O(1)).
|
|
|
Post by 3t0 on Dec 14, 2022 19:12:20 GMT -5
Amazing!
|
|
|
Post by ketmar on Dec 14, 2022 22:32:22 GMT -5
of course, simply leaving it as this will be boring. of course, the main purpose of my editor will be creating small voxel models for Doom sprites, so i can prolly leave it as is. but hey, i can't miss the oportunity to experiment with various other voxel techs, like SVO. let's see if i'll be able to render (and edit) 1024x1024 Voxlap test scene with some decent frame rate. (currently it is single-digit; not up to my usual speed standards!).
p.s.: i haet minecraft and other voxel "wannabe games", so don't expect me to be side-tracked with some "massive voxel world rendering project". i mean, this voxel experiment should be safe and short-term… no, really!
|
|
|
Post by 3t0 on Dec 15, 2022 6:30:01 GMT -5
Well,
I often watch Cheello's progress, and it seems if one wants to do a proper doom voxsprites MagicaVoxel is a must. From time to time he jumps into SLAB6 I think and VOXLAP, but majority of work is done in Magica. I was not even aware that goxel exists, but at least on "Linux" (or rather cross platform) there is no decent voxel editor available.
So whatever you'll end up making will be better than nothing (or wine rather).
|
|