.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 "ps_3_0 Cg"
.TH ps_3_0 Cg "" "Cg Toolkit 2.2" "Cg Profiles"
.UC
.SH "NAME"
\&\fBps_3_0\fR \- Direct3D Shader Model 3.0 fragment profile for DirectX 9
.SH "SYNOPSIS"
.IX Header "SYNOPSIS"
.Vb 1
\&  ps_3_0
.Ve
.SH "DESCRIPTION"
.IX Header "DESCRIPTION"
This Direct3D profile corresponds to the per-fragment functionality
introduced by GeForce \s-1FX\s0 (NV3x) for DirectX 9.
.PP
The compiler output for this profile conforms to the textual assembly
defined by DirectX 9's Pixel Shader 3.0 shader format.  See:
.PP
.Vb 1
\&  http://msdn2.microsoft.com/en-us/library/bb219845.aspx
.Ve
Data-dependent loops \fIare\fR allowed with a limit of 256 iterations
maximum.  Four levels of nesting are allowed.
.PP
Conditional expressions \fIcan be\fR supported with data-dependent branching.
.PP
Relative indexing of uniform arrays is not supported; use texture
accesses instead.
.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"
.Ip "half" 8
.IX Item "half"
The \fBhalf\fR data type makes use of the Partial Precision instruction
modifier to request less precision.
.Sp
\&\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"
\&\fBfloat\fR values in \fBps_3_0\fR require 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.
.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 \fBps_3_0\fR profile correspond to the
respectively named varying output semantics of the \fBvs_3_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 may have limits on the number of dependent texture fetches.
.SH "SEE ALSO"
.IX Header "SEE ALSO"
The OpenGL fp40 profile is rougly equivalent to the \fBps_3_0\fR profile.
