***************
*** 1,7 ****
  <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
                        "http://www.w3.org/TR/html40/loose.dtd">
  <HTML>
- <!-- Created on March 24 2007 by texi2html 1.66 -->
  <!--
  Written by: Lionel Cons <Lionel.Cons@cern.ch> (original author)
              Karl Berry  <karl@freefriends.org>
--- 1,7 ----
  <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
                        "http://www.w3.org/TR/html40/loose.dtd">
  <HTML>
+ <!-- Created on May 18 2007 by texi2html 1.66 -->
  <!--
  Written by: Lionel Cons <Lionel.Cons@cern.ch> (original author)
              Karl Berry  <karl@freefriends.org>
***************
*** 12,21 ****
  
  -->
  <HEAD>
- <TITLE>OGRE Manual v1.4.0 ('Eihort'): Passes</TITLE>
  
- <META NAME="description" CONTENT="OGRE Manual v1.4.0 ('Eihort'): Passes">
- <META NAME="keywords" CONTENT="OGRE Manual v1.4.0 ('Eihort'): Passes">
  <META NAME="resource-type" CONTENT="document">
  <META NAME="distribution" CONTENT="global">
  <META NAME="Generator" CONTENT="texi2html 1.66">
--- 12,21 ----
  
  -->
  <HEAD>
+ <TITLE>OGRE Manual v1.5.0 ('Shoggoth'): Passes</TITLE>
  
+ <META NAME="description" CONTENT="OGRE Manual v1.5.0 ('Shoggoth'): Passes">
+ <META NAME="keywords" CONTENT="OGRE Manual v1.5.0 ('Shoggoth'): Passes">
  <META NAME="resource-type" CONTENT="document">
  <META NAME="distribution" CONTENT="global">
  <META NAME="Generator" CONTENT="texi2html 1.66">
***************
*** 28,34 ****
  <TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
  <TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="manual_15.html#SEC31"> &lt; </A>]</TD>
  <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="manual_14.html#SEC23"> Up </A>]</TD>
- <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="manual_17.html#SEC62"> &gt; </A>]</TD>
  <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="index.html#SEC_Top">Top</A>]</TD>
  <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="manual_toc.html#SEC_Contents">Contents</A>]</TD>
  <TD VALIGN="MIDDLE" ALIGN="LEFT">[Index]</TD>
--- 28,34 ----
  <TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
  <TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="manual_15.html#SEC31"> &lt; </A>]</TD>
  <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="manual_14.html#SEC23"> Up </A>]</TD>
+ <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="manual_17.html#SEC65"> &gt; </A>]</TD>
  <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="index.html#SEC_Top">Top</A>]</TD>
  <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="manual_toc.html#SEC_Contents">Contents</A>]</TD>
  <TD VALIGN="MIDDLE" ALIGN="LEFT">[Index]</TD>
***************
*** 39,47 ****
  <!--docid::SEC35::-->
  A pass is a single render of the geometry in question; a single call to the rendering API with a certain set of rendering properties. A technique can have between one and 16 passes, although clearly the more passes you use, the more expensive the technique will be to render.<BR><BR>
  
- To help clearly identify what each pass is used for, the pass can be named but its optional.  Passes not named within the script will take on a name that is the pass index number.  For example: the first pass in a technique is index 0 so its name would be &quot;0&quot; if it was not given a name in the script.  The pass name must be unqiue within the technique or else the final pass is the resulting merge of all passes with the same name in the technique.  A warning message is posted in the Ogre.log if this occurs.  Named passes can help when copying a material and modifying an existing pass: (See section <A HREF="manual_25.html#SEC119">3.1.11 Copying Materials</A>)<BR><BR>
  
- Passes have a set of global attributes (described below), zero or more nested texture_unit entries (See section <A HREF="manual_17.html#SEC62">3.1.3 Texture Units</A>), and optionally a reference to a vertex and / or a fragment program (See section <A HREF="manual_23.html#SEC106">3.1.9 Using Vertex and Fragment Programs in a Pass</A>).
  
  <BR><BR>
  Here are the attributes you can use in a 'pass' section of a .material script:
