.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 "hlslf Cg"
.TH hlslf Cg "" "Cg Toolkit 2.2" "Cg Profiles"
.UC
.SH "NAME"
\&\fBhlslf\fR \- Translation profile to DirectX 9's High Level Shader Language for pixel shaders.
.SH "SYNOPSIS"
.IX Header "SYNOPSIS"
.Vb 1
\&  hlslf
.Ve
.SH "DESCRIPTION"
.IX Header "DESCRIPTION"
This Direct3D profile translates Cg into DirectX 9's High Level Shader
Language (\s-1HLSL\s0) for pixel shaders.
.PP
The compiler output for this profile conforms to the textual high-level
language defined by DirectX 9's High Level Shading Language.  See:
.PP
.Vb 1
\&  http://msdn2.microsoft.com/en-us/library/bb509561.aspx
.Ve
The limitations of the \fBhlslf\fR profile depend on what \s-1HLSL\s0 profile to
which the translated \s-1HLSL\s0 code is compiled.
.SH "3D API DEPENDENCIES"
.IX Header "3D API DEPENDENCIES"
Requires Direct3D 9 support.
.SH "PROFILE OPTIONS"
.IX Header "PROFILE OPTIONS"
None.
.SH "DATA TYPES"
.IX Header "DATA TYPES"
In general, the Cg data types translate to the \s-1HLSL\s0 data types with the
same name.
.Ip "half" 8
.IX Item "half"
\&\s-1NVIDIA\s0 GPUs may use half-precision floating-point when the Partial
Precision instruction modifier is specified.  Half-precision
floating-point is encoded with a sign bit, 10 mantissa bits, and 5
exponent bits (biased by 16), sometimes called \fIs10e5\fR.
.Ip "float" 8
.IX Item "float"
The \fBfloat\fR data type corresponds to a floating-point representation
with at least 24 bits.
.Sp
\&\s-1NVIDIA\s0 GPUs supporting \fBhlslf\fR use standard \s-1IEEE\s0 754 single-precision
floating-point encoding with a sign bit, 23 mantissa bits, and 8 exponent
bits (biased by 128), sometimes called \fIs10e5\fR.
.Sp
Older \s-1ATI\s0 GPUs use 24\-bit floating-point.
.Ip "fixed" 8
.IX Item "fixed"
The \fBfixed\fR data type is treated like \fBhalf\fR.
.SH "SEMANTICS"
.IX Header "SEMANTICS"
.Sh "\s-1INPUT\s0 \s-1SEMANTICS\s0"
.IX Subsection "INPUT SEMANTICS"
The varying input semantics in the \fBhlslf\fR profile correspond to the
respectively named varying output semantics of the \fBvs_2_0\fR profile.
.PP
.Vb 1
\&  Binding Semantics Name           Corresponding Data
.Ve
.Vb 4
\&  COLOR                            Input primary color
\&  COLOR0
\&  COL
\&  COL0
.Ve
.Vb 2
\&  COLOR1                           Input secondary color
\&  COL1
.Ve
.Vb 2
\&  TEX0                             Input texture coordinate sets 0
\&  TEXCOORD0
.Ve
.Vb 2
\&  TEX1                             Input texture coordinate sets 1
\&  TEXCOORD1
.Ve
.Vb 2
\&  TEX2                             Input texture coordinate sets 2
\&  TEXCOORD2
.Ve
.Vb 2
\&  TEX3                             Input texture coordinate sets 3
\&  TEXCOORD3
.Ve
.Vb 2
\&  TEX4                             Input texture coordinate sets 4
\&  TEXCOORD4
.Ve
.Vb 2
\&  TEX5                             Input texture coordinate sets 5
\&  TEXCOORD5
.Ve
.Vb 2
\&  TEX6                             Input texture coordinate sets 6
\&  TEXCOORD6
.Ve
.Vb 2
\&  TEX7                             Input texture coordinate sets 7
\&  TEXCOORD7
.Ve
.Vb 2
\&  FOGP                             Input fog color (XYZ) and factor (W)
\&  FOG
.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
.Sh "\s-1OUTPUT\s0 \s-1SEMANTICS\s0"
.IX Subsection "OUTPUT SEMANTICS"
.Vb 4
\&  COLOR                            Output color (float4)
\&  COLOR0
\&  COL0
\&  COL
.Ve
.Vb 2
\&  DEPTH                            Output depth (float)
\&  DEPR
.Ve
.SH "STANDARD LIBRARY ISSUES"
.IX Header "STANDARD LIBRARY ISSUES"
This profile is limited to standard library support available in \s-1HLSL\s0.
In general, the Cg and \s-1HLSL\s0 standard libraries are very similar.
.SH "SEE ALSO"
.IX Header "SEE ALSO"
The \fBhlslf\fR profile is similar to the OpenGL glslf profile that translates Cg into the OpenGL Shading Language (\s-1GLSL\s0) for fragment shaders.
