]> de.git.xonotic.org Git - xonotic/netradiant.git/blob - docs/manual/Q3Rad_Manual/ch07/pg7_1.htm
error check and bail if permission denied during gamepack install
[xonotic/netradiant.git] / docs / manual / Q3Rad_Manual / ch07 / pg7_1.htm
1 <html>\r
2 <head>\r
3 <title>Q3Radiant Editor Manual: Page 7.1</title>\r
4 <link rel = "stylesheet" type = "text/css" href = "../styles/q3rad.css">\r
5 </head>\r
6 <body>\r
7 <h1 class = "MsoTitle">Q3Radiant Editor Manual</h1>\r
8 <hr>\r
9 <h1><a name = "tools4">Tools 4: Working with Textures</a></h1>\r
10 \r
11 There are three skill and knowledge components to working with\r
12 textures as they regard <i>Quake III Arena</i>. They are Texture\r
13 creation, Texture Manipulation, and Texture Application. Only the\r
14 third, Texture Application, is absolutely necessary for making\r
15 maps. You need not master all three.\r
16 \r
17 <h2><a name = "brushprim">Brush Primitives: A New Format</a></h2>\r
18 \r
19 With the release of version 192, the Q3Radiant editor takes a\r
20 new direction in the way textures are mapped to the surfaces of\r
21 brushes. The texturing format will roughly be the same as the way\r
22 textures are handled on curve patches. While there are no changes\r
23 to the user interface within the editor, you should see a change in\r
24 the way textures behave on brushes during transformation operations\r
25 like move and rotate. Because textures are mapped to the S\r
26 and T coordinates of a brush (as they are with curve patches),\r
27 locked textures will now maintain their positions on brushes when\r
28 they are moved or located. Even complex rotations should now be\r
29 possible without the textures going askew.\r
30 \r
31 <p>Checking the Brush Primitives checkbox turns on this feature.\r
32 <span class = "menu">(Menu: Project Settings&hellip; &gt; Use brush primitives in map\r
33 files)</span>. Once you change a map to Brush Primitives, you cannot go\r
34 back to the earlier method of texture mapping with that map. The\r
35 prudent mapper makes backups before making major changes to\r
36 projects.\r
37 \r
38 <h2><a name = "newtex">Texture Creation: Making new Assets</a></h2>\r
39 \r
40 This is covered earlier in the manual.\r
41 \r
42 <h2><a name = "texman">Texture Manipulation: Shader Overview</a></h2>\r
43 \r
44 Technically, each texture already has a default shader that\r
45 passes it through the pipeline to appear much as it does in the\r
46 graphic program that made it. A shader is a short script,\r
47 separate from the texture file, that the game engine uses to make\r
48 further adjustments to the texture's appearance or function. The\r
49 shader is to <i>Q3A</i> what the surface properties flags were to\r
50 <i>Q2</i>, only ever so much more powerful. If you plan on creating\r
51 your own textures, you should get to know and understand how\r
52 shaders work. The Q3A Shader Manual contains the information you\r
53 need.\r
54 \r
55 <p><div class = "subheading">Shaders and Multi-Pass Texture Effects</div>\r
56 \r
57 (<i>Drawn from an original essay by Small Pile of Gibs</i>)\r
58 \r
59 <p>Shaders give the mapper control over special graphics effects\r
60 that require multiple redrawing passes before they are finally\r
61 displayed on the game screen. Every shader that changes the visual\r
62 component of a texture uses these "Multitexture" effects.\r
63 Multitexture is ON by default in <i>Quake III Arena</i>. It is\r
64 turned off with the cvar, "set r_ext_multitexture 0 (entered in the\r
65 console or bound to a key) - see the Debugging section in this\r
66 document for more details.\r
67 \r
68 <p>To understand how multitexture works, you need to understand how\r
69 the <i>Quake III Arena</i> graphic engine renders a scene. All the\r
70 faces you see in <i>Quake III Arena</i> are made up of triangles -\r
71 you can see this by using the cvar command "r_showtris 1."\r
72 Initially, each triangle adds one to the "tris" number in r_speeds\r
73 (the numbers that are used to estimate whether a scene is too\r
74 complex). With every frame that <i>Q3A</i> "paints", it draws\r
75 triangles onto the scene in layers, starting at the back of the\r
76 scene and drawing every triangle visible until it reaches the\r
77 front. It takes time to draw each triangle. If a triangle is\r
78 painted with a texture that is "see through" in some way (either\r
79 transluscent, transparent, or containing cut-outs), any triangles\r
80 seen through that triangle must be redrawn one additional time for\r
81 each stage in the the shader. If a single transparent triangle\r
82 takes up the whole screen, for example, a glass window - The whole\r
83 area of the screen has to be redrawn. Each triangle of glass takes\r
84 an entire screen worth of "overdraw" and each extra stage on the\r
85 glass adds another screenful, which is why glass can be such a big\r
86 framerate hit.\r
87 \r
88 <p>The simplest form of multitexture is a Lightmap. In most cases,\r
89 the Q3A engine first draws the lightmap (precalculated light and\r
90 shadow information). Then, on top of that, it adds in the\r
91 information from the texture art specified for that triangle using\r
92 a special effect (blendfunc filter) - which blends the lightmap\r
93 with the texture to make areas of the texture look light or dark.\r
94 Using the cvar command "r_vertexlight 1" (Vertex Lighting\r
95 instead of Lightmaps) stops Q3 from drawing the lightmap triangles\r
96 (which is why many gamers use vertex lighting to gain additional\r
97 playing speed).\r
98 \r
99 <p>Every extra stage in a shader is an extra triangle drawn over\r
100 and blended with the first triangle in a special way. Like the\r
101 lightmap example above, each additional stage requires an extra\r
102 triangle to be drawn for each frame. On certain 3D accelerator\r
103 cards (like the TNT - TwiN Texture), the multitexture effect\r
104 cancels out the real cost of the first pass of blending. The\r
105 blending for the first additional stage is done before the triangle\r
106 is drawn. However, if the shader takes 3 stages (like all the shiny\r
107 metal effects) it costs an extra triangle for every triangle it is\r
108 used on. Every extra triangle used adds a triangle to the r_speeds\r
109 triangle count. Because there are cards that don't automatically\r
110 handle this first blending pass, the map maker needs to\r
111 occasionally check his r_speeds with the multitexture turned\r
112 off.\r
113 \r
114 <h2><a name = "texapplic">Texture Application: Texture Handling\r
115 Tools</a></h2>\r
116 \r
117 These tools manipulate textures within the editor. They do not\r
118 create textures or shader scripts.\r
119 \r
120 <p><div class = "subheading">Escape (ESC)</div>\r
121 \r
122 This is the all-purpose deselect key. Use it to back out of\r
123 operations you don't want to complete or to stop working on a brush\r
124 face, a brush, a patch, or a group of brushes or patches.\r
125 \r
126 <p><div class = "subheading">View Textures</div>\r
127 \r
128 <div class = "menu">(Shortcut: T)</div>\r
129 \r
130 This is only used in the four-view and floating windows modes\r
131 (as set in Preferences). It brings up the Texture selection window\r
132 (also accessible from a folder tab). If the Entity window is open,\r
133 you may need to click on a map view window first for the "T"\r
134 command shortcut to work.\r
135 \r
136 <p><div class = "subheading">Show in <u>U</u>se</div>\r
137 \r
138 <div class = "menu">(Menu: Textures &gt; Show in <u>U</u>se)\r
139 \r
140 <br>(Shortcut: U)</div>\r
141 \r
142 This command affects the content of the Textures window. It\r
143 filters the contents so that only those textures currently in use\r
144 in the map are displayed in the window.\r
145 \r
146 <p><div class = "subheading">Show <u>A</u>ll</div>\r
147 \r
148 <div class = "menu">(Menu: Textures &gt; Show <u>A</u>ll)\r
149 \r
150 <br>(Shortcut: CTRL + A)</div>\r
151 \r
152 This command affects the content of the Textures window. It\r
153 "un"-filters the contents so that all the texture directories\r
154 previously loaded during the mapping session are re-displayed.\r
155 \r
156 <p><div class = "subheading">Surface Inspector</div>\r
157 \r
158 <div class = "menu">(Menu: Textures &gt; Surface Inspector)</div>\r
159 \r
160 <p><img src = "../Q3Rad_Manual_files/image035.png" width = 287 height = 376>\r
161 \r
162 <p>This brings up a pop-up dialogue box. This is one of the more\r
163 complicated interfaces used during map development and may take\r
164 some getting used to.\r
165 \r
166 <p><strong>Texture</strong>\r
167 \r
168 <br>This is the path/name (beginning in Textures directory) for the\r
169 texture. You can copy from this field or paste into it. If you know\r
170 the pathname of a texture, you can enter it here. It will load\r
171 without having to first load the entire directory that contains\r
172 it.\r
173 \r
174 <p>The next five commands work on both patches and brushes.\r
175 However, the results of applying a Horizontal Shift to a brush and\r
176 to a patch may be substantially different. When working with\r
177 patches, the numbers in the fields do not change &hellip; although\r
178 the texture on the map component may be changing.\r
179 \r
180 <p><div class = "tip"><b>Design Note:</b> When a curve patch butts flush up against a\r
181 piece of solid geometry, as if it were an extension of that\r
182 geometry, it may be difficult to align the textures exactly. In\r
183 fact is often <i>extremely</i> difficult to align a texture on a\r
184 patch with the texture on an adjacent geometry brush. It works best\r
185 when the dimensions of the patch are an exact multiple of the\r
186 dimensions of the texture being used. Otherwise, you may want to\r
187 consider designing your architecture in such a way that it is\r
188 logical for a new texture to begin at that point. Use your\r
189 judgement.</div>\r
190 \r
191 <p><strong>Horizontal Shift</strong>\r
192 \r
193 <br>This allows you to change the Horizontal texture offset\r
194 (position of texture on a surface). You can type an offset value\r
195 into field or use the scroll buttons on the right to shift the\r
196 texture. If "Snap T to Grid" is set in Preferences, the scroll\r
197 increments will move a number of pixels equal to the grid size.\r
198 \r
199 <p><strong>Vertical Shift</strong>\r
200 \r
201 This allows you to change the Vertical texture offset (position\r
202 of texture on a surface). You can type an offset value into field\r
203 or use the scroll buttons on the right to shift the texture. If\r
204 "Snap T to Grid" is set in Preferences, the scroll increments will\r
205 move a number of pixels equal to the grid size.\r
206 \r
207 <p><strong>Horizontal Stretch</strong>\r
208 \r
209 This allows you to change the dimensions of textures as they are\r
210 mapped into the world. You can type a size value into field or use\r
211 the scroll buttons on the right to enlarge or reduce the texture.\r
212 The default value is 0.5. This gives a presentation in the game\r
213 world of two pixels for each game unit. A Horizontal Stretch value\r
214 of 1.0 would double the amount of area covered by a single repeat\r
215 of the texture. Of course, doing that also reduces the apparent\r
216 resolution of the texture by half (can you say blurry?)! Making the\r
217 stretch value a negative number horizontally flops the texture's\r
218 normals (i.e.; flops the texture left to right).\r
219 \r
220 <p><div class = "tip"><b>Design note:</b> Textures are "projected" onto brush\r
221 surfaces. This means that if a surface is angled, the texture\r
222 stretches to fit the space upon which it is projected. To make the\r
223 texture look "unstretched" you need to change the dimension so that\r
224 it looks correct when stretched. Example: If you want to map a\r
225 texture on a 45-degree angle, it should be scaled to 0.35 along the\r
226 direction perpendicular to the axis of the angle.</div>\r
227 \r
228 <p><strong>Vertical Stretch</strong>\r
229 \r
230 This is the same as for the Horizontal Stretch, but along the\r
231 vertical axis. Making the stretch value a negative number\r
232 vertically flops the texture's normals (i.e.; flops the texture up\r
233 and down).\r
234 \r
235 <p><strong>Rotate</strong>\r
236 \r
237 This rotates the texture around the center point of the brush\r
238 (or patch). If the texture is not centered on the map component,\r
239 the rotation will not necessarily look correct. The increment of\r
240 rotation is set by the value given for the Rotation Inc field on\r
241 the Preferences window. The default value is 45 (degrees), roughly\r
242 1/8 rotation around the axis.\r
243 \r
244 <p><strong>Value</strong>\r
245 \r
246 (This <i>Quake 2</i> function is not used by <i>Quake III\r
247 Arena</i>)\r
248 \r
249 <p><strong>Texturing</strong>\r
250 \r
251 <p>This next grouping of commands in the lower left corner of the\r
252 window provides two separate sets of buttons. The top set deal with\r
253 texturing geometry brushes. The lower set is for texturing curve\r
254 patches.\r
255 \r
256 <ul><strong>Axial (Brush)</strong>\r
257 \r
258 <br>Realigns texture to the X and Y axes (removing the effects of\r
259 rotation)\r
260 \r
261 <p><strong>Fit (Brush)</strong>\r
262 \r
263 <br>The texture is stretched to fit the dimensions of the brush. The\r
264 width and height fields to the right are the number of repetitions\r
265 to be used in the S and T dimensions (S corresponds to X on\r
266 the actual texture and T corresponds to Y on the actual texture).\r
267 The default value for the height and width fields is 1. You can\r
268 type a size value into field or use the scroll buttons on the right\r
269 to enlarge or reduce the texture. Only integer values can be\r
270 entered (meaning that you can't enlarge a texture 1.5 times).\r
271 \r
272 <p><strong>CAP (Patch)</strong>\r
273 \r
274 <br>This function is most often applied to patches used to fill in\r
275 the gaps between curves and solid geometry. It can also be applied\r
276 to flat patches so that the texture doesn't appear to follow the\r
277 arc of the patch. You may need to use the SHIFT + CTRL + N command\r
278 to normalize the texture on the patch.\r
279 \r
280 <p><strong>Set&hellip; (Patch)</strong>\r
281 \r
282 <br>This command functions almost like the "Fit" command above for\r
283 brushes. The texture will be fit across the patch based on the X\r
284 and Y values given. However, there is a notable difference. The X\r
285 and Y fields will accept non-integer values (e.g. 6.4 x 3.8). It\r
286 may take some experimentation to determine which dimension of your\r
287 patch is considered to be "X" and which is thought to be "Y". If a\r
288 value of 1x1 is given, the texture will be "fit" to the\r
289 patch.\r
290 \r
291 <p><strong>Natural (Patch)</strong>\r
292 \r
293 <br>The engine does its best to map the texture onto the patch in a\r
294 "natural" appearing manner. This means that the texture will curve\r
295 and flow with the curves and bends in the patch. Unless you are\r
296 texturing a cap, this should be your first choice when applying a\r
297 texture.\r
298 \r
299 <p><strong>Fit</strong>\r
300 \r
301 <br>The texture's coordinates are mapped to fit the patch\r
302 (with no repeats).\r
303 </ul>\r
304 <p><div class = "subheading">Find / Replace</div>\r
305 \r
306 <div class = "menu">(Menu: Textures &gt;  Find / Replace)\r
307 \r
308 <br>(Shortcut: none)</div>\r
309 \r
310 This feature allows the user to replace a texture within a\r
311 single brush, a set of selected brushes or globally throughout the\r
312 entire map. Selecting the command from the menu opens up a dialogue\r
313 window. The top line is for the texture path and name of the\r
314 texture to be replaced. The second line is for the texture to be\r
315 used for replacement. Several checkboxes allow fine control over\r
316 what, exactly, is to be changed. This command does not respond to\r
317 UNDO. If you accidentally mistype a texture name in the replace\r
318 line, you will need to enter it again (as mistyped) on the find\r
319 line and then enter the correct texture on the replace line.\r
320 \r
321 <p>Texture replacement is global (throughout the map) unless the\r
322 selected checkboxes state otherwise.\r
323 \r
324 <ul><b>Replace within selected brushes only.</b> Only the hi-lighted\r
325 brushes that contain the texture to be replaced will be\r
326 affected.\r
327 \r
328 <p><b>Force replacement (ignore current texture name).</b> <i>\r
329 All</i> textures in the map will be replaced. Best if used with <b>\r
330 <i>Replace within selected brushes only.</i></b> Be very careful\r
331 with this one.\r
332 \r
333 <p><b>Live Updates from Texture/Camera windows.</b> Using\r
334 Live Update the user can find and replace textures with a fully\r
335 point and click interface.\r
336 \r
337 <p><strong>Texture Replacement using Live Updates</strong>\r
338 \r
339 <br>Click on the Find box, then click on any texture in either the\r
340 Camera window or the Texture window. The texture path/name for that\r
341 texture appears in the box. Next click on the Replace box and click\r
342 on the replacement texture. That texture's path/name appear in the\r
343 Replace box. Select "OK" and the replacement will occur.</ul>\r
344 \r
345 <p><strong>Step-by-step for replacing a texture on a brush face\r
346 (if live update is not used).</strong>\r
347 \r
348 <ul><li>In the Camera window, hi-light (CTRL+SHIFT+mouse1) the texture\r
349 to be replaced.\r
350 \r
351 <li>Open Surface Inspector. If the name of the texture is not\r
352 hi-lighted, then hi-light it.\r
353 \r
354 <li>Press CTRL+C to copy the texture name.\r
355 \r
356 <li>Open the Find/Replace window.\r
357 \r
358 <li>Paste (CTRL+V) the name into the find window.\r
359 \r
360 <li>Hit ESC to deselect the texture in the CAM winow.\r
361 \r
362 <li>Open the Textures Window. Find the texture you want to replace\r
363 with and select it.\r
364 \r
365 <li>Open Surface Inspector again.\r
366 \r
367 <li>Copy the texture name there.\r
368 \r
369 <li>Open Find/Replace again and paste the new texture into the\r
370 Replace box.\r
371 \r
372 <li>Select OK. Replacement occurs and the dialogue window\r
373 closes.</ul>\r
374 \r
375 <p><div class = "subheading">Texture Lock</div>\r
376 \r
377 <div class = "menu">(Menu: Textures &gt; Texture Lock)\r
378 \r
379 <br>(Shortcut: none)</div>\r
380 \r
381 Opens Pop-up window with two options for "locking" texture\r
382 shifting during brush or patch movement. <b>NOTE:</b> If you have\r
383 selected the BRUSH PRIMITIVES option under Project Settings&hellip;\r
384 then Texture lock will always be on.\r
385 \r
386 <ul><strong>Moves</strong>\r
387 \r
388 <div class = "menu">(Menu: Textures &gt; Texture Lock &gt; Moves)\r
389 \r
390 <br>(Shortcut: SHIFT + T)</div>\r
391 When this option is checked, textures stay locked in position on\r
392 the brush as brushes are moved around the map. If unchecked, the\r
393 texture appears to shift across the brush, because they are fixed\r
394 to the world, not the individual brush. On small brushes and small\r
395 textures (such as the small square lights), some "creepage" may\r
396 occur, with textures shifting 1 or 2 units off their locked\r
397 position.\r
398 \r
399 <p><strong>Rotation</strong>\r
400 \r
401 <div class = "menu">(Menu: Textures &gt; Texture Lock &gt; Moves)\r
402 \r
403 <br>(Shortcut: SHIFT + R)</div>\r
404 \r
405 When this option is checked, textures stay locked in position on\r
406 the brush or brushes as they are rotated around the map. If\r
407 unchecked, the texture appears to shift across the brush, because\r
408 they are fixed to the world, not the individual brush. On small\r
409 brushes and small textures (such as the small square lights), some\r
410 "creepage" may occur, with textures shifting 1 or 2 units off their\r
411 locked position.</ul>\r
412 \r
413 <p><div class = "subheading">Load from List&hellip;</div>\r
414 \r
415 <div class = "menu">(Menu: Textures &gt; Load from List&hellip;)\r
416 \r
417 <br>(Shortcut: none)</div>\r
418 \r
419 Opens a dialogue box listing all texture directories currently\r
420 recognized by the editor. Hi-light a directory title then\r
421 click on the "Load" button. The textures in the selected\r
422 directory will be loaded into the Textures window.\r
423 \r
424 <p><div class = "subheading">Shaders</div>\r
425 \r
426 <div class = "menu">(Menu: Textures &gt; Shaders)\r
427 \r
428 <br>(Shortcut: none)</div>\r
429 \r
430 This command pops up a Pop-up window with two shader-related\r
431 commands.\r
432 \r
433 <ul><strong>Load All (Reload)</strong>\r
434 \r
435 <div class = "menu">(Menu: Textures &gt; Shaders &gt; Load (All) Reload)\r
436 \r
437 <br>(Shortcut: none)</div>\r
438 \r
439 This command loads or reloads all the .shader scripts recognized\r
440 by your shaderlist.txt file. When you change and save a shader\r
441 script, execute this command, then reload the affected texture\r
442 directory to see any changes.\r
443 \r
444 <p><strong>Show</strong>\r
445 \r
446 <div class = "menu">(Menu: Textures &gt; Shaders &gt; Show)\r
447 \r
448 <br>(Shortcut: none)</div>\r
449 \r
450 When checked, this command surrounds all shader-manipulated\r
451 textures in the Texture window with a thin white border.</ul>\r
452 \r
453 <p><div class = "subheading">Flush</div>\r
454 \r
455 <div class = "menu">(Menu: Textures &gt; Flush)\r
456 \r
457 <br>(Shortcut: none)</div>\r
458 \r
459 The flush command frees up texture memory and should improve\r
460 editor performance. Exactly how much is flushed depends on your\r
461 choice of commands.\r
462 \r
463 <ul><strong>Flush All</strong>\r
464 \r
465 <div class = "menu">(Menu: Textures &gt; Flush &gt; Flush All)\r
466 \r
467 <br>(Shortcut: none)</div>\r
468 \r
469 This command flushes all the texture memory, restarts OpenGL and\r
470 reloads the map from the last saved copy.\r
471 \r
472 <p><strong>Flush Unused</strong>\r
473 \r
474 <div class = "menu">(Menu: Textures &gt; Flush &gt; Flush Unused)\r
475 \r
476 <br>(Shortcut: none)</div>\r
477 \r
478 This command flushes all UNUSED textures from memory.</ul>\r
479 \r
480 <p><div class = "subheading">Texture Window Scale-</div>\r
481 \r
482 <div class = "menu">>(Menu &gt; Textures &gt; Texture Window Scale)\r
483 \r
484 <br>(Shortcut: none)</div>\r
485 \r
486 This affects the size of the texture images displayed in the\r
487 Textures window. Clicking on the menu entry opens up a pop-up\r
488 window with the following size selections: 200%, 100%, 50%, 25%,\r
489 and 10%. Adjust it to suit your liking. If seeing the detail in the\r
490 textures is important to you, set the size to 100% or larger. If\r
491 you know your way around the textures without having to see each\r
492 pixel, set it for smaller.\r
493 \r
494 <p><div class = "subheading">Texture Directories</div>\r
495 \r
496 <div class = "menu">(Menu: Textures)</div>\r
497 \r
498 This is not a command. The entries on the Textures Menu below\r
499 "Texture Window Scale" are the names of the available texture\r
500 directories (all whose filenames are listed in the shaderlist.txt\r
501 script). Clicking on one loads the contents of the directory into\r
502 the Texture window.\r
503 \r
504 <p><div class = "subheading">Texture Shift Key Shortcuts</div>\r
505 \r
506 A brush, brush surface, or curve patch must already be selected\r
507 before using these shortcuts. This feature closely copies the\r
508 function of the Texture Shift fields and scroll bars on Surface\r
509 Inspector pop-up window. If Snap to T is selected in preferences,\r
510 then the texture shifts in pixel increments equal to the current\r
511 grid setting. Shifting textures on curve patches may produce\r
512 unexpected results.\r
513 \r
514 <p><table class = "menu">\r
515 <tr>\r
516         <td>Texture Shift Down</td>\r
517         <td width = 50%>(SHIFT + DOWN ARROW)</td>\r
518 </tr>\r
519 <tr>\r
520         <td>Texture Shift Up</td>\r
521         <td width = 50%>(SHIFT + UP ARROW)</td>\r
522 </tr>\r
523 <tr>\r
524         <td>Texture Shift Left</td>\r
525         <td width = 50%>(SHIFT + LEFT ARROW)</td>\r
526 </tr>\r
527 <tr>\r
528         <td>Texture Shift Right</td>\r
529         <td width = 50%>(SHIFT + RIGHT ARROW)</td>\r
530 </tr>\r
531 </table>\r
532 \r
533 <p><div class = "subheading">Texture Rotate Key Shortcuts</div>\r
534 \r
535 A brush, brush surface, or curve patch must already be selected\r
536 before using these shortcuts. This feature closely copies the\r
537 function of the Texture Rotate field and scroll bar on Surface\r
538 Inspector pop-up window. The texture rotates in degree increments\r
539 set in Preferences. Rotating textures on curve patches may produce\r
540 unexpected results.\r
541 \r
542 <p><table class = "menu">\r
543 <tr>\r
544         <td>Texture Rotate Clockwise</td>\r
545         <td width = 40%>(SHIFT + PAGEDOWN)</td>\r
546 </tr>\r
547 <tr>\r
548         <td>Texture Rotate Counter-Clockwise</td>\r
549         <td width = 40%>(SHIFT + PAGEUP)</td>\r
550 </tr>\r
551 </table>\r
552 \r
553 <p><div class = "subheading">Texture Scaling Shortcuts</div>\r
554 \r
555 A brush, brush surface, or curve patch must already be selected\r
556 before using these shortcuts. This feature changes the scale of the\r
557 texture (the amount of area that a single instance of the texture\r
558 covers). The texture scale seems inconsistent, except that opposite\r
559 directions appear to cancel each other out. The amount of increase\r
560 delivered by the first use appears to be about a ratio of 1:15.\r
561 \r
562 <p><table class = "menu">\r
563 <tr>\r
564         <td>Texture Scale Down</td>\r
565         <td width = 50%>(CTRL + DOWN ARROW)</td>\r
566 </tr>\r
567 <tr>\r
568         <td>Texture Scale Up</td>\r
569         <td width = 50%>(CTRL + UP ARROW)</td>\r
570 </tr>\r
571 <tr>\r
572         <td>Texture Scale Left</td>\r
573         <td width = 50%>(CTRL + LEFT ARROW)</td>\r
574 </tr>\r
575 <tr>\r
576         <td>Texture Scale Right</td>\r
577         <td width = 50%>(CTRL + RIGHT ARROW)</td>\r
578 </tr>\r
579 </table>\r
580 \r
581 <h2><a name = "interactex">Using Interactive Textures</a></h2>\r
582 \r
583 Interactive textures are the shader-manipulated textures that\r
584 have an effect on game play, not just the appearance of the map.\r
585 There are two classes of Interactive Textures: Special Content\r
586 Textures and Texture Entities. For more detail and\r
587 instructions regarding shader manipulation of textures, refer to\r
588 the <i>Q3A</i> Shader Manual.\r
589 \r
590 <p><strong>Special Content Textures</strong>\r
591 \r
592 Special content textures are textures where the "surface"\r
593 parameters of the texture actually change the physical nature of\r
594 the geometry brush and in so doing, affects the play of the\r
595 game.\r
596 \r
597 <p><strong>Water</strong>\r
598 \r
599 <br>Water is a content parameter that allows a player to "swim"\r
600 inside a geometry brush, causes a pulsing visual distortion of the\r
601 underwater geometry, and prompts the game engine to draw bubbles as\r
602 projectiles pass through it. A player can only remain under water\r
603 for a short time (without a battlesuit) and then begins to\r
604 drown.\r
605 \r
606 <p><strong>Water usage rules:</strong>\r
607 \r
608 <ul>\r
609 <li>A water texture is defined by the presence of surfaceparm water\r
610 in the shader that creates it.\r
611 \r
612 <li>Because water is typically a "transparent" surface, the shader\r
613 passes used to create surface effects on water are added to the\r
614 shader passes of textures seen through the water surface. This can\r
615 significantly increase the number of redraw passes necessary to\r
616 draw the game world and may negatively affect performance.\r
617 \r
618 <li>If you place water brushes side by side, the touching sides must\r
619 be marked with the common/nodraw texture.\r
620 \r
621 <li>Both the top and the bottom surfaces of a water brush must be\r
622 water texture.\r
623 \r
624 <li>Water brushes cannot be stacked so they touch another water\r
625 brush vertically, only set side by side.\r
626 \r
627 <li> If you want to be able to exit water easily, keep the\r
628 distance from the top of the water brush to the adjacent "shore" or\r
629 pool edge at no more than 16 game units. Somewhat less is actually\r
630 better.\r
631 \r
632 <li>If fog is to be used as a part of a water volume, the water\r
633 surface should not deform.</ul>\r
634 \r
635 <p><strong>Fog</strong>\r
636 \r
637 Fog content is used to block or diminish player vision and\r
638 provide "atmosphere" for a level. Like water, fog can affect game\r
639 performance, especially if one can see additional shader effects\r
640 within it. The following information is taken from the <i>Q3A</i>\r
641 Shader Manual regarding fog creation and usage.\r
642 \r
643 <p><strong>fogparms &lt;red value&gt; &lt;green value&gt; &lt;blue\r
644 value&gt; &lt;distance to Opaque&gt;</strong>\r
645 \r
646 <br>This surface parameter (or "surfaceparm") defines the contents\r
647 of the fog.\r
648 \r
649 <br><b>Note:</b> you must also specify "surfaceparm fog" to cause\r
650 q3map to identify the surfaces inside the volume. Fogparms\r
651 only describes how to render the fog on the surfaces.\r
652 \r
653 <p><b>&lt;red value&gt; &lt;green value&gt; &lt;blue value&gt;</b>\r
654 These are normalized values (number range from 0 to 1). A good\r
655 computer art program should give you the RGB values for a color. To\r
656 obtain the values that define fog color for <i>Quake III Arena,</i>\r
657 divide the desired color's Red, Green and Blue values by 255 to\r
658 obtain three normalized numbers within the 0.0 to 1.0\r
659 range.\r
660 \r
661 <p><b>&lt;distance to opaque&gt;</b> This is the distance, in\r
662 game units, until the fog becomes totally opaque, as measured from\r
663 the point of view of the observer. By making the height of the fog\r
664 brush shorter than the distance to opaque, the apparent density of\r
665 the fog can be reduced (because it never reaches the depth at which\r
666 full opacity occurs).\r
667 \r
668 <p><strong>Fog usage rules:</strong>\r
669 \r
670 <ul>\r
671 <li>If a room (or rooms) is to be filled completely with a fog\r
672 volume, it can only be entered through one surface (and still have\r
673 the fog function correctly).\r
674 \r
675 <li>The fog volume can only have one surface visible (from outside\r
676 the fog).\r
677 \r
678 <li>Fog must be made of one brush. It cannot be made of adjacent\r
679 brushes.\r
680 \r
681 <li>Fog brushes must be axial. This means that only square or\r
682 rectangular brushes may contain fog, and those must have their\r
683 edges drawn along the axes of the map grid (all 90 degree\r
684 angles).\r
685 \r
686 <li>If a water texture contains a fog parameter, it must be treated\r
687 as if it were a fog texture when in use.\r
688 \r
689 <li>Additional shader passes may be placed on a fog brush, as with\r
690 other brushes.\r
691 \r
692 <li>If a light-emitting fog brush is placed beneath normal brush\r
693 geometry, the light may cause light artifacting on the solid brush\r
694 surface. Use with care.\r
695 \r
696 <li>Brush models (trains, doors, rotating objects, etc.) within, or\r
697 partially within fog volumes will have drawing priority problems\r
698 against the fog.  It is best not to place these entities in\r
699 fog volumes.\r
700 \r
701 <li>There are unconfirmed reports of moving entities being made with\r
702 fog shaders.</ul>\r
703 \r
704 <p><strong>Lava</strong>\r
705 \r
706 <br>Lava content, for most practical purposes, is a variation of\r
707 water content. The damage that it does to players in contact with\r
708 it is defined by game code and cannot be directly affected by the\r
709 map designer.\r
710 \r
711 <p><strong>Slime</strong>\r
712 \r
713 <br>Slime content, for most practical purposes, is a variation of\r
714 water content. The damage that it does to players in contact with\r
715 it is defined by game code and cannot be directly affected by the\r
716 map designer.\r
717 \r
718 <p><div class = "subheading">Texture Entities</div>\r
719 \r
720 There are a number of shader-manipulated textures that are used\r
721 in an entity-like fashion. The shader files that manipulate the\r
722 textures are what give them their game properties. These are\r
723 the ones that id used and their relevant properties.\r
724 \r
725 <p><strong>Areaportal</strong>\r
726 \r
727 <br><b>Color:</b> Opaque Red Orange\r
728 \r
729 <br><b>Location:</b> (textures/common/areaportal)\r
730 \r
731 <br>The bsp tool uses areaportals to create hard, visual breaks\r
732 between areas in the map. Until triggered, the areaportal blocks\r
733 geometry behind it from being drawn or seen. The area portal brush\r
734 should be a thin (2 to 4 units thick) brush. It should touch all\r
735 the brushes that form the hull of the opening being portalled. It\r
736 must be placed inside a door. The opening of the door triggers the\r
737 portal function. The closing of the door returns it to its former\r
738 state. The areaportal texture must completely seal off a volume\r
739 from another volume (although this can be in conjunction with other\r
740 areaportals). If a door is being used to block off an area from\r
741 view, consider placing an areaportal brush inside the door. Example\r
742 in Quake III Arena: All the doors out of the central courtyard in\r
743 Q3DM12, The Dredwerkz, are areaportalled.\r
744 \r
745 <p><strong>Caulk</strong>\r
746 \r
747 <br><b>Location:</b> (common/caulk)\r
748 \r
749 <br><b>Color:</b> Opaque Pink\r
750 \r
751 <br><b>Game Function:</b> Caulk, the miracle texture. It blocks vis.\r
752 It seals the world off from the void. It doesn't draw (so it\r
753 doesn't add to triangle counts). It keeps curves from competing\r
754 with textures behind them. It looks like hell if you see it in your\r
755 world. From the View menu (View &gt; Show &gt; Caulk), you can\r
756 toggle on and off the display of caulk brush sides.\r
757 \r
758 <p><div class = "tip"><b>Design Tips:</b> When you build a brush entity (a.k.a.\r
759 b_model), mark all the brush sides that you will never see with\r
760 caulk. Otherwise, the game draws every one of them. Even if you're\r
761 only making a one-piece door, mark all the non-viewed sides with\r
762 caulk. The same holds true for detail brushes. If you can't\r
763 (or won't ever) see a brush face on a brush that's been marked as\r
764 detail, paint it with caulk. Next, whenever you build a curve, try\r
765 to build the brush geometry immediately behind it out of caulk.\r
766 Finally, look around your map for brush faces that you suspect are\r
767 being drawn, but are never seen: door pockets, bars, underneath\r
768 bridges or very low railings and so on. It may sound like work, but\r
769 attention to detail like this buys you both the appearance of\r
770 greater geometric detail in the map AND faster game running\r
771 speed.\r
772 \r
773 <p><b>More Design Tips:</b> Finally, and this should be used with\r
774 great care, a caulk brush can be used to create an invisible\r
775 support for entities. If you place a very thin caulk brush floating\r
776 above a surface that would otherwise not support an entity\r
777 (example: a grate made of clip brush), the brush will not draw in\r
778 the world, but will support the entity. The reason for this is that\r
779 SUSPENDED entities are not "seen" by bots unless they can be\r
780 reached by a jump pad.</div>\r
781 \r
782 <p><strong>Clip</strong>\r
783 \r
784 <br><b>Location:</b> (textures/common/clip)\r
785 \r
786 <br><b>Color:</b> Transparent Red\r
787 \r
788 <br><b>Game Function:</b> If you look at a professionally made map,\r
789 quite often you'll see that nearly every bit of wall surface is\r
790 covered in a transparent red texture called "common/clip." Clip is\r
791 a nondrawing texture that blocks player movement. Clip does not\r
792 block weapon fire. Entities, such as ammo or weapons, are not\r
793 supported by clip brushes. If placed or dropped on a clip brush,\r
794 they will pass through them.\r
795 \r
796 <p><div class = "tip"><b>Design Tips:</b> Place clip brushes to smooth the passage of\r
797 players through the world. This could mean creating a slope that\r
798 allows the player to slip past a piece of architectural trim, or\r
799 filling a window to keep players from getting into it. It can be\r
800 used to create an artificial ceiling that prevents players from\r
801 flying or jumping too high.</div>\r
802 \r
803 <p><strong>Cluster Portal</strong>\r
804 \r
805 <br><b>Location:</b> (textures/common/clip)\r
806 \r
807 <br><b>Color:</b> Translucent lavender\r
808 \r
809 <br><b>Game Function:</b> Works like an area portal, but for the bot\r
810 navigation file only. Cluster portal is used by the bspc utility to\r
811 subdivide the map into smaller areas for calculating bot\r
812 navigation. Appendix C: Bot Navigation Files contains the specific\r
813 details for using cluster portal texture entities.\r
814 \r
815 <p><strong>Cushion</strong>\r
816 \r
817 <br><b>Location:</b> (textures/common/clusterportal)\r
818 \r
819 <br><b>Color:</b> Translucent pale aqua\r
820 \r
821 <br><b>Game Function:</b> A player falling on this does not take\r
822 damage. They also don't make a "landing" sound, so use with\r
823 caution.\r
824 \r
825 <p><strong>Do Not Enter</strong>\r
826 \r
827 <br><b>Location:</b> (textures/common/donotenter)\r
828 \r
829 <br><b>Color:</b> Transparent Pale Orange\r
830 \r
831 <br><b>Game Function:</b> It is a tool used to solve bot navigation\r
832 problems. Use it like a clip brush, but sparingly. When you observe\r
833 bots doing stupid things in your map, try to block off the area\r
834 with this texture. The Bot Navigation Files appendix contains the\r
835 specific details for using the Do Not Enter texture entity.\r
836 \r
837 <p><strong>Hint</strong>\r
838 \r
839 <br><b>Location:</b> (textures/common/clusterportal)\r
840 \r
841 <br><b>Color:</b> Transparent Yellow Green\r
842 \r
843 <br><b>Game Function:</b> Helps determine the vis portals. It is\r
844 used as a suggestion to the compiler during the vis phase, when the\r
845 world is subdivided. Generally speaking, they are used to correct\r
846 vis problems, whose chief symptom is the "hall of mirrors" effect\r
847 seen during game play. These can often be corrected by careful\r
848 placement of a hint brush. If you fill the volume where the\r
849 error is seen or the volume adjacent to it, the problem may be\r
850 corrected in the next compile. This is really more art than\r
851 science.\r
852 \r
853 <p><strong>Invisible</strong>\r
854 \r
855 <br><b>Location:</b> (textures/common/noimpact)\r
856 \r
857 <br>Color: \r
858 \r
859 <br><b>Game Function:</b> This was used to create a surface that\r
860 would be marked by weapon fire, but would not be drawn in the\r
861 world. This was created specifically to resolve a problem where\r
862 func_static brushes were being used to replace floor textures that\r
863 marked the location of weapons in Q3DM8. Because the rocket\r
864 launcher was located in different places between the team and the\r
865 deathmatch games, the designer wanted to make floor markers that\r
866 would not only change between game types, but would be marked like\r
867 adjacent floor pieces.\r
868 \r
869 <p><strong>Nodrawnonsolid</strong>\r
870 \r
871 <br><b>Location:</b> (textures/common/trigger)\r
872 \r
873 <br><b>Color:</b> Opaque light yellow\r
874 \r
875 <br><b>Game Function:</b> This is the same as nodraw.\r
876 \r
877 <p><strong>Noimpact</strong>\r
878 \r
879 <br><b>Location:</b> (textures/common/noimpact)\r
880 \r
881 <br><b>Color:</b> black\r
882 \r
883 <br><b>Game Function:</b> Used to create a surface which does not\r
884 block weapon fire.\r
885 \r
886 <br>Weapon fire will pass through this. This usually used as a\r
887 shader key on other textures.\r
888 \r
889 <p><strong>Origin</strong>\r
890 \r
891 <br><b>Location:</b> (textures/common/origin)\r
892 \r
893 <br><b>Color:</b> Opaque Orange\r
894 \r
895 <br><b>Game Function:</b> Used to create origin point in moving\r
896 b_models, such as trains, plats, and rotating objects. This\r
897 texture, applied to a square or rectangular brush, is used to\r
898 create the point of origin for moving b_models, such as trains,\r
899 plats, and rotating objects. It is used by func_trains as the point\r
900 that passes through path entities and the source for sound\r
901 attachment\r
902 \r
903 <p><strong>Skip</strong>\r
904 \r
905 <br><b>Location:</b> (textures/common/skip)\r
906 \r
907 <br><b>Color:</b> Transparent yellow\r
908 \r
909 <br><b>Game Function:</b> Do not use in Q3A. This texture was used\r
910 in Quake 2 maps to discard sides of hint brushes. It is\r
911 nonfunctional in Q3A.\r
912 \r
913 <p><strong>Slick</strong>\r
914 \r
915 <br><b>Location:</b> (textures/common/trigger)\r
916 \r
917 <br><b>Color:</b> Translucent Pale Blue\r
918 \r
919 <br><b>Game Function:</b> Not stick coating for map surfaces.\r
920 Reduces friction. Use like a very thin clip brush over surfaces you\r
921 want to be low friction.\r
922 \r
923 <p><strong>Trigger</strong>\r
924 \r
925 <br><b>Location:</b> (textures/common/trigger)\r
926 \r
927 <br><b>Color:</b> Transparent Dark Yellow\r
928 \r
929 <br><b>Game Function:</b> Used to make trigger brushes.\r
930 \r
931 <p><strong>Weapon Clip</strong>\r
932 \r
933 <br><b>Location:</b> (textures/common/weap_clip)\r
934 \r
935 <br><b>Color:</b> Transparent Red\r
936 \r
937 <br><b>Game Function:</b> This version of the clip brush only stops\r
938 weapon projectiles from passing through it. No marks are left on\r
939 the surface.\r
940 \r
941 <br><b>Design Tip:</b> Use to create clip surfaces for map object\r
942 models.\r
943 <p align = "center"><a href = "../ch06/pg6_1.htm">Back</a> | <a href = "../index.htm">Home</a> | <a href = "../ch08/pg8_1.htm">Next</a>\r
944 </body>\r
945 </html>