--- 39,47 ----
  <!--docid::SEC35::-->
  A pass is a single render of the geometry in question; a single call to the rendering API with a certain set of rendering properties. A technique can have between one and 16 passes, although clearly the more passes you use, the more expensive the technique will be to render.<BR><BR>
  
+ To help clearly identify what each pass is used for, the pass can be named but its optional.  Passes not named within the script will take on a name that is the pass index number.  For example: the first pass in a technique is index 0 so its name would be &quot;0&quot; if it was not given a name in the script.  The pass name must be unqiue within the technique or else the final pass is the resulting merge of all passes with the same name in the technique.  A warning message is posted in the Ogre.log if this occurs.  Named passes can help when copying a material and modifying an existing pass: (See section <A HREF="manual_25.html#SEC122">3.1.11 Copying Materials</A>)<BR><BR>
  
+ Passes have a set of global attributes (described below), zero or more nested texture_unit entries (See section <A HREF="manual_17.html#SEC65">3.1.3 Texture Units</A>), and optionally a reference to a vertex and / or a fragment program (See section <A HREF="manual_23.html#SEC109">3.1.9 Using Vertex and Fragment Programs in a Pass</A>).
  
  <BR><BR>
  Here are the attributes you can use in a 'pass' section of a .material script:
***************
*** 68,102 ****
  <LI>
  <A HREF="manual_16.html#SEC46">alpha_rejection</A>
  <LI>
- <A HREF="manual_16.html#SEC47">cull_hardware</A>
  <LI>
- <A HREF="manual_16.html#SEC48">cull_software</A>
  <LI>
- <A HREF="manual_16.html#SEC49">lighting</A>
  <LI>
- <A HREF="manual_16.html#SEC50">shading</A>
  <LI>
- <A HREF="manual_16.html#SEC51">polygon_mode</A>
  <LI>
- <A HREF="manual_16.html#SEC52">fog_override</A>
  <LI>
- <A HREF="manual_16.html#SEC53">colour_write</A>
  <LI>
- <A HREF="manual_16.html#SEC55">max_lights</A>
  <LI>
- <A HREF="manual_16.html#SEC54">start_light</A>
  <LI>
- <A HREF="manual_16.html#SEC56">iteration</A>
  <LI>
- <A HREF="manual_16.html#SEC57">point_size</A>
  <LI>
- <A HREF="manual_16.html#SEC58">point_sprites</A>
  <LI>
- <A HREF="manual_16.html#SEC59">point_size_attenuation</A>
  <LI>
- <A HREF="manual_16.html#SEC60">point_size_min</A>
  <LI>
- <A HREF="manual_16.html#SEC61">point_size_max</A>
  </UL>
  
  <A NAME="SEC36"></A>
--- 68,108 ----
  <LI>
  <A HREF="manual_16.html#SEC46">alpha_rejection</A>
  <LI>
+ <A HREF="manual_16.html#SEC47">light_scissor</A>
  <LI>
+ <A HREF="manual_16.html#SEC48">light_clip_planes</A>
  <LI>
+ <A HREF="manual_16.html#SEC49">cull_hardware</A>
  <LI>
+ <A HREF="manual_16.html#SEC50">cull_software</A>
  <LI>
+ <A HREF="manual_16.html#SEC51">lighting</A>
  <LI>
+ <A HREF="manual_16.html#SEC52">shading</A>
  <LI>
+ <A HREF="manual_16.html#SEC53">polygon_mode</A>
  <LI>
+ <A HREF="manual_16.html#SEC54">polygon_mode_overrideable</A>
  <LI>
+ <A HREF="manual_16.html#SEC55">fog_override</A>
  <LI>
+ <A HREF="manual_16.html#SEC56">colour_write</A>
  <LI>
+ <A HREF="manual_16.html#SEC58">max_lights</A>
  <LI>
+ <A HREF="manual_16.html#SEC57">start_light</A>
  <LI>
