 Nice Site!
#1 posted by generic [172.56.4.88] on 2015/07/15 13:51:22
I like being able to preview the different light settings with just a click of a button :)
#2 posted by Spirit [92.196.3.21] on 2015/07/15 19:25:07
worst quake site ever, what is this, 2115?
 Under Construction.gif
#3 posted by mfx [78.55.54.239] on 2015/07/15 20:07:18
give him some time, you..
Nice site eric, i actually learned some new things i wouldnt have with playing around with it.
#4 posted by JneeraZ [174.109.106.46] on 2015/07/15 20:11:15
I like it. Modern day Quake lighting is insane. It would be totally possible to make a great looking monochromatic level these days. Fuck textures. :)
#5 posted by jakub [89.102.2.226] on 2015/07/15 21:12:38
nice page ericw. those comparison pictures are really informative. i'm not a mapper, but i'm seriously considering relighting some of the levels in my collection just to see how it would look like.
-
warrenm is right monochromatic levels would be great. i've just recently finished naissancee and i was impressed. i would love to see something like that in quake. imagine it... black/white level and the only color would be red bloodstains.
-
jakub
#6 posted by JneeraZ [174.109.106.46] on 2015/07/15 21:14:16
I should redo White Room ... heh.
 This All Looks Very Pretty.
#7 posted by Breezeep_ [108.53.84.156] on 2015/07/16 04:49:59
I would like to make a map with all this, but at the same time, I'm too lazy to even make one properly.
 Fgd File For Ericw Tools
#8 posted by DaZ [92.19.150.160] on 2015/07/21 20:57:21
(Consider this a beta as only I have tested it, but it seems 100% bug free!)
I have created a .fgd file with all the new parameters for Ericw's compiler suite built in and some nice quality of life upgrades (rgb color pickers etc) for you all.
https://dl.dropboxusercontent.com/u/33279452/quake4ericwTools.fgd
Let me know if you do find any bugs or confusing titles etc. USE THE HELP BUTTON AS ALL THE DETAILED EXPLANATIONS OF EVERY NEW COMMAND ARE IN THERE <3 <3 <3
#9 posted by JneeraZ [174.109.106.46] on 2015/07/22 12:14:49
New Jackhammer, new compile tools, new FDG ... truly, this will be the jam of kings!
Thanks DaZ!
#10 posted by JneeraZ [174.109.106.46] on 2015/07/22 12:16:26
One quick thing in this new FGD ... monsters don't have directional arrows on them anymore.
Also, lights used to be colored sprites in Jackhammer. Now they're boxes.
 Eh
#11 posted by DaZ [92.19.150.160] on 2015/07/22 14:44:52
The monsters thing is really weird, I didn't touch any of that part at all!
As for the lights being boxes, I am sure there is a bit of code to tell the editor what sprite to use for entities but I don't know what it is :|
I will investigate!
 Oh
#12 posted by DaZ [92.19.150.160] on 2015/07/22 14:48:00
by directional arrows you mean in the 3d view? I thought you meant the direction spinner in the entity properties :P
Ok, I'll see where this stuff is so I can add it.
 BETA 2 :)
#13 posted by DaZ [92.19.150.160] on 2015/07/22 15:19:28
* added editor models for all items that have a model
* added direction arrows to everything has a direction (direction arrows do not show when a 3d model is rendered in place of a solid box)
* Lights now have proper sprites and/or 3d models.
* entities now appear in the correct position when clicked into the 3d view (mostly)
https://dl.dropboxusercontent.com/u/33279452/quake4ericwTools.fgd
 Nice
#14 posted by mfx [78.55.123.52] on 2015/07/22 15:30:16
and thx! I think func_detail doesnt need the shadowself and shadow keys.
 Hmm
#15 posted by DaZ [92.19.150.160] on 2015/07/22 15:48:24
I'm not sure how to remove just those two entries from a single func_* entity def. The new solid entity parameters are all inside the base solid entity class.
 There More
#16 posted by mfx [78.55.123.52] on 2015/07/22 15:56:28
the minlight also doesnt work on them. The whole ModelLight thing can be left out.
#17 posted by JneeraZ [174.109.106.46] on 2015/07/22 15:59:55
Haha, awesome! I think this marks the first time that I've EVER had actual models show up in Jackhammer.
This is now the greatest FGD of all time. OF ALL TIME!
 BETA 3 :)
#18 posted by DaZ [92.19.150.160] on 2015/07/22 16:53:21
* Additional options removed from func_detail as they don't work
* Re-added func_illusionary as somehow I deleted it :P
https://dl.dropboxusercontent.com/u/33279452/quake4ericwTools.fgd
Ok, I think it's there! Let me know if you find anything else.
#19 posted by Scampie [72.12.65.92] on 2015/07/22 19:18:40
]@PointClass = info_notnull : "info_notnull (spotlight target)"
This line is incorrect, the correct usage for info_notnull is for "teh hax".
 BETA 4 :D
#20 posted by DaZ [92.19.150.160] on 2015/07/22 21:56:09
* Spotlight angle renamed to Spotlight direction
* Spotlight angle (sets spotlight cone in degrees)
https://dl.dropboxusercontent.com/u/33279452/quake4ericwTools.fgd
Sorry I had no idea I sucked so bad at this :P Hopefully this will be final version!
#21 posted by JneeraZ [174.109.106.46] on 2015/07/22 22:38:58
Nah, you're a hero for making this thing. It'll make Jackhammer a lot more fun to use during this jam. You've got my vote, congressmen.
#22 posted by Breezeep_ [108.53.84.156] on 2015/07/23 23:58:41
Does the -lightmapscale command only work in the dev builds?
 Yeah
#23 posted by ericw [199.126.128.107] on 2015/07/24 00:12:14
that got cut, I guess. See the comment about lit2 in the top post.
 BETA 5 :)
#24 posted by DaZ [92.19.150.160] on 2015/07/25 03:11:21
* Removed setting a default for Deviance as it actually forces the light to use deviance!
https://dl.dropboxusercontent.com/u/33279452/quake4ericwTools.fgd
This can bring your light compile to a slow crawl so be sure to update if you are using this fgd!
 Texture Surface Lighting Is A Pain In The Ass To Work With.
#25 posted by Breezeep_ [108.53.84.156] on 2015/07/25 04:29:42
Any advice on how to prevent it from creating too much light and containing it at a small fade scale?
 Yeah
#26 posted by ericw [199.126.128.107] on 2015/07/25 05:00:40
I need to put some examples on the website for doing lava surfaces.
Here's one that uses two surface lights on the lava: http://i.imgur.com/FAmAZlM.png
delay 2, light 20 for the fill light
delay 0, light 200 for the direct glow
If you use "delay 2" make sure to use low light values or you'll end up with a fullbright room.
 Pew Pew
#27 posted by DaZ [92.19.150.160] on 2015/07/25 05:05:16
If you are using my fgd file, download the latest version of it as it causes a bug where all point lights will be deviance lights (each light is broken up into 16 lights!)
Make sure to remove any _samples key/values from any lights you have in your level, as they will be left over even after downloading the bug fixed fgd file.
If you haven't been using that fgd file, then can suggest some settings for your surface light for lava :
wait 3
delay 2
light 100
you can tweak "wait" to have the light be smaller/larger but I've found these settings to be quite nice.
 Mind Blown
#28 posted by DaZ [92.19.150.160] on 2015/07/25 05:07:04
Never actually considered that you can use two lights on the same surface :O
 Other Stuff
#29 posted by ericw [199.126.128.107] on 2015/07/25 05:16:06
How the surface lighting works exactly: if you look at the BSP surfaces in-engine with "r_drawflat 1", each surface with a matching texture will get a light copied in the centre of the surface, 2 units above it. However, if a surface is larger than 128x128, it's subdivided into sections no larger than 128x128, and the lights are placed above those sections. So, you can think of the lights as being tiled roughly on a 128x128 grid.
My lava screenshot above is ugly, so if anyone comes up with a good example scene for lava settings that you want to put on the tool website, that would be welcome!
 Personally
#30 posted by Scampie [72.12.65.92] on 2015/07/25 05:28:50
What I've found works best for lava: use really low surface lights just to fill areas (if you find it necessary), and then hand place a couple really bright lights that will do the heavy lifting and cast your major shadows in the area.
and be sure to set "_dirt" "-1" on the lava lights, you don't want dirty corners next to your lava!
#31 posted by JneeraZ [174.109.106.46] on 2015/07/25 11:23:51
"Never actually considered that you can use two lights on the same surface :O "
!! Same. No idea ... neat!
 Oh Shit
#32 posted by DaZ [92.19.150.160] on 2015/07/25 17:09:57
You could use a 2nd light with a high offset on the lava and make it a bounce fill light.
AWWWWW YYYYEAAAAHHHH
#33 posted by [66.183.129.182] on 2015/07/28 09:38:01
hey DaZ, when I try to load your .fgd (Beta 5) in TrenchBroom I get the following error:
"Parse error at line 26, column 39: Expected token type closing bracket, or word but got colon"
Personally I'm guessing it's TB's parser, not your .fgd
 Hmm
#34 posted by DaZ [92.19.150.160] on 2015/07/28 18:22:42
Looking at the row/col. It's the first line of added code in the file, so I'm guessing that the version of fgd the file is written in is incompatible with TB.
This fgd was written for Jackhammer / Valve Hammer and probably uses some things that are not compatible with Trenchbroom (the colour picker comes instantly to mind).
It's worth noting that you can still use all these new features that are exposed in this fgd, you just have to add the key/value pairs manually.
 It's A Bug
#35 posted by SleepwalkR [130.149.243.224] on 2015/07/28 18:59:44
TB doesn't like the comments after the second colon. This is an oversight by me, I didn't read the FGD spec carefully enough, and the FGD files I had used for TB didn't contain such comments. File a bug report and attach the file so that it gets fixed, please.
#36 posted by JneeraZ [174.109.106.46] on 2015/07/28 19:31:21
So I guess a temp fix would be to just delete the comments. In case that wasn't obvious. :)
 But
#37 posted by DaZ [92.19.150.160] on 2015/07/28 19:57:40
the comments are useful as they show up in jackhammer/hammer help screen. That's why I added them in the first place :D
But yes, you could remove all the comments and it should work.
#38 posted by JneeraZ [174.109.106.46] on 2015/07/28 20:19:12
Right, I get that. But it's either wait for someone to fix Trenchbroom OR start using the FGD now. So ... choose your path, fair user. :)
#39 posted by ericw [199.126.128.107] on 2015/07/28 20:22:49
The fgd won't be useful in tb1 anyway, since tb1 doesn't display the key/values part of the fgd. Will be nice in tb2 though :-)
 Func_group
#40 posted by necros [104.207.136.2] on 2015/07/30 05:34:23
do func_groups get ignored or something? I have a map with a func_group in it with ~4k brushes in it, but qbsp finishes in 1 second with the following:
---- LoadMapFile ----
*** WARNING 06: No info_player_deathmatch entities in level
19190 faces
4766 brushes
4 entities
2 unique texnames
38380 texinfo
Opened WAD: ..\..\QE3\gfx\jam6\mapjam666.wad
Opened WAD: ..\..\QE3\gfx\jam6\lavacity1a.wad
Opened WAD: ..\..\QE3\gfx\sock_palc_supp.wad
Processing hull 0...
Processing hull 1...
Processing hull 2...
---- WriteBSPFile ----
0 planes 0
0 vertexes 0
0 nodes 0
6 texinfo 240
0 faces 0
0 clipnodes 0
1 leafs 44
0 marksurfaces 0
0 surfedges 0
1 edges 8
2 textures 391772
lightdata 0
visdata 0
entdata 293
0.152 seconds elapsed
Peak memory usage: 13694572 (13.1M)
looks like it's skipping it?
 Weird..
#41 posted by ericw [199.126.128.107] on 2015/07/30 05:48:23
one idea, make sure there's at least one ordinary brush in worldspawn that's not in a func_group/func_detail. There's a bug that happens if there are no regular brushes.
#42 posted by necros [104.207.136.2] on 2015/07/30 05:54:42
haha yup! thanks!
and while you're here... currently in this qbsp, mixed face contents is a full error that halts compilation, while other compilers (aguirre's in my case) will just give you a warning and convert the brush to a solid.
any chance of doing the same here? mixed face contents really isn't a big deal, at least, not enough to warrant an error.
 Nice :)
#43 posted by ericw [199.126.128.107] on 2015/07/30 05:59:47
re: mixed face contents, sure, I'll look into how bjptools handles it
#44 posted by JneeraZ [174.109.106.46] on 2015/08/02 12:44:02
One quick suggestion ... when the user doesn't specify "-threads" maybe set the value to "# of cores in this machine" - 1. That leaves one core available for working on the level or checking email or whatever.
I found when I set up my batch file to use one fewer core than I actually have, working on maps became a lot more fluid...
 Daz
#45 posted by SleepwalkR [79.195.7.204] on 2015/08/02 20:40:57
Your fgd file contains a few integer properties with float default values such as in line 34:
_range(integer) : "Global light range" : 0.5 : "Scales the brightness range of all lights without affecting their fade discance. Values of n more than 0.5 makes lights brighter and n less than 0.5 makes lights less bright. The same effect can be achieved on individual lights by adjusting both the 'light' and 'wait' attributes"
That's technically invalid and I don't know what JackHammer and others would make of it. TB currently crashes at that line. I'll fix it and round such values.
 And More
#46 posted by SleepwalkR [79.195.7.204] on 2015/08/02 20:46:05
In line 76, there is this:
@baseclass base(Appearflags) flags(Angle) size(-16 -16 -24, 16 16 32) offset(0 0 24)
color(0 255 0) = PlayerClass []
The flags(Angle) part is syntactically wrong. Check https://developer.valvesoftware.com/wiki/FGD
 Re: #44
#47 posted by necros [108.61.228.128] on 2015/08/02 22:33:44
While doing n-1 threads by default works, I think I'd prefer auto-setting priority to "below-normal". This way, when the computer is idling, it'll use all cores, but if needed, it can be put into the background while you work on your map.
#48 posted by JneeraZ [174.109.106.46] on 2015/08/02 22:35:02
That might work too. All I know is that right now, if I don't hand set the thread count, I end up with a machine that can't do much while light runs...
#49 posted by necros [108.61.228.128] on 2015/08/02 22:59:46
haha yeah, i know what you mean.
as a workaround, you can start light/vis with the start.exe command:
START /BELOWNORMAL light.exe to manually set thread priority.
 Nice
#50 posted by ericw [108.173.17.134] on 2015/08/02 23:05:19
I'll make it do that automatically in the next release
 I Have An Iq Of -94
#51 posted by DaZ [92.19.150.160] on 2015/08/03 16:09:00
Sleepwalkr, I'm fixing the fgd but I don't understand a few parts of it.
_range(integer) : "Global light range" : 0.5 : "Scales the brightness range of all lights without affecting their fade discance. Values of n more than 0.5 makes lights brighter and n less than 0.5 makes lights less bright. The same effect can be achieved on individual lights by adjusting both the 'light' and 'wait' attributes"
If I just set the value type to float instead of integer will that fix the error? This value defaults to 0.5 and 1 will change light values in the map.
@baseclass base(Appearflags) flags(Angle) size(-16 -16 -24, 16 16 32) offset(0 0 24)
color(0 255 0) = PlayerClass []
Honestly I just copied this from the fgd that ships with Jackhammer so I don't actually understand it. Can you post the correct syntax and I can update it!
<3 <3
#52 posted by necros [174.113.85.164] on 2015/08/03 16:20:12
For float values, just use string!
 Daz
#53 posted by SleepwalkR [87.146.33.69] on 2015/08/03 19:49:58
The integer vs. float thing: Integers cannot (or at least should not) have non-integer values, so that default value of 0.5 is nonsensical. Either use float or use an integer default value. If non-integer values are supposed to be okay, then do this:
_range(float) : "Global light range" : "0.5" : "yadda yadda"
As necros said, default values for floats should be in quotes.
As for the flags thing, what are these flags actually for? Does that specify additional spawnflags? Maybe it's something only JH understands.
Either way, TB2 now ignores such things (and gives a warning), but it would be cool if that FGD were compatible with all editors.
If you want, I'll make you a TB2 build to test with so that you can make all warnings go away.
#54 posted by onetruepurple [88.156.138.129] on 2015/08/03 19:52:05
TB1 also doesn't like the "color255" types used by JH.
 Ok
#55 posted by DaZ [92.19.150.160] on 2015/08/03 20:01:13
It might be JH specific. Thinking about it now it might be the part that tells the editor to show the direction arrow in the 3d view for info_* and monster_* entities.
I will change to a float for those two non integer integers.
Onetruepurple : the color255 brings up the colour wheel for selecting light colours in an rgb 255 format. it's too useful to remove. It would be wonderful if TB supported something like this but for now I guess sleepwalkr can ignore this specific attribute?
#56 posted by onetruepurple [88.156.138.129] on 2015/08/03 20:05:33
TB has a full fledged color picker but I wasn't sure how to replace color255 with it.
 It Does?
#57 posted by DaZ [92.19.150.160] on 2015/08/03 20:12:16
I can't find it. TB or TB2?
 Derp?
#58 posted by onetruepurple [88.156.138.129] on 2015/08/03 20:20:30
#59 posted by ericw [108.173.17.134] on 2015/08/03 20:21:35
I'm not sure how it's set up internally, but if you add a "_color" key to a light in TB1, a color editor shows up when that row is selected.
#60 posted by necros [104.207.136.118] on 2015/08/03 20:54:19
i think it is hardcoded currently? _sunlight_color gives a picker, but _sunlight2_color does not, for example.
 TB1 Doesn't Support It
#61 posted by SleepwalkR [87.146.33.69] on 2015/08/03 21:06:23
TB2 will at some point. Right now, the special semantics of that property are ignored, but it will load and it will show up in the editor.
 The Color Picker
#62 posted by SleepwalkR [87.146.33.69] on 2015/08/03 21:07:34
it's not hardcoded, but it tries to guess whether a property is a color property by examining it's name. It's flaky, and the color255 and color1 property definitions in the FGD would surely help. I will support those in TB 2.1
#63 posted by Rick [75.65.153.192] on 2015/08/04 00:14:17
I just tried out this new light utility. I'm have trouble getting lava to look right, but I'm sure I'll get it figured out. One question. Is there a limit to how many surface lights? Because I'm getting some ideas here. I realize it's just one light per texture name, but if I have 30 different light type textures, each can have a different type of surface light emit?
 Actually,
#64 posted by ericw [108.173.17.134] on 2015/08/04 00:20:54
no problem having multiple surface lights with the same texture name.
The way to think of it is the "_surface" key causes a light to be deleted, and then copies placed across surfaces with that texture.
There is currently a 65k limit on total number of lights, for no good reason, but the light tool will be really slow if you get anywhere near that number of lights.
#65 posted by Rick [75.65.153.192] on 2015/08/04 00:56:05
Okay, so it's possible to have multiple different style lights per texture name in addition to many light emitting textures. This is pretty cool.
Just as an experiment I lit up a rock formation inside a cave with a func_wall then removed the brush using killtarget on a trigger when the map loaded. Worked fine.
I like that the color of the light is controllable. The Quake 2 surface light color was taken from the texture which probably contributed to its reputation for garishly colored lighting.
 Surface Lights Moved From Jam Thread...
#66 posted by necros [108.61.228.131] on 2015/08/04 23:46:56
yeah, what happens is the surface lights are already spawning arrays of lights, then each of those lights gets another array of lights. I ran into the same thing, but when you think about it, deviance on surface lights is only necessary if it is a single light (eg: a small wall texture), but not in the case of lava.
i wonder if you could track how many lights have been spawned as part of the surface lighting and if it is over a threshold, do not apply deviance lighting. just some internal tracking, nothing added to the actual map or anything.
because you would want to use deviance lights for small 32x32 lights, for example.
 Hm Good Idea
#67 posted by ericw [108.173.17.134] on 2015/08/05 00:08:43
That would be nice to have. Maybe I was premature to disable combining _deviance + _surface; I could just make it print a warning.
 Jitterning
#68 posted by Rick [75.65.153.192] on 2015/08/07 21:56:38
ericw,
I had to switch to a faster computer for building the bsp because light was getting pretty slow on my editing computer. I now get those jitterning messages I asked about in the mapping thread. First time I've seen them. Not just a few, but screen after screen of it, but it doesn't take very long to get to the progress indication and the resulting bsp is fine, I just thought you might like to know.
 Can You Check You're On The Latest Version?
#69 posted by ericw [108.173.17.134] on 2015/08/07 23:12:37
 Duh
#70 posted by Rick [75.65.153.192] on 2015/08/08 01:33:43
Stupid me. There's a copy of the 7/13/2015 zip sitting right there in the maps folder. I guess I downloaded the newer version but forgot to extract it, because the exe in that folder (the one I'm using) is dated 5/15/2015.
 Windows Symlinks
#71 posted by necros [108.61.228.60] on 2015/08/09 06:19:40
is there a problem with reading .wads from symlinks? I can only use a single .wad file, if i try to add more than one, it will only read one of them.
although... maybe it's not related to symlinks as it happens if it is absolute or relative paths.
 Help Installing Tyrutils-ericw On Linux
#72 posted by total_newbie [94.222.8.166] on 2015/08/09 17:33:02
So I've downloaded and extracted the tgz archive, but I don't know where to go from here (can't remember how I got the original tyrutils up and running, and I'm sure I didn't do it in the most elegant way).
Also, I'm not sure if downloading the archive was the best first step, as I'd ideally like to set it up so as to be directly update-able from github (the way I've got TB2 set up -- but I needed a hell of a lot of help in getting that up and running too, and understood virtually nothing of what I was doing!).
Could someone give me some noob-friendly instructions, or tell me where I can find them?
 Sure
#73 posted by ericw [108.173.17.134] on 2015/08/09 18:22:51
I should add these to the readme. Assuming you start in your home directory,
git clone https://github.com/ericwa/tyrutils-ericw.git
cd tyrutils-ericw
make
If there are no errors this will generate ~/tyrutils-ericw/bin/qbsp, etc.
To update:
cd tyrutils-ericw
git pull
make clean
make
 Thank You So Much!
#74 posted by total_newbie [94.222.8.166] on 2015/08/09 18:43:57
That was painless :)
Am I correct that the actual programmes are now in tyrutils-ericw/bin? Do I need to cd into that directory every time I wish to compile, light, etc.?
Also, do I need to have the files I want to use (e.g. the .map file from which I want to create a .bsp) inside the tyrutils-ericw/bin directory? I ask because that was the only way I could ever get the original tyrutils to work, but I suspect there might be another way...
#75 posted by ericw [108.173.17.134] on 2015/08/09 19:17:17
the actual programmes are now in tyrutils-ericw/bin
Yup.
You can run the from another directory by using the full path to the tool, like this, if you had maps in ~/maps:
cd maps
~/tyrutils-ericw/bin/qbsp test.map
--
What I actually do is use this build script:
https://gist.github.com/ericwa/360f35c92a0139961f35
If you want to try that, save it as build.sh, update the UTILSPATH and DEST variables to match your tyrutils bin path and quake/id1/maps path, run chmod +x build.sh to make it executable, and copy it to your mapping directory.
Now you can do:
./build.sh test.map
and it will compile and copy the resulting bsp/lit to your quake/id1/maps folder.
#76 posted by ericw [108.173.17.134] on 2015/08/09 19:17:18
the actual programmes are now in tyrutils-ericw/bin
Yup.
You can run the from another directory by using the full path to the tool, like this, if you had maps in ~/maps:
cd maps
~/tyrutils-ericw/bin/qbsp test.map
--
What I actually do is use this build script:
https://gist.github.com/ericwa/360f35c92a0139961f35
If you want to try that, save it as build.sh, update the UTILSPATH and DEST variables to match your tyrutils bin path and quake/id1/maps path, run chmod +x build.sh to make it executable, and copy it to your mapping directory.
Now you can do:
./build.sh test.map
and it will compile and copy the resulting bsp/lit to your quake/id1/maps folder.
#77 posted by Spirit [80.187.110.190] on 2015/08/09 19:27:56
What distribution are you on? If it's Archlinux, I could make a package for easy and system-wide installation.
 Re: #75/76, #77
#78 posted by total_newbie [94.222.21.101] on 2015/08/09 20:05:18
Thanks very much for the extensive response, ericw! I'll give that a shot.
Spirit, no, I'm on Mint -- but thank you for offering.
 Beta For Next Release
#79 posted by ericw [108.173.17.134] on 2015/08/10 18:10:42
download
Changes since 0.15.1:
* qbsp: make "mixed face contents" and "degenerate edge" non-fatal, from txqbsp-xt
* qbsp: make "-oldaxis" the default. new "-nooldaxis" flag to get the previous behaviour.
* light: add "-surflight_subdivide" flag to control amount of surface lights created
* light, vis: use below normal process priority on Windows
* light: allow negative surface light offset
* light: ensure light values in the bsp equal the average of the lit file color components. This fixes "dark" colors (where all components are < 1), on some engines (such as MarkV), which require the bsp lightmap brightness to match the .lit brightness as a cheat prevention mechanism.
* light: fix lighting of hipnotic rotating entities.
* light: fix crash in "Bad texture axes on face:"
Thanks to everyone for testing & reporting bugs :D
 Thank You!
#80 posted by mfx [92.230.135.75] on 2015/08/10 18:47:23
#81 posted by Rick [75.65.153.192] on 2015/08/10 21:15:17
I've run my lava map through this new lighting program about 20 times this morning and I'd have to say that the sub_divide switch has definitely helped.
There is one room with a large rectangular area of lave (320x2048) which does not get lit (well, it does but very dim). In game, r_drawflat shows this lave as one single color. I think adding some structure to break the lava surface up more will fix the problem.
I still have problems getting enough light near the lava without having it light up the entire cave, but I've got it pretty close. I'm up to wait 18 and my puny little 200 value delay 5 lava surface light still lights the the ceiling 1200 units above, but not a lot.
 Negative Offset
#82 posted by Rick [75.65.153.192] on 2015/08/10 22:49:28
The negative offset is very useful. You can sink the lava lights down below the surface and eliminate much of the spotty appearance, doesn't help much with default delay lights though. Those just basically paint the walls/shores up to a point then stop, which looks pretty bad, I've decided default delay is mostly useless for lava lights.
I'm working on a map for Jam 6, like so many others, and in experimenting with surface lighting using the beta Tyrutils posted earlier, I've run into a problem.
As far as I can tell, 'samples' on a light entity is being used whether 'deviance' is set or not. Even in a simple box test map, making one light and setting its texture name to the floor texture, with the deviance key either unset or set to 0, I get a certain number of total lights reported. Lowering the samples value down from its default 16 to 1 reduces the total count. With the total light count being a new addition, I can't confirm whether this is new behavior or not.
I've had one other problem, where light exits with no errors after reporting "X entities, Y are lights" but before actually computing any lightmaps, but I'm still trying to find a minimal repro for that one. The deviance/samples thing is either more pressing, or just me being an idiot, so I thought I should speak up now. Am I just misunderstanding how to use these features?
 Martin
#84 posted by DaZ [92.19.150.160] on 2015/08/12 05:20:48
If you are using that fgd I created for JH I strongly suggest getting the latest version at https://dl.dropboxusercontent.com/u/33279452/quake4ericwTools.fgd as an old version set _samples 16 (which is default, but doesn't need to be set by the fgd) which caused some lights to use deviance automatically.
With the new fgd this doesn't happen (but you will still need to remove the _samples key from any lights that had it assigned before you got the new fgd).
And err, if you aren't using that fgd, then ignore all of this post. YAY!
 Aha
Yes, I was indeed using an outdated version of your FGD. The new one fixes it, thanks! If I may, I'd humbly suggest the tool docs and FGD be updated to clarify the _samples description, which says "Default 16 (only used if "_deviance" is set)." I didn't understand that any value of _samples activates the feature regardless of the _deviance value.
Thanks, Wiiki! (Can you guess where my username comes from? :P)
Now I just need to figure out why the beta tools are producing maps missing some textures. I'm using ID1, lavacity1a, and mapjam666 wads, and a few textures from each are missing. Others load just fine. Switch back to 0.15.1 with no other changes and all the textures show up. Any ideas?
 *sigh* Of Course...
...as soon as I post I realize the problem isn't exactly as I describe. It looks like the texture thing I mentioned isn't spotty, I mistook a few textures as belonging to a different set. The problem looks like two of the three wads aren't being loaded at all, with only mapjam666 (the last one listed in worldspawn's 'wad' string) being used.
 Yo
#87 posted by DaZ [92.19.150.160] on 2015/08/12 14:45:11
The _samples thing iirc was a bug in the tools, the description was copied directly from Eric's site! It may already be fixed in his latest version of the tools.
Making that fgd has certainly upped my appreciation for programmers, and how they make stuff compatible across different apps/versions! What a pain in the arse :D
#88 posted by Breezeep_ [108.53.84.156] on 2015/08/12 21:31:26
http://i.imgur.com/jUcJ0Jn.png
I'm not really sure why the Lighting FGD just adds these unnecessary entity keys to all the light entities in my map, and It's just tedious to remove all of these different keys.
 These Seem To Be The Default Values For Those.
#89 posted by SleepwalkR [87.146.49.200] on 2015/08/12 21:44:05
Are they actually in the .map file when you save it?
 Default Keys Are Always Added
#90 posted by XaeroX [85.118.231.245] on 2015/08/14 15:55:22
That's why they are called "default". :)
 @ItEndsWithTens
#91 posted by ericw [108.173.17.134] on 2015/08/14 22:28:00
I didn't understand that any value of _samples activates the feature regardless of the _deviance value.
Crap, I forgot to fix that :-(. Will fix it and put it in the next beta.
re: textures not loading with the beta, but working with 0.15.1, that is messed! Any chance you could send me the wads and map so I can double check what is going on? I don't think I changed anything that should affect texture loading.
 Sure Thing!
Eric, I just sent you an email, thanks for the offer! You'll get the map, wads, and a readme with details. Hopefully I'm just doing something dumb. :)
 What The Hell, Daz?
#93 posted by Breezeep_ [108.53.84.156] on 2015/08/15 22:47:38
If I don't select every single light entity in my map, the lighting would end up like this: http://i.imgur.com/37pGUH0.png
Honestly, I'm getting tired of being forced to select all the light entities and removing all the unnecessary entity keys for each light. Are there any workarounds for all this crap>
 Well
#94 posted by DaZ [92.19.148.67] on 2015/08/15 23:11:29
are you using the latest fgd I made? https://dl.dropboxusercontent.com/u/33279452/quake4ericwTools.fgd
You don't have to use this fgd, there is a default one provided with Jackhammer. I made it for myself and thought others might find it useful!
#95 posted by Breezeep_ [108.53.84.156] on 2015/08/15 23:33:17
Yeah, I'm using the latest fgd.
#96 posted by Breezeep_ [108.53.84.156] on 2015/08/15 23:41:34
Is it possible to changing the defaults to 0?
 Suggestion For A Dirtmap Setting
#97 posted by ptoing [93.216.235.34] on 2015/08/15 23:42:07
Looking at this screenshot (also had a similar thing myself playing around with mapping recently) http://i.imgur.com/81RoXoQ.png You can see that there is AO applied at very shallow angles. Maybe something like -dirtangle [degrees] would be a good setting to add. Where of course stuff under that angle would not be dirtmapped or something like that.
 Defaults
#98 posted by DaZ [92.19.148.67] on 2015/08/15 23:47:58
All the values selected on the lights when you create them are the defaults.
 The Default
#99 posted by FifthElephant [82.24.73.240] on 2015/08/16 01:06:46
state for any light entity is 300 light.
This is how it has always been.
 Or...
#100 posted by ptoing [93.216.235.34] on 2015/08/16 01:29:18
I guess not all of that stuff is from dirtmapping but just how light works. So maybe something that makes faces with angles under a certain threshold have averaged normals, basically like angle threshold controlled smoothing groups.
#101 posted by necros [109.201.152.225] on 2015/08/16 01:38:47
you can reduce _anglesense below 0.5 to help alleviate the shading problem in that tube. it may make the light look a little odd because it won't attenuate based on face normal as much. might take some tweaking to look good.
#102 posted by ptoing [93.216.235.34] on 2015/08/16 02:05:51
Is anglesense something you set per light?
 Yo
#103 posted by DaZ [92.19.148.67] on 2015/08/16 02:31:02
Yes you can set it per light with _anglescale. The default is 0.5
#104 posted by ptoing [93.216.235.34] on 2015/08/16 02:35:22
Thanks :) Will play around with that when I got time.
 Yep
#105 posted by ericw [108.173.17.134] on 2015/08/16 02:39:43
you can set "_anglesense" per-light.
When I get a chance I'll try playing with normal smoothing again. The first time I tried it I was still getting hard edges, e.g. with sunlight shining on an octagonal pillar.
#106 posted by ptoing [93.216.235.34] on 2015/08/16 02:50:14
It's too bad you can not assign any values to brushes, that way it could be controlled on a brush basis, which would make more sense from a user perspective. But having it as a global variable with an angle threshold should be enough I think. Maybe additional value for func_walls, func_detail and such might make sense.
#107 posted by necros [109.201.152.225] on 2015/08/16 04:46:44
ericw: normal smoothing?? so like phong shading? that would be insane.
 Ericw
#108 posted by FifthElephant [82.24.73.240] on 2015/08/16 04:52:47
phong shading would be sweet... how will it be implemented though? Quake 2 allows surface flags to be set but there's nothing like that in Quake 1.
 Super Hacky Way Of Doing Shit...
#109 posted by ptoing [93.216.235.34] on 2015/08/16 05:02:01
might be to do it via textures. Basically have a version of the level which you just use to generate smoothing group data and compile before the other stuff or something. You could just have it be a bunch of textures that correspond to SG01, SG02, SG03..
That would probably be a pain in the ass to do though. Just plopping out dumb ideas here.
Or it could be integrated into the editor somehow, which just generates some file based on which faces the user has combined into a smoothing group.
 Half-Life
#110 posted by DaZ [92.19.148.67] on 2015/08/16 05:16:19
HL's light compiler uses Phong to shade smooth curves. You can also setup "smooth groups" in hammer that can tell the compiler what brushes to perform smooth lighting on. A good place to start!
 A Long Long Time Ago
#111 posted by damage_inc [24.144.116.174] on 2015/08/16 07:26:36
I think I remember playing around with WC and you could assign a value(-1?) to a brush face(I used an octagon) and then when you compiled the map you could not see any hard edges? If you looked at the floor you could tell it was an octagon but otherwise no.
Am I crazy or does anyone else remember this?
 Damage_inc
#112 posted by Scampie [72.12.65.92] on 2015/08/16 07:51:35
Are you thinking of Quake2 mapping? because ArghRad added a feature for phong shading via that method. Quake2 let you specify surface properties per face, so you could stick values into properties to set up smoothing groups for the compiler. (IIRC, you set a brightness value for the face as the smoothing group number, but didn't turn on the face's 'emits light' flag and ArghRad would look for that pattern)
Quake's .map format doesn't support any per face values, so there's no place to store any values for the compiler to know which faces to smooth.
 Ohhhh... Yes Scampie
#113 posted by damage_inc [24.144.116.174] on 2015/08/16 08:48:58
That's it! Now I remember, it was When I was teaching a friend Quake2 mapping. Thanks.
 DaZ
