first commit

main
Marco Cawthorne 3 years ago
commit 3123f35681

@ -0,0 +1,73 @@
<html>
<head>
<title>Particle Manual: Introduction</title>
<link rel = "stylesheet" type = "text/css" href = "../styles/design.css">
</head>
<body>
<h1 class = "MsoTitle">Particle Manual</h1>
<hr>
<h1><a name = "intro">1 Introduction</a></h1>
The particle system defined in the engine encompasses more than just flying
sprites.
<br>
The particle system is a pipeline through which models, beams and
trail effects can be defined and utilized by the game-logic without having to
know how to program a single line of code.
<p>In this document we'll go over the conventions and commands you need to look
at if you want to create particle effects.
<h2><a name = "what">1.1 What is a particle config?</a></h2>
Particle configs short text scripts that define the properties of a particle
effect as it appears and interacts in a game world.
<br>
For example, it defines which textures and shapes are used and if they emit
sound, light or collide with the geometry around them.
<p>Particle configs are located in the particles/ directory, using the '.cfg'
file extension.
<p>Contained within a particle config we can define multiple effects of similar
nature. Let's look at the particle config: 'particles/volume.cfg' which as of
this writing only contains one entry:
<p><pre class = "type">
r_part dustmote
{
texture ball
type normal
count 1
blend add
rgbf 0 0 0
alpha 0
rampmode lerp
ramp 0 0 0 0 0.5
ramp 0 0 0 0 0.5
ramp 0 0 0 0 0.5
ramp 255 255 190 0.5 0.5
ramp 0 0 0 0 0.5
die 10 5
gravity 1
scalefactor 0
}
</pre>
<p>This is a more complex material, dealing with pre-programmed color and alpha
changes over time to create the effect of dust traveling inside a volume.
<h2><a name = "conventions">1.2 Particle Name &amp; File Conventions</a></h2>
The first line tells the engine that we're defining a new particle effect with
the name 'dustmote'.
<br>
As this effect is defined in the file 'volume.cfg', the
name by which this specific effect will be accessible is 'volume.dustmote'.
<p align = "center">Back | <a href = "../index.html">Home</a> | <a href = "../ch02/pg2_1.htm">Next</a>
</body>
</html>