+ <A HREF="manual_16.html#SEC59">iteration</A>
  <LI>
+ <A HREF="manual_16.html#SEC60">point_size</A>
  <LI>
+ <A HREF="manual_16.html#SEC61">point_sprites</A>
+ <LI>
+ <A HREF="manual_16.html#SEC62">point_size_attenuation</A>
+ <LI>
+ <A HREF="manual_16.html#SEC63">point_size_min</A>
+ <LI>
+ <A HREF="manual_16.html#SEC64">point_size_max</A>
  </UL>
  
  <A NAME="SEC36"></A>
***************
*** 309,319 ****
  The function parameter can be any of the options listed in the material depth_function attribute. The value parameter can theoretically be any value between 0 and 255, but is best limited to 0 or 128 for hardware compatibility.<BR><BR>
  
  Default: alpha_rejection always_pass<BR><BR>
  
  <A NAME="cull_hardware"></A>
- <A NAME="SEC47"></A>
  <H3> cull_hardware </H3>
- <!--docid::SEC47::-->
  
  Sets the hardware culling mode for this pass.<BR><BR>
  
--- 315,352 ----
  The function parameter can be any of the options listed in the material depth_function attribute. The value parameter can theoretically be any value between 0 and 255, but is best limited to 0 or 128 for hardware compatibility.<BR><BR>
  
  Default: alpha_rejection always_pass<BR><BR>
+ <A NAME="light_scissor"></A>
+ <A NAME="SEC47"></A>
+ <H3> light_scissor </H3>
+ <!--docid::SEC47::-->
+ 
+ Sets whether when rendering this pass, rendering will be limited to a screen-space scissor rectangle representing the coverage of the light(s) being used in this pass, derived from their attenuation ranges.<BR><BR>
+ 
+ Format: light_scissor &lt;on|off&gt;<BR><BR>
+ Default: light_scissor off<BR><BR>
+ 
+ This option is usually only useful if this pass is an additive lighting pass, and is at least the second one in the technique. Ie areas which are not affected by the current light(s) will never need to be rendered. If there is more than one light being passed to the pass, then the scissor is defined to be the rectangle which covers all lights in screen-space. Directional lights are ignored since they are infinite.<BR><BR>
+ 
+ This option does not need to be specified if you are using a standard additive shadow mode, ie SHADOWTYPE_STENCIL_ADDITIVE or SHADOWTYPE_TEXTURE_ADDITIVE, since it is the default behaviour to use a scissor for each additive shadow pass. However, if you're not using shadows, or you're using <A HREF="manual_69.html#SEC313">Integrated Texture Shadows</A> where passes are specified in a custom manner, then this could be of use to you.
+ 
+ <A NAME="light_clip_planes"></A>
+ <A NAME="SEC48"></A>
+ <H3> light_clip_planes </H3>
+ <!--docid::SEC48::-->
+ 
+ Sets whether when rendering this pass, triangle setup will be limited to clipping volume covered by the light. Directional lights are ignored, point lights clip to a cube the size of the attenuation range or the light, and spotlights clip to a pyramid bounding the spotlight angle and attenuation range.<BR><BR>
+ 
+ Format: light_clip_planes &lt;on|off&gt;<BR><BR>
+ Default: light_clip_planes off<BR><BR>
+ 
+ This option will only function if there is a single non-directional light being used in this pass. If there is more than one light, or only directional lights, then no clipping will occur. If there are no lights at all then the objects won't be rendered at all.<BR><BR>
+ 
+ When using a standard additive shadow mode, ie SHADOWTYPE_STENCIL_ADDITIVE or SHADOWTYPE_TEXTURE_ADDITIVE, you have the option of enabling clipping for all light passes by calling SceneManager::setShadowUseLightClipPlanes regardless of this pass setting, since rendering is done lightwise anyway. This is off by default since using clip planes is not always faster - it depends on how much of the scene the light volumes cover. Generally the smaller your lights are the more chance you'll see a benefit rather than a penalty from clipping. If you're not using shadows, or you're using <A HREF="manual_69.html#SEC313">Integrated Texture Shadows</A> where passes are specified in a custom manner, then specify the option per-pass using this attribute. 
  
  <A NAME="cull_hardware"></A>
