.de Sh \" Subsection heading
.br
.if t .Sp
.ne 5
.PP
\fB\\$1\fR
.PP
..
.de Sp \" Vertical space (when we can't use .PP)
.if t .sp .5v
.if n .sp
..
.de Ip \" List item
.br
.ie \\n(.$>=3 .ne \\$3
.el .ne 3
.IP "\\$1" \\$2
..
.de Vb \" Begin verbatim text
.ft CW
.nf
.ne \\$1
..
.de Ve \" End verbatim text
.ft R

.fi
..
.tr \(*W-|\(bv\*(Tr
.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p'
.ie n \{\
.    ds -- \(*W-
.    ds PI pi
.    if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch
.    if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\"  diablo 12 pitch
.    ds L" ""
.    ds R" ""
.    ds C` ""
.    ds C' ""
'br\}
.el\{\
.    ds -- \|\(em\|
.    ds PI \(*p
.    ds L" ``
.    ds R" ''
'br\}
.if \nF \{\
.    de IX
.    tm Index:\\$1\t\\n%\t"\\$2"
..
.    nr % 0
.    rr F
.\}
.hy 0
.if n .na
.bd B 3
.    \" fudge factors for nroff and troff
.if n \{\
.    ds #H 0
.    ds #V .8m
.    ds #F .3m
.    ds #[ \f1
.    ds #] \fP
.\}
.if t \{\
.    ds #H ((1u-(\\\\n(.fu%2u))*.13m)
.    ds #V .6m
.    ds #F 0
.    ds #[ \&
.    ds #] \&
.\}
.    \" simple accents for nroff and troff
.if n \{\
.    ds ' \&
.    ds ` \&
.    ds ^ \&
.    ds , \&
.    ds ~ ~
.    ds /
.\}
.if t \{\
.    ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u"
.    ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u'
.    ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u'
.    ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u'
.    ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u'
.    ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u'
.\}
.    \" troff and (daisy-wheel) nroff accents
.ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V'
.ds 8 \h'\*(#H'\(*b\h'-\*(#H'
.ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#]
.ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H'
.ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u'
.ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#]
.ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#]
.ds ae a\h'-(\w'a'u*4/10)'e
.ds Ae A\h'-(\w'A'u*4/10)'E
.    \" corrections for vroff
.if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u'
.if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u'
.    \" for low resolution devices (crt and lpr)
.if \n(.H>23 .if \n(.V>19 \
\{\
.    ds : e
.    ds 8 ss
.    ds o a
.    ds d- d\h'-1'\(ga
.    ds D- D\h'-1'\(hy
.    ds th \o'bp'
.    ds Th \o'LP'
.    ds ae ae
.    ds Ae AE
.\}
.rm #[ #] #H #V #F C
.IX Title "glslv Cg"
.TH glslv Cg "" "Cg Toolkit 2.2" "Cg Profiles"
.UC
.SH "NAME"
\&\fBglslv\fR \- OpenGL vertex profile for the OpenGL Shading Lanauge (\s-1GLSL\s0)
.SH "SYNOPSIS"
.IX Header "SYNOPSIS"
.Vb 1
\&  glslv
.Ve
.SH "DESCRIPTION"
.IX Header "DESCRIPTION"
This OpenGL profile corresponds to the per-vertex functionality
introduced by the OpenGL Shading Language.
.PP
The compiler output for this profile conforms to the language grammar
defined by the OpenGL Shading Language specification.
.SH "3D API DEPENDENCIES"
.IX Header "3D API DEPENDENCIES"
Requires OpenGL support for \fBOpenGL 2.0\fR.
.SH "PROFILE OPTIONS"
.IX Header "PROFILE OPTIONS"
None.
.SH "DATA TYPES"
.IX Header "DATA TYPES"
The Cg half and fixed data types are both mapped to float because \s-1GLSL\s0 lacks first-class half and fixed data types.
.SH "SEMANTICS"
.IX Header "SEMANTICS"
.Sh "\s-1VARYING\s0 \s-1INPUT\s0 \s-1SEMANTICS\s0"
.IX Subsection "VARYING INPUT SEMANTICS"
.Vb 1
\&  Binding Semantics Name           Corresponding Data           GLSL Equivalent
.Ve
.Vb 2
\&  POSITION                         Object-space position        gl_Vertex
\&  ATTR0
.Ve
.Vb 2
\&  NORMAL                           Object-space normal          gl_Normal
\&  ATTR2
.Ve
.Vb 4
\&  COLOR                            Primary color (float4)       gl_Color
\&  COLOR0
\&  ATTR3
\&  DIFFUSE
.Ve
.Vb 3
\&  COLOR1                           Secondary color (float4)     gl_SecondaryColor
\&  SPECULAR
\&  ATTR4
.Ve
.Vb 2
\&  FOGCOORD                         Fog coordinate               gl_FogCoord
\&  ATTR5
.Ve
.Vb 9
\&  TEXCOORD#                        Texture coordinate set #     gl_MultiTexCoord#
\&  ATTR8                            Texture coordinate set 0
\&  ATTR9                            Texture coordinate set 1
\&  ATTR10                           Texture coordinate set 2
\&  ATTR11                           Texture coordinate set 3
\&  ATTR12                           Texture coordinate set 4
\&  ATTR13                           Texture coordinate set 5
\&  ATTR14                           Texture coordinate set 6
\&  ATTR15                           Texture coordinate set 7
.Ve
.Sh "\s-1UNIFORM\s0 \s-1INPUT\s0 \s-1SEMANTICS\s0"
.IX Subsection "UNIFORM INPUT SEMANTICS"
The Cg profiles for \s-1GLSL\s0 provide access to all the uniform constants and variables documented in Section 7.4 (Built-in Constants) and 7.5 (Built-in Uniform State) respectively of the OpenGL Shading Language specification found at:
.PP
.Vb 2
\&  http://www.opengl.org/documentation/glsl/
\&  http://www.opengl.org/registry/doc/GLSLangSpec.Full.1.20.8.pdf
.Ve
Example:
.PP
.Vb 5
\&  glslv void main(float4 position : POSITION,
\&                  out float4 opos : POSITION)
\&  {
\&    opos = mul(gl_ModelViewMatrix, position);
\&  }
.Ve
.Sh "\s-1OUTPUT\s0 \s-1SEMANTICS\s0"
.IX Subsection "OUTPUT SEMANTICS"
.Vb 1
\&  Binding Semantics Name         Corresponding Data        GLSL Equivalent
.Ve
.Vb 2
\&  POSITION                       Clip-space position       gl_Position
\&  HPOS
.Ve
.Vb 4
\&  COLOR                          Front primary color       gl_FrontColor
\&  COLOR0
\&  COL0
\&  COL
.Ve
.Vb 2
\&  COLOR1                         Front secondary color     gl_FrontSecondaryColor
\&  COL1
.Ve
.Vb 1
\&  BCOL0                          Back primary color        gl_BackColor
.Ve
.Vb 1
\&  BCOL1                          Back secondary color      gl_BackSecondaryColor
.Ve
.Vb 1
\&  CLPV                           Clip vertex               gl_ClipVertex
.Ve
.Vb 2
\&  TEXCOORD#                      Texture coordinate set #  gl_TexCoord[#}
\&  TEX#
.Ve
.Vb 2
\&  FOGC                           Fog coordinate            gl_FogFragCoord
\&  FOG
.Ve
.Vb 2
\&  PSIZE                          Point size                gl_PointSize
\&  PSIZ
.Ve
.SH "STANDARD LIBRARY ISSUES"
.IX Header "STANDARD LIBRARY ISSUES"
Vertex program Cg standard library routines are available.
.PP
Vertex texture fetches are supported only if the OpenGL implementation
advertises a positive value for the implementation-dependent
\&\s-1GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS\s0 limit.
.SH "SEE ALSO"
.IX Header "SEE ALSO"
The glslg and glslf profiles are translation profiles for 
\&\s-1GLSL\s0 geometry and fragment shaders.
.PP
The \fBglslv\fR profile is similar to the Direct3D hlslv profile that
translates Cg into Microsoft's High Level Shading Language (\s-1HLSL\s0) for
vertex shaders.
