15bd8deadSopenharmony_ciName 25bd8deadSopenharmony_ci 35bd8deadSopenharmony_ci NV_float_buffer 45bd8deadSopenharmony_ci 55bd8deadSopenharmony_ciName Strings 65bd8deadSopenharmony_ci 75bd8deadSopenharmony_ci GL_NV_float_buffer 85bd8deadSopenharmony_ci WGL_NV_float_buffer 95bd8deadSopenharmony_ci GLX_NV_float_buffer 105bd8deadSopenharmony_ci 115bd8deadSopenharmony_ciContact 125bd8deadSopenharmony_ci 135bd8deadSopenharmony_ci Pat Brown, NVIDIA Corporation (pbrown 'at' nvidia.com) 145bd8deadSopenharmony_ci 155bd8deadSopenharmony_ciNotice 165bd8deadSopenharmony_ci 175bd8deadSopenharmony_ci Copyright NVIDIA Corporation. 185bd8deadSopenharmony_ci 195bd8deadSopenharmony_ciIP Status 205bd8deadSopenharmony_ci 215bd8deadSopenharmony_ci NVIDIA Proprietary. 225bd8deadSopenharmony_ci 235bd8deadSopenharmony_ciStatus 245bd8deadSopenharmony_ci 255bd8deadSopenharmony_ci Implemented in CineFX (NV30) Emulation driver, August 2002. 265bd8deadSopenharmony_ci Shipping in Release 40 NVIDIA driver for CineFX hardware, January 2003. 275bd8deadSopenharmony_ci 285bd8deadSopenharmony_ci Superseded by the more general ARB_texture_float and 295bd8deadSopenharmony_ci ARB_color_buffer_float extensions. However, NV3x-based GPUs are not 305bd8deadSopenharmony_ci capable enough to support the generality of the ARB extensions so 315bd8deadSopenharmony_ci the NV_float_buffer extension remains available for NV3x development 325bd8deadSopenharmony_ci and backward compatibility. 335bd8deadSopenharmony_ci 345bd8deadSopenharmony_ciVersion 355bd8deadSopenharmony_ci 365bd8deadSopenharmony_ci Last Modified: 2006/11/03 375bd8deadSopenharmony_ci NVIDIA Revision: 20 385bd8deadSopenharmony_ci 395bd8deadSopenharmony_ciNumber 405bd8deadSopenharmony_ci 415bd8deadSopenharmony_ci 281 425bd8deadSopenharmony_ci 435bd8deadSopenharmony_ciDependencies 445bd8deadSopenharmony_ci 455bd8deadSopenharmony_ci Written based on the wording of the OpenGL 1.3 specification and the 465bd8deadSopenharmony_ci WGL_ARB_pixel_format extension specification. 475bd8deadSopenharmony_ci 485bd8deadSopenharmony_ci The following extensions are required: 495bd8deadSopenharmony_ci * NV_fragment_program 505bd8deadSopenharmony_ci * NV_texture_rectangle 515bd8deadSopenharmony_ci * WGL_ARB_pixel_format 525bd8deadSopenharmony_ci * WGL_ARB_render_texture 535bd8deadSopenharmony_ci * WGL_NV_render_texture_rectangle 545bd8deadSopenharmony_ci 555bd8deadSopenharmony_ci EXT_paletted_texture trivially affects the definition of this extension. 565bd8deadSopenharmony_ci 575bd8deadSopenharmony_ci SGIX_depth_texture trivially affects the definition of this extension. 585bd8deadSopenharmony_ci 595bd8deadSopenharmony_ci NV_texture_shader trivially affects the definition of this extension. 605bd8deadSopenharmony_ci 615bd8deadSopenharmony_ci NV_half_float trivially affects the definition of this extension. 625bd8deadSopenharmony_ci 635bd8deadSopenharmony_ci ARB_color_buffer_float and ATI_pixel_format_float affect the definition of 645bd8deadSopenharmony_ci this extension. 655bd8deadSopenharmony_ci 665bd8deadSopenharmony_ci ARB_texture_float and ATI_texture_float affect the definition of this 675bd8deadSopenharmony_ci extension. 685bd8deadSopenharmony_ci 695bd8deadSopenharmony_ci This extension modifies EXT_framebuffer_object. 705bd8deadSopenharmony_ci 715bd8deadSopenharmony_ciOverview 725bd8deadSopenharmony_ci 735bd8deadSopenharmony_ci This extension builds upon NV_fragment_program to provide a framebuffer 745bd8deadSopenharmony_ci and texture format that allows fragment programs to read and write 755bd8deadSopenharmony_ci unconstrained floating point data. 765bd8deadSopenharmony_ci 775bd8deadSopenharmony_ci In unextended OpenGL, most computations dealing with color or depth 785bd8deadSopenharmony_ci buffers are typically constrained to operate on values in the range [0,1]. 795bd8deadSopenharmony_ci Computational results are also typically clamped to the range [0,1]. 805bd8deadSopenharmony_ci Color, texture, and depth buffers themselves also hold values mapped to 815bd8deadSopenharmony_ci the range [0,1]. 825bd8deadSopenharmony_ci 835bd8deadSopenharmony_ci The NV_fragment_program extension provides a general computational model 845bd8deadSopenharmony_ci that supports floating-point numbers constrained only by the precision of 855bd8deadSopenharmony_ci the underlying data types. The quantites computed by fragment programs do 865bd8deadSopenharmony_ci not necessarily correspond in number or in range to conventional 875bd8deadSopenharmony_ci attributes such as RGBA colors or depth values. Because of the range and 885bd8deadSopenharmony_ci precision constraints imposed by conventional fixed-point color buffers, 895bd8deadSopenharmony_ci it may be difficult (if not impossible) to use them to implement certain 905bd8deadSopenharmony_ci multi-pass algorithms. 915bd8deadSopenharmony_ci 925bd8deadSopenharmony_ci To enhance the extended range and precision available through fragment 935bd8deadSopenharmony_ci programs, this extension provides floating-point RGBA color buffers that 945bd8deadSopenharmony_ci can be used instead of conventional fixed-point RGBA color buffers. A 955bd8deadSopenharmony_ci floating-point RGBA color buffer consists of one to four floating-point 965bd8deadSopenharmony_ci components stored in the 16- or 32-bit floating-point formats (fp16 or 975bd8deadSopenharmony_ci fp32) defined in the NV_half_float and NV_fragment_program extensions. 985bd8deadSopenharmony_ci 995bd8deadSopenharmony_ci When a floating-point color buffer is used, the results of fragment 1005bd8deadSopenharmony_ci programs, as written to the "x", "y", "z", and "w" components of the 1015bd8deadSopenharmony_ci o[COLR] or o[COLH] output registers, are written directly to the color 1025bd8deadSopenharmony_ci buffer without any clamping or modification. Certain per-fragment 1035bd8deadSopenharmony_ci operations are bypassed when rendering to floating-point color buffers. 1045bd8deadSopenharmony_ci 1055bd8deadSopenharmony_ci A floating-point color buffer can also be used as a texture map, either by 1065bd8deadSopenharmony_ci reading back the contents and then using conventional TexImage calls, or 1075bd8deadSopenharmony_ci by using the buffer directly via the ARB_render_texture extension or 1085bd8deadSopenharmony_ci the EXT_framebuffer_object extension. 1095bd8deadSopenharmony_ci 1105bd8deadSopenharmony_ci This extension has many uses. Some possible uses include: 1115bd8deadSopenharmony_ci 1125bd8deadSopenharmony_ci (1) Multi-pass algorithms with arbitrary intermediate results that 1135bd8deadSopenharmony_ci don't have to be artifically forced into the range [0,1]. In 1145bd8deadSopenharmony_ci addition, intermediate results can be written without having to 1155bd8deadSopenharmony_ci worry about out-of-range values. 1165bd8deadSopenharmony_ci 1175bd8deadSopenharmony_ci (2) Deferred shading algorithms where an expensive fragment program is 1185bd8deadSopenharmony_ci executed only after depth testing is fully complete. Instead, a 1195bd8deadSopenharmony_ci simple program is executed, which stores the parameters necessary 1205bd8deadSopenharmony_ci to produce a final result. After the entire scene is rendered, a 1215bd8deadSopenharmony_ci second pass is executed over the entire frame buffer to execute 1225bd8deadSopenharmony_ci the complex fragment program using the results written to the 1235bd8deadSopenharmony_ci floating-point color buffer in the first pass. This will save the 1245bd8deadSopenharmony_ci cost of applying complex fragment programs to fragments that will 1255bd8deadSopenharmony_ci not appear in the final image. 1265bd8deadSopenharmony_ci 1275bd8deadSopenharmony_ci (3) Use floating-point texture maps to evaluate functions with 1285bd8deadSopenharmony_ci arbitrary ranges. Arbitrary functions with a finite domain can be 1295bd8deadSopenharmony_ci approximated using a texture map holding sample results and 1305bd8deadSopenharmony_ci piecewise linear approximation. 1315bd8deadSopenharmony_ci 1325bd8deadSopenharmony_ci There are several significant limitations on the use of floating-point 1335bd8deadSopenharmony_ci color buffers. First, floating-point color buffers do not support frame 1345bd8deadSopenharmony_ci buffer blending. Second, floating-point texture maps do not support 1355bd8deadSopenharmony_ci mipmapping or any texture filtering other than NEAREST. Third, 1365bd8deadSopenharmony_ci floating-point texture maps must be 2D, and must use the 1375bd8deadSopenharmony_ci NV_texture_rectangle extension. 1385bd8deadSopenharmony_ci 1395bd8deadSopenharmony_ciIssues 1405bd8deadSopenharmony_ci 1415bd8deadSopenharmony_ci Should the extension create a separate non-RGBA pixel formats or simply 1425bd8deadSopenharmony_ci extend existing RGBA formats? 1435bd8deadSopenharmony_ci 1445bd8deadSopenharmony_ci RESOLVED: Extend existing RGBA formats. Since fragment programs 1455bd8deadSopenharmony_ci generally build on RGBA semantics, it's cleaner to avoid creating a 1465bd8deadSopenharmony_ci separate "XYZW" mode. There are several special semantics that need 1475bd8deadSopenharmony_ci to be added: clear color state is now not clamped, and ReadPixels 1485bd8deadSopenharmony_ci will clamp to [0,1] only if the source data comes from fixed-point 1495bd8deadSopenharmony_ci color buffers. 1505bd8deadSopenharmony_ci 1515bd8deadSopenharmony_ci Fragment programs can be written that store data completely unrelated 1525bd8deadSopenharmony_ci to color into a floating-point "RGBA" buffer. 1535bd8deadSopenharmony_ci 1545bd8deadSopenharmony_ci Can floating-point color buffers be displayed? If so, how? 1555bd8deadSopenharmony_ci 1565bd8deadSopenharmony_ci RESOLVED: Not in this extension. Floating-point color buffers can be 1575bd8deadSopenharmony_ci used only as pbuffers. Hardware necessary to display floating-point 1585bd8deadSopenharmony_ci color buffers would be expensive and consume significant memory 1595bd8deadSopenharmony_ci bandwidth. 1605bd8deadSopenharmony_ci 1615bd8deadSopenharmony_ci Is it possible to encode more than four distinct values in a 1625bd8deadSopenharmony_ci floating-point color buffer? 1635bd8deadSopenharmony_ci 1645bd8deadSopenharmony_ci RESOLVED: Yes. The NV_fragment_program extension contains pack and 1655bd8deadSopenharmony_ci unpack instructions (PK2H, PK2US, PK4B, PK4UB, PK4UBG, UP2H, UP2US, 1665bd8deadSopenharmony_ci UP4B, UP4UB, UP4UBG) that allow fragment programs to encode multiple 1675bd8deadSopenharmony_ci values into a single 32-bit component. In particular, it is possible 1685bd8deadSopenharmony_ci to pack two half-precision floats, two normalized unsigned shorts, or 1695bd8deadSopenharmony_ci four normalized signed or unsigned bytes into a single 32-bit 1705bd8deadSopenharmony_ci component. 1715bd8deadSopenharmony_ci 1725bd8deadSopenharmony_ci A program can use a pack instruction to pack multiple values into a 1735bd8deadSopenharmony_ci single 32-bit component and then write the resulting component to a 1745bd8deadSopenharmony_ci floating-point color buffer with 32-bit components. On a subsequent 1755bd8deadSopenharmony_ci rendering pass, a program can read back the stored data (using texture 1765bd8deadSopenharmony_ci mapping) and use the equivalent unpack instruction to restore the 1775bd8deadSopenharmony_ci original values. The only data lost in this process comes from the 1785bd8deadSopenharmony_ci loss of precision or clamping in the packing operation, where the 1795bd8deadSopenharmony_ci original values are converted to data types with lower precision or a 1805bd8deadSopenharmony_ci smaller data range. 1815bd8deadSopenharmony_ci 1825bd8deadSopenharmony_ci What happens when rendering to a floating-point color buffer if fragment 1835bd8deadSopenharmony_ci program mode is disabled? Or when fragment program mode is enabled, but 1845bd8deadSopenharmony_ci no program is loaded? 1855bd8deadSopenharmony_ci 1865bd8deadSopenharmony_ci RESOLVED: Fragment programs are required to use floating-point color 1875bd8deadSopenharmony_ci buffers. An INVALID_OPERATION error is generated by any GL command 1885bd8deadSopenharmony_ci that generates fragments if FRAGMENT_PROGRAM_NV is disabled. The same 1895bd8deadSopenharmony_ci behavior already exists for conventional frame buffers if 1905bd8deadSopenharmony_ci FRAGMENT_PROGRAM_NV is enabled but the bound fragment program is 1915bd8deadSopenharmony_ci invalid. 1925bd8deadSopenharmony_ci 1935bd8deadSopenharmony_ci Should alpha test be supported with floating-point color buffers? 1945bd8deadSopenharmony_ci 1955bd8deadSopenharmony_ci RESOLVED: No. It is trivial to implement an alpha test in a fragment 1965bd8deadSopenharmony_ci program using the KIL instruction, which requires no dedicated frame 1975bd8deadSopenharmony_ci buffer logic. 1985bd8deadSopenharmony_ci 1995bd8deadSopenharmony_ci Should blending be supported with floating-point color buffers? 2005bd8deadSopenharmony_ci 2015bd8deadSopenharmony_ci RESOLVED: Not in this extension. While blending would clearly be 2025bd8deadSopenharmony_ci useful, full-precision floating-point blenders are expensive. In 2035bd8deadSopenharmony_ci addition, a computational model more general than traditional blending 2045bd8deadSopenharmony_ci (with its 1-x operations and clamping) is desirable. The traditional 2055bd8deadSopenharmony_ci OpenGL blending model would not be the most suitable computational 2065bd8deadSopenharmony_ci model for future blend-enabled floating-point color buffers. 2075bd8deadSopenharmony_ci 2085bd8deadSopenharmony_ci An alternative to conventional blending (operating at a coarser 2095bd8deadSopenharmony_ci granularity) is to (1) render a pass into the color buffer, (2) bind 2105bd8deadSopenharmony_ci the color buffer as a texture rectangle using this extension and 2115bd8deadSopenharmony_ci ARB_render_texture, (3) perform texture lookups in a fragment program 2125bd8deadSopenharmony_ci using the TEX instruction with f[WPOS].xy as a 2D texture coordinate, 2135bd8deadSopenharmony_ci and (4) perform the necessary blending between the passes using the 2145bd8deadSopenharmony_ci same fragment program. 2155bd8deadSopenharmony_ci 2165bd8deadSopenharmony_ci Should we provide accumulation buffers for pixel formats with 2175bd8deadSopenharmony_ci floating-point color buffers? 2185bd8deadSopenharmony_ci 2195bd8deadSopenharmony_ci RESOLVED: No. Accumulation operations contents can be achieved using 2205bd8deadSopenharmony_ci fragment programs to perform the accumulation, which requires no 2215bd8deadSopenharmony_ci dedicated frame buffer logic. 2225bd8deadSopenharmony_ci 2235bd8deadSopenharmony_ci Should fragment program color results be converted to match the format of 2245bd8deadSopenharmony_ci the frame buffer, or should an error result? For example, what if we 2255bd8deadSopenharmony_ci write to o[COLR] but have a 16-bit frame buffer? 2265bd8deadSopenharmony_ci 2275bd8deadSopenharmony_ci RESOLVED: Conversions can be performed simply in hardware, so no 2285bd8deadSopenharmony_ci error semantics are required. This mechanism also allows the same 2295bd8deadSopenharmony_ci programs to be shared between contexts with different pixel formats. 2305bd8deadSopenharmony_ci 2315bd8deadSopenharmony_ci Applications should be aware that if color components contain packed 2325bd8deadSopenharmony_ci data, a data type mismatch may result in a floating-point data 2335bd8deadSopenharmony_ci conversion that corrupts the packed data. 2345bd8deadSopenharmony_ci 2355bd8deadSopenharmony_ci How should floating-point color buffers interact with multisampling? For 2365bd8deadSopenharmony_ci normal color buffers, the multiple samples for each pixel are required to 2375bd8deadSopenharmony_ci be filtered down to a single pixel in the color buffer. Similar filtering 2385bd8deadSopenharmony_ci on floating-point color buffers does not necessarily make sense. Should 2395bd8deadSopenharmony_ci there even be a normal color buffer in this case? 2405bd8deadSopenharmony_ci 2415bd8deadSopenharmony_ci RESOLVED: The initial implementation of this extension does not 2425bd8deadSopenharmony_ci provide floating-point color buffers that support multisampling. 2435bd8deadSopenharmony_ci 2445bd8deadSopenharmony_ci Multisample fragment operations (e.g., SAMPLE_COVERAGE) are explicitly 2455bd8deadSopenharmony_ci not supported by extension. This extension does not modify the 2465bd8deadSopenharmony_ci portion of the spec where multiple samples are resolved to a single 2475bd8deadSopenharmony_ci color value. So if floating-point color buffers were provided, the 2485bd8deadSopenharmony_ci multiple samples are filtered down to a single result value, most 2495bd8deadSopenharmony_ci likely by computing a per-component average value. 2505bd8deadSopenharmony_ci 2515bd8deadSopenharmony_ci Conventional RGBA primitive antialiasing multiplies coverage by the alpha 2525bd8deadSopenharmony_ci component of the fragment's color, with the assumption that alpha blending 2535bd8deadSopenharmony_ci will be performed. How does antialiasing work with floating-point color 2545bd8deadSopenharmony_ci buffers? 2555bd8deadSopenharmony_ci 2565bd8deadSopenharmony_ci RESOLVED: It doesn't. The computed coverage is not accessible to 2575bd8deadSopenharmony_ci fragment programs and is discarded. Note also that conventional 2585bd8deadSopenharmony_ci antialiasing requires alpha blending, which does not work for 2595bd8deadSopenharmony_ci floating-point color buffers. 2605bd8deadSopenharmony_ci 2615bd8deadSopenharmony_ci What are the semantics for ReadPixels when using a floating-point color 2625bd8deadSopenharmony_ci buffer? 2635bd8deadSopenharmony_ci 2645bd8deadSopenharmony_ci RESOLVED: ReadPixels from a floating-point color buffer works like 2655bd8deadSopenharmony_ci any other RGBA read, except that the final results are not clamped to 2665bd8deadSopenharmony_ci the range [0,1]. This ensures that we can save and restore 2675bd8deadSopenharmony_ci floating-point color buffers using ReadPixels/DrawPixels. 2685bd8deadSopenharmony_ci 2695bd8deadSopenharmony_ci What are the semantics for Bitmap when using a floating-point color 2705bd8deadSopenharmony_ci buffer? 2715bd8deadSopenharmony_ci 2725bd8deadSopenharmony_ci RESOLVED: Bitmap generates fragments using the current raster 2735bd8deadSopenharmony_ci attributes, which are then passed to fragment programs like any other 2745bd8deadSopenharmony_ci fragments. Bitmaps will be drawn using the color of the current 2755bd8deadSopenharmony_ci raster position, whose components are clamped to [0,1] when the raster 2765bd8deadSopenharmony_ci position is sent. 2775bd8deadSopenharmony_ci 2785bd8deadSopenharmony_ci What are the semantics for DrawPixels when using a floating-point color 2795bd8deadSopenharmony_ci buffer? How about CopyPixels? 2805bd8deadSopenharmony_ci 2815bd8deadSopenharmony_ci RESOLVED: DrawPixels generates fragments with the originally 2825bd8deadSopenharmony_ci specified color values; components are not clamped to [0,1]. For 2835bd8deadSopenharmony_ci fixed-point color buffers, DrawPixels will generate fragments with 2845bd8deadSopenharmony_ci clamped color components. 2855bd8deadSopenharmony_ci 2865bd8deadSopenharmony_ci CopyPixels is defined in the spec as a ReadPixels followed by a 2875bd8deadSopenharmony_ci DrawPixels, and will operate similarly. 2885bd8deadSopenharmony_ci 2895bd8deadSopenharmony_ci This mechanism allows applications to write floating-point data 2905bd8deadSopenharmony_ci directly into a floating-point color buffer without any clamping. 2915bd8deadSopenharmony_ci Since DrawPixels and CopyPixels generate fragments and fragment 2925bd8deadSopenharmony_ci programs are required to render to floating-point color buffers, a 2935bd8deadSopenharmony_ci fragment program is still required to load a floating-point color 2945bd8deadSopenharmony_ci buffer using DrawPixels. 2955bd8deadSopenharmony_ci 2965bd8deadSopenharmony_ci What are the semantics for Clear when using a floating-point color 2975bd8deadSopenharmony_ci buffer? 2985bd8deadSopenharmony_ci 2995bd8deadSopenharmony_ci RESOLVED: Clears work as normal, except that values outside the range 3005bd8deadSopenharmony_ci [0,1] can be written to the color buffer. The core spec is modified 3015bd8deadSopenharmony_ci so that clear color values are not clamped to [0,1]. Instead, for 3025bd8deadSopenharmony_ci fixed-point color buffers, clear colors are clamped to [0,1] at clear 3035bd8deadSopenharmony_ci time. 3045bd8deadSopenharmony_ci 3055bd8deadSopenharmony_ci For compatibility with conventional OpenGL, queries of 3065bd8deadSopenharmony_ci CLEAR_COLOR_VALUE will clamp components to [0,1]. A separate 3075bd8deadSopenharmony_ci FLOAT_CLEAR_COLOR_VALUE_NV query is added to query unclamped color 3085bd8deadSopenharmony_ci clear values. 3095bd8deadSopenharmony_ci 3105bd8deadSopenharmony_ci Why don't floating-point textures support filtering? What can be done to 3115bd8deadSopenharmony_ci achieve texture filtering? 3125bd8deadSopenharmony_ci 3135bd8deadSopenharmony_ci RESOLVED: Extended OpenGL texture filtering (including mipmapping and 3145bd8deadSopenharmony_ci support for anisotropic filters) is very computationally expensive. 3155bd8deadSopenharmony_ci Even simple linear filtering for floating-point textures with large 3165bd8deadSopenharmony_ci components is expensive. 3175bd8deadSopenharmony_ci 3185bd8deadSopenharmony_ci Linear filters can be implemented in fragment programs by doing 3195bd8deadSopenharmony_ci multiple lookups into the same texture. Since fragment programs allow 3205bd8deadSopenharmony_ci the use of arbitrary coordinates into arbitrary texture maps, this 3215bd8deadSopenharmony_ci type of operation can be easily done. 3225bd8deadSopenharmony_ci 3235bd8deadSopenharmony_ci A 1D linear filter can be implemented using an nx1 texture rectangle 3245bd8deadSopenharmony_ci with the following (untested) fragment program, assuming the 1D 3255bd8deadSopenharmony_ci coordinate is in f[TEX0].x: 3265bd8deadSopenharmony_ci 3275bd8deadSopenharmony_ci ADDR H2.xy, f[TEX0].x, {0.0, 1.0}; 3285bd8deadSopenharmony_ci FRCH H3.x, R1.x; # compute the blend factor 3295bd8deadSopenharmony_ci TEX H0, H2.x, TEX0, RECT; # lookup 1st sample 3305bd8deadSopenharmony_ci TEX H1, H2.y, TEX0, RECT; # lookup 2nd sample 3315bd8deadSopenharmony_ci LRPH H0, H3.x, H1, H0; # blend 3325bd8deadSopenharmony_ci 3335bd8deadSopenharmony_ci A 2D linear filter can be implemented similarly, assuming the 2D 3345bd8deadSopenharmony_ci coordinate is in f[TEX0].xy: 3355bd8deadSopenharmony_ci 3365bd8deadSopenharmony_ci ADDH H2, f[TEX0].xyxy, {0.0, 0.0, 1.0, 1.0}; 3375bd8deadSopenharmony_ci FRCH H3.xy, H2.xyxy; # base weights 3385bd8deadSopenharmony_ci ADDH H3.zw, 1.0, -H3.xyxy; # 1-base weights 3395bd8deadSopenharmony_ci MULH H3, H3.xzxz, H3.yyww; # bilinear filter weights 3405bd8deadSopenharmony_ci TEX H1, R2.xyxy, TEX0, RECT; # lookup 1st sample 3415bd8deadSopenharmony_ci MULH H0, H1, H3.x; # blend 3425bd8deadSopenharmony_ci TEX H1, R2.zyzy, TEX0, RECT; # lookup 2nd sample 3435bd8deadSopenharmony_ci MADH H0, H1, H3.y, H0; # blend 3445bd8deadSopenharmony_ci TEX H0, R2.xwxw, TEX0, RECT; # lookup 3rd sample 3455bd8deadSopenharmony_ci MADH H0, H1, H3.z, H0; # blend 3465bd8deadSopenharmony_ci TEX H1, R2.zwzw, TEX0, RECT; # lookup 4th sample 3475bd8deadSopenharmony_ci MADH H0, H1, H3.w, H0; # blend 3485bd8deadSopenharmony_ci 3495bd8deadSopenharmony_ci Fragment programs can be used to perform more-or-less arbitrary 3505bd8deadSopenharmony_ci filtering using similar methods, and the DDX and DDY instructions can 3515bd8deadSopenharmony_ci be used to refine the shape of the filter. 3525bd8deadSopenharmony_ci 3535bd8deadSopenharmony_ci Why must the NV_texture_rectangle extension be used in order to use 3545bd8deadSopenharmony_ci floating-point texture maps? 3555bd8deadSopenharmony_ci 3565bd8deadSopenharmony_ci RESOLVED: On many graphics hardware platforms, texture maps are 3575bd8deadSopenharmony_ci stored using a special memory encodings designed to optimize rendering 3585bd8deadSopenharmony_ci performance. In current hardware, conventional texture maps usually 3595bd8deadSopenharmony_ci top out at 32 bits per texel. The logic required to encode and decode 3605bd8deadSopenharmony_ci 128-bit texels (and frame buffer pixels) optimally is substantially 3615bd8deadSopenharmony_ci more complex. 3625bd8deadSopenharmony_ci 3635bd8deadSopenharmony_ci What happens if you try to use a floating-point texture without a 3645bd8deadSopenharmony_ci fragment program? 3655bd8deadSopenharmony_ci 3665bd8deadSopenharmony_ci RESOLVED: No error is generated, but that texture is effectively 3675bd8deadSopenharmony_ci disabled. This is similar to the behavior if an application tried to 3685bd8deadSopenharmony_ci use a normal texture having an inconsistent set of mipmaps. 3695bd8deadSopenharmony_ci 3705bd8deadSopenharmony_ci How does NV_float_buffer interact with the OpenGL 1.2 imaging subset? 3715bd8deadSopenharmony_ci 3725bd8deadSopenharmony_ci RESOLVED: The imaging subset as specified should work properly with 3735bd8deadSopenharmony_ci floating-point color buffers, but is not modified by this extension. 3745bd8deadSopenharmony_ci There are imaging operations (e.g., color tables, histograms) that 3755bd8deadSopenharmony_ci expect the components they operate on to be in the range [0,1], and 3765bd8deadSopenharmony_ci this extension makes no attempt to extend such functionality. 3775bd8deadSopenharmony_ci 3785bd8deadSopenharmony_ci How does NV_float_buffer interact with SGIS_generate_mipmap? 3795bd8deadSopenharmony_ci 3805bd8deadSopenharmony_ci RESOLVED: Since this extension supports only texture rectangles 3815bd8deadSopenharmony_ci (which have no mipmaps), this issue is moot. 3825bd8deadSopenharmony_ci 3835bd8deadSopenharmony_ci In the general case, mipmaps should be generated using an appropriate 3845bd8deadSopenharmony_ci downsample filter, where floating-point component values are averaged. 3855bd8deadSopenharmony_ci Components should not be clamped during any such mipmap generation. 3865bd8deadSopenharmony_ci 3875bd8deadSopenharmony_ci What is the deal with the names of the clear color query tokens? 3885bd8deadSopenharmony_ci 3895bd8deadSopenharmony_ci RESOLVED: The "normal" OpenGL clear color (clamped to [0,1]) is 3905bd8deadSopenharmony_ci queried using the token COLOR_CLEAR_VALUE. This extension provides a 3915bd8deadSopenharmony_ci new query for unclamped values, using the token 3925bd8deadSopenharmony_ci FLOAT_CLEAR_COLOR_VALUE_NV. Notice that "CLEAR" and "COLOR" are 3935bd8deadSopenharmony_ci reversed due to a mistake made when the spec was first written. This 3945bd8deadSopenharmony_ci spec lists the core query token, and originally had "CLEAR" and 3955bd8deadSopenharmony_ci "COLOR" reversed there, too. 3965bd8deadSopenharmony_ci 3975bd8deadSopenharmony_ci Then again, the core specification is inconsistent since the queried 3985bd8deadSopenharmony_ci state is set by calling glClearColor(), with "Clear" before "Color". 3995bd8deadSopenharmony_ci 4005bd8deadSopenharmony_ci What performance issues exist with this functionality? 4015bd8deadSopenharmony_ci 4025bd8deadSopenharmony_ci See the "NV3x Implementation Issues" section of the 4035bd8deadSopenharmony_ci specification. 4045bd8deadSopenharmony_ci 4055bd8deadSopenharmony_ci How should the texture border color (values) be handled for float 4065bd8deadSopenharmony_ci textures? 4075bd8deadSopenharmony_ci 4085bd8deadSopenharmony_ci RESOLVED: Clamp the texture border color (values) to [0,1] 4095bd8deadSopenharmony_ci when sampling a float texture's border. In core OpenGL 1.0, the 4105bd8deadSopenharmony_ci texture border color components are clamped to the range [01,]. 4115bd8deadSopenharmony_ci The NV_texture_shader extension added support for signed texture 4125bd8deadSopenharmony_ci components. We decided to provide GL_TEXTURE_BORDER_VALUES as 4135bd8deadSopenharmony_ci a way of specifying a version of the texture border color whose 4145bd8deadSopenharmony_ci components were not clamped to [0,1] when set. This was to 4155bd8deadSopenharmony_ci provide a way of specifying negative texture border components. 4165bd8deadSopenharmony_ci 4175bd8deadSopenharmony_ci In practice, that has not proven particularly useful. No real 4185bd8deadSopenharmony_ci applications are known to have specified negative texture border 4195bd8deadSopenharmony_ci values components. 4205bd8deadSopenharmony_ci 4215bd8deadSopenharmony_ci Ideally, the unclamped GL_TEXTURE_BORDER_VALUES state could 4225bd8deadSopenharmony_ci provide an unclamped (unmassaged) set of floating-point color 4235bd8deadSopenharmony_ci components for the texture border color. This requires an 4245bd8deadSopenharmony_ci additional 96 bits of state per texture unit to support this, 4255bd8deadSopenharmony_ci and based on the experience with NV_texture_shader's support for 4265bd8deadSopenharmony_ci texture border values outside the [0,1] range, it is simply not 4275bd8deadSopenharmony_ci worth it. 4285bd8deadSopenharmony_ci 4295bd8deadSopenharmony_ci For compatibility with the NV_texture_shader extension, we 4305bd8deadSopenharmony_ci provide language saying that floating-point textures clamp 4315bd8deadSopenharmony_ci the components of the TEXTURE_BORDER_VALUES vector [0,1] when 4325bd8deadSopenharmony_ci sampling the border color. 4335bd8deadSopenharmony_ci 4345bd8deadSopenharmony_ci 4355bd8deadSopenharmony_ciNew Procedures and Functions 4365bd8deadSopenharmony_ci 4375bd8deadSopenharmony_ci None. 4385bd8deadSopenharmony_ci 4395bd8deadSopenharmony_ciNew Tokens 4405bd8deadSopenharmony_ci 4415bd8deadSopenharmony_ci Accepted by the <internalformat> parameter of TexImage2D and 4425bd8deadSopenharmony_ci CopyTexImage2D: 4435bd8deadSopenharmony_ci 4445bd8deadSopenharmony_ci FLOAT_R_NV 0x8880 4455bd8deadSopenharmony_ci FLOAT_RG_NV 0x8881 4465bd8deadSopenharmony_ci FLOAT_RGB_NV 0x8882 4475bd8deadSopenharmony_ci FLOAT_RGBA_NV 0x8883 4485bd8deadSopenharmony_ci FLOAT_R16_NV 0x8884 4495bd8deadSopenharmony_ci FLOAT_R32_NV 0x8885 4505bd8deadSopenharmony_ci FLOAT_RG16_NV 0x8886 4515bd8deadSopenharmony_ci FLOAT_RG32_NV 0x8887 4525bd8deadSopenharmony_ci FLOAT_RGB16_NV 0x8888 4535bd8deadSopenharmony_ci FLOAT_RGB32_NV 0x8889 4545bd8deadSopenharmony_ci FLOAT_RGBA16_NV 0x888A 4555bd8deadSopenharmony_ci FLOAT_RGBA32_NV 0x888B 4565bd8deadSopenharmony_ci 4575bd8deadSopenharmony_ci Accepted by the <pname> parameter of GetTexLevelParameterfv and 4585bd8deadSopenharmony_ci GetTexLevelParameteriv: 4595bd8deadSopenharmony_ci 4605bd8deadSopenharmony_ci TEXTURE_FLOAT_COMPONENTS_NV 0x888C 4615bd8deadSopenharmony_ci 4625bd8deadSopenharmony_ci Accepted by the <pname> parameter of GetBooleanv, GetIntegerv, GetFloatv, 4635bd8deadSopenharmony_ci and GetDoublev: 4645bd8deadSopenharmony_ci 4655bd8deadSopenharmony_ci FLOAT_CLEAR_COLOR_VALUE_NV 0x888D 4665bd8deadSopenharmony_ci FLOAT_RGBA_MODE_NV 0x888E 4675bd8deadSopenharmony_ci 4685bd8deadSopenharmony_ci Accepted in the <piAttributes> array of wglGetPixelFormatAttribivARB and 4695bd8deadSopenharmony_ci wglGetPixelFormatAttribfvARB and in the <piAttribIList> and 4705bd8deadSopenharmony_ci <pfAttribFList> arrays of wglChoosePixelFormatARB: 4715bd8deadSopenharmony_ci 4725bd8deadSopenharmony_ci WGL_FLOAT_COMPONENTS_NV 0x20B0 4735bd8deadSopenharmony_ci WGL_BIND_TO_TEXTURE_RECTANGLE_FLOAT_R_NV 0x20B1 4745bd8deadSopenharmony_ci WGL_BIND_TO_TEXTURE_RECTANGLE_FLOAT_RG_NV 0x20B2 4755bd8deadSopenharmony_ci WGL_BIND_TO_TEXTURE_RECTANGLE_FLOAT_RGB_NV 0x20B3 4765bd8deadSopenharmony_ci WGL_BIND_TO_TEXTURE_RECTANGLE_FLOAT_RGBA_NV 0x20B4 4775bd8deadSopenharmony_ci 4785bd8deadSopenharmony_ci Accepted in the <piAttribIList> array of wglCreatePbufferARB and returned 4795bd8deadSopenharmony_ci in the <value> parameter of wglQueryPbufferARB when <iAttribute> is 4805bd8deadSopenharmony_ci WGL_TEXTURE_FORMAT_ARB: 4815bd8deadSopenharmony_ci 4825bd8deadSopenharmony_ci WGL_TEXTURE_FLOAT_R_NV 0x20B5 4835bd8deadSopenharmony_ci WGL_TEXTURE_FLOAT_RG_NV 0x20B6 4845bd8deadSopenharmony_ci WGL_TEXTURE_FLOAT_RGB_NV 0x20B7 4855bd8deadSopenharmony_ci WGL_TEXTURE_FLOAT_RGBA_NV 0x20B8 4865bd8deadSopenharmony_ci 4875bd8deadSopenharmony_ci Accepted in the <value> array of glXGetFBConfigAttrib (and 4885bd8deadSopenharmony_ci glXGetFBConfigAttribSGIX): 4895bd8deadSopenharmony_ci 4905bd8deadSopenharmony_ci GLX_FLOAT_COMPONENTS_NV 0x20B0 4915bd8deadSopenharmony_ci 4925bd8deadSopenharmony_ciAdditions to Chapter 2 of the OpenGL 1.3 Specification (OpenGL Operation) 4935bd8deadSopenharmony_ci 4945bd8deadSopenharmony_ci None. 4955bd8deadSopenharmony_ci 4965bd8deadSopenharmony_ciAdditions to Chapter 3 of the OpenGL 1.3 Specification (Rasterization) 4975bd8deadSopenharmony_ci 4985bd8deadSopenharmony_ci Modify Section 3.6.4, Rasterization of Pixel Rectangles (p. 91) 4995bd8deadSopenharmony_ci 5005bd8deadSopenharmony_ci (modify first paragraph of "Final Conversion", p. 102) ... For RGBA 5015bd8deadSopenharmony_ci components, the final conversion depends on the format of the color 5025bd8deadSopenharmony_ci buffer. If the components of the color buffer are fixed-point, each 5035bd8deadSopenharmony_ci element is clamped to [0,1] and converted to fixed-point according to the 5045bd8deadSopenharmony_ci rules given in section 2.13.9 (Final Color Processing). If the components 5055bd8deadSopenharmony_ci of the color buffer are floating-point, the elements are not modified. 5065bd8deadSopenharmony_ci 5075bd8deadSopenharmony_ci 5085bd8deadSopenharmony_ci Modify Section 3.8.1, Texture Image Specification (p. 116) 5095bd8deadSopenharmony_ci 5105bd8deadSopenharmony_ci (modify last paragaph, p. 116) The selected groups are processed exactly 5115bd8deadSopenharmony_ci as for DrawPixels stopping just before final conversion. For textures 5125bd8deadSopenharmony_ci with fixed-point RGBA internal formats, each R, G, B, A component is 5135bd8deadSopenharmony_ci clamped to [0,1]. 5145bd8deadSopenharmony_ci 5155bd8deadSopenharmony_ci (modify first paragraph, p. 117) Components are then selected from the 5165bd8deadSopenharmony_ci resulting pixel groups to obtain a texture with the base internal format 5175bd8deadSopenharmony_ci specified by (or derived from) <internalformat>. Table 3.15 summarizes 5185bd8deadSopenharmony_ci the mapping of pixel group values to texture components, ... 5195bd8deadSopenharmony_ci 5205bd8deadSopenharmony_ci (add to end of first paragraph, p. 117) Specifying a value of <format> 5215bd8deadSopenharmony_ci incompatible with <internalformat> produces the error INVALID_OPERATION. 5225bd8deadSopenharmony_ci A pixel format and texture internal format are compatible if the pixel 5235bd8deadSopenharmony_ci format can generate a pixel group of the type listed in the "Pixel Group 5245bd8deadSopenharmony_ci Type" column of Table 3.15 in the row corresponding to the base internal 5255bd8deadSopenharmony_ci format. 5265bd8deadSopenharmony_ci 5275bd8deadSopenharmony_ci (add between first and second paragraphs, p.117) Textures with a base 5285bd8deadSopenharmony_ci internal format of FLOAT_R_NV, FLOAT_RG_NV, FLOAT_RGB_NV, and 5295bd8deadSopenharmony_ci FLOAT_RGBA_NV are known as floating-point textures. Floating-point 5305bd8deadSopenharmony_ci textures are only supported for the TEXTURE_RECTANGLE_NV target. 5315bd8deadSopenharmony_ci Specifying a floating-point texture with any other target will produce an 5325bd8deadSopenharmony_ci INVALID_OPERATION error. 5335bd8deadSopenharmony_ci 5345bd8deadSopenharmony_ci (modify last paragraph, p. 117) The internal component resolution is the 5355bd8deadSopenharmony_ci number of bits allocated to each component in a texture image. If 5365bd8deadSopenharmony_ci internalformat is specified as a base internal format, the GL stores the 5375bd8deadSopenharmony_ci resulting texture with internal component resolutions of its own choosing. 5385bd8deadSopenharmony_ci If a sized internal format is specified, the memory allocation per texture 5395bd8deadSopenharmony_ci component is assigned by the GL to match the allocations listed in Table 5405bd8deadSopenharmony_ci 3.16 as closely as possible. ... 5415bd8deadSopenharmony_ci 5425bd8deadSopenharmony_ci (modify Table 3.15, p. 118 -- Respecify this table with all extensions 5435bd8deadSopenharmony_ci relevant to texture formats supported by NVIDIA. For this extension, add 5445bd8deadSopenharmony_ci four base internal formats.) 5455bd8deadSopenharmony_ci 5465bd8deadSopenharmony_ci Base Internal Pixel Component Internal 5475bd8deadSopenharmony_ci Format Group Type Values Components 5485bd8deadSopenharmony_ci --------------------- ---------- --------- --------------- 5495bd8deadSopenharmony_ci ALPHA RGBA A A 5505bd8deadSopenharmony_ci LUMINANCE RGBA R L 5515bd8deadSopenharmony_ci LUMINANCE_ALPHA RGBA R,A L,A 5525bd8deadSopenharmony_ci INTENSITY RGBA R I 5535bd8deadSopenharmony_ci RGB RGBA R,G,B R,G,B 5545bd8deadSopenharmony_ci RGBA RGBA R,G,B,A R,G,B,A 5555bd8deadSopenharmony_ci * COLOR_INDEX CI CI CI 5565bd8deadSopenharmony_ci * DEPTH_COMPONENT DEPTH DEPTH DEPTH 5575bd8deadSopenharmony_ci * HILO_NV HILO HI,LO HI,LO 5585bd8deadSopenharmony_ci * DSDT_NV TEXOFF DS,DT DS,DT 5595bd8deadSopenharmony_ci * DSDT_MAG_NV TEXOFF DS,DT,MAG DS,DT,MAG 5605bd8deadSopenharmony_ci * DSDT_MAG_INTENSITY_NV TEXOFF 5615bd8deadSopenharmony_ci or RGBA DS,DT,MAG,VIB DS,DT,MAG,I 5625bd8deadSopenharmony_ci FLOAT_R_NV RGBA R R (float) 5635bd8deadSopenharmony_ci FLOAT_RG_NV RGBA R,G R,G (float) 5645bd8deadSopenharmony_ci FLOAT_RGB_NV RGBA R,G,B R,G,B (float) 5655bd8deadSopenharmony_ci FLOAT_RGBA_NV RGBA R,G,B,A R,G,B,A (float) 5665bd8deadSopenharmony_ci 5675bd8deadSopenharmony_ci Table 3.15: Conversion from pixel groups to internal texture 5685bd8deadSopenharmony_ci components. "Pixel Group Type" defines the type of pixel group 5695bd8deadSopenharmony_ci required for the specified internal format. All internal components 5705bd8deadSopenharmony_ci are stored as unsigned-fixed point numbers, except for DS/DT (signed 5715bd8deadSopenharmony_ci fixed-point numbers) and floating-point R,G,B,A (signed floating-point 5725bd8deadSopenharmony_ci numbers). See Section 3.8.12 for a description of texture components 5735bd8deadSopenharmony_ci R, G, B, A, L, and I. See NV_texture_shader spec (Section 3.8.13) for 5745bd8deadSopenharmony_ci a description of texture components HI, LO, DS, DT, and MAG. 5755bd8deadSopenharmony_ci 5765bd8deadSopenharmony_ci * - indicates formats found in other extension specs: COLOR_INDEX in 5775bd8deadSopenharmony_ci EXT_paletted texture; DEPTH_COMPONENT in SGIX_depth_texture; and 5785bd8deadSopenharmony_ci HILO_NV, DSDT_NV, DSDT_MAG_NV, DSDT_MAG_INTENSITY_NV in 5795bd8deadSopenharmony_ci NV_texture_shader. 5805bd8deadSopenharmony_ci 5815bd8deadSopenharmony_ci (modify Table 3.16, p. 119 -- Respecify this table with all extensions 5825bd8deadSopenharmony_ci relevant to sized texture internal formats supported by NVIDIA. For this 5835bd8deadSopenharmony_ci extension, add eight sized internal formats.) 5845bd8deadSopenharmony_ci 5855bd8deadSopenharmony_ci Sized Base 5865bd8deadSopenharmony_ci Int. Format Int. Format Component Name / Type-Size 5875bd8deadSopenharmony_ci ------------------- --------------- --------------------------- 5885bd8deadSopenharmony_ci ALPHA4 ALPHA A/U4 5895bd8deadSopenharmony_ci ALPHA8 ALPHA A/U8 5905bd8deadSopenharmony_ci ALPHA12 ALPHA A/U12 5915bd8deadSopenharmony_ci ALPHA16 ALPHA A/U16 5925bd8deadSopenharmony_ci LUMINANCE4 LUMINANCE L/U4 5935bd8deadSopenharmony_ci LUMINANCE8 LUMINANCE L/U8 5945bd8deadSopenharmony_ci LUMINANCE12 LUMINANCE L/U12 5955bd8deadSopenharmony_ci LUMINANCE16 LUMINANCE L/U16 5965bd8deadSopenharmony_ci LUMINANCE4_ALPHA4 LUMINANCE_ALPHA A/U4 L/U4 5975bd8deadSopenharmony_ci LUMINANCE6_ALPHA2 LUMINANCE_ALPHA A/U2 L/U6 5985bd8deadSopenharmony_ci LUMINANCE8_ALPHA8 LUMINANCE_ALPHA A/U8 L/U8 5995bd8deadSopenharmony_ci LUMINANCE12_ALPHA4 LUMINANCE_ALPHA A/U4 L/U12 6005bd8deadSopenharmony_ci LUMINANCE12_ALPHA12 LUMINANCE_ALPHA A/U12 L/U12 6015bd8deadSopenharmony_ci LUMINANCE16_ALPHA16 LUMINANCE_ALPHA A/U16 L/U16 6025bd8deadSopenharmony_ci INTENSITY4 INTENSITY I/U4 6035bd8deadSopenharmony_ci INTENSITY8 INTENSITY I/U8 6045bd8deadSopenharmony_ci INTENSITY12 INTENSITY I/U12 6055bd8deadSopenharmony_ci INTENSITY16 INTENSITY I/U16 6065bd8deadSopenharmony_ci R3_G3_B2 RGB R/U3 G/U3 B/U2 6075bd8deadSopenharmony_ci RGB4 RGB R/U4 G/U4 B/U4 6085bd8deadSopenharmony_ci RGB5 RGB R/U5 G/U5 B/U5 6095bd8deadSopenharmony_ci RGB8 RGB R/U8 G/U8 B/U8 6105bd8deadSopenharmony_ci RGB10 RGB R/U10 G/U10 B/10 6115bd8deadSopenharmony_ci RGB12 RGB R/U12 G/U12 B/U12 6125bd8deadSopenharmony_ci RGB16 RGB R/U16 G/U16 B/U16 6135bd8deadSopenharmony_ci RGBA2 RGBA R/U2 G/U2 B/U2 A/U2 6145bd8deadSopenharmony_ci RGBA4 RGBA R/U4 G/U4 B/U4 A/U4 6155bd8deadSopenharmony_ci RGB5_A1 RGBA R/U5 G/U5 B/U5 A/U1 6165bd8deadSopenharmony_ci RGBA8 RGBA R/U8 G/U8 B/U8 A/U8 6175bd8deadSopenharmony_ci RGB10_A2 RGBA R/U10 G/U10 B/U10 A/U2 6185bd8deadSopenharmony_ci RGBA12 RGBA R/U12 G/U12 B/U12 A/U12 6195bd8deadSopenharmony_ci RGBA16 RGBA R/U16 G/U16 B/U16 A/U16 6205bd8deadSopenharmony_ci * COLOR_INDEX1_EXT COLOR_INDEX CI/U1 6215bd8deadSopenharmony_ci * COLOR_INDEX2_EXT COLOR_INDEX CI/U2 6225bd8deadSopenharmony_ci * COLOR_INDEX4_EXT COLOR_INDEX CI/U4 6235bd8deadSopenharmony_ci * COLOR_INDEX8_EXT COLOR_INDEX CI/U8 6245bd8deadSopenharmony_ci * COLOR_INDEX16_EXT COLOR_INDEX CI/U16 6255bd8deadSopenharmony_ci * DEPTH_COMPONENT16_SGIX DEPTH_COMPONENT Z/U16 6265bd8deadSopenharmony_ci * DEPTH_COMPONENT24_SGIX DEPTH_COMPONENT Z/U24 6275bd8deadSopenharmony_ci * DEPTH_COMPONENT32_SGIX DEPTH_COMPONENT Z/U32 6285bd8deadSopenharmony_ci * HILO16_NV HILO HI/U16 LO/U16 6295bd8deadSopenharmony_ci * SIGNED_HILO16_NV HILO HI/S16 LO/S16 6305bd8deadSopenharmony_ci * SIGNED_RGBA8_NV RGBA R/S8 G/S8 B/S8 A/S8 6315bd8deadSopenharmony_ci * SIGNED_RGB8_ 6325bd8deadSopenharmony_ci UNSIGNED_ALPHA8_NV RGBA R/S8 G/S8 B/S8 A/U8 6335bd8deadSopenharmony_ci * SIGNED_RGB8_NV RGB R/S8 G/S8 B/S8 6345bd8deadSopenharmony_ci * SIGNED_LUMINANCE8_NV LUMINANCE L/S8 6355bd8deadSopenharmony_ci * SIGNED_LUMINANCE8_ 6365bd8deadSopenharmony_ci ALPHA8_NV LUMINANCE_ALPHA L/S8 A/S8 6375bd8deadSopenharmony_ci * SIGNED_ALPHA8_NV ALPHA A/S8 6385bd8deadSopenharmony_ci * SIGNED_INTENSITY8_NV INTENSITY I/S8 6395bd8deadSopenharmony_ci * DSDT8_NV DSDT_NV DS/S8 DT/S8 6405bd8deadSopenharmony_ci * DSDT8_MAG8_NV DSDT_MAG_NV DS/S8 DT/S8 MAG/U8 6415bd8deadSopenharmony_ci * DSDT8_MAG8_ DSDT_MAG_ 6425bd8deadSopenharmony_ci INTENSITY8_NV INTENSITY_NV DS/S8 DT/S8 MAG/U8 I/U8 6435bd8deadSopenharmony_ci FLOAT_R16_NV FLOAT_R_NV R/F16 6445bd8deadSopenharmony_ci FLOAT_R32_NV FLOAT_R_NV R/F32 6455bd8deadSopenharmony_ci FLOAT_RG16_NV FLOAT_RG_NV R/F16 G/F16 6465bd8deadSopenharmony_ci FLOAT_RG32_NV FLOAT_RG_NV R/F32 G/F32 6475bd8deadSopenharmony_ci FLOAT_RGB16_NV FLOAT_RGB_NV R/F16 G/F16 B/F16 6485bd8deadSopenharmony_ci FLOAT_RGB32_NV FLOAT_RGB_NV R/F32 G/F32 B/F32 6495bd8deadSopenharmony_ci FLOAT_RGBA16_NV FLOAT_RGBA_NV R/F16 G/F16 B/F16 A/F16 6505bd8deadSopenharmony_ci FLOAT_RGBA32_NV FLOAT_RGBA_NV R/F32 G/F32 B/F32 A/F32 6515bd8deadSopenharmony_ci 6525bd8deadSopenharmony_ci Table 3.16: Sized Internal Formats. Describes the correspondence of 6535bd8deadSopenharmony_ci sized internal formats to base internal formats, and desired component 6545bd8deadSopenharmony_ci resolutions. Component resolution descriptions are of the form 6555bd8deadSopenharmony_ci "<NAME>/<TYPE><SIZE>", where NAME specifies the component name in 6565bd8deadSopenharmony_ci Table 3.15, TYPE is "U" for unsigned fixed-point, "S" for signed 6575bd8deadSopenharmony_ci fixed-point, and "F" for unsigned floating-point. <SIZE> is the 6585bd8deadSopenharmony_ci number of requested bits per component. 6595bd8deadSopenharmony_ci 6605bd8deadSopenharmony_ci * - indicates formats found in other extension specs: COLOR_INDEX in 6615bd8deadSopenharmony_ci EXT_paletted texture; DEPTH_COMPONENT in SGIX_depth_texture; and 6625bd8deadSopenharmony_ci HILO_NV, DSDT_NV, DSDT_MAG_NV, DSDT_MAG_INTENSITY_NV in 6635bd8deadSopenharmony_ci NV_texture_shader. 6645bd8deadSopenharmony_ci 6655bd8deadSopenharmony_ci Modify Section 3.8,7, Minification (p. 141) 6665bd8deadSopenharmony_ci 6675bd8deadSopenharmony_ci Change the last paragraph (as modified by the NV_texture_shader 6685bd8deadSopenharmony_ci extension) to read (only the last sentence changes from the 6695bd8deadSopenharmony_ci NV_texture_shader version): 6705bd8deadSopenharmony_ci 6715bd8deadSopenharmony_ci "If any of the selected tauijk, tauij, or taui in the above equations 6725bd8deadSopenharmony_ci refer to a border texel with i < -bs, j < bs, k < -bs, i >= ws-bs, j 6735bd8deadSopenharmony_ci >= hs-bs, or k >= ds-bs, then the border values given by the current 6745bd8deadSopenharmony_ci setting of TEXTURE_BORDER_VALUES is used instead of the unspecified 6755bd8deadSopenharmony_ci value or values. If the texture contains color components, the 6765bd8deadSopenharmony_ci components of the TEXTURE_BORDER_VALUES vector are interpreted as 6775bd8deadSopenharmony_ci an RGBA color to match the texture's internal format in a manner 6785bd8deadSopenharmony_ci consistent with table 3.15. If the texture contains HILO components, 6795bd8deadSopenharmony_ci the first and second components of the TEXTURE_BORDER_VALUES vector 6805bd8deadSopenharmony_ci are interpreted as the hi and lo components respectively. If the 6815bd8deadSopenharmony_ci texture contains texture offset group components, the first, second, 6825bd8deadSopenharmony_ci third, and fourth components of the TEXTURE_BORDER_VALUES vector 6835bd8deadSopenharmony_ci are interpreted as ds, dt, mag, and vib components respectively. 6845bd8deadSopenharmony_ci Additionally, the texture border values are clamped appropriately 6855bd8deadSopenharmony_ci depending on the signedness of each particular component. Unsigned 6865bd8deadSopenharmony_ci components and components of floating-point textures are clamped to 6875bd8deadSopenharmony_ci [0,1]; signed components (not including floating-point textures) 6885bd8deadSopenharmony_ci are clamped to [-1,1]." 6895bd8deadSopenharmony_ci 6905bd8deadSopenharmony_ci (Add after the last paragraph in the section) Floating-point textures 6915bd8deadSopenharmony_ci (those with a base internal format of FLOAT_R_NV, FLOAT_RG_NV, 6925bd8deadSopenharmony_ci FLOAT_RGB_NV, or FLOAT_RGBA_NV) do not support texture filters other than 6935bd8deadSopenharmony_ci NEAREST. For such textures, NEAREST filtering is applied regardless of 6945bd8deadSopenharmony_ci the setting of TEXTURE_MIN_FILTER. 6955bd8deadSopenharmony_ci 6965bd8deadSopenharmony_ci Modify Section 3.8.8, Magnification (p. 141) 6975bd8deadSopenharmony_ci 6985bd8deadSopenharmony_ci (Add after the last paragraph in the section) Floating-point textures 6995bd8deadSopenharmony_ci (those with a base internal format of FLOAT_R_NV, FLOAT_RG_NV, 7005bd8deadSopenharmony_ci FLOAT_RGB_NV, or FLOAT_RGBA_NV) do not support texture filters other than 7015bd8deadSopenharmony_ci NEAREST. For such textures, NEAREST filtering is applied regardless of 7025bd8deadSopenharmony_ci the setting of TEXTURE_MAG_FILTER. 7035bd8deadSopenharmony_ci 7045bd8deadSopenharmony_ci Modify Section 3.8.13, Texture Environments and Texture Functions (p. 147) 7055bd8deadSopenharmony_ci 7065bd8deadSopenharmony_ci (Add paragraph after discussion of all the values used in the 7075bd8deadSopenharmony_ci miscellaneous tables in this section.) If the base internal format is 7085bd8deadSopenharmony_ci HILO_NV, DSDT_NV, DSDT_MAG_NV, DSDT_MAG_INTENSITY_NV, FLOAT_R_NV, 7095bd8deadSopenharmony_ci FLOAT_RG_NV, FLOAT_RGB_NV, or FLOAT_RGBA_NV, the texture lookup results 7105bd8deadSopenharmony_ci are not supported using conventional OpenGL texture functions. In this 7115bd8deadSopenharmony_ci case, the corresponding texture function is NONE (Cv = Cf, Av = Af), and 7125bd8deadSopenharmony_ci it is as though texture mapping were disabled for that texture unit. 7135bd8deadSopenharmony_ci 7145bd8deadSopenharmony_ci Modify Section 3.11, Antialiasing Application (p. 155) 7155bd8deadSopenharmony_ci 7165bd8deadSopenharmony_ci Finally, if antialiasing is enabled for the primitive from which a 7175bd8deadSopenharmony_ci rasterized fragment was produced, then the computed coverage value may be 7185bd8deadSopenharmony_ci applied to the fragment. In RGBA mode with fixed-point frame buffers, the 7195bd8deadSopenharmony_ci value is multiplied by the fragment's alpha (A) value to yield a final 7205bd8deadSopenharmony_ci alpha value. In RGBA mode with floating-point frame buffers, the coverage 7215bd8deadSopenharmony_ci value is simply discarded. In color index mode, the value is used to set 7225bd8deadSopenharmony_ci the low order bits of the color index value as described in section 3.2. 7235bd8deadSopenharmony_ci 7245bd8deadSopenharmony_ci 7255bd8deadSopenharmony_ciAdditions to Chapter 4 of the OpenGL 1.3 Specification (Per-Fragment 7265bd8deadSopenharmony_ciOperations and the Frame Buffer) 7275bd8deadSopenharmony_ci 7285bd8deadSopenharmony_ci Modify Chapter 4 Introduction (p. 156) 7295bd8deadSopenharmony_ci 7305bd8deadSopenharmony_ci (replace next-to-last paragraph) 7315bd8deadSopenharmony_ci 7325bd8deadSopenharmony_ci The GL provides three types of color buffers: color index, fixed-point 7335bd8deadSopenharmony_ci RGBA, or floating-point RGBA. Color index buffers consist of unsigned 7345bd8deadSopenharmony_ci integer color indices. Fixed-point RGBA buffers consist of R, G, B, and 7355bd8deadSopenharmony_ci optionally, A unsigned integer values. Floating-point RGBA buffers 7365bd8deadSopenharmony_ci consist of R, and optionally, G, B, and A floating-point component values, 7375bd8deadSopenharmony_ci corresponding to the X, Y, Z, and W outputs, respectively, of a fragment 7385bd8deadSopenharmony_ci program. The number of bitplanes in each of the color buffers, the depth 7395bd8deadSopenharmony_ci buffer, ... 7405bd8deadSopenharmony_ci 7415bd8deadSopenharmony_ci Modify Section 4.1.3, Multisample Fragment Operations (p. 158) 7425bd8deadSopenharmony_ci 7435bd8deadSopenharmony_ci This step applies only for fixed-point RGBA color buffers. Otherwise, 7445bd8deadSopenharmony_ci proceed to the next step. ... 7455bd8deadSopenharmony_ci 7465bd8deadSopenharmony_ci Modify Section 4.1.4, Alpha Test (p. 159) 7475bd8deadSopenharmony_ci 7485bd8deadSopenharmony_ci This step applies only for fixed-point RGBA color buffers. Otherwise, 7495bd8deadSopenharmony_ci proceed to the next step. ... 7505bd8deadSopenharmony_ci 7515bd8deadSopenharmony_ci Modify Section 4.1.7, Blending (p. 161) 7525bd8deadSopenharmony_ci 7535bd8deadSopenharmony_ci (modify second paragraph) 7545bd8deadSopenharmony_ci 7555bd8deadSopenharmony_ci This blending is dependent on the incoming fragment's alpha value and that 7565bd8deadSopenharmony_ci of the corresponding currently stored pixel. Blending applies only for 7575bd8deadSopenharmony_ci fixed-point RGBA color buffers; otherwise, it is bypassed. ... 7585bd8deadSopenharmony_ci 7595bd8deadSopenharmony_ci Modify Section 4.1.8, Dithering (p. 165) 7605bd8deadSopenharmony_ci 7615bd8deadSopenharmony_ci Dithering selects between two color values or indices. Dithering does not 7625bd8deadSopenharmony_ci apply to floating-point RGBA color buffers. ... 7635bd8deadSopenharmony_ci 7645bd8deadSopenharmony_ci Modify Section 4.1.9, Logical Operation (p. 165) 7655bd8deadSopenharmony_ci 7665bd8deadSopenharmony_ci Finally, a logical operation is applied between the incoming fragment's 7675bd8deadSopenharmony_ci color or index values and the color or index values stored at the 7685bd8deadSopenharmony_ci corresponding location in the frame buffer. Logical operations do not 7695bd8deadSopenharmony_ci apply to floating-point color buffers. ... 7705bd8deadSopenharmony_ci 7715bd8deadSopenharmony_ci Modify Section 4.2.3, Clearing the Buffers (p. 171) 7725bd8deadSopenharmony_ci 7735bd8deadSopenharmony_ci ... 7745bd8deadSopenharmony_ci 7755bd8deadSopenharmony_ci void ClearColor(float r, float g, float b, float a); 7765bd8deadSopenharmony_ci 7775bd8deadSopenharmony_ci sets the clear value for RGBA color buffers. When a fixed-point color 7785bd8deadSopenharmony_ci buffer is cleared, the effective clear color is derived by clamping each 7795bd8deadSopenharmony_ci component to [0,1] and converting to fixed-point according to the rules in 7805bd8deadSopenharmony_ci section 2.13.9. When a floating-point color buffer is cleared, the 7815bd8deadSopenharmony_ci components of the clear value are used directly without being clamped. 7825bd8deadSopenharmony_ci 7835bd8deadSopenharmony_ci Modify Section 4.2.4, The Accumulation Buffer (p. 172) 7845bd8deadSopenharmony_ci 7855bd8deadSopenharmony_ci (modify last paragraph) ... If there is no accumulation buffer, or if 7865bd8deadSopenharmony_ci color buffer is not fixed-point RGBA, Accum generates the error 7875bd8deadSopenharmony_ci INVALID_OPERATION. 7885bd8deadSopenharmony_ci 7895bd8deadSopenharmony_ci Modify Section 4.3.2, Reading Pixels 7905bd8deadSopenharmony_ci 7915bd8deadSopenharmony_ci (modify "Conversion of RGBA Values", p. 176) This step applies only if the 7925bd8deadSopenharmony_ci GL is in RGBA mode, and then only if format is neither STENCIL INDEX nor 7935bd8deadSopenharmony_ci DEPTH COMPONENT. The R, G, B, and A values form a group of elements. If 7945bd8deadSopenharmony_ci the color buffer has fixed-point format, each element is taken to be a 7955bd8deadSopenharmony_ci fixed-point value in [0,1] with m bits, where m is the number of bits in 7965bd8deadSopenharmony_ci the corresponding color component of the selected buffer (see section 7975bd8deadSopenharmony_ci 2.13.9). 7985bd8deadSopenharmony_ci 7995bd8deadSopenharmony_ci (add to end of "Final Conversion", p. 177) ... For an RGBA color, 8005bd8deadSopenharmony_ci components are clamped depending on the data type of the buffer being 8015bd8deadSopenharmony_ci read. For fixed-point buffers, each component is clamped to [0.1]. For 8025bd8deadSopenharmony_ci floating-point buffers, if <type> is not FLOAT or HALF_FLOAT_NV, each 8035bd8deadSopenharmony_ci component is clamped to [0,1] if <type> is unsigned or [-1,1] if <type> is 8045bd8deadSopenharmony_ci signed and then converted according to Table 4.7. 8055bd8deadSopenharmony_ci 8065bd8deadSopenharmony_ci Modify section 4.4.4, as defined by EXT_framebuffer_object, 8075bd8deadSopenharmony_ci definition of color-renderable: 8085bd8deadSopenharmony_ci 8095bd8deadSopenharmony_ci * An internal format is "color-renderable" if it is RGB, RGBA, 8105bd8deadSopenharmony_ci FLOAT_R_NV, FLOAT_RG_NV, FLOAT_RGB_NV, FLOAT_RGBA_NV, or one 8115bd8deadSopenharmony_ci of the formats from table 3.16 whose base internal format is 8125bd8deadSopenharmony_ci RGB, RGBA, FLOAT_R_NV, FLOAT_RG_NV, FLOAT_RGB_NV, or 8135bd8deadSopenharmony_ci FLOAT_RGBA_NV. No other formats, including compressed 8145bd8deadSopenharmony_ci internal formats, are color-renderable. 8155bd8deadSopenharmony_ci 8165bd8deadSopenharmony_ciAdditions to Chapter 5 of the OpenGL 1.3 Specification (Special Functions) 8175bd8deadSopenharmony_ci 8185bd8deadSopenharmony_ci None. 8195bd8deadSopenharmony_ci 8205bd8deadSopenharmony_ciAdditions to Chapter 6 of the OpenGL 1.3 Specification (State and 8215bd8deadSopenharmony_ciState Requests) 8225bd8deadSopenharmony_ci 8235bd8deadSopenharmony_ci Modify Section 6.1.4, Texture Queries (p. 200) 8245bd8deadSopenharmony_ci 8255bd8deadSopenharmony_ci Modify Table 6.1 (add new rows, corresponding to new internal formats, 8265bd8deadSopenharmony_ci p. 202) 8275bd8deadSopenharmony_ci 8285bd8deadSopenharmony_ci Base Internal Format R G B A 8295bd8deadSopenharmony_ci -------------------- --- --- --- --- 8305bd8deadSopenharmony_ci FLOAT_R_NV R 0 0 1 8315bd8deadSopenharmony_ci FLOAT_RG_NV R G 0 1 8325bd8deadSopenharmony_ci FLOAT_RGB_NV R G B 1 8335bd8deadSopenharmony_ci FLOAT_RGBA_NV R G B A 8345bd8deadSopenharmony_ci 8355bd8deadSopenharmony_ciAdditions to Appendix A of the OpenGL 1.3 Specification (Invariance) 8365bd8deadSopenharmony_ci 8375bd8deadSopenharmony_ci None. 8385bd8deadSopenharmony_ci 8395bd8deadSopenharmony_ciAdditions to the WGL Specification 8405bd8deadSopenharmony_ci 8415bd8deadSopenharmony_ci First, close your eyes and pretend that a WGL specification actually 8425bd8deadSopenharmony_ci existed. Maybe if we all concentrate hard enough, one will magically 8435bd8deadSopenharmony_ci appear. 8445bd8deadSopenharmony_ci 8455bd8deadSopenharmony_ci Modify/add to the description of <piAttributes> in 8465bd8deadSopenharmony_ci wglGetPixelFormatAttribivARB and <pfAttributes> in 8475bd8deadSopenharmony_ci wglGetPixelFormatAttribfvARB: 8485bd8deadSopenharmony_ci 8495bd8deadSopenharmony_ci WGL_FLOAT_COMPONENTS_NV 8505bd8deadSopenharmony_ci True if the R, G, B, and A components of each color buffer are 8515bd8deadSopenharmony_ci represented as (unclamped) floating-point numbers. 8525bd8deadSopenharmony_ci 8535bd8deadSopenharmony_ci WGL_BIND_TO_TEXTURE_RECTANGLE_FLOAT_R_NV 8545bd8deadSopenharmony_ci WGL_BIND_TO_TEXTURE_RECTANGLE_FLOAT_RG_NV 8555bd8deadSopenharmony_ci WGL_BIND_TO_TEXTURE_RECTANGLE_FLOAT_RGB_NV 8565bd8deadSopenharmony_ci WGL_BIND_TO_TEXTURE_RECTANGLE_FLOAT_RGBA_NV 8575bd8deadSopenharmony_ci True if the pixel format describes a floating-point color that can be 8585bd8deadSopenharmony_ci bound to a texture rectangle with internal formats of FLOAT_R_NV, 8595bd8deadSopenharmony_ci FLOAT_RG_NV, FLOAT_RGB_NV, or FLOAT_RGBA_NV, respectively. Currently 8605bd8deadSopenharmony_ci only pbuffers can be bound as textures so this attribute will only be 8615bd8deadSopenharmony_ci TRUE if WGL_DRAW_TO_PBUFFER is also TRUE. Additionally, 8625bd8deadSopenharmony_ci floating-point color buffers can not be bound to texture targets other 8635bd8deadSopenharmony_ci than TEXTURE_RECTANGLE_NV. 8645bd8deadSopenharmony_ci 8655bd8deadSopenharmony_ci Add new table entries for pixel format attribute matching in 8665bd8deadSopenharmony_ci wglChoosePixelFormatARB. 8675bd8deadSopenharmony_ci 8685bd8deadSopenharmony_ci Attribute Type Match Criteria 8695bd8deadSopenharmony_ci ------------------------- ------- -------------- 8705bd8deadSopenharmony_ci WGL_FLOAT_COMPONENTS_NV boolean exact 8715bd8deadSopenharmony_ci WGL_BIND_TO_TEXTURE_ boolean exact 8725bd8deadSopenharmony_ci RECTANGLE_FLOAT_R_NV 8735bd8deadSopenharmony_ci WGL_BIND_TO_TEXTURE_ boolean exact 8745bd8deadSopenharmony_ci RECTANGLE_FLOAT_RG_NV 8755bd8deadSopenharmony_ci WGL_BIND_TO_TEXTURE_ boolean exact 8765bd8deadSopenharmony_ci RECTANGLE_FLOAT_RGB_NV 8775bd8deadSopenharmony_ci WGL_BIND_TO_TEXTURE_ boolean exact 8785bd8deadSopenharmony_ci RECTANGLE_FLOAT_RGBA_NV 8795bd8deadSopenharmony_ci 8805bd8deadSopenharmony_ci (In the wglCreatePbufferARB section, modify the attribute list) 8815bd8deadSopenharmony_ci 8825bd8deadSopenharmony_ci WGL_TEXTURE_FORMAT_ARB 8835bd8deadSopenharmony_ci 8845bd8deadSopenharmony_ci This attribute indicates the base internal format of the texture that 8855bd8deadSopenharmony_ci will be created when a color buffer of a pbuffer is bound to a texture 8865bd8deadSopenharmony_ci map. It can be set to WGL_TEXTURE_RGB_ARB (indicating an internal 8875bd8deadSopenharmony_ci format of RGB), WGL_TEXTURE_RGBA_ARB (indicating a base internal 8885bd8deadSopenharmony_ci format of RGBA), WGL_TEXTURE_FLOAT_R_NV (indicating a base internal 8895bd8deadSopenharmony_ci format of FLOAT_R_NV), WGL_TEXTURE_FLOAT_RG_NV (indicating a base 8905bd8deadSopenharmony_ci internal format of FLOAT_RG_NV), WGL_TEXTURE_FLOAT_RGB_NV (indicating 8915bd8deadSopenharmony_ci a base internal format of FLOAT_RGB_NV), WGL_TEXTURE_FLOAT_RGBA_NV 8925bd8deadSopenharmony_ci (indicating a base internal format of FLOAT_RGBA_NV), or 8935bd8deadSopenharmony_ci WGL_NO_TEXTURE_ARB. The default value is WGL_NO_TEXTURE_ARB. 8945bd8deadSopenharmony_ci 8955bd8deadSopenharmony_ci 8965bd8deadSopenharmony_ci (In the wglCreatePbufferARB section, modify the discussion of what happens 8975bd8deadSopenharmony_ci to the depth/stencil/accum buffers when switching between mipmap levels or 8985bd8deadSopenharmony_ci cube map faces.) 8995bd8deadSopenharmony_ci 9005bd8deadSopenharmony_ci For pbuffers with a texture format of WGL_TEXTURE_RGB_ARB, 9015bd8deadSopenharmony_ci WGL_TEXTURE_RGBA_ARB, WGL_TEXTURE_FLOAT_R_NV, WGL_TEXTURE_FLOAT_RG_NV, 9025bd8deadSopenharmony_ci WGL_TEXTURE_FLOAT_RGB_NV, or WGL_TEXTURE_FLOAT_RGBA_NV, there will be a 9035bd8deadSopenharmony_ci separate set of color buffers for each mipmap level and cube map face in 9045bd8deadSopenharmony_ci the pbuffer. Otherwise, the WGL implementation is free to share a single 9055bd8deadSopenharmony_ci set of color, auxillary, and accumulation buffers between levels or faces. 9065bd8deadSopenharmony_ci 9075bd8deadSopenharmony_ci 9085bd8deadSopenharmony_ci (In the wglCreatePbufferARB section, modify the error list) 9095bd8deadSopenharmony_ci 9105bd8deadSopenharmony_ci ERROR_INVALID_DATA WGL_TEXTURE_FORMAT_ARB is 9115bd8deadSopenharmony_ci WGL_TEXTURE_FLOAT_R_NV, 9125bd8deadSopenharmony_ci WGL_TEXTURE_FLOAT_RG_NV, 9135bd8deadSopenharmony_ci WGL_TEXTURE_FLOAT_RGB_NV, or 9145bd8deadSopenharmony_ci WGL_TEXTURE_FLOAT_RGBA_NV, and 9155bd8deadSopenharmony_ci WGL_TEXTURE_TARGET_ARB is not 9165bd8deadSopenharmony_ci WGL_TEXTURE_RECTANGLE_NV. 9175bd8deadSopenharmony_ci 9185bd8deadSopenharmony_ci ERROR_INVALID_DATA WGL_TEXTURE_FORMAT_ARB is 9195bd8deadSopenharmony_ci WGL_TEXTURE_FLOAT_R_NV, 9205bd8deadSopenharmony_ci WGL_TEXTURE_TARGET_ARB is 9215bd8deadSopenharmony_ci WGL_TEXTURE_RECTANGLE_NV, and the 9225bd8deadSopenharmony_ci WGL_BIND_TO_TEXTURE_RECTANGLE_FLOAT_R_NV 9235bd8deadSopenharmony_ci attribute is not set in the pixel format. 9245bd8deadSopenharmony_ci 9255bd8deadSopenharmony_ci ERROR_INVALID_DATA WGL_TEXTURE_FORMAT_ARB is 9265bd8deadSopenharmony_ci WGL_TEXTURE_FLOAT_RG_NV, 9275bd8deadSopenharmony_ci WGL_TEXTURE_TARGET_ARB is 9285bd8deadSopenharmony_ci WGL_TEXTURE_RECTANGLE_NV, and the 9295bd8deadSopenharmony_ci WGL_BIND_TO_TEXTURE_RECTANGLE_FLOAT_RG_NV 9305bd8deadSopenharmony_ci attribute is not set in the pixel format. 9315bd8deadSopenharmony_ci 9325bd8deadSopenharmony_ci ERROR_INVALID_DATA WGL_TEXTURE_FORMAT_ARB is 9335bd8deadSopenharmony_ci WGL_TEXTURE_FLOAT_RGB_NV, 9345bd8deadSopenharmony_ci WGL_TEXTURE_TARGET_ARB is 9355bd8deadSopenharmony_ci WGL_TEXTURE_RECTANGLE_NV, and the 9365bd8deadSopenharmony_ci WGL_BIND_TO_TEXTURE_RECTANGLE_FLOAT_RGB_NV 9375bd8deadSopenharmony_ci attribute is not set in the pixel format. 9385bd8deadSopenharmony_ci 9395bd8deadSopenharmony_ci ERROR_INVALID_DATA WGL_TEXTURE_FORMAT_ARB is 9405bd8deadSopenharmony_ci WGL_TEXTURE_FLOAT_RGBA_NV, 9415bd8deadSopenharmony_ci WGL_TEXTURE_TARGET_ARB is 9425bd8deadSopenharmony_ci WGL_TEXTURE_RECTANGLE_NV, and the 9435bd8deadSopenharmony_ci WGL_BIND_TO_TEXTURE_RECTANGLE_FLOAT_RGBA_NV 9445bd8deadSopenharmony_ci attribute is not set in the pixel format. 9455bd8deadSopenharmony_ci 9465bd8deadSopenharmony_ci Modify wglBindTexImageARB: 9475bd8deadSopenharmony_ci 9485bd8deadSopenharmony_ci ... 9495bd8deadSopenharmony_ci 9505bd8deadSopenharmony_ci The pbuffer attribute WGL_TEXTURE_FORMAT_ARB determines the base 9515bd8deadSopenharmony_ci internal format of the texture. The format-specific component sizes 9525bd8deadSopenharmony_ci are also determined by pbuffer attributes as shown in the table below. 9535bd8deadSopenharmony_ci The component sizes are dependent on the format of the texture. 9545bd8deadSopenharmony_ci 9555bd8deadSopenharmony_ci Component Size Format 9565bd8deadSopenharmony_ci --------- ------------------------ ---------------------------- 9575bd8deadSopenharmony_ci R WGL_RED_BITS_ARB RGB, RGBA, FLOAT_R, FLOAT_RG, 9585bd8deadSopenharmony_ci FLOAT_RGB, FLOAT_RGBA 9595bd8deadSopenharmony_ci G WGL_GREEN_BITS_ARB RGB, RGBA, FLOAT_R, FLOAT_RG, 9605bd8deadSopenharmony_ci FLOAT_RGB, FLOAT_RGBA 9615bd8deadSopenharmony_ci B WGL_BLUE_BITS_ARB RGB, RGBA, FLOAT_R, FLOAT_RG, 9625bd8deadSopenharmony_ci FLOAT_RGB, FLOAT_RGBA 9635bd8deadSopenharmony_ci A WGL_ALPHA_BITS_ARB RGB, RGBA, FLOAT_R, FLOAT_RG, 9645bd8deadSopenharmony_ci FLOAT_RGB, FLOAT_RGBA 9655bd8deadSopenharmony_ci 9665bd8deadSopenharmony_ci 9675bd8deadSopenharmony_ciAdditions to the AGL Specification 9685bd8deadSopenharmony_ci 9695bd8deadSopenharmony_ci None 9705bd8deadSopenharmony_ci 9715bd8deadSopenharmony_ciAdditions to the GLX Specification 9725bd8deadSopenharmony_ci 9735bd8deadSopenharmony_ci <very incomplete> 9745bd8deadSopenharmony_ci 9755bd8deadSopenharmony_ci The GLX_FLOAT_COMPONENTS_NV framebuffer config attribute is a 9765bd8deadSopenharmony_ci boolean (or GLX_DONT_CARE) indicating if floating-point components 9775bd8deadSopenharmony_ci are requested. 9785bd8deadSopenharmony_ci 9795bd8deadSopenharmony_ciDependencies on EXT_paletted_texture, SGIX_depth_texture, and NV_texture_shader 9805bd8deadSopenharmony_ci 9815bd8deadSopenharmony_ci If any of these extensions are not supported, the rows in Tables 3.15 and 9825bd8deadSopenharmony_ci 3.16 corresponding to texture formats defined by the unsupported extension 9835bd8deadSopenharmony_ci should be removed. 9845bd8deadSopenharmony_ci 9855bd8deadSopenharmony_ci If NV_texture_shader is not supported, ignore the amended 9865bd8deadSopenharmony_ci paragraph from the NV_texture_shader specificiaton describing 9875bd8deadSopenharmony_ci TEXTURE_BORDER_VALUES clamping in favor of the original OpenGL 9885bd8deadSopenharmony_ci specification language. 9895bd8deadSopenharmony_ci 9905bd8deadSopenharmony_ciDependencies on NV_half_float 9915bd8deadSopenharmony_ci 9925bd8deadSopenharmony_ci If GL_NV_half_float is not supported, all references to HALF_FLOAT_NV 9935bd8deadSopenharmony_ci should be deleted. 9945bd8deadSopenharmony_ci 9955bd8deadSopenharmony_ciDependencies on ARB_color_buffer_float and ATI_pixel_format_float 9965bd8deadSopenharmony_ci 9975bd8deadSopenharmony_ci If ARB_color_buffer_float and ATI_pixel_format_float are also supported, 9985bd8deadSopenharmony_ci the GL would have two different floating-point frame buffer models with 9995bd8deadSopenharmony_ci different restrictions. To avoid having to carry these differences all 10005bd8deadSopenharmony_ci the way down the pipeline and provide two distinct sets of frame buffer 10015bd8deadSopenharmony_ci formats, the following limitations on rendering to floating-point color 10025bd8deadSopenharmony_ci buffers in this extension are removed if ARB_color_buffer_float or 10035bd8deadSopenharmony_ci ATI_pixel_format_float is supported: 10045bd8deadSopenharmony_ci 10055bd8deadSopenharmony_ci Modify Section 3.11, Antialiasing Application (p. 155) 10065bd8deadSopenharmony_ci 10075bd8deadSopenharmony_ci ... In RGBA mode with floating-point frame buffers, the coverage value 10085bd8deadSopenharmony_ci is simply discarded. ... 10095bd8deadSopenharmony_ci 10105bd8deadSopenharmony_ci Modify Section 4.1.3, Multisample Fragment Operations (p. 158) 10115bd8deadSopenharmony_ci 10125bd8deadSopenharmony_ci This step applies only for fixed-point RGBA color buffers. Otherwise, 10135bd8deadSopenharmony_ci proceed to the next step. ... 10145bd8deadSopenharmony_ci 10155bd8deadSopenharmony_ci Modify Section 4.1.4, Alpha Test (p. 159) 10165bd8deadSopenharmony_ci 10175bd8deadSopenharmony_ci This step applies only for fixed-point RGBA color buffers. Otherwise, 10185bd8deadSopenharmony_ci proceed to the next step. ... 10195bd8deadSopenharmony_ci 10205bd8deadSopenharmony_ci Modify Section 4.1.7, Blending (p. 161) 10215bd8deadSopenharmony_ci 10225bd8deadSopenharmony_ci (modify second paragraph) 10235bd8deadSopenharmony_ci 10245bd8deadSopenharmony_ci This blending is dependent on the incoming fragment's alpha value and 10255bd8deadSopenharmony_ci that of the corresponding currently stored pixel. Blending applies only 10265bd8deadSopenharmony_ci for fixed-point RGBA color buffers; otherwise, it is bypassed. ... 10275bd8deadSopenharmony_ci 10285bd8deadSopenharmony_ci Modify Section 4.2.4, The Accumulation Buffer (p. 172) 10295bd8deadSopenharmony_ci 10305bd8deadSopenharmony_ci (modify last paragraph) ..., or if color buffer is not fixed-point RGBA, 10315bd8deadSopenharmony_ci 10325bd8deadSopenharmony_ci When blending is enabled with a floating-point color buffer, the spec 10335bd8deadSopenharmony_ci language in ARB_color_buffer_float describes how blending is performed. 10345bd8deadSopenharmony_ci 10355bd8deadSopenharmony_ci The above restrictions remain in effect on NV3X (GeForce FX, Quadro FX) 10365bd8deadSopenharmony_ci hardware, where neither ARB_color_buffer_float nor ATI_pixel_format_float 10375bd8deadSopenharmony_ci is supported. 10385bd8deadSopenharmony_ci 10395bd8deadSopenharmony_ci Additionally, if ARB_color_buffer_float or ATI_pixel_format_float is 10405bd8deadSopenharmony_ci supported, the following errors are not generated: 10415bd8deadSopenharmony_ci 10425bd8deadSopenharmony_ci INVALID_OPERATION is generated by Begin, DrawPixels, Bitmap, CopyPixels, 10435bd8deadSopenharmony_ci or a command that performs an explicit Begin if the color buffer has a 10445bd8deadSopenharmony_ci floating-point RGBA format and FRAGMENT_PROGRAM_NV is disabled. 10455bd8deadSopenharmony_ci 10465bd8deadSopenharmony_ci INVALID_OPERATION is generated by Accum if the color buffer has a color 10475bd8deadSopenharmony_ci index or floating-point RGBA format. 10485bd8deadSopenharmony_ci 10495bd8deadSopenharmony_ciDependencies on ARB_texture_float and ATI_texture_float 10505bd8deadSopenharmony_ci 10515bd8deadSopenharmony_ci If ARB_texture_float or ATI_texture_float is also supported, the GL would 10525bd8deadSopenharmony_ci have two different sets of floating-point textures with different 10535bd8deadSopenharmony_ci restrictions. To avoid having to carry these differences all the way down 10545bd8deadSopenharmony_ci the pipeline, the following limitations on filtering of NV_float_buffer 10555bd8deadSopenharmony_ci textures are removed if ARB_texture_float or ATI_texture_float is 10565bd8deadSopenharmony_ci supported: 10575bd8deadSopenharmony_ci 10585bd8deadSopenharmony_ci Modify Section 3.8,7, Minification (p. 141) 10595bd8deadSopenharmony_ci 10605bd8deadSopenharmony_ci (Add after the last paragraph in the section) Floating-point textures 10615bd8deadSopenharmony_ci (those with a base internal format of FLOAT_R_NV, FLOAT_RG_NV, 10625bd8deadSopenharmony_ci FLOAT_RGB_NV, or FLOAT_RGBA_NV) do not support texture filters other 10635bd8deadSopenharmony_ci than NEAREST. For such textures, NEAREST filtering is applied 10645bd8deadSopenharmony_ci regardless of the setting of TEXTURE_MIN_FILTER. 10655bd8deadSopenharmony_ci 10665bd8deadSopenharmony_ci Modify Section 3.8.8, Magnification (p. 141) 10675bd8deadSopenharmony_ci 10685bd8deadSopenharmony_ci (Add after the last paragraph in the section) Floating-point textures 10695bd8deadSopenharmony_ci (those with a base internal format of FLOAT_R_NV, FLOAT_RG_NV, 10705bd8deadSopenharmony_ci FLOAT_RGB_NV, or FLOAT_RGBA_NV) do not support texture filters other 10715bd8deadSopenharmony_ci than NEAREST. For such textures, NEAREST filtering is applied 10725bd8deadSopenharmony_ci regardless of the setting of TEXTURE_MAG_FILTER. 10735bd8deadSopenharmony_ci 10745bd8deadSopenharmony_ci The above restrictions remain in effect on NV3X (GeForce FX, Quadro FX) 10755bd8deadSopenharmony_ci hardware, where ARB_texture_float and ATI_texture_float are not supported. 10765bd8deadSopenharmony_ci 10775bd8deadSopenharmony_ci The following restriction requiring the use of rectangle textures does 10785bd8deadSopenharmony_ci remain in effect for NV_float_buffer texture formats, even though 10795bd8deadSopenharmony_ci ARB_texture_float and ATI_texture_float provides the ability to use 10805bd8deadSopenharmony_ci floating-point textures with non-rectangle targets. If this capability is 10815bd8deadSopenharmony_ci required, use the texture formats defined in ARB_texture_float or 10825bd8deadSopenharmony_ci ATI_texture_float. 10835bd8deadSopenharmony_ci 10845bd8deadSopenharmony_ci (add between first and second paragraphs, p.117) Textures with a base 10855bd8deadSopenharmony_ci internal format of FLOAT_R_NV, FLOAT_RG_NV, FLOAT_RGB_NV, and 10865bd8deadSopenharmony_ci FLOAT_RGBA_NV are known as floating-point textures. Floating-point 10875bd8deadSopenharmony_ci textures are only supported for the TEXTURE_RECTANGLE_NV target. 10885bd8deadSopenharmony_ci Specifying a floating-point texture with any other target will produce 10895bd8deadSopenharmony_ci an INVALID_OPERATION error. 10905bd8deadSopenharmony_ci 10915bd8deadSopenharmony_ciDependencies on EXT_framebuffer_object 10925bd8deadSopenharmony_ci 10935bd8deadSopenharmony_ci If EXT_framebuffer_object is not supported, then ignore any 10945bd8deadSopenharmony_ci reference to EXT_framebuffer_object. 10955bd8deadSopenharmony_ci 10965bd8deadSopenharmony_ciGLX Protocol 10975bd8deadSopenharmony_ci 10985bd8deadSopenharmony_ci None. 10995bd8deadSopenharmony_ci 11005bd8deadSopenharmony_ciErrors 11015bd8deadSopenharmony_ci 11025bd8deadSopenharmony_ci INVALID_OPERATION is generated by Begin, DrawPixels, Bitmap, CopyPixels, 11035bd8deadSopenharmony_ci or a command that performs an explicit Begin if the color buffer has a 11045bd8deadSopenharmony_ci floating-point RGBA format and FRAGMENT_PROGRAM_NV is disabled. 11055bd8deadSopenharmony_ci 11065bd8deadSopenharmony_ci INVALID_OPERATION is generated by TexImage3D, TexImage2D, TexImage1D, 11075bd8deadSopenharmony_ci TexSubImage3D, TexSubImage2D, or TexSubImage1D if the pixel group type 11085bd8deadSopenharmony_ci corresponding to <format> is not compatible with the base internal format 11095bd8deadSopenharmony_ci of the texture. 11105bd8deadSopenharmony_ci 11115bd8deadSopenharmony_ci INVALID_OPERATION is generated by TexImage3D, TexImage1D, or 11125bd8deadSopenharmony_ci CopyTexImage1D if the base internal format corresponding to 11135bd8deadSopenharmony_ci <internalformat> is FLOAT_R_NV, FLOAT_RG_NV, FLOAT_RGB_NV, or 11145bd8deadSopenharmony_ci FLOAT_RGBA_NV. 11155bd8deadSopenharmony_ci 11165bd8deadSopenharmony_ci INVALID_OPERATION is generated by TexImage2D or CopyTexImage2D if the base 11175bd8deadSopenharmony_ci internal format corresponding to <internalformat> is FLOAT_R_NV, 11185bd8deadSopenharmony_ci FLOAT_RG_NV, FLOAT_RGB_NV, or FLOAT_RGBA_NV and <target> is not 11195bd8deadSopenharmony_ci TEXTURE_RECTANGLE_NV. 11205bd8deadSopenharmony_ci 11215bd8deadSopenharmony_ci INVALID_OPERATION is generated by Accum if the color buffer has a color 11225bd8deadSopenharmony_ci index or floating-point RGBA format. 11235bd8deadSopenharmony_ci 11245bd8deadSopenharmony_ci ERROR_INVALID_DATA is generated by wglCreatePbufferARB if 11255bd8deadSopenharmony_ci WGL_TEXTURE_FORMAT_ARB is WGL_TEXTURE_FLOAT_R_NV, WGL_TEXTURE_FLOAT_RG_NV, 11265bd8deadSopenharmony_ci WGL_TEXTURE_FLOAT_RGB_NV, or WGL_TEXTURE_FLOAT_RGBA_NV, and 11275bd8deadSopenharmony_ci WGL_TEXTURE_TARGET_ARB is not WGL_TEXTURE_RECTANGLE_NV. 11285bd8deadSopenharmony_ci 11295bd8deadSopenharmony_ci ERROR_INVALID_DATA is generated by wglCreatePbufferARB if 11305bd8deadSopenharmony_ci WGL_TEXTURE_FORMAT_ARB is WGL_TEXTURE_FLOAT_R_NV, WGL_TEXTURE_TARGET_ARB 11315bd8deadSopenharmony_ci is WGL_TEXTURE_RECTANGLE_NV, and the 11325bd8deadSopenharmony_ci WGL_BIND_TO_TEXTURE_RECTANGLE_FLOAT_R_NV attribute is not set in the pixel 11335bd8deadSopenharmony_ci format. 11345bd8deadSopenharmony_ci 11355bd8deadSopenharmony_ci ERROR_INVALID_DATA is generated by wglCreatePbufferARB if 11365bd8deadSopenharmony_ci WGL_TEXTURE_FORMAT_ARB is WGL_TEXTURE_FLOAT_RG_NV, WGL_TEXTURE_TARGET_ARB 11375bd8deadSopenharmony_ci is WGL_TEXTURE_RECTANGLE_NV, and the 11385bd8deadSopenharmony_ci WGL_BIND_TO_TEXTURE_RECTANGLE_FLOAT_RG_NV attribute is not set in the 11395bd8deadSopenharmony_ci pixel format. 11405bd8deadSopenharmony_ci 11415bd8deadSopenharmony_ci ERROR_INVALID_DATA is generated by wglCreatePbufferARB if 11425bd8deadSopenharmony_ci WGL_TEXTURE_FORMAT_ARB is WGL_TEXTURE_FLOAT_RGB_NV, WGL_TEXTURE_TARGET_ARB 11435bd8deadSopenharmony_ci is WGL_TEXTURE_RECTANGLE_NV, and the 11445bd8deadSopenharmony_ci WGL_BIND_TO_TEXTURE_RECTANGLE_FLOAT_RGB_NV attribute is not set in the 11455bd8deadSopenharmony_ci pixel format. 11465bd8deadSopenharmony_ci 11475bd8deadSopenharmony_ci ERROR_INVALID_DATA is generated by wglCreatePbufferARB if 11485bd8deadSopenharmony_ci WGL_TEXTURE_FORMAT_ARB is WGL_TEXTURE_FLOAT_RGBA_NV, 11495bd8deadSopenharmony_ci WGL_TEXTURE_TARGET_ARB is WGL_TEXTURE_RECTANGLE_NV, and the 11505bd8deadSopenharmony_ci WGL_BIND_TO_TEXTURE_RECTANGLE_FLOAT_RGBA_NV attribute is not set in the 11515bd8deadSopenharmony_ci pixel format. 11525bd8deadSopenharmony_ci 11535bd8deadSopenharmony_ci 11545bd8deadSopenharmony_ciNew State 11555bd8deadSopenharmony_ci 11565bd8deadSopenharmony_ci (Modify Table 6.15, Texture Objects (cont.), p. 223) 11575bd8deadSopenharmony_ci 11585bd8deadSopenharmony_ci Init. 11595bd8deadSopenharmony_ci Get Value Type Get Command Value Description Sec. Attribute 11605bd8deadSopenharmony_ci --------------------------- ----- ------------ ----- --------------------- ----- ------------ 11615bd8deadSopenharmony_ci TEXTURE_FLOAT_COMPONENTS_NV n x B GetTexLevel- 0 True if texture holds 3.8 - 11625bd8deadSopenharmony_ci unclamped floating- 11635bd8deadSopenharmony_ci point values 11645bd8deadSopenharmony_ci 11655bd8deadSopenharmony_ci (Modify Table 6.19, Framebuffer Control, p. 227) 11665bd8deadSopenharmony_ci 11675bd8deadSopenharmony_ci Init. 11685bd8deadSopenharmony_ci Get Value Type Get Command Value Description Sec. Attribute 11695bd8deadSopenharmony_ci -------------------------- ---- ----------- ------- ------------------------ ----- ------------ 11705bd8deadSopenharmony_ci COLOR_CLEAR_VALUE C GetFloatv 0,0,0,0 Color buffer clear value 4.2.3 color-buffer 11715bd8deadSopenharmony_ci (RGBA mode), each value 11725bd8deadSopenharmony_ci clamped to [0,1]. 11735bd8deadSopenharmony_ci FLOAT_CLEAR_COLOR_VALUE_NV 4xR GetFloatv 0,0,0,0 Color buffer clear value 4.2.3 color-buffer 11745bd8deadSopenharmony_ci (RGBA mode), each value 11755bd8deadSopenharmony_ci unclamped. 11765bd8deadSopenharmony_ci 11775bd8deadSopenharmony_ci 11785bd8deadSopenharmony_ciNew Implementation Dependent State 11795bd8deadSopenharmony_ci 11805bd8deadSopenharmony_ci (Modify Table 6.28, Implementation Dependent Values, p. 236) 11815bd8deadSopenharmony_ci 11825bd8deadSopenharmony_ci Init. 11835bd8deadSopenharmony_ci Get Value Type Get Command Value Description Sec. Attribute 11845bd8deadSopenharmony_ci ------------------ ---- ----------- ----- --------------------- ---- --------- 11855bd8deadSopenharmony_ci FLOAT_RGBA_MODE_NV B GetBooleanv - True if color buffers 4 - 11865bd8deadSopenharmony_ci store floating-point 11875bd8deadSopenharmony_ci data 11885bd8deadSopenharmony_ci 11895bd8deadSopenharmony_ciNV3x Implementation Details 11905bd8deadSopenharmony_ci 11915bd8deadSopenharmony_ci NV3x GPUs (GeForce FX, etc.) support hardware acceleration for float 11925bd8deadSopenharmony_ci textures with two or more components only when the repeat mode state 11935bd8deadSopenharmony_ci (S and T) is GL_CLAMP_TO_EDGE. If you use either the GL_CLAMP or 11945bd8deadSopenharmony_ci GL_CLAMP_TO_BORDER repeat modes with a float texture with two or 11955bd8deadSopenharmony_ci more components, the software rasterizer is used. 11965bd8deadSopenharmony_ci 11975bd8deadSopenharmony_ci However, if you use a single-component float texture (GL_FLOAT_R_NV, 11985bd8deadSopenharmony_ci etc.), all clamping repeat modes (GL_CLAMP, GL_CLAMP_TO_EDGE, and 11995bd8deadSopenharmony_ci GL_CLAMP_TO_BORDER) are available with full hardware acceleration. 12005bd8deadSopenharmony_ci 12015bd8deadSopenharmony_ci The two-, three-, and four-component texture formats all use the 12025bd8deadSopenharmony_ci same amount of texture memory storage (128 bits per texel for the 12035bd8deadSopenharmony_ci GL_FLOAT_x32 formats, and 64 bits per texel for the GL_FLOAT_x16 12045bd8deadSopenharmony_ci formats). Future GPUs will likely store two and three component 12055bd8deadSopenharmony_ci float textures more efficiently. 12065bd8deadSopenharmony_ci 12075bd8deadSopenharmony_ci The GL_FLOAT_R32_NV and GL_FLOAT_R16_NV texture formats each use 32 12085bd8deadSopenharmony_ci bits per texel. Future GPUs will likely store GL_FLOAT_R16_NV more 12095bd8deadSopenharmony_ci efficiently. 12105bd8deadSopenharmony_ci 12115bd8deadSopenharmony_ci NVIDIA treats the unsized internal formats GL_FLOAT_R_NV, 12125bd8deadSopenharmony_ci GL_FLOAT_RGBA_NV, etc. the same as GL_FLOAT_R32_NV, 12135bd8deadSopenharmony_ci GL_FLOAT_RGBA32_NV, etc. 12145bd8deadSopenharmony_ci 12155bd8deadSopenharmony_ciRevision History 12165bd8deadSopenharmony_ci 12175bd8deadSopenharmony_ci Rev. Date Author Changes 12185bd8deadSopenharmony_ci ---- -------- -------- -------------------------------------------- 12195bd8deadSopenharmony_ci 20 11/03/06 mjk Update Status 12205bd8deadSopenharmony_ci 12215bd8deadSopenharmony_ci 19 01/10/05 mjk Add very minimal GLX discussion 12225bd8deadSopenharmony_ci 12235bd8deadSopenharmony_ci 18 09/12/05 jjuliano Describe interaction with EXT_framebuffer_object. 12245bd8deadSopenharmony_ci The GL_FLOAT_*_NV texture formats are 12255bd8deadSopenharmony_ci color-renderable. 12265bd8deadSopenharmony_ci 12275bd8deadSopenharmony_ci 17 04/04/05 pbrown Describe interactions with ARB_texture_float and 12285bd8deadSopenharmony_ci ARB_color_buffer_float (as well as the ATI 12295bd8deadSopenharmony_ci equivalents), which remove some of the 12305bd8deadSopenharmony_ci restrictions of this extension, when supported. 12315bd8deadSopenharmony_ci 12325bd8deadSopenharmony_ci 16 06/16/03 pbrown Corrected the usage of WGL_TEXTURE_FLOAT_R_NV and 12335bd8deadSopenharmony_ci related enums in the list of enumerants. 12345bd8deadSopenharmony_ci 12355bd8deadSopenharmony_ci 15 01/23/03 mjk Document texture border color (values) behavior 12365bd8deadSopenharmony_ci for float textures. See issue. 12375bd8deadSopenharmony_ci 12385bd8deadSopenharmony_ci 14 01/20/03 mjk Added NV3x Implementation Details section. 12395bd8deadSopenharmony_ci 12405bd8deadSopenharmony_ci 13 11/27/02 pbrown Fixed the name of the clear color query enum in 12415bd8deadSopenharmony_ci the state table -- the core spec says 12425bd8deadSopenharmony_ci COLOR_CLEAR_VALUE. The enum in this extension is 12435bd8deadSopenharmony_ci FLOAT_CLEAR_COLOR_VALUE_NV. Documented this 12445bd8deadSopenharmony_ci inconsistency. 12455bd8deadSopenharmony_ci 12465bd8deadSopenharmony_ci 12 10/09/02 pbrown Clarified that the floating-point internal format 12475bd8deadSopenharmony_ci enums can not be passed TexImage1D and 12485bd8deadSopenharmony_ci TexImage3D. 12495bd8deadSopenharmony_ci 12505bd8deadSopenharmony_ci 11 07/19/02 pbrown Cleaned up a number of items in the issues 12515bd8deadSopenharmony_ci section. Removed limitation that DrawPixels and 12525bd8deadSopenharmony_ci CopyPixels color components are clamped to 12535bd8deadSopenharmony_ci [0,1]. Removed language modifying multisample 12545bd8deadSopenharmony_ci color filtering -- if multisample buffers are 12555bd8deadSopenharmony_ci supported, the color components will be filtered 12565bd8deadSopenharmony_ci on a componentwise basis. 12575bd8deadSopenharmony_ci 12585bd8deadSopenharmony_ci 10 07/09/02 pbrown Fixed contradictory issue resolutions. 12595bd8deadSopenharmony_ci 12605bd8deadSopenharmony_ci 9 01/31/02 pbrown Added revision history. 12615bd8deadSopenharmony_ci 12625bd8deadSopenharmony_ci 8 01/29/02 pbrown Fix spec to indicate that 12635bd8deadSopenharmony_ci TEXTURE_FLOAT_COMPONENTS_NV is queried by 12645bd8deadSopenharmony_ci GetTexLevelParameter*() calls instead of the 12655bd8deadSopenharmony_ci generic gets. 12665bd8deadSopenharmony_ci 12675bd8deadSopenharmony_ci 7 12/26/01 pbrown Documented limitation where DrawPixels/CopyPixels 12685bd8deadSopenharmony_ci data are clamped to [0,1], even when the color 12695bd8deadSopenharmony_ci buffer is floating-point. This is consistent 12705bd8deadSopenharmony_ci with the fact that pixel data is supposed to go 12715bd8deadSopenharmony_ci in f[COL0] (fixed-point interpolator). Changed 12725bd8deadSopenharmony_ci float texture to RGBA expansion to always fill in 12735bd8deadSopenharmony_ci with (0,0,0,1), not (0,0,0,0). This is more 12745bd8deadSopenharmony_ci consistent with our other texture formats. 12755bd8deadSopenharmony_ci 12765bd8deadSopenharmony_ci 6 11/30/01 pbrown Assigned WGL enumerant values. 12775bd8deadSopenharmony_ci 12785bd8deadSopenharmony_ci 5 11/27/01 pbrown Modify NV_float_buffer to eliminate the 12795bd8deadSopenharmony_ci dependencies on NV_render_depth_texture, now that 12805bd8deadSopenharmony_ci they are no longer necessary. More pedantic 12815bd8deadSopenharmony_ci fixes. 12825bd8deadSopenharmony_ci 12835bd8deadSopenharmony_ci 4 10/29/01 pbrown Add documentation of possible uses of 12845bd8deadSopenharmony_ci floating-point color buffers. 12855bd8deadSopenharmony_ci 12865bd8deadSopenharmony_ci 3 10/19/01 pbrown Assign GL enumerants. Fixed some bugs in the use 12875bd8deadSopenharmony_ci of #defines in the spec. Added ARB_imaging 12885bd8deadSopenharmony_ci and SGIS_generate_mipmap interaction issues. 1289