+ <A NAME="SEC49"></A>
  <H3> cull_hardware </H3>
+ <!--docid::SEC49::-->
  
  Sets the hardware culling mode for this pass.<BR><BR>
  
***************
*** 325,333 ****
  NB this is the same as OpenGL's default but the opposite of Direct3D's default (because Ogre uses a right-handed coordinate system like OpenGL).
  
  <A NAME="cull_software"></A>
- <A NAME="SEC48"></A>
  <H3> cull_software </H3>
- <!--docid::SEC48::-->
  
  Sets the software culling mode for this pass.<BR><BR>
  
--- 358,366 ----
  NB this is the same as OpenGL's default but the opposite of Direct3D's default (because Ogre uses a right-handed coordinate system like OpenGL).
  
  <A NAME="cull_software"></A>
+ <A NAME="SEC50"></A>
  <H3> cull_software </H3>
+ <!--docid::SEC50::-->
  
  Sets the software culling mode for this pass.<BR><BR>
  
***************
*** 338,346 ****
  Default: cull_software back<BR><BR>
  
  <A NAME="lighting"></A>
- <A NAME="SEC49"></A>
  <H3> lighting </H3>
- <!--docid::SEC49::-->
  
  Sets whether or not dynamic lighting is turned on for this pass or not. If lighting is turned off, all objects rendered using the pass will be fully lit. <STRONG>This attribute has no effect if a vertex program is used.</STRONG><BR><BR>
  
--- 371,379 ----
  Default: cull_software back<BR><BR>
  
  <A NAME="lighting"></A>
+ <A NAME="SEC51"></A>
  <H3> lighting </H3>
+ <!--docid::SEC51::-->
  
  Sets whether or not dynamic lighting is turned on for this pass or not. If lighting is turned off, all objects rendered using the pass will be fully lit. <STRONG>This attribute has no effect if a vertex program is used.</STRONG><BR><BR>
  
***************
*** 351,359 ****
  Default: lighting on<BR><BR>
  
  <A NAME="shading"></A>
- <A NAME="SEC50"></A>
  <H3> shading </H3>
- <!--docid::SEC50::-->
  
  Sets the kind of shading which should be used for representing dynamic lighting for this pass.<BR><BR>
  
--- 384,392 ----
  Default: lighting on<BR><BR>
  
  <A NAME="shading"></A>
+ <A NAME="SEC52"></A>
  <H3> shading </H3>
+ <!--docid::SEC52::-->
  
  Sets the kind of shading which should be used for representing dynamic lighting for this pass.<BR><BR>
  
***************
*** 371,379 ****
  Default: shading gouraud<BR><BR>
  
  <A NAME="polygon_mode"></A>
- <A NAME="SEC51"></A>
  <H3> polygon_mode </H3>
- <!--docid::SEC51::-->
  
  Sets how polygons should be rasterised, ie whether they should be filled in, or just drawn as lines or points.<BR><BR>
  
--- 404,412 ----
  Default: shading gouraud<BR><BR>
  
  <A NAME="polygon_mode"></A>
+ <A NAME="SEC53"></A>
  <H3> polygon_mode </H3>
+ <!--docid::SEC53::-->
  
  Sets how polygons should be rasterised, ie whether they should be filled in, or just drawn as lines or points.<BR><BR>
  
***************
*** 389,399 ****
  </DL>
  Default: polygon_mode solid<BR><BR>
  
  
  <A NAME="fog_override"></A>
- <A NAME="SEC52"></A>
  <H3> fog_override </H3>
- <!--docid::SEC52::-->
  
  Tells the pass whether it should override the scene fog settings, and enforce it's own. Very useful for things that you don't want to be affected by fog when the rest of the scene is fogged, or vice versa. Note that this only affects fixed-function fog - the original scene fog parameters are still sent to shaders which use the fog_params parameter binding (this allows you to turn off fixed function fog and calculate it in the shader instead; if you want to disable shader fog you can do that through shader parameters anyway). <BR><BR>
  