#114 posted by kaffikopp [129.241.137.114] on 2015/08/16 17:17:45
Trying to use your fgd with Hammer (not Jackhammer) causes it to crash. Any idea why this occurs? The standard fgd by czg works fine.
 Hmm
#115 posted by DaZ [92.19.148.67] on 2015/08/16 23:10:48
I haven't tested it with Hammer at all, I imagine there some syntax craziness going on!
 What Do These Error Messages Mean?
#116 posted by total_newbie [178.5.226.52] on 2015/08/21 23:52:30
*** WARNING 12: New portal was clipped away in CutNodePortals_r
*** WARNING 16: Texture __TB_empty not found
I got them while compiling a TB2-made map using qbsp from this branch. I've been compiling every so often to test things out and I mostly do not get any errors. Would just like to know what I could have changed that would have resulted in these errors (and hence what I should avoid doing in future).
#117 posted by Rick [75.65.153.192] on 2015/08/22 00:10:05
CutNodePortals_r is usually caused by complex brushwork, often occurs where several planes meet at one point and/or there are brushes with vertexes off the grid. If it gave coordinates, look there in your map to see what could be the cause.
Example, txqbsp_xt will report it like this:
WARNING:CutNodePortals_r: new portal was clipped away near (2592 -518 -40)
Texture TB_empty sounds like some kind of missing texture error where TB substituted "Texture __TB_empty" in it's place of its name.
#118 posted by Rick [75.65.153.192] on 2015/08/22 00:15:42
Depending on where it is, you can often just ignore a CutNodePortals_r warning, but sometimes it causes small invisible walls that'll block player movement. Turning complicated brushwork in the area of the warning into func_walls will also sometimes fix it.
I got a lot of this in my jam6 map due to the weird brushes making the damaged walkway, so I just made them a func_wall.
#119 posted by Scampie [72.12.65.92] on 2015/08/22 00:21:14
"__TB_empty" is the texture name Trenchbroom puts on a face with no texture. If you know the brush, you put a texture on it, if not, do a find/replace in notepad or something and search for "__TB_empty" and replace it with some other texturename (Does TB/TB2 have a texture find/replace? if so, use that)
 __TB_empty
#120 posted by SleepwalkR [93.209.80.146] on 2015/08/22 00:22:03
is used when you have a face without a texture. TB2 has to insert some string as the texture name, and this is the placeholder it uses for such situations.
#121 posted by [50.67.178.104] on 2015/08/22 00:36:39
"" is a string, no? :) :) :)
srsly tho, yeah, I opened my .map in Sublime Text and did a find/replace
 Thank You Very Much, Rick, Scampie And SleepwalkR
#122 posted by total_newbie [178.5.226.52] on 2015/08/22 00:38:28
...for both explaining what causes those errors and giving me pointers on how to fix them (or potentially work around them, in the case of CutNodePortals_r).
 Matecha
#123 posted by SleepwalkR [93.209.80.146] on 2015/08/22 00:41:29
Texture names are not quoted in the map file. God knows how different compilers would interpret "".
#124 posted by Scampie [72.12.65.92] on 2015/08/22 00:48:36
Radiant uses a blank space, luckily it also recognizes that blank space as something you can find and replace in the editor.
 Ericw
#125 posted by Rick [75.65.153.192] on 2015/08/22 01:17:14
By the way, my favorite new feature of the light utility is the ability for func_walls to cast shadows. I used it a several times in my jam 6 map. The 12 fingered torchieres in the lava and the hanging lanterns beside the last steps up are all func_walls casting cool looking shadows.
#126 posted by ericw [108.173.17.134] on 2015/08/22 01:23:48
I think Tyrann added that, but yeah it's awesome!
 Agreed
#127 posted by Scampie [72.12.65.92] on 2015/08/22 01:30:11
I used "_shadow" key quite a bit... but there's one obvious spot where it caused an issue that I should've worked around: A func_illusionary with "_shadow" "1" on the floor casts blackness on the floor below it, so any dynamic entity on top of that func_illusionary will be unlit because it uses the lightmap of the solid floor (which is fully shadowed) as the brightness of the entity above it. This isn't a compiler problem, it works as intended, but can be unexpected that that is how it works. This is why there is a fully dark Ogre in the map.
I had to do that because of a clipping error, but I should've tried some other things to fix it, but it was getting really close to the deadline.
#128 posted by Rick [75.65.153.192] on 2015/08/22 02:11:18
That's similar to the old "black scrags against a bright sky" thing that many maps suffer from.
To fix that particular problem you had, sometimes you can put a func_wall floor underneath to catch the shadow, then put a real floor below that which is lit normally to provide the entity lighting. But it can be tricky to get the brightness balanced.
Yeah, that deadline was a pain :)
#129 posted by necros [109.201.154.199] on 2015/08/23 20:12:23
been meaning the mention this... -fast is missing from light.exe... Could we have this back, since it can take 20-30 minutes to light stuff now with all those deviant lights and such...
#130 posted by necros [66.102.6.228] on 2015/09/09 22:48:37
Any way to attach a lightstyle to a shadow from a bmodel?
 Haha
#131 posted by ericw [108.173.17.134] on 2015/09/10 01:00:35
I think that might actually be possible. It would be a bit of work to code, possibly not too bad though.
#132 posted by necros [173.199.65.41] on 2015/09/10 01:21:31
cool, it's just a nice-to-have. maybe you have some floor you want casting shadows, but later needs to break or something...
 New Build Soon?
#133 posted by czg [212.16.188.76] on 2015/09/16 09:11:03
There's a fix for mixed face contents I'd like to have that was added to git on 31/07, but the latest build is from 13/07 (according to readme).
Will there be a new build soon-ish or will I have to do it myself? (= pain)
 There Are Nightly Builds
#134 posted by SleepwalkR [130.149.243.224] on 2015/09/16 10:51:42
 Yay! Excellent!
#135 posted by czg [212.16.188.76] on 2015/09/16 11:05:24
 Czg:
#136 posted by ericw [108.173.17.134] on 2015/09/16 21:43:59
Yeah, those nightly builds should be fine to use.
In other news I found a serious bug in the surface lights code that was causing it to spam multiple copies (sometimes 10+) of each of the surface lights. This is unrelated to the bug where setting "_deviance" "0" on a surface light would also spam copies.. This explains why they were going crazy for some people during the map jam, and the extra long compile times with surface lights.
That should be fixed in the nightly builds. I'm working on some speedups for light right now and hope to have a new release soon.
 New 0.15.2 Build
#137 posted by ericw [108.173.17.134] on 2015/09/17 08:21:54
available on the website: http://ericwa.github.io/tyrutils-ericw/
Changes:
* qbsp: add "-maxNodeSize" option, from txqbsp-xt. Defaults to 1024. Makes large maps process much faster and should generate better bsp trees. If it causes a problem disable with "-maxNodeSize 0"
* qbsp: make "mixed face contents" and "degenerate edge" non-fatal, from txqbsp-xt
* qbsp: make "-oldaxis" the default. new "-nooldaxis" flag to get the previous behaviour.
* light: add "-surflight_subdivide" flag to control amount of surface lights created
* light, vis: use below normal process priority on Windows
* light: allow negative surface light offset
* light: average the lit file color components to generate the bsp lightmap value. TODO: use a perceptually weighted average.
* light: fix lighting of hipnotic rotating entities.
* light: fix crash in "Bad texture axes on face:"
* light: fix surface lights being mistakenly duplicated
* light: add "-onlyents"
* light: add "-dirtangle" setting to control dirtmapping cone angle, default 88 degrees.
 Yes Yes Yes
#138 posted by FifthElephant [213.205.251.32] on 2015/09/17 11:17:20
But what about phone shading!!!
#139 posted by JneeraZ [174.109.106.46] on 2015/09/17 12:23:26
Apple or Android?
 Hexen2 Support Patch
#140 posted by Spike [86.191.130.102] on 2015/09/18 16:26:28
http://triptohell.info/moodles/junk/tyr-h2.patch
adds -hexen2 argument to qbsp to generate a h2(mp) bsp.
vis and light also accept hexen2 bsps.
doesn't do anything about palettes.
silently ignores hexen2's extra 'light' attribute of each plane, if specified. this is consistent with other hexen2 tools (iiuc).
doesn't do any special behaviour with watervis, so unlike hexen2 lava is watervised by default.
do NOT try loading a hexen2 bsp in a quake engine (other than ones that explicitly support it). doing so will likely result in crashes (and vice versa).
-hexen2 -bsp2 are accepted simultaneously. fteqw supports this, other hexen2 engines will need to be tweaked now that there's a tool that can actually generate them. this relaxes the clipnode limit that otherwise severely limits the sizes of hexen2 maps (to two fifths of a quake map, approx).
let me know if I broke anything...
 Spike
#141 posted by ericw [108.173.17.134] on 2015/09/18 20:14:33
wow, thanks! this will be nice to have.
I will test this a bit and merge it in.
ExportClipNodes is confusing, I don't get what the "diff" variable is doing and why was it only modifying model->headnode[1], but it will probably be clear if I watch it in the debugger.
#142 posted by Spike [86.191.130.102] on 2015/09/18 22:06:21
yeah, that took me a while to figure out too...
its reordering the clipnode trees because they're calculated by hulls then models, but stored in the file as models then hulls, so the previously stored hulls need to be remapped to cope with the clipnodes added into the previous models (ie: clipcount has changed since the tree for the previous hull was generated).
the alternative would be to store the trees as-is and fix them up later.
I forgot to do anything about world.spawnflags&1 signifying mission pack+hulls. I'm not sure that there's much point in it not being set, but meh.
#143 posted by gb [46.142.72.95] on 2015/09/24 22:22:20
Hexen 2 bsp2 support - cool, I might finish my big H2 map then. I considered using it elsewhere but it doesn't really match there either. It has been just collecting dust since it broke the format like a clumsy child breaks eggs. :-/
just like my ROEM maps have been collecting dust since I got vaguely pissed off with RMQ gameplay and Quake at large but was too bored, sick, busy to do much about it. Can't puzzle out the gameplay but also can't release them for vanilla quake (too big, too spacious etc)
anyway, hordes of fucking archer knights, at the ready? I'll have to try H2BSP2 some day.
uh, Hexen 2 jam in honour of this feature? Or am I hallucinating. I probably am. No one makes Hexen 2 maps anymore. If you want to Hexen 2 map, hit me up?
 Feature Request?
#144 posted by Kinn [109.147.139.107] on 2015/10/04 02:35:12
Detail brushes that are (I imagine) accidentally used to seal the void are bad, right? Might it be worth putting in a -nodetail switch or something that lets you do a test compile that discards all the detail brushes, allowing you to find leaks that are purely in the (non-detail) world brushes?
 Kinn
#145 posted by FifthElephant [82.24.73.240] on 2015/10/04 10:08:55
If you're using TB you can actually hide certain brushes.
Just go to the View tab on the right and deselect Detail Brushes.
 Fifth
#146 posted by Kinn [109.147.139.107] on 2015/10/04 13:12:39
I use Netradiant, and never could get into TB unfortunately (although I like the sound of TB2 - I may have to have a goosey at that).
For now, I notice that rebb's txqbsp has an option to "make detail leak" for this exact purpose, so I can try that I guess.
#147 posted by JneeraZ [174.109.106.46] on 2015/10/04 13:28:41
Since func_detail is an entity, I imagine your editor must have some facility for hiding/showing groups of entities ... altho I don't know much about Radiant these days.
#148 posted by Kinn [109.147.139.107] on 2015/10/04 14:16:38
Since func_detail is an entity, I imagine your editor must have some facility for hiding/showing groups of entities ... altho I don't know much about Radiant these days.
Hiding anything in netradiant does not exclude it from compile, so that would not help in debugging detail-sealing-void issues
 KInn
#149 posted by mfx [78.48.220.170] on 2015/10/04 15:03:05
Use txqbsp_xt, there is a switch -makedetailleak that does what you want.
 Mfx
#150 posted by Kinn [109.147.139.107] on 2015/10/04 16:00:07
Aye, that will have to do
#151 posted by Scampie [72.12.65.92] on 2015/10/05 04:45:09
In radiant, you just press L to bring up the entity list, and select all the func_details by clicking the first one and shift-clicking the last one in the list... you just just delete them, save as, and compile the detail-less version.
#152 posted by Scampie [72.12.65.92] on 2015/10/05 04:45:10
In radiant, you just press L to bring up the entity list, and select all the func_details by clicking the first one and shift-clicking the last one in the list... you just just delete them, save as, and compile the detail-less version.
 Idea...
#153 posted by Kinn [109.147.139.107] on 2015/10/10 14:54:12
I know there's been plenty of talk of a prefab feature before, and I think last time it ended with people talking about doing it editor-side.
However, I never like the idea of restricting the choice of editors, and I know plenty of us are using an editor that is no longer in active development (e.g. netradiant) and really want to stick with it, so is it worth talking about a compiler-side prefab feature?
The user interface would be simple - a "func_prefab" entity with a key that points to the filepath of a .map file containing whatever you want copying over. Rotation should work as expected. I don't think scaling would get used as much but that might also be worth supporting
Of course in old editors you'd lose the ability to see the geometry in your map, but in a lot of cases I don't think this would be much of an issue as you'd position the brushes in your prefab map file so that a sensible anchor point would be at the origin.
Thoughts?
 The Problem With A Posteriori Transformations
#154 posted by SleepwalkR [80.187.103.38] on 2015/10/10 15:38:59
Is how to ensure that the textures are still aligned. Translation is easy, scaling is not so easy, and rotation is a bitch. Also difficult are targetnames etc.
 In The Last Map Jam
#155 posted by ericw [108.173.17.134] on 2015/10/10 19:00:34
someone mentioned having written or used such a tool on their jam map. Seems like a great idea to me, I also like making it a standalone tool so it's not tied to one editor or compile tool.
Sleep- one idea to help with texture alignment is to have the postprocessing tool convert the map to Valve 220. That should make it easier to preserve texture alignment. Since it's a postprocessor it doesn't matter if you editor can read 220, and all qbsp's these days can.
 I Knew My Ears Felt Hot
Eric, I didn't think anyone was paying attention when I mentioned that during the last jam! :)
The "someone" in question was me. Over a couple of days before map jam 6 I hacked together some changes to Metapyziks' "VMFInstanceInserter", and while building "Princess of China" used it to place the light fixtures, skin bridges, totems, and of course googly eyes.
VMFII was built to allow the use of the func_instance entity in branches of the Source engine whose tools don't natively support it, namely Half-Life 2 and its episodes. With the map and FGD file formats of Source being based, as they are, on the Quake/Worldcraft tradition, I figured I could simply conform both types of files to the expected formats on input to VMFII, then postprocess them back to Quake land before spitting out the results. It seems to have worked out, and saves the trouble of duplicating an entire codebase of translation/rotation code.
The .map branch of my fork of the project can be found at https://github.com/ItEndsWithTens/VMFInstanceInserter/tree/add_map_support if you're interested. Github makes it easy enough to get back to the upstream project if you want to look at that, and you can see https://developer.valvesoftware.com/wiki/Func_instance for more details of how instances work in Source.
As for features, name fix up works just fine, prepending or appending a name (either one of your choice or an automatically generated unique) to your entity connections to make sure each instance remains separate, and variable replacement is no different. The func_instance_parms, _io_proxy, and _origin entities mentioned on that SDK Docs page don't work, mind you, but that's not unique to my Quake additions.
There are some caveats:
-I haven't released any binaries of my custom changes yet; I could always run off a few private builds for testing, but I haven't yet contacted the original developer to see if he's receptive to support for other games, or if he's satisfied with my approach in the event he is.
-I haven't updated the documentation, and there's a bug in Jackhammer I just realized I forgot to mention in its respective thread that keeps this tool from working conveniently there.
-The program is written in C#, so running it in Linux/OSX is sure to be tricky. What research I've done suggests it's not impossible, though, especially without any GUI libraries to worry about, and I have access to a Mac Mini with the latest OS X and as many Linux VMs as I have disk space for, so I can certainly take a crack at building it there.
-There's no scaling support. I don't have enough 3D graphics theory under my belt to even begin tackling a thing like that, and I don't know what effect it might have on Source instances (which don't support it either) in any event, so I don't know how realistic this one is.
-My code currently requires the Valve 220 .map format, but really just because that's what Jackhammer produces, and I was building my map in that editor. I can take a look at adding a little something to handle other types of map, I suppose.
 Oooh!
#157 posted by Kinn [109.147.139.107] on 2015/10/11 00:36:03
That sounds very interesting!
PS: I wouldn't bother with scaling - I mean there might be some situations where you might want to scale a prefab (e.g. the depth of an arch) - but you've got to worry about what the textures do on the surfaces that get affected by the scaling (e.g. inside of the arch), and you're probably better off just making multiple prefabs to cover the small number of scale variations that you'd want.
#158 posted by ericw [108.173.17.134] on 2015/10/17 20:11:14
The dev builds now have Hexen 2 support ("-hexen2" flag for qbsp. Thanks Spike!), and also the qbsp "-epsilon" flag from txqbsp.
http://quakespasm.ericwa.com/job/tyrutils-ericw/
I'll start a dedicated thread around here eventually, so as not to hijack this one, but I thought I should mention I finally got around to cleaning up and releasing the instance thing I talked about.
The changes I made to that other project, VMFII, turned out to be awfully clumsy implemented that way, so I turned the code into its own wrapper project. Curious parties can try out Quinstance from the releases tab of its Github page: https://github.com/ItEndsWithTens/Quinstance
Instructions are included, have fun!
#160 posted by FifthElephant [82.24.73.240] on 2015/10/19 22:21:34
So it's almost like how external bsp's are used as bmodels?
I'll tentatively say yes, I believe it's something like that, but I've never worked with bmodels before, only heard vague whisperings of their existence.
I think the best way to describe it is that it's like using prefabs, but any changes you make will automatically be applied to every instance you've already placed, and using a standalone tool means it's editor and compiler agnostic.
 Nice!!
#162 posted by ericw [108.173.17.134] on 2015/10/19 23:00:05
Can Jackhammer render a preview of the func_instance? That would be crazy.
 If This Becomes The Agreed Upon Standard Solution
#163 posted by SleepwalkR [87.146.41.84] on 2015/10/19 23:06:23
I'll add support to TrenchBroom 2 as well.
Sadly no, eric, you don't get a preview in Jackhammer. I only focused on JH when building the included FGD because it's the editor I was using. Positioning things can be slightly irritating when you can't see what you're placing, but keeping Quake running in a window makes it easy to adjust/recompile/reload/repeat, so it's workable. Of course I'd love to see actual display of the instance contents, but it's just wishful thinking for now.
SleepwalkR, that sounds wonderful! Bear in mind I'm not trying to present this as the be-all end-all solution, just one I found useful for my own project. If someone comes up with a better way to do things, I'd be just as happy to use that.
 Tens
#165 posted by adib [200.217.4.26] on 2015/10/20 17:08:35
a copy of the other map's contents will have appeared where the func_instance once was
Are they aligned by their center coords? If this is the case, I would probably try to make func_instance a brush entity of the same size as the prefab, like a bounding box. That would help keep things on grid.
Ah, thanks for the question, I'll need to clear this up in the documentation. The instance contents are not positioned based on their collective center, no. The center of the point entity and the origin of the instance map are lined up. All objects in the Filename map get offset from the func_instance by the same distance they're offset from their own map's origin, so it's reasonably straightforward to predict where things will be when all's said and done.
The Source engine tools' version of instances does have a func_instance_origin that lets you define a custom origin, actually, but VMFII doesn't yet implement that, so it won't work with Quake maps until that changes.
I should have a News post written up in a few minutes, so if it's accepted we can take further discussion over there. Hang tight!
 Cool Little Optimization For Vis
#167 posted by ericw [108.173.17.134] on 2015/10/20 23:05:49
When using func_detail, you have leaves (subdivided volumes of the map, including func_detail) and clusters (volumes ignoring func_detail). The vis speedup when using func_detail comes from vis only looking at portals between clusters.
What it was doing before was writing a copy of the visdata for a cluster for each leaf in that cluster - I just changed vis to write a single copy of the visdata for each cluster, and then all of the leaves in the cluster reference the same visdata offset in the bsp file.
All this really does is shrink the bsp file (telefragged.bsp is 10mb smaller) and maybe load a tiny bit faster as a result, but it seems like a nice optimization. Seems to be safe with old engines (winquake.exe) too.
 Neat!
#168 posted by ijed [190.22.111.8] on 2015/10/21 07:45:51
 I Think I've Asked This Several Times Before But I Keep Forgetting
#169 posted by czg [213.113.210.124] on 2015/10/23 01:44:50
Does light use the pvs data (if present) in any way to speed up traces?
#170 posted by metlslime [67.169.151.72] on 2015/10/23 02:11:15
i believe that was true in quake 2 light compilers, but not quake 1. (unless somebody added the feature to quake 1 light compilers)
#171 posted by ericw [108.173.17.134] on 2015/10/23 07:28:07
czg, my light tool doesn't use vis data. I experimented with it a while ago, but the code was messy and I couldn't get much speedup from it. I could have been testing the wrong map (was trying telefragged.bsp). It probably would help if there are a lot of delay 2 or infinite lights, but also good vis blocking.
another idea I had is to shoot a bunch of random rays from each light, and use the furthest distance hit as a bounding sphere for the light, sort of a rough guess at the pvs. haven't tried this, though.
#172 posted by Lunaran [24.56.201.253] on 2015/10/23 07:42:04
is minimum intensity contribution as bounding sphere already implemented? once a delay 2 light drops below a half percent intensity or so it might as well be cut off anyway, right?
 Yeah
#173 posted by ericw [108.173.17.134] on 2015/10/23 08:00:30
That's implemented, the -gate option. I think "-gate 1" means to cut off lights when the brightness would be 1/255.
#174 posted by JneeraZ [174.109.106.46] on 2015/10/23 08:11:17
I think enabling the multithreading a few years back was the most significant speed boost to light.
#175 posted by ericw [108.173.17.134] on 2015/10/23 09:48:08
 Right, So There's No Gain From Running Vis Before Light Really
#176 posted by czg [212.16.188.76] on 2015/10/23 11:39:51
#177 posted by Scampie [72.12.65.92] on 2015/10/23 17:45:11
I've been using -gate 10 forever... are you saying it's done nothing forever!? :(
#178 posted by Rick [75.65.153.192] on 2015/10/23 18:10:55
I asked several times in the past about what exactly the "gate" number referred to and what was the range. I never really got a good answer. My working theory is that it's the rgb value of the lightmap, 0-255. So if you set -gate to 20, everything below that is pure black? Or am I totally wrong. What always threw me off was that many references state the default value is 0.01 or some other nonsense.
 Scampie, Me Too!
#179 posted by mfx [77.180.168.150] on 2015/10/23 18:29:52
Gate -10 seems to light faster than gate -1.
A tiny bit.
 Correction
#180 posted by mfx [77.180.168.150] on 2015/10/23 18:57:42
-gate 10 versus -gate 1.
 Scamp/mfx
#181 posted by ericw [108.173.17.134] on 2015/10/23 19:29:26
I think it's been broken since it was added to tyrutils in 2013. If you have a map with lots of delay 2/5 try the devbuild in #158.
On jam6_ericwtronyn I get a huge speedup, like:
No gate: 60s, gate 5: 7 seconds
#182 posted by Scampie [72.12.65.92] on 2015/10/23 20:18:25
Wow, yeah, map I'm working on went from 18secs to light to 8 seconds (only option was -gate 10) nice!
#183 posted by Scampie [72.12.65.92] on 2015/10/23 20:21:37
...though it seems -gate 10 is a bit high of a setting now that it actually works, lost a lot of detail in my lighting :D
Still, nice that it actually works!
 Yes
#184 posted by mfx [77.180.168.150] on 2015/10/23 20:24:24
2 times faster now with -gate 10.
#185 posted by Lunaran [24.56.201.253] on 2015/10/23 21:23:30
so, what does the number after gate actually mean then?
#186 posted by ericw [108.173.17.134] on 2015/10/23 21:49:39
When you specify "-gate X": for each light, the util calculates the distance at which a surface would be lit up by that light to an intensity of 'X'. The intensity units are the same as the bsp file, so 127 is full brightness, 255 is 2x overbright. The distance calculated is used as a bounding sphere, so beyond the sphere the light casts 0 brightness.
#187 posted by ericw [108.173.17.134] on 2015/10/23 21:53:10
Scampie + mfx, awesome it is giving a speedup for you guys!
If you just have a delay 2 light in a large box room, "-gate 10" should give a visible seam where the brightness changes abruptly from 10 to 0. Might have to turn up the quake gamma to see it clearly. It's possible I still messed up the formula so i might try rewriting it in a more straightforward way.
#188 posted by Scampie [72.12.65.92] on 2015/10/23 22:26:23
I found -gate 3 worked well for my situation. Still a large speedup and I keep some of the subtle lighting effects I was doing.
#189 posted by PuLSaR [83.139.191.82] on 2015/10/23 22:35:39
i remember -gate 1 got a great speed up on old rigs in aguirRe's tools. like from 10 minutes to ~10 secs. Was is different now?
#190 posted by Lunaran [24.56.201.253] on 2015/10/24 05:22:34
127 is full brightness, 255 is 2x overbright.
That's what I was wondering, thanks.
 PuLSaR
#191 posted by ericw [108.173.17.134] on 2015/10/26 05:55:56
Tyrann just added -gate more recently to his tool (2013), and it looks like there was a bug causing it not to give as much of a speedup as it should have. but it's fixed in the most recent dev build of my version of tyrutils.
 New Release V0.15.3
#192 posted by ericw [108.173.17.134] on 2015/10/26 21:51:57
https://github.com/ericwa/tyrutils-ericw/releases
Highlights are Spike's addition of Hexen 2 support, fixed -gate, a new "_surface_spotlight" key which automatically sets "mangle" on surface lights to turn them into spotlights.
 I've Just Tried It
#193 posted by PuLSaR [46.164.250.9] on 2015/10/26 22:29:05
and -gate really speeds up the light process
 _surface_spotlight Sounds Neat
#194 posted by mankrip [66.249.88.159] on 2015/10/27 02:45:36
Also, a question: Does surface lights follows the shape of the fullbright texels, or maybe the luminance of each texel?
 No
#195 posted by ericw [108.173.17.134] on 2015/10/27 03:12:22
The "surface lights" I implemented are nothing fancy like that, all it does is handle cloning & positioning copies of point lights. It's just a shortcut around a lot of copy&paste really. It works best with runic light fixtures where it'll reliably put a single point light on each light fixture.
The q2/q3 light utils have "real" surface lighting, where the light-emitting surfaces are divided into radiosity patches, and then the area of these patches is used in the lighting calculation. See here in the q3 tools. I think the patches took their colour from an average of 32x32 texels or something.
I did experiment with that code in my tool but didn't have the greatest results, it was slow, tended to cause "hot spot" artifacts on the walls around a lava surface, and generally didn't look very good in Quake.
#196 posted by mankrip [66.249.88.164] on 2015/10/27 04:14:13
:) Thanks for the info.
Idea: Interpret the fullbright texels as transparent, and put the surface's point light behind the surface. This way, you can use the algorithm of the alphamasked texture shadows to shape the light.
The results will be more akin to spotlights, so it would have to be optional.
It would be useful for stuff like windows.
#197 posted by Scampie [72.12.65.92] on 2015/10/27 05:01:05
That seems like a really fun feature... I'm going to make a crazy disco ball of spotlight lasers
#198 posted by Spike [86.176.70.62] on 2015/10/27 05:12:30
 0_O
#199 posted by mfx [78.55.221.128] on 2015/10/27 05:23:48
That screenshot is nice!
 Surface Lights
#200 posted by oGkspAz [41.149.74.226] on 2015/10/27 09:13:21
Considering my lighting knowledge is terrible at best, here's the bit where I go: "I've seen surface lights mentioned but how does it work?"
 Spike
#201 posted by FifthElephant [82.24.73.240] on 2015/10/27 11:24:40
that screenshot reminds me of something that I experimented with.
http://quakeguy.tumblr.com/post/120732856652/stained-glass-window-casting-light
I have a feeling that however you did it might be more competent because you have managed to get the actual texture to look like it's projected, whereas mine is a bit more of a hacky workaround using alpha masked textures and a couple of different coloured lights.
#202 posted by JneeraZ [174.109.106.46] on 2015/10/27 12:03:16
_surface_spotlight sounds cool. So it just sets a spotlight based on the surface normal or something?
 Looks Noice But
#203 posted by Kinn [86.190.22.173] on 2015/10/27 12:35:48
Stained-glass window lighting to me always looks exactly like those rainbow-splatter lightmap glitches you'd see in games from the early 2000s that remind you that you need to update your OpenGL drivers.
 Warren
#204 posted by ericw [108.173.17.134] on 2015/10/27 19:35:37
Yep, it sets the spotlight based on the surface normal. It's just a little convenience thing, I always found setting "mangle" to be a pain. This way you can rotate the light fixture brushes any angle and the spotlight will always shine the correct direction. :-)
oGkspAz, there's an example screenshot + entity at the bottom of: http://ericwa.github.io/tyrutils-ericw . Basically add key/value "_surface" "texname" to a light entity, and copies of that light will be cloned on all faces with that texture name.
 @ #200
#205 posted by Scampie [72.12.65.92] on 2015/10/27 19:41:21
Surfaces lights in these tools are pretty simple things.
You place a light, anywhere in the map, and put whatever _color and light and delay settings you want on it... you then put "_surface" "NAME_OF_TEXTURE" on that light, and the light compiler will automagically copy that light around just in front of any surface with that texture, spaced apart every 128 units.
It's best for things like textures that are clearly light sources, a nice convenience so that you can mess with a single light once, and all of them will be lit up. It can also be good for something like Lava, and doing the legwork of lighting it all up for you.
 Minor Promble
#206 posted by Kinn [86.190.22.173] on 2015/10/27 21:06:35
A minor thing though is that if BSP chops your surface up, you get a new light for each face which can make things brighter than expected in places. This seems to be a problem with liquid surfaces mainly.
 Yeah
#207 posted by Scampie [72.12.65.92] on 2015/10/27 21:44:23
I like placing the lights myself for lava, gives better control.
 Scampie
#208 posted by mankrip [66.249.88.159] on 2015/10/27 21:51:06
Thanks for the 128 units clarification.
I wanted to ask that before, but couldn't formulate the question properly.
#209 posted by mankrip [66.249.88.112] on 2015/11/04 10:54:08
I don't know if there's an option for this already, but it would be cool for the dirtmap to be sized accordingly to the angle of the surface. This way, it would give a better impression of being dirt, since it would appear to have been affected by gravity and friction (horizontal surfaces gets the most dirt, vertical surfaces gets the least dirt).
Implementing this through an adaptive -dirtgain would probably be enough. -dirtscale would have to remain the same, to ensure equal shading at the edges.
 Antilights Broken?
#210 posted by Kinn [86.139.243.200] on 2015/11/07 19:23:41
As far as I can tell, antilights (lights with negative value) no longer work - can anyone verify?
I was using quite a few of these :{
 Argh
#211 posted by ericw [108.173.17.134] on 2015/11/07 19:27:59
I'll check it out - I never test those, but hopefully it's easy to fix.
 Cheers
#212 posted by Kinn [86.139.243.200] on 2015/11/07 19:34:14
to elaborate:
One of the things I made use of before were antilights with a "style" value - crucially these only subtracted light from other lights with the same style value.
 Kinn
#213 posted by onetruepurple [88.156.138.104] on 2015/11/07 19:44:36
Are you using minlight?
#214 posted by ericw [108.173.17.134] on 2015/11/07 20:05:51
Ok, they should be fixed in the dev build: http://quakespasm.ericwa.com/job/tyrutils-ericw/
I just made a mistake when reworking the light culling in the last release (to make -gate give a proper speedup), and it was culling all of the antilights.
The special behaviour of style should still work. I didn't realize they would work that way at first, but it makes sense, because whenever a light with "style" set hits a surface, there's a new lightmap allocated for that style number - so a negative light with that style number would only affect that separate lightmap.
 Awesome
#215 posted by Kinn [86.139.243.200] on 2015/11/07 23:00:46
Thanks!
 Thats A Neat Idea
#216 posted by ijed [200.73.66.2] on 2015/11/09 14:36:25
 _surface_spotlight Workaround
#217 posted by dumptruck [66.214.184.70] on 2015/11/18 08:30:59
It seems like when _surface_spotlight is set in the entity the actual surface no longer illuminates as it would without. Is there a work around or is this a bug?
 I Think That's Intended
#218 posted by ericw [108.173.17.134] on 2015/11/18 09:23:31
To get a regular surface light in addition to the spotlight, just have two template entities, one with and one without _surface_spotlight set. You can have multiple lights with the same _surface value :)
 Slapping Forehead!
#219 posted by dumptruck_ds [66.214.184.70] on 2015/11/19 05:59:48
Thanks that will work - and it totally makes sense.
#220 posted by mankrip [66.102.8.209] on 2015/11/20 14:18:58
I think dirtmapping should not be applied in points where there's a light close by, 16 or 32 units maybe. The low resolution of the lightmaps makes small surfaces in cramped places close to a light go fully dark.
 #220
#221 posted by Kinn [31.48.139.161] on 2015/11/20 14:42:52
Hehe, I was thinking something similar, but it needs to be controllable per light.
Remember you can work around all the issues currently by using _nodirt on a per-light basis. However, that requires more light ents to be added, which may get fiddly and annoying as the map scales up.
A way of doing what you are saying would be to introduce a _nodirt_radius key on a light, which means the light gets "dirty" as normal except on surfaces within (_nodirt_radius) from the light.
the transition between nodirt and dirt needs to be blended in as well to avoid ugly transitions. Ugh, maybe another key is needed to define when the blend starts :/
 _nodirt Didn't Work
#222 posted by mankrip [66.102.8.199] on 2015/11/20 16:21:15
 Mankrip
#223 posted by Kinn [31.48.139.161] on 2015/11/20 16:26:28
sorry I forget the names of the keys, I think they have changed once or twice as the feature developed
#224 posted by mankrip [66.249.88.159] on 2015/11/20 17:29:10
No problem; I'm still using my custom version from when I implemented lit water support.
 V0.15.4 Released
#225 posted by ericw [108.173.17.134] on 2015/12/11 02:06:32
change list & downloads:
https://github.com/ericwa/tyrutils-ericw/releases
Mostly bugfixes, except there is a new _sunlight3 that comes from the bottom hemisphere, instead of the top (_sunlight2).
This is mostly for maps floating in the clouds, where you want skybox under the map that emits light. Combine both sunlight 2+3 for light coming from all directions, and use two different colors for crazy effects.
Also, the -parse_escape_sequences option for light is a gimmick that lets you make red text in door/trigger messages, which previously you could only do with custom QC.
 Updated Jackhammer Fgd
#226 posted by DaZ [89.168.60.163] on 2015/12/11 11:44:53
 Cools Stuff