@ -0,0 +1,162 @@
<html>
<head>
<title>Particle Manual: General Keywords</title>
<link rel = "stylesheet" type = "text/css" href = "../styles/design.css">
</head>
<body>
<h1 class = "MsoTitle">Particle Manual</h1>
<hr>
<h1>2 General Keywords</h1>
<h2><a name = "type">2.1 type &lt;mode&gt;</a></h2>
<p><pre class = "type">
How the particles look.
Mode may be:
beam: valid only for trails. Particles form a single textured beam acting as nodes along it.
spark: particles are lines, their length depending upon their speed.
sparkfan: particles are non-planar triangle fans, their length depending upon their speed.
texturedspark: textured particles are aligned along their direction of movement, their length depending upon their speed, width equal to their scale.
cdecal/decal: particles are spawned only upon bsp geometry. They are clipped by it.
udecal: unclipped decal. exact semantics are subject to change.
normal/*default*: Particles are regular, rotating, 2d images.
</pre>
<h2><a name = "count">2.2 count &lt;min&gt; &lt;max&gt;</a></h2>
<p><pre class = "type">
Point/box effects only (not trails or beams)
Specifies how many particles are spawned per effect (some classic effects contain an extra scaler which is multiplied by the resulting value)
</pre>
<h2><a name = "assoc">2.3 assoc &lt;effectname&gt;</a></h2>
<p><pre class = "type">
Specifies another effect to spawn at the same time that this effect is spawned.
Thus allowing two sets of particles from one effect.
</pre>
<h2><a name = "die">2.4 die &lt;maximum age&gt; &lt;minimum age&gt;</a></h2>
<p><pre class = "type">
Specifies the maximum age of the particle, in seconds.
</pre>
<h2><a name = "spawnmode">2.5 spawnmode &lt;mode&gt; [arg1] [arg2]</a></h2>
<p><pre class = "type">
This affects how particles are positioned when they first spawn, and their initial velocities.
For point effects, mode may be one of:
box: simple axially aligned box of particles.
circle: particles spawn within a ball with uniform distance from the center. none will appear in the middle.
arg1: percentage of the circle to cover. a value of 5 will go around the circle 5 separate times. this can be used for weird beam effects.
areaspread: the radius of the ball
areaspreadvert: the height of the ball. if 0, will be a flat circle
ball: particles spawn randomly within a ball.
areaspread: the radius of the ball
areaspreadvert: the height of the ball. if 0, will be a flat circle.
telebox: matches quake's telebox
lavasplash: like chthon's lava splash
uniformcircle: particles are spawned in a circle with uniform distance between and from the center. z=0.
syncfield: particles spawn at predictable locations based upon time within a rough sphere. Only useful for effects that are regenerated+replaced every frame.
distball:
*default*: regular box. particles are spawned inside an axially aligned box.
For trail effects, mode may be one of:
spiral: particles are given velocities perpendicular to the direction based on the distance moved.
tracer: particles spawn with alternating horizontal velocities (a wake effect).
*default*: particles spawn as a regular trail.
</pre>
<h2><a name = "clippeddecal">2.6 clippeddecal &lt;mask&gt; [match]</a></h2>
<p><pre class = "type">
Implies 'type decal'.
The two extra args allow you to spawn these decals ONLY on surfaces with matching surfaceflags.
Separation of mask+match allows you to create many descrete surface types instead of being limited to 32 bits/types.
</pre>
<h2><a name = "spawntime">2.7 spawntime &lt;value&gt;</a></h2>
<h2><a name = "spawnchance">2.8 spawnchance &lt;value&gt;</a></h2>
<h2><a name = "emit">2.9 emit &lt;effectname&gt;</a></h2>
<p><pre class = "type">
Specifies the effect to periodically emit.
</pre>
<h2><a name = "emitinterval">2.10 emitinterval &lt;min&gt;</a></h2>
<p><pre class = "type">
Particles will not emit additional effects for this duration after emitting one.
</pre>
<h2><a name = "emitintervalrand">2.11 emitintervalrand &lt;extra&gt;</a></h2>
<p><pre class = "type">
FIXME: fold into emitinterval
</pre>
<h2><a name = "emitstart">2.12 emitstart &lt;seconds&gt;</a></h2>
<p><pre class = "type">
Prevents the particle from emitting anything for this duration when it first spawns.
</pre>
<h2><a name = "perframe">2.13 perframe</a></h2>
<p><pre class = "type">
Apply inverse frametime to count (causes emits to be per frame).
</pre>
<h2><a name = "averageout">2.14 averageout</a></h2>
<p><pre class = "type">
Average trail points from start to end, useful with t_lightning, etc
</pre>
<h2><a name = "nostate">2.15 nostate</a></h2>
<p><pre class = "type">
Causes the particle system to ignore all state information.
</pre>
<h2><a name = "sound">2.16 sound &lt;name&gt; [options]</a></h2>
<p><pre class = "type">
Plays a sound when the effect is spawned.
Only ONE sound will be used, picked randomly from the included sounds according to their weights.
Options are:
vol=
attn=
pitch=
delay=
weight=
</pre>
<h2><a name = "model">2.17 model &lt;name&gt; [options]</a></h2>
<p><pre class = "type">
Spawns sprites or models that fly away with random angles and run through
some frame sequence. handy for simple gib effects.
Options are:
frame=
framestart=
framecount=
frameend=
frames=
framerate=
skin=
alpha=
scalemin=
scalemax=
trail=
orient
additive
transparent
fullbright
shadow
noshadow
</pre>
<h2><a name = "viewspace">2.18 viewspace [frac]</a></h2>
<p><pre class = "type">
Specifies that this particle type should move relative to the camera.
Should not normally be used in combination with clipping/bouncing.
Not compatible with most splitscreen games.
</pre>
<p align = "center"><a href = "../ch01/pg1_1.htm">Back</a> | <a href = "../index.html">Home</a> | <a href = "../ch03/pg3_1.htm">Next</a>
</body>
</html>

@ -0,0 +1,100 @@
<html>
<head>
<title>Particle Manual: Texture Keywords</title>
<link rel = "stylesheet" type = "text/css" href = "../styles/design.css">
</head>
<body>
<h1 class = "MsoTitle">Particle Manual</h1>
<hr>
<h1>3 Texture Keywords</h1>
<h2><a name = "texture">3.1 texture &lt;texturename&gt;</a></h2>
<p><pre class = "type">
Specifies to use an image named texturename for this effect.
</pre>
<h2><a name = "material">3.2 material &lt;materialname&gt;</a></h2>
<p><pre class = "type">
Specifies to use a named material.
This overrides blendmodes, as no new material will need to be created.
</pre>
<h2><a name = "tcoords">3.3 tcoords &lt;s1&gt; &lt;t1&gt; &lt;s2&gt; &lt;t2&gt; [tscale] [rsmax] [rsstep]</a></h2>
<p><pre class = "type">
Specifies to use a subsection of the image.
If 'tscale' is set, all units are divided by this. it is the virtual size of
your texture.
So a value of 1 means that your texture coords must be between 0 and 1.
But if it properly matches your texture's size, the coords are in pixels.
If 'rsmax' is present, each particle will use a random image.
These images must be on a single row in your particle font.
'rsstep' specifies the stride (gap from one to the next) in your particle
font, and is only needed if 'rsmax' is present and greater than 1.
</pre>
<h2><a name = "atlas">3.4 atlas count_in_each_axis firstidx [last]</a></h2>
<p><pre class = "type">
An alternative to tcoords.
The specified texture (or material) is to be considered as a grid of sprites (x*x, where x is specified in that first arg).
'firstidx' specifies the first image to use (horizontal THEN vertical).
'last' specifies the last image to use (inclusive). The engine will pick one at random. They should not span multiple rows.
</pre>
<h2><a name = "rotation">3.5 rotation &lt;startmin&gt; &lt;startmax&gt; &lt;speedmin&gt; &lt;speedmax&gt;</a></h2>
<p><pre class = "type">
The particle will start with a rotation rotated between 'startmin' and 'startmax'.
It will then rotate with some per-particle value randomly picked between the 'speedmin' + 'speedmax' values.
Should NOT be used on beam particles.
</pre>
<h2><a name = "beamtexstep">3.6 beamtexstep &lt;value&gt;</a></h2>
<p><pre class = "type">
Only valid if the effect is a beam.
Specifies the number of quake units per beam texture repitition.
</pre>
<h2><a name = "beamtexspeed">3.7 beamtexspeed &lt;value&gt;</a></h2>
<p><pre class = "type">
Only valid if the effect is type 'beam'.
Controls how fast the texture scrolls on the beam.
</pre>
<h2><a name = "scale">3.8 scale &lt;min&gt; [max]</a></h2>
<p><pre class = "type">
Particles will start with a diameter of this many quake units.
Actual scale will be randomly chosen between 'min' and 'max' ('max' defaults to equal if 'min' is missing)
</pre>
<h2><a name = "scalefactor">3.9 scalefactor &lt;frac&gt;</a></h2>
<p><pre class = "type">
Controls how the particle scales with distance.
1 makes the particle scale the same as anything else
0 makes the particle not change size no matter how far it is
</pre>
<h2><a name = "stretchfactor">3.10 stretchfactor &lt;factor&gt;</a></h2>
<p><pre class = "type">
Controls how spark particles stretch according to their velocity.
Negative values give fixed length sparks.
</pre>
<h2><a name = "scaledelta">3.11 scaledelta &lt;value&gt;</a></h2>
<p><pre class = "type">
Controls how the particle scales over time
Specifies the change in the particle scale per second.
</pre>
<h2><a name = "step">3.12 step &lt;min&gt; &lt;max&gt;</a></h2>
<p><pre class = "type">
Trails/beams only
Specifies the distance between each particle in the trail (or beam).
</pre>
<p align = "center"><a href = "../ch02/pg2_1.htm">Back</a> | <a href = "../index.html">Home</a> | <a href = "../ch04/pg4_1.htm">Next</a>
</body>
</html>

@ -0,0 +1,94 @@
<html>
<head>
<title>Particle Manual: Color Keywords</title>
<link rel = "stylesheet" type = "text/css" href = "../styles/design.css">
</head>
<body>
<h1 class = "MsoTitle">Particle Manual</h1>
<hr>
<h1>4 Color Keywords</h1>
<h2><a name = "alpha">4.1 alpha &lt;value&gt;</a></h2>
<p><pre class = "type">
Specifies the initial alpha value of the effect
</pre>
<h2><a name = "alpharand">4.2 alpharand &lt;value&gt;</a></h2>
<p><pre class = "type">
Specifies a randomized additonal value added to each particle's initial alpha.
</pre>
<h2><a name = "alphadelta">4.3 alphadelta &lt;value&gt;</a></h2>
<p><pre class = "type">
Specifies how much the alpha value of the effect changes per second (subtracted)
</pre>
<h2><a name = "rgbdeltatime">4.4 rgbdeltatime &lt;value&gt;</a></h2>
<p><pre class = "type">
Specifies for how long the particle may change colours for.
After this many seconds, the particle may no longer change colours (delta becomes 0).
</pre>
<h2><a name = "rampmode">4.5 rampmode &lt;mode&gt;</a></h2>
<p><pre class = "type">
Mode may be one of:
none: uses rgb+rand+sync+delta+scale+scaledelta values.
nearest(or absolute): the ramp overrides all colour+scale values. The effect moves from one absolute ramp index to the next.
lerp: smoothly interpolates from one value to the next.
delta: uses rgb+rand+sync+scale, but not delta values. All delta values come from the colour ramp instead.
If not none, the ramp index used is based upon the particle's age, its lifetime, and how many ramp elements there are.
</pre>
<h2><a name = "rampindexlist">4.6 rampindexlist &lt;idx1&gt; [&lt;idx2&gt; [idx3 ...]]</a></h2>
<p><pre class = "type">
Scale used is the currently set scale value.
Specifies a set of palette index values to use for the effect as part of the effect's colour ramp.
</pre>
<h2><a name = "rampindex">4.7 rampindex &lt;idx&gt; &lt;scale&gt;</a></h2>
<p><pre class = "type">
Specifies an individual palette index value and particle scale to use for the effect as part of the effect's colour ramp
</pre>
<h2><a name = "ramp">4.8 ramp &lt;red&gt; &lt;green&gt; &lt;blue&gt; [alpha] [scale]</a></h2>
<p><pre class = "type">
Specifies a ramp index in rgb terms, regardless of palette.
</pre>
<h2><a name = "blend">4.9 blend &lt;mode&gt;</a></h2>
<p><pre class = "type">
If the texture used is actually a material then that material's blend mode will take precidence.
As a general rule you should try to use only the premul blend modes (as well as atlasing).
Mode may be one of:
adda:
addc:
subtract:
invmoda:
invmodc:
blendcolour:
blendalpha:
premul_subtract:
premul_add:
premul_blend:
rtsmoke:
</pre>
<h2><a name = "stains">4.10 stains &lt;value&gt;</a></h2>
<p><pre class = "type">
How much the effect discolours the wall upon impact.
The stained colour is based upon the colour of the particle upon impact.
</pre>
<h2><a name = "spawnstain">4.11 spawnstain &lt;radius&gt; &lt;r&gt; &lt;g&gt; &lt;b&gt;</a></h2>
<p><pre class = "type">
Controls whether a stain will be created at the same time as any particles
(instead of depending upon impacts).
</pre>
<p align = "center"><a href = "../ch03/pg3_1.htm">Back</a> | <a href = "../index.html">Home</a> | <a href = "../ch05/pg5_1.htm">Next</a>
</body>
</html>

@ -0,0 +1,132 @@
<html>
<head>
<title>Particle Manual: Physics Keywords</title>
<link rel = "stylesheet" type = "text/css" href = "../styles/design.css">
</head>
<body>
<h1 class = "MsoTitle">Particle Manual</h1>
<hr>
<h1>5 Physics Keywords</h1>
<h2><a name = "randomvel">5.1 randomvel &lt;horiz&gt; [vert]</a></h2>
<p><pre class = "type">
Controls how fast the particle moves when it spawns (according to its spawn pattern).
This works regardless of any requested velocities.
If 'vert' is not specified, 'horiz' is used instead.
</pre>
<h2><a name = "veladd">5.2 veladd &lt;value&gt;</a></h2>
<p><pre class = "type">
Controls how much of the effect's spawn velocity is used, can be greater than 1, or negative.
</pre>
<h2><a name = "orgadd">5.3 orgadd &lt;value&gt;</a></h2>
<p><pre class = "type">
Biases how much to add to the starting origin relative to the requested velocity.
</pre>
<h2><a name = "orgbias">5.4 orgbias &lt;x&gt; &lt;y&gt; &lt;z&gt;</a></h2>
<p><pre class = "type">
Biases the particle's origin by this absolute worldspace vector, regardless of spawn mode.
</pre>
<h2><a name = "velbias">5.5 velbias</a></h2>
<p><pre class = "type">
Biases the particle's velocity by this absolute worldspace vector, regardless of spawn mode.
</pre>
<h2><a name = "orgwrand">5.6 orgwrand</a></h2>
<p><pre class = "type">
Randomised offset for the particle's origin, in worldspace.
</pre>
<h2><a name = "velwrand">5.7 velwrand</a></h2>
<p><pre class = "type">
Randomised offset for the particle's origin, in worldspace.
</pre>
<h2><a name = "friction">5.8 friction &lt;&lt;xyz&gt;|&lt;xy&gt; &lt;z&gt; | &lt;x&gt; &lt;y&gt; &lt;z&gt;&gt;</a></h2>
<p><pre class = "type">
Proportion of the particle's speed that should be lost from friction. Negative values are accepted.
</pre>
<h2><a name = "gravity">5.9 gravity &lt;value&gt;</a></h2>
<p><pre class = "type">
Amount that the particle's velocity changes per second, in units.
</pre>
<h2><a name = "clipbounce">5.10 clipbounce &lt;value&gt;</a></h2>
<p><pre class = "type">
how much of the particle's velocity to use if the particle is clipped. See cliptype.
Defaults to 0.8
</pre>
<h2><a name = "cliptype">5.11 cliptype &lt;effectname&gt;</a></h2>
<p><pre class = "type">
Specifies which new effect to spawn when the particle hits something.
The origin and velocity of the particle are used to spawn the new effect.
The clipbounce value is used as a scaler for the reflected velocity.
If the effect named is the effect itself, the particle will merely bounce, instead of spawning a new effect.
FIXME: make default to bounce if clipbounce is set without cliptype.
</pre>
<h2><a name = "clipcount">5.12 clipcount &lt;count&gt;</a></h2>
<p><pre class = "type">
The scaler to use for the number of particles to spawn upon a clip event.
Only valid in conjunction with 'cliptype'.
</pre>
<h2><a name = "notunderwater">5.13 notunderwater [content names]</a></h2>
<p><pre class = "type">
Specifies that this particle should ONLY be spawned when out of water.
The particle will not spawn under water (this does not affect assoc chains).
Content names are a space-separated list of: water slime lava sky solid fluid.
Default is 'fluid' if not specified.
The r_part_contentswitch cvar must be enabled for this to function correctly.
</pre>
<h2><a name = "underwater">5.14 underwater [content names]</a></h2>
<p><pre class = "type">
Specifies that this particle should ONLY be spawned when underwater.
The particle will not spawn if the spawn position is non-water (this does not affect assoc chains).
</pre>
<h2><a name = "perframe">5.15 perframe</a></h2>
<p><pre class = "type">
Apply inverse frametime to count (causes emits to be per frame).
</pre>
<h2><a name = "averageout">5.16 averageout</a></h2>
<p><pre class = "type">
Average trail points from start to end, useful with t_lightning, etc
</pre>
<h2><a name = "nospreadfirst">5.17 nospreadfirst</a></h2>
<p><pre class = "type">
Don't randomize position/velocity for first generated particle.
</pre>
<h2><a name = "nospreadlast">5.18 nospreadlast</a></h2>
<p><pre class = "type">
Don't randomize position/velocity for last generated particle.
</pre>
<h2><a name = "rainfrequency">5.19 rainfrequency &lt;multiplier&gt;</a></h2>
<p><pre class = "type">
Specifies the interval between spawning new particle puffs on surfaces.
</pre>
<h2><a name = "flurry">5.20 flurry &lt;magnitude&gt;</a></h2>
<p><pre class = "type">
These particles will periodically all change their direction, in a vauge attempt to approximate snow flurries.
</pre>
<p align = "center"><a href = "../ch04/pg4_1.htm">Back</a> | <a href = "../index.html">Home</a> | <a href = "../ch06/pg6_1.htm">Next</a>
</body>
</html>

@ -0,0 +1,67 @@
<html>
<head>
<title>Particle Manual: Light Keywords</title>
<link rel = "stylesheet" type = "text/css" href = "../styles/design.css">
</head>
<body>
<h1 class = "MsoTitle">Particle Manual</h1>
<hr>
<h1>6 Light Keywords</h1>
<h2><a name = "lightradius">6.1 lightradius &lt;radius&gt;</a></h2>
<p><pre class = "type">
Spawns a dynamic light when the effect is spawned.
The dynamic light is removed when radius drops to 0 or the age is exceeded.
At this time it is not possible to override the corona/specular levels.
</pre>
<h2><a name = "lightradiusfade">6.2 lightradiusfade &lt;radiuspersecond&gt;</a></h2>
<p><pre class = "type">
How fast the light radius shrinks per second.
</pre>
<h2><a name = "lightrgb">6.3 lightrgb &lt;r&gt; &lt;g&gt; &lt;b&gt;</a></h2>
<p><pre class = "type">
Dynamic light RGB colours.
Higher values can over-saturate.
</pre>
<h2><a name = "lightrgbfade">6.4 lightrgbfade &lt;r/s&gt; &lt;g/s&gt; &lt;b/s&gt;</a></h2>
<p><pre class = "type">
How fast 'lightrgb' changes over time.
</pre>
<h2><a name = "lighttime">6.5 lighttime &lt;maxage&gt;</a></h2>
<p><pre class = "type">
Specifies the maximum lifetime of your dynamic light.
</pre>
<h2><a name = "lightcubemap">6.6 lightcubemap &lt;cubemapnum&gt;</a></h2>
<p><pre class = "type">
Value 0 means no cubemap.
otherwise with eg cubemap 5, uses image files cubemaps/5ft.tga, cubemaps/5bk.tga, etc.
FIXME: At the current time, the cubemap is world-aligned and cannot rotate.
</pre>
<h2><a name = "lightscales">6.7 lightscales &lt;ambient&gt; &lt;diffuse&gt; &lt;specular&gt;</a></h2>
<p><pre class = "type">
Multipliers for the dynamic light's various types of lighting
</pre>
<h2><a name = "lightshadows">6.8 lightshadows &lt;castshadows&gt;</a></h2>
<p><pre class = "type">
0 or 1, specifies whether the dynamic light will cast shadows or not.
Its faster if it doesn't.
</pre>
<h2><a name = "lightcorona">6.9 lightcorona &lt;intensity&gt; &lt;scale&gt;</a></h2>
<p><pre class = "type">
Defines the intensity (the glare) and size of the corona the dynamic light
will cast.
</pre>
<p align = "center"><a href = "../ch05/pg5_1.htm">Back</a> | <a href = "../index.html">Home</a>
</body>
</html>

@ -0,0 +1,115 @@
<html>
<head>
<title>Particle Manual: Table of Contents</title>
<link rel = "stylesheet" type = "text/css" href = "styles/design.css">
</head>
<body>
<div align = "center">
<h1 class = "MsoTitle">Particle Manual</h1>
<h2>Revision #1</h2>
<p style = "font-weight: bold">assembled by Marco Hladik
<p class = "heading">based on documentation provided by David Walton</div>
<hr>
<h1>Table of Contents</h1>
<a href = "ch01/pg1_1.htm">1 Introduction</a>
<ul style = "margin-top: 0em">
<a href = "ch01/pg1_1.htm#what">1.1 What is a particle config?</em></a>
<br><a href = "ch01/pg1_1.htm#conventions">1.2 Particle Name &amp; File Conventions</em></a>
</ul>
<a href = "ch02/pg2_1.htm">2 General Keywords</a>
<ul style = "margin-top: 0em">
<a href = "ch02/pg2_1.htm#type">2.1 type &lt;mode&gt;</em></a>
<br><a href = "ch02/pg2_1.htm#count">2.2 count &lt;min&gt; &lt;max&gt;</em></a>
<br><a href = "ch02/pg2_1.htm#assoc">2.3 assoc &lt;effectname&gt;</em></a>
<br><a href = "ch02/pg2_1.htm#die">2.4 die &lt;maximum age&gt; &lt;minimum age&gt;</em></a>
<br><a href = "ch02/pg2_1.htm#spawnmode">2.5 spawnmode &lt;mode&gt; [arg1] [arg2]</em></a>
<br><a href = "ch02/pg2_1.htm#clippeddecal">2.6 clippeddecal &lt;mask&gt; [match]</em></a>
<br><a href = "ch02/pg2_1.htm#spawntime">2.7 spawntime &lt;value&gt;</em></a>
<br><a href = "ch02/pg2_1.htm#spawnchance">2.8 spawnchance &lt;value&gt;</em></a>
<br><a href = "ch02/pg2_1.htm#emit">2.9 emit &lt;effectname&gt;</em></a>
<br><a href = "ch02/pg2_1.htm#emitinterval">2.10 emitinterval &lt;min&gt;</em></a>
<br><a href = "ch02/pg2_1.htm#emitintervalrand">2.11 emitintervalrand &lt;extra&gt;</em></a>
<br><a href = "ch02/pg2_1.htm#emitstart">2.12 emitstart &lt;seconds&gt;</em></a>
<br><a href = "ch02/pg2_1.htm#perframe">2.13 perframe</em></a>
<br><a href = "ch02/pg2_1.htm#averageout">2.14 averageout</em></a>
<br><a href = "ch02/pg2_1.htm#nostate">2.15 nostate</em></a>
<br><a href = "ch02/pg2_1.htm#sound">2.16 sound &lt;name&gt; [options]</em></a>
<br><a href = "ch02/pg2_1.htm#model">2.17 model &lt;name&gt; [options]</em></a>
<br><a href = "ch02/pg2_1.htm#viewspace">2.18 viewspace [frac]</em></a>
</ul>
<a href = "ch03/pg3_1.htm">3 Texture Keywords</a>
<ul style = "margin-top: 0em">
<a href = "ch03/pg3_1.htm#texture">3.1 texture &lt;texturename&gt;</em></a>
<br><a href = "ch03/pg3_1.htm#material">3.2 material &lt;materialname&gt;</em></a>
<br><a href = "ch03/pg3_1.htm#tcoords">3.3 tcoords &lt;s1&gt; &lt;t1&gt; &lt;s2&gt; &lt;t2&gt; [tscale] [rsmax] [rsstep]</em></a>
<br><a href = "ch03/pg3_1.htm#atlas">3.4 atlas count_in_each_axis firstidx [last]</em></a>
<br><a href = "ch03/pg3_1.htm#rotation">3.5 rotation &lt;startmin&gt; &lt;startmax&gt; &lt;speedmin&gt; &lt;speedmax&gt;</em></a>
<br><a href = "ch03/pg3_1.htm#beamtexstep">3.6 beamtexstep &lt;value&gt;</em></a>
<br><a href = "ch03/pg3_1.htm#beamtexspeed">3.7 beamtexspeed &lt;value&gt;</em></a>
<br><a href = "ch03/pg3_1.htm#scale">3.8 scale &lt;min&gt; [max]</em></a>
<br><a href = "ch03/pg3_1.htm#scalefactor">3.9 scalefactor &lt;frac&gt;</em></a>
<br><a href = "ch03/pg3_1.htm#stretchfactor">3.10 stretchfactor &lt;factor&gt;</em></a>
<br><a href = "ch03/pg3_1.htm#scaledelta">3.11 scaledelta &lt;value&gt;</em></a>
<br><a href = "ch03/pg3_1.htm#step">3.12 step &lt;min&gt; &lt;max&gt;</em></a>
</ul>
<a href = "ch04/pg4_1.htm">4 Color Keywords</a>
<ul style = "margin-top: 0em">
<a href = "ch04/pg4_1.htm#alpha">4.1 alpha &lt;value&gt;</em></a>
<br><a href = "ch04/pg4_1.htm#alpharand">4.2 alpharand &lt;value&gt;</em></a>
<br><a href = "ch04/pg4_1.htm#alphadelta">4.3 alphadelta &lt;value&gt;</em></a>
<br><a href = "ch04/pg4_1.htm#rgbdeltatime">4.4 rgbdeltatime &lt;value&gt;</em></a>
<br><a href = "ch04/pg4_1.htm#rampmode">4.5 rampmode &lt;mode&gt;</em></a>
<br><a href = "ch04/pg4_1.htm#rampindexlist">4.6 rampindexlist &lt;idx1&gt; [&lt;idx2&gt; [idx3 ...]]</em></a>
<br><a href = "ch04/pg4_1.htm#rampindex">4.7 rampindex &lt;idx&gt; &lt;scale&gt;</em></a>
<br><a href = "ch04/pg4_1.htm#ramp">4.8 ramp &lt;red&gt; &lt;green&gt; &lt;blue&gt; [alpha] [scale]</em></a>
<br><a href = "ch04/pg4_1.htm#blend">4.9 blend &lt;mode&gt;</em></a>
<br><a href = "ch04/pg4_1.htm#stains">4.10 stains &lt;value&gt;</em></a>
<br><a href = "ch04/pg4_1.htm#spawnstain">4.11 spawnstain &lt;radius&gt; &lt;r&gt; &lt;g&gt; &lt;b&gt;</em></a>
</ul>
<a href = "ch05/pg5_1.htm">5 Physics/Animation Keywords</a>
<ul style = "margin-top: 0em">
<a href = "ch05/pg5_1.htm#randomvel">5.1 randomvel &lt;horiz&gt; [vert]</em></a>
<br><a href = "ch05/pg5_1.htm#veladd">5.2 veladd &lt;value&gt;</em></a>
<br><a href = "ch05/pg5_1.htm#orgadd">5.3 orgadd &lt;value&gt;</em></a>
<br><a href = "ch05/pg5_1.htm#orgbias">5.4 orgbias &lt;x&gt; &lt;y&gt; &lt;z&gt;</em></a>
<br><a href = "ch05/pg5_1.htm#velbias">5.5 velbias</em></a>
<br><a href = "ch05/pg5_1.htm#orgwrand">5.6 orgwrand</em></a>
<br><a href = "ch05/pg5_1.htm#velwrand">5.7 velwrand</em></a>
<br><a href = "ch05/pg5_1.htm#friction">5.8 friction &lt;&lt;xyz&gt;|&lt;xy&gt; &lt;z&gt; | &lt;x&gt; &lt;y&gt; &lt;z&gt;&gt;</em></a>
<br><a href = "ch05/pg5_1.htm#gravity">5.9 gravity &lt;value&gt;</em></a>
<br><a href = "ch05/pg5_1.htm#clipbounce">5.10 clipbounce &lt;value&gt;</em></a>
<br><a href = "ch05/pg5_1.htm#cliptype">5.11 cliptype &lt;effectname&gt;</em></a>
<br><a href = "ch05/pg5_1.htm#clipcount">5.12 clipcount &lt;count&gt;</em></a>
<br><a href = "ch05/pg5_1.htm#notunderwater">5.13 notunderwater [content names]</em></a>
<br><a href = "ch05/pg5_1.htm#underwater">5.14 underwater [content names]</em></a>
<br><a href = "ch05/pg5_1.htm#perframe">5.15 perframe</em></a>
<br><a href = "ch05/pg5_1.htm#averageout">5.16 averageout</em></a>
<br><a href = "ch05/pg5_1.htm#nospreadfirst">5.17 nospreadfirst</em></a>
<br><a href = "ch05/pg5_1.htm#nospreadlast">5.18 nospreadlast</em></a>
<br><a href = "ch05/pg5_1.htm#rainfrequency">5.19 rainfrequency &lt;multiplier&gt;</em></a>
<br><a href = "ch05/pg5_1.htm#flurry">5.20 flurry &lt;magnitude&gt;</em></a>
</ul>
<a href = "ch06/pg6_1.htm">6 Light Keywords</a>
<ul style = "margin-top: 0em">
<a href = "ch06/pg6_1.htm#lightradius">6.1 lightradius &lt;radius&gt;</em></a>
<br><a href = "ch06/pg6_1.htm#lightradiusfade">6.2 lightradiusfade &lt;radiuspersecond&gt;</em></a>
<br><a href = "ch06/pg6_1.htm#lightrgb">6.3 lightrgb &lt;r&gt; &lt;g&gt; &lt;b&gt;</em></a>
<br><a href = "ch06/pg6_1.htm#lightrgbfade">6.4 lightrgbfade &lt;r/s&gt; &lt;g/s&gt; &lt;b/s&gt;</em></a>
<br><a href = "ch06/pg6_1.htm#lighttime">6.5 lighttime &lt;maxage&gt;</em></a>
<br><a href = "ch06/pg6_1.htm#lightcubemap">6.6 lightcubemap &lt;cubemapnum&gt;</em></a>
<br><a href = "ch06/pg6_1.htm#lightscales">6.7 lightscales &lt;ambient&gt; &lt;diffuse&gt; &lt;specular&gt;</em></a>
<br><a href = "ch06/pg6_1.htm#lightshadows">6.8 lightshadows &lt;castshadows&gt;</em></a>
<br><a href = "ch06/pg6_1.htm#lightcorona">6.9 lightcorona &lt;intensity&gt; &lt;scale&gt;</em></a>
</ul>
</body>
</html>

@ -0,0 +1,23 @@
body { font: 12pt "Times New Roman";
margin-left: 5mm;
margin-right: 5mm;
text-align: justify;
background: #ffffff;
color: #000000 }
h1 { font: bold 24pt Arial, Helvetica }
h2 { font: bold italic 18pt Arial, Helvetica }
.subheading { font: bold 16pt Arial, Helvetica }
:link {color: blue;
text-decoration: none; }
:visited {color: purple;
text-decoration: none; }
h6 { font: 10pt "Times New Roman" }
.MsoToc2 { font: bold small-caps 12pt "Times New Roman" }
.MsoTitle { text-align:center;
font: bold 24pt "BankGothic Md BT";
letter-spacing:2.5pt }
.heading { font: italic 10pt "Times New Roman" }
.subcontents { font: 10pt "Times New Roman" }
.tip { font: 10pt "Comic Sans MS" }
.type { font: 10pt "Courier New" }
.menu { font: 10pt Arial, Helvetica }