--- 422,440 ----
  </DL>
  Default: polygon_mode solid<BR><BR>
  
+ <A NAME="polygon_mode_overrideable"></A>
+ <A NAME="SEC54"></A>
+ <H3> polygon_mode_overrideable </H3>
+ <!--docid::SEC54::-->
+ 
+ Sets whether or not the <A HREF="manual_16.html#SEC53">polygon_mode</A> set on this pass can be downgraded by the camera, if the camera itself is set to a lower polygon mode. If set to false, this pass will always be rendered at its own chosen polygon mode no matter what the camera says. The default is true.<BR><BR>
+ 
+ Format: polygon_mode_overrideable &lt;true|false&gt;<BR><BR>
  
  <A NAME="fog_override"></A>
+ <A NAME="SEC55"></A>
  <H3> fog_override </H3>
+ <!--docid::SEC55::-->
  
  Tells the pass whether it should override the scene fog settings, and enforce it's own. Very useful for things that you don't want to be affected by fog when the rest of the scene is fogged, or vice versa. Note that this only affects fixed-function fog - the original scene fog parameters are still sent to shaders which use the fog_params parameter binding (this allows you to turn off fixed function fog and calculate it in the shader instead; if you want to disable shader fog you can do that through shader parameters anyway). <BR><BR>
  
***************
*** 421,429 ****
  Example: fog_override true exp 1 1 1 0.002 100 10000
  
  <A NAME="colour_write"></A>
- <A NAME="SEC53"></A>
  <H3> colour_write </H3>
- <!--docid::SEC53::-->
  
  Sets whether or not this pass renders with colour writing on or not.<BR>
  
--- 462,470 ----
  Example: fog_override true exp 1 1 1 0.002 100 10000
  
  <A NAME="colour_write"></A>
+ <A NAME="SEC56"></A>
  <H3> colour_write </H3>
+ <!--docid::SEC56::-->
  
  Sets whether or not this pass renders with colour writing on or not.<BR>
  
***************
*** 434,466 ****
  Default: colour_write on<BR>
  
  <A NAME="start_light"></A>
- <A NAME="SEC54"></A>
  <H3> start_light </H3>
- <!--docid::SEC54::-->
  
  Sets the first light which will be considered for use with this pass.<BR><BR>
  Format: start_light &lt;number&gt;<BR><BR>
  
- You can use this attribute to offset the starting point of the lights for this pass. In other words, if you set start_light to 2 then the first light to be processed in that pass will be the third actual light in the applicable list. You could use this option to use different passes to process the first couple of lights versus the second couple of lights for example, or use it in conjunction with the <A HREF="manual_16.html#SEC56">iteration</A> option to start the iteration from a given point in the list (e.g. doing the first 2 lights in the first pass, and then iterating every 2 lights from then on perhaps). <BR><BR>
  
  Default: start_light 0<BR>
  
  <A NAME="max_lights"></A>
- <A NAME="SEC55"></A>
  <H3> max_lights </H3>
- <!--docid::SEC55::-->
  
  Sets the maximum number of lights which will be considered for use with this pass.<BR><BR>
  Format: max_lights &lt;number&gt;<BR><BR>
  
- The maximum number of lights which can be used when rendering fixed-function materials is set by the rendering system, and is typically set at 8. When you are using the programmable pipeline (See section <A HREF="manual_23.html#SEC106">3.1.9 Using Vertex and Fragment Programs in a Pass</A>) this limit is dependent on the program you are running, or, if you use 'iteration once_per_light' or a variant (See section <A HREF="manual_16.html#SEC56">iteration</A>), it effectively only bounded by the number of passes you are willing to use. If you are not using pass iteration, the light limit applies once for this pass. If you are using pass iteration, the light limit applies across all iterations of this pass - for example if you have 12 lights in range with an 'iteration once_per_light' setup but your max_lights is set to 4 for that pass, the pass will only iterate 4 times. <BR><BR>
  
  Default: max_lights 8<BR>
  
  <A NAME="iteration"></A>
