1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
1025
1026
1027
|
// Specification: Zoners Tools P Series (now v3 and up).
// Written by: Ryan Gregg
// Version: 3.2.1
// Created: August 4, 2004
// Last updated: Febuary 25, 2005
// Updated by: Ryan Gregg
// Date: Febuary 25, 2004
// Updated RipEnt options.
// Updated ZHLT link.
// Updated by: Ryan Gregg
// Date: October 26, 2004
// Added RipEnt to Light Data's shared stages.
// Updated by: Ryan Gregg
// Date: October 24, 2004
// Fixed Null File option filter.
// Updated by: Ryan Gregg
// Date: August 9, 2004
// Thanks to: Anders Jenbo
// Moved RipEnt's Import and Export options to a ComboBox.
// CSG's No Null Tex option now shared with BSP.
// RAD2's Jitter and Jitter Color options changed to Integer format.
// Renamed RAD's Custom Shadow option to Custom Shadows.
// Renamed RAD's RGB Transfers option to Color Custom Shadows.
// Updated RAD's Custom Shadows option's hint.
Include "Templates.bci"
Variable
{
Name "WADRoot"
Type "Folder"
Optional "True"
Hint "Wad root directory."
}
Batch
{
Name "Zoners Tools P Series"
Priority "2"
Links "Zoners Tools,http://www.zhlt.info/"
Filter "Supported Files|*.map;*.bsp|MAP Files (*.map)|*.map|BSP Files (*.bsp)|*.bsp"
Stages "CSG|BSP|VIS|RAD|RAD2|RipEnt|Shared"
Template "@echo off\n"_
"set WADROOT=${WADRoot}\n"_
"\"${StagePath=CSG}\" ${StageParam=CSG} \"${FilePath}\\${FileName}\"\n"_
"\"${StagePath=BSP}\" ${StageParam=BSP} \"${FilePath}\\${FileName}\"\n"_
"\"${StagePath=VIS}\" ${StageParam=VIS} \"${FilePath}\\${FileName}\"\n"_
"\"${StagePath=RAD}\" ${StageParam=RAD} ${StageParam=RAD2} \"${FilePath}\\${FileName}\"\n"_
"\"${StagePath=RipEnt}\" ${StageParam=RipEnt} \"${FilePath}\\${FileName}\"\n"_
"${LogViewerRun}\n"
}
Batch
{
Name "CSG"
Priority "1"
Stages "CSG|Shared"
Filter "Map Files (*.map)|*.map"
Template "@echo off\n"_
"set WADROOT=${WADRoot}\n"_
"\"${StagePath=CSG}\" ${StageParam=CSG} \"${FilePath}\\${FileName}\"\n"_
"${LogViewerRun}\n"
}
Batch
{
Name "BSP"
Priority "1"
Stages "BSP|Shared"
Filter "Map Files (*.map)|*.map"
Template "@echo off\n"_
"set WADROOT=${WADRoot}\n"_
"\"${StagePath=BSP}\" ${StageParam=BSP} \"${FilePath}\\${FileName}\"\n"_
"${LogViewerRun}\n"
}
Batch
{
Name "VIS"
Priority "1"
Stages "VIS|Shared"
Filter "Map Files (*.map)|*.map"
Template "@echo off\n"_
"set WADROOT=${WADRoot}\n"_
"\"${StagePath=VIS}\" ${StageParam=VIS} \"${FilePath}\\${FileName}\"\n"_
"${LogViewerRun}\n"
}
Batch
{
Name "RAD"
Priority "1"
Stages "RAD|RAD2|Shared"
Filter "Map Files (*.map)|*.map"
Template "@echo off\n"_
"set WADROOT=${WADRoot}\n"_
"\"${StagePath=RAD}\" ${StageParam=RAD} ${StageParam=RAD2} \"${FilePath}\\${FileName}\"\n"_
"${LogViewerRun}\n"
}
Batch
{
Name "RipEnt"
Priority "1"
Stages "RipEnt|Shared"
Filter "BSP Files (*.bsp)|*.bsp"
Template "@echo off\n"_
"\"${StagePath=RipEnt}\" ${StageParam=RipEnt} \"${FilePath}\\${FileName}\"\n"_
"${LogViewerRun}\n"
}
//
// CSG
//
Stage
{
Name "CSG"
Title "Constructive Solid Geometry"
Type "Program"
Filter "HLCSG (hlcsg.exe)|hlcsg.exe"
CheckBox
{
Name "No Clip"
Param "-noclip"
Stages "BSP"
Hint "\tDon't create clipping hull.\n\n"_
"\tHalf-life like Quake 1, has 4 hulls, 1 visual hull and 3 collision hulls. This option disables generation of the collision hulls for a small savings in compile time. Note that the world will not be solid at all (everything will fall into the void) with this option set."
}
CheckBox
{
Name "No Clip Economy"
Param "-noclipeconomy"
Hint "\tDisables redundant clipnode stripping.\n\n"_
"\tClipnodes are \"planes\" that restrict the player movement. They are placed along the walls and floors of your level, so that they player cannot pass though them. However, like everything else in the Half-Life universe, they are limited, and will max out with compile errors if you end up using too many of them.\n\n"_
"\tCSG will analyse how the clipnodes are being used in your map. If it thinks that it can get away with not using clipnodes in any particular situation (such as in func_illusionaries which don't need clipnodes), then hlcsg will strip them away from the level. This means that by default, your clipnode counts will be lower than normal. This doesn't mean that you will never see another MAX_MAP_CLIPNODES error, it just means it's less likely to happen in the first place.\n\n"_
"\tUse this switch to turn off clipnode economy mode if you believe that it is causing problems."
}
CheckBox
{
Name "No Null Tex"
Param "-nonulltex"
Stages "BSP"
Hint "\tDisables NULL texture stripping."
}
CheckBox
{
Name "No Sky Clip"
Param "-noskyclip"
Hint "\tDisable automatic clipping of SKY brushes.\n\n"_
"\tBy default CSG will CLIP all SKY brushes, as well as remove all non-sky faces on the 'inside' of a sky brush (which eases up vis time, and improves some time and memory usage in rad as well)."
}
CheckBox
{
Name "No WAD Textures"
Param "-nowadtextures"
Bold "True"
Hint "\tInclude all used textures into bsp.\n\n"_
"\tThis option is obsolete by -wadinclude and is only left in to retain some backwards compatibility as it making the bsp unnecessarily big by including textures from the default wad's."
}
CheckBox
{
Name "Entities Only"
Param "-onlyents"
Bold "True"
Hint "\tDo an entity update from .map to .bsp.\n\n"_
"\tThis option will take the entities from the .map file and update them into the bsp file. For the most part, entities can only be edited. Adding or removing any can reorder the other entities which frequently break brush based entities, especially triggers."
}
CheckBox
{
Name "WAD Auto Detect"
Param "-wadautodetect"
Bold "True"
Hint "\tEnable automatic wad detection.\n\n"_
"\tAutomatic wad detection is a simple utility that will exclude any wadfiles from the bsp that aren't in use by the map. This enables you to add any assortment of wadfiles you wish, and yet only have those that are actually used by the map included in the .bsp file."
}
Space
{
Size "3"
}
TextBox
{
Name "Additional Parameters"
Type "String"
Size "3"
Hint "\tAdd additional parameters here as you would a command line."
}
TextBox
{
Name "Brush Union"
Param "-brushunion"
Type "Single"
Default "95.0"
Min "0.0"
Max "100.0"
Hint "\tThreshold to warn about overlapping brushes.\n\n"_
"\tThis option is a mapper debugging feature. The value passed in is a percentage (0 to 100) of overlap of two brushes before a warning is printed. Starting with a high value (95+) is a good idea, as going too low to start can print hundreds or thousands of messages. The brush numbers of the intersecting brushes and the percentage in which they intersect each other is displayed for each occurrence. This option is off by default as it dramatically slows down hlcsg to do these calculations."
}
TextBox
{
Name "Tiny"
Param "-tiny"
Type "Single"
Default "0.5"
Min "0.0"
Hint "\tMinimum brush face surface area before it is discarded.\n\n"_
"\tTiny brush faces are outright removed. The current cut-off is 0.5 square units. It is dangerous to drop faces in this manner, as the BSP tree for the world can be unusable, or generate leaf portal errors or hall-of-mirrors vis errors."
}
TextBox
{
Name "WAD Config"
Param "-wadconfig"
Type "String"
Default "wad.cfg"
Hint "\tUse a custom wad configuration in the wad.cfg custom wad configuration file.\n\n"_
"\tCustom wad configurations are used to enable you to choose which .wad files you want written into the the .bsp file, regardless of what happens to be in your editor, for any given game configuration. So, now, hlcsg will ignore the wads that you have configured in your editor, and instead only write in the ones you specify."
}
ComboBox
{
Name "Clip Type"
Param "-cliptype"
Bold "True"
Default "Legacy"
Options "Legacy|Normalized|Simple|Smallest|Precise"
Hint "\tSelect the clip hull generation method. Choices are smallest, normalized, simple, precise or legacy (default).\n"_
"\tThe ExpandBrush function of CSG has been reworked to fix 2 bad assumptions that led to \"sticky\" exterior corners in Half-Life maps.\n\n"_
"\tTo use the new clip hull feature, use \"-cliptype precise\". If you want to same some clipnodes, you can use \"-cliptype simple\" which will shift player models a few units upward on sloped floors. If you want to use the new CSG for the speed improvement but want the old style clipping, use \"-cliptype legacy\". If you want to have the smallest possible number of clipnodes and don't mind some stickyness (not recommended), use \"-cliptype smallest\". \"-cliptype normalized\" uses bugfix 1 and skips bugfix 2 for people who don't want denormalized brushes."
}
FileBox
{
Name "Hull File"
Param "-hullfile"
FullPath "True"
Filter "Hull Files (*.hull)|*.hull|Text Files (*.txt)|*.txt"
Hint "\tLoad a custom hullfile.\n\n"_
"\tLoads a custom set of hulls for the collision hull generation. The file is composed of 3 lines of 3 whitespace delimited numbers. Each line is an X Y Z size of the bounding box it is for. Only specific mod authors and their mapping teams should ever worry about this feature."
}
FileBox
{
Name "Null File"
Param "-nullfile"
FullPath "True"
Filter "Null Files (*.null)|*.null|Text Files (*.txt)|*.txt"
Hint "\tSpecify a file containing a list of entities to retexture with the NULL texture."
}
FolderBox
{
Name "WAD Config Path"
Param "-wadcfgfile"
Hint "\tManually specifies the path to the wad.cfg file. By default, the tools will look in the same directory and the Half-Life directory."
}
Space
{
Size "3"
}
FileBox
{
Name "WAD File"
Param "-wadinclude"
FullPath "False"
Filter "WAD Files (*.wad)|*.wad"
Hint "\tPlace textures used by the wad file specified into the bsp.\n\n"_
"\tThis option will cause csg to include used textures from the named wadfile into the bsp. It does partial name matching, is not case sensitive, and can also match directory names. If multiple includes need to be done, -wadinclude must be specified multiple times, once for each include. Only textures actually used in the map are included into the bsp."
}
FileBox
{
Name "WAD File"
Param "-wadinclude"
FullPath "False"
Filter "WAD Files (*.wad)|*.wad"
Hint "\tPlace textures used by the wad file specified into the bsp.\n\n"_
"\tThis option will cause csg to include used textures from the named wadfile into the bsp. It does partial name matching, is not case sensitive, and can also match directory names. If multiple includes need to be done, -wadinclude must be specified multiple times, once for each include. Only textures actually used in the map are included into the bsp."
}
FileBox
{
Name "WAD File"
Param "-wadinclude"
FullPath "False"
Filter "WAD Files (*.wad)|*.wad"
Hint "\tPlace textures used by the wad file specified into the bsp.\n\n"_
"\tThis option will cause csg to include used textures from the named wadfile into the bsp. It does partial name matching, is not case sensitive, and can also match directory names. If multiple includes need to be done, -wadinclude must be specified multiple times, once for each include. Only textures actually used in the map are included into the bsp."
}
FileBox
{
Name "WAD File"
Param "-wadinclude"
FullPath "False"
Filter "WAD Files (*.wad)|*.wad"
Hint "\tPlace textures used by the wad file specified into the bsp.\n\n"_
"\tThis option will cause csg to include used textures from the named wadfile into the bsp. It does partial name matching, is not case sensitive, and can also match directory names. If multiple includes need to be done, -wadinclude must be specified multiple times, once for each include. Only textures actually used in the map are included into the bsp."
}
FileBox
{
Name "WAD File"
Param "-wadinclude"
FullPath "False"
Filter "WAD Files (*.wad)|*.wad"
Hint "\tPlace textures used by the wad file specified into the bsp.\n\n"_
"\tThis option will cause csg to include used textures from the named wadfile into the bsp. It does partial name matching, is not case sensitive, and can also match directory names. If multiple includes need to be done, -wadinclude must be specified multiple times, once for each include. Only textures actually used in the map are included into the bsp."
}
FileBox
{
Name "WAD File"
Param "-wadinclude"
FullPath "False"
Filter "WAD Files (*.wad)|*.wad"
Hint "\tPlace textures used by the wad file specified into the bsp.\n\n"_
"\tThis option will cause csg to include used textures from the named wadfile into the bsp. It does partial name matching, is not case sensitive, and can also match directory names. If multiple includes need to be done, -wadinclude must be specified multiple times, once for each include. Only textures actually used in the map are included into the bsp."
}
FileBox
{
Name "WAD File"
Param "-wadinclude"
FullPath "False"
Filter "WAD Files (*.wad)|*.wad"
Hint "\tPlace textures used by the wad file specified into the bsp.\n\n"_
"\tThis option will cause csg to include used textures from the named wadfile into the bsp. It does partial name matching, is not case sensitive, and can also match directory names. If multiple includes need to be done, -wadinclude must be specified multiple times, once for each include. Only textures actually used in the map are included into the bsp."
}
FileBox
{
Name "WAD File"
Param "-wadinclude"
FullPath "False"
Filter "WAD Files (*.wad)|*.wad"
Hint "\tPlace textures used by the wad file specified into the bsp.\n\n"_
"\tThis option will cause csg to include used textures from the named wadfile into the bsp. It does partial name matching, is not case sensitive, and can also match directory names. If multiple includes need to be done, -wadinclude must be specified multiple times, once for each include. Only textures actually used in the map are included into the bsp."
}
}
//
// BSP
//
Stage
{
Name "BSP"
Title "Binary Space Partition"
Type "Program"
Filter "HLBSP (hlbsp.exe)|hlbsp.exe"
CheckBox
{
Name "Leak Only"
Param "-leakonly"
Hint "\tRun BSP only enough to check for leaks.\n\n"_
"\tIf you already know a map has a leak, this is a good option to just save some time in hlbsp and just generate the pts file."
}
CheckBox
{
Name "No Optimization "
Param "-noopt"
Hint "\tSkip plane optimization on output.\n\n"_
"\tHLBSP version p14 and later automatically removes unused planes when writing the output BSP. This switch turns off that behavior."
}
CheckBox
{
Name "No Fill"
Param "-nofill"
Hint "\tDon't fill outside (will mask LEAKs and is not for final runs).\n\n"_
"\tThis step causes filling to not be performed, which will cause all the faces on the outside of the map to not be discarded. It is probably a bad idea to rad a map that has been compiled this way, though vis should run normally."
}
CheckBox
{
Name "No T-Junction"
Param "-notjunc"
Hint "\tDon't break edges on t-junctions (not for final runs).\n\n"_
"\tThis is a development/debugging option that should not be set in normal use."
}
TextBox
{
Name "Max Node Size"
Param "-maxnodesize"
Bold "True"
Type "Single"
Default "1024.0"
Min "64.0"
Max "8192.0"
Hint "\tSets the maximum portal node size.\n\n"_
"\tThis option tweaks the maximum size of a portal node. Setting it smaller will bsp the world into smaller chunks at the cost of higher r_speeds, but it can pay itself back in many cases with making vis either faster, or more accurate, or both."
}
TextBox
{
Name "Subdivide"
Param "-subdivide"
Type "Single"
Default "240.0"
Min "64.0"
Max "512.0"
Hint "\tSets the face subdivide size.\n\n"_
"\tFaces in Half-life are subdivided by this value (in units). Setting this to high might cause bad surface extents when running rad. It should never be set lower then 240 as this just increases the r_speeds."
}
Space
{
Size "4"
}
TextBox
{
Name "Additional Parameters"
Type "String"
Size "3"
Hint "\tAdd additional parameters here as you would a command line."
}
}
//
// VIS
//
Stage
{
Name "VIS"
Title "Visibility Index Set"
Type "Program"
Filter "HLVIS (hlvis.exe)|hlvis.exe"
TextBox
{
Name "Max Distance"
Param "-maxdistance"
Bold "True"
Type "Integer"
Default "0"
Min "0"
Hint "\tSet the maximum visibility distance in units. Maximum Distance Visibility (MDV) is a feature that prevents leafs beyond a certain distance from being rendered (or even sent to the renderer at all). In conjunction with fog, it can become the ultimate catalyst when building and compiling large maps, especially those with open areas. However, due to the nature of the calculations, not all leaves beyond a certain distance are guaranteed to be prevented from being rendered; but those that are within the maximum distance are guaranteed to be rendered.\n\n"_
"\tThere is a small side effect when using the Maximum Distance feature, because hlrad relies heavily on the visibility matrix to speed up lighting operations. As such, a normal rad of the map will result in ackward, \"cut off\" lighting. This means that a special version of hlrad is required (all compile tools in this series since MHLT 1.6), which accomodates for the MDV lighting problem. When you use this parameter, an extra file named <mapname>.vdt that contains the real visibility matrix (i.e without any MDV performed) will be created, which will be used to correctly light the map."
}
ComboBox
{
Name "Vis Type"
Bold "True"
Default "Normal"
Options "Fast,-fast|Normal,|Full,-full"
Hint "\tRun as fast or normal or full VIS.\n\n"_
"\tFull vis enables extra calculations during vis, which help reduce the number of vis errors in a map over a normal vis. The speed hit is approximately 30% over a normal vis. r_speeds will generally be the same, though lower in some areas, and higher in others (primarily due to vis errors being fixed).\n\n"_
"\tFast vis is handy for running around in a developed map without dropping polygons. However, r_speeds will usually be pretty bad, as well as epoly counts. The map can still be lit with hlrad, however its quality and compile time will both suffer as a result. Maps should regularly be compiled without fast vis, as fast vis can mask a sudden increase in normal vis compile time."
}
Space
{
Size "8"
}
TextBox
{
Name "Additional Parameters"
Type "String"
Size "3"
Hint "\tAdd additional parameters here as you would a command line."
}
}
//
// RAD
//
Stage
{
Name "RAD"
Title "Radiosity"
Type "Program"
Filter "HLRAD (hlrad.exe)|hlrad.exe"
CheckBox
{
Name "Circus"
Param "-circus"
Hint "\tEnable 'circus' mode for locating unlit lightmaps.\n\n"_
"\tThis is a debugging option, which will cause all black pixels in any lightmap to be set to a random fullbright color. It only looks at the direct lighting to make this determination, and ignores any bounced radiosity data for making this determination."
}
CheckBox
{
Name "Custom Shadows"
Param "-customshadowwithbounce"
Bold "True"
Hint "\tEnable custom shadows for bounced light.\n\n"_
"\tBy default, the zhlt_customshadow flag does not affect bounced light. Using this switch will enable custom shadows for bounced light, however, this will only work with greyscale custom shadows"
}
CheckBox
{
Name "Color Custom Shadows"
Param "-rgbtransfers"
Hint "\tEnables RGB transfers (for custom shadows). Requires -customshadowwithbounce switch."
}
CheckBox
{
Name "Dump Light Patches"
Param "-dump"
Hint "\tDumps light patches to a file for hlrad debugging info This is a developer option for zhlt, to dump out the patch data generated by the chopping/subdividing and make sure it looks alright."
}
CheckBox
{
Name "Extra"
Param "-extra"
Bold "True"
Hint "\tTurns on 9 point oversampling for lighting, making it look much better."
}
CheckBox
{
Name "Incremental"
Param "-incremental"
Hint "\tUse or create an incremental transfer list file.\n\n"_
"\tThis is a handy option for tweaking lighting, especially on slow or lower memory machines. BuildVisLeafs, MakeScales, and SwapTransfers can be skipped entirely on subsequent runs of hlrad. Note that geometry must not change, but lighting can."
}
CheckBox
{
Name "No Diffuse"
Param "-nodiffuse"
Hint "\tDisables light_environment diffuse hack."
}
CheckBox
{
Name "No Dyn Bounce"
Param "-nodynbounce"
Bold "True"
Hint "\tTurn off bounces for dyanmic lights (overrides -bounce).\n\n"_
"\tPrior to ZHLT 1.7, only the static light type (constant brightness, no switching) was used in bounce calculations. This switch activates that older behavior. Benefits include smaller lightdata sizes and a lower probability of a \"too many lightstyles\" error."
}
CheckBox
{
Name "No Linear Interpolation"
Param "-nolerp"
Hint "\tDisable three multi-point interpolation for radiosity patch blending, use nearest point sample instead."
}
/*CheckBox
{
Name "No Visibility Matrix"
Param "-nomatrix"
Hint "\tDisable usage of vismatrix entirely.\n\n"_
"\tAs the sparse code does some compression, it requires a lot of thread synchronization and does not scale well past 2 CPU's. The -nomatrix switch was added to address this. However, the addition of 'opaque brush entities' starting with ZHLT 2.2 hurts the -nomatrix method's performance quite a bit. There is no vismatrix in this method at all, so it essentially reduces the memory requirements to zero for that structure."
}*/
CheckBox
{
Name "No Opaque Entities"
Param "-nopaque"
Bold "True"
Hint "\tDisable all entities using zhlt_lightflags 2 to block light. Using opaque entities slows rad down, and using this option is useful for doing quicker non-final lighting compiles."
}
TextBox
{
Name "Additional Parameters"
Type "String"
Size "3"
Hint "\tAdd additional parameters here as you would a command line."
}
CheckBox
{
Name "No Sky Fix"
Param "-noskyfix"
Hint "\tDisable light_environment being global ZHLT 2.1 added a simpler more manageable system for light_environments. The new behavior is that a map only needs a single light_environment entity to light up all sky everywhere. The placement of the entity no longer matters. The -noskyfix option turns this feature off and enables the original code which requires multiple light_environments to properly light up an outdoor area."
}
CheckBox
{
Name "No Spot Points"
Param "-nospotpoints"
Hint "\tDisables light_spot spherical point sources."
}
CheckBox
{
Name "No Texture Scale"
Param "-notexscale"
Hint "\tDo not scale radiosity patches with texture scale.\n\n"_
"\tBy default, hlrad will take the texture scale and apply it to the chopping grid which is projected onto it. This option turns that off, and almost always increases the number of patches in a map as most maps have many walls scaled up to 2 and 3."
}
/*CheckBox
{
Name "Sparse"
Param "-sparse"
Bold "True"
Hint "\tEnable low memory vismatrix algorithm.\n\n"_
"\tThe original vismatrix algorithm was limited to 65535 patches due to its design. Its memory usage also grew exponentially with the number of patches (patches * patches / 16 bytes). This option enables a compressed vismatrix, which at the cost of extra CPU time, breaks the 65535 limit, and also uses about 10% of the memory the vismatrix would."
}*/
TextBox
{
Name "Bounce"
Param "-bounce"
Bold "True"
Type "Integer"
Default "1"
Min "0"
Hint "\tSet number of radiosity bounces.\n\n"_
"\tThis option sets the number of times light bounces in the radiosity pass. By the time the code gets to this point, all the data is precomputed, and extra bounces are very fast. It will make the shadows less harsh using more bounces, but can help light up dark areas much more naturally."
}
TextBox
{
Name "Chop"
Param "-chop"
Type "Single"
Default "64.0"
Min "1.0"
Hint "\tSet radiosity patch size for normal textures.\n\n"_
"\tEach face in the world has a grid projected onto it, and chopped up into a rather coarse set of sample points. These points are patches, and are what hlrad uses to do the bounced lighting calculations. A higher chop sacrifices quality for both speed and memory consumption of hlrad. A lower chop increases the quality at the expense of speed and memory usage."
}
TextBox
{
Name "Coring"
Param "-coring"
Type "Single"
Default "1.0"
Min "0.0"
Hint "\tSet lighting threshold before blackness.\n\n"_
"\tThis value controls how much light it takes before a surface will be lit with a non-black value."
}
TextBox
{
Name "Direct Light"
Param "-dlight"
Type "Single"
Default "25.0"
Min "0.0"
Hint "\tSet direct lighting threshold.\n\n"_
"\tThis option is similar to -maxlight, except that it re-normalizes the direct lighting values instead of clipping them if they are too high."
}
TextBox
{
Name "Direct Scale"
Param "-dscale"
Bold "True"
Type "Single"
Default "2.0"
Min "0.0"
Hint "\tSet direct lighting scale.\n\n"_
"\tDue to a bug in the original version of qrad, the direct lighting layer was added into the final lighting twice. The correct thing to do is only have it in there once, but at the time too many maps had been created with this assumption and it was left in there. This has been corrected as a command line switch, to scale the direct lighting by.\n\n"_
"\tUsing the value of '1' would generate the most correct looking maps. Using a value of '0' will remove the direct lighting completely. Using larger values, like '3' or '4', cause extremely harsh direct lighting relation to shadows."
}
TextBox
{
Name "Fade"
Param "-fade"
Type "Single"
Default "1.0"
Min "0.0"
Hint "\tSet global fade (larger values shorter lights).\n\n"_
"\tThis value adds in an artificial factor into the normal (1 / dist * dist) inverse square falloff calculations, by multiplying the denominator of the scale by the fade value. Point lights can set their own individual fade and falloff values, which override any global setting on the command line. These calculations only affect the direct lighting layer, as the radiosity pass always uses plain inverse square falloff."
}
TextBox
{
Name "Gamma"
Param "-gamma"
Type "Single"
Default "0.5"
Min "0.0"
Hint "\tSet global gamma value.\n\n"_
"\tThis option also occurs after the direct and radiosity layers are added together, and a global gamma correction is calculated and applied to the lighting before it is finalized."
}
Space
{
Size "1"
}
TextBox
{
Name "Max Light"
Param "-maxlight"
Type "Integer"
Default "255"
Min "0"
Hint "\tSet maximum light intensity value.\n\n"_
"\tThis option can be used to cap the bright spots, if you want a map to come out darker overall."
}
TextBox
{
Name "Scale"
Param "-scale"
Type "Single"
Default "1.0"
Min "0.0"
Hint "\tSet global light scaling value.\n\n"_
"\tThis option scales the final light values right after the direct lighting layer is added to the radiosity bounced lighting layer. Low values make the world darker, higher values make it brighter."
}
TextBox
{
Name "Sky"
Param "-sky"
Type "Single"
Default "0.5"
Min "0.0"
Hint "\tSet ambient sunlight contribution in the shade outside.\n\n"_
"\tMany faces have line of sight to sky, but fall in the shadow of some other object. This option affects how much of the normal sky lighting is put into the shadows."
}
TextBox
{
Name "Smooth"
Param "-smooth"
Bold "True"
Type "Single"
Default "50.0"
Min "0.0"
Max "180.0"
Hint "\tSet smoothing threshold for blending (in degrees).\n\n"_
"\tBy default hlrad uses Phong shading on all faces. If the angle between two edges is less than this value, it will be shaded with the Phong smoothing code, otherwise it won't."
}
TextBox
{
Name "Texture Chop"
Param "-texchop"
Type "Single"
Default "32.0"
Min "1.0"
Hint "\tSet radiosity patch size for texture light faces.\n\n"_
"\tTexture light faces are chopped with a different granularity than the normal faces, primarily so that the lighting looks good. Generally it should be half of the chop value. Adding -extra to hlrad will automatically divide this value by 2 at runtime."
}
TextBox
{
Name "Soft Light"
Param "-softlight"
Quote "False"
Type "String"
Default "r g b d"
Hint "\tScaling values for backwards-light hack."
}
ComboBox
{
Name "Fall Off Mode"
Param "-falloff"
Default "Inverse Square"
Options "Inverse Linear,1|Inverse Square,2"
Hint "\tSet global falloff mode.\n\n"_
"\tThis option can change the normal inverse square falloff of lighting in the direct lighting layer with inverse falloff."
}
ComboBox
{
Name "VIS Matrix"
Bold "True"
Default "Legacy"
Options "Legacy,|Sparse,-sparse|Disable,-nomatrix"
Hint "\tThe original vismatrix algorithm was limited to 65535 patches due to its design. Its memory usage also grew exponentially with the number of patches (patches * patches / 16 bytes).\n\n"_
"\tSparse enables a compressed vismatrix, which at the cost of extra CPU time, breaks the 65535 limit, and also uses about 10% of the memory the original vismatrix would, but as it does some compression, it requires a lot of thread synchronization and does not scale well past 2 CPU's.\n\n"_
"\tDisabling the Vis matrix essentially reduces the memory requirements to zero for that structure. However, the addition of \"opaque brush entities\" starting with ZHLT 2.2 hurts this method's performance quite a bit."
}
}
//
// RAD2
//
Stage
{
Name "RAD2"
Title "Radiosity Continued"
Type "ParameterList"
ColorBox
{
Name "Ambient Light"
Param "-ambient"
Type "Single"
Default "0 0 0"
Hint "\tSet ambient world light.\n\n"_
"\tThis option sets a minimum light value to every face so that nothing comes out pitch black."
}
ColorBox
{
Name "Gamma Color"
Param "-colourgamma"
Type "Single"
Default "0 0 0"
Hint "\tSets different gamma values for r, g, b."
}
ColorBox
{
Name "Jitter"
Param "-jitter"
Type "Integer"
Default "0 0 0"
Hint "\tAdds noise, monochromatic, for dithering."
}
ColorBox
{
Name "Jitter Color"
Param "-colourjitter"
Type "Integer"
Default "0 0 0"
Hint "\tAdds noise, independent colours, for dithering."
}
ColorBox
{
Name "Scale Color"
Param "-colourscale"
Type "Single"
Default "0 0 0"
Hint "\tSets different lightscale values for r, g ,b."
}
FileBox
{
Name "Lights File"
Param "-lights"
FullPath "True"
Bold "True"
Filter "Radiosity Files (*.rad)|*.rad|Text Files (*.txt)|*.txt"
Hint "\tManually specify a lights.rad file to use.\n\n"_
"\tThe .rad file will be used in addition to the defaults of lights.rad and mapname.rad."
}
}
//
// RipEnt
//
Stage
{
Name "RipEnt"
Title "Rip Entities"
Type "Program"
Filter "RipEnts (ripent.exe)|ripent.exe"
CheckBox
{
Name "Parse"
param "-parse"
Bold "True"
Hint "\tParse entity data.\n\n"_
"\tOn export -parse parses the entity data and reformats it for easy reading in any text editor.\n\n"_
"\tOn import -parse parses the entity data and removes all unnecessary white space. The parsing operation also works as a means to insure that the entity data is well formed, if it isn't an error message is printed to help track down the problem."
}
ComboBox
{
Name "Operation"
Checked "True"
Bold "True"
Default "Export"
Options "Import,-import|Export,-export"
Hint "\tImport an entity list into a BSP or export an entity list from a BSP.\n\n"_
"\tAn entity list is a mapname.ent file which lists all the entities in the BSP in MAP format which you can edit in a text editor."
}
Space
{
Size "8"
}
TextBox
{
Name "Additional Parameters"
Type "String"
Size "3"
Hint "\tAdd additional parameters here as you would a command line."
}
}
//
// Shared
//
Stage
{
Name "Shared"
Title "Shared Parameters"
Type "ParameterList"
CheckBox
{
Name "Chart"
param "-chart"
Bold "True"
Stages "CSG|BSP|VIS|RAD|RipEnt"
Hint "\tDisplay BSP statistics.\n\n"_
"\tThis option will cause the program to print out the bsp statistics right before it writes out the bsp. It is most handy to do -chart with hlrad and hlvis at the end of the compiles. The ripent program will always displays the chart."
}
CheckBox
{
Name "Estimate"
param "-estimate"
Bold "True"
Stages "CSG|BSP|VIS|RAD"
Hint "\tDisplay estimated time during compile.\n\n"_
"\tThis option replaces the 10...20... style progress indicators with a estimate bar with some estimated completion times, as well as the exact number of the current job and how many jobs there are to do. The three different times remaining factor in varying amounts of historical data to guess how much longer it will take to run. It is good for a ballpark figure, but frequently not much more accurate than that."
}
CheckBox
{
Name "No Info"
param "-noinfo"
Stages "CSG|BSP|VIS|RAD|RipEnt"
Hint "\tDo not show tool configuration information.\n\n"_
"\tBy default every tool shows its current settings and their default. This sometimes causes problems with other programs and is unnecessary as it already can be seen in the command line."
}
CheckBox
{
Name "No Log"
param "-nolog"
Stages "CSG|BSP|VIS|RAD"
Hint "\tDon't generate the compile logfiles.\n\n"_
"\tThis option just disables the generation of the .log and .err files which are normally generated whenever the compile tools run."
}
CheckBox
{
Name "Verbose"
param "-verbose"
Stages "CSG|BSP|VIS|RAD"//, Opt_EntData"
Hint "\tCompile with verbose messages.\n\n"_
"\tMany of the tools have 'minor warnings' and informative messages which are displayed when verbose mode is set. As the ZHLT 2.x series develops, many of the developer specific settings are being moved to developer messages, while the mapper related messages will remain as verbose messages."
}
/*Space
{
Size "6"
}*/
TextBox
{
Name "Texture Data"
Param "-texdata"
Bold "True"
Stages "CSG|BSP|VIS|RAD|RipEnt"
Type "Integer"
Default "4096"
Min "2048"
Hint "\tAlter maximum texture memory limit (in kb).\n\n"_
"\tHalflife was built with a 2Mb texture limit, as was Opposing Force. The ZHLT default limit is 4Mb. Even 4Mb can be a bit much, when combined with model textures, skies, hud graphics, and more. This is especially true of people with older cards (Voodoo 1 and 2's, etc)."
}
TextBox
{
Name "Light Data"
Param "-lightdata"
Bold "True"
Stages "CSG|BSP|VIS|RAD|RipEnt"
Type "Integer"
Default "6144"
Min "2048"
Hint "\tAlter maximum lightmap memory limit (in kb).\n\n"_
"\tHigher values than the default (6MB) can cause performance issues. You should perform compatability testing before releasing maps if they're over the preset limit."
}
TextBox
{
Name "Threads"
Param "-threads"
Stages "CSG|BSP|VIS|RAD"
Type "Integer"
Default "1"
Min "1"
Hint "\tManually specify the number of threads to run.\n\n"_
"\tThis option is generally only necessary on the non-windows versions of the tools, where there is not a standard way to detect the number of processors in the system and auto-set the value. It can be manually set on windows machines, primarily if you wish to use fewer threads than processors."
}
ComboBox
{
Name "Developer"
Param "-dev"
Stages "CSG|BSP|VIS|RAD"
Default "Error"
Options "Off,0|Error,1|Warning,2|Info,3|Fluff,4|Spam,5|MegaSpam,6"
Hint "\tCompile with developer messages.\n\n"_
"\tInternal ZHLT debugging messages have been slowly added to the tools. This variable sets the 'level' to display. In order (starting with 0 and going up) : Off, Error, Warning, Info, Fluff, Spam, MegaSpam. Generally this option should never be used except at request, to diagnose a compile problem on an end-users machine."
}
ComboBox
{
Name "Priority"
Stages "CSG|BSP|VIS|RAD"
Default "Normal"
Options "Low,-low|Normal,|High,-high"
Hint "\tRun program an altered priority level.\n\n"_
"\tSetting the priority of the compile tools to -low is very handy, as you can multitask and do other things without really feeling the drain of the compile programs on the system, provided there is enough memory for the tools and the other programs you use."
}
}
|