• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1Name
2
3    NV_texture_shader2
4
5Name Strings
6
7    GL_NV_texture_shader2
8
9Contact
10
11    Mark J. Kilgard, NVIDIA Corporation (mjk 'at' nvidia.com)
12
13Notice
14
15    Copyright NVIDIA Corporation, 1999, 2000, 2001.
16
17IP Status
18
19    NVIDIA Proprietary.
20
21Version
22
23    NVIDIA Date:  April 29, 2004
24    Version:      9
25
26Number
27
28    231
29
30Dependencies
31
32    Written based on the wording of the OpenGL 1.2.1 specification,
33    augmented by the NV_texture_shader extension specification.
34
35    Requires support for the NV_texture_shader extension.
36
37Overview
38
39    This extension extends the NV_texture_shader functionality to
40    support texture shader operations for 3D textures.
41
42    See the NV_texture_shader extension for information about the
43    texture shader operational model.
44
45    The two new texture shader operations are:
46
47    <conventional textures>
48
49    22.  TEXTURE_3D - Accesses a 3D texture via (s/q,t/q,r/q).
50
51    <dot product textures>
52
53    23.  DOT_PRODUCT_TEXTURE_3D_NV - When preceded by two DOT_PRODUCT_NV
54         programs in the previous two texture shader stages, computes a
55         third similar dot product and composes the three dot products
56         into (s,t,r) texture coordinate set to access a 3D non-projective
57         texture.
58
59Issues
60
61    Why a separate extension?
62
63      Not all implementations of NV_texture_shader will support 3D
64      textures in hardware.
65
66      Breaking this extension out into a distinct extension allows OpenGL
67      programs that only would use 3D textures if they are supported
68      in hardware to determine whether hardware support is available by
69      explicitly looking for the NV_texture_shader2 extension.
70
71    What if an implementation wanted to support NV_texture_shader2
72    operations within a software rasterizer?
73
74      Implementations should be free to implement the 3D texture texture
75      shader operations in software.  In this case, the implementation
76      should NOT advertise the NV_texture_shader2 extension, but should
77      still accept the GL_TEXTURE_3D and GL_DOT_PRODUCT_TEXTURE_3D_NV
78      texture shader operations without an error.  Likewise, the
79      glTexImage3D command should accept the new internal texture formats,
80      formats, and types allowed by this extension should be accepted
81      without an error.
82
83      When NV_texture_shader2 is not advertised in the GL_EXTENSIONS
84      string, but the extension functionality works without GL errors,
85      programs should expect that these two texture shader operations
86      are slow.
87
88New Procedures and Functions
89
90    None.
91
92New Tokens
93
94    When the <target> and <pname> parameters of TexEnvf, TexEnvfv,
95    TexEnvi, and TexEnviv are TEXTURE_SHADER_NV and SHADER_OPERATION_NV
96    respectively, then the value of <param> or the value pointed to by
97    <params> may be:
98
99        TEXTURE_3D
100        DOT_PRODUCT_TEXTURE_3D_NV                 0x86EF
101
102    Accepted by the <format> parameter of TexImage3D and TexSubImage3D:
103
104        HILO_NV                                   0x86F4
105        DSDT_NV                                   0x86F5
106        DSDT_MAG_NV                               0x86F6
107        DSDT_MAG_VIB_NV                           0x86F7
108
109    Accepted by the <type> parameter of TexImage3D and TexSubImage3D:
110
111        UNSIGNED_INT_S8_S8_8_8_NV                 0x86DA
112        UNSIGNED_INT_8_8_S8_S8_REV_NV             0x86DB
113
114    Accepted by the <internalformat> parameter of TexImage3D:
115
116        SIGNED_RGBA_NV                            0x86FB
117        SIGNED_RGBA8_NV                           0x86FC
118        SIGNED_RGB_NV                             0x86FE
119        SIGNED_RGB8_NV                            0x86FF
120        SIGNED_LUMINANCE_NV                       0x8701
121        SIGNED_LUMINANCE8_NV                      0x8702
122        SIGNED_LUMINANCE_ALPHA_NV                 0x8703
123        SIGNED_LUMINANCE8_ALPHA8_NV               0x8704
124        SIGNED_ALPHA_NV                           0x8705
125        SIGNED_ALPHA8_NV                          0x8706
126        SIGNED_INTENSITY_NV                       0x8707
127        SIGNED_INTENSITY8_NV                      0x8708
128        SIGNED_RGB_UNSIGNED_ALPHA_NV              0x870C
129        SIGNED_RGB8_UNSIGNED_ALPHA8_NV            0x870D
130
131    Accepted by the <internalformat> parameter of TexImage3D:
132
133        HILO_NV
134        HILO16_NV                                 0x86F8
135        SIGNED_HILO_NV                            0x86F9
136        SIGNED_HILO16_NV                          0x86FA
137        DSDT_NV
138        DSDT8_NV                                  0x8709
139        DSDT_MAG_NV
140        DSDT8_MAG8_NV                             0x870A
141        DSDT_MAG_INTENSITY_NV                     0x86DC
142        DSDT8_MAG8_INTENSITY8_NV                  0x870B
143
144Additions to Chapter 2 of the 1.2 Specification (OpenGL Operation)
145
146     None
147
148Additions to Chapter 3 of the 1.2 Specification (Rasterization)
149
150 --  Section 3.8 "Texturing"
151
152     Replace the third paragraph (amended by the NV_texture_shader
153     extension) with the following that includes 3D texture references:
154
155     "The alternative to conventional texturing is the texture shaders
156     mechanism.  When texture shaders are enabled, each texture unit
157     uses one of twenty-three texture shader operations.  Twenty of the
158     twenty-three shader operations map an (s,t,r,q) texture coordinate
159     set to an RGBA color.  Of these, four texture shader operations
160     directly correspond to the 1D, 2D, 3D, and cube map conventional
161     texturing operations.  Depending on the texture shader operation,
162     the mapping from the (s,t,r,q) texture coordinate set to an RGBA
163     color may depend on the given texture unit's currently bound
164     texture object state and/or the results of previous texture
165     shader operations.  The three remaining texture shader operations
166     respectively provide a fragment culling mechanism based on texture
167     coordinates, a means to replace the fragment depth value, and a dot
168     product operation that computes a floating-point value for use by
169     subsequent texture shaders.  The specifics of each texture shader
170     operation are described in section 3.8.12."
171
172 --  Section 3.8.2 "Alternate Texture Image Specification Commands"
173
174     Amend the following text inserted by NV_texture_shader after the
175     six paragraph to include 3D texture references:
176
177     "CopyTexSubImage3D, CopyTexSubImage2D, and CopyTexSubImage1D generate
178     the error INVALID_OPERATION if the internal format of the texture
179     array to which the pixels are to be copied is one of HILO_NV,
180     HILO16_NV, SIGNED_HILO_NV, SIGNED_HILO16_NV, DSDT_NV, DSDT8_NV,
181     DSDT_MAG_NV, DSDT8_MAG8_NV, DSDT_MAG_INTENSITY_NV, or
182     DSDT8_MAG8_INTENSITY8_NV.
183
184     TexSubImage3D, TexSubImage2D, and TexSubImage1D generate the error
185     INVALID_OPERATION if the internal format of the texture array
186     to which the texels are to be copied has a different format type
187     (according to table 3.15) than the format type of the texels being
188     specified.  Specifically, if the base internal format is not one of
189     HILO_NV, DSDT_NV, DSDT_MAG_NV, or DSDT_INTENSITY_NV, then the format
190     parameter must be one of COLOR_INDEX, RED, GREEN, BLUE, ALPHA,
191     RGB, RGBA, LUMINANCE, or LUMINANCE_ALPHA; if the base internal
192     format is HILO_NV, then the format parameter must be HILO_NV;
193     if the base internal format is DSDT_NV, then the format parameter
194     must be DSDT_NV; if the base internal format is DSDT_MAG_NV, then
195     the format parameter must be DSDT_MAG_NV; if the base internal
196     format is DSDT_MAG_INTENSITY_NV, the format parameter must be
197     DSDT_MAG_VIB_NV."
198
199 --  Section 3.8.13 "Texture Shaders"
200
201     Amend the designated paragraphs of the NV_texture_shader
202     specification to include discussion of 3D textures.
203
204     1st paragraph:
205
206     "Each texture unit is configured with one of twenty-three
207     texture shader operations.  Several texture shader operations
208     require additional state.  All per-texture shader stage state
209     is specified using the TexEnv commands with the target specified
210     as TEXTURE_SHADER_NV.  The per-texture shader state is replicated
211     per texture unit so the texture unit selected by ActiveTextureARB
212     determines which texture unit's environment is modified by TexEnv
213     calls."
214
215     3rd paragraph:
216
217     "When TexEnv is called with the target of TEXTURE_SHADER_NV,
218     SHADER_OPERATION_NV may be set to one of NONE, TEXTURE_1D,
219     TEXTURE_2D, TEXTURE_3D, TEXTURE_CUBE_MAP_ARB, PASS_THROUGH_NV,
220     CULL_FRAGMENT_NV, OFFSET_TEXTURE_2D_NV, OFFSET_TEXTURE_2D_SCALE_NV,
221     OFFSET_TEXTURE_RECTANGLE_NV, OFFSET_TEXTURE_RECTANGLE_SCALE_NV,
222     DEPENDENT_AR_TEXTURE_2D_NV, DEPENDENT_GB_TEXTURE_2D_NV,
223     DOT_PRODUCT_NV, DOT_PRODUCT_DEPTH_REPLACE_NV,
224     DOT_PRODUCT_TEXTURE_2D_NV, DOT_PRODUCT_TEXTURE_RECTANGLE_NV,
225     DOT_PRODUCT_TEXTURE_3D_NV, DOT_PRODUCT_TEXTURE_CUBE_MAP_NV,
226     DOT_PRODUCT_DIFFUSE_CUBE_MAP_NV, DOT_PRODUCT_REFLECT_CUBE_MAP_NV, or
227     DOT_PRODUCT_CONST_EYE_REFLECT_CUBE_MAP_NV.  The semantics of each of
228     these shader operations is described in section 3.8.13.1.  Not every
229     operation is supported in every texture unit.  The restrictions for
230     how these shader operations can be configured in various texture
231     units are described in section 3.8.13.2."
232
233     3.8.13.1  Texture Shader Operations
234
235     Amend tables 3.A, 3.B, 3.C, and 3.D in the NV_texture_shader
236     specification to include entries for 3D texture operations:
237
238     Table 3.A:
239
240                                                                                               texture shader
241texture shader operation i         previous texture input     texture shader operation i-1     operation i-2     texture shader operation i+1
242=================================  =========================  ===============================  ================  ================================
243TEXTURE_3D                         -                          -                                -                 -
244---------------------------------  -------------------------  -------------------------------  ----------------  --------------------------------
245DOT_PRODUCT_TEXTURE_3D_NV          shader result type must    shader operation                 shader operation  -
246                                    be one of signed HILO,     must be                          must be
247                                    unsigned HILO, all         DOT_PRODUCT_NV                   DOT_PRODUCT_NV
248                                    signed RGBA, all
249                                    unsigned RGBA
250---------------------------------  -------------------------  -------------------------------  ----------------  --------------------------------
251
252     Table 3.B:
253
254texture shader operation i         texture unit i
255=================================  =======================================
256TEXTURE_3D                         3D target must be consistent
257---------------------------------  ---------------------------------------
258DOT_PRODUCT_TEXTURE_3D_NV          3D target must be consistent
259---------------------------------  ---------------------------------------
260
261     Table 3.C:
262
263                                                          uses    uses    uses    uses             uses       offset    uses
264                                   texture                stage   stage   stage   previous  uses   offset     texture   const
265                                   coordinate  texture    result  result  result  texture   cull   texture    2D scale  eye
266texture shader operation i         set usage   target     i-1     i-2     i+1     input     modes  2D matrix  and bias  vector
267=================================  ==========  =========  ======  ======  ======  ========  =====  =========  ========  ======
268TEXTURE_3D                         s,t,r,q     3D         -       -       -       -         -      -          -         -
269---------------------------------  ----------  ---------  ------  ------  ------  --------  -----  ---------  --------  ------
270DOT_PRODUCT_TEXTURE_3D_NV          s,t,r       3D         y       y       -       y         -      -          -         -
271---------------------------------  ----------  ---------  ------  ------  ------  --------  -----  ---------  --------  ------
272
273     Table 3.D:
274
275texture shader operation i         shader stage result type       shader stage result                  texture unit RGBA color result
276=================================  =============================  ===================================  ======================================
277TEXTURE_3D                         matches 3D target type         filtered 3D target texel             if 3D target texture type is RGBA,
278                                                                                                        filtered 3D target texel,
279                                                                                                        else (0,0,0,0)
280---------------------------------  -----------------------------  -----------------------------------  --------------------------------------
281DOT_PRODUCT_TEXTURE_3D_NV          matches 3D target type         filtered 3D target texel             if 3D target texture type is RGBA,
282                                                                                                        filtered 3D target texel,
283                                                                                                        else (0,0,0,0)
284-------------------------------    -----------------------------  -----------------------------------  --------------------------------------
285
286     Add the following new sections specifying new 3D texture operations:
287
288     3.8.13.1.22  3D Projective Texturing
289
290     The TEXTURE_3D texture shader operation accesses the texture unit's
291     3D texture object (as described in sections 3.8.4, 3.8.5, and 3.8.6)
292     using (s/q,t/q,r/q) for the 3D texture coordinates where s, t, r,
293     and q are the homogeneous texture coordinates for the texture unit.
294     The result of the texture access becomes both the shader result and
295     texture unit RGBA result (see table 3.E).  The type of the shader
296     result depends on the format type of the accessed texture.  This mode
297     is equivalent to conventional texturing's 3D texture target.
298
299     If the texture unit's 3D texture object is not consistent, then
300     this texture shader stage is not consistent.
301
302     If this texture shader stage is not consistent, it operates as if
303     it is the NONE operation.
304
305     3.8.13.1.23  Dot Product Texture 3D
306
307     The DOT_PRODUCT_TEXTURE_3D_NV texture shader operation accesses the
308     texture unit's 3D texture object (as described in sections 3.8.4,
309     3.8.5, and 3.8.6) using (dotPP,dotP,dotC) for the 3D texture
310     coordinates.  The result of the texture access becomes both
311     the shader result and texture unit RGBA result (see table 3.E).
312     The type of the shader result depends on the format type of the
313     accessed texture.
314
315     Assuming that i is the current texture shader stage, dotPP is the
316     floating-point dot product texture shader result from the i-2
317     texture shader stage, assuming the i-2 texture shader stage's
318     operation is DOT_PRODUCT_NV.  dotP is the floating-point dot
319     product texture shader result from the i-1 texture shader stage,
320     assuming the i-1 texture shader stage's operation is DOT_PRODUCT_NV.
321     dotC is the floating-point dot product result from the current
322     texture shader stage.  dotC is computed in the identical manner
323     used to compute the floating-point result of the DOT_PRODUCT_NV
324     texture shader described in section 3.8.13.1.14.
325
326     If the previous texture input texture object specified by the
327     current texture shader stage's PREVIOUS_TEXTURE_INPUT_NV value has
328     a format type other than RGBA or HILO (the DSDT_MAG_INTENSITY_NV
329     base internal format does not count as an RGBA format type in this
330     context), then this texture shader stage is not consistent.
331
332     If the previous texture input texture shader operation specified by
333     the current texture shader stage's PREVIOUS_TEXTURE_INPUT_NV value
334     is DOT_PRODUCT_NV, then this texture shader stage is not consistent.
335
336     If the previous texture input texture shader result specified by
337     the current texture shader stage's PREVIOUS_TEXTURE_INPUT_NV value
338     is invalid, then this texture shader stage is not consistent.
339
340     If the previous texture input shader stage specified by the current
341     texture shader stage's PREVIOUS_TEXTURE_INPUT_NV value is not
342     consistent, then this texture shader stage is not consistent.
343
344     If either the i-1 or i-2 texture shader stage operation is not
345     DOT_PRODUCT_NV, then this texture shader stage is not consistent.
346
347     If either the i-1 or i-2 texture shader stage is not consistent, then
348     this texture shader stage is not consistent.
349
350     If the texture unit's 3D texture object is not consistent, then
351     this texture shader stage is not consistent.
352
353     If this texture shader stage is not consistent, it operates as if
354     it is the NONE operation.
355
356     3.8.13.2  Texture Shader Restrictions
357
358     Amend the first four paragraphs in this section to include 3D
359     texture operations:
360
361     "There are various restrictions on possible texture shader
362     configurations.  These restrictions are described in this section.
363
364     The error INVALID_OPERATION occurs if the SHADER_OPERATION_NV
365     parameter for texture unit 0 is assigned one of
366     OFFSET_TEXTURE_2D_NV, OFFSET_TEXTURE_2D_SCALE_NV,
367     OFFSET_TEXTURE_RECTANGLE_NV, OFFSET_TEXTURE_RECTANGLE_SCALE_NV,
368     DEPENDENT_AR_TEXTURE_2D_NV, DEPENDENT_GB_TEXTURE_2D_NV,
369     DOT_PRODUCT_NV, DOT_PRODUCT_DEPTH_REPLACE_NV,
370     DOT_PRODUCT_TEXTURE_2D_NV, DOT_PRODUCT_TEXTURE_RECTANGLE_NV,
371     DOT_PRODUCT_TEXTURE_3D_NV, DOT_PRODUCT_TEXTURE_CUBE_MAP_NV,
372     DOT_PRODUCT_DIFFUSE_CUBE_MAP_NV, DOT_PRODUCT_REFLECT_CUBE_MAP_NV,
373     or DOT_PRODUCT_CONST_EYE_REFLECT_CUBE_MAP_NV.  Each of these
374     texture shaders requires a previous texture shader result that
375     is not possible for texture unit 0.  Therefore these shaders are
376     disallowed for texture unit 0.
377
378     The error INVALID_OPERATION occurs if the
379     SHADER_OPERATION_NV parameter for texture unit
380     1 is assigned one of DOT_PRODUCT_DEPTH_REPLACE_NV,
381     DOT_PRODUCT_TEXTURE_2D_NV, DOT_PRODUCT_TEXTURE_RECTANGLE_NV,
382     DOT_PRODUCT_TEXTURE_3D_NV, DOT_PRODUCT_TEXTURE_CUBE_MAP_NV,
383     DOT_PRODUCT_DIFFUSE_CUBE_MAP_NV, DOT_PRODUCT_REFLECT_CUBE_MAP_NV,
384     or DOT_PRODUCT_CONST_EYE_REFLECT_CUBE_MAP_NV.  Each of these texture
385     shaders requires either two previous texture shader results or
386     a dot product result that cannot be generated by texture unit 0.
387     Therefore these shaders are disallowed for texture unit 1.
388
389     The error INVALID_OPERATION occurs if the
390     SHADER_OPERATION_NV parameter for texture unit
391     2 is assigned one of DOT_PRODUCT_TEXTURE_3D_NV,
392     DOT_PRODUCT_TEXTURE_CUBE_MAP_NV, DOT_PRODUCT_REFLECT_CUBE_MAP_NV,
393     DOT_PRODUCT_CONST_EYE_REFLECT_CUBE_MAP_NV.  Each of these texture
394     shaders requires three previous texture shader results.  Therefore
395     these shaders are disallowed for texture unit 2."
396
397     3.8.13.3  Required State
398
399     Amend the first paragraph in this section to account for the 2 new
400     3D texture shader operations:
401
402     "The state required for texture shaders consists of a single bit to
403     indicate whether or not texture shaders are enabled, a vector of
404     three floating-point values for the constant eye vector, and n sets
405     of per-texture unit state where n is the implementation-dependent
406     number of supported texture units.  The set of per-texture unit
407     texture shader state consists of the twenty-three-valued integer
408     indicating the texture shader operation, four two-valued integers
409     indicating the cull modes, an integer indicating the previous texture
410     unit input, a two-valued integer indicating the RGBA unsigned dot
411     product mapping mode, a 2x2 floating-point matrix indicating the
412     texture offset transform, a floating-point value indicating the
413     texture offset scale, a floating-point value indicating the texture
414     offset bias, and a bit to indicate whether or not the texture shader
415     stage is consistent."
416
417Additions to Chapter 4 of the 1.2 Specification (Per-Fragment Operations
418and the Frame Buffer)
419
420     None
421
422Additions to Chapter 5 of the 1.2 Specification (Special Functions)
423
424     None
425
426Additions to Chapter 6 of the 1.2 Specification (State and State Requests)
427
428     None
429
430Additions to the GLX Specification
431
432     None
433
434Dependencies on other specifications
435
436     Same as the NV_texture_shader extension.
437
438Errors
439
440     The following errors are updated to reflect 3D texture operations:
441
442     INVALID_OPERATION is generated if a packed pixel format type listed
443     in table 3.8 is used with DrawPixels, ReadPixels, ColorTable,
444     ColorSubTable, ConvolutionFilter1D, ConvolutionFilter2D,
445     SeparableFilter2D, GetColorTable, GetConvolutionFilter,
446     GetSeparableFilter, GetHistogram, GetMinmax, TexImage1D, TexImage2D,
447     TexImage3D, TexSubImage1D, TexSubImage2D, TexSubImage3d, or
448     GetTexImage but the format parameter does not match on of the allowed
449     Matching Pixel Formats listed in table 3.8 for the specified packed
450     type parameter.
451
452     INVALID_OPERATION is generated when TexImage1D, TexImage2D,
453     or TexImage3D are called and the format is HILO_NV and the
454     internalformat is not one of HILO_NV, HILO16_NV, SIGNED_HILO_NV,
455     SIGNED_HILO16_NV; or if the internalformat is one of HILO_NV,
456     HILO16_NV, SIGNED_HILO_NV, or SIGNED_HILO16_NV and the format is
457     not HILO_NV.
458
459     INVALID_OPERATION is generated when TexImage3D, TexImage2D,
460     or TexImage1D is called and if the format is DSDT_NV and the
461     internalformat is not either DSDT_NV or DSDT8_NV; or if the internal
462     format is either DSDT_NV or DSDT8_NV and the format is not DSDT_NV.
463
464     INVALID_OPERATION is generated when TexImage3D, TexImage2D, or
465     TexImage1D is called and if the format is DSDT_MAG_NV and the
466     internalformat is not either DSDT_MAG_NV or DSDT8_MAG8_NV; or if
467     the internal format is either DSDT_MAG_NV or DSDT8_MAG8_NV and the
468     format is not DSDT_MAG_NV.
469
470     INVALID_OPERATION is generated when TexImage3D, TexImage2D,
471     or TexImage1D is called and if the format is DSDT_MAG_VIB_NV
472     and the internalformat is not either DSDT_MAG_INTENSITY_NV or
473     DSDT8_MAG8_INTENSITY8_NV; or if the internal format is either
474     DSDT_MAG_INTENSITY_NV or DSDT8_MAG8_INTENSITY8_NV and the format
475     is not DSDT_MAG_VIB_NV.
476
477     INVALID_OPERATION is generated when CopyTexImage2D, CopyTexImage1D,
478     CopyTexSubImage3D, CopyTexSubImage2D, or CopyTexSubImage1D is called
479     and the internal format of the texture array to which the pixels
480     are to be copied is one of HILO_NV, HILO16_NV, SIGNED_HILO_NV,
481     SIGNED_HILO16_NV, DSDT_NV, DSDT8_NV, DSDT_MAG_NV, DSDT8_MAG8_NV,
482     DSDT_MAG_INTENSITY_NV, or DSDT8_MAG8_INTENSITY8_NV.
483
484     INVALID_OPERATION is generated when TexSubImage3D, TexSubImage2D, or
485     TexSubImage1D is called and the texture array's base internal format
486     is not one of HILO_NV, DSDT_NV, DSDT_MAG_NV, or DSDT_INTENSITY_NV,
487     and the format parameter is not one of COLOR_INDEX, RED,
488     GREEN, BLUE, ALPHA, RGB, RGBA, LUMINANCE, or
489     LUMINANCE_ALPHA
490
491     INVALID_OPERATION is generated when TexSubImage3D, TexSubImage2D, or
492     TexSubImage1D is called and the texture array's base internal format
493     is HILO_NV and the format parameter is not HILO_NV.
494
495     INVALID_OPERATION is generated when TexSubImage3D, TexSubImage2D, or
496     TexSubImage1D is called and the texture array's base internal format
497     is DSDT_NV and the format parameter is not DSDT_NV.
498
499     INVALID_OPERATION is generated when TexSubImage3D, TexSubImage2D, or
500     TexSubImage1D is called and the texture array's base internal format
501     is DSDT_MAG_NV and the format parameter is not DSDT_MAG_NV.
502
503     INVALID_OPERATION is generated when TexSubImage3D, TexSubImage2D,
504     or TexSubImage1D is called and the texture array's base internal
505     format is DSDT_MAG_INTENSITY_NV and the format parameter is not
506     DSDT_MAG_VIRBANCE_NV.
507
508     INVALID_OPERATION is generated when TexEnv is called and the
509     SHADER_OPERATION_NV parameter for texture unit 0 is assigned
510     one of OFFSET_TEXTURE_2D_NV, OFFSET_TEXTURE_2D_SCALE_NV,
511     OFFSET_TEXTURE_RECTANGLE_NV, OFFSET_TEXTURE_RECTANGLE_SCALE_NV,
512     DEPENDENT_AR_TEXTURE_2D_NV, DEPENDENT_GB_TEXTURE_2D_NV,
513     DOT_PRODUCT_NV, DOT_PRODUCT_DEPTH_REPLACE_NV,
514     DOT_PRODUCT_TEXTURE_2D_NV, DOT_PRODUCT_TEXTURE_RECTANGLE_NV,
515     DOT_PRODUCT_TEXTURE_3D_NV, DOT_PRODUCT_TEXTURE_CUBE_MAP_NV,
516     DOT_PRODUCT_DIFFUSE_CUBE_MAP_NV, DOT_PRODUCT_REFLECT_CUBE_MAP_NV.
517     or DOT_PRODUCT_CONST_EYE_REFLECT_CUBE_MAP_NV.
518
519     INVALID_OPERATION is generated when TexEnv is called
520     and the SHADER_OPERATION_NV parameter for texture
521     unit 1 is assigned one of DOT_PRODUCT_DEPTH_REPLACE_NV,
522     DOT_PRODUCT_TEXTURE_2D_NV, DOT_PRODUCT_TEXTURE_RECTANGLE_NV,
523     DOT_PRODUCT_TEXTURE_3D_NV, DOT_PRODUCT_TEXTURE_CUBE_MAP_NV,
524     DOT_PRODUCT_DIFFUSE_CUBE_MAP_NV, DOT_PRODUCT_REFLECT_CUBE_MAP_NV,
525     or DOT_PRODUCT_CONST_EYE_REFLECT_CUBE_MAP_NV.
526
527     INVALID_OPERATION is generated when TexEnv is called
528     and the SHADER_OPERATION_NV parameter for texture
529     unit 2 is assigned one of DOT_PRODUCT_TEXTURE_3D_NV,
530     DOT_PRODUCT_TEXTURE_CUBE_MAP_NV, DOT_PRODUCT_REFLECT_CUBE_MAP_NV,
531     or DOT_PRODUCT_CONST_EYE_REFLECT_CUBE_MAP_NV.
532
533     INVALID_OPERATION is generated when TexEnv is called and the
534     SHADER_OPERATION_NV parameter for texture unit n-1 (where n is the
535     number of supported texture units) is assigned either DOT_PRODUCT_NV
536     or DOT_PRODUCT_DIFFUSE_CUBE_MAP_NV.
537
538     INVALID_OPERATION is generated when GetTexImage is called with a
539     color format (one of RED, GREEN, BLUE, ALPHA, RGB, RGBA, LUMINANCE,
540     or LUMINANCE_ALPHA) when the texture image is of a format type (see
541     table 3.15) other than RGBA (the DSDT_MAG_INTENSITY_NV base internal
542     format does not count as an RGBA format type in this context).
543
544     INVALID_OPERATION is generated when GetTexImage is called with
545     a format of HILO when the texture image is of a format type (see
546     table 3.15) other than HILO.
547
548     INVALID_OPERATION is generated when GetTexImage is called with a
549     format of DSDT_NV when the texture image is of a base internal
550     format other than DSDT_NV.
551
552     INVALID_OPERATION is generated when GetTexImage is called with a
553     format of DSDT_MAG_NV when the texture image is of a base internal
554     format other than DSDT_MAG_NV.
555
556     INVALID_OPERATION is generated when GetTexImage is called with a
557     format of DSDT_MAG_VIBRANCE_NV when the texture image is of a base
558     internal format other than DSDT_MAG_INTENSITY_NV causes the error
559     INVALID_OPERATION."
560
561New State
562
563Table 6.TextureShaders.  Texture Shaders.
564
565Get Value                    Type    Get Command  Initial Value         Description          Sec     Attribute
566---------------------------  ------  -----------  --------------------  -------------------  ------  --------------
567SHADER_OPERATION_NV          TxZ23   GetTexEnviv  NONE                  Texture shader       3.8.13  texture
568                                                                        operation
569
570* Z21 in NV_texture_shader is now Z23 with NV_texture_shader2.
571
572[ The "Tx" type prefix means that the state is per-texture unit. ]
573
574[ The "Zn" type is an n-valued integer where n is the
575  implementation-dependent number of texture units supported.]
576
577New Implementation State
578
579     None
580
581Revision History
582
583     None
584