- <A NAME="SEC56"></A>
  <H3> iteration </H3>
- <!--docid::SEC56::-->
  
  Sets whether or not this pass is iterated, ie issued more than once.<BR><BR>
  
--- 475,507 ----
  Default: colour_write on<BR>
  
  <A NAME="start_light"></A>
+ <A NAME="SEC57"></A>
  <H3> start_light </H3>
+ <!--docid::SEC57::-->
  
  Sets the first light which will be considered for use with this pass.<BR><BR>
  Format: start_light &lt;number&gt;<BR><BR>
  
+ You can use this attribute to offset the starting point of the lights for this pass. In other words, if you set start_light to 2 then the first light to be processed in that pass will be the third actual light in the applicable list. You could use this option to use different passes to process the first couple of lights versus the second couple of lights for example, or use it in conjunction with the <A HREF="manual_16.html#SEC59">iteration</A> option to start the iteration from a given point in the list (e.g. doing the first 2 lights in the first pass, and then iterating every 2 lights from then on perhaps). <BR><BR>
  
  Default: start_light 0<BR>
  
  <A NAME="max_lights"></A>
+ <A NAME="SEC58"></A>
  <H3> max_lights </H3>
+ <!--docid::SEC58::-->
  
  Sets the maximum number of lights which will be considered for use with this pass.<BR><BR>
  Format: max_lights &lt;number&gt;<BR><BR>
  
+ The maximum number of lights which can be used when rendering fixed-function materials is set by the rendering system, and is typically set at 8. When you are using the programmable pipeline (See section <A HREF="manual_23.html#SEC109">3.1.9 Using Vertex and Fragment Programs in a Pass</A>) this limit is dependent on the program you are running, or, if you use 'iteration once_per_light' or a variant (See section <A HREF="manual_16.html#SEC59">iteration</A>), it effectively only bounded by the number of passes you are willing to use. If you are not using pass iteration, the light limit applies once for this pass. If you are using pass iteration, the light limit applies across all iterations of this pass - for example if you have 12 lights in range with an 'iteration once_per_light' setup but your max_lights is set to 4 for that pass, the pass will only iterate 4 times. <BR><BR>
  
  Default: max_lights 8<BR>
  
  <A NAME="iteration"></A>
+ <A NAME="SEC59"></A>
  <H3> iteration </H3>
+ <!--docid::SEC59::-->
  
  Sets whether or not this pass is iterated, ie issued more than once.<BR><BR>
  
***************
*** 577,587 ****
  </pre></td></tr></table>Note: use gpu program auto parameters  <A HREF="manual_23.html#pass_number">pass_number</A> and  <A HREF="manual_23.html#pass_iteration_number">pass_iteration_number</A> to tell the vertex or fragment program the pass number and iteration number.<BR><BR>
  
  <A NAME="point_size"></A>
- <A NAME="SEC57"></A>
  <H3> point_size </H3>
- <!--docid::SEC57::-->
  
- This setting allows you to change the size of points when rendering a point list, or a list of point sprites. The interpretation of this command depends on the <A HREF="manual_16.html#SEC59">point_size_attenuation</A> option - if it is off (the default), the point size is in screen pixels, if it is on, it expressed as normalised screen coordinates (1.0 is the height of the screen) when the point is at the origin.  <BR><BR>
  
  NOTE: Some drivers have an upper limit on the size of points they support - this can even vary between APIs on the same card! Don't rely on point sizes that cause the points to get very large on screen, since they may get clamped on some cards. Upper sizes can range from 64 to 256 pixels.<BR><BR>
  
--- 618,628 ----
  </pre></td></tr></table>Note: use gpu program auto parameters  <A HREF="manual_23.html#pass_number">pass_number</A> and  <A HREF="manual_23.html#pass_iteration_number">pass_iteration_number</A> to tell the vertex or fragment program the pass number and iteration number.<BR><BR>
  
  <A NAME="point_size"></A>
