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