#227 posted by Breezeep_ [108.53.84.156] on 2015/12/11 22:06:31
I'd like to see a little demonstration of the new _sunlight3.
#228 posted by Lunaran [66.235.55.196] on 2015/12/12 00:59:20
I added to my privately hacked tyrlite branch a "domelight" (this was pre-sunlight2), with control over color and intensity coming from straight up, the horizon, and straight down, blending between them (even though I'm not really working on a map that would take advantage of that.)
There's enough ways to light a world from the sky that moving stuff like this from infinitely numbered worldspawn keyvalues to a light_sun entity would be prudent, except for the "no spawn func" errors it would produce. Does stripping an entity from the bsp seem dangerous or counter to some method of production? How often do people really re-light a BSP without re-BSPing it first?
#229 posted by metlslime [159.153.4.50] on 2015/12/12 01:15:13
info_null is ignored by the game engine, so you could have an info_null full of sun properties.
But is it really better than just putting it on the worldspawn?
 Put Them In A Light Entity
#230 posted by Kinn [109.147.141.18] on 2015/12/12 01:30:02
and flag it with a special key (eg _sun: 1) to tell light.exe that this is just your holder for the sun properties and not a normal light
classname: light
_sun: 1
_some_cool_sun_property: 21.463
I have spent maybe 2 seconds thinking about this, so there may be a better way.
#231 posted by Kinn [109.147.141.18] on 2015/12/12 02:00:12
is it really better than just putting it on the worldspawn?
Just feels cleaner to keep the sun properties encapsulated in a single dedicated entity that you can copy 'n' paste between maps easily.
Also, getting a bit carried away with this...but with a sun as its own entity - you could support multiple suns by having multiple entities.
 One More And I Will Shut Up
#232 posted by Kinn [109.147.141.18] on 2015/12/12 02:07:32
To make setting the sun angle easy you could just target your sunlight entity towards an info_null, to implicitly specify the direction of the light (the setup would look like a cute little solar system)
#233 posted by adib [177.19.61.9] on 2015/12/12 02:33:08
Multiple sun entities instead of _sunlight2, _sunlight3, etc?
 Lun
#234 posted by ericw [108.173.17.134] on 2015/12/12 03:04:24
Cool, blending the colors/intensity was something I wanted to try and will probably test out. control for the horizon is a good idea too.
If I'm going to add a new, tidier way to specify sun settings, I would be tempted to do it properly and make new entity types (light_dome for _sunlight2/3, light_sun for regular sunlight), and then strip them out when writing the bsp. Even the way surface lights are currently specified is sort of a hack, it should be a "light_surface_template" classname or something.
If anything is being stripped when light writes the entities to the bsp, it might make sense to make the light tool read entities from the .map file rather than the bsp, this would avoid a failure in case you ran "light" twice in a row. It would also mean you can skip the "qbsp -onlyents" when iterating on lighting settings, which could save a few seconds.
#235 posted by Lunaran [66.235.55.196] on 2015/12/12 05:54:20
with a sun as its own entity - you could support multiple suns by having multiple entities.
This is what I was thinking. Although, as someone with experience lighting a map with a fuckload of suns, beyond a very limited point (like two or three, which we have now) the line between imperceptibly subtle and clownishly gaudy seems to get pretty narrow.
#236 posted by necros [109.201.154.162] on 2015/12/12 06:42:57
i'd like to have the ability to map lightstyles to sunlights... then you could have 4 'suns' that are always off, and flicker them randomly via QC.
 #236
#237 posted by mankrip [66.249.88.159] on 2015/12/12 06:56:47
Yes! For thunder & lightning effects!
 Yeah
#238 posted by ericw [108.173.17.134] on 2015/12/12 08:05:47
that would be sweet. I think it's easy to do in terms of the lighting code, the only challenge is how to expose it to QC. That's probably another argument for using entities for sunlight, it could work the same as ordinary lights; if the mapper sets "targetname" on the sunlight entity, the compiler assigns it a lightstyle.
#239 posted by Lunaran [66.235.55.196] on 2015/12/12 09:49:29
I tried lightning tied to a skybox change a while ago, but every engine's got its own console command for the skybox and they're not consistent :/
You'd hit that 'max lightstyles for a face' limit quick though.
#240 posted by Spike [86.135.244.26] on 2015/12/12 09:59:55
yay for shadowmaps and rtlights...
#241 posted by JneeraZ [76.182.53.183] on 2015/12/12 10:31:42
Moving all features that affect the world into entities would be neat.
"sky_fog" entity or something for easily copying fog between maps, etc...
#242 posted by mankrip [66.249.88.159] on 2015/12/12 13:28:03
Suggestion: use the classname "info_world".
#243 posted by mankrip [66.249.88.164] on 2015/12/12 13:31:50
And "info_world_sun", "info_world_fog", etc. in case of different entities for different features. Just to make it clear that such entities are global effects, not local effects.
#244 posted by FifthElephant [82.24.73.240] on 2015/12/12 13:41:45
When are we getting phong shading?! WHEN?!
 Fifth
#245 posted by mankrip [66.249.88.159] on 2015/12/12 13:57:46
If EricW doesn't implement it, I will.
But a proper implementation will most likely require surface flags (or, more specifically, surface groups), and the actual algorithm may not be Phong shading, but something that looks similar. There are a number of design issues to consider.
This is one of the features that I've been thinking about during this whole year, and it's not simple.
#246 posted by adib [177.19.61.9] on 2015/12/12 14:32:09
And when are we having radiosity? Oh Lord, when? I wonder...
 Well
#247 posted by FifthElephant [82.24.73.240] on 2015/12/12 14:38:48
for organic geometry how about something like "func_detail2" or "func_group2"? Something outside the regular thing that just applies it to a whole brush?
#248 posted by FifthElephant [82.24.73.240] on 2015/12/12 14:39:34
I know it would be more ideal to apply it to surfaces but I would love to see something, *ANYTHING*, in the mean-time.
 #247
#249 posted by Kinn [109.147.141.18] on 2015/12/12 14:46:58
better to have a key:val on any func entity
e.g.
_smoothangle: 15
That way you can control which faces get smoothed based on angle.
#250 posted by FifthElephant [82.24.73.240] on 2015/12/12 14:51:07
I would be all in favour of Quake 2 style surface flags... I know it's introducing a new format for Q1 but at this point does it matter?
#251 posted by Kinn [109.147.141.18] on 2015/12/12 15:01:13
I would be all in favour of Quake 2 style surface flags... I know it's introducing a new format for Q1 but at this point does it matter?
You have to think about compatibility with editors like netradiant that are no longer being updated.
 #247
#252 posted by mankrip [66.249.88.159] on 2015/12/12 15:26:00
This would create yet another legacy feature that would become redundant and require extra work to avoid conflicts and retain compatibility with.
Plus, most of the work I need to do before developing my approach is to implement a bunch of BSP debugging features in the engine, in order to analyze and tweak things properly without blind trial and error. The smoothing algorithm itself shouldn't require much time afterwards.
 Adib
#253 posted by Spirit [92.196.102.246] on 2015/12/12 15:54:43
q1rad
#254 posted by JneeraZ [76.182.53.183] on 2015/12/12 16:13:27
What's the deal with q1rad? Does nobody use it because it doesn't have all of Eric's latest jingles and jangles or does it not really work all that well?
 It Works
#255 posted by DaZ [89.168.60.163] on 2015/12/12 16:51:18
It is essentially the hl1 light tool ported to Quake.
The problem is that the final results can be quite washed out and lack contrast. I lit crdm2 with it and looking back now, oh god the lighting is awfully dull!
 Yeah
#256 posted by Lunaran [66.235.55.196] on 2015/12/12 20:33:28
the q2 light tool supported radiosity too. default 8 bounces, max 40. in retrospect, the best looking option would have probably been -bounce 1, which is what I'd use for quake if we had it (one pass of scatter and that's it). since Q2 came out when I was young and dumb I thought -bounce was one of those parameters that you set to the maximum when you do your 'final compile' so I basically released two needlessly washed out yellow Q2 maps.
vrad for source just does the max number of bounces it can, and when it runs out of light it stops, but their scatter and falloff equations were probably adapted out of a real optical physics textbook by an in-house mathematician they pay a half million dollar salary, so it always looks perfectly real in HDR.
 Smoothed Lighting
#257 posted by Spike [86.135.244.26] on 2015/12/12 21:34:55
http://triptohell.info/moodles/junk/tyr_smoothnstuff.zip
adds a _smooth key to your func_detail entities that smooths the normals across surfaces.
you might want to use -anglescale 1 or the equivelent field in order to prevent quake's harsh boundaries between lit and unlit areas.
the qbsp flags the various surfaces. it doesn't currently support smoothing groups, but it would be the qbsp that would need to generate dupe verts for surfaces with different groups (this ensures that engines with specular effects can work correctly).
also adds a few other things that I've been messing around with. check the readme (be warned that much of the extra stuff only works with fte, but not always to the detriment of other engines - _lmscale has a well-defined fallback).
there's probably other issues with it - I'm not the intended audience so I'm kinda lazy where it comes to testing.
per-surface flags would be really nice right now... but yeah, map editors.
 Cool, Thanks Spike!
#258 posted by ericw [199.7.159.106] on 2015/12/12 21:44:45
Will check it out in a bit
 Spike
#259 posted by FifthElephant [82.24.73.240] on 2015/12/12 21:49:14
not sure how it works..
I made a key in my func_detail as _smooth and put the texture name in the field but it doesn't do anything?
 High Five, Spike
#260 posted by mankrip [66.249.88.204] on 2015/12/12 21:49:24
I'll take a look at it too.
 Screenshot
#261 posted by FifthElephant [82.24.73.240] on 2015/12/12 22:05:14
I'm trying to make the big pipe in the middle lit smooth... even with this util I am not getting smoothing.
http://www.quaketastic.com/files/screen_shots/5thnophong.png
Any ideas?
 Fifth
#262 posted by ericw [108.173.17.134] on 2015/12/12 22:58:09
It's working for me: http://imgur.com/a/8KLPX
That's with just one light entity, "_anglesense 1" set, delay 3.
What kind of light sources are lighting the pipe currently?
If it's _sunlight, try adding "-anglesense 1" to the light command line, this controls how much sunlight (only regular sunlight, not _sunlight2) is affected by normals, 1 is the maximum amount.
Sunlight2 ignores normals, so try turning it off if you're using it.
You're running both spike's qbsp + light?
 Eric
#263 posted by FifthElephant [82.24.73.240] on 2015/12/12 23:06:06
I just tried it on an indoor area and it seems to work. It's not quite as good as the smoothing in Quake2's tools. I get very weird lighting on pipes for example (it's smooth but it doesn't like pipe bends and I'm getting harsh results)
 Cool
#264 posted by ericw [108.173.17.134] on 2015/12/12 23:21:15
i'd imagine with some polishing it can be made to work as well as Q2's, the Q2 tool source is available too.
 Per Surface Flags
#265 posted by mh [213.233.150.23] on 2015/12/12 23:23:11
I haven't given this a whole load of thought, but just wondering how much of a big deal it would be to just use the Q2 .map format but compile it to a Q1 .bsp format.
 Ok
#266 posted by FifthElephant [82.24.73.240] on 2015/12/12 23:23:21
I managed to come up with a solution that works...
I've made just the visible faces have the texture that needs to be smoothed. This seems to only work with indoor lighting though. I do hope it can be applied to outdoor lighting too since I don't want to go back to the horrible method of lighting prior to sunlights.
Here's an example that shows the difference between phong shading and normal quake lighting -
https://twitter.com/GavinEdgington/status/675802921334915072
 Specifically
#267 posted by FifthElephant [82.24.73.240] on 2015/12/12 23:27:24
The pipes have lighting issues if anything but the visible faces have the smooth texture. I made the non-visible connecting faces use a skip texture to avoid these errors.
#268 posted by ericw [108.173.17.134] on 2015/12/12 23:33:40
Ah, I see what you mean Fifth, sunlight is not phong-shaded. I'll see if I can fix it.
 Good!
#269 posted by mankrip [66.249.88.154] on 2015/12/12 23:52:54
 #265
#270 posted by mankrip [66.249.88.159] on 2015/12/13 00:02:46
 Implementation
#271 posted by FifthElephant [82.24.73.240] on 2015/12/13 00:03:03
is certainly not perfect and I would want to be able to have _smooth work with other brush types like func_group etc.
 I'm Sorry For My Sins!
#272 posted by Spike [86.135.244.26] on 2015/12/13 03:44:59
@mankrip
afaik .map format doesn't have that many differences, just 3 extra args. brush contents, face flags, and face light level.
tyrlight already parses q2 maps and generates q1 bsps, however it completely discards the extra 3 args (also, no value texture alignment tweaks).
I don't see why you'd need q2 fgd changes at all, you'd still be targetting q1 mods and tools, and editors that support both would likely continue to support both without really caring.
the real issue is 1) editors that do not support quake2. 2) editors that insist on using wal files instead of wads. 3) editors that assume the palette is that of quake2 instead of quake.
for the editors that are mainitained tbh all it requires is for someone to be vocal enough - its amazing how much of a motivator harasment can be.
@ericw
I didn't change anything to do with sunlight that I remember, so yeah, no support there.
sorry about any other issues with it too. I was going to sit on it while someone else found the kinks for me, before making it public.
but, well, open source matra: release early, release often. I'm too lazy for the second part though.
by releasing I hoped to at least save some time for mankrip.
in theory it should be possible to switch the barrycentric coords part to use the entire polygon instead of a triangle (giving a less-triangular/higher-quality apearance), but I just went with what I understand.
@Fifth, there's nothing specific about classnames, it ought to work with any classname (at parse-time, on account of the way it flags texinfos). certainly there's nothing specific to func_detail.
all I can really suggest is to make sure that there's no tiny cracks between faces, because it calculates normals at each vertex and then just interpolates those over the various triangles that form the surface in a similar way to how a gl engine would interpolate normals.
remember that it'll happily smooth around any angle, 20 degrees, 90 degrees, 170... this means you'll likely want to use some other texture for the top/bottom of your mid-pipe cylinders so that they don't cause it to try to curve around those rings. secondly, sunlight isn't supported right now.
if you're looking at the map in fte or dp, make sure you disable any specular first. the texinfos are flagged to say that normals should be interpolated, but engines don't understand that yet, and yeah, I forgot sunlight, and there can still be harsh (often mid-surface) boundaries due to the maths behind the anglescale thing (at one point I was toying with the idea of these surfaces just always using a value of 1).
 Update
#273 posted by ericw [108.173.17.134] on 2015/12/13 05:22:37
I fixed a few bugs that were causing black fringes in my phong test map, and added support for phong+sunlight.
Here is a build: http://quakespasm.ericwa.com/job/tyrutils-ericw-spike/3/artifact/dist/tyrutils-ericw-v0.15.3-7-g05de1ad-win32.zip
and the source code:
https://github.com/ericwa/tyrutils-ericw/commits/smoothnstuff
Hopefully this works on your map, Fifth!
Note, this is based on the previous release of tyrutils-ericw (0.15.3), I'll need to do some merging later on.
 Editor Support
#274 posted by SleepwalkR [93.209.70.10] on 2015/12/13 07:54:33
I'd add support for Quake 2 map in Quake games in a jiffy. Would be really easy too.
 Eric
#275 posted by FifthElephant [82.24.73.240] on 2015/12/13 10:07:32
That seems to work actually. Very cool. Have you altered the code at all? It seems slightly less smooth than before (but still a lot better than ordinary lighting).
#276 posted by FifthElephant [82.24.73.240] on 2015/12/13 12:19:19
Seems like whole number integers on vertices or on texture alignment place a huge role in getting the lightmap to look right. Otherwise you get huge black bars or just errors in the lightmap.
 Fifth
#277 posted by ericw [108.173.17.134] on 2015/12/13 20:15:37
I see what you mean about less smooth / more banding, I messed up something with that last build; trying to fix it..
#278 posted by ericw [108.173.17.134] on 2015/12/14 00:13:48
@Fifth here's another build to try, I think it fixes the things I broke in the last one: http://quakespasm.ericwa.com/job/tyrutils-ericw-spike/9/artifact/dist/tyrutils-ericw-v0.15.3-10-g896b821-win32.zip
There is still room for improvement; I still get a few fringe artifacts on some terrain that was rotated 15 degrees, but it's pretty minor and way better than the last build.
@Spike: I switched this build to use SSE; for some reason x87 vs SSE was making a difference in the barycentric coordinates code, with SSE having less artifacts when interpolating points outside the triangles. I will investigate it better at some point :-)
#279 posted by FifthElephant [178.99.14.242] on 2015/12/14 08:31:59
I will give it a whirl after work. These compilers give me leaks compared to the ones I normally use
#280 posted by FifthElephant [178.99.14.242] on 2015/12/14 08:32:52
I normally use bjp's compilers.
#281 posted by ericw [108.173.17.134] on 2015/12/14 19:03:59
Yeah, these are less forgiving than bjp's. Raising the -epsilon parameter to qbsp can help, default is -epsilon 0.0001, try 0.001, 0.01
 Light.exe
#282 posted by FifthElephant [82.24.73.240] on 2015/12/14 22:27:05
seems to crash for me in this build. No idea what's causing it.
 Shit, Sorry
#283 posted by ericw [108.173.17.134] on 2015/12/14 23:18:44
Here's another try...
http://quakespasm.ericwa.com/job/tyrutils-ericw-spike/10/artifact/dist/tyrutils-ericw-v0.15.3-11-g78ca193-win32.zip
I notice extra/extra4 + soft crashes this one. Sorry about all the buggy builds but it'll take a bit to get all of this stuff stabilized and merged. I gotta go map first!
 Hmm
#284 posted by FifthElephant [82.24.73.240] on 2015/12/15 01:06:24
This one appears to compile but I'm getting some black bars across surfaces even worse than the first build.
It's very likely this is due what I am testing it on (bsp pipe work) and is caused by micro-leaks and things along those lines. I suspect there might not be an easy fix for this other than to reduce detail for smoothed light maps, have smoothed textures use whole number values instead of decimals when doing its calculations? (I'm pretending I know what I'm talking about by this point, from my tests it appears that the closer to a whole number you get the better the smoothing appears to be across a surface).
 #284
#285 posted by mankrip [66.249.88.21] on 2015/12/15 02:35:37
In some cases, the position where two vertices of two different brushes meet can become different for either brush due to differences in precision between them during the compiling. This will make the hidden orthogonal face of one of them to pop out, and this will mess up with the smoothing algorithm indeed.
It's one of the extreme cases I had predicted, but it shouldn't happen too often.
 QBSP Error
#286 posted by Scampie [72.12.65.92] on 2015/12/16 12:45:59
ERROR: Too many vertices ( 65541 > 65535 )
Map also leaks in some mysterious way I haven't deduced yet because there is no .bsp generated due to the error... not sure if they are related...
Map only has 7901 brushes, so it shouldn't be hitting vertex limits I would think?
Any reason why this limit couldn't be raised?
 Oh
#287 posted by Scampie [72.12.65.92] on 2015/12/16 12:49:16
nm found the leak, and is what causes the vertex overflow...
#288 posted by ericw [108.173.17.134] on 2015/12/16 19:54:15
Cool - if you need >65k verts, I think you just have to switch to bsp2 with the -bsp2 flag. I will add that to the error message.
#289 posted by JneeraZ [76.182.53.183] on 2015/12/16 20:05:33
Which is actually a good working philosophy even if you don't want to ship a BSP2. It allows you to work on an unsealed map for much longer.
 But
#290 posted by ijed [190.22.34.36] on 2015/12/16 20:28:09
Bad working practice IMO. The longer you leave something unsealed the bigger the final task of sealing it.
I prefer keeping everything sealed as I go along, even if it's with giant bricks I'll eventually delete. At least then I know that everything else is without b0rken3ss.
#291 posted by Scampie [72.12.65.92] on 2015/12/16 21:46:21
Well, this only leaked because I'm working on this map with Lun and I merged in some of his stuff, and one of the brushes was apparently corrupt after import. Think even with some more to do, we'll still be well under and won't need to bsp2.
#292 posted by JneeraZ [76.182.53.183] on 2015/12/16 21:46:34
Depends on the map. I've had times when it would have been a fuckton of work to seal the map and it just wasn't time ...
#293 posted by [78.49.223.148] on 2015/12/16 22:44:05
The longer you leave something unsealed the bigger the final task of sealing it.
 ^^that Needs To Be Framed
#294 posted by mfx [78.49.223.148] on 2015/12/16 22:45:08
and whatnot.
 Hey EricW
#295 posted by mankrip [66.249.88.154] on 2016/01/04 23:04:08
I've confirmed that the problem with not all water surfaces being lit is a tools bug.
The light tool will only generate lightmaps for the liquid surfaces that gets hit by a light entity's beam. If no beams hit a liquid surface, no lightmaps will be generated for it. I couldn't figure out a simple way to fix this yet.
I'm compiling the maps with qbsp -splitspecial enabled.
 Mankrip
#296 posted by ericw [108.173.17.134] on 2016/01/05 00:17:23
I see, normally face->lightofs == -1 means the lightmap is black, but for liquids you need to treat -1 as "not compiled with lightmapped water, so render fullbright", is that right?
It should be easy enough to always save lightmaps for liquid faces, even if solid black. But I don't think I added lightmapped liquids support to tyrutils-ericw, do you have the code for it already? I am happy to add a command line flag for it, just don't want to waste time reimplementing it if you already coded it.
#297 posted by Spike [86.176.35.85] on 2016/01/05 00:41:24
that would be my fault. I added -lightwater etc args in that smoothnstuff branch, but didn't actually get around to testing it at all.
(release early, release often, right?)
it should be simple enough to tweak WriteLightmaps to just write a lightofs of 0 instead of -1 when texinfo->flags&TEX_SPECIAL, with all styles still set to 255, I guess.
I assume engines will be able to cope with that, but I've not checked.
#298 posted by FifthElephant [82.24.73.240] on 2016/01/05 00:46:09
Wasn't there a concern due to the way that most engines render water by using a deforming mesh?
#299 posted by ericw [108.173.17.134] on 2016/01/05 01:07:48
@Spike ah, cool. Still meaning to merge in your smoothnstuff branch, just lazy right now :)
@Fifth hm good point, this will need to be tested. Also thanks for the idea about using "smooth" prefix on texture names to enable phong shading, that could be good.
#300 posted by Spike [86.176.35.85] on 2016/01/05 02:11:08
re: unmerged branch
I wouldn't worry too much, I've been too lazy to fix any niggles since I uploaded it. :s
re: smooth prefix
I disagree in the long term on account of that making multiple smoothing groups too awkward to use effectively.
supporting q2 .map files for their surface flags would be good. tyr's qbsp can already parse them, so we just need editors that support q2 .map with wad files, and to actually implement smoothing groups with it.
re: lit water
yes, lit water would generally imply that the lit water surfaces should also be subdivided by the qbsp in the same way that regular walls are (this means the qbsp needs to be aware of it too, and not just the light tool).
engine-based turb subdivision isn't really a concern, as it doesn't affect the lightmap. there are already occasions where surfaces are overly pointy. if anything, having the qbsp subdivide turb surfaces too would reduce this
the 'real' concern is that very few engines actually support lit turb surfaces
re: nstuff
I kinda want to build func_illusionaries and brushes with alpha-masked textures into the world too. conceptually this would be easy (assuming it doesn't have any fields set), they can just be treated like some water contents with water vising stuff, and be converted to the appropriate contents type just before qbsp outputs the unvised bsp.
this should improve engine batching and stuff (and be consistent with what hlbsp support already requires from engines).
there's some other things that need tweeking, but I forgot much of it. :s
#301 posted by mankrip [66.249.88.10] on 2016/01/05 02:28:40
 Here's The Code
#302 posted by mankrip [66.249.88.159] on 2016/01/09 18:49:42
I've managed to fix it tonight. It should be bug-free, but it would be better to attribute a dummy lightstyle for fully dark liquids, to avoid potential "too many light styles on face" warnings.
Posted at InsideQC:
http://forums.insideqc.com/viewtopic.php?f=12&t=5769
 Spike
#303 posted by mankrip [66.249.88.154] on 2016/01/09 18:54:31
That wasn't your fault. I've implemented this code way before you released your smooth shading code.
My code still uses an old version of TyrUtils, by the way. I haven't ported it to the current releases.
#304 posted by Skiffy [175.142.195.168] on 2016/01/09 23:56:49
Lit fluids and smooth shaded surfaces... come on guys XMAS is over already and yet your still making these lovely gifts for the mapping community? :) Please continue. I do look forward to a final version with all these new toys included.
BTW the Website showing showing all the various options has been a great help getting the concepts across when it came to the dirt and sunlight options.
#305 posted by PuLSaR [37.144.41.9] on 2016/02/04 15:35:15
I use light v0.15.3-7-g05de1ad and it crashes when I combine -extra4 and -soft options. While these options work fine if I use them separately.
Also I can't find if there's per entity minlight support. Adding minglight key to bmodel entities doesn't seem to work and documentation does have information about it.
 Hm
#306 posted by ericw [108.173.17.134] on 2016/02/04 19:52:30
I think the -extra4 and -soft crash is fixed in v0.15.4: http://ericwa.github.io/tyrutils-ericw/
The per-entity minlight key is: "_minlight". There's a section of the light manual "Model Entity Keys" but it's easy to miss!
 Yay!
#307 posted by PuLSaR [37.144.41.9] on 2016/02/04 20:43:05
That crash is really fixed in 0.15.4.
And thanks for pointing me at _minlight key, I really managed to miss it.
 Some Ideas
#308 posted by PuLSaR [37.144.41.9] on 2016/02/05 16:36:38
Is it possible to make something similar to the shadow brush in hl2? It's a brush covered with texture with a special name (like skip) and doesn't have collision but casts shadows like it was a visible brush.
That would allow to manually create shadows for models (AD trees come to mind) or some new lighting effects.
If something like this already exists in quake you can point me at it.
 Skip Texture + Func_illusionary?
#309 posted by ijed [186.9.134.104] on 2016/02/05 16:55:44
 I Supposed Skip Textured Brushes Don't Cast Shadows
#310 posted by PuLSaR [37.144.41.9] on 2016/02/05 17:08:03
 Pulsar
#311 posted by mfx [78.49.255.58] on 2016/02/05 17:58:05
Set _shadow 1, or is it _shadows 1?
#312 posted by FifthElephant [86.4.213.148] on 2016/02/05 18:08:04
What mfx said
 Are The DP Lighting Errors
#313 posted by dumptruck_ds [24.205.142.5] on 2016/02/05 19:39:43
you patched still in these new versions or was that a separate branch you gave me?
 Tree Shadows
#314 posted by necros [173.199.65.22] on 2016/02/05 19:49:34
maybe a func_wall which is kill targeted immediately with a fence texture of leaf shadows????
#315 posted by Baker [65.60.224.195] on 2016/02/05 19:52:56
(I thought about posting that necros, but that's cheesy.)
#316 posted by ericw [108.173.17.134] on 2016/02/05 20:07:25
dumptruck_ds: Yeah, the fixes for DP are in the main branch v0.15.4 which is what I recommend using: http://ericwa.github.io/tyrutils-ericw/
I think Spike has a better fix for the problem in qbsp in his patch, I want to test it a bit; I hope to return to working on this soon and merge his stuff and mankrip's patch :-)
 Mdl Shadows
#317 posted by ericw [108.173.17.134] on 2016/02/05 20:16:54
It would be possible to make the light raytracer trace through mdl's so they cast proper shadows. If an entity has "_shadow" "1" set and "mdl" or "model", try to load that mdl? there would need to be -basedir / -game flags to light so it can find your mdl's.
The thing that would mess it up, though, is this would likely make the mdl's black in game, since they would usually cast a shadow over where the engine samples the lightmap. So it might not be worth the effort
 Fun Ideas Mostly For Entertainment Purposes
#318 posted by Baker [65.60.224.195] on 2016/02/05 21:11:35
More or less as amusement ideas.
1) WAD3 support. Screeshot More fun with more colors. Sample halflife.bsp download which Mark V can load both in the Open GL renderer (and also in the software renderer too!) Adding Half-Life map BSP 30 type of support is rather easy in the engine.
2) Rotation. You thought about it last summer.
3) Mirrors visibility support.
/Like people haven't posted enough ideas in this thread!
 Ok Check This Out For A Wishlist
#319 posted by Kinn [86.190.22.230] on 2016/02/05 21:22:27
Following on from what ericw said about shadows from mdls, there's a problem obviously in how the engine lights the mdls in game.
Imagine also lighting the models properly - i.e. the light tool writes a new type of lit file that saves lightmap information for specifically flagged mdl entities - then custom engines can read these new lightmaps and if one exists for a model it uses that rather than using the default way of mdl lighting...
 WAD30 Is HL1?
#320 posted by onetruepurple [93.105.177.18] on 2016/02/05 21:24:55
What's the benefit, considering how modern engines already allow 24-bit external textures?
 Ericw, Spike & Mankrip
#321 posted by dumptruck_ds [24.205.142.5] on 2016/02/05 21:34:27
You guys rock thank you for the DP fixes. Really good to have options for folks that refuse to try other source ports.
 @kinn
#322 posted by Baker [65.60.224.195] on 2016/02/05 22:16:11
A big static .mdl entity floats in the air casting a shadow below.
On the ground, under the shadow is a rocket launcher --- also a .mdl.
Should the rocket launcher get a shadow from the object above? Or not receive a shadow because it is a .mdl.
Or worse, a player types r_shadows 1 in the console --- now what should happen?
Then, out of nowhere, Barnak shows up and fires a rocket, generating a dynamic light to add to the mix ...
Not only that: a decent chunk of people use DarkPlaces and it not really known whether or not DarkPlaces may ever be updated again by LordHavoc who is off doing prosperous things.
I think many of those users griped quite a bit about alpha textures in the Arcane Dimensions release, in large part because AD was an exceptionally high profile release.
(Complex world ...)
 EricW
#323 posted by mankrip [66.249.88.159] on 2016/02/06 00:28:51
I've noticed that lit water gets dirtmapped, but it doesn't generates dirtmaps on the other surfaces.
Generating dirtmaps on the other surfaces could be a cheap alternative to alphablended shorelines. But maybe some mappers would prefer to just not generate dirtmaps on liquid surfaces at all.
Also, my code doesn't take care of sunlights. Please take a look to see if sunlights should also be modified for backfaced liquid surfaces.
 Hacky Suggestion
#324 posted by Preach [77.99.55.146] on 2016/02/06 18:05:05
Is it possible to make something similar to the shadow brush in hl2? It's a brush covered with texture with a special name (like skip) and doesn't have collision but casts shadows like it was a visible brush.
Yes, it's called info_null : - p
Seriously, a brush-based entity with info_null and "_shadow" "1" should case shadows but disappears in-game. It does use up a model precache, but you should be able to safely combine all of them in your map into one entity to it only takes a single slot away.
#325 posted by necros [172.98.67.80] on 2016/02/07 17:32:34
oh heh, that's a good idea. i was thinking of making think: SUB_Remove and nextthink:1.0 or something but that's even better.
 Default Quake With Dirt AO
#326 posted by Skiffy [219.92.193.192] on 2016/02/08 14:06:19
I thought I would find it in here but does anyone remember the batch tool for recompiling all of quake1's maps to use the new dirt AO?
 I Wouldn't Recommend Doing That
#327 posted by mankrip [66.249.88.159] on 2016/02/08 14:33:53
Vanilla Quake has several places, like the wooden stairs to the E4 pool in the start map, that doesn't behave well with dirtmapping.
A manual editing of such situations is recommended.
#328 posted by necros [66.249.83.80] on 2016/02/09 19:01:51
I did it once. It looked like shit. :(
Maybe some tweaking could help, but it might have to be done per map.
 Sunlight 2 Color Key?
#329 posted by Skiffy [210.195.226.108] on 2016/02/10 16:27:59
Question... sunlight supports color but does the ambient sunlight2 also support its own separate color? If not could that be added? Nice cold shadow with warm lighting done for exteriors super easy.
 _sunlight2_color
#330 posted by czg [213.113.210.124] on 2016/02/10 16:39:05
 _sunlight3_color
#331 posted by [92.229.163.50] on 2016/02/10 16:52:23
for the experienced user.
#332 posted by necros [172.98.67.84] on 2016/02/10 23:22:17
Nice cold shadow with warm lighting done for exteriors super easy.
That is one of my favourite setups, but i've also found other cool combos like Yellow light and green shadows (eg: the interstellar skybox)
 Sweet
#333 posted by Skiffy [219.92.52.161] on 2016/02/11 01:00:17
I was suspecting as much. Nice to know that works! :)
 Light Styles
