.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 "glslf Cg"
.TH glslf Cg "" "Cg Toolkit 2.2" "Cg Profiles"
.UC
.SH "NAME"
\&\fBglslf\fR \- OpenGL fragment profile for the OpenGL Shading Lanauge (\s-1GLSL\s0)
.SH "SYNOPSIS"
.IX Header "SYNOPSIS"
.Vb 1
\&  glslf
.Ve
.SH "DESCRIPTION"
.IX Header "DESCRIPTION"
This OpenGL profile corresponds to the per-fragment 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 4
\&  COLOR                            Primary color (float4)       gl_Color
\&  COLOR0
\&  COL0
\&  COL
.Ve
.Vb 2
\&  COLOR1                           Secondary color (float4)     gl_SecondaryColor
\&  COL1
.Ve
.Vb 3
\&  TEXCOORD                         Texture coordinate set 0     gl_TexCoord[0]
\&  TEXCOORD#                        Texture coordinate set #     gl_TexCoord[#]
\&  TEX#
.Ve
.Sh "\s-1UNIFORM\s0 \s-1INPUT\s0 \s-1SEMANTICS\s0"
.IX Subsection "UNIFORM INPUT SEMANTICS"
Sixteen texture units are supported:
.PP
.Vb 1
\&  Binding Semantic Name            Corresponding Data
.Ve
.Vb 4
\&  TEXUNIT0                         Texture unit 0
\&  TEXUNIT1                         Texture unit 1
\&  ...
\&  TEXUNIT15                        Texture unit 15
.Ve
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 6
\&  glslf void main(float4 color : COLOR,
\&                  out float4 ocol : COLOR)
\&  {
\&    ocol.xyz = mul(gl_NormalMatrix, color.xyz);
\&    ocol.w = 1;
\&  }
.Ve
.Sh "\s-1OUTPUT\s0 \s-1SEMANTICS\s0"
.IX Subsection "OUTPUT SEMANTICS"
The following standard fragment output semantics are supported:
.PP
.Vb 1
\&  Binding Semantics Name           Corresponding Data      GLSL Equivalent
.Ve
.Vb 4
\&  COLOR                            Output color (float4)   gl_FragColor
\&  COLOR0
\&  COL0
\&  COL
.Ve
.Vb 2
\&  COLOR0-COLOR7                    Output color (float4)   gl_FragData[n]
\&  COL0-COL7                        for draw buffers 0 to 7
.Ve
.Vb 2
\&  DEPTH                            Output depth (float)    gl_FragDepth
\&  DEPR
.Ve
.SH "STANDARD LIBRARY ISSUES"
.IX Header "STANDARD LIBRARY ISSUES"
Fragment program Cg standard library routines are available.
.SH "SEE ALSO"
.IX Header "SEE ALSO"
The glslv and glslg profiles are translation profiles for 
\&\s-1GLSL\s0 vertex and geometry shaders.
.PP
The \fBglslf\fR profile is similar to the DirectX 9 hlslf profile that
translates Cg into Microsoft's High Level Shader Language (\s-1HLSL\s0) for
pixel shaders.
