OK, This Might Work...
#8902 posted by JneeraZ on 2009/07/29 18:42:06
...but it comes with zero assurances of it actually working or not corrupting data. :P
I took some of my lunch hour today to see if this could be done quickly.
http://files.getdropbox.com/u/161473/Vis.zip
That should be a multi-threaded version of BJP VIS. When you run it, you'll see some additional text appear like:
"Using X threads."
The X will be however many cores/processors you have in your machine.
The percentage and progres stuff is all kinds of messed up and I don't have time to fix it today - lunch time is over! But I'll take a look at that in the future once the basics are nailed down.
Anyway, try it, run some side by side timings and let me know if I'm crazy or if this actually works.
The best way to see it work is to start up your Task Manager and look at the processor activity. All of your cores/processors should be pegged at 100% when this is running.
Thanks!
#8903 posted by necros on 2009/07/29 19:53:29
swapping to your vis for all my vising needs. i'm seeing 100% cpu usage, so it appears to be working fine. i'll let you know if anything weird happens.
you are currently on my list of people made of awesomeness for this, btw. ^_^
damn, i wish i had a quad core though. :(
#8904 posted by JneeraZ on 2009/07/29 19:56:29
The part that scares me is if the map will load into Quake when it's done. That's something I can't test here. :) Let me know, plz!
Willem
#8905 posted by JPL on 2009/07/29 20:59:47
Despite it may load, it also can generates HOMs and leaks.... wait and see :P
#8906 posted by negke on 2009/07/29 21:45:34
I don't see why it shouldn't load into Quake. After all, all you changed was the resource management. The actual vis calculation and state file handling remains untouched.
I'm running a test at the moment. One hour of willemvis vs one hour of regular (single-threaded) vis. The time estimations would help here, but whatever. No idea if there's much of a gain. I don't have a real multicore machine, just one of those p4-hyperthreading dudes (I was always suspicious about this being a possible bottleneck).
#8907 posted by JneeraZ on 2009/07/29 21:49:59
How many threads does it say you're using? If it's more than 1, you should see SOME improvement.
OK, I Think I Fixed The Time Estimates And Percentages...
#8908 posted by JneeraZ on 2009/07/29 22:01:31
I also renamed the EXE for easier use.
http://files.getdropbox.com/u/161473/WVis.zip
Give that a shot if you want the time estimates to be useful.
Will Test This For Future Builds
#8909 posted by ijed on 2009/07/29 22:05:05
#8910 posted by JneeraZ on 2009/07/29 22:51:16
So I guess now, whoever has the most cores/processors on their machine needs to become a VIS mule for the group. :P
#8911 posted by negke on 2009/07/29 23:03:43
Yes, there's definitely some improvement (with 2 threads) - I'd say it's at least 40% faster. I was so dumb as to accidentally close the window just now, so I can't tell the exact difference, unfortunately. But still, your version is useful for running at night when there're no other programs running beside vis. Thanks for offerning your lunch break.
Uh
#8912 posted by negke on 2009/07/29 23:05:43
offering the sacrificing
#8913 posted by necros on 2009/07/30 00:21:39
well, i've been using it all day with fast vising. it is faster, but it's hard to tell just how much without doing a proper full vis.
i have a second map that's in the final stage so i'll do a couple of test runs of full -level 4 vising on it, one with and one without multithreading for a proper comparison, but assuming there isn't a fundamental difference in what vis is doing in -fast vs without -fast, i'd say it's creating .bsp files that are perfectly fine. :)
Awfull
#8914 posted by madfox on 2009/07/30 00:29:16
how you managed to improve this blocking up tool, Willem!
If I count all vis time I made since I started mapping in '97 I could have learned C+ and have dived into it... too late I guess.
#8915 posted by JneeraZ on 2009/07/30 00:41:50
"i'd say it's creating .bsp files that are perfectly fine. "
Sweet! i guess it's good to go then.
Er......
#8916 posted by RickyT33 on 2009/07/30 01:00:18
link is 404?
#8917 posted by JneeraZ on 2009/07/30 01:18:04
Thanks Willem
#8918 posted by mechtech on 2009/07/30 02:41:45
2 Core AMD works!!!
Test map 60 sec vis down to about 36 sec.
Base vis is crazy fast
Looks Good
#8919 posted by Rick on 2009/07/31 07:54:16
It looks like the WVis times are rounded to the nearest minute?
This was on a Core2Duo E6850 (3 GHz).
Original VIS run:
---- Vis 2.31 ---- Modified by Bengt Jardrup
File: c:\quake\id1\maps\wish16.bsp
2929 portalleafs
8356 numportals
State file out of date, will be overwritten
testlevel = 4
ambient sky disabled
average leafs visible: 192
max leafs visible: 646 near (-608 352 592)
c_chains: 39836161
visdatasize: 219 kb compressed from 1049 kb
Elapsed time : 6:52
WVis run:
---- WVis 2.31 ----
Modified by Bengt Jardrup
Multithreading enabled by Willem
File: c:\quake\id1\maps\wish16.bsp
2929 portalleafs
8356 numportals
State file out of date, will be overwritten
testlevel = 4
ambient sky disabled
Using 2 threads.
average leafs visible: 192
max leafs visible: 646 near (-608 352 592)
c_chains: 39880904
visdatasize: 219 kb compressed from 1049 kb
Elapsed time : 3:00
I just did this, so I haven't actually looked at the map in the game. If I see any problems I'll post them.
The only difference in the log is the c_chains (no idea if that's important). I ran the full BSP, Light, Vis each time with no change to the actual .map file
C_chain
#8920 posted by JPL on 2009/07/31 08:24:06
I guess this is the recursive linkage made in between volumes. As in bsp process there's a volume expansion process that defines where are each faces / leafs, I think it is almost the same for vis process except the tools creates a chained list of volume in order to process them recursively (i.e from this volume, process the faces, and check what are the others visible volume not in the list, etc...) and determine which volumes (and then number of faces to render per volume) are visible from a given position.
This is how I understood the system in very "rough" way.. and maybe I'm wrong :P
#8921 posted by JneeraZ on 2009/07/31 11:21:30
Yeah, I'll check the rounding but I didn't really change anything there that I can think of. Hmm...
Wow !
#8922 posted by Ron on 2009/08/02 08:22:09
Progress in Quake map building, after all these years ! Nice work !
Quick question about something else:
Does it really make a lot of difference if you make your curves just by cutting them with a circle, or if you use the vector manipulation to make them more or less the same size and triangles ? If anyone has some more info (on the web, maybe ?) about vector manipulation, please let me know.
Ah, Found It:
#8923 posted by grahf on 2009/08/02 16:41:14
http://www.quaketerminus.com/hosted/happymaps/curv_tut.htm
Learn those ratios by heart, use them. The ratio used in the above tut is 0:2 2:4 4:2 2:0 if that makes any sense. There are other possible workable ratios but that one's always worked for me.
As far as constructing said curves, the 2-point clipper will probably give you less headache (and fewer invalid brushes) than trying to vertex manip everything into place.
Black Monsters
#8924 posted by JneeraZ on 2009/08/02 18:47:14
I remember someone else having a problem awhile back with this ... I have some spots in my level where creatures turn black despite the floor and the walls around them being lit perfectly fine. Is there an easy workaround for this? I'm running FitzQuake...
Well
#8925 posted by ijed on 2009/08/02 18:56:11
If they're passing over a sky brush then they'll always appear black unless the sky brush has a normal, solid brush inside it.
If they're appearing black when passing over normal lit floor then there's an issue with the origin of the monster.
They take no reference from the walls.
#8926 posted by JneeraZ on 2009/08/02 19:39:33
But what can I do as a mapper? Just rework the brushes in the area until the engine stops having an issue?
|