#334 posted by necros [174.95.107.3] on 2016/02/14 05:06:48
Is something changed with the way 'style' is done on lights? I have a bunch of lights in my map with no targetname, but I have manually set them to use style 12. I then was changing them in QC by directly referencing style 12 instead of doing the typical target/targetname shtick.
However, this no longer works with the new tyrutils (I was using aguirre's light before). I've checked my code and I'm still modifying style 12, but it seems like the lightmaps lost their styles..?
 Necros
#335 posted by ericw [108.173.17.134] on 2016/02/14 06:37:30
weird, that should work. If it was broken in the tool, I'd expect the regular flicker styles 1-11 would also be broken.
Try version 0.15.4 from http://ericwa.github.io/tyrutils-ericw/ if you're on a different version?
 Ohh Ok
#336 posted by necros [172.98.67.68] on 2016/02/15 02:53:13
i see, for some reason, delay 4 lights cannot have lightstyles in tyrutils?
can we revert that so that it works with all lightstyles?
also, it appears that delay 4, 'local minlight' is broken? it looks just like a normal light.
#337 posted by ericw [108.173.17.134] on 2016/02/15 04:12:38
Ah, good catch, delay 4 lights don't support lightstyles. They are handled in a different function that applies minlight, and it just assumes the style is 0. Should be easy to fix.
As a workaround, delay 3 (infinite) should be almost the same as delay 4, especially on styled lights, because the engine will be blending the base lightmap with the styled one, so you wouldn't really get a minlight effect even if the styled light was using delay 4.
Delay 4 is working correctly for me otherwise, though. Maybe send over the map if you can't get it going?
#338 posted by necros [172.98.67.68] on 2016/02/15 04:38:04
nm about the delay 4 not working. i think it was the dirt mapping making it look like it was attenuating. :P
 Brush With Duplicate Plane
#339 posted by DeeDoubleU [134.249.211.40] on 2016/02/15 09:59:47
Trying to find problematic brush atm. Log blames line 66597.
Using notepad++ to edit .map file (manually cut bunch of entities and see if problem is gone) and through described process I found that compiler and notepad probably count lines differently, because given line was commented one (entity number) few times or part of a light entity.
What's the catch here? How can I find actual line that compiler refers to?
 Smooth Shading ?
#340 posted by Skiffy [115.132.145.159] on 2016/02/15 14:46:23
I remember seeing some screenshots and talk of smooth shade surfaces using textures with a prefix or suffix of some sort included to tell the compile that they should all be smoothly shaded together... It was this lovely set of tools correct? Still in development or another offshoot somewhere else that I am missing?
Feel free to correct my madness if I am imagining such things. :P
 Skiffy
#341 posted by DeeDoubleU [134.249.211.40] on 2016/02/15 14:56:32
#342 posted by Skiffy [115.132.145.159] on 2016/02/15 15:41:21
Ah that looks like it.... but the download links dont work anymore.
#343 posted by FifthElephant [178.107.135.44] on 2016/02/15 16:15:07
You can always email me and I will send you my compilers later from home? They have the smoothing
#344 posted by necros [172.98.67.72] on 2016/02/15 16:26:59
i've lost track actually... but is the smoothing stuff not in the normal version we pick up from github?
 More Final Release Planned?
#345 posted by Skiffy [115.132.145.159] on 2016/02/15 16:41:12
No rush right now. I would rather wait for a more official release I guess with some notes in the text file I can refer to. I can keep myself busy with the monster update for now.
#346 posted by mankrip [66.249.88.154] on 2016/02/15 16:58:13
It would be good if the compiler outputted the whole brush to the console when it causes an error.
#347 posted by mankrip [66.249.88.159] on 2016/02/15 17:00:59
I'll wait for a release with smooth shading and lit liquids put together.
#348 posted by Kinn [86.190.22.230] on 2016/02/15 17:46:56
lit liquids
Wait, what?
Which engines do/are gonna support this?
 Mankrip
#349 posted by DeeDoubleU [134.249.211.40] on 2016/02/15 18:07:15
I would be happy with entity and brush numbers.
 Kinn
#350 posted by mankrip [152.248.76.189] on 2016/02/15 18:56:29
IIRC, Spike said something about FTEQW supporting it.
Retroquad also supports it, but there's still a lot of work to be done before it gets released.
 Skiffy/necros
#351 posted by ericw [108.173.17.134] on 2016/02/15 21:03:06
Phong shading is not in the releases on github yet.
Fifth has a build with it that is working, and I hope to post a new dev build soon that has phong shading too.
DeeDoubleU: weird, I don't use notepad++ but it should have a "goto line" feature that should take you to the right line. Anyway, I don't think "Brush With Duplicate Plane" is a serious warning, it's more a warning that the editor saved some redundant data.
#352 posted by PuLSaR [66.102.9.32] on 2016/02/15 21:16:44
this document never gets old.
#353 posted by Skiffy [203.115.201.11] on 2016/02/16 01:57:40
Lit water yeeeesss I look forward to that one because my level has murky water like a swamp / bog and I would love it to be dark shader fluids.
 Swamp/bog
#354 posted by mfx [77.179.40.122] on 2016/02/16 02:00:59
/triggered
 Quake2 Plans?
#355 posted by Skiffy [203.115.201.11] on 2016/02/16 06:35:48
Any plans to ever include radiosity in the light compiler for Tyr like in Quake2's Light compiler?
Regarding Quake 2... possible support for it using these compilers at some point in the future? I read it does support the map format but does it output quake2.bsp files?
Currently I think ArghRad is the lighting one for quake2 maps correct and no other tools came after that outdid it? I would love the AO / Dirt / Skylight / Sunlight from Tyr tools to be usable for Quake2. The main things Q2 still had is Smooth Shading and Radiosity though..
Just wondering because I love this toolset and some offshoot in the future would be great.
 Radiosity
#356 posted by mh [137.191.242.106] on 2016/02/16 17:33:02
It's actually important to understand that there are not one but two major differences to the Quake 1 lighting model in Q2. When people say "radiosity" it pays to be clear about which of these two is actually meant.
First one is actual "radiosity", as in the ability of surfaces to cast light.
Second one is bounced/indirect lighting.
Thing is, these two don't actually have any dependency on each other. It's possible to implement each without implementing the other.
So you can have surfaces casting light but without light bounces - similar to what these tools already do with lava surfaces.
And you can have indirect lighting but have it coming from light entities which the mapper must place rather than from surfaces.
Or you can have both; but presence of one doesn't demand presence of the other.
#357 posted by necros [66.249.83.80] on 2016/02/16 21:48:22
Dirt/AO makes radiosity a bit redundant at this point. It's also slower.
#358 posted by Kinn [86.154.183.77] on 2016/02/16 21:57:29
Also, Quake 2's radiosity actually created a result the same as if you'd just floodfilled the lightmaps with the same flat shade of orange/brown.
#359 posted by Kinn [86.154.183.77] on 2016/02/16 21:58:46
That said, a single bounce could be interesting.
I'm sick of adding fake bounce lights.
#360 posted by necros [66.249.83.83] on 2016/02/17 00:58:17
Yeah,maybe I shouldn't dismiss it out of hand. and with multicore lighting, it's maybe not so bad anymore.
#361 posted by onetruepurple [93.105.177.18] on 2016/02/17 01:13:53
That is not dead which can eternal compile. And with multicore lighting, even death may die.
#362 posted by Skiffy [203.115.201.11] on 2016/02/17 02:12:19
Light bounce is indeed what I am looking for. Light bounce that picks up the colors from the surfaces it hit is one thing I liked a lot from Q2 lighting. And we all know the Orange lighting was just them having too much fun with colored lights as it was relatively new technology in games and folks sucked at using color for lighting their levels.
And no Radiosity is not redundant because we have dirt / AO... that is a hack of light occlusion not the spread of lighting.
But yes Radiosity is an old way of doing GI. There are better ways to do it these days which are also much faster. Ultimately I would love to see this toolset support quake 2 and include the smooth shading and Radiosity features from Arghrad.
#363 posted by ericw [108.173.17.134] on 2016/02/17 04:05:55
Skiffy, yeah I'd like to implement some kind of bounced lighting, like this article: http://www.scratchapixel.com/lessons/3d-basic-rendering/global-illumination-path-tracing
Probably just supporting 1 bounce to start with. It actually looks very similar to how dirtmapping works currently.
I'm not sure how hard it'd be to add Q2BSP output. Spike might know?
Also, I should have a new beta soon.
#364 posted by Spike [81.141.230.53] on 2016/02/17 05:50:38
q2 renders much like q1bsp.
its the tracelines that are very different. that said, I think you can still use the q2 bsp tree as a point-sized hull, so that's fine for light.
this is of course ignoring all the changed structs that you'd have to deal with somehow (easiest to do at compile time).
#365 posted by Skiffy [203.115.201.11] on 2016/02/17 06:51:27
Sweetness! 1 bounce would already be a great start.
#366 posted by Rick [75.65.153.192] on 2016/02/17 08:52:27
One or two bounces would be fantastic. It could save a lot of trouble. As it is now, for indoor areas I probably place 3 to 5 fills for every actual light.
#367 posted by necros [64.233.172.251] on 2016/02/17 12:36:15
1 bounce with light diffusion would be cool.
#368 posted by mh [137.191.242.106] on 2016/02/17 12:43:12
Personally I'd suggest adding a "_bounce" key to light entities; default if there's no key is no bounces (makes sense to keep defaults same as stock Q1 tools) and the value specifies the number of bounces.
That way lighting could be easily recreated at any time and by other tools without needing to know the command-line options that were originally used.
 Ericw
#369 posted by DeeDoubleU [37.229.216.204] on 2016/02/17 13:46:39
weird, I don't use notepad++ but it should have a "goto line" feature that should take you to the right line. Anyway, I don't think "Brush With Duplicate Plane" is a serious warning, it's more a warning that the editor saved some redundant data.
It's not that I can't find exact line which correspond to log output - notepad++ shows line numbers. Problem is compiler treats line numbering differently.
I think I found the problem - it doesn't count comment lines.
Tested on my map backup.
Compiled as is
*** WARNING 03: line 45402...
added a bunch of commented out lines("//asdasd") , in the beginning of the file and line number didn't change in the log.
Then I replaced commented lines with empty lines, just a line break. No spaces, tabs etc
Now log says
*** WARNING 03: line 45406...
If it is the case, then every line with entity/brush number gets ignored and line numbers 'shift' from what you would get in text editor.
 Don't Let Your Dreams Be Dreams
#370 posted by khreathor [194.181.150.106] on 2016/02/17 14:25:26
Sorry for little OT.
There is nice BSP importer for Blender. I would love to bake static Lightmap there and export it back to BSP.
In overall some lightmap import option would be great. I know it's hard, because BSP is just fragmented mesh "dump" and lightmap is low res, but we can think about some solution.
 Khreathor
#371 posted by mankrip [66.249.88.164] on 2016/02/17 18:29:24
 LIT Files
#372 posted by khreathor [194.181.150.106] on 2016/02/17 18:40:48
hmmm.... any link to proper LIT documentation?
 External Lighting And Settings
#373 posted by Skiffy [203.115.201.11] on 2016/02/18 04:46:40
Hmm being able to read and write the lighting from and to BSP would be a rather fantastic addition but then you run into a world of pain if you want more light styles supported. how to handle flicker lights and so forth because those get layered on top and limited to the polygons they affect if I remember correctly.
As for the _bounce you could do that or just add it to the compiler as a global option. Same goes with bounce multiplier and saturation. How much energy is maintained when it bounces and how much color is picked up when it hits the surface. In Unreal you can tweak these values so its more saturated and propagates lighting further by not losing as much energy on the first bounce.
#374 posted by khreathor [194.181.150.106] on 2016/02/18 14:06:03
yeah, I know about light styles being problematic in this situation. I'm going through source to fully understand how it works.
 Global
#375 posted by adib [201.47.124.10] on 2016/02/21 20:41:09
As for the _bounce you could do that or just add it to the compiler as a global option.
Then make it a worldspawn key, so that way lighting could be easily recreated at any time and by other tools without needing to know the command-line options that were originally used.
 Skiffy
#376 posted by DaZ [89.168.60.163] on 2016/02/21 23:46:04
There is a port of the half-life 1 radiosity lighting tool to quake 1 you could look at? It does bounce and phong but lacks modern features from these tools... It's called q1rad. No link sorry I'm mobile
 I Think It Will Be Hard To Get Q1rad Source
#377 posted by khreathor [88.156.136.53] on 2016/02/22 00:36:25
#378 posted by ericw [108.173.17.134] on 2016/04/15 01:56:43
Beta builds are moved here for now, if anyone wants to try the update phong shading.
The documentation isn't updated yet, but the readme.txt has the details on phong. basically set "_phong" "1" on func_detail/func_group/func_wall etc.
 Beer Donations Go To
#379 posted by mfx [92.229.102.29] on 2016/04/15 02:06:48
beer@ericw.com
#380 posted by mankrip [66.249.88.164] on 2016/04/15 03:50:56
Does this one include lit water support?
#381 posted by ericw [108.173.17.134] on 2016/04/15 03:59:01
Yes, spike added it, but it's untested.
There are these command-line options:
[-lightturb] [-lightwater] [-lightslime] [-lightlava] [-lighttele]
-lightturb just is a shortcut for water + slime + lava + tele.
 Wow
#382 posted by Bloughsburgh [75.151.243.225] on 2016/04/15 12:55:41
This is just crazy, so much advancements to ole Quake! Thank you all for the efforts, really...can't be said enough.
 Fifth
#383 posted by ericw [108.173.17.134] on 2016/04/15 22:38:48
btw, the key for phong shading has changed since the version you were using, you no longer need to give the texture name. The main improvement of this new version is having an angle cutoff, so it won't smooth around 90 degree corners by default (the cutoff is 89 degrees.)
Another new feature: when using phong shading I suggest setting "_anglesense" "1" in worldspawn, this affects all lights in the map that don't override "_anglesense".
This will make phong shading more visible and generally increase contrast.. it makes the angle that light arrives on a surface matter more than the quake default.
#384 posted by FifthElephant [213.205.253.46] on 2016/04/15 23:23:26
I'm not sure I will change compilers unless I am really compelled to
 No Worries
#385 posted by ericw [108.173.17.134] on 2016/04/15 23:49:13
#386 posted by FifthElephant [213.205.253.46] on 2016/04/16 00:45:23
Does it apply phong shading to the whole brush? Not sure if this is desirable behaviour.
The thing I want most is a more tolerant or forgiving compiler like txqbsp
 Me Too...
#387 posted by mfx [85.181.115.215] on 2016/04/16 01:47:48
 5th
#388 posted by mfx [85.181.115.215] on 2016/04/16 02:01:35
whats your problem??
 MFX
#389 posted by FifthElephant [86.4.213.148] on 2016/04/16 02:13:38
my brushwork sucks and I guarantee once my map is properly "sealed" it will leak like an incontinent old man who just drank 30 litres of water.
 Chat Chav
#390 posted by mfx [85.181.115.215] on 2016/04/16 02:15:41
 "Chat Chav"
#391 posted by Kinn [217.35.212.81] on 2016/04/16 12:27:31
sounds like an AI chat bot I can get behind. Maybe Microsoft can make it their next project after Tay failed.
"ur avin a giggle m8"
"u wot ill fukin slap u"
 Phong
#392 posted by FifthElephant [86.4.213.148] on 2016/04/16 13:23:30
doesnt seem desirable to me to always have an object fully phong shaded. I think there should be a way to choose to either have the model phong shaded or certain textures.
#393 posted by Kinn [217.35.212.81] on 2016/04/16 13:29:19
Dunno, I think with the angle cutoff and the fact that you can break it down into as many func_groups or func_details as you want, the current system seems pretty ok?
I'm just trying to envisage a scenario where that's not enough, and I'm struggling....
#394 posted by FifthElephant [86.4.213.148] on 2016/04/16 14:05:25
complex func_groups like this -
https://twitter.com/GavinEdgington/status/714465169649377281
Where I don't want to have to break up into small groups because it will make it a pain to move around and place.
#395 posted by ericw [108.173.17.134] on 2016/04/16 20:13:21
The angle cutoff is pretty flexible, if you set it to a low value like 30, only pairs of faces with normals up to 30 degrees apart will be smoothed together. So I imagine something in 30-60 would work well on that spaceship, and not add smoothing in unwanted places.
Also it's easy to check what the phong shading is doing, just compile with the light flag -phongdebug.
I could add back the list of textures to restrict phong shading to, if it's really needed, though.
#396 posted by Lunaran [66.235.55.196] on 2016/04/16 20:20:26
You guys are fighting the engine's weaknesses instead of playing to its strengths. Some things you're just not going to get control over without fundamental data format changes.
Pick what game you really want to be mapping for first.
 Or....
#397 posted by FifthElephant [213.205.253.46] on 2016/04/16 21:45:07
We'll continue working with quake and seeing awesome new tools to use and extend the life of the game.
#398 posted by Baker [50.4.45.41] on 2016/04/16 22:11:38
Was that a screenshot of something in an existing released map?
(Or what was that a screenshot of?)
 Baker
#399 posted by FifthElephant [86.4.213.148] on 2016/04/17 01:46:44
map in development for AD.
#400 posted by mankrip [187.126.98.117] on 2016/04/17 02:57:28
When trying to compile the vanilla GPL start.map:
*** WARNING 10: Reached occupant at (386 1554 132), no filling performed.
This error happens in a lot of places with the vanilla .map files.
 Mankrip
#401 posted by mfx [78.55.217.0] on 2016/04/17 03:08:46
you use the tyrutils qbsp? I guess so, this thread gives me the clue..
I tried to recompile those vanilla maps myself some time ago, several compilers had problems with them.
Whats the cause of those? I don't know, the map were rather tidy in my eyes, all integer coords and such. We all know there aren't any fancy brushes in them.
 Mankrip
#402 posted by mfx [78.55.217.0] on 2016/04/17 03:11:47
try -oldaxis switch?
#403 posted by mankrip [187.126.98.117] on 2016/04/17 03:18:00
-oldaxis didn't help. Time to read the docs...
 Hmmm.
#404 posted by mfx [78.55.217.0] on 2016/04/17 03:23:39
try the first released qbsp.exe. Quadicted should have it archived.
 Try This One
#405 posted by mfx [78.55.217.0] on 2016/04/17 03:25:00
thats an old version, only watervising added to it.
https://www.quaddicted.com/files/tools/wqbsp165.zip
#406 posted by mankrip [187.126.98.117] on 2016/04/17 03:38:07
According to the WQBSP165 docs, it doesn't support -splitspecial, so lit water won't work with it.
The problematic entity is a light torch; I've tried deleting it and creating a new one at the exact same place, and the problem still happens. It's like the tyrutils qbsp compiler is too strict about entity placement.
Light entities should be treated as point entities by the QBSP compiler. I wonder if the tyrutils qbsp is checking whether some default bounding box size is out of map bounds or something.
 Mankrip
#407 posted by ericw [108.173.17.134] on 2016/04/17 03:48:54
weird, can't reproduce here.
I have a START.MAP modified 4 Sep 1996. No leaks with qbsp.exe from tyrutils-ericw-v0.15.4-115-gfff8cbf. Adding -splitspecial doesn't cause leaks, either.
 Well...
#408 posted by mfx [78.55.217.0] on 2016/04/17 03:50:16
o_O
rebb? eric? carmack? any ideas?
#409 posted by mankrip [187.126.98.117] on 2016/04/17 04:15:59
Anyway, I've confirmed that my code for lit water wasn't implemented. -lightturb doesn't make any difference.
See the result with tyrutils-ericw-v0.15.4-115-gfff8cbf: scr_0778.png
And the proper result with my old modified build: scr_0779_mankrip.png
So, there's still no way to compile maps with both lit water and smooth shading. :( Oh well.
 Sorry
#410 posted by ericw [108.173.17.134] on 2016/04/17 05:35:01
I forgot about http://forums.insideqc.com/viewtopic.php?f=12&t=5769
But I'm confused.. now I realize that -splitspecial means water won't have TEX_SPECIAL set. This means lit water should "just work" without changes to light - so the -transwater stuff Spike added is unnecessary. Your patch just makes the bottom face receive light from above, rather than underwater, right? That seems sensible since typically most of the light sources will be above the water, but not having that shouldn't cause the artifacts in your first screenshot.
#411 posted by Spike [31.51.131.152] on 2016/04/17 05:56:19
all I can say is that the water parts of my patch were completely untested, and only half written. yeah, I got bored and then forgot about it, okay? please forgive my sins! so that I can more easily commit them in future! mwahaha!
the bright part of the water is probably a poly with no lightmap info at all (which technically means all-white-but-not-overbright instead of all-black when found on water surfaces).
this would imply that much of that area is normally lit from below.
I don't think it tries to subdivide water either. I guess this means that the controls for whether water should be lit should really be inside the qbsp instead.
#412 posted by mankrip [187.126.98.117] on 2016/04/17 06:04:40
Your patch just makes the bottom face receive light from above, rather than underwater, right?
It makes each face receive light from both under and over the water, to match the lighting on the nearby walls. The normal inversion is done on a per light entity basis - the face's normals will only be inverted for light entities behind it.
now I realize that -splitspecial means water won't have TEX_SPECIAL set. This means lit water should "just work" without changes to light
-splitspecial also splits the water surfaces into the appropriate size for lightmap creation.
typically most of the light sources will be above the water, but not having that shouldn't cause the artifacts in your first screenshot.
As mentioned at InsideQC, my code includes a hack to force liquid surfaces' lightmaps to always be saved, otherwise fully dark liquids would remain fullbright.
 BTW
#413 posted by mankrip [187.126.98.117] on 2016/04/17 06:14:07
It would be better if the -splitspecial option in the qbsp was replaced with -splitturb and -splitsky options. There's no need to split sky surfaces, because there's no need to make them receive regular lighting.
#414 posted by ericw [108.173.17.134] on 2016/04/17 06:33:40
It makes each face receive light from both under and over the water, to match the lighting on the nearby walls. The normal inversion is done on a per light entity basis - the face's normals will only be inverted for light entities behind it.
Ok, cool, I'll try merging this in.
As mentioned at InsideQC, my code includes a hack to force liquid surfaces' lightmaps to always be saved, otherwise fully dark liquids would remain fullbright.
I think this bit is missing from your patch?
This does seem like a hack around an engine bug... There shouldn't be any ambiguity; in an engine supporting lit water, a face with face->styles = 255, face->lightofs = -1, TEX_SPECIAL unset, and texture name starting with '*' should be rendered black, right?
#415 posted by mankrip [187.126.98.117] on 2016/04/17 07:35:30
This does seem like a hack around an engine bug... There shouldn't be any ambiguity; in an engine supporting lit water, a face with face->styles = 255, face->lightofs = -1, TEX_SPECIAL unset, and texture name starting with '*' should be rendered black, right?
It's not an engine bug, the lightmap data is missing from the BSP file itself. For some reason, if no lights touches a liquid surface, no lightmap data is generated for it. I've studied the light.exe code for hours and couldn't figure out what causes this, so I've just forced the lightmap data of liquid surfaces to always be generated.
With no lightmap data, the surface cache for the lighting can't be created.
I think this bit is missing from your patch?
It's not missing, I've just implemented it in a subtle way:
/* don't bother with light too far away */
if (dist > entity->fadedist)
if (!backwater) // mankrip
return;
This allows far away lights to be casted on liquid surfaces, therefore forcing the lightmap data to be generated - even though far away lights won't add any brightness to it.
#416 posted by ericw [108.173.17.134] on 2016/04/17 08:06:35
It's not missing, I've just implemented it in a subtle way
Ah, I see :)
It's not an engine bug, the lightmap data is missing from the BSP file itself. For some reason, if no lights touches a liquid surface, no lightmap data is generated for it
This is not specific to lit water.. light.exe will not write fully black lightmaps to the bsp. It was a compression / optimization in the original light tool and engine; lightofs of -1 is rendered black. You can see this by deleting all lights except a small dim one in a large map, the lightdatasize will be only be a few hundred bytes.
here's the early exit in light: (f->lightofs = -1; is set earlier)
https://github.com/id-Software/Quake-Tools/blob/master/qutils/LIGHT/LTFACE.C#L542
and places where it is handled in the engine:
sets surf->samples to NULL if face->lightofs is -1:
https://github.com/id-Software/Quake/blob/bf4ac424ce754894ac8f1dae6a3981954bc9852d/WinQuake/gl_model.c#L795
#417 posted by mankrip [187.126.98.117] on 2016/04/17 08:37:18
This is not specific to lit water.. light.exe will not write fully black lightmaps to the bsp.
I know this.
I don't remember all the details on why the lighting for liquids couldn't be generated if the light data wasn't present in the BSP file, but I will take a look at it again later.
#418 posted by mankrip [187.126.98.117] on 2016/04/17 16:41:55
Alright, I've had some sleep.
Here's the proof why the lightdata for liquid surfaces must always be generated. In Mod_LoadFaces:
if (!Q_strncmp(out->texinfo->texture->name,"*",1)) // turbulent
{
out->flags |= (SURF_DRAWTURB | SURF_DRAWTILED);
The SURF_DRAWTILED flag in the engine is similar to the TEX_SPECIAL flag in the tools: it serves to indicate that the surface shouldn't have lightmaps. And it can't be eliminated, otherwise maps compiled without -splitspecial will crash the engine when trying to generate the surface caches.
Right now, I'm using an if(!out->samples) statement to ensure that maps without lit water will have the SURF_DRAWTILED flag set. However, the engine loads the mtexinfo_t data through Mod_LoadTexinfo right before Mod_LoadFaces is called, so in theory it should be possible to replace the (!out->samples) check with a (texinfo.flags & TEX_SPECIAL) check.
I'll modify the light tool to remove the "always save lightdata" hack, compile a map with it and change the check in the engine to see if it works.
#419 posted by mankrip [187.126.98.117] on 2016/04/17 17:09:06
Yeah, it worked. Now instead of this:
if (!Q_strncmp(out->texinfo->texture->name,"*",1)) // turbulent
{
out->flags |= (SURF_DRAWTURB | SURF_DRAWTILED);
... the proper way to set SURF_DRAWTILED is this:
// mankrip - begin
if (out->texinfo->flags & TEX_SPECIAL)
out->flags |= SURF_DRAWTILED;
// mankrip - end
if (!Q_strncmp(out->texinfo->texture->name,"*",1)) // turbulent
{
out->flags |= SURF_DRAWTURB; // mankrip - edited
:) Thanks for making me look into this.
 Bounce Lighting Alpha
#420 posted by ericw [108.173.17.134] on 2016/05/20 22:04:49
been fighting with this for a while now.. it's more or less in a finished state I think.
windows builds source
Command line flags:
-bounce enables 1 bounce (this is all that's supported)
-bouncedebug saves only the indirect lighting to the bsp/lit, for previewing
-bouncescale scales the brightness of bounce lighting, default 1. can try 2 or 0.5 for more/less indirect light.
-bouncecolorscale how much bounce lighting picks up color from the map textures, between 0 and 1. default 0 because this can lead to q2 style everything-is-gaudy. you can try 0.5 or 1.
Note, this is slow! light uses visdata now, I recommend only using -bounce on vised maps because that speeds it up a lot.
Other info: it works more or less like the existing "_surface" light system; point lights are generated on each face to bounce light back into the map. Currently there is no face subdivision for this, so the bounce light given off by really large faces will be coarse (all coming from just 1 point light).
 Sounds Interesting
#421 posted by Breezeep_ [100.1.249.19] on 2016/05/21 01:45:56
I'd like to see a screenshot showing the effect though.
 NP
#422 posted by mfx [78.55.13.60] on 2016/05/21 02:03:30
 Its One Light Source In This Particular Map Shot
#423 posted by mfx [78.55.13.60] on 2016/05/21 02:04:23
mind you.
 Breezeep
#424 posted by ericw [108.173.17.134] on 2016/05/21 02:11:22
without
with
"Without" shot used "-lit -extra", 9seconds
"With" shot used "-lit -extra -bounce", 39 seconds
the 39 seconds is with 8 threads, and vised map though. Just -bounce without -extra is something like 16 seconds.
 Ericw, You Are Teh Boss.
#425 posted by Shamblernaut [121.45.248.140] on 2016/05/21 13:19:24
oh man I am SO hyped for this!
 Cool, Ericw
#426 posted by Breezeep_ [100.1.249.19] on 2016/05/21 16:11:34
 Will Test Today
#427 posted by FifthElephant [82.21.157.236] on 2016/05/21 16:56:31
I do kind of wish for a more tolerant set of compilers like rebbs.
#428 posted by FifthElephant [82.21.157.236] on 2016/05/21 17:29:22
Ok, this seems to have fixed a couple of issues in my map so I will be using this :)
 Fifth
#429 posted by ericw [108.173.17.134] on 2016/05/21 20:22:42
cool.. glad it works.
FWIW mfx and I did a ton of back and forth testing/fixing on phong shading, it's pretty solid now (though one glitch just came up that I need to look into)
check the BJP tools thread, I linked a build of txqbsp that is patch to write the phong shading info.
#430 posted by FifthElephant [82.21.157.236] on 2016/05/22 02:24:20
Thanks Eric, I am more inclined to use those simply due to my god awful brushwork.
 Wow
#431 posted by mankrip [186.241.142.113] on 2016/06/03 16:51:38
Looking at the current source, you've implemented support for properly lit water.
Thanks EricW, I'll try it out.
 Alright
#432 posted by mankrip [186.241.142.113] on 2016/06/03 17:28:18
It works flawlessly, way better than my implementation.
I've noticed -fence was removed, but that's not a big problem for me.
I'll try out making some smooth shaded lit liquids now.
#433 posted by ericw [108.173.17.134] on 2016/06/03 20:01:02
glad the lit water works :-)
-fence I removed because it was done in a hacky way. I understand the trace code better now so can re-add it if anyone wants it.
 Re-Add Please! :)
#434 posted by Qmaster [70.195.73.26] on 2016/06/04 00:23:21
 And May I Say
#435 posted by Qmaster [70.195.73.26] on 2016/06/04 00:23:44
Those screenshots are gorgeous!
 New Version 0.15.5 Is Up
#436 posted by ericw [108.173.17.134] on 2016/06/11 17:30:21
http://ericwa.github.io/tyrutils-ericw/
New features:
- light: added a better options summary with the -help flag
- light: added -bounce option, "_phong", "_project_texture" key
- light: use vis data to accelerate lighting
- light: "_minlight_exclude" key to exclude a texture from receiving minlight
- light: add "_sun2" "_sun2_color" "_sun2_mangle" which creates a second sun
(unrelated to "_sunlight2" which is the sky dome light)
- vis: support .prt files written by bjptools-xt
- qbsp: add -objexport flag
Bugfixes:
- vis: fix ambient sounds when using func_detail, broken in tyrutils-ericw-v0.15.3
 Issue, Or My Mistake?
#437 posted by Pritchard [121.219.228.6] on 2016/06/17 09:33:18
Hi, I hope I don't come across as an idiot for asking this, but what exactly am I doing wrong to get this result?
http://puu.sh/pvLvr/f08175b526.jpg
Ignore the missing textures, but how do I fix my strange lighting on the map? I'm not running with any command line options, just the map bsp.
Thanks for any help!
 Hey
#438 posted by ericw [108.173.17.134] on 2016/06/17 19:11:25
it's hard to tell from that shot if it's a corrupt file, or something else.
Check for any stale .lit files and delete them.
Might be easiest to just post the .map+.bsp.
 D'oh!
#439 posted by Pritchard [121.219.228.6] on 2016/06/18 04:34:01
Thanks for the suggestion about the .lit file, I found one and deleted it and now everything is working fine! :D
 Duh
#440 posted by madfox [84.84.178.104] on 2016/06/19 20:31:16
I tried the latest compiler tyrutils-ericw-v0.15.5-win32, but it glitches off.
I'm just an old time user, winxp etc but version
tyrutils-ericw-v0.15.4-win32 goes great.
No bad word here for the harworking improvements,
more a shout from an old map compiler.
 LIT File Size Mismatch
#441 posted by mh [213.233.148.13] on 2016/06/19 20:56:49
This is an easy check engine-side and mismatches like this will never happen. Just check if com_filesize is equal to (l->filelen * 3) + 8; if so the LIT file is good, if not it's invalid and you can display a developer warning.
 Thx For The Info
#442 posted by ericw [108.173.17.134] on 2016/06/19 20:59:20
I changed compilers, will look into it. What is your CPU btw?
 MH
#443 posted by ericw [108.173.17.134] on 2016/06/19 21:24:02
yes good point! engines should really detect + print warnings + refuse to load invalid lit's.
 MadFox
#444 posted by ericw [108.173.17.134] on 2016/06/19 22:46:12
I think I fixed the problem, mind checking if this build works for you on XP?
 Right!
#445 posted by madfox [84.84.178.104] on 2016/06/21 14:49:36
I checked a rather big map I converted from Sin.
When I use the TreeqQbsp v2.03 it compiles.
The newer version compile faster, but end up with a leak after bsp compiling.
Of course it can be my lame '06.
 Yeah
#446 posted by ericw [108.173.17.134] on 2016/06/21 18:55:07
Use TreeQbsp if that works, or I'd recommend using rebb's version of BJP qbsp/vis: http://www.voidspark.net/projects/bjptools_xt/
The main thing in my tools is light.exe which has lots of new options.
 Suggestion For Surface Lighting
#447 posted by Shamblernaut [121.45.230.253] on 2016/07/23 20:22:32
Hey EricW,
Forgive me if this functionality already exists, but I thought of something that would help with lighting control.
Is it possible that a func_wall, func_detail or func_group be given a surface light flag for individual surface light control?
The current setup (using the light entity) lights up each instance of the "_surface" defined texture, however there are times that I don't want every instance of that texture lit or times that I want different colours or intensities on said textures.
Cheers.
#448 posted by ericw [108.173.17.134] on 2016/07/25 18:26:55
Hmm.. I can see that would be useful, but I'm not sure if can be done easily.
The surface light template (the light entity with "_surface" "xxx") can use any keys allowed on lights, so it would be messy to read those light keys from a func_detail/group/wall entity.
As a workaround, creating a duplicate of the texture with a different name, along with a new surface light, might be the best option.
#449 posted by Rick [75.65.153.192] on 2016/07/25 18:51:11
As a workaround, creating a duplicate of the texture with a different name, along with a new surface light, might be the best option.
That's similar to what I did for my Jam 6 map. I used TexMex to make a custom jam666.wad specifically for that map. I had textures that were the same but with different names. One with surface light and one without.
#450 posted by Shamblernaut [121.45.230.253] on 2016/07/25 21:30:09
Heya, yeah... That workaround... It feels like I'd be adding bloat to the map (not that it's an issue with such small textures or modern machines).
I spent the last few hours looking through the code... It's a bit beyond my skills to modify it. But I think I'm slowly getting a handle on it.
At the moment the program cycles through all entities searching for the key value "_surface", not just light entities. So it's possible to play around with lights on other entities, but there is no light drop-off with these.
I suspect that this has something to do with geometry detecting as worldspawn? because the output: "Creating surface lights for texture "DOPEFISH" from template at ()" omits the origin.
I thought that I might be able to modify the function to use a name key rather than a texture name for "_surface". Or modify it to read the colour and intensity keys from the geometry (as func_detail) rather than the light entity itself.
Either way, I need sleep. I might come back to this later and have another crack at it.
#451 posted by ericw [108.173.17.134] on 2016/07/25 22:30:56
Yeah, it's true duplicating textures adds some bloat.
At the moment the program cycles through all entities searching for the key value "_surface", not just light entities
I think that's an accident.. I'm currently reworking the entity handling code (on the master branch on github) to have a clear distinction between lights, bmodel entities, and other entities.
"Creating surface lights for texture "DOPEFISH" from template at ()" omits the origin.
Hmm, that is a bug.
I thought that I might be able to modify the function to use a name key rather than a texture name for "_surface". Or modify it to read the colour and intensity keys from the geometry (as func_detail) rather than the light entity itself.
The main problem with doing anything with func_detail/group in light.exe is the information about which faces correspond to the entity doesn't exist in the .bsp. I hacked something together for supporting a few keys on func_detail/group (_minlight, _phong, _dirt) but it was pretty awkward; the keys are parsed by qbsp, values packed into an integer so they can flow through qbsp's processing and are then dumped into an auxiliary file (.texinfo) which is then parsed by light.exe.
My hunch is it's not worth jumping through all those hoops for this feature, but it could be done.
btw, another workaround worth mentioning.. there is a "-surflight_dump" flag, which writes the generated lights to a file. so you can use "_surface" lights to generate a first draft version of the map lighting, dump the generated lights to a file, delete the "_surface" lights and paste in the generated lights, and then tweak them individually.
 Bouncy Castles
#452 posted by Kinn [86.136.33.218] on 2016/08/02 19:29:08
The bounce feature looks badarse. I have a question though - how are the bounce lights attenuated? Does the attenuation of bounce lights depend on the attenuation of the source lights?
#453 posted by ericw [108.173.17.134] on 2016/08/02 19:51:51
The bounce lighting is hardcoded to use 1/(distance^2) for now, regardless of what the source lights used.
What happens is there's a regular lighting pass, then the average light brightness / color received by each face is calculated, which is used to create lights for the bounce lighting pass.
So this means a delay 0 (linear) light uses linear falloff for its direct light, but the reflected light acts more like delay 2. Hopefully this makes sense!
 Cheers
#454 posted by Kinn [86.136.33.218] on 2016/08/02 20:00:59
Sounds good!
Another question - I understand a single "bounce light" is generated for each face.
This sounds similar to the surface lights features. The issue I found with that was the intensity of light created depends on the density of faces on the surface - this is a problem I found particularly noticeable with large surfaces like liquids that get split in unpredictable ways.
Is the intensity of bounce lighting affected in the same way? Or are the bounce lights created taking the face area into account?
#455 posted by ericw [108.173.17.134] on 2016/08/02 20:16:41
Ah, yeah, I ran into that problem with surface lights as well, where lava was noticeably brighter around rocks that caused the face to be split up. Bounce lights shouldn't have that problem; they are scaled by face area, so the overall scene brightness should remain constant if faces are split up.
I also found hotspots (where you could see the individual lights) were a problem with "_surface" lights - especially when used on things like lava.
The bounce lighting has a hack to work around hotspots: there's a distance threshold of 128 units, where bounce lights have the same brightness within that distance.
#456 posted by Kinn [86.136.33.218] on 2016/08/02 20:20:17
Ace biscuits :)
Are you planning to use those bounce light ideas to improve surface lights in that regard?
#457 posted by ericw [108.173.17.134] on 2016/08/02 20:50:45
Yeah, it's something I wanted to do!
 Cool Beans