+ <A NAME="SEC60"></A>
  <H3> point_size </H3>
+ <!--docid::SEC60::-->
  
+ This setting allows you to change the size of points when rendering a point list, or a list of point sprites. The interpretation of this command depends on the <A HREF="manual_16.html#SEC62">point_size_attenuation</A> option - if it is off (the default), the point size is in screen pixels, if it is on, it expressed as normalised screen coordinates (1.0 is the height of the screen) when the point is at the origin.  <BR><BR>
  
  NOTE: Some drivers have an upper limit on the size of points they support - this can even vary between APIs on the same card! Don't rely on point sizes that cause the points to get very large on screen, since they may get clamped on some cards. Upper sizes can range from 64 to 256 pixels.<BR><BR>
  
***************
*** 589,597 ****
  Default: point_size 1.0<BR><BR>
  
  <A NAME="point_sprites"></A>
- <A NAME="SEC58"></A>
  <H3> point_sprites </H3>
- <!--docid::SEC58::-->
  
  This setting specifies whether or not hardware point sprite rendering is enabled for this pass. Enabling it means that a point list is rendered as a list of quads rather than a list of dots. It is very useful to use this option if you're using a billboardset and only need to use point oriented billboards which are all of the same size. You can also use it for any other point list render. <BR><BR>
  
--- 630,638 ----
  Default: point_size 1.0<BR><BR>
  
  <A NAME="point_sprites"></A>
+ <A NAME="SEC61"></A>
  <H3> point_sprites </H3>
+ <!--docid::SEC61::-->
  
  This setting specifies whether or not hardware point sprite rendering is enabled for this pass. Enabling it means that a point list is rendered as a list of quads rather than a list of dots. It is very useful to use this option if you're using a billboardset and only need to use point oriented billboards which are all of the same size. You can also use it for any other point list render. <BR><BR>
  
***************
*** 599,609 ****
  Default: point_sprites off<BR><BR>
  
  <A NAME="point_size_attenuation"></A>
- <A NAME="SEC59"></A>
  <H3> point_size_attenuation </H3>
- <!--docid::SEC59::-->
  
- Defines whether point size is attenuated with view space distance, and in what fashion. This option is especially useful when you're using point sprites (See section <A HREF="manual_16.html#SEC58">point_sprites</A>) since it defines how they reduce in size as they get further away from the camera. You can also disable this option to make point sprites a constant screen size (like points), or enable it for points so they change size with distance.<BR><BR>
  
  You only have to provide the final 3 parameters if you turn attenuation on. The formula for attenuation is that the size of the point is multiplied by 1 / (constant + linear * dist + quadratic * d^2); therefore turning it off is equivalent to (constant = 1, linear = 0, quadratic = 0) and standard perspective attenuation is (constant = 0, linear = 1, quadratic = 0). The latter is assumed if you leave out the final 3 parameters when you specify 'on'.<BR><BR>
  
--- 640,650 ----
  Default: point_sprites off<BR><BR>
  
  <A NAME="point_size_attenuation"></A>
+ <A NAME="SEC62"></A>
  <H3> point_size_attenuation </H3>
+ <!--docid::SEC62::-->
  
+ Defines whether point size is attenuated with view space distance, and in what fashion. This option is especially useful when you're using point sprites (See section <A HREF="manual_16.html#SEC61">point_sprites</A>) since it defines how they reduce in size as they get further away from the camera. You can also disable this option to make point sprites a constant screen size (like points), or enable it for points so they change size with distance.<BR><BR>
  
  You only have to provide the final 3 parameters if you turn attenuation on. The formula for attenuation is that the size of the point is multiplied by 1 / (constant + linear * dist + quadratic * d^2); therefore turning it off is equivalent to (constant = 1, linear = 0, quadratic = 0) and standard perspective attenuation is (constant = 0, linear = 1, quadratic = 0). The latter is assumed if you leave out the final 3 parameters when you specify 'on'.<BR><BR>
  
