home *** CD-ROM | disk | FTP | other *** search
/ Quark 3 / Quark3.iso / KATALOG / ARCHIV / TOOL / T041.ZIP / shaderattributes.def < prev    next >
Encoding:
Text File  |  2000-03-23  |  32.7 KB  |  525 lines

  1. // Preliminary SHADERATTRIBUTES.DEF file by Soultaker (soultaker@shader.gamepoint.net) - v1 (complete version)
  2.  
  3. skyparms <farbox> <cloudheight> <nearbox>
  4. {
  5.     info=Specifies how to use the surface as a sky, including an optional far box (stars, moon, etc), optional cloud layers with any shader attributes, and an optional near box (mountains in front of the clouds, etc).
  6.     { // farbox
  7.         info=Specifies a set of files to use as an environment box behind all cloud layers. Specify "-" for no farbox, or a file base name. A base name of "env/test" would look for files "env/test_rt.tga", "env/test_lf.tga", "env/test_ft.tga", "env/test_bk.tga", "env/test_up.tga", "env/test_dn.tga" to use as the right, left, front, back, up and down sides.
  8.         style=combo
  9.         default=-
  10.         { // -
  11.             option=-
  12.             info=Use a dash (-) to indicate that no farbox is to be used.
  13.         }
  14.     }
  15.     { // cloudheight
  16.         info=Controls apparent curvature of the cloud layers - lower numbers mean more curvature (and thus more distortion at the horizons). Higher height values create "flatter" skies with less horizon distortion. Think of height as the radius of a sphere on which the clouds are mapped. Good ranges are 64 to 256. The default value is 128. 
  17.         style=edit
  18.         default=128
  19.     }
  20.     { // nearbox
  21.         info=Specifies a set of files to use as an environment box on top of all cloud layers. Specify "-" for no nearbox, or a file base name. A base name of "env/test" would look for files "env/test_rt.tga", "env/test_lf.tga", "env/test_ft.tga", "env/test_bk.tga", "env/test_up.tga", "env/test_dn.tga" to use as the right, left, front, back, up and down sides.
  22.         style=combo
  23.         default=-
  24.         { // -
  25.             option=-
  26.             info=Use a dash (-) to indicate that no nearbox is to be used.
  27.         }
  28.     }
  29. }
  30.  
  31. cull <side>
  32. {
  33.     info=Every surface of a polygon has two sides, a front and a back. Typically, we only see the front or out side. For example, a solid block you only show the front side. In many applications we see both. For example, in water, you can see both front and a back. The same is true for things like grates and screens.
  34.     { // side
  35.         info=To cull means to remove. This parameter determines the type of face culling to apply. The default value is cull front if this keyword is not specified. However for items that should be inverted then the value back should be used. To disable culling, the value disable or none should be used. Only one cull instruction can be set for the shader.
  36.         style=list
  37.         default=front
  38.         { // front
  39.             option=front
  40.             info=The front or outside of the polygon is not drawn in the world. This is the default value. It is used if the keyword cull appears in the content instructions without a <side> value or if the keyword cull does not appear at all in the shader.
  41.         }
  42.         { // back
  43.             option=back
  44.             info=Cull back removes the back or inside of a polygon from being drawn in the world.
  45.         }
  46.         { // disable
  47.             option=disable
  48.             info=Neither side of the polygon is removed. Both sides are drawn in the game. Very useful for making panels or barriers that have no depth, such as grates, screens, metal wire fences and so on and for liquid volumes that the player can see from within. Also used for energy fields, sprites, and weapon effects (e.g.; plasma).
  49.         }
  50.         { // none
  51.             option=none
  52.             info=Neither side of the polygon is removed. Both sides are drawn in the game. Very useful for making panels or barriers that have no depth, such as grates, screens, metal wire fences and so on and for liquid volumes that the player can see from within. Also used for energy fields, sprites, and weapon effects (e.g.; plasma).
  53.         }
  54.     }
  55. }
  56.  
  57. deformvertexes wave <div> <func> <base> <amplitude> <phase> <freq>
  58. {
  59.     info=Designed for water surfaces, modifying the values differently at each point. It accepts the standard wave functions of the type sin, triangle, square, sawtooth or inversesawtooth. The "div" parameter is used to control the wave "spread" - a value equal to the tessSize of the surface is a good default value (tessSize is subdivision size, in game units, used for the shader when seen in the game world) .
  60.     { // div
  61.         info=This is roughly defined as the size of the waves that occur. It is measured in game units. Smaller values create a greater density of smaller wave forms occurring in a given area. Larger values create a lesser density of waves, or otherwise put, the appearance of larger waves. To look correct this value should closely correspond to the value (in pixels) set for tessSize (tessellation size) of the surface. A value of 100.0 is a good default value (which means your tessSize should be close to that for things to look "wavelike").
  62.         style=edit
  63.         default=100.0
  64.     }
  65.     { // func
  66.         info=This is the type of wave form being created.
  67.         style=list
  68.         { // sin
  69.             option=sin
  70.             info=Sin stands for sine wave, a regular smoothly flowing wave ranging from -1 to 1.
  71.         }
  72.         { // triangle
  73.             option=triangle
  74.             info=Triangle is a wave with a sharp ascent and a sharp decay, ranging from 0 to 1. It will make a choppy looking wave forms.
  75.         }
  76.         { // square
  77.             option=square
  78.             info=A square wave simply switches from -1 to 1 with no in-between.
  79.         }
  80.         { // sawtooth
  81.             option=sawtooth
  82.             info=In the sawtooth wave, the ascent is like a triangle wave from 0 to 1, but the decay cuts off sharply back to 0.
  83.         }
  84.         { // inversesawtooth
  85.             option=inversesawtooth
  86.             info=This is the reverse of the sawtooth: instant ascent to the peak value (1), then a triangle wave descent to the valley value (0). The phase on this goes from 1.0 to 0.0 instead of 0.0 to 1.0. This wave is particularly useful for additive cross-fades.
  87.         }
  88.     }
  89.     { // base
  90.         info=This is the distance, in game units that the apparent surface of the texture is displaced from the actual surface of the brush as placed in the editor. A positive value appears above the brush surface. A negative value appears below the brush surface. An example of this is the quad effect, which essentially is a shell with a positive base value to stand it away from the model surface and a 0 (zero) value for amplitude.
  91.         style=edit
  92.         default=0
  93.     }
  94.     { // amplitude
  95.         info=This is the height of the wave created, measured from the base. You will probably need to test and tweak this value to get it correct for each new shader stage. The greater the amplitude, the higher the wave peaks and the deeper the valleys.
  96.         style=edit
  97.     }
  98.     { // phase
  99.         info=This is a normalized value between 0.0 and 1.0. Changing phase to a non-zero value affects the point on the wave at which the wave form initially begins to be plotted. Example: In Sin or Triangle wave, a phase of 0.25 means it begins one fourth (25%) of the way along the curve, or more simply put, it begins at the peak of the wave. A phase of 0.5 would begin at the point the wave re-crosses the base line. A phase of 0.75 would be at the lowest point of the valley. If only one wave form is being used in a shader, a phase shift will probably not be noticed and phase should have a value of zero (0). However, including two or more stages of the same process in a single shader, but with the phases shifted can be used to create interesting visual effects. Example: using rgbGen in two stages with different colors and a 0.5 difference in phase would cause the manipulated texture to modulate between two distinct colors. Phase changes can also be used when you have two uses of the same effect near each other, and you don't want them to be synchronized. You would write a separate shader for each, changing only the phase value.
  100.         style=edit
  101.     }
  102.     { // freq
  103.         info=Frequency. This value is expressed as repetitions or cycles of the wave per second. A value of 1 would cycle once per second. A value of 10 would cycle 10 times per second. A value of 0.1 would cycle once every 10 seconds.
  104.         style=edit
  105.     }
  106. }
  107.  
  108. deformvertexes normal <div> <func> <base> <amplitude> <frequency>
  109. {
  110.     info=This deformation affects the normals of a vertex without actually moving it, which will effect later shader options like lighting and especially environment mapping. If the shader stages don't use normals in any of their calculations, there will be no visible effect. Putting values of 0.1 t o 0.5 in Amplitude and 1.0 to 4.0 in the Frequency can produce some satisfying results. Some things that have been done with it: A small fluttering bat, falling leaves, rain, flags.
  111.     { // div
  112.         info=This is roughly defined as the size of the waves that occur. It is measured in game units. Smaller values create a greater density of smaller wave forms occurring in a given area. Larger values create a lesser density of waves, or otherwise put, the appearance of larger waves. To look correct this value should closely correspond to the value (in pixels) set for tessSize (tessellation size) of the texture. A value of 100.0 is a good default value (which means your tessSize should be close to that for things to look "wavelike").
  113.         style=edit
  114.         default=100.0
  115.     }
  116.     { // func
  117.         info=This is the type of wave form being created.
  118.         style=list
  119.         { // sin
  120.             option=sin
  121.             info=Sin stands for sine wave, a regular smoothly flowing wave ranging from -1 to 1.
  122.         }
  123.         { // triangle
  124.             option=triangle
  125.             info=Triangle is a wave with a sharp ascent and a sharp decay, ranging from 0 to 1. It will make a choppy looking wave forms.
  126.         }
  127.         { // square
  128.             option=square
  129.             info=A square wave simply switches from -1 to 1 with no in-between.
  130.         }
  131.         { // sawtooth
  132.             option=sawtooth
  133.             info=In the sawtooth wave, the ascent is like a triangle wave from 0 to 1, but the decay cuts off sharply back to 0.
  134.         }
  135.         { // inversesawtooth
  136.             option=inversesawtooth
  137.             info=This is the reverse of the sawtooth: instant ascent to the peak value (1), then a triangle wave descent to the valley value (0). The phase on this goes from 1.0 to 0.0 instead of 0.0 to 1.0. This wave is particularly useful for additive cross-fades.
  138.         }
  139.     }
  140.     { // base
  141.         info=This is the distance, in game units that the apparent surface of the texture is displaced from the actual surface of the brush as placed in the editor. A positive value appears above the brush surface. A negative value appears below the brush surface. An example of this is the Quad effect, which essentially is a shell with a positive base value to stand it away from the model surface and a 0 (zero) value for amplitude.
  142.         style=edit
  143.         default=0
  144.     }
  145.     { // amplitude
  146.         info=This is the height of the wave created, measured from the base. You will probably need to test and tweak this value to get it correct for each new shader stage. The greater the amplitude, the higher the wave peaks and the deeper the valleys.
  147.         style=edit
  148.     }
  149.     { // freq
  150.         info=Frequency. This value is expressed as repetitions or cycles of the wave per second. A value of 1 would cycle once per second. A value of 10 would cycle 10 times per second. A value of 0.1 would cycle once every 10 seconds.
  151.         style=edit
  152.     }
  153. }
  154.  
  155. deformvertexes bulge <s> <t> <speed>
  156. {
  157.     info=This forces a bulge to move along the given s and t directions. Designed for use on curved pipes.
  158.     { // width
  159.         info=S-direction for the bulge to move along.
  160.         style=edit
  161.     }
  162.     { // height
  163.         info=T-direction for the bulge to move along.
  164.         style=edit
  165.     }
  166.     { // speed
  167.         info=The speed at which the bulge will move along the given direction.
  168.         style=edit
  169.     }
  170. }
  171.  
  172. deformvertexes move <x> <y> <z> <func> <base> <amplitude> <phase> <freq>
  173. {
  174.     info=This keyword is used to make a brush, curve patch or md3 model appear to move together as a unit. The <x> <y> and <z> values are the distance and direction in game units the object appears to move relative to it's point of origin in the map. It must be noted that an object made with this shader does not actually change position, it only appears to. 
  175.     { // x
  176.         info=The x-direction to move along.
  177.         style=edit
  178.     }
  179.     { // y
  180.         info=The x-direction to move along.
  181.         style=edit
  182.     }
  183.     { // z
  184.         info=The x-direction to move along.
  185.         style=edit
  186.     }
  187.     { // func
  188.         info=This is the type of wave form being created.
  189.         style=list
  190.         { // sin
  191.             option=sin
  192.             info=Sin stands for sine wave, a regular smoothly flowing wave ranging from -1 to 1.
  193.         }
  194.         { // triangle
  195.             option=triangle
  196.             info=Triangle is a wave with a sharp ascent and a sharp decay, ranging from 0 to 1. It will make a choppy looking wave forms.
  197.         }
  198.         { // square
  199.             option=square
  200.             info=A square wave simply switches from -1 to 1 with no in-between.
  201.         }
  202.         { // sawtooth
  203.             option=sawtooth
  204.             info=In the sawtooth wave, the ascent is like a triangle wave from 0 to 1, but the decay cuts off sharply back to 0.
  205.         }
  206.         { // inversesawtooth
  207.             option=inversesawtooth
  208.             info=This is the reverse of the sawtooth: instant ascent to the peak value (1), then a triangle wave descent to the valley value (0). The phase on this goes from 1.0 to 0.0 instead of 0.0 to 1.0. This wave is particularly useful for additive cross-fades.
  209.         }
  210.     }
  211.     { // base
  212.         info=This is the distance, in game units that the apparent surface of the texture is displaced from the actual surface of the brush as placed in the editor. A positive value appears above the brush surface. A negative value appears below the brush surface. An example of this is the Quad effect, which essentially is a shell with a positive base value to stand it away from the model surface and a 0 (zero) value for amplitude.
  213.         style=edit
  214.         default=0
  215.     }
  216.     { // amplitude
  217.         info=This is the height of the wave created, measured from the base. You will probably need to test and tweak this value to get it correct for each new shader stage. The greater the amplitude, the higher the wave peaks and the deeper the valleys.
  218.         style=edit
  219.     }
  220.     { // phase
  221.         info=This is a normalized value between 0.0 and 1.0. Changing phase to a non-zero value affects the point on the wave at which the wave form initially begins to be plotted. Example: In Sin or Triangle wave, a phase of 0.25 means it begins one fourth (25%) of the way along the curve, or more simply put, it begins at the peak of the wave. A phase of 0.5 would begin at the point the wave re-crosses the base line. A phase of 0.75 would be at the lowest point of the valley. If only one wave form is being used in a shader, a phase shift will probably not be noticed and phase should have a value of zero (0). However, including two or more stages of the same process in a single shader, but with the phases shifted can be used to create interesting visual effects. Example: using rgbGen in two stages with different colors and a 0.5 difference in phase would cause the manipulated texture to modulate between two distinct colors. Phase changes can also be used when you have two uses of the same effect near each other, and you don't want them to be synchronized. You would write a separate shader for each, changing only the phase value.
  222.         style=edit
  223.     }
  224.     { // freq
  225.         info=Frequency. This value is expressed as repetitions or cycles of the wave per second. A value of 1 would cycle once per second. A value of 10 would cycle 10 times per second. A value of 0.1 would cycle once every 10 seconds.
  226.         style=edit
  227.     }
  228. }
  229.  
  230. deformvertexes autosprite
  231. {
  232.     info=This function can be used to make any given triangle quad (pair of triangles that form a square rectangle) automatically behave like a sprite without having to make it a separate entity. This means that the "sprite" on which the texture is placed will rotate to always appear at right angles to the player's view as a sprite would. Any four-sided brush side, flat patch, or pair of triangles in an .md3 model can have the autosprite effect on it. The brush face containing a texture with this shader keyword must be square. Design note: this is best used on objects that would appear the same regardless of viewing angle. An example might be a glowing light flare.
  233. }
  234.  
  235. deformvertexes autosprite2
  236. {
  237.     info=This function can be used to make any given triangle quad (pair of triangles that form a square rectangle) automatically behave like a sprite without having to make it a separate entity. But instead of rotating around it's center as with 'deformVertexes autosprite' it only rotates around the middle of its longest axis. This allows you to make a pillar of fire that you can walk around, or an energy beam stretched across the room.
  238. }
  239.  
  240. fogparms ( <red value> <green value> <blue value> ) <distance to opaque> 
  241. {
  242.     info=This describes how to render the fog on the surfaces. You must also specify "surfaceParm fog" to cause q3map to identify the surfaces inside the volume. The fog volume can only have one surface visible (from outside the fog). Fog must be made of one brush. It cannot be made of adjacent brushes. Fog brushes must be axial. This means that only square or rectangular brushes may contain fog, and those must have their edges drawn along the axes of the map grid (all 90 degree angles).
  243.     { // red value
  244.         info=This specifies the normalized value (range 0.0 to 1.0) for the red component of the fog's color. 
  245.         style=edit
  246.     }
  247.     { // green value
  248.         info=This specifies the normalized value (range 0.0 to 1.0) for the green component of the fog's color. 
  249.         style=edit
  250.     }
  251.     { // blue value
  252.         info=This specifies the normalized value (range 0.0 to 1.0) for the blue component of the fog's color. 
  253.         style=edit
  254.     }
  255.     { // distance to opaque
  256.         info=This is the distance, in game units, until the fog becomes totally opaque, as measured from the point of view of the observer. By making the height of the fog brush shorter than the distance to opaque, the apparent density of the fog can be reduced (because it never reaches the depth at which full opacity occurs).
  257.         style=edit
  258.     }
  259. }
  260.  
  261. nopicmip
  262. {
  263.     info=This causes the texture to ignore user-set values for the r_picmip cvar command. The image will always be high resolution. Example: Used to keep images and text in the heads up display from blurring when user optimizes the game graphics.
  264. }
  265.  
  266. nomipmap
  267. {
  268.     info=This implies nopicmip, but also prevents the generation of any lower resolution mipmaps for use by the 3d card. This will cause the texture to alias when it gets smaller, but there are some cases where you would rather have this than a blurry image. Sometimes thin slivers of triangles force things to very low mipmap levels, which leave a few constant pixels on otherwise scrolling special effects.
  269. }
  270.  
  271. polygonoffset
  272. {
  273.     info=Surfaces rendered with the polygonOffset keyword are rendered slightly off the polygon's surface. This is typically used for wall markings and "decals." The distance between the offset and the polygon is fixed. It is not a variable in quark III Arena.
  274. }
  275.  
  276. portal
  277. {
  278.     info=Specifies that this texture is the surface for a portal or mirror. In the game map, a portal entity must be placed directly in front of the texture (within 64 game units). All this does is set "sort portal", so it isn't needed if you specify that explicitly.
  279. }
  280.  
  281. sort <value>
  282. {
  283.     info=Use this keyword to fine-tune the depth sorting of shaders as they are compared against other shaders in the game world. The basic concept is that if there is a question or a problem with shaders drawing in the wrong order against each other, this allows the designer to create a hierarchy of which shader draws in what order. The default behavior is to put all blended shaders in sort "additive" and all other shaders in sort "opaque", so you only need to specify this when you are trying to work around a sorting problem with multiple transparent surfaces in a scene.
  284.     { // value
  285.         info=This specifies the type of surface this surface should be treated as when depth sorting.
  286.         style=list
  287.         default=opaque
  288.         { // portal
  289.             option=portal
  290.             info=This surface is a portal, it draws over every other shader seen inside the portal, but before anything in the main view.
  291.         }
  292.         { // sky
  293.             option=sky
  294.             info=Typically, the sky is the farthest surface in the game world. Drawing this after other opaque surfaces can be an optimization on some cards. This currently has the wrong value for this purpose, so it doesnÆt do much of anything.
  295.         }
  296.         { // opaque
  297.             option=opaque
  298.             info=This surface is opaque (rarely needed since this is the default with no blendfunc).
  299.         }
  300.         { // banner
  301.             option=banner
  302.             info=This surface is a little transparent, but very close to walls.
  303.         }
  304.         { // underwater
  305.             option=underwater
  306.             info=This surface is drawn behind normal transparent surfaces.
  307.         }
  308.         { // additive
  309.             option=additive
  310.             info=This is a normal transparent surface (default for shaders with blendfuncs).
  311.         }
  312.         { // nearest
  313.             option=nearest
  314.             info=This shader should always sort closest to the viewer, e.g. muzzle flashes and blend blobs
  315.         }
  316.     }
  317. }
  318.  
  319. tesssize <size>
  320. {
  321.     info=The tessSize shader controls the tessellation size (how finely a surface is chopped up in to triangles), in game units, of the surface. This is only applicable to solid brushes, not curves, and is generally only used on surfaces that are flagged with the deformVertexes keyword. Abuse of this can create a huge number of triangles. This happens during q3map processing, so maps must be reprocessed for changes to take effect.
  322.     { // amount
  323.         info=The size, in game units, of each triangle.
  324.         style=edit
  325.     }
  326. }
  327.  
  328. q3map_backshader <shadername>
  329. {
  330.     info=This allows a brush to use a different shader when you are inside it looking out. By way of example, this would allow a water brush (or other) surfaces to have a different sort order (see sort above) or appearance when seen from the inside.
  331.  
  332.     { // shadername
  333.         info=Name of the shader to use on the backside of the surface.    
  334.     }
  335. }
  336.  
  337. q3map_globaltexture
  338. {
  339.     info=Use this shader in the global keyword commands whenever the tcMod scale function is used in one of the later render stages. Many problems with getting shader effects to work across multiple adjacent brushes are a result of the way q3map optimizes texture precision. This option resolves that, but at the expense of some precision of the textures when they are far away from the origin of the map.
  340. }
  341.  
  342. q3map_sun ( <red value> <green value> <blue value> ) <intensity> <degrees> <elevation>
  343. {
  344.     info=This keyword in a sky shader will create the illusion of light cast into a map by a single, infinitely distance light source (sun, moon, hellish fire, etc.). This is only processed during the lighting phase of q3map. Sky shaders should probably still have a q3map_surfacelight value. The "sun" gives a strong directional light, but doesn't necessarily give the fill light needed to soften and illuminate shadows. Skies with clouds should probably have a weaker q3map_sun value and a higher q3map_surfacelight value. Heavy clouds diffuse light and weaken shadows. The opposite is true of a cloudless or nearly cloudless sky. In such cases, the "sun" or "moon" will cast stronger, shadows that have a greater degree of contrast.
  345.     { // red value
  346.         info=This specifies the normalized value (range 0.0 to 1.0) for the red component of the fog's color. 
  347.         style=edit
  348.     }
  349.     { // green value
  350.         info=This specifies the normalized value (range 0.0 to 1.0) for the green component of the fog's color. 
  351.         style=edit
  352.     }
  353.     { // blue value
  354.         info=This specifies the normalized value (range 0.0 to 1.0) for the blue component of the fog's color. 
  355.         style=edit
  356.     }
  357.     { // intensity
  358.         info=Intensity is the brightness of the generated light. A value of 100 is a fairly bright sun. The intensity of the light falls off with angle but not distance.
  359.         style=edit
  360.         default=100
  361.     }
  362.     { // degrees
  363.         info=Degrees is the angle relative to the directions on the map file. A setting of 0 degrees equals east. 90 is north, 180 is west and 270 is south.
  364.         style=edit
  365.     }
  366.     { // elevation
  367.         info=Elevation is the distance, measured in degrees from the horizon (z value of zero in the map file). An elevation of 0 is sunrise/sunset. An elevation of 90 is noon
  368.         style=edit
  369.     }
  370. }
  371.  
  372. q3map_surfacelight <light value>
  373. {
  374.     info=The texture gives off light equal to the <light value> set for it. The relative surface area of the texture in the world affects the actual amount of light that appears to be radiated. To give off what appears to be the same amount of light, a smaller texture must be significantly brighter than a larger texture. Unless the qer_lightimage keyword is used to select a different source for the texture's light color information, the color of the light will be the averaged color of the texture.
  375.     { // light value
  376.         info=The amount of light to give off.
  377.     }
  378. }
  379.  
  380. q3map_lightimage <texture>
  381. {
  382.     info=The keyword q3map_lightimage generates lighting from the average color of the TGA image specified by the <texture> parameter.
  383.     { // texture
  384.         info=The relative filepath of the texture to use for calculcating the average color.
  385.         style=edit
  386.     }
  387. }
  388.  
  389. q3map_lightsubdivide <value> 
  390. {
  391.     info=This allows the user to define how large, or small to make the subdivisions (triangles) in a textured surface, particularly aimed at light-emitting textures like skies. It defaults to 120 game units, but can be made larger (256 or 512) for sky boxes or smaller for light surfaces at the bottoms of cracks. This can be a dominant factor in processing time for q3map lighting. 
  392.     { // value
  393.         info=Size of each triangle in game units.
  394.         style=edit
  395.         default=120
  396.     }
  397. }
  398.  
  399. surfaceparm <parm>
  400. {
  401.     info=This specifies a specific parameter for this surface. More than one surfaceparms can be used.
  402.     { // parm
  403.         info=The surface parameter you want to apply to this surface.
  404.         style=list
  405.         { // alphashadow
  406.             option=alphashadow
  407.             info=This keyword applied to a texture on a brush, patch or model will cause the lighting phase of the q3map process to use the textureÆs alpha channel as a mask for casting static shadows in the game world. Alphashadow does not work well with fine line detail on a texture. Fine lines may not cast acceptable shadows. It appears to work best with well-defined silhouettes and wider lines within the texture. Most of our tattered banners use this to cast tattered shadows.
  408.         }
  409.         { // areaportal
  410.             option=areaportal
  411.             info=A brush marked with this keyword functions as an area portal, a break in the Q3MAP tree. It is typically placed on a very thin brush placed inside a door entity (but is not a part of that entity). The intent is to block the game from processing surface triangles located behind it when the door is closed. It is also used by the BSPC (bot area file creation compiler) in the same manner as a cluster portal. The brush must touch all the structural brushes surrounding the areaportal.
  412.         }
  413.         { // clusterportal
  414.             option=clusterportal
  415.             info=A brush marked with this keyword function creates a subdivision of the area file (.aas) used by the bots for navigation. It is typically placed in locations that are natural breaks in a map, such as entrances to halls, doors, tunnels, etc. The intent is keep the bot from having to process the entire map at once. As with the the areaportal parameter, the affected brush must touch all the structural brushes surrounding the areaportal.
  416.         }
  417.         { // donotenter
  418.             option=donotenter
  419.             info=Read as "do not enter". Like clusterportal, this is a bot-only property. A brush marked with donotenter will not affect non-bot players, but bots will not enter it. It should be used only when bots appear to have difficulty navigating around some map features.
  420.         }
  421.         { // flesh
  422.             option=flesh
  423.             info=This will cue different sounds (in a similar manner to metalsteps) and cause blood to appear instead of bullet impact flashes.
  424.         }
  425.         { // fog
  426.             option=fog
  427.             info=Fog defines the brush as being a fog brush. This is a Q3MAP function that chops and identifies all geometry inside the brush. The general shader keyword fogparms must also be specified to tell how to draw the fog.
  428.         }
  429.         { // lava
  430.             option=lava
  431.             info=Assigns to the texture the game properties set for lava. This affects both the surface and the content of a brush.
  432.         }
  433.         { // metalsteps
  434.             option=metalsteps
  435.             info=The player sounds as if he is walking on clanging metal steps or gratings.
  436.         }
  437.         { // nodamage
  438.             option=nodamage
  439.             info=The player takes no damage if he falls on this surface.
  440.         }
  441.         { // nodlight
  442.             option=nodlight
  443.             info=No dynamic lighting. A surface containing this parameter will not be affected or lit by dynamic lights, such as weapon effects. And example in quark III Arena would be solid lava.
  444.         }
  445.         { // nodraw
  446.             option=nodraw
  447.             info=A texture marked with nodraw will not visually appear in the game world. Most often used for triggers, clip brushes, origin brushes, and so on.
  448.         }
  449.         { // nodrop
  450.             option=nodrop
  451.             info=When a player dies inside a volume (brush) marked nodrop, no weapon is dropped. The intended use is for "Pits of Death". Have a kill trigger inside a nodrop volume, and when the players die there, they won't drop their weapons. The intent is to prevent unnecessary polygon pileups on the floors of pits.
  452.         }
  453.         { // noimpact
  454.             option=noimpact
  455.             info=World entities will not impact on this texture. No explosions occur when projectiles strike this surface and no marks will be left on it. Sky textures are usually marked with this texture so those projectiles will not hit the sky and leave marks.
  456.         }
  457.         { // nomarks
  458.             option=nomarks
  459.             info=Projectiles will explode upon contact with this surface, but will not leave marks. Blood will also not mark this surface. This is useful to keep lights from being temporarily obscured by battle damage. Use this on any surface with a deformvertexes attribute. Otherwise, the marks will appear on the unmodified surface location of the texture and the surface wriggles and squirms through the marks.
  460.         }
  461.         { // nolightmap
  462.             option=nolightmap
  463.             info=This texture does not have a lightmap phase. It is not affected by the ambient lighting of the world around it. It does not require the addition of an rgbgen identity keyword in that stage.
  464.         }
  465.         { // nosteps
  466.             option=nosteps
  467.             info=The player makes no sound when walking on this texture.
  468.         }
  469.         { // nonsolid
  470.             option=nonsolid
  471.             info=This attribute indicates a brush, which does not block the movement of entities in the game world. It applied to triggers, hint brushes and similar brushes. This affects the content of a brush.
  472.         }
  473.         { // origin
  474.             option=origin
  475.             info=Used on the "origin" texture. Rotating entities need to contain an origin brush in their construction. The brush must be rectangular (or square). The origin point is the exact center of the origin brush.
  476.         }
  477.         { // playerclip
  478.             option=playerclip
  479.             info=Blocks player movement through a nonsolid texture. Other game world entities can pass through a brush marked playerclip. The intended use for this is to block the player but not block projectiles like rockets.
  480.         }
  481.         { // slick
  482.             option=slick
  483.             info=This surfaceparm included in a texture should give it significantly reduced friction.
  484.         }
  485.         { // slime
  486.             option=slime
  487.             info=Assigns to the texture the game properties for slime. This affects both the surface and the content of a brush.
  488.         }
  489.         { // structural
  490.             option=structural
  491.             info=This surface attribute causes a brush to be seen by the Q3MAP process as a possible break-point in a BSP tree. It is used as a part of the shader for the hint texture. Generally speaking, any opaque texture not marked as detail is by default, structural, so you shouldn't need to specify this.
  492.         }
  493.         { // trans
  494.             option=trans
  495.             info=Tells q3map that pre-computed visibility should not be blocked by this surface. Generally, any shaders that have blendfuncs should be marked as surfaceparm trans.
  496.         }
  497.         { // water
  498.             option=water
  499.             info=Assigns to the surface the game properties for water.
  500.         }
  501.     }    
  502. }
  503.  
  504. qer_editorimage <texture>
  505. {
  506.     info=This keyword creates a shader name in memory, but in the editor, it displays the TGA art image specified in qer_editorimage. The editor maps a texture using the size attributes of the TGA file used for the editor image. When that editor image represents a shader, any texture used in any of the shader stages will be scaled up or down to the dimensions of the editor image. If a 128x128 pixel image is used to represent the shader in the editor, then a 256x256 image used in a later stage will be shrunk to fit. A 64x64 image would be stretched to fit. Be sure to check this on bouncy, acceleration, and power-up pads placed on surfaces other than 256 x 256. Use "tcmod scale" to change the size of the stretched texture. Remember that "tcmod scale 0.5 0.5" will double your image, while "tcmod scale 2 2" will halve it.
  507.     { // texture
  508.         info=The relative filepath of the texture to use in the editor.
  509.         style=edit
  510.     }
  511. }
  512.  
  513. qer_nocarve
  514. {
  515.     info=A brush marked with this instruction will not be affected by CSG subtract functions. It is especially useful for water and fog textures.
  516. }
  517.  
  518. qer_trans <amount>
  519. {
  520.     info=This attribute defines the amount of transparency that a brush will have when seen in the editor (no effect on game rendering at all).
  521.     { // amount
  522.         info=This is the amount of transarency, in a range from 0 (100% transparent) to 1 (opaque). For example, "qer_trans 0.2" means the brush is 20% opaque and nearly invisible.
  523.     }
  524. }
  525.