#458 posted by Kinn [86.136.33.218] on 2016/08/03 10:47:09
Been playing around with bounce and it's super cool.
Different topic...for me it seems _shadows 1 is broken now...
Link to bsps and map files:
https://drive.google.com/open?id=0B74rZcw0hvZpcmdUbnd1dndLckE
Test case is a simple func_illusionary torch holder, with _shadows 1...
temp01a.bsp, lit with tyrutils-ericw-v0.15.4-win32:
http://i.imgur.com/aFzI3HK.png
temp10b.bsp, lit with tyrutils-ericw-v0.15.5-win32:
http://i.imgur.com/nGvFizl.png
(ignore the fact that one shot has coloured light, and not the other - that was just me accidently invalidating the lit file when renaming the bsps)
#459 posted by Kinn [86.136.33.218] on 2016/08/03 10:50:44
Note - it's not like shadows are disabled, in some cases, shadows are cast, but they are glitchy looking (e.g. the torch holder is actually shadowing the bit of floor at the base of the pillar, but the vertical sides of the pillar are ignored)
 Thanks For The Test Case
#460 posted by ericw [108.173.17.134] on 2016/08/03 21:19:08
will fix this..
It's related to how sample points are positioned on a face, by tracing from the face midpoint to the desired position and stopping at any obstruction. I made _shadow models obstruct this trace, which was a mistake, so it ends up sampling the light value above the torch holder for the samples that should be located under it.
 Cheers
#461 posted by Kinn [86.152.167.63] on 2016/08/03 21:58:06
nice one :)
 _project_texture Lights
#462 posted by Kinn [86.152.167.63] on 2016/08/05 17:45:29
Is it possible to flip / rotate the texture that a light projects?
#463 posted by ericw [108.173.17.134] on 2016/08/05 19:40:10
The 3rd param of "_project_mangle" should be the "roll" value that controls rotation.
btw re-posting from the jam thread:
I think "_project_mangle" is buggy, the docs say it expects "yaw pitch roll" like a spotlight mangle, but I think it actually wants "pitch yaw roll".
I'll fix that in the next light release to be consistent with spotlights, so it's experimental/unstable only for now.
Also I think I fixed the bmodel shadow issue, hoping to make a new release soon!
 Rock 'n' Roll
#464 posted by Kinn [86.152.167.63] on 2016/08/05 20:12:03
Sorry, I'm a tard - roll totally works :} I guess I was just following the description of mangle in the readme (which said roll does nothing, so I didn't bother trying it)
However, a way of flipping the image would also be real nice (for those asymmetric stained glass window textures).
#465 posted by Kinn [86.152.167.63] on 2016/08/05 20:13:02
oh and awesome news re: the shadow issue - cheers :)
 Darkplaces Lighting Fix - Rounding Of BSP Texture Vectors
#466 posted by Qmaster [50.40.202.55] on 2016/08/11 03:09:43
Mapping Help, Post #15623:
@dumptruck_ds I got a hack for qbsp that seems to fix the DP lighting issues in your map. Here is a test build: http://quakespasm.ericwa.com/job/tyrutils-ericw/
(I just added rounding for the bsp texture vectors, the same algorithm that is used for points - if a value is within 0.0001 of an integer, round it to that integer. It's not a proper fix but it seems to work decently well.)
Ericw, I can't find where I downloaded this test build, do you still have this?
Also, I found possibly a bug...maybe with JACK(hammer). When I compile I get a string of warnings:
line 11: Unrecognised string escape - U
line 11: Unrecognised string escape - J
line 11: Unrecognised string escape - D
line 11: Unrecognised string escape - Q
These correspond to letters in the directory path after slashes in the .map file JACK generates. For instance: "C:/Users/Josiah/Dropbox/QUAKE..." Compiler thinks they are escape characters like newline n<q/> for instance. The map still compiles, it's just annoying to have warnings.
#467 posted by ericw [108.173.17.134] on 2016/08/11 03:29:46
re: Darkplaces Lighting Fix: that stuff is in the most recent release (v0.15.5) at: http://ericwa.github.io/tyrutils-ericw/
Are you still having corrupt lightmaps in DP with this version? In my experience it only happens occasionally on faces with weird texture alignment (e.g. sheared texture). e.g. a few faces in ad_crucial.bsp from Arcane Dimensions have corrupt lightmaps in DP.
about the escape sequences warning, yeah, it's confusing... I should probably just suppress the warning for the "wad" key of worldspawn.
 Escape Sequences Mini-rant
#468 posted by Spike [86.145.139.219] on 2016/08/11 05:15:37
there's nothing wrong with "c:/foo/bar/naff.wad".
there IS a problem with "c:\foo\bar\naff.wad" because that contains a new line and two dodgy chars.
"c:\\foo\\bar\\naff.wad" is fine of course, just ugly and specific to windows.
there's an even bigger problem with "c:\foo\bar\" because that string isn't even terminated properly. And yes, I have seen that in maps, and yes it does screw things over, and yes I hate the idea of getting the engine to do special things just because of the name of the field.
Its common enough that a terser and more specific warning would make sense, but I'd personally prefer if everyone just started using string markup consistently instead of varying depending on arbitrary field names.
Idealism can suck sometimes.
#469 posted by ericw [108.173.17.134] on 2016/08/11 08:10:01
I had a quick look at the winquake source.. these are my 2 cents:
- Double-quote characters can't be escaped, whatsoever (COM_Parse). Winquake, DP, FTE all fail with parse errors if a trigger_once's "message" string is "foo\"bar"
- The only escape sequence recognized by vanilla is \n, which gets converted to a newline character. (ED_NewString). Otherwise, the backslash and next character are left as-is.
Writing paths like "wad" "c:\foo\bar\naff.wad" would only be dodgy if the engine/gamecode needed to use them. Everyone uses forward-slashes for paths meant to be read by the engine/QC though ("noise" "sounds/nnnn.wav", etc.)
"wad" "c:\foo\" is not a problem because double quotes can't be escaped. A trigger_once with "message" "foo\" works fine in winquake, DP, and FTE (though FTE centerprints foo" instead of foo\ )
What would be a real problem is a wad path with double quotes in the directory/filename.. apparently that is forbidden on Windows, but OS X seems to permit it. Anyway, if anyone tries that, qbsp would fail to parse the .map file.
#470 posted by mankrip [179.197.187.182] on 2016/08/11 19:43:18
How about making the compiler replace the backslash character with a forward slash, in the "wad" field only?
#471 posted by Rick [75.65.153.192] on 2016/08/11 20:02:08
I always wondered why it couldn't just check the relative Quake path for any wads or just require that the wads be located in a specific folder.
 @ericw, Continued Rant :)
#472 posted by Spike [86.145.139.219] on 2016/08/12 06:02:34
enginewise, the biggest issue is that saved games and maps share parsing code. So double-quotes, new lines, carrage returns, and double-backslashes need to be saved, and thus also need to be reloaded. Otherwise mods will break - or at least mods designed for engines that can actually do string manipulation, anyway.
Whether that's consistent with winquake is somewhat irrelevant from my perspective - as you say, the only place backslashes would ever really be used in a map is in the wad key, or before an 'n'.
I'm personally okay with FTE breaking compat from winquake to ensure saved games work, so long as embedded chars are rare and don't corrupt other strings.
small correction:
FTE's entity parsing is actually performed by qclib's misleadingly named QCC_COM_Parse - which includes consistent escapes and a special hack for "c:\foo\"<NEWLINE> in an attempt to prevent the map from being unusable.
This is why you get foo" instead of foo\ - because FTE saw an escaped double-quote.
The wad field *IS* parsed by engines in the case of halflife bsps, where named wad files may be required for external textures. The paths are ignored (absolute paths are a definite no in something that has been shipped/released), but if they arn't escaped properly then wads starting with an n will still get messed up (clients with download mechanisms might also attempt to download such wads from servers). Additionally, fte can load .maps directly, although wad handling there is curently kinda screwed up thanks to replacement images overriding things and confusing sizes.
@mankrip, really its the editors that should be doing that, especially for relative paths which would allow such maps to still be compiled/loaded on linux/mac as well as windows.
Obviously absolute paths are problematic regardless.
@Rick, some -basedir argument for qbsp?.. and probably -game too...
 Spike
#473 posted by mankrip [179.197.187.182] on 2016/08/12 15:51:54
@mankrip, really its the editors that should be doing that
I agree that fixing this in the editors would help for when creating new maps, but for compiling old maps it wouldn't, specially if the user wants to compile some old maps directly from the commandline.
The Quaddicted database has tons of maps with source available, and sometimes it's useful to recompile them without modifications, when all the user wants is to compile them in a different way (e.g. enabling translucent liquids or lit water).
So, an ideal solution would be to fix this both in the editors and in the compiler - fixed editors would ensure that the maps can be compiled by any compiler, and fixed compilers would accept maps from any editor.
#474 posted by Spike [86.145.139.219] on 2016/08/12 20:05:21
even if you are recompiling it without any other edits, you'd probably have to fix all the wad paths anyway.
tbere's enough existing maps that auto-correcting the wad paths for any new ones is a little insignificant. I would personally rather that editors were aware of \", \n, \r, \\ when loading rather than \ getting switched to / in specific cases that 'the' engine will already need to deal with regardless. 1 well-worded warning is imho useful, 4 is excessive but still preferable to none.
on a related but different note, casually recompiling all your maps isn't something I can really endorse - if you do this, you'll find yourself kicked from vanilla quakeworld servers due to having an assumed-cheat version of the map.
vispatches and lit files won't trigger this issue, and can automatically run on maps without worrying so much about which qbsp originaly compiled it and how strict it may have been.
This won't give you everything, so there's no single winning solution, but it should give more consistant+reliable results if you're doing it in bulk. Assuming those tools support bsp2 etc, anyway.
#475 posted by Rick [75.65.153.192] on 2016/08/12 20:30:30
@Rick, some -basedir argument for qbsp?.. and probably -game too...
Something like that I guess.
Netradiant wants the wads in the ID1 folder. Put them there and it works fine, anywhere else and you have no textures in the editor.
Frequently I dig out old maps from years ago and run them through QBSP and get no textures errors. Then I have to go manually edit to fix "wad" "E: \\ worldcraft \\ test.wad" or whatever I was using back then.
I'd rather the map just used "wad" "wadname.wad" and let the compiler find it (with the assumption that the wad is somewhere in the Quake folder).
 Does Your QBSP Support Decimals As Texture Offset Values?
#476 posted by negke [31.16.58.85] on 2016/08/14 13:46:15
 Yes
#477 posted by ericw [108.173.17.134] on 2016/08/14 18:47:27
 Who Else Would Need To Move Textures By Fractions Of Pixeks
#478 posted by onetruepurple [31.0.36.172] on 2016/08/15 21:38:55
 After You Rotate A Texture Probably
#479 posted by Kinn [86.152.167.63] on 2016/08/15 21:41:18
#480 posted by metlslime [159.153.4.50] on 2016/08/15 21:50:51
yeah, if you do the classic 1:4 2:4 3:3 4:2 4:1 cylinders, you will have some angles that you can't perfectly line up the textures on with whole degrees. Not noticeable until you have a long enough surface with the same angle
 Ahoy