***************
*** 613,633 ****
  Default: point_size_attenuation off
  
  <A NAME="point_size_min"></A>
- <A NAME="SEC60"></A>
  <H3> point_size_min </H3>
- <!--docid::SEC60::-->
  
- Sets the minimum point size after attenuation (<A HREF="manual_16.html#SEC59">point_size_attenuation</A>). For details on the size metrics, See section <A HREF="manual_16.html#SEC57">point_size</A>.<BR><BR>
  
  Format: point_size_min &lt;size&gt;
  Default: point_size_min 0
  
  <A NAME="point_size_max"></A>
- <A NAME="SEC61"></A>
  <H3> point_size_max </H3>
- <!--docid::SEC61::-->
  
- Sets the maximum point size after attenuation (<A HREF="manual_16.html#SEC59">point_size_attenuation</A>). For details on the size metrics, See section <A HREF="manual_16.html#SEC57">point_size</A>. A value of 0 means the maximum is set to the same as the max size reported by the current card. <BR><BR>
  
  Format: point_size_max &lt;size&gt;
  Default: point_size_max 0
--- 654,674 ----
  Default: point_size_attenuation off
  
  <A NAME="point_size_min"></A>
+ <A NAME="SEC63"></A>
  <H3> point_size_min </H3>
+ <!--docid::SEC63::-->
  
+ Sets the minimum point size after attenuation (<A HREF="manual_16.html#SEC62">point_size_attenuation</A>). For details on the size metrics, See section <A HREF="manual_16.html#SEC60">point_size</A>.<BR><BR>
  
  Format: point_size_min &lt;size&gt;
  Default: point_size_min 0
  
  <A NAME="point_size_max"></A>
+ <A NAME="SEC64"></A>
  <H3> point_size_max </H3>
+ <!--docid::SEC64::-->
  
+ Sets the maximum point size after attenuation (<A HREF="manual_16.html#SEC62">point_size_attenuation</A>). For details on the size metrics, See section <A HREF="manual_16.html#SEC60">point_size</A>. A value of 0 means the maximum is set to the same as the max size reported by the current card. <BR><BR>
  
  Format: point_size_max &lt;size&gt;
  Default: point_size_max 0
***************
*** 637,643 ****
  <TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
  <TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="manual_15.html#SEC31"> &lt; </A>]</TD>
  <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="manual_14.html#SEC23"> Up </A>]</TD>
- <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="manual_17.html#SEC62"> &gt; </A>]</TD>
  <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="index.html#SEC_Top">Top</A>]</TD>
  <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="manual_toc.html#SEC_Contents">Contents</A>]</TD>
  <TD VALIGN="MIDDLE" ALIGN="LEFT">[Index]</TD>
--- 678,684 ----
  <TABLE CELLPADDING=1 CELLSPACING=1 BORDER=0>
  <TR><TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="manual_15.html#SEC31"> &lt; </A>]</TD>
  <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="manual_14.html#SEC23"> Up </A>]</TD>
+ <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="manual_17.html#SEC65"> &gt; </A>]</TD>
  <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT"> &nbsp; <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="index.html#SEC_Top">Top</A>]</TD>
  <TD VALIGN="MIDDLE" ALIGN="LEFT">[<A HREF="manual_toc.html#SEC_Contents">Contents</A>]</TD>
  <TD VALIGN="MIDDLE" ALIGN="LEFT">[Index]</TD>
***************
*** 646,652 ****
  <BR>
  <FONT SIZE="-1">
  This document was generated
- by <I>steve</I> on <I>March 24 2007</I>
  using <A HREF="http://texi2html.cvshome.org"><I>texi2html</I></A>
  </FONT>
  
--- 687,693 ----
  <BR>
  <FONT SIZE="-1">
  This document was generated
+ by <I>steve</I> on <I>May 18 2007</I>
  using <A HREF="http://texi2html.cvshome.org"><I>texi2html</I></A>
  </FONT>
  