#481 posted by Shamblernaut [121.45.232.24] on 2016/09/07 21:22:36
I'm getting this error with my map:
light: /home/benny/Downloads/tyrutils-ericw-ericw-v0.15.5/light/light.cc:656: void CalcualateVertexNormals(const bsp2_t*): Assertion `smoothedNormals.find(v) != smoothedNormals.end()' failed.
As well as a bunch of: WARNING: couldn't nudge light in solid at -1586.848267 174.062302 507.337677
Which I assume is because some of the surface light textures cover the entire brush and some are against other solids.
This same map didn't give me errors with an earlier version. Running ubuntu 16.04.
Also, isit possible to have phong shading on non func_details, I have a func_illusionary or two I'd like to use it on.
Thanks in advance!
 Shamblernaut
#482 posted by ericw [108.173.17.134] on 2016/09/07 21:30:44
Mind emailing me the .map+.bsp+.texinfo?
phong shading on any func_ should work. You have to run a full qbsp to update the .texinfo file though.
btw hoping to make a new release pretty soon
 Thanks
#483 posted by Shamblernaut [121.45.232.24] on 2016/09/08 09:00:14
the new version compiled and works a treat.
also the "-gamma" command is amazing, saved me having to decrease all my light values after adding -bounce
 Dirtmapping Lit Liquids Bug
#484 posted by mankrip [179.198.151.113] on 2016/09/09 01:11:18
Liquid surfaces should be completely ignored when dirtmapping, but they aren't. Here's an E1M2 screenshot.
Ideally, lit liquids shouldn't receive or emit dirtmaps.
 Addendum
#485 posted by mankrip [179.198.151.113] on 2016/09/09 01:14:36
I've taken that screenshot with the water fully transparent, and the map was compiled with these parameters:
$bsp_exe -nopercent -splitspecial $bspdir/$file
$light_exe -extra4 -dirt -dirtmode 1 -dirtgain 0.875 -dirtscale 1.5 $bspdir/$file
 What If The Liquid's Supposed To Be Opaque?
#486 posted by Kinn [86.143.77.118] on 2016/09/09 01:16:44
#487 posted by khreathor [78.88.31.56] on 2016/09/09 01:25:26
"_dirt" "n"
For brush models, -1 prevents dirtmapping on the brush model. Useful it the bmodel touches or sticks into the world, and you want to those ares from turning black. Default 0.
Maybe it will work with water brush too?
 #487
#488 posted by mankrip [179.198.151.113] on 2016/09/09 01:48:39
I've just tried it, and _dirt -1 doesn't work on func_detail.
 Addendum
#489 posted by mankrip [179.198.151.113] on 2016/09/09 01:51:33
Well, actually _dirt -1 sort of works on func_detail. The water isn't dirtmapped now, but it still casts dirtmapping in the rest of the world model.
#490 posted by ericw [108.173.17.134] on 2016/09/09 01:58:45
Thanks for the report, I will fix it properly.
Probably I'm checking for TEX_SPECIAL and skipping casting/receiving dirt if that is set, need to also check if the texture starts with
"*" or "sky" in case splitspecial is used.
#491 posted by mankrip [179.198.151.113] on 2016/09/09 02:03:46
Thanks.
A little feature request: Can you add individual options for -splitliquids and -splitsky? This would be more optimal than -splitspecial, since there's usually no reason to allow sky surfaces to be lit.
#492 posted by ericw [108.173.17.134] on 2016/09/09 02:08:15
It should be there already, just called -splitturb instead of -splitliquids
 :) Indeed
#493 posted by mankrip [179.198.151.113] on 2016/09/09 02:29:46
It is; I've tried it out, and it worked.
Thanks, I've updated my compiler parameters.
 Actually
#494 posted by Kinn [86.143.77.118] on 2016/09/09 21:38:30
Gosh I had no idea lit liquids were even supported in this tool. Any chance someone could give those quakespasm cheps a bit of a nudge?
 V0.15.7 Released
#495 posted by ericw [108.173.17.134] on 2016/09/09 22:31:03
Get it at: http://ericwa.github.io/tyrutils-ericw/
Not really any new features, but lots of performance improvements. It's something like 2-4x faster depending on the map.
Also fixed the regression with bmodels touching the world that Kinn reported.
full changelog: https://github.com/ericwa/tyrutils-ericw/releases
#496 posted by onetruepurple [95.160.159.80] on 2016/09/09 22:39:29
minlight no longer bounces
I can't even begin to imagine how that worked or looked.
#497 posted by mankrip [179.198.151.113] on 2016/09/10 02:04:06
V0.15.7 isn't compiling at all here.
** Executing...
** Command: C:\Dev\Tools\tyrutils\bin\qbsp.exe
** Parameters: -nopercent -splitturb C:\Projects\QuakeDev\Game\Quake\_QDebug_\maps\E1M2
* WARNING: File was not built!
"C:\Projects\QuakeDev\Game\Quake\_QDebug_\maps\E1M2.prt"
 Addendum
#498 posted by mankrip [179.198.151.113] on 2016/09/10 02:10:22
It was the 64 bits version. The 32 bits version is compiling fine. However, I'm on Win 7 64-bit.
#499 posted by ericw [108.173.17.134] on 2016/09/10 02:36:51
Maybe try installing the 64-bit version of the msvc 2013 runtime (vcredist_x64.exe)?
 Bingo!
#500 posted by [92.228.155.143] on 2016/09/10 03:09:11
 #499
#501 posted by mankrip [179.198.151.113] on 2016/09/10 03:29:07
I'll try it.
In the meantime, I've confirmed that the worst part of the dirtmapping bug is now fixed; liquids won't cast dirtmaps on the world anymore.
They still receive dirtmaps, but at least this problem can be worked around by func_detailing them with _dirt -1: screenshot.
 Fast!
#502 posted by Pritchard [121.219.4.122] on 2016/09/10 05:19:24
Wow, 0.15.7 is incredibly fast! I don't have specific times, but it speeds up light on my map by a huge amount. No idea what kind of wizardry was performed for this, but it's really cut down on the iteration time for my map. Thanks so much!
#503 posted by ericw [108.173.17.134] on 2016/09/11 03:14:49
Pritchard - awesome :)
got some bugs reported and fixed already (to be in the next release):
- the "unmatched" target warning was broken
- skip-textured func_'s with "_shadow" "1" were broken (for making invisible shadow casters)
This one was tricky due to how I migrated light away from using the BSP for raytracing. The workaround I implemented has a limitation that the entire bmodel has to be textured with "skip", otherwise the skip textured bits don't cast shadows. Hopefully this covers the common use cases for that trick, though.
 Mankrip
#504 posted by Breezeep_ [100.1.249.19] on 2016/09/13 02:08:16
That looks pretty damn cool. How did you get the water to draw shadows like that?
 Only A Warning, I Assume This Isn't A Big Issue
#505 posted by Shamblernaut [121.45.239.52] on 2016/09/13 10:40:18
 #504
#506 posted by mankrip [179.198.151.113] on 2016/09/14 07:09:03
Using independent surface caches for texture & lighting, and combining them in realtime.
The drawing routines of liquid textures (and now, of power-of-two textures too) were mixed with the drawing routines of regular surface-cached routines, combining the texture & lighting in realtime before blending the result into the framebuffer.
It's not difficult to do, just really tedious. Involves modifying and rewriting a lot of code.
 Func_viscluster Support
#507 posted by Qmaster [50.109.143.170] on 2016/09/16 04:32:51
@ericw: I'm curious if it would be possible to add support for func_viscluster brushes in order to negate large open spaces. I'm of course assuming that vis leafs automatically chop up empty space into leafs every 1024 units. https://developer.valvesoftware.com/wiki/Func_viscluster
Spikespasm:
Host_Error: Mod_LoadLeafs: 121741 leafs exceeds limit of 70000.
#508 posted by ericw [108.173.17.134] on 2016/09/16 04:44:11
AFAIK, there is no chopping of space every 1024 units in this qbsp, that feature was added in quake 2's.
func_viscluster - this sounds like purely something to speed up the vis computation. It's probably possible to add to Q1 tools, it wouldn't help with reducing the number of leafs though.
 Strange Bounce Bug
#509 posted by Pritchard [121.219.4.122] on 2016/09/19 09:25:04
This just popped up now as I'm working on my map. Bounce lighting started generating random black spots in this one room of my level:
screenshot 1
Here's how it looks with bounce lighting turned off:
screenshot 2
Any idea what's causing this? I was changing my light entities around, but I can't figure out what I did that caused this. Has anyone even seen this before? Help would be greatly appreciated :s
#510 posted by Pritchard [121.219.4.122] on 2016/09/19 09:31:25
At least somebody's happy about this...
I tried running the map through 0.15.5 and the issue went away. I'm guessing then that this is an issue caused by the new approximation methods in 0.15.7...
 I Should Really Try Before I Speak...
#511 posted by Pritchard [121.219.4.122] on 2016/09/19 09:33:44
I hate making a third post like this, but I tend to write in a very "stream of consciousness" manner... Anyway, I tried the -novisapprox flag on the command line and the issue persisted, so that's not the problem.
 Weird
#512 posted by ericw [108.173.17.134] on 2016/09/19 09:34:36
I've never seen that, definitely a bug. mind sending me the bsp?
#513 posted by Pritchard [121.219.4.122] on 2016/09/19 09:49:18
Sure, I just shot off an email.
I'm guessing it is some kind of regression from 0.15.5, although I couldn't say what other than that it seems to be bounce-related.
 Fixed!
#514 posted by Pritchard [121.219.4.122] on 2016/09/20 11:01:34
I got an email back from eric and the bug was fixed. Thanks for the quick response! :)
 Please Help Me?
#515 posted by Newhouse [109.240.111.212] on 2016/09/21 20:30:33
#516 posted by khreathor [78.88.31.56] on 2016/09/21 20:46:03
can you turn off texture filtering in game and see if this still happens?
#517 posted by metlslime [159.153.4.50] on 2016/09/21 20:52:55
bilinear filtering -- the last row of pixels blends with the first row of pixels, since it's a tiling texture.
#518 posted by Rick [75.65.153.192] on 2016/09/21 21:43:22
In the black/red colored view it looks like the texture is mirror imaged. Is it one continuous surface going from from red to black or is it actually two different brushes?
 Rick
#519 posted by Newhouse [109.240.111.212] on 2016/09/21 22:25:28
It is same exact texture but one of axis is mirrored "-1" it is 128x128pxl, and those brushes are exactly 128x128 and next to each other.. so filtering is making this to happen, that is looks like it is.. like 0.5 pixels or something?
#520 posted by Newhouse [109.240.111.212] on 2016/09/21 22:26:58
..so filtering is making it to look, like it is 0.5 pixels off or something*
#521 posted by metlslime [159.153.4.50] on 2016/09/21 23:20:15
get up close and toggle between gl_nearest and gl_linear and you'll understand what's happening. You'll need to hide this pixel-wide blend by not using the full width of the texture on that polygon. Either scale it up slightly or make the polygon slightly smaller.
#522 posted by Newhouse [109.240.162.198] on 2016/09/22 16:21:30
Thanks metslime, I haven't tried scaling up yet - maybe that will work.
#523 posted by Rick [75.65.153.192] on 2016/09/22 16:57:40
Any time there is a difference between the textures on adjoining surfaces there will be a noticeable line if GL filtering is used.
I call them GL seams, and any kind of rotation, x/y shift, flip, mirror, etc. will cause it. Even just pixel color differences will cause it.
#524 posted by Newhouse [109.240.162.198] on 2016/09/22 17:52:55
It is interesting.. it really looks like there isn't different pixels in this case, if I understood what you meant by that. I have no clue how GL filtering works, so basically I can't avoid these things to happen.
For example I should create texture that points out on every main angle? Then I should have seamless street texture to fill everything in middle.. I was trying to create streets which has some messy garbage on both sides but middle is a lot cleaner. It really seems like that brown/black line in middle is like texture's starting pixel line, because its end and beginning has different pixel colors. The way GL filtering works.. does it look every texture individually and doesn't care about rotation, x/y shift, flip, mirror at all and that is why something like this happens sometimes?
#525 posted by Newhouse [109.240.162.198] on 2016/09/22 17:55:05
Does it try to blend blend pixels with next pixels.. if I offset it by 1 it is already in beginning, so it tries to blend with those pixels?
#526 posted by Rick [75.65.153.192] on 2016/09/22 18:17:01
What I did when making a series of similar textures was to create one common frame to use for all. Basically just the outer 1 pixel border of a 64x64 square. I used that to make different variations where the middle part was different but the pixels around all four edges are exactly the same for all.
For 128x128, I just repeated the 64x64 frame. Textures made this way have no GL filter seam/line as long as they meet at the 64 unit boundaries.
To make sure no weird texture alignments happen, I never use texture lock. I only turn it on if I really need it.
 It Blends The Next Pixels, So Yes The Dark Pixels Are Wrapped Around
#527 posted by Qmaster [70.195.68.203] on 2016/09/22 20:03:04
I thought we would have moved on from GL filtering as a society by now. Horrible concept really. Yay filtering. Let's blur all the textures. No glasses for you and contacts thrown away for you and baske in the glory that is nearsightedness on a screen.
</endrant>
(P.S. I'm nearly blind and need powerful contacts so I may be biased.)
Also this blending is not a compiler issue. The adjacent face has a different texture alignment and therefore is split into a separate face for blending purposes but thats the extent of compiler related.
#528 posted by Newhouse [109.240.162.198] on 2016/09/22 20:03:06
I might have used texture lock too much.. sometimes it was just left pressed down. Checking something like that multiple times, especially when placing lamps and such things confuses a bit.
I must be weird, because in some cases I want to have more control over things how wide/high some brushes should be.. and if there is only texture available that is 32x32 for example, but I want it to be 16x32 or 32x16 I have to cut it and offset other half so 'borders' are in right place. Creating new textures sounds like, I would probably fail at trying, I'm not an 2d artist by any mean.
#529 posted by Mugwump [80.214.25.213] on 2016/09/22 20:12:37
You could split an existing texture in two halves in PhotoShop, then use them in your maps. This way you wouldn't have to offset your textures, which can be tedious.
 Its So Simple To Fix
#530 posted by Kinn [86.140.23.106] on 2016/09/22 20:56:49
Just make the road so there's three brushes across the width instead of just two.
#531 posted by Newhouse [109.240.162.198] on 2016/09/22 21:01:08
Thanks Kinn, but I also tried out.. scaling up a bit and it worked. But if I need to do wider roads.. then I need to use your advice.
 Re: Ericw, Mapping Help Thread Post #17150
#532 posted by total_newbie [91.64.58.113] on 2016/09/23 16:57:45
don't worry, Linux package management just sucks..
what's the error?
I have hit the same thing on debian/ubuntu before, there's some magic flag to make apt-get work usually. also maybe we should move this to the OS thread...?
Thanks for being willing to look at it.
Initially when I typed "cmake .. -DCMAKE_BUILD_TYPE=Release" from within a newly created "build" directory as per the instructions that come with tyrutils-ericw, I was told that I had to install cmake using apt-get ... which I did, and then weird things happened.*
I thought the installation of cmake failed, because I still could not get the build process to work. I had another look, though, and it seems like the installation did work, but I need a higher version of cmake than the one that is in my OS's repositories:
cmake .. -DCMAKE_BUILD_TYPE=Release
CMake Error at CMakeLists.txt:1 (cmake_minimum_required):
CMake 3.1 or higher is required. You are running version 2.8.12.2
-- Configuring incomplete, errors occurred!
...which means I need to compile cmake from source, I guess?
*If you're interested, I can post the weird stuff that happened too. Basically, as soon as I typed "sudo apt-get install cmake", the terminal window was taken over by the drupal configuration/installation process, which keeps failing. This happens whenever I type "sudo apt-get install cmake" again.
#533 posted by ericw [108.173.17.134] on 2016/09/23 21:19:51
OK, the problem is on my end; I thought I supported Ubuntu 14.04 but mixed up which cmake version it had. I'll see if I can adjust the cmake script and report back..
 @total_newbie
#534 posted by ericw [108.173.17.134] on 2016/09/23 23:24:54
Ok, I made some changes and updated the instructions for Ubuntu 14.04 x86_64:
https://github.com/ericwa/tyrutils-ericw#ubuntu-1404
If you are running 32-bit there will be more work to do but it should be possible as well
 Correct Link
#535 posted by ericw [108.173.17.134] on 2016/09/23 23:25:22
 Absolute Path Not Possible With Qbsp.
#536 posted by Lurq [80.217.21.210] on 2016/09/24 17:43:26
Not sure this is a bug, since it look deliberate in the code, but it would be interesting to know why. :) It treats any argument that begins with a '-' or with a '/' as a switch. Absolute path (linux), including relative to home, will begin with '/'.
Anyhow. It was an easy fix and the tools are awesome.
 @ericw, Re #534, #535
#537 posted by total_newbie [91.64.58.113] on 2016/09/24 18:51:58
Thank you! Will check it out and report back. Luckily I'm running 64 bit on my current primary computer.
 @ericw
#538 posted by total_newbie [91.64.58.113] on 2016/09/25 15:58:35
Thanks, those instructions worked. :)
Now I just need to gather enough courage (and set aside enough time in case of repeated failure) to attempt building TB2 as per your instructions, and I'll be back in business.
 Awesome
#539 posted by ericw [108.173.17.134] on 2016/09/25 22:19:40
 Netradiant / Qbsp Leak Finding
#540 posted by ww [109.157.136.190] on 2016/09/26 21:21:10
How are you guys going about finding leaks using netradiant and qbsp/txqbsp? Specifically looking to find the "Detail Nodes facing the Void". I can use q3map2 to find normal entity leaks, but it doesn't work for func_stuff. Is there an easier way than hunting through the map seams?
#541 posted by ericw [108.173.17.134] on 2016/09/26 21:53:14
The main idea is to use the pointfiles (mapname.pts) output by qbsp/txqbsp. The quake engine can load them with the "pointfile" command. I use Trenchbroom to load them.
re: "Detail Nodes facing the Void" warning, this is unique to how func_detail was integrated into Quake tools. It's not the same as a leak.. as far as I know, the only problem that warning can cause is reduced vis quality (the fact that this is an issue at all may be a bug in vis, not sure.)
To avoid the warning: having world brushes seal in the func_detail is not good enough, because detail clips away world, and the warning happens after the CSG phase when every brush is clipped against every other one. You want to ensure there are some non-detail *faces* left in the final bsp (what you see in-engine) that, if you extend the planes they are on, enclose all of the detail faces.
e.g. if you have an outdoor area where the entire floor is detail, I think you will get that warning
 Func_detail
#542 posted by Qmaster [70.195.71.100] on 2016/09/28 00:30:06
So, I did some experimenting and func_detail can actually be used to seal the map. Um...what?? Also, func_detail brushes are still being used to slice up the space into more and more leafs. Again...huh?? So func_detail is essentially worthless except to speed up vis then? I could use func_wall to save on leafs and not worry about leaks mysteriously showing up when I hide the (leak would be there anyway).
I thought the point of func_detail was to not affect vis, like, at all. No leafs added, no slicing other brushes. Is it possible for func_detail to work like in Source: https://developer.valvesoftware.com/wiki/Func_detail
#543 posted by FifthElephant [82.21.157.236] on 2016/09/28 00:46:40
func_detail will always cut up brushes. It's sole purpose is to speed up vis.
 Purely Out Of Interest
#544 posted by Kinn [86.140.23.106] on 2016/09/28 00:51:27
Assuming latest ericw tools are used, what are the downsides of using buttloads of func_wall in place of func_detail?
#545 posted by FifthElephant [82.21.157.236] on 2016/09/28 00:55:11
func_wall lighting might get a bit funky. You'd have to remember to include things like _shadows and _dirt etc.
That's the thing I can think of mostly being affected.
#546 posted by FifthElephant [82.21.157.236] on 2016/09/28 00:57:22
The other issue with using brush entities is that you are contributing to the entity count. If you're trying to stay under 255 ents for extra compatibility I guess then it's better to stick with func_detail.
#547 posted by ericw [108.173.17.134] on 2016/09/28 01:19:20
func_wall downsides:
- counts towards entity limits (I guess they are probably static ents?)
- likely will have overdraw?
- they can have different rendering performance quirks depending on the engine (and how well the GL driver optimizes what the engine is doing).
Quakespasm: there is some setup cost per-func_wall rendered, but they use the same drawing code as the world, so they can have lots of faces and still render fast
Fitz085 and I believe MarkV use R_DrawSequentialPoly which scales badly on funcs with lots of faces
#548 posted by ericw [108.173.17.134] on 2016/09/28 01:36:32
Also, func_detail needs to create leafs, otherwise collision wouldn't work, rendering might break depending on the engine. The engine needs to have been designed with func_detail in mind to support not creating leaves (q2/q3/source?).
 Func_wall Lighting
#549 posted by Qmaster [70.195.71.100] on 2016/09/28 01:57:05
Ok. On a related note, can func_wall have keys added to receive and block lighting identically to a func_detail.
 Yep
#550 posted by ericw [108.173.17.134] on 2016/09/28 02:14:48
"_shadow" "1"
 You're The Best, Thanks!
#551 posted by Qmaster [70.195.71.100] on 2016/09/28 02:27:28
#552 posted by Ubiquitous [163.1.201.103] on 2016/09/28 14:15:20
Is there a simple reason why the light tools can't be extended to produce lightmaps of essentially arbitrary resolution?
More generallly, -extra 4 is still producing aliased shadows for me (e.g. here: https://ubiquitousgame.files.wordpress.com/2016/09/01.jpg). Is there anything I could try to get better looking lightmap resolution?
 #552
#553 posted by Kinn [86.140.23.106] on 2016/09/28 14:29:49
It would require new file formats and engine support I would imagine.
This was thoroughly investigated a while back and actually got working, and from what I remember the feedback went something like:
"Oh this is cool but a bit too sharp actually, can the shadows be made softer?" (makes it softer) "Hmmm, even softer?" (makes it even softer) "...softer still?...ok actually on reflection I think quake's default lightmap resolution actually looks better but thanks anyway ^_^"
#554 posted by dwere [213.87.161.60] on 2016/09/28 14:34:06
I imagine the tools to generate the lightmaps weren't as good then? From what I can tell the quality of lighting improved quite a bit in the last N years.
 Lightmap Resolution Is Tied To Texture Resolution
#555 posted by mankrip [179.236.233.183] on 2016/09/28 14:37:35
This is a limitation of the vanilla BSP format. Lit2 solves it, but only a few engines supports it.
 #554
#556 posted by Kinn [86.140.23.106] on 2016/09/28 17:35:58
I think it was only something like one year ago when this was explored. Might be wrong - my temporal awareness is somewhat shoddy to say the least.
 #552
#557 posted by khreathor [194.181.150.108] on 2016/09/28 19:14:12
what about "-soft 2" or even more?
#558 posted by Spike [86.169.38.94] on 2016/09/28 19:41:06
higher-res lightmaps have their perks: http://triptohell.info/moodles/junk/fte-20150311190731-0.jpg
the biggest issue is that lightmap changes (both flashing lights and dlights) become abusive, which essentually requires multithreading and/or rtlights in order to prevent it being unplayable, which greatly limits the number of engines willing to implement it.
crank it up to max and the bsp files become insanely huge, but that's only to be expected from poor-man's megatexture. :)
either way, the stepping issue doesn't really go away. the only way to fix that is to use cubic filtering instead of linear filtering.
currently this requires custom glsl. I really ought to investigate it some time. :s
#559 posted by ericw [108.173.17.134] on 2016/09/28 19:54:10
I think there is also some room to improve the filtering within light.exe.. it's using a box filter for -soft and -extra, which is the worst possible filter, I want to try lancosz or others.
Anyway to get the best quality currently you should combine -soft and -extra4.
-extra4 alone will be sharper but have more aliasing
#560 posted by Ubiquitous [94.5.92.243] on 2016/09/28 20:08:56
Thanks for the explanation all
#561 posted by metlslime [159.153.4.50] on 2016/09/28 20:21:17
the biggest issue is that lightmap changes (both flashing lights and dlights) become abusive, which essentually requires multithreading and/or rtlights in order to prevent it being unplayable, which greatly limits the number of engines willing to implement it.
As an aside, I've always thought the ideal handling for light styles would be to upload the four styles as 4 separate textures and combine them using multitexture (or multiple passses) when rendering. Are there any engines that do this?
#562 posted by Spike [86.169.38.94] on 2016/09/28 20:36:46
rmqe does, iirc.
my engine that tries to draw the entire worldmodel in a single draw call also does.
the fragment shader is a bit faster if you do all 4 lightmaps with a single texture, at least when there's no lit support. you can then do the style->value lookups in the vertex shader and your fragment shader basically gains only a dot4product compared to a luma texture.
 Its A Bit Hacky
#563 posted by Shamblernaut [121.45.237.124] on 2016/09/28 20:56:43
but couldn't the engine be modified to interpolate hard edged shadows?
#564 posted by mh [213.233.149.12] on 2016/09/28 21:16:53
As an aside, I've always thought the ideal handling for light styles would be to upload the four styles as 4 separate textures and combine them using multitexture (or multiple passses) when rendering. Are there any engines that do this?
I also have working, but unreleased, Q2 code that does this. It also needs 2X modulate support, but in practice anything that's not of 3DFX vintage has that. It's possible with basic GL_ARB_texture_env_combine but much easier (and nicer) with shaders.
The basic formula is texture * light0 * style0 + texture * light1 * style1 + texture * light2 * style2 + texture * light3 * style3, or texture * (light0 * style0 + light1 * style1 + light2 * style2 + light3 * style3).
You can do it with multitexture and a single shader, substituting 0 for the style value (and using an all-black texture) for styles that a surface doesn't have. Pros is code simplicity, everything goes through the one code path, fewer state changes; con is extra texture accesses.
You can do it with multitexture and 4 separate shaders, trading off texture lookups versus state changes.
You can do it with multipass and a single shader; similar tradeoff as above but with added overhead of extra draw calls too.
Fastest way is if you've monochrome lighting so it becomes a single texture access and a dotproduct: texture * dot (lightmap, styles).
Performance is similar to stock GLQuake for scenes without many lightstyle animations; it's one of those optimizations where you shouldn't expect it to double your framerate in DM3, but if you play a map with lots of lightstyles it works great.
What's nice is that you can then add lightstyle interpolation to the engine and get it for free.
For dynamic lights you do something similar to RT lights which works much nicer for MDL files because you've now got proper directional shading and attenuation on them instead of them just being uniformly lit.
#565 posted by metlslime [159.153.4.50] on 2016/09/28 21:39:12
Pros is code simplicity, everything goes through the one code path, fewer state changes; con is extra texture accesses.
Would the texture accesses problem be solved by making sure all 4 styles end up on the same texture atlas? Or is it just the literal lookup into 4 different pixel locations? And is that anywhere near the cost of uploading new textures?
#566 posted by mh [213.233.149.12] on 2016/09/28 21:47:13
Or is it just the literal lookup into 4 different pixel locations? And is that anywhere near the cost of uploading new textures?
It's 4 different locations, one for each style.
It can be mitigated by replacing texcoords for unused styles in a surface with {0,0} (so that the lookup will be in the GPU's texture cache) or by using a 1x1 black texture for lightmaps of unused styles (same reason), but again we're getting into state change tradeoffs.
Comparison with cost of uploading new textures is an "it depends" answer. If you've a switchable lightstyle like the ramp in e1m1 then uploading is going to be faster. If you've a room with hundreds of surfaces each of which has multiple torch flicker animations on it, then uploading is going to be slower.
On balance I think that irrespective of which method you use to handle animation, it's the right kind of optimization. What's already fast either remains fast or drops a little, whereas performance of what's slow comes up and best case is levelled.
 Double-post
#567 posted by mh [213.233.149.12] on 2016/09/28 21:49:44
I forgot to mention this.
Rather than using 4 textures, one for each style, with 3 of the RGBA channels used and the 4th unused, an alternative is to use 3 textures, one for each of R, G, B with the styles packed into the 4 channels. That both saves memory and reduces those 4 lookups to 3.
 Why 4?
#568 posted by Pritchard [121.219.4.122] on 2016/09/29 00:02:31
Seeing as we're talking about lightstyles etc. right now I thought this would be a good time to ask: had there ever been an attempt to raise the number of lightmaps past 4?
I ask because as a mapper i've run into the issue a few times, and its pretty annoying when it crops up. i understand the need for such a low limit in the past, but is there any particular reason other than a desire for compatibility that we still have it? I can't imagine that there are many computers today that struggle to switch lightmaps frequently...
 Why 4?
#569 posted by mh [217.114.169.246] on 2016/09/29 00:12:19
It's not a problem for RT lights.
For lightmaps it would need BSP format changes as well as engine and tool changes. I don't know/can't remember why we didn't do it for BSP2.
#570 posted by ericw [198.254.143.89] on 2016/09/29 04:40:16
One thing that may help, in the next release I made light.exe not blow up when the "too many light styles on a face" warning happens. It will compute all the light styles and then save the brightest 4 per face.
#571 posted by Pritchard [131.170.5.6] on 2016/09/29 05:11:41
There'll still be a warning, right? Not knowing why you're not getting the desired results would be pretty frustrating and cause a lot of forum posts!
#572 posted by ericw [198.254.143.89] on 2016/09/29 05:16:50
Yep the warning is still there
#573 posted by mh [137.191.242.106] on 2016/09/29 15:56:41
One of the quirks of Quake, in terms of engine, tools and formats, is that it's stuffed full of hard-coded magic numbers like this that can make extending limits while retaining compatibility sometimes impossible.
Unless you actually knew, you'd think that it would be reasonable to suppose that each face structure would have an int member indicating how many lightstyles it has. I know I'd think that. So you might be surprised to learn that it actually doesn't - instead there's a flat array of 4 styles and that's fixed by the BSP format.
What's even more fun is that the code is littered with cases where sometimes a #define is used but other times the number 4 is hard-coded.
 Ctrl=f "4", Replace "x"
#574 posted by Pritchard [121.219.4.122] on 2016/09/29 17:11:19
That does sound like great fun.
I like to daydream about one day just taking quake and gutting it and building something similar that's barely compatible but much more friendly and so on. Really just daydreams though, I don't know C. And I don't want to really deal with fun
 _project_texture
#575 posted by Pritchard [121.219.4.122] on 2016/10/03 03:25:01
I've been wondering if I could use this feature to get smooth blends of textures for my map, i.e. a gravel path that fades smoothly into grass, but unfortunately all that _project_texture seems to do is basically tint the colour of the light a bit, with some textures that have significant colour differences producing multi-coloured lights
Part of me thinks that this is something that just can't be overcome; an issue with lightmap resolution, or something like that. But I feel like I should still ask; is it possible to get more fidelity out of this? If it's already possible, how do I do it?
It's hardly dealbreaking if it's infeasible, but it'd be nice to have...
#576 posted by Spike [86.180.169.240] on 2016/10/03 03:54:59
texture projections are still just a lightmap trick, so there's a resolution of 1/16th of your normal res. think of it as just a filter over the light, projected by a single side of a small cube around the light (you can distort the cube a bit by using the fov, the other 5 faces of the cube are black).
so yes, all it does is basically tint the colour of the light.
which means that if you make some white image and scale that up 16-fold, then you'll get the same lightmap res as the nearby textures without depending on engine extensions (lit2 would allow you to scale the lightmap per-func_detail without needing new textures).
But... you'll probably end up shining light on the neighbouring surfaces too, so it'll be a bit too hard to control.
it'd be nice to do some sort of alpha blending from one side of a face to another, for a nice blend, but politics and compat issues would make that an absolute nightmare.
If you really want that, q3bsp+terrain shaders is the only proper answer right now.
#577 posted by ericw [108.173.17.134] on 2016/10/03 04:07:31
The only portable (across engines) way to increase the lightmap resolution is kind of a hack, scale up a texture by 2x in the wad file (e.g. 64x64 to 128x128), and then use a texture scale of 0.5 in the map editor.
_project_texture only really works for stained-glass windows like spike's screenshot in post #558. Another point: the projected texture will look less like mush if it's projected over a larger area / further from the light source.
For texture blends the best bet is just make custom textures or use a wad with them. Even ignoring the resolution issue, the lightmaps are multiplied by the texture colors, so it would look like grass projected on top of rocks etc.
 Oh Well
#578 posted by Pritchard [121.219.4.122] on 2016/10/03 04:48:27
I figured there would be issues like that. My gravel path shall continue to fail the existence test. Thanks for the explanation though, good to have my suspicions confirmed.
 Pritchard
#579 posted by Mugwump [80.215.45.116] on 2016/10/03 05:46:49
I remember some fantastic-looking hi-res textures of earthy/rocky paths blending into the grass on the sides, made for Oblivion. They might not be exactly what you're looking for but they could be worth checking out for inspiration.
#580 posted by Pritchard [121.219.4.122] on 2016/10/03 06:09:23
It would be nice, and maybe i'll take a look in that direction, but i'm not too invested in this idea and frankly finding an appropriate wad or making one myself would take far too much effort for the results i'm looking to get.
You can see where the path would go here, on the grass with the two dogs. It's a pretty small area and so i'm just going to drop the issue now.
 There Is An App
#581 posted by Shamblernaut [121.45.237.124] on 2016/10/03 08:29:23
Called quake texture tool.
Allows you to blend two textures together. I've tried it and it gives mixed results. Give it a whirl, you could probably get better results using other methods, but the tool is pretty quick.
https://www.quaddicted.com/files/tools/quake_texture_tool_v0_1_0.zip
#582 posted by ericw [108.173.17.134] on 2016/10/03 08:36:48
 Urgh
#583 posted by ericw [108.173.17.134] on 2016/10/03 08:37:29
#584 posted by Spike [86.180.169.240] on 2016/10/03 09:04:57
someone needs to come up with something cool with fence textures acting as decals. especially if they move...
 Ericw
#585 posted by Pritchard [121.219.4.122] on 2016/10/03 09:43:21
that does look nice (judging by the preview) but I'm not seeing any corner pieces; that's what's stopped me from using the hexen 2 textures too, since that's where my grass is from right now; it has a dirt path, but there's no texture for the inner corner so it's pretty useless.
#586 posted by Mugwump [80.214.24.170] on 2016/10/03 13:50:44
Can't you find a way to make a corner yourself with two 45-degree-cut brushes and play with texture alignment so the seam isn't too noticeable?
 I Feel Like I'm In Mapping Help
#587 posted by Pritchard [121.219.4.122] on 2016/10/03 15:30:26
Perhaps, but historically it hasn't worked very well. The hexen textures have a very nice blend into the dirt texture, with defined blades of grass that'd make it difficult to capture the same effect with brushwork (i'd say impossible).
Trying to make up for texture deficiencies with brushwork is normally a losing battle. Quake's gridsize only goes so small, after all.
 Pritchard
#588 posted by Kinn [86.149.69.132] on 2016/10/03 15:52:37
Just fire up Zendar and look at the ground in the opening valley. That sort of thing is the best way of doing it I think.
Quake's all a bit "squint your eyes and it kinda works". There's no point getting too perfectionist about this.
 Minor Update V0.15.8
#589 posted by ericw [108.173.17.134] on 2016/10/03 19:28:43
 Oh Boy
#590 posted by Pritchard [49.199.31.19] on 2016/10/04 00:46:39
My name, preserved in a changelog for all eternity! I'm gonna be so famous!
 Ooh
#591 posted by sevin [75.183.33.118] on 2016/10/04 00:58:25
Thanks for the update, Eric - and Pritchard :)
 .DLL's Required?
#592 posted by damage_inc [172.56.35.98] on 2016/10/04 07:24:48
There are 3 .dll's in this release(V0.15.8) that I just downloaded, is that a thing now?
I only ask cause I've never seen anything but .exe's for the build programs until now.
"embree.dll, tbb.dll and tbbmalloc.dll"
 Yeah
#593 posted by ericw [108.173.17.134] on 2016/10/04 08:12:33
I'm using an external raytracer (embree) in light now, mostly for performance. It's open source (Apache v2) and developed by Intel so it shouldn't be sketchy. The dll's are downloaded from: https://github.com/embree/embree/releases
#594 posted by damage_inc [208.54.37.131] on 2016/10/04 09:42:14
Okay, thanks.
#595 posted by Pritchard [121.219.4.122] on 2016/10/04 09:51:13
Bounce lighting is a crutch
i blame you for my lazy light work ericw >:(
#596 posted by Mugwump [80.215.71.222] on 2016/10/04 13:52:09
I would say exoskeleton rather than crutch. Nice lazy light work, Pritch, I love the chiaroscuro effect.
#597 posted by Pritchard [121.219.4.122] on 2016/10/04 15:07:07
Thanks, it's always nice to get compliments with fancy words I have to Google. I'm not really ashamed of how much I'm abusing the feature, it's a wonderful way to get smooth, soft lighting (those jagged edges are with soft and extra4!). I try to rely on visible sources where possible so having them reach as far as possible is a great help in a lot of ways.
I will say though that it's a shame it doesn't work for switchable lights! That's how I ended up with that before and after pic, adding a targetname to the light... Ruined my idea of an ambush in the dark...
#598 posted by Mugwump [80.215.93.195] on 2016/10/04 15:41:31
"I try to rely on visible sources where possible so having them reach as far as possible is a great help in a lot of ways."
I haven't reached the point where I try this feature yet, but I bet it indeed saves a lot of time by making the placement of additional ambient lights unnecessary.
"I will say though that it's a shame it doesn't work for switchable lights!"
Hmmm... Eric? Would that be within the realm of possibilities for a future update?
 Styled Lights Bounce
#599 posted by ericw [108.173.17.134] on 2016/10/04 21:38:42
I'll look into it! It was something I left out initially to keep things simpler. Nice screenshots!
 The "Brush Primitives" Map Format
#600 posted by Kinn [86.149.69.132] on 2016/10/04 21:50:15
Any chance of supporting the "brush primitives" map format (like how we support Valve 220) ?
As far as I am aware, the "brush primitives" format was introduced for Quake 3 engine games, and is supported by GTKRadiant-based editors. It's like Valve 220 in that it allows textures to be projected properly on the brush face, instead of just the coordinate axes. I don't know too much about it, but there's an overview of the various map formats here:
http://quark.sourceforge.net/infobase/src.topics.face.html
 #599
#601 posted by Mugwump [80.215.81.183] on 2016/10/04 22:05:36
Cool!
 Brush Primitives
#602 posted by ericw [108.173.17.134] on 2016/10/04 23:02:01
Should be doable, I imagine I can just grab the code from q3map2. I'll just need to find q3 map sources that use that format to test it with.
#603 posted by Kinn [86.149.69.132] on 2016/10/04 23:05:04
That would be ace biscuits :) It would allow better texturing possibilities for Radiant users, of which there are quite a few here :)
 @Kinn
#604 posted by khreathor [78.88.31.113] on 2016/10/05 03:03:18
Like what? Some examples?
#605 posted by ericw [108.173.17.134] on 2016/10/05 03:54:39
It's just another .MAP texture alignment format equivalent to Valve 220 and Quark ETP
#606 posted by ericw [108.173.17.134] on 2016/10/05 08:38:29
I think I got brush primitives working - alpha build!
Hopefully radiant can be configured to use brush primitives and quake 1 textures at the same time. I only really tested the texture alignment with a brush primitives map saved with Quark, although I did check that a map saved with the new netradiant can be parsed, so will be interesting to see if this works.
 Next On The Docket
#607 posted by PyroGXPilot [71.89.205.34] on 2016/10/05 09:09:40
misc_models and .ASE models
j/k
 "Brush Primitives"
#608 posted by Kinn [86.149.69.132] on 2016/10/05 13:41:39
Wow that was quick :)
Here's a test map in the Quake3 BP format: https://dl.dropboxusercontent.com/u/61424391/Quake%20Stuff/testq1q3.map
I compiled it with your new build and it seems to work fine, cheers!
So, here's how you set up NetRadiant to use the BP format:
Edit the q1.game file located somewhere like here:
"C:/NetRadiant/netradiant-custom/netradiant-custom-20160911/games/q1.game"
All you have to do is set brushtypes="quake3" and maptypes="mapq3".
Then in the editor, go to preferences->settings->brush and make sure the "brush primitives" checkbox is turned on.
Restart the editor. Now, when you are in quake 1 mode in NetRadiant, you will be reading and writing maps in the Quake3 BP format. Everything else is still Quake 1 style - wad textures work fine and all that.
I still need to pester the NetRadiant guy a bit more though. In the test map, I have included a crude terrain ceiling to illustrate the main problem with the editor's handling of the BP map format - which is ironic considering the format was created for Radiant in the first place...
When in BP mode there currently seems to be no way of telling a face to use the old axial projection - it's face projection all the time. Face projection is great to avoid the weird skewed textures on certain angled surfaces that you'd get in quake's original map format, but for stuff like gentle terrain you would almost always want axial projection to get seamless texturing.
The terrain in the map looks terrible because of this. But yeah I just need to pester the guy maintaining NetRadiant to add the ability to choose face or axial projection on a surface.
A little bonus thing you could do that is not important, but might be worth doing, would be to read Quake3's "detail" flag on brushes, as an alternative to using func_detail - this might come in handy for people who want to try converting existing Quake 3 maps over to Quake.
 _shadow Bug?
#609 posted by Qmaster [50.40.202.177] on 2016/10/06 06:34:54
Hmm...not sure this is a bug or not, jpegs below:
Func_wall no _shadow: computer_noshadow
Func_wall with _shadow 1: computer_shadow1
See the hard line where the face changes textures at the trim baseboard?
Tried messing with the brushwork and got these:
uh-oh
and_more_breakiness.jpg
.MAP: asset_library.map (ya you can guess what this is eventually going to be ;) )
 Oops. Link Broken.
#610 posted by Qmaster [50.40.202.177] on 2016/10/06 06:36:26
#611 posted by Pritchard [131.170.5.4] on 2016/10/06 06:53:34
I had that happen to me once on a map I was working on, my solution was to reduce the intersection of the brushes as much as possible. So the wall behind would need to be cut to shape around the computer panel rather than having them simply overlap. Try it and see if it helps, I guess.
 Qmaster
#612 posted by ericw [108.173.17.134] on 2016/10/06 08:13:36
I think that bug was fixed in v0.15.7 :) If you're on an older version, updating to the latest should fix it.
 Feature Idea / Request
#613 posted by Shamblernaut [121.45.237.124] on 2016/10/06 17:19:37
So I was messing about with flashing lights and realised that due to limitations of the engine there are certain things I can't do that are pretty simple. Things like having alternating flashing lights (without needing extra trigger/relay entities). Or having a light that has a fade and a flash sequence.
So I was thinking about custom lightstyles. Here is the idea:
A light entity with the tag "_lightstyle" which allows users to have cusom "id" format lightstyles: string value a-z (example: "aallzzll").
What are your thoughts?
#614 posted by metlslime [209.249.118.68] on 2016/10/06 19:24:06
I think something like that could be done in quakec.
 Absolutely Metl
#615 posted by Shamblernaut [121.45.237.124] on 2016/10/06 19:31:54
but that won't apply to vanilla or to AD or quoth, etc.
 Shambernaut
#616 posted by Kinn [86.149.69.132] on 2016/10/06 19:35:57
read that as "can only be done in quakec"
 Lighting Question
#617 posted by damage_inc [172.56.27.165] on 2016/10/07 06:58:57
Phong shading and Deviance are easy to understand as "options" you can exercise in your mapping. But I am a little confused about bounce(radiosity) and dirtmapping(AO).
Bounce:
From my limited knowledge IIRC radiosity lighting is superior to standard Q1 lighting, yes? And if so, would that be considered to be the default choice(standard) for mappers from now on going forward?
Dirtmapping:
Should this also become standard practice in lighting a map, or more still just an option for giving a certain design/artistic "look"?
Thanks.
#618 posted by Pritchard [121.219.4.122] on 2016/10/07 07:14:50
Both options can provide a pretty significantly different look. Bounce lighting is one that I personally see as almost always desirable, with the exception that it makes it quite difficult to have stark contrasts in your lighting (which you may or may not want to have depending on specific situations) due to the fact that light will, well, bounce! I can't think of a situation where it's made a map look bad, but by no means is it necessary to use if you want your map to look good.
Dirtmapping, in my mind, is a bit more subjective. It certainly helps to add a "look" to your map, although depending on how you tweak the values that can either be very intense or very minor. It's certainly not appropriate for all situations, but taken in moderation I think that it's generally useful.
I think the same really goes for a lot of the modification's ericw has made; yes, they do have a distinct look that changes how the final product uses, but it's generally a tasteful, inoffensive change that most people would take as being an improvement. I mean, compared to coloured lighting (especially when ported back into older maps i.e. the original game) it's pretty harmless, and we've learned to live with the existence of that technology...
Anyway, I'm not exactly prolific enough to have a "default" for my maps, since I have about... 3 to my name, none released, but so far I've always used bounce and dirt with varying settings in my creations.
 Negative Lights For Stark Contrast
#619 posted by Qmaster [50.40.202.177] on 2016/10/09 15:19:23
I haven't tested it in a while but I believe you can use lights with negative brightness to combat the horrors of bounce lighting (even though it saves time putting in fill lights).
#620 posted by [167.114.118.4] on 2016/10/09 19:20:27
ericw: would it be possible to compensate for lightmap seams as described in this paper?
One of those "would be nice" features.
#621 posted by Rick [75.65.153.192] on 2016/10/12 07:31:42
I tried 0.15.8 a bit tonight. There seems to be problems with lights inside sky brushes or something. Or maybe a problem with very low values for light?
Here's one that seems to have just disappeared.
BJ/MH Light
http://quaketastic.com/files/screen_shots/wish13_i.jpg
0.15.8 Light
http://quaketastic.com/files/screen_shots/wish13_i_2.jpg
That light shining through the window is in a sky brush, but just barely. It's almost in the void. The values are light 75 delay 5 wait .02 and the range is set to 1.0 on the command line.
I saw other differences, but that's the most obvious.
#622 posted by ericw [108.173.17.134] on 2016/10/12 09:43:00
Thanks; I didn't realize regular light entities were supposed to pass though sky faces. Should be an easy fix.
#623 posted by Rick [75.65.153.192] on 2016/10/12 15:41:06
The thing is, most of them still did. The only one I noticed that didn't was the one in those screenshots. That's why it stood out. Is it possible it got "nudged" into the void?
On the good side, about 10 of the 30 or so lights it found "in solid" actually were old misplaced lights.
Also to note, there was no reduction in marksurfaces using -forcegoodtree. The number actually went up a bit. Using txqbsp_xt always gives a drop of around 1200 or so.
 New Version V0.15.9
#624 posted by ericw [108.173.17.134] on 2016/11/21 05:47:30
Download here
Changes:
- light: fix black fringes on bmodels that are touching against the world
- light: light passing through glass lights up the back side
- light: bmodels with "_alpha" < 1 and "_shadow" "1" set cast tinted shadows
- qbsp: support Quake 3 "Brush Primitives" .MAP format
- qbsp: save "_mincolor" for func_detail/group to the .texinfo file, now used by light
- qbsp: performance improvements
To elaborate on the "fix black fringes on bmodels" thing, v0.15.8 had a pretty severe bug where every func_door (or any bmodel) would have black edges wherever it touched the world, like an ugly/broken looking version of AO.
The reason I broke that in v0.15.8 was, I was trying to fix another bug, where bmodels (func_wall, etc.) that intersect the world, or have a face touching the world, would have broken lighting (usually all-black faces). Typical case where this would happen would be a large func_wall window that has a world brush slicing through it (or just touching the front).
So, that bug is back, because the "fix" I tried was much worse (black fringes on all bmodels). If you have a func_wall with black faces / broken lighting, the fix is to manually clip it against the world so it doesn't stick into the world anywhere. I'll see if I can come up with a better fix next version
 Fringe Of Darkness
#625 posted by Bloughsburgh [75.151.243.225] on 2016/11/21 12:57:59
That's great to hear, I encountered the black fringe issue before and it is good to know it may be fixed on this release!
#626 posted by Pritchard [121.214.144.108] on 2016/11/21 13:31:35
Would it be possible to hit both bugs by having the compiler test if the bmodel intersects or not? Or would that require multiple passes or something like that? (Assuming extra passes would suck, which when it comes to speed they probably would :/)
 Qbsp
#627 posted by Qmaster [70.195.90.172] on 2016/11/21 16:20:54
Performance improvements - intrigued, my latest maps have been bottlenecked by Qbsp which is wierd since vis always took the longest until recent improved versions. Curious what improvements you've made.
#628 posted by ericw [108.173.17.134] on 2016/11/21 18:34:11
@Qmaster - performance improvements are from undoing some mistakes I made when C++-izing bits of qbsp (unnecessary std::map lookups). Qbsp could be made a lot faster, though. e.g. Quake 2's is multithreaded.
Pritchard, I'm not sure if knowing if the bmodel intersected the world would help. I think I need to do something like: test whether each sample point is in the void or not, and just not use the ones that are in the void.
 Dumb Question
#629 posted by Pritchard [121.214.144.108] on 2016/11/22 03:11:09
How do you do lit liquids? I tried the commandline flags people are talking about here (-litturb etc.) and it just gives an error and doesn't run light. Was it removed or something?
#630 posted by ericw [108.173.17.134] on 2016/11/22 03:37:27
-splitturb option for qbsp.exe should do it; light.exe will automatically detect this and save lightmaps for the water. Looks like that option is missing from the docs.
Engine support is fairly rare (?) - I don't know what supports it, off hand.
#631 posted by khreathor [91.217.18.31] on 2016/11/22 12:15:47
Engine support is fairly rare (?) - I don't know what supports it, off hand.
So I can "bake" lightmap on the water and it will be still fullbright in some engines, or what?
#632 posted by Kinn [81.131.206.126] on 2016/11/22 12:49:05
So I can "bake" lightmap on the water and it will be still fullbright in some engines, or what?
Yes. There is that one software render engine that mankrip is doing that supports it I think. That's the only one I am aware of.
However, give other engine authors a slap and a tickle in the right place and I'm sure this feature can be adopted elsewhere (it bloomin well should be because it's coolbeans)
I just checked my Jam 7 map to be sure I was remembering correctly, and Darkplaces supports lit water too, at least version 15:49:13 May 13 2014. Incidentally, I discovered the final version of my map is apparently broken in that engine for a different reason, which is just fantastic, but the lit water works as expected. It's easier to see the effect with r_wateralpha 1, of course.
 Crazy Idea
#634 posted by Kinn [86.131.182.165] on 2017/01/04 23:00:03
All this talk of lightstyles in the AD thread got me thinking...
Say you had a moving object with start and end positions in radically different lighting conditions.
Imagine you could tell the light tool to light this object in position 1, assigning all light on it to lightstyle "x", and then light it again in position 2, assigning the light to style "y".
Then in the QuakeC you could fade lightstyles x and y in and out as the object moved.
Just an idea, but it struck me as interesting that this sort of cheap dynamic light effect boils down to being a compiler thing + a bit of QC.
You could even go nuts and leverage the fact you can have up to 4 lightstyles on the object, so can specify up to 4 different positions to light it in, allowing much more accuracy in the blending as the object moves around.
I may be missing a few "gotchas" but, does the theory sound basically correct?
#635 posted by metlslime [159.153.4.50] on 2017/01/05 02:43:22
there are only 64 lightstyles total, and 32 of them are used by light.exe for switchable lights, the other 32 for "styled" lights (flickering/pulsing) -- of which about 11 are actually used in id1 progs. So I think this would work if you were willing to dedicate 2-4 styles just for that one moving object, and write a quakec modification as necessary to do the proper fading.
 It Is Intriguing
#636 posted by Kinn [86.131.182.165] on 2017/01/05 03:20:16
I guess it would be something that could become an attractive idea when you have situations like in Hrimfaxi's rrp map, where there is a large section of a big room that moves up through several floors.
Wouldn't be worth it for run-of-the-mill platforms and what not, but for big setpiece movers I can see it having the potential to look quite sexy.
#637 posted by mankrip [177.209.20.81] on 2017/01/05 03:22:38
There are 64 lightstyles, but Quake's BSP format only supports 4 different styles per surface.
IMHO, a more practical solution would be to use the "Lit BSP models" feature from the Makaqu engine 1.6 (used to adjust the brightness of the ammo boxes to the ambient lighting) and add an option to make it also work on internal BSP submodels.
 #637
#638 posted by Kinn [86.131.182.165] on 2017/01/05 03:32:49
I only suggest the idea because it struck me as interesting that it doesn't need a custom engine.
I'd be happy to use up a handful of lightstyles on a moving room setpiece.
How is the "ambient lighting" determined in Makaqu?
 Cool Idea!
#639 posted by ericw [108.173.17.134] on 2017/01/05 03:49:22
I think the challenge is working out a standard between the mapper, light.exe, and the QC. light needs to have a copy of the logic for the func_door/train or whatever is moving. Func_door would be pretty easy, func_train would be trickier (unless the mapper marks which path_corner's to calculate lighting at, up to 4 per train?).
Also, things like making sunlight/sunlight2 use a lightstyle other than the default of 0 are certainly possible without too much work in the light tool. Easiest way might be for the mapper to specify a lightstyle number with a worldpawn key like "_sunlight_style" - light would then use that for the sunlight, and know not to assign that style number for a switchable light.
#640 posted by Kinn [86.131.182.165] on 2017/01/05 04:04:16
I guess one implementation could be...
I would suggest light.exe should not need to know how the object moves - it only needs to know the positions to light it at - these could be specified in the map with "info_lightmodel" entities - they would mark the various positions (mins?) of the brushmodel. The info_lightmodel would target the brushmodel (to let light.exe know what to light, obviously), and also specify the "style" number to use.
 Also
#641 posted by Kinn [86.131.182.165] on 2017/01/05 04:12:24
your sunlight suggestion is cool.
Question: what happens with bounce light coming off a surface with styled lights? Is there a bounce for each style?
#642 posted by ericw [108.173.17.134] on 2017/01/05 04:27:40
Mmm - yes the info_lightmodel sounds good.
Currently styled lights don't bounce at all, this was something I limited to make the first version of the code simpler, but I want to support it eventually.
#643 posted by Kinn [86.131.182.165] on 2017/01/05 04:44:38
Yeah I guess bouncing styles would have a similar problem to styles on lights with 1/x or 1/x^2 falloffs: you could propagate styles to tons of surfaces everywhere and it could get out of control.
I think for most styled lights, you won't really notice the lack of bounce, but if you start doing styled sunlight, then I think sunlight bounce would be noticeable and you'd expect it to change like the direct sunlight does.
 Kinn
#644 posted by mankrip [152.238.235.186] on 2017/01/05 17:52:08
How is the "ambient lighting" determined in Makaqu?
Nearly the same as in MDL models, using R_LightPoint and the entity origin, offset by the relative model position.
As for a pure QC + assets workaround... How about this:
- Make one model on origin A (start), and another on origin B (end).
- Set the B model to non-solid, and enlarge it by 1 unit (not 1%) on each direction.
- In the QC code, make the B model follow the origin of the A model.
- Implement code to fade the .alpha of the B model according to how far it is from the end position.
Almost every custom engine supports .alpha, so this shouldn't be a problem unless someone really wants to target vanilla WinQuake/GLQuake.
 Bmodels With _shadow 1 Lighting Problem
#645 posted by PuLSaR [37.147.244.207] on 2017/01/07 18:24:52
Does light do simplified calculations on bmodels with _shadow 1? I get weird squares of shadows on solids from complex bmodels (in places, not everywhere). Splitting a big bmodel into a few smaller ones doesn't change anything. Any suggessions?
#646 posted by ericw [108.173.17.134] on 2017/01/07 20:26:21
There have been problems with _shadow 1 bmodels intersecting/touching each other, or the world. The faces that are touching can have artifacts, either black fringes or solid black or other artifacts.
I forget what the current status is, because I've been swapping in and out hacks to try to combat that.. but I'm working on a more correct fix.
Other than that, there shouldn't be any problem with shadows from bmodels. Check your version is 0.15.9, or feel free to email me screenshot/map if it seems like a different bug.
 So
#647 posted by PuLSaR [37.147.244.207] on 2017/01/07 20:56:40
If the bmodel doesn't touch another solid, the problem should be gone?
#648 posted by ericw [108.173.17.134] on 2017/01/07 22:23:15
Yeah, if they're not touching the problem should not occur (at least a 2 unit gap. The light sample points are 1 unit above the face, having these sample points blocked is what causes issues)
 Thanks
#649 posted by PuLSaR [37.147.244.207] on 2017/01/07 22:28:39
that was very helpful
 Ericw
#650 posted by Shamblernaut [121.45.238.31] on 2017/01/24 16:22:42
does "-bounce 1" bounce lights with negative values?
 Nope
#651 posted by ericw [108.173.17.134] on 2017/01/24 19:54:25
Negative lights are ignored by bounce
 Hexen 2 Rotating Entities Broken
#652 posted by Bloodshot [96.250.1.8] on 2017/01/25 03:08:18
The use of an origin brush for rotating entities doesn't work with -hexen2. The origin brush is visible ingame and the brush still rotates around the map origin
#653 posted by ericw [108.173.17.134] on 2017/01/25 03:26:27
Yeah, there is no origin brush support at the moment.
Current behaviour is (designed for Q1 hipnotic rotation):
If a brush entity classname starts with "rotate_", qbsp looks at the "target" key, and searches for the targetted (point) entity. That point entity's origin becomes the origin of the brush entity.
I'm not sure if that is compatible with Hexen 2 rotation?
 Probably Not
#654 posted by Bloodshot [96.250.1.8] on 2017/01/25 03:46:45
Hexen 2's is more like half-life, though it uses the "flags" key for how many degrees it should rotate. I think you can manually enter the origin to specify where it should rotate but that doesn't seem to work right in trenchbroom
 Figured Out A Sort Of Workaround
#655 posted by Bloodshot [96.250.1.8] on 2017/01/25 04:08:26
You can actually manually put the origin in, but you have to place the brush at the map origin or it ends up outside the map.
Kind of a pain to light it properly but it works otherwise.
#656 posted by mukor [73.94.119.85] on 2017/01/25 04:54:15
lmao that sounds like an editing nightmare
#657 posted by ericw [108.173.17.134] on 2017/01/25 06:23:34
Tried implementing it, download available on the github issue
It might be handy for Quake too.
Hope I did it right.. if there is a brush in a brush entity with the "origin" texture, the center of that brush is used as the model origin (qbsp translates the model so that point is at 0 0 0, and sets the "origin" key).
Also light no longer cares about the classname starting with "rotate_", if the brush entity has an "origin" key set to something other than "0 0 0", the faces will be translated to that position during lighting (hopefully doesn't break anything?)
 Im Wondering
#658 posted by sevin [96.10.82.54] on 2017/01/25 19:23:47
Is there a standard for final compile settings? I assume people leave BSP and VIS parameters alone, except maybe -bsp2 for BSP? Is that something everyone uses, or only if the map somehow doesn't compile as a regular BSP? Is there any reason not to use BSP2?
For light, judging by the doc page on Eric's site, I'd guess people use -extra4, -gate 1, -bounce 1, and maybe some -soft?
 Final Compiles
#659 posted by ericw [108.173.17.134] on 2017/01/25 19:45:56
Yeah, the main thing is to use -extra4 on light; the other tools can stay with the default settings.
-gate 1 is probably fine but it's actually a faster/lower quality option than the default. -bounce 1 is something you want to use from the beginning if you are going to use it, since it'll change the entire look of the map. -soft is personal taste, it will make the final lightmap softer.
Is there any reason not to use BSP2?
It's best not to use the -bsp2 flag unless it's needed so the map will run on the widest range of engines (including vanilla ones). qbsp will print an error if the map exceeds limits so that it requires -bsp2.
 Also
#660 posted by sevin [96.10.82.54] on 2017/01/25 19:50:45
-bouncescale .8 or so? What about sunlight and dirt settings in the worldspawn?
#661 posted by ericw [108.173.17.134] on 2017/01/25 20:06:08
Tougher to generalize as those are more artistic choices. The screenshots / settings on the website give some starting points, you can also check map sources for ideas.
 Yeah
#662 posted by sevin [96.10.82.54] on 2017/01/25 20:17:41
I did check out some of the AD maps and was surprised to find very little dirt is used. Judging by the 1000 Cuts screenies I'd expect a lot more dirt, but maybe that's because of the greyscale. Sock seems to use 96 dirt, I'd think an intermediate between 256-512 would look nice.
#663 posted by Kinn [86.131.182.165] on 2017/01/25 21:10:36
Sock seems to use 96 dirt, I'd think an intermediate between 256-512 would look nice.
Sock's 96 dirtdepth is not a bad value actually. A dirtdepth of 256-512 is something that works when looking at a distant shot of an otherwise fullbright map, like in the preview image on ericw's page. For a normally lit map, it means surfaces 256-512 units away will be darkening your target surface, which can just suck all the light out of interior rooms quite easily.
 Kinn
#664 posted by sevin [75.183.57.98] on 2017/01/26 00:20:01
I know it's probably a good value; Sock chose it. I have no Quake experience so all I have to go on are Eric's pics and various worldspawns. I need to jump in and make myself a test map.
#665 posted by Pritchard [110.148.118.214] on 2017/01/26 04:54:01
I prefer to set things like bounce in worldspawn and keep my compilation configuration as "universal" as possible. I just use -extra4 and -soft on my light config, and I usually use bsp2 for qbsp because what current engine doesn't support it, anyway?
 Lol...
#666 posted by onetruepurple [37.8.230.53] on 2017/01/26 05:01:18
Don't use bsp2 if you don't need it.
 Pritchard
#667 posted by sevin [75.183.57.98] on 2017/01/26 05:14:02
You can use the bounce parameters in the worldspawn? It doesn't say that on Eric's site.
#668 posted by Pritchard [110.148.118.214] on 2017/01/26 05:20:55
Yeah, i'm pretty sure. Also, because of otp, i'm only going to release my maps in bsp2 from now on. (Not that I release any maps...)
 #665
#669 posted by mukor [73.94.119.164] on 2017/01/26 05:43:09
Same. I only use in my compilation setup are the ones that can ONLY go in there. Otherwise the rest go in worldspawn.
Actually, speaking out loud, I need to add those to my .fgds.
 Derp. I Meant #668
#670 posted by mukor [73.94.119.164] on 2017/01/26 05:43:49
 #669
#671 posted by khreathor [78.88.31.219] on 2017/01/26 11:12:37
I have .fgd with all Tyrutils-ericw options for my JACK setup, should be easy to transfer to TB2 if you want.
 Wait
#672 posted by sevin [75.183.57.98] on 2017/01/26 13:46:47
You can put this stuff in the fgd? How are you doing that?
 #672
#673 posted by Kinn [86.131.182.165] on 2017/01/26 14:02:53
Open the .fgd with a text editor and add/edit worldspawn fields like you would with any other entity.
#674 posted by Kinn [86.131.182.165] on 2017/01/26 14:06:28
You can use the bounce parameters in the worldspawn? It doesn't say that on Eric's site.
Good spot. Looks like the "Worldspawn Keys" section needs updating http://ericwa.github.io/tyrutils-ericw/doc/light.html
 So Then
#675 posted by sevin [96.10.82.54] on 2017/01/26 14:42:50
Which fgd are you guys using? I have a quake.fgd that came with JACK and then the AD fgd.
 Dirty Choices
#676 posted by sock [181.1.30.171] on 2017/01/27 15:29:29
I did check out some of the AD maps
Every mapper did their own thing and there are some who did not use detail brushwork or utilize lit files. Personally I compiled all my maps in AD with dirt parameters which are setup on the worldspawn so everyone can reproduce the results for themselves.
Sock seems to use 96 dirt
Its dangerous to take that parameter in isolation because the dirt AO system has several parameters which all play key roles in how the dirt is applied. You also need to remember the dirt parameters work with 2 other key systems, architecture and light entities!
I did countless tests with the new dirt AO system and found I wanted a strong dirt in corners that worked with finer brushwork detail. I also only added dirt to strong light source (excluded from all small/ambient light sources) and excluded it from most func bmodel entities.
There are many examples of different ways to setup lights and I would highly recommend anyone to look at Honey by CZG and The Hell that's coming by warrenm because both have source files included.
Honey uses strong point lights with many low fill (delay5) ambient lights and THTC uses many strong fill (delay5) lights for large windows and subtle fill lights for the rest. Both systems have different advantages and both create a different atmosphere. They are both pre dirt AO options, but they are useful for understanding lighting.
The final piece to the puzzle is architecture and in my AD maps I often have _dirt and _minlight parameters on bmodels and certain architecture to correct the overall dirt parameters I use. Its impossible to expect one global setting will fix all light issues and that is why I requested Eric add the ability to all map entities to switch lighting features on/off.
I also recommend everyone stop using the compiler for options and use the worldspawn instead! Why you might ask? Well so that everyone can learn from your source maps and try to understand how you did things.
I usually use bsp2 for qbsp
As I have said to Eric, this parameter should be on the worldspawn, it is really annoying to have to keep switching stuff around for different maps. The more parameters on worldspawn the better.
Which fgd are you guys using? I have a quake.fgd that came with JACK and then the AD fgd
Just edit/update either file with all the extra stuff you want. You can open a FGD in a text editor and cut and paste stuff around. Jack will run an error check on the file for you when it loads up a map, so its easy to spot errors. The format is not overly complex, the AD version should have plenty of examples of how to use the 'base' function and syntax formats for entity key types.
 Back To Front
#677 posted by sock [181.1.30.171] on 2017/01/27 15:39:00
I also only added dirt to strong light source (excluded from all small/ambient light sources)
Sorry it is the other way around, I have not checked my parameters in a long time because I just use the same setup each new map.
Strong source lights = no dirt
Ambient source lights = AO dirt
The dirt is excluded from the strong light sources so that you get the hotness effect around lights. Remember Dirt AO will make every surface look darker and make strong lights sources feel dull.
Here is some more lighting tips to think about.
#678 posted by PuLSaR [37.144.58.62] on 2017/01/27 19:22:58
I also recommend everyone stop using the compiler for options and use the worldspawn instead! Why you might ask? Well so that everyone can learn from your source maps and try to understand how you did things.
That's a really good point.
 Also
#679 posted by Kinn [86.131.182.165] on 2017/01/27 19:42:10
Having as many compile settings as possible inside the map file makes it much more portable.
Imagine working on the map on different PCs (cheeky bit of lunchtime mapping at work anyone?) or on different editors, or after upgrading editors.
If as many settings as possible are properties of the map file, then it should reduce the time it takes you to sync up your settings across different environments.
That would be ideal anyway.
#680 posted by mukor [73.94.118.23] on 2017/01/27 20:06:10
It seems the only ones that ARENT worldspawn are things like -extra/-extra4, -lux, -onlyents... things that arent followed by some sort of value.
is it possible to convert these to be usable as worldspawn as well?
 Well... Not So Fast
#681 posted by Kinn [86.131.182.165] on 2017/01/27 20:18:04
If the idea is that you find a good value and keep it for that map - no matter what sort of compile you are doing - then it's a property of the map and it should be a worldspawn value (sunlight, dirt blah blah)
If it's a setting that you keep changing to do different types of compiles (e.g. fast / final / onlyents /dirtydebug etc. ), then it's not a property of the map, and thus should remain as a commandline switch
#682 posted by mh [185.82.73.118] on 2017/01/27 23:02:25
Do -extra and -extra4 gamma-correct when downsampling, or is that even relevant with lightmaps? It is something which makes a huge quality difference when generating mipmaps for diffuse textures. See http://filmicgames.com/archives/327 for something of a discussion.
 Thanks Sock!
#683 posted by sevin [71.2.152.198] on 2017/01/28 00:32:19
I did countless tests with the new dirt AO system and found I wanted a strong dirt in corners that worked with finer brushwork detail. I also only added dirt to strong light source (excluded from all small/ambient light sources) and excluded it from most func bmodel entities.
I did notice several maps in the ones I've checked out that disable dirt on some bmodels, like func_doors. Why would you do that? Is it just because they move and their lighting changes enough that they look bad?
Just edit/update either file with all the extra stuff you want.
I know how to edit the FGDs, I just figured there would be a "standard" stock FGD that people use, like how everyone uses Eric's compile tools now.
Strong source lights = no dirt
Ambient source lights = AO dirt
So you sometimes apply different dirt setting per-light? I take it that's usually for indoor areas?
Honey uses strong point lights with many low fill (delay5) ambient lights and THTC uses many strong fill (delay5) lights for large windows and subtle fill lights for the rest. Both systems have different advantages and both create a different atmosphere. They are both pre dirt AO options, but they are useful for understanding lighting.
I come from Source multiplayer (TF2, CS) where almost all maps take place primarily outdoors, so we don't really use "phantom" fill lights much since the light_environment and indoor sourced lights take care of most of the playspace.
 Dirty Buggers
#684 posted by Kinn [86.131.182.165] on 2017/01/28 00:56:59
Talking of dirt, I've always felt lights should have optional dirt "falloff" controls.
It struck me when playing around, that I'd want a bright light source to not apply dirt within a certain small radius, and then after this radius, ramp up until it's subject to the full dirt settings. Something like (on the light entity):
_dirt_off_radius
_dirt_on_radius
Should be self-explanatory, but if not:
From 0 to _dirt_off_radius units, no dirt.
From _dirt_off_radius to _dirt_on_radius, the dirt linearly ramps from 0 to full, and after _dirt_on_radius, it's full dirt.
What I currently do is use two lights in the same place: a bright light with dirt 1, and then a smaller light with dirt -1 so that it stops the immediate geometry around the light looking unrealistically dirty. The suggestion above means you can do basically the same thing but with just the one light entity.
 Hmm
#685 posted by sevin [71.2.152.198] on 2017/01/28 01:14:24
I'm still trying to visualize what the dirt actually looks like on point lights. It sounds like the light actually casts shadow at its outer reaches, but that doesn't make sense. I'm not at my PC or I'd make a little test.
#686 posted by Kinn [86.131.182.165] on 2017/01/29 23:02:39
I'm still trying to visualize what the dirt actually looks like on point lights. It sounds like the light actually casts shadow at its outer reaches, but that doesn't make sense. I'm not at my PC or I'd make a little test.
Point lights don't "cast" dirt, so to speak. Imagine lighting a level with no dirt, then dirt is applied afterwards as a second pass. This dirt is applied over the existing light, so those lights are said to have "dirt on them".
For lights that have no dirt (dirt -1), I assume those lights are applied after the dirt pass, not before it, so the light can illuminate the dirty creases.
Caveat: the above is a guess, only ericw can confirm whether that's actually how it's done, but I'd be surprised if it's not the case.
 Kinn
#687 posted by sevin [75.183.57.98] on 2017/01/29 23:14:48
That makes more sense, thanks.
 Hmmm
#688 posted by Kinn [86.131.182.165] on 2017/01/29 23:21:06
ericw - is my assumption correct re: 3 passes (1: dirty lights, 2: dirt pass, 3: non-dirty lights)?
If so, where does bounce lighting fit into this? I assume bounce must be subject to dirt.
 @kinn + Sevin
#689 posted by ericw [108.173.17.134] on 2017/01/30 04:43:59
Yep, the 3 passes explanation is correct.
It's implemented slightly differently, but the result is the same: each light is rendered, possibly multiplied by the dirtmap (if dirt is enabled on that light), then summed.
Also, interesting idea about the dirt falloff. I don't think it'd be difficult to do.
I did notice several maps in the ones I've checked out that disable dirt on some bmodels, like func_doors. Why would you do that?
I'm guessing it's the same reason shadows look bad on doors; the shadow should be stationary when the door opens, but in Quake the shadow moves with the door texture.
 Mh
#690 posted by ericw [108.173.17.134] on 2017/01/30 05:00:16
No, there's no gamma correct downsizing, that's something to try!
 Hmm
#691 posted by sevin [75.183.57.98] on 2017/01/30 05:09:15
I'm guessing it's the same reason shadows look bad on doors; the shadow should be stationary when the door opens, but in Quake the shadow moves with the door texture.
So it's just to lessen the effect? Disable the dirt so the moving shadow is less noticeable?
#692 posted by Kinn [86.131.182.165] on 2017/01/30 15:00:07
Also, interesting idea about the dirt falloff. I don't think it'd be difficult to do.
For me, that would be really lovely as it would cleanly preserve the 1/x^2 falloff characteristics of my point lights, whilst also giving me precise distance control over when the dirt kicks in, as well as simplifying the whole setup.
 Isn't It About Time For A New Map Standard?
#693 posted by FifthElephant [213.205.253.205] on 2017/01/30 17:01:05
I feel like the introduction of all these new features etc is being held back a huge amount.
 Fifth
#694 posted by Kinn [86.131.182.165] on 2017/01/30 17:10:46
What new map spec do you have in mind?
 Something With Surface Flags For A Start
#695 posted by FifthElephant [213.205.253.205] on 2017/01/30 18:50:25
 From The Rumblings Around Here
#696 posted by Shamblernaut [121.45.238.31] on 2017/01/30 19:01:25
higher def light maps sound like they'd be useful
 Go Map For Q3 Or UE4 Or Whatever The Hell Then
#697 posted by onetruepurple [37.8.230.53] on 2017/01/30 19:10:21
#698 posted by mh [213.233.148.21] on 2017/01/30 20:41:52
Higher res lightmaps have been talked about and we actually had an implementation at one point. Turns out they're one of those things that it's nice to talk about but when reality hits nobody really seems to want them. See the comment about "lit2" in the opening post of this thread, even.
This is something that came up a lot when I was doing the original BSP2 design. There is a degree of conflict between what people want and what's practical to implement. One of the overriding design goals of BSP2 was that it needed to be something that people would actually use. It needed to be quick and easy to implement and with a high degree of compatibility.
That's why it doesn't have all of the additional features that people might wish for. If you ask 10 different people you'll get 10 different answers, and any given 5 of those answers will probably be incompatible with the other 5.
So it doesn't have coloured light built-in, it doesn't have 32-bit textures, it doesn't have high-res lightmaps, it doesn't even change the .map format so you can continue using your favourite editor. Implementing it is just a handful of functions and structures and even software engines get to join the party.
That's why it's been successful where previous "let's design a new map format by committee" attempts have failed.
I think that I've a good idea of the kind of map/bsp format that people actually do want however, and I think it looks a little like Q2 BSP but with embedded textures, BSP2 extended limits and a Q3A lightgrid.
 Higher Res Lightmaps
#699 posted by Kinn [86.131.182.165] on 2017/01/30 21:05:39
Yes, what mh said. See here for the start of a discussion on it when it was trialed: http://www.celephais.net/board/view_thread.php?id=60967&start=382
Feedback was rather mixed.
I'm in the "meh" camp. It's funny how, once you start to increase the lightmap resolution, how quickly your thoughts seem to shift to "hmm looks a bit too crisp actually, how can I make this softer?" Heh.
#700 posted by Baker [69.47.142.25] on 2017/01/30 21:30:02
I'd be curious to know what Fifth is thinking about with surface flags.
#701 posted by mh [213.233.148.21] on 2017/01/30 21:54:11
My experience is that people asking for a feature typically have a very specific problem right now that the feature they're asking for would solve.
For example: "can I have high-res lightmaps?" - meaning: "I'm shining a light through some grating and I'm not seeing the detail I'd like in the shadows".
Thing is, they can sometimes get so caught up in the specific problem they wish to solve that they forget about the knock-on effects of the feature they want.
So "can I have high-res lightmaps?" turns into "everything looks like crappy hard-edged Doom 3 shadows".
Fence textures were another example. I was asked could player movement be clipped by sprites, but it turned out that the problem was that sprites were being used for gratings/etc. Fence textures were an easy addition, everything works the way it should, and the end result is more generally useful.
There's more mileage in asking about what you wish to solve than there is in asking about how you wish to solve it.
 More Thoughts
#702 posted by FifthElephant [82.21.157.236] on 2017/01/30 22:21:52
It's interesting reading my post on higher res light maps. I think I would still be interested in 2x detail (4x at a push) but it would have to be surface-dependent (specific areas only). I think when I did those tests I might have just done it on all surfaces (wasnt needed).
When I said surface flags that was certainly one example. Lots of features have been added to the compilers already that cover functions (_phong on groups, this is done by surface flags in Q2, same with alpha textures and scrolling surfaces). Maybe something that will allow terrain in the future and curved surfaces.
I dunno, I was just riffing ideas tbh. My next mapping projects will not be grandiose ones like with ad_tfuma so I am not in the market for new toys and gizmos just yet.
#703 posted by mh [185.82.73.248] on 2017/01/30 22:26:03
I don't think it would look good if a 4x surface was beside a 1x surface. Unless you set things up very carefully there would be quite a jarring effect where the surfaces meet.
#704 posted by Pritchard [101.160.171.215] on 2017/01/31 00:47:38
One thing that I would like to see added is a way to project textures at full resolution. I wanted to do that with my noirjam map to get a smooth, natural transition between grass and dirt but was unable to due to the low resolution lightmaps.
I agree with the issues that high-resolution lightmaps raise, but better texture projection would be a nice feature to have. It would be a niche addition though, and like mh said, design by committee rarely works out...
#705 posted by Kinn [86.131.182.165] on 2017/01/31 00:58:50
Sorry I can't get my head around why you'd want to fake texture blending via some kind of textured light projection.
Opening up photoshop and making some transition textures would be by far the best option.
If there was enough demand for proper texture blending, it would have to be an engine thing, perhaps done in a similar way to how Quake 3 does it.
 @Kinn
#706 posted by ericw [108.173.17.134] on 2017/01/31 01:12:06
I got _dirt_on_radius / _dirt_off_radius up and running, if you want to check it out here is a snapshot.
For now the feature is only active if you set both keys, and there is no safety check that the _dirt_on_radius is larger than _dirt_off_radius.
This does seem like a cool feature.. here is an (ugly) screenshot with:
"_dirt_off_radius" "100"
"_dirt_on_radius" "500"
http://i.imgur.com/zWQAOtS.png
The light is in the upper left of the screenshot, and the dirt is only really visible on the back wall to the right
 @Kinn - Not Necessarily ...
#707 posted by Baker [69.47.142.25] on 2017/01/31 01:18:48
Blend it manually! tool screenshot results screenshot
I never knew I turned that into a tool, but a month ago I noticed someone talking about that tool.
I guess Spirit saved off a copy.
 Ericw
#708 posted by Kinn [86.131.182.165] on 2017/01/31 01:54:52
Wow :) Thanks, that was fast! I've had a play with it and it makes a big difference - that will practically cut in half the number of lights I need. It looks great - torches in corners and alcoves now look correct, and the dirt nicely fades in as the light diminishes. A great addition imo :)
 @kinn
#709 posted by Pritchard [101.160.171.215] on 2017/01/31 02:30:14
I've never had much success with tools designed to blend textures; in general, my experience with working with .wad files has been pretty awful. So far the only hassle-free, bug free experience I have had has been with (our lord and saviour) ericw's defullbright tool, which actually does what it says on the tin without refusing to load half the formats it "supports" or failing to save changes properly...
Quake Texture Tool is nice, but in my experience it mangles the colours from time to time. I had to get some blended textures for my current map made by hand because everything QTT produced wouldn't match up when put next to either source texture.
In any case, projecting/blending textures is a much simpler, less painful experience that can easily be achieved with a map editor and the requisite format support. If it worked like it currently does, all you'd need to know is the names of the texture you want and how to set up a spotlight. No messing around with buggy tools from the 90s/early 2000s and no messing around with things like GIMP or Photoshop.
#710 posted by Kinn [86.131.182.165] on 2017/01/31 14:05:26
@baker - looks useful!
@pritchard - sorry still not seeing it - leaving aside the issues associated with having an uber-high-res lightmap, you're still just projecting coloured light - it will just glow, like a stained glass window effect surely?
#711 posted by Pritchard [101.160.171.215] on 2017/01/31 14:27:25
Why would it glow? If you're projecting a texture, not a light, you're not projecting coloured light. Perhaps that's how it works now?
To be honest I just miss being able to paint textures in Cube 2. As far as I know that was done through some kind of "map" of the level, but I don't know the specifics of how it worked. But if you're familiar with that, that's the sort of functionality I'd like to have. Probably a pipe dream...
#712 posted by onetruepurple [37.8.230.53] on 2017/01/31 14:35:54
In any case, projecting/blending textures is a much simpler, less painful experience that can easily be achieved with a map editor and the requisite format support. If it worked like it currently does, all you'd need to know is the names of the texture you want and how to set up a spotlight. No messing around with buggy tools from the 90s/early 2000s and no messing around with things like GIMP or Photoshop.
What are you smoking?
#713 posted by Kinn [86.131.182.165] on 2017/01/31 14:42:12
Why would it glow? If you're projecting a texture, not a light, you're not projecting coloured light. Perhaps that's how it works now?
When you project a texture with a spotlight, you are adding positive light to the lightmap. Let's say you project a green grass texture onto some gravel - all that will happen is you are adding some greenish light to the gravel texture - you'll see the gravel texture brightened up a bit and tinted green
#714 posted by mh [137.191.242.106] on 2017/01/31 14:57:11
You can project a texture and set up any blend func you wish. Do it before lighting, do it after lighting, whatever.
Just because it's commonly used for spotlights doesn't mean it can only be used for spotlights.
So project a green grass texture onto gravel and set up the blend as GL_ZERO, GL_SRC_COLOR and you get a straightup modulation of grass and gravel. Set it up as GL_ONE, GL_ONE and you add grass to gravel. Set it up as GL_ONE, GL_ONE_MINUS_SRC_ALPHA and set up the alpha channel of the grass texture and you get a masked overlay - kinda like Quake's sky.
 Mh
#715 posted by Kinn [86.131.182.165] on 2017/01/31 15:12:10
All my comments are assuming we're just using the existing system but with just a higher-res lightmap.
 EricW, Baker, Spike And Other Engine Devs
#716 posted by Shamblernaut [121.45.238.31] on 2017/01/31 16:33:17
So it seems obvious to me that the people who work most on the engines should drive any changes they want to see / would see to be beneficial to the community. So Baker / EricW / Spike... What would you want to see in any future map format?
Regarding the screenshots from the upscaled lightmap experiment.
The jaggies were gone, which was nice... But the sharp shadow edges were a bit much. It seems that some quantity of blending is nice.
#717 posted by onetruepurple [37.8.230.53] on 2017/01/31 16:59:26
The "jaggies" disappear in regular resolution lightmaps when you compile light with -extra4.
#718 posted by Shamblernaut [121.45.238.31] on 2017/01/31 17:35:11
Lately I've been learning lots of simple shit that I should already know.
Thanks OTP.
 #716
#719 posted by Spike [217.42.48.75] on 2017/02/01 01:23:30
Any changes you make to the map format are useless if noone ever uses them
until them we have bspx, to embed optional stuff that noone else even realises is there.
#720 posted by Pritchard [101.160.171.215] on 2017/02/03 07:06:55
So, leading off of my post in the Mark V thread, is there any particular issue with these compiler settings that might cause lit water not to work?
http://i.imgur.com/q1gWtTZ.png
#721 posted by ericw [108.173.17.134] on 2017/02/03 07:09:47
Aha, should be "-splitturb" without the "s"..
qbsp should be printing an error about unknown option I think?
 -onlyents And Strings
#722 posted by gland [93.190.140.61] on 2017/02/06 02:11:03
Really obscure, odd thing that had me stumped for quite a while! Posting in this thread because it seems to be something to do with the compile.
AD mod - create a misc_textbook and just put (for example) "\\bTest Message\\b\\n\\n" in the "message" field, and "\\bTest Message 2\\b" in the "message2" field (without quotes).
If you do an -onlyents compile, the \\b gold lettering breaks and you see the backslash character in the text. If you do a normal compile, then the gold lettering appears properly. Does this happen to anyone else or is it just me?
 Erm
#723 posted by gland [93.190.140.61] on 2017/02/06 02:17:47
This board treats backslashes different when you preview a post versus actually posting.
In my above post, please ignore the double-backslashes.
They are supposed to be single-backslashes (so in my example above I am actually typing single-backslash-b etc. in the message field in the quake editor.
How confusing is that!
#724 posted by ericw [108.173.17.134] on 2017/02/06 02:19:56
Try doing an onlyents light compile (after the qbsp -onlyents); I think that'll fix it.
the \b handling is in done in light.exe for some reason; it probably should be moved to qbsp.
 Thanks!
#725 posted by gland [93.190.140.61] on 2017/02/06 02:27:50
That did the trick :)
 Strange Lighting
#726 posted by Pritchard [101.160.171.215] on 2017/02/20 14:05:00
http://i.imgur.com/1poBXfp.png Some of my func_detail gets really dark in the middle and has obvious seams with the nearby brushes. Here's how it looks in the editor: http://i.imgur.com/y6JHK4r.png
Any ideas? I can mask the effect by adding another nearby light but the seam is still visible. Changing the geometry works to fix it as well, which is what I've chosen to do.
#727 posted by ericw [108.173.17.134] on 2017/02/20 19:56:28
Hmm, it's tough to say. It could be a few things:
- try a light compile with "-phongdebug" and set "r_lightmap 1" in engine.
- try adding "-novisapprox" to light. This disables some light culling that can be over-aggressive and can cause artifacts like this, although it shouldn't be messing up in this case.
 Pritchard
#728 posted by FifthElephant [82.68.146.212] on 2017/02/21 00:32:11
I'd also say your geometry is overly complex on the floor. You're more likely to get lighting errors and such when the detail is so high. I'd also say high detail on the floor is not always desirable because of Quakes quirky physics.
#729 posted by Pritchard [101.160.171.215] on 2017/02/21 00:53:22
In my experience with the floor so far it's has worked out well, but I could easily change from func_detail to func_illusionary and use flat clip brushes for movement if it becomes a problem.
I'll try your suggestions soon Eric.
 I Wouldnt Do That Tbh
#730 posted by FifthElephant [82.68.146.212] on 2017/02/21 00:55:18
as you may encounter similar lighting issues etc. Just keep it clean and simple, Quake doesnt need to be super high poly :)
 >:-(
#731 posted by Pritchard [101.160.171.215] on 2017/02/21 01:02:41
I like me some polygons, dangit! I'm well aware of the func_illusionary lighting problems, but they all have workarounds and should be minimal in the first place considering my minimal amount of brush overlap.
#732 posted by Pritchard [121.214.149.10] on 2017/02/25 05:56:38
Was fence texture raytracing ever re-added? It'd be nice to have, my current map uses such textures quite a bit.
 Yep
#733 posted by ericw [108.173.17.134] on 2017/02/25 06:04:15
It's in v0.15.9. It should work automatically (the old version needed a -fence command line flag, which is no longer needed)
#734 posted by Pritchard [121.214.149.10] on 2017/02/25 10:53:32
Is it supposed to be reported in this line if it is acting?
Embree_TraceInit: 0 skyfaces 40734 solidfaces 0 fencefaces 0 selfshadowfaces 0 skipwindings
I'm noticing that there are no "fencefaces" reported, which makes me wonder if it is actually working.
#735 posted by ericw [108.173.17.134] on 2017/02/25 17:33:16
Yeah, it should list >0 "fencefaces" there.
Check that "_shadow" "1" is set on the entity (assuming the fence texture is used in a func_?)
#736 posted by mankrip [201.9.84.245] on 2017/02/26 20:16:03
Now that more people are trying to implement lit liquids, and Darkplaces already supports it, can you turn -splitturb on by default in the BSP compiler?
It has literally zero negative side effects, and the impact on performance caused by the subdivision should be negligible in any engine nowadays.
It's nice that the compiler is already capable of compiling lit liquids, but no one is using this option yet. All of those new maps being released in the last months could have looked a lot better with lit liquids.
#737 posted by mh [213.233.149.20] on 2017/02/26 20:48:21
I'd like to see this happen too.
I think there are still a few decisions to be shaken out regarding lit water, but we're not going to get a useful discussion until a sufficient number of people have had a chance to see what it actually does look like, what all the weird corner cases are, and how it interacts with existing content.
#738 posted by ericw [108.173.17.134] on 2017/02/26 21:26:47
I'm not sure about enabling -splitturb in these tools by default; I don't want to push it on mappers retroactively, which is what would happen if people upgrade tools and don't test their maps in DarkPlaces. In the longer run I think it'll be a feature like skyboxes (or phong shading, bounce lighting, etc) where mappers might use it if they're going for a modern look, and not use it if they're going for a retro look.
But I agree the community in general needs to see this in action to evaluate it; DarkPlaces isn't that useful for evaluating the look because the water surfaces doesn't do the swirl effect. I have only seen it in DP and it looks OK but tends to make water look a bit like a solid wall.. I think the warping will help counteract this (as well as careful setup of wateralpha / minlight on the water brushes, from the mapper). We need a Fitzquake style engine with it. I meant to make a patch to Quakespasm for it some time, at least for making test builds to post here.
#739 posted by mankrip [201.9.84.245] on 2017/02/26 21:41:27
Does Darkplaces have a cvar to disable it? If a map doesn't look good with it, the user can disable the effect.
It's about having options. If lit water isn't compiled into the map, the users have no option.
 BTW
#740 posted by mankrip [201.9.84.245] on 2017/02/26 21:51:44
DarkPlaces [...] doesn't do the swirl effect. [...] tends to make water look a bit like a solid wall.. I think the warping will help counteract this
Exactly. In Retroquad it looks great because the texture swirls while the lighting doesn't.
#741 posted by mh [213.233.149.20] on 2017/02/26 22:16:44
Yeah, I compiled e1m2 with lit water and noticed the "solid wall" effect too, but this was even with the turbulent effect.
Another thing I noticed is that the lightmapping tends to make translucent water less noticeable; it's actually more difficult to fine-tune a good value of r_wateralpha that works well.
The thing about fullbright translucent water surfaces is that they actually blend with the lighting on the solid surfaces below them. This comes back to the statement I made earlier on about translucent surfaces probably not needing to be lit at all, but yeah, it's something that people are only ever going to be able to evaluate once they see it.
Having a cvar to enable/disable options is useless IMO if the cvar isn't exposed to the player somehow. Because most players won't even be aware that it exists. That's a total cop-out; people don't read readmes so you need to pick sensible defaults and unfortunately I suspect that while community judgement on lit water is going to be "it looks crap", people are so drunk on the kool-aid that we're going to end up with a set of defaults that in a years time nobody will want.
#742 posted by Pritchard [121.214.149.10] on 2017/02/26 22:41:13
To me the value of lit water is that even if it is a tradeoff of sorts and can have undesirable effects (I still haven't really managed to see it in action aside from screenshots, so I can't say if it makes water look like a solid surface or not), it's still better than having water that glows in the dark.
That's really what it's about for me - letting mappers use water in dark areas without it looking awful and out of place. The way it is right now looks fine in places like this, but not so much in places like this. You can make it more subtle by increasing wateralpha (it's 0.6 in these screenshots), but then you lose some of that murkiness and uncertainty from the water that a mapper might want. And it doesn't solve the problem completely anyway.
By the way @ericw, thanks for the hint about the _shadow key, worked a charm. Too bad my fence textures are too finely detailed and barely let any light through :(
#743 posted by mankrip [201.9.84.245] on 2017/02/27 02:09:24
mh: Having a cvar to enable/disable options is useless IMO if the cvar isn't exposed to the player somehow.
That's why I'm used to implementing menu options for this kind of thing. And such menu options needs cvars.
Lots of engines have options to toggle colored lighting, wateralpha and so on. It's really hard to believe you haven't thought of this possibility.
Anyway, even if nobody else implements it in their engines, even if nobody else compiles it in their maps, I'll just keep doing my own thing. Even if everybody else thinks it looks bad.
#744 posted by Pritchard [131.170.5.2] on 2017/02/27 02:51:14
I think Retroquad looks great but i also think it should be a criminal offense that I can't play it ;-;
 Clip Brushes Question
#745 posted by gland [93.190.140.61] on 2017/02/27 15:19:02
Let's say I have a lot of fiddly little clip brushes used to smooth over some terrain (turning the collision into steps basically, not slopes). Should the clip brushes be made func_detail, like the terrain, or should clip always be world / func_group, regardless of how detailed it is?
 I Don't Know About Quake
#746 posted by sevin [96.10.82.54] on 2017/02/27 15:56:29
But in Source clip brushes don't cut visibility.
#747 posted by madfox [84.84.178.104] on 2017/02/27 23:33:40
I used to place small brushes in func_wall, but for vising sake it would be func_detail.
 Clip Brushes
#748 posted by ericw [108.173.17.134] on 2017/02/28 00:09:21
I'm pretty sure it's fine to put them in func_detail, they will behave the same as if they are in worldspawn or func_group.
(Clip brushes are only included in hull1/2, and func_detail is specific to hull0, so the features shouldn't have any interaction)
 Ericw
#749 posted by gland [93.190.140.61] on 2017/02/28 14:12:46
Thanks very much, that all makes sense.
 3 Questions
#750 posted by total_newbie [79.197.97.127] on 2017/03/05 14:49:12
1) If I want to upgrade to the latest tyrutils-ericw (v0.15.9) on Linux 64 bit, can I just download the Linux64.zip archive, extract it and immediately use it? That's what I tried, and qbsp seems to work ok, but light gives me the error message
error while loading shared libraries: libembree.so.2: cannot open shared object file: No such file or directory.
There is a file called "libembree.so.2" in "tyrutils-ericw-v0.15.9-Linux/bin/", though, so I'm confused.
2) When using running light, does it matter in which order I type in the command-line options? E.g. is there a difference between
light -bounce -extra4 -dirt
and
light -dirt -bounce -extra4?
Are they both correct? Or both wrong? Do I need to give "bounce" a value? (I've tried various variations, but I find it hard to know when/if I'm doing things correctly, as I'm not sure what the in-game results are supposed to be).
3) This is not a huge problem (yet), but one brush face in a map I've been working on suddenly stopped being lit, both when running light normally and with "-dirtdebug" (which should light all faces evenly, right? That's what it's always done before when I used it). Is there a known reason for this kind of thing? Is there anything one can do to avoid it, or is it one of those mysterious things that just sometimes happens?
This is using tyrutils-ericw 0.15.8 and an outdated version of TB2 beta (the reason being that when I last tried to upgrade TB2, I seemingly had to first upgrade my then freshly installed OS, or fiddle around with repository settings to get the necessary dependencies updated to the versions required for updating TB2 -- and I didn't have the time or patience to do so. At some point I will update both). I just mention this in case this might be an issue related to the editor rather than the light tool (in which case I'll just have to live with it until I update my OS and editor). Oh, and my engine is QuakeSpasm 0.92.0.
#751 posted by ericw [108.173.17.134] on 2017/03/05 19:06:24
1. Looks like I messed up packaging the linux binary.
If you don't mind running light manually from the terminal, try "cd"-ing into the "bin" directory and run:
LD_LIBRARY_PATH=$(pwd) ./light {options here}
Otherwise, I'll fix it in the next release.
2. Order doesn't matter, except the map has to come last. There is no parameter for -bounce (there are separate flags like -bouncescale X though). Only a few commands take optional parameters (-soft can take a number like "-soft 2"). The tool should be strict if there are mistakes in the command line options, and refuse to run. For now the manual is the best reference: here, or the website front page.
3. It would just be a bug in "light". Things that have caused black faces in the past:
- bmodels (func_wall, etc.) that intersect the world
- regular world faces with an obstruction near the center of the face, within 1 unit of the surface.
I *think* I fixed all of these for the next version, I should put up a beta or release soon. Feel free to send me your map/bsp if you want me to check it out though.
 Thank You Very Much For The Response, Ericw
#752 posted by total_newbie [79.197.97.127] on 2017/03/07 10:36:47
1. I didn't know there was an alternative to running it manually from terminal; that's what I always do. :) Anyway, I tested typing that arcane string of characters and it works, thanks! That'll tide me over till the next release.
2. Order doesn't matter
Thanks for clearing that up! :)
There is no parameter for -bounce
the manual is the best reference
I had already read through the manual and the stuff on the front page a few times, but was still a little confused.
The example of the front page is
-bounce -bouncescale 2
which made me think that it doesn't take any parameters.
But the manual made it seem to me as if do need to specify a value ("n"):
bounce n
Enables 1 bounce, 0=disable even if set in worldspawn. Available as a worldspawn key.
I guess I'm misinterpreting something?
3. Thanks for all of this info. The brush with the unlit face is just a regular unobstructed worldbrush, but it's good to know these things for future reference.
Thank you very much for offering to look at the map. If the problem persists, I might take you up on the offer, but a lot is bound to change in the map, so the problem might resolve itself in the mean time. Plus, the file is a huge mess of provisional brushwork, newbie mistakes, textures that have not been properly aligned yet, etc., and though I know no-one but me cares, I'm still too embarrassed to share it in its current state.
 Intensity Of Color Lights
#753 posted by Aelf [77.89.116.154] on 2017/03/13 04:43:23
Hi,
I noticed that color lights have different intensity than the neutral ones. https://flic.kr/p/SQKPAU In the picture all the lights have the "light" key of 150, but the attenuation and the intensity is very different.
If that's "a feature", what can I do to make them look more uniform?
 Aelf
#754 posted by Kinn [86.154.183.10] on 2017/03/13 04:49:57
That looks like a custom engine screw-up. What engine are you using?
#755 posted by Rick [75.65.153.192] on 2017/03/13 04:56:56
When you change the color, it reduces the intensity of the colors that you don't want. If a white light has RGB color of 1, 1, 1 and you make it pure blue, the color becomes 0, 0, 1.
You could reduce the brightness 1/2 by making the color 0.5, 0.5, 0.5
I don't think the light program compensates for this and maybe it's what you are seeing.
 Rick
#756 posted by Kinn [86.154.183.10] on 2017/03/13 05:01:23
That's not the problem at all here. Look at the image - that's an engine thing. The light program just can't blow the lightmap brightness up like that.
#757 posted by Rick [75.65.153.192] on 2017/03/13 05:10:25
Okay, you're probably right. The picture was so dark I couldn't really see anything other than the white and blue blobs, and I was too lazy to turn the gamma up.
 Hmm
#758 posted by ericw [108.173.17.134] on 2017/03/13 06:07:02
White and colored lights shouldn't have vastly different intensity / falloff, and if anything white will be brighter than colored as Rick was saying.. so something is wrong here.
Is the "_color" key set on the white lights (the dim ones on the right)?
The engine's brightness/contrast controls are blowing out the colors so it's hard to tell what's going on. Also assuming that is Darkplaces, you can view the lightmap only by entering "gl_lightmaps 1" in the console.
 #755
#759 posted by mankrip [189.105.237.155] on 2017/03/13 06:59:10
It's clearly amplifying the light instead of reducing.
Somehow, it seems to be adding the color to the light instead of multiplying.
 Ericw's Right
#760 posted by Aelf [83.12.254.177] on 2017/03/13 11:44:06
It's Darkplaces. Only the color lights have "_color" key. I'm at work right now but AFAIR I didn't use any "_deviance".
If anyone wants to check it, I could take more screenshots with higher brightness or should I mess with any other parameters?
I'll check the same settings in FitzQuake and will let you know.
 Rtlights
#761 posted by Spike [86.176.70.105] on 2017/03/13 12:57:42
Use floats, ie values between 0 and 1.
Values greater than 1 will either oversaturate or be divided by 255, depending on implementation (welcome to the wild west).
The lighting in that screenshot actually has nothing to do with tyrlight[-ericw], because the engine you're using is basically ignoring its output and making up its own thing based on the map entities.
set r_shadow_realtime_world 0 to get it to behave properly. This'll also boost framerates significantly, so a double win...
ericw, how about a feature to ignore/strip certain lights so you can more easily set up rtlights without damaging static lights? maybe
 Ah Yes, Darkplaces
#762 posted by Kinn [86.154.183.10] on 2017/03/13 13:46:39
Loathe as I am to suggest continually adding fudges to support all the different implementations custom engines expect - on the compile side, would it make sense to always normalise 0-255 values into 0-1 values when saved to the bsp?
 Fgd File Updated
#763 posted by DaZ [79.66.145.243] on 2017/03/13 14:13:40
I've updated my FGD file for version v0.15.9 of Ericw tools so you can now set phong on brush models and projected textures on lights.
https://dl.dropboxusercontent.com/u/33279452/quake4ericwTools.fgd
Tested with J.A.C.K steam release
 Thanks Daz!
#764 posted by ericw [108.173.17.134] on 2017/03/13 19:59:38
Spike, ah, rtlights explains it. Hmm maybe a key to omit an entity from the bsp could be handy, although in this case the mapper could just use colors values in 0-1.
I kind of hate to add hacks like scaling the "_color" values in the bsp to 0-1, although I suppose it improves compatibility with darkplaces "auto-rtlights" and should be pretty safe.
 Floats Do It!
#765 posted by Aelf [77.89.116.154] on 2017/03/14 01:07:24
Thank you Spike! As soon as I changed the values into floats, the light got rendered nicely.
Also, when I turned off rtworld, as suggested by EricW, the rendering was pretty close to how FitzQuake does it. Although, I do have to admit it, it's a bit bland this way.
If anyone wanted to check a poor presentation of the above, go to https://flic.kr/s/aHskVVmHss.
 Face->numpoints > MAXEDGES (64)
#766 posted by Pritchard [121.214.149.10] on 2017/03/20 15:00:10
Got this error when working on my map, after I made a brush that was way too finely curved for its own good. Is there any solution other than just having rough edges? :(
#767 posted by metlslime [107.77.75.108] on 2017/03/20 16:22:31
Csg Split it into several smaller brushes?
#768 posted by mh [137.191.242.106] on 2017/03/21 11:18:01
More than 64 verts will crash most Quake engines, since engines also contain code that assumes that the max verts in a face is 64. Example: https://github.com/id-Software/Quake/blob/master/WinQuake/gl_warp.c#L148
So you definitely want to keep the tools error and correct your brush instead.
#769 posted by mankrip [189.105.234.47] on 2017/03/21 12:09:17
Can't the BSP compiler split such brushes automatically?
#770 posted by ericw [108.173.17.134] on 2017/03/27 02:05:27
New beta:
https://github.com/ericwa/tyrutils-ericw/releases/tag/ericw-v0.15.10-beta1
Has the .map conversion feature in qbsp, so you can do:
qbsp.exe -convert valve mymap.map
and it will write out a copy of the map in Valve 220 format to mymap-valve.map. It can also convert to "quake", "quake2", "bp" (quake 3 brush primitives).
I labelled it "beta" because it's not tested enough, light has a large change to how sample points are positioned. (so unexpected black faces should never happen any more, e.g. this)
 My God
#771 posted by Bloughsburgh [71.61.61.77] on 2017/03/27 02:45:24
so unexpected black faces should never happen any more
 Hopefully..
#772 posted by ericw [108.173.17.134] on 2017/03/27 09:09:41
at least one of the causes is gone.
#773 posted by Pritchard [101.160.6.144] on 2017/03/27 13:50:50
I think you may have added in a cause:
0.15.9
0.15.10
Also, would it be possible to turn off the bouncing for styled lights with an option? It's causing a lot of "too many lightstyles" warnings on my map.
In more positive news, converting my map seems to have gone off without a hitch! :D
#774 posted by ericw [108.173.17.134] on 2017/03/27 19:51:46
So it's the black artifacts around the floor tiles? Was that shot with -extra4? I should be able to reproduce it.
re: bounce, good point, it should be opt-in, I guess. "_bounce_styled" "1" worldspawn key?
Thanks for testing and glad the .map conversion worked! It should be pretty trouble free because all the brush planes are passed through losslessly.
#775 posted by Pritchard [101.160.6.144] on 2017/03/28 01:52:58
No, no -extra4 or soft. I haven't been using those parameters as I test the map. If you like I can create a github issue with the .map and perhaps a compiled .bsp/.lit? I did just try splitting off the problem area into its own map but I couldn't even reproduce the exact lighting I have...
#776 posted by ericw [108.173.17.134] on 2017/03/28 01:59:39
Sure, or just emailing me the .bsp + .lit is fine too. I was just trying to reproduce it now.
#777 posted by Pritchard [101.160.6.144] on 2017/03/28 02:51:04
Also, interesting tidbit but nothing of any real issue: Converting the map to valve format through your tools seems to have reversed the order keys are listed in for TB2. Classnames are now at the bottom rather than the top. Not the case for newly created entities of course.
 Lol
#778 posted by ericw [108.173.17.134] on 2017/03/28 03:23:12
thanks for noticing that, should be harmless but I'll fix it!
 Question
#779 posted by Kinn [86.131.182.211] on 2017/03/30 18:01:31
Can sunlight be assigned a lightstyle? Thinking it could be cool to fade it in/out via QC.
 Not Atm
#780 posted by ericw [108.173.17.134] on 2017/03/30 19:53:17
It's really easy to add though, i'll add it after fixing Pritchard's issue.
 Whoa
#781 posted by Bloughsburgh [75.151.243.225] on 2017/03/30 20:45:30
Can sunlight be assigned a lightstyle?
Man that could open up some interesting visuals.
#782 posted by Kinn [86.131.182.211] on 2017/03/30 21:47:00
It's really easy to add though, i'll add it after fixing Pritchard's issue.
Cool! Sounds like a good addition
Man that could open up some interesting visuals.
Random dipping of light from clouds in an overcast sky...the strange pulsing of an alien sun...a simplistic day/night cycle (obvs no moving shadows but whatevs, it's not as if you can animate the skybox)...
You could sync up the light variation with some variation in the fog and skyfog settings to sell the effect better.
I did think it might be interesting if it was possible to have multiple different sunlight setups, all on a unique lightstyle (well you'd be limited to 3 I think) - morning, midday, evening - and you lerped their light intensities in QC (along with "night", but that wouldn't be a lightstyle, just an absence of light). But that's probably overkill and the shadows might still look odd.
I'm not really sure what the performance implications are with massive amounts of lightstyled surfaces though. Are there any these days?
#783 posted by Pritchard [49.185.237.224] on 2017/03/31 01:57:21
I just looked up how lightstyles work, is there any limit to the length of the string? Or could you actually have a light that took a really long time to complete it's cycle? That would be a lot of letters...
Also seriously? It's done with letters of the alphabet???
 #783
#784 posted by Kinn [86.131.182.211] on 2017/03/31 02:04:27
Yeah, you can set up those strings and have the light cycle automatically, or you can just set a single brightness value explicitly (e.g. say you wanted a slow day/night cycle thingy, I guess you'd want to set up a slow think function and increment the brightness in the think)
 Clipnodes
#785 posted by negke [31.18.51.150] on 2017/03/31 17:20:52
Uhm, how come this QBSP generates a whooping 11k more clipnodes than other compilers on my map?!
 @negke
#786 posted by ericw [108.173.17.134] on 2017/03/31 19:33:17
Hmm, I don't remember touching anything related to clipnodes since this forked from tyrutils.
I just tried compiling ad_zendar.map and it looks like I can reproduce that:
bjptools_xt_290914_phong2: 38011 clipnodes
tyrutils-ericw_0.15.10_beta1: 44953 clipnodes
So it's producing 18% more clipnodes than bjptools_xt. Is that the same kind of percent increase you're seeing / what are the total numbers of clipnodes?
#787 posted by negke [31.18.51.150] on 2017/03/31 20:17:10
Around 41% in my case if my math is correct.
bjptools_xt 1.2.5: 27174 clipnodes
tyrultils_ericw 0.15.9: 38372 clipnodes
(Also roughly 700 more marksurfaces with tyrultils)
 Fun Fact
#788 posted by negke [31.18.51.150] on 2017/04/02 13:57:01
Hmap2 produces an even higher count: 43601
So it's settled then: Bengt Jardrebb ftw!
#789 posted by Rick [73.203.182.173] on 2017/04/02 23:10:23
I don't mind using the old txqbsp_xt in order to not exceed the standard marksurfaces limit, but I'd like to use this light.
I was wondering if the problem of light not passing through sky had been fixed.
#790 posted by ericw [108.173.17.134] on 2017/04/03 00:24:18
Negke thanks for the info, I'll look into optimizing the clipnodes sometime.
Rick: sometimes this qbsp will produce fewer marksurfaces, so try both.
About making ordinary lights go through sky faces, I tried it a while ago and I don't think it's worth the code complexity, and it caused a significant slowdown.
If I added a way to add entities to specify multiple suns would that help? Alternatively just make a hollow box connecting to the window, it should only add 1 extra leaf and a few sky faces.
 Beta
#791 posted by Bloughsburgh [75.151.243.225] on 2017/04/03 13:52:27
Tried latest beta and I receive too many light styles on faces when I didn't on the latest stable version. Going to assume that's with styles now bouncing?
A few notable black faces I was keeping track of are still showing as pure black. Just reporting!
#792 posted by [77.180.176.196] on 2017/04/12 22:34:25
latest build from here has a bug.
Rotate_object arent lit, leaves them all black.
 Thx
#793 posted by ericw [108.173.17.134] on 2017/04/12 22:51:51
i'll look into it. The git master and 0.15.10-beta1 versions of light are half-baked at the moment, I recommend the stable version 0.15.9.
 Light Absorption For Deep Liquids
#794 posted by mankrip [189.25.98.162] on 2017/05/08 03:24:19
When a deep lake full of mud or slime is in a very bright area, the lighting from the outside will illuminate it as if the liquid didn't exist. This is specially true for lakes under open skies with sunlight.
How complicated would it be to implement an option in the light tool for underwater faces to receive gradually less light according to their distance from the water surface?
I suppose it could work this way:
1) If the face is underwater, check if the light entity is not underwater;
2) If the light entity is not underwater, make a list of all liquid surfaces between it and the underwater surface;
3) For each ray, check which liquid surface in its path is closest to the light entity;
4) Calculate the distance from the liquid surface to the underwater face, and use it to reduce the brightness received by the lightmap.
Note: Light entities placed underwater shouldn't be affected by this, because their underwater brightness was deliberately set by the map author.
I think this feature could be very useful, specially in areas with both water and slime - the slime would look more muddy than the water, because the bottom of it would be harder to see.
Maybe this could be implemented through an entity field in func_detail liquid brushes.
 Hmm...
#795 posted by Qmaster [99.196.205.196] on 2017/05/08 05:10:11
r_waterfalloff
r_slimefalloff
r_lavafalloff
#796 posted by Rick [73.203.182.173] on 2017/05/08 05:53:40
But lava glows on its own. So does slime, doesn't it?
#797 posted by Pritchard [131.170.239.20] on 2017/05/08 07:07:13
I don't think slime necessary glows or doesn't glow, though it depends on what kind of slime it's supposed to be...
In Lava's case, you'd never realistically be able to see underneath the "surface" so no one can say if it glows or not :P
I feel like this effect could already be possible with negative lights - those subtract from the lightmap right? You could place a bunch of them underwater and it'd probably be possible to have the desired effect.
 Light Entitys With Negative Values?
#798 posted by brassbite [94.218.123.194] on 2017/05/08 07:29:15
Never knew they exist...
#799 posted by Pritchard [131.170.239.20] on 2017/05/08 07:43:43
I've never tried using them myself but it's in the docs.
#800 posted by Rick [73.203.182.173] on 2017/05/08 14:21:20
I was thinking of Quake 2 where (all?) liquid textures had surface light. So I guess that's actually irrelevant.
Quake's palette shifting effect tends to make underwater areas too bright anyway but negative light would probably still help.
#801 posted by mh [137.191.242.106] on 2017/05/08 18:14:03
Attenuate faster if the trace crosses a water surface.
How do you see this working with moving liquid bmodels?
 MH
#802 posted by mankrip [189.25.98.162] on 2017/05/08 18:53:56
 #802
#803 posted by mankrip [189.25.98.162] on 2017/05/08 18:56:38
#804 posted by ericw [108.173.17.134] on 2017/05/08 20:23:05
The volumetric water attenuation is certainly do-able; the raytracer is already set up to have side effects when a ray hits certain surfaces.
The latest stable release from last fall has "stained glass" support, i.e. if you make bmodel with "_shadow" "1" and "_alpha" "0.5", light rays going through the entity will be partly attenuated and pick up the color of the texture.
So a simplified version of water attenuation would be not considering the distance traveled underwater, but just attenuate the ray when it goes through the surface. But on the other hand, I can imagine it would look cool to have bright sunlight at the water surface fading to black (thinking of an e1m4 type environment).
Anyway it's a cool idea to add to the todo list. My first priority now is fixing the breakage that Pritchard reported a while back, which I'm making good progress on but kind of a bit drained on tbh.
 "Bit Drained On..."
#805 posted by Qmaster [174.197.10.76] on 2017/05/08 20:44:01
That's fine, just know that what you are doing is really really great! There is no going back to the old tools now.
Incidentally, is your light or qbsp multithreaded? I know vis is, which changed light to be my current bottleneck (bounce fun notwithstanding).
#806 posted by ericw [108.173.17.134] on 2017/05/08 21:17:09
Thanks, appreciate it :)
Light is multithreaded, qbsp is not. Qbsp could get a lot faster, it spends most of its time in CSGFaces checking if each brush intersects each other brush in the map. Quake 2's qbsp is multhreaded.
The main performance tip for light is to avoid using -extra or -extra4 except on your final compile, and also add -gate 0.1 or something to reduce the overhead of delay 2 lights.
 #804
#807 posted by mankrip [189.25.98.162] on 2017/05/09 08:29:36
Thanks!
No problem, I can wait.
 Light Diff
#808 posted by mankrip [189.25.98.162] on 2017/05/10 02:22:17
Idea:
When a map is recompiled, compare its entities with the entities in its previously compiled BSP file, and use the radius of each light to determine which surfaces had their lighting changed.
This way, when recompiling lights, the light tool can simply copy all unchanged lightmaps from the BSP file, and compile only the modified lightmaps rather than recompiling all lightmaps.
Bounce lighting can make this complicated, so I'm not sure if it would be possible.
#809 posted by Pritchard [131.170.239.14] on 2017/05/10 02:26:18
I feel like if you're testing within each light's radius to see what brushes have changed, you're already doing a lot of the grunt work for compiling a new lightmap...
It could work for a rough and messy sketch if you were willing to let a lot of edge cases slip through and accept the odd corrupted face or two, but then you invite the possibility of someone releasing a map compiled with that option turned on...
#810 posted by mankrip [189.25.98.162] on 2017/05/10 02:53:46
testing within each light's radius
Only for the light entities that changed. Quite often, it will be only 1 light.
#811 posted by ericw [108.173.17.134] on 2017/05/10 03:13:41
What I've been thinking of, that's sort of related to that, is making a light preview tool; it would be a small GUI application with a 3d view with WASD+mouselook. You would open a map file and the tool does qbsp and light and displays the result, except the light baking is done on faces near the camera first, and the 3d view updates as each face finishes baking. Then it would refresh whenever the .map file is re-saved. I think this would be pretty sweet.
#812 posted by metlslime [67.161.57.57] on 2017/05/10 06:24:56
yeah, what I have always wanted is a tool that lets me edit the lighting in realtime. I think that a diff-based approach to recalculating lightmaps would be fast enough to make this possible. Most edits would only affect one light, which has only local effects. Of course editing the sun values would not be as easily optimized.
#813 posted by Pritchard [49.184.145.89] on 2017/05/10 07:16:07
I'm not really sure what happens if you use old light data on a new BSP, but wouldn't it be pretty broken if you edited the brushwork around a light that hadn't changed. Say you made a ceiling, put a light on it, ran qbsp/light, then built the rest of the room and tried to patch.
I don't know what that would look like but I imagine it'd be quite bad...
#814 posted by mh [213.233.149.32] on 2017/05/10 21:49:16
Yeah, that would be quite broken.
There are also complexities around light styles, combining lights with the same style, and packing in new lightdata/updating light offsets, which may in theory require to recalc for the entire BSP.
#815 posted by mankrip [189.84.178.135] on 2017/05/11 01:45:10
Question: Does ._phong work across multiple entities when combined with ._shadow, to make multiple func_wall, func_illusionary, etc blend smoothly with the world's func_detail "entities"?
Right now I'm on mobile and can't test it.
#816 posted by FifthElephant [82.21.157.236] on 2017/05/11 02:53:54
Pretty certain it does mankrip
#817 posted by ericw [108.173.17.134] on 2017/05/11 02:55:36
Iirc, separate func_detail / group will be blended if the _phong settings allow it. But other bmodels never blend with each other or world.
 The Cursed Words...
#818 posted by Pritchard [131.170.239.14] on 2017/05/11 03:04:51
Having a real time lighting renderer like ericw would be really neat. If you were able to cull light calculations to the player's view (You'd have to be very generous - bouncing their view around corners to find lights that should cast but would otherwise be missed), you could potentially have an engine that displayed in the traditional quake style, while keeping the main benefits of lighting in real time like moving lights.
I can already imagine a whole set of horrendous edge cases arising from this sort of thing, but it'd be a pretty neat thing to see and something that I'd hope modern computers would have the power to pull off...
#819 posted by mukor [66.41.60.131] on 2017/05/11 03:07:23
I have ZERO issue in paying for a light preview tool to be created. Even if its separate from TB.
 Mapper's Most Wanted List
#820 posted by Qmaster [70.195.89.79] on 2017/05/11 22:25:46
 #817
#821 posted by mankrip [189.25.98.162] on 2017/05/13 01:21:26
Yeah, I've just tested, and it doesn't work:
screenshot
The back of the column is a func_detail with _phong 1. The front of the column is a func_wall with _phong 1 and _world 1.
If _phong 1 worked on mixed entity types with _world 1, we could work around some of the BSP's planar/vertex accuracy limitations by alternating between func_detail and func_wall brushes. This would make the engine clip their planes at the rendering level, which is completely accurate and doesn't produce distortions.
 #821 @mankrip
#822 posted by Spike [86.140.27.141] on 2017/05/14 02:42:44
quake's lighting logic has some bias on its dotproducts that increses the amount of light on surfaces that are nearly perpendicular to lights (which is important for lights placed near said surface).
You can disable the effect with _anglescale 1 (I think it is now - vanilla hardcoded it to 0.5)
the '_phong' key simply calculates surface normals on a per-sample basis instead of per-surface (thus meaning its misnamed as it doesn't change the lighting formula). It affects the lighting, but not the shadows. While it would be possible to push the sample worldspace positions according to the same calculated normals, and determining shadows based upon those, such things would be quite unreliable in practice - for instance, a concave surface curve would logically push those sample positions inside the surface, which would result in all traces being obscured with the surface shadowing itself.
so yeah, that's why you get sudden lighting changes on the edge of pillars - because -anglescale is biasing the light on one side while the other side is in pure shadow.
if you want to try it anyway, this is the maths I use in FTE for tessellation:
vec3 w = p0*bary[0]+p1*bary[1]+p2*bary[2];
vec3 t0 = w - dot(w-p0,n0)*n0;
vec3 t1 = w - dot(w-p1,n1)*n1;
vec3 t2 = w - dot(w-p2,n2)*n2;
w = w*(1.0-factor) + factor*(bary[0]*t0+bary[1]*t1+bary[2]*t2);
you should be able to shove something like that into GLM_InterpolateNormal (and convert from glsl to cpp - I already renamed stuff from glsl). You'll then need to return the smoothed position back through multiple callers to the point where its copied into the lightmap samples array.
Bonus points if you can calculate the barycentric coords (read: interpolation weights) for general polygons instead of just triangles.
like I say, you'll need to clamp the shadow-point to never be behind the surface to avoid the more obvious glitches. once implemented properly you'll get smoother lighting around corners (although due to the nature of traceline shadows, it'll probably still be somewhat sudden without anglescale 1).
#823 posted by ericw [108.173.17.134] on 2017/05/14 19:16:13
@mankrip, smoothing between separate models is too difficult to attempt, imho, because smoothing relies on the model having been processed by QBSP. i.e. it involves walking around the mesh (exploring neighbouring faces to a vertex, and neighbouring faces to a face, etc.). If the models weren't clipped against each other, the smoothing wouldn't work.
@spike in current git, I wiped out the "traceline to position sample points" thing. Instead I'm trying to use the same code as phong shading, so exploring the mesh by following connections between faces. So in a concave surface, it should work properly and give world space positions that are consistent with the interpolated normals.
Only problem is, it needs some more work.. Pritchard's case in #773 was failing because of t-junctions in the bsp. I want light to work properly if qbsp didn't add t-junc vertices, so I'm making light do it (in memory only).
re: GLM_InterpolateNormal, apologies for the current mess I made in the code and weird names.. I tried using the glm library a bit, then decided I didn't like it. (100 layers of indirection/ abstraction for basic vector operations, slow as hell debug builds,..)
On the plus side the test suite is growing slowly.
#824 posted by mankrip [189.25.98.162] on 2017/05/15 01:44:17
Is there an automated way to import the configuration from the non-Steam version?
I've just bought JACK on Steam, and upon launch it didn't detect that the non-Steam version was already installed.
 Dumb Me!
#825 posted by mankrip [189.25.98.162] on 2017/05/15 01:46:50
Wrong thread. Wrong tab.
Anyway, thanks for the explanations, ericw and Spike. I'm already going to implement something which should serve as a partial workaround, but I'll keep this info in mind for future research.
#826 posted by mh [213.233.149.13] on 2017/05/15 21:34:35
Quake's dotproduct is a simple dot(L,N) * 0.5 + 0.5; i.e a rescaling from -1..1 to 0..1 (excluding the spotlight cutoff for simplicity):
angle = DotProduct (incoming, l->facenormal);
angle = (1.0-scalecos) + scalecos*angle;
But scalecos is 0.5 (https://github.com/id-Software/Quake-Tools/blob/c0d1b91c74eb654365ac7755bc837e497caaca73/qutils/LIGHT/LIGHT.C#L13), so substituting:
angle = (1.0-0.5) + 0.5*angle;
And evaluate (1.0-0.5):
angle = 0.5 + 0.5*angle;
https://github.com/id-Software/Quake-Tools/blob/master/qutils/LIGHT/LTFACE.C#L403
 Fence Volumes
#827 posted by mankrip [187.14.53.224] on 2017/05/29 08:00:39
Is it possible to make brushes with fence textures be compiled in a similar way to brushes with liquid textures?
By that, I mean making them become properly see-through. Currently, any brush with fence textures will clip any polygons from other brushes that touches them, which results in open holes where the other brushes should be visible.
The only difference to liquid textures is that the pointcontents of fence brushes would have to be set either to solid or to empty. I guess the first case would give problems to the renderer, and the second case would give problems to the physics, but from the top of my head I'm not sure.
#828 posted by Pritchard [121.219.46.182] on 2017/05/29 08:49:41
I'm not sure how much interest there would be in changing how fence textures are compiled as it's already quite easy to resolve the "clipping" by making brushes using fence textures be a func_ brush such as illusionary or wall.
 Lighting Artifacts
#829 posted by negke [31.18.51.150] on 2017/05/29 16:15:53
Pic. What's going on there? Any way to get rid of this without anglesensing the shadows from the spikes away?
#830 posted by negke [31.18.51.150] on 2017/05/29 16:24:35
Apparently it's related to the increased texture scale (2.5-3x). Jury-rebbed BJP light doesn't seem to have a problem with it (but it lacks several feature I require).
#831 posted by ericw [108.173.17.134] on 2017/05/29 17:22:52
Make sure to use v0.15.9, the .10-beta1 turned out to be broken.
If that's not the problem, I'm not sure from the screenshot, could I have a look at the .map (just for what's in the screenshot would be fine)?
 #828
#832 posted by mankrip [187.14.53.224] on 2017/05/29 21:05:09
There's a specific problem I'm having with it, when BSP entities partially inside of walls gets darker edges because part of their surfaces is in pure darkness.
If such entities were part of the world, their surfaces would be clipped by the compiler and there wouldn't be any parts of them in pure darkness. But to be part of the world, they would have to be compiled similarly to liquid volumes, without clipping other brushes.
Currently I can work around this by making the other brushes that touches them into func_wall entities too, but IMO this isn't the most efficient approach.
#833 posted by Spike [86.145.140.247] on 2017/05/29 21:49:57
the renderer doesn't care if something's solid or not, just that its a leaf or node.
same with physics, really.
just make sure those fence-solid leafs don't get merged in to leaf 0 like all other solids, and that vis considers them transparent despite solid (can't say I've really looked into the vis tool itself, maybe it already goes by leaf 0 instead).
 Spike
#834 posted by mankrip [187.14.53.224] on 2017/05/29 22:53:33
Thanks for the explanation. The BSP tree architecture is something I've not started studying deeply yet.
 Devil In The Detail
#835 posted by negke [31.18.51.150] on 2017/05/30 19:20:17
I also came across an issue with detail brushes. Not sure if it's a bug or simply a technical restriction and downside of the way detail brushes are done in Quake, and also not sure if it's a general thing or only applies to certain special cases.
I had a compact bit of architecure flush to the wall of a building and turned it into func_detail in order to use phong shading on it. The building's wall behind it remained solid world geometry. As it turns out, having the detail brush touch the wall like it did caused the compiler to disregard visblocking for the wall which resulted a situation where a large part of the interior was being rendered despite being completely out of view, causing wpoly to increase by 1500. Making the func_detail 'flatter' by including only the front part of the detail architecture didn't change anything; it seemed to be entirely related to the touching of detail and world brushes on that particular part of the wall.
Now, this might be an edge case caused or faciliated by the shape and construction of that particular area (sloped brushes, same brushes for inside/outside etc), but still a potential risk to keep in mind, especially if remaining unnoticed until the final release of a map.
If anything, this is meant to raise awareness that excessive func_detailing can be detrimental, too. Perhaps the code can be tweaked to make sure this can't happen, or maybe it something to live with due to the hacky nature of it.
#836 posted by negke [31.18.51.150] on 2017/05/30 20:05:48
Some screenshots to clarify.
The face is the func_detail in question. The wall below is a door, but instead of only rendering the corridor behind it (hell knight), it even draws the atrium way out sight, much of its upper and lower parts.
 Func_detail
#837 posted by FifthElephant [82.21.157.236] on 2017/05/31 00:01:24
isn't a catch-all.
I have found in a number of my maps that I get a speed gain in compile times but not always ideal results in culling in the game.
 That Face...
#838 posted by generic [69.244.210.164] on 2017/05/31 00:27:53
Is so Tron.
 Tyricutils Func_detail
#839 posted by Qmaster [67.45.32.18] on 2017/05/31 03:35:54
Good lighting and faster vis time and same, worse PVS splitting.
Source engine func_detail: Good lighting, faster vis time, and clean PVS since it treats them as func_walls.
Thing is, I don't know how you would gain the benefits of true func_details (the Source way, the right way) unless the compiler turned them into info_notnulls or func_walls. Otherwise, the mod would need to support func_detail entity in its progs.dat
...
Unless engine support for func_details was added. Currently the compiler de-entity-ifies them into normal brushes. But if they were kept...
 #839
#840 posted by mankrip [189.84.178.135] on 2017/05/31 04:21:56
What you describe about detail brushes in the Source engine sounds close to my suggestion about see-through solid volumes.
#841 posted by Pritchard [131.170.239.17] on 2017/05/31 05:14:29
Isn't all VIS/PVS data precompiled in quake? Why do we need to turn brushes into a specific kind of entity in order to get a desired effect?
Would it not be possible for VIS to just look at a func_detail, say "I'm going to treat this as if it were a func_wall" and be done with it?
How does it work currently?
#842 posted by ericw [108.173.17.134] on 2017/05/31 05:53:31
Yeah, I'm going to take another stab at fixing func_detail's PVS issues. mankrip your suggestion sounds good to me, and it sounds like it'll share the same implementation.
How about (assuming I can get these to work :-)
- func_detail_fence - same as "func_detail" but doesn't clip away world faces, so it's usable for fence textures. Like func_wall, but doesn't use up an entity.
- func_detail_illusionary - same as func_detail_fence but no collision hulls. Like func_illusionary, but doesn't use up an entity, and as a downside it would block gunfire. Not sure if this would be useful?
#843 posted by mankrip [189.84.178.135] on 2017/05/31 06:19:46
That's good.
func_detail_illusionary would actually be really useful to simulate crouching. The real ground would be lower, with a func_detail_illusionary ground a little above. Of course, this would affect monsters too, so its usage may be limited to small areas.
 Workaround
#844 posted by negke [31.18.51.150] on 2017/05/31 11:40:51
I don't care much about quicker VIS times; all I want to achieve is phong shading and occasinally minlighting on brushes without taking up additional entity/model slots. Although marksurfaces eventually forced me to turn many of them into func_wall after all.
As for the issue I mentioned above, there's a workaround. As it turns out, phong and minlight also work on func_group, so making the big face a group instead of detail gets all the effects without the PVS problems. Good to know, albeit even more hax...
#845 posted by [66.229.17.0] on 2017/06/01 01:30:32
Is there a way of increasing the lightmap resolution?
 Use A Bigger Texture Than Scale It Down
#846 posted by FifthElephant [82.21.157.236] on 2017/06/01 02:19:15
texture scale is linked to the lightmap resolution.
#847 posted by mh [185.82.73.30] on 2017/06/01 09:37:09
LIT2 (see the opening post) supports increased lightmap resolution and we all went round the block with it a few years ago. No clear community consensus formed.
My own opinion is that it's a poor trade off for hugely increased file sizes, and it doesn't even look as good as you'd think owing to losing the soft edges on shadows.
#848 posted by mankrip [186.227.14.198] on 2017/06/09 12:37:19
It could be useful to add a compiler/worldspawn option to set portal brush contents to CONTENTS_EMPTY, because as it is, using CONTENTS_WATER, portals can't be (partially) placed inside of slime and lava.
#849 posted by mankrip [186.227.14.198] on 2017/06/09 12:39:42
By the way, Quake's episode 4 already has maps with underwater portals. So, allowing portals under slime and lava would bring more feature consistency to mappers.
 Azure Agony
#850 posted by Qmaster [70.195.85.209] on 2017/06/09 16:26:27
Used black for its teleport texture.
I think you mean teleport. Portal is something created by vis.
That's not a terrible idea but I think it would serve better as an entity field: _overridecontents 1 or something to that effect.
#851 posted by metlslime [107.77.75.89] on 2017/06/09 17:34:18
Just copy the teleport texture and call one copy *lavateleport and the other one *slimeteleport in your wad file.
 Oh
#852 posted by Qmaster [70.195.85.209] on 2017/06/09 22:10:40
thats brilliant.
|