15bd8deadSopenharmony_ciName 25bd8deadSopenharmony_ci 35bd8deadSopenharmony_ci ARB_multisample 45bd8deadSopenharmony_ci 55bd8deadSopenharmony_ciName Strings 65bd8deadSopenharmony_ci 75bd8deadSopenharmony_ci GL_ARB_multisample 85bd8deadSopenharmony_ci GLX_ARB_multisample 95bd8deadSopenharmony_ci WGL_ARB_multisample 105bd8deadSopenharmony_ci 115bd8deadSopenharmony_ciContact 125bd8deadSopenharmony_ci 135bd8deadSopenharmony_ci Dale Kirkland, NVIDIA (dkirkland 'at' nvidia.com) 145bd8deadSopenharmony_ci Bill Armstrong, E&S (armstron 'at' es.com) 155bd8deadSopenharmony_ci Michael Gold, NVIDIA (gold 'at' nvidia.com) 165bd8deadSopenharmony_ci Jon Leech, SGI (ljp 'at' sgi.com) 175bd8deadSopenharmony_ci Paula Womack, 3dfx (paulaw 'at' 3dfx.com) 185bd8deadSopenharmony_ci 195bd8deadSopenharmony_ciNotice 205bd8deadSopenharmony_ci 215bd8deadSopenharmony_ci Copyright (c) 1999-2013 The Khronos Group Inc. Copyright terms at 225bd8deadSopenharmony_ci http://www.khronos.org/registry/speccopyright.html 235bd8deadSopenharmony_ci 245bd8deadSopenharmony_ciSpecification Update Policy 255bd8deadSopenharmony_ci 265bd8deadSopenharmony_ci Khronos-approved extension specifications are updated in response to 275bd8deadSopenharmony_ci issues and bugs prioritized by the Khronos OpenGL Working Group. For 285bd8deadSopenharmony_ci extensions which have been promoted to a core Specification, fixes will 295bd8deadSopenharmony_ci first appear in the latest version of that core Specification, and will 305bd8deadSopenharmony_ci eventually be backported to the extension document. This policy is 315bd8deadSopenharmony_ci described in more detail at 325bd8deadSopenharmony_ci https://www.khronos.org/registry/OpenGL/docs/update_policy.php 335bd8deadSopenharmony_ci 345bd8deadSopenharmony_ciStatus 355bd8deadSopenharmony_ci 365bd8deadSopenharmony_ci Approved by ARB on 12/8/1999. 375bd8deadSopenharmony_ci GLX protocol must still be defined. 385bd8deadSopenharmony_ci 395bd8deadSopenharmony_ciVersion 405bd8deadSopenharmony_ci 415bd8deadSopenharmony_ci Last Modified Date: March 12, 2002 425bd8deadSopenharmony_ci Author Revision: 0.6 435bd8deadSopenharmony_ci 445bd8deadSopenharmony_ci Based on: SGIS_Multisample Specification 455bd8deadSopenharmony_ci Date: 1994/11/22 Revision: 1.14 465bd8deadSopenharmony_ci 475bd8deadSopenharmony_ciNumber 485bd8deadSopenharmony_ci 495bd8deadSopenharmony_ci ARB Extension #5 505bd8deadSopenharmony_ci 515bd8deadSopenharmony_ciDependencies 525bd8deadSopenharmony_ci 535bd8deadSopenharmony_ci WGL_EXT_extensions_string is required. 545bd8deadSopenharmony_ci WGL_EXT_pixel_format is required. 555bd8deadSopenharmony_ci 565bd8deadSopenharmony_ciOverview 575bd8deadSopenharmony_ci 585bd8deadSopenharmony_ci This extension provides a mechanism to antialias all GL primitives: 595bd8deadSopenharmony_ci points, lines, polygons, bitmaps, and images. The technique is to 605bd8deadSopenharmony_ci sample all primitives multiple times at each pixel. The color 615bd8deadSopenharmony_ci sample values are resolved to a single, displayable color each time 625bd8deadSopenharmony_ci a pixel is updated, so the antialiasing appears to be automatic at 635bd8deadSopenharmony_ci the application level. Because each sample includes depth and 645bd8deadSopenharmony_ci stencil information, the depth and stencil functions perform 655bd8deadSopenharmony_ci equivalently to the single-sample mode. 665bd8deadSopenharmony_ci 675bd8deadSopenharmony_ci An additional buffer, called the multisample buffer, is added to 685bd8deadSopenharmony_ci the framebuffer. Pixel sample values, including color, depth, and 695bd8deadSopenharmony_ci stencil values, are stored in this buffer. When the framebuffer 705bd8deadSopenharmony_ci includes a multisample buffer, it does not also include separate 715bd8deadSopenharmony_ci depth or stencil buffers, even if the multisample buffer does not 725bd8deadSopenharmony_ci store depth or stencil values. Color buffers (left/right, front/ 735bd8deadSopenharmony_ci back, and aux) do coexist with the multisample buffer, however. 745bd8deadSopenharmony_ci 755bd8deadSopenharmony_ci Multisample antialiasing is most valuable for rendering polygons, 765bd8deadSopenharmony_ci because it requires no sorting for hidden surface elimination, and 775bd8deadSopenharmony_ci it correctly handles adjacent polygons, object silhouettes, and 785bd8deadSopenharmony_ci even intersecting polygons. If only points or lines are being 795bd8deadSopenharmony_ci rendered, the "smooth" antialiasing mechanism provided by the base 805bd8deadSopenharmony_ci GL may result in a higher quality image. This extension is 815bd8deadSopenharmony_ci designed to allow multisample and smooth antialiasing techniques 825bd8deadSopenharmony_ci to be alternated during the rendering of a single scene. 835bd8deadSopenharmony_ci 845bd8deadSopenharmony_ciIP Status 855bd8deadSopenharmony_ci 865bd8deadSopenharmony_ci TBD 875bd8deadSopenharmony_ci 885bd8deadSopenharmony_ciIssues 895bd8deadSopenharmony_ci 905bd8deadSopenharmony_ci 1. Multiple passes have been taken out. Is this acceptable? 915bd8deadSopenharmony_ci 925bd8deadSopenharmony_ci RESOLUTION: Yes. This can be added back with an additional 935bd8deadSopenharmony_ci extension if needed. 945bd8deadSopenharmony_ci 955bd8deadSopenharmony_ci 2. Would SampleAlphaARB be a better name for the function 965bd8deadSopenharmony_ci SampleMaskARB? If so, the name SAMPLE_MASK_ARB should also be 975bd8deadSopenharmony_ci changed to SAMPLE_ALPHA_ARB. 985bd8deadSopenharmony_ci 995bd8deadSopenharmony_ci RESOLUTION: Names containing "mask" were changed to use 1005bd8deadSopenharmony_ci "coverage" instead. 1015bd8deadSopenharmony_ci 1025bd8deadSopenharmony_ci 3. Should the SampleCoverageARB function be changed to allow 1035bd8deadSopenharmony_ci blending between more than two objects? 1045bd8deadSopenharmony_ci 1055bd8deadSopenharmony_ci RESOLUTION: Not addressed by this extension. An additional 1065bd8deadSopenharmony_ci extension has been proposed that allows a coverage range for 1075bd8deadSopenharmony_ci each object. The coverage range is a min and max value that 1085bd8deadSopenharmony_ci can be used to blend multiple objects at different level-of- 1095bd8deadSopenharmony_ci detail fading. The SampleCoverageARB function will layer on 1105bd8deadSopenharmony_ci this new extension. 1115bd8deadSopenharmony_ci 1125bd8deadSopenharmony_ciNew Procedures and Functions 1135bd8deadSopenharmony_ci 1145bd8deadSopenharmony_ci void SampleCoverageARB(clampf value, 1155bd8deadSopenharmony_ci boolean invert); 1165bd8deadSopenharmony_ci 1175bd8deadSopenharmony_ciNew Tokens 1185bd8deadSopenharmony_ci 1195bd8deadSopenharmony_ci Accepted by the <attribList> parameter of glXChooseVisual, and by 1205bd8deadSopenharmony_ci the <attrib> parameter of glXGetConfig: 1215bd8deadSopenharmony_ci 1225bd8deadSopenharmony_ci GLX_SAMPLE_BUFFERS_ARB 100000 1235bd8deadSopenharmony_ci GLX_SAMPLES_ARB 100001 1245bd8deadSopenharmony_ci 1255bd8deadSopenharmony_ci Accepted by the <piAttributes> parameter of 1265bd8deadSopenharmony_ci wglGetPixelFormatAttribivEXT, wglGetPixelFormatAttribfvEXT, and 1275bd8deadSopenharmony_ci the <piAttribIList> and <pfAttribIList> of wglChoosePixelFormatEXT: 1285bd8deadSopenharmony_ci 1295bd8deadSopenharmony_ci WGL_SAMPLE_BUFFERS_ARB 0x2041 1305bd8deadSopenharmony_ci WGL_SAMPLES_ARB 0x2042 1315bd8deadSopenharmony_ci 1325bd8deadSopenharmony_ci Accepted by the <cap> parameter of Enable, Disable, and IsEnabled, 1335bd8deadSopenharmony_ci and by the <pname> parameter of GetBooleanv, GetIntegerv, 1345bd8deadSopenharmony_ci GetFloatv, and GetDoublev: 1355bd8deadSopenharmony_ci 1365bd8deadSopenharmony_ci MULTISAMPLE_ARB 0x809D 1375bd8deadSopenharmony_ci SAMPLE_ALPHA_TO_COVERAGE_ARB 0x809E 1385bd8deadSopenharmony_ci SAMPLE_ALPHA_TO_ONE_ARB 0x809F 1395bd8deadSopenharmony_ci SAMPLE_COVERAGE_ARB 0x80A0 1405bd8deadSopenharmony_ci 1415bd8deadSopenharmony_ci Accepted by the <mask> parameter of PushAttrib: 1425bd8deadSopenharmony_ci 1435bd8deadSopenharmony_ci MULTISAMPLE_BIT_ARB 0x20000000 1445bd8deadSopenharmony_ci 1455bd8deadSopenharmony_ci Accepted by the <pname> parameter of GetBooleanv, GetDoublev, 1465bd8deadSopenharmony_ci GetIntegerv, and GetFloatv: 1475bd8deadSopenharmony_ci 1485bd8deadSopenharmony_ci SAMPLE_BUFFERS_ARB 0x80A8 1495bd8deadSopenharmony_ci SAMPLES_ARB 0x80A9 1505bd8deadSopenharmony_ci SAMPLE_COVERAGE_VALUE_ARB 0x80AA 1515bd8deadSopenharmony_ci SAMPLE_COVERAGE_INVERT_ARB 0x80AB 1525bd8deadSopenharmony_ci 1535bd8deadSopenharmony_ciAdditions to Chapter 2 of the 1.2.1 Specification (OpenGL Operation) 1545bd8deadSopenharmony_ci 1555bd8deadSopenharmony_ci None 1565bd8deadSopenharmony_ci 1575bd8deadSopenharmony_ciAdditions to Chapter 3 of the 1.2.1 Specification (Rasterization) 1585bd8deadSopenharmony_ci 1595bd8deadSopenharmony_ci If SAMPLE_BUFFERS_ARB is a value of one, the rasterization of all 1605bd8deadSopenharmony_ci GL primitives is changed, and is referred to as multisample 1615bd8deadSopenharmony_ci rasterization. Otherwise, primitive rasterization operates as it is 1625bd8deadSopenharmony_ci described in the GL specification, and is referred to as single- 1635bd8deadSopenharmony_ci sample rasterization. The value of SAMPLE_BUFFERS_ARB is an 1645bd8deadSopenharmony_ci implementation dependent constant, and is queried by calling 1655bd8deadSopenharmony_ci GetIntegerv with <pname> set to SAMPLE_BUFFERS_ARB. This value is 1665bd8deadSopenharmony_ci the same as GLX_SAMPLE_BUFFERS_ARB or WGL_SAMPLE_BUFFERS_ARB for 1675bd8deadSopenharmony_ci the visual or pixel format associated with the context. 1685bd8deadSopenharmony_ci 1695bd8deadSopenharmony_ci During multisample rendering the contents of a pixel fragment are 1705bd8deadSopenharmony_ci changed in two ways. First, each fragment includes a coverage 1715bd8deadSopenharmony_ci value with SAMPLES_ARB bits. The value of SAMPLES_ARB is an 1725bd8deadSopenharmony_ci implementation-dependent constant, and is queried by calling 1735bd8deadSopenharmony_ci GetIntegerv with <pname> set to SAMPLES_ARB. Second, each fragment 1745bd8deadSopenharmony_ci includes SAMPLES_ARB depth values, instead of the single depth 1755bd8deadSopenharmony_ci value that is maintained in single-sample rendering mode. Each 1765bd8deadSopenharmony_ci pixel fragment thus consists of integer x and y grid coordinates, 1775bd8deadSopenharmony_ci a color, SAMPLES_ARB depth values, texture coordinates, and a 1785bd8deadSopenharmony_ci coverage value with a maximum of SAMPLES_ARB bits. 1795bd8deadSopenharmony_ci 1805bd8deadSopenharmony_ci The behavior of multisample rasterization is a function of 1815bd8deadSopenharmony_ci MULTISAMPLE_ARB, which is enabled and disabled by calling Enable or 1825bd8deadSopenharmony_ci Disable, with <cap> set to MULTISAMPLE_ARB. Its value is queried 1835bd8deadSopenharmony_ci using IsEnabled, with <cap> set to MULTISAMPLE_ARB. 1845bd8deadSopenharmony_ci 1855bd8deadSopenharmony_ci If MULTISAMPLE_ARB is disabled, multisample rasterization of all 1865bd8deadSopenharmony_ci primitives is equivalent to single-sample rasterization, except 1875bd8deadSopenharmony_ci that the fragment coverage value is set to full coverage. The 1885bd8deadSopenharmony_ci depth values may all be set to the single value that would have 1895bd8deadSopenharmony_ci been assigned by single-sample rasterization, or they may be 1905bd8deadSopenharmony_ci assigned as described below for multisample rasterization. 1915bd8deadSopenharmony_ci 1925bd8deadSopenharmony_ci If MULTISAMPLE_ARB is enabled, multisample rasterization of all 1935bd8deadSopenharmony_ci primitives differs substantially from single-sample rasterization. 1945bd8deadSopenharmony_ci It is understood that each pixel in the framebuffer has SAMPLES_ARB 1955bd8deadSopenharmony_ci locations associated with it. These locations are exact positions, 1965bd8deadSopenharmony_ci rather than regions or areas, and each is referred to as a sample 1975bd8deadSopenharmony_ci point. The sample points associated with a pixel may be located 1985bd8deadSopenharmony_ci inside or outside of the unit square that is considered to bound 1995bd8deadSopenharmony_ci the pixel. Furthermore, the relative locations of sample points 2005bd8deadSopenharmony_ci may be identical for each pixel in the framebuffer, or they may 2015bd8deadSopenharmony_ci differ. 2025bd8deadSopenharmony_ci 2035bd8deadSopenharmony_ci If the sample locations differ per pixel, they should be aligned to 2045bd8deadSopenharmony_ci window, not screen, boundaries. Otherwise rendering results will 2055bd8deadSopenharmony_ci be window-position specific. The invariance requirement described 2065bd8deadSopenharmony_ci in section 3.1 is relaxed for all enabled multisample rendering, 2075bd8deadSopenharmony_ci because the sample locations may be a function of pixel location. 2085bd8deadSopenharmony_ci 2095bd8deadSopenharmony_ci It is not possible to query the actual sample locations of a pixel. 2105bd8deadSopenharmony_ci 2115bd8deadSopenharmony_ci Point Multisample Rasterization 2125bd8deadSopenharmony_ci [Insert before section 3.3.1] 2135bd8deadSopenharmony_ci 2145bd8deadSopenharmony_ci If MULTISAMPLE_ARB is enabled, and SAMPLE_BUFFERS_ARB is a value of 2155bd8deadSopenharmony_ci one, then points are rasterized using the following algorithm, 2165bd8deadSopenharmony_ci regardless of whether point antialiasing (POINT_SMOOTH) is enabled 2175bd8deadSopenharmony_ci or disabled. Point rasterization produces a fragment for each 2185bd8deadSopenharmony_ci framebuffer pixel with one or more sample points that intersect the 2195bd8deadSopenharmony_ci region lying within the circle having diameter equal to the current 2205bd8deadSopenharmony_ci point width and centered at the point's (Xw,Yw). Coverage bits 2215bd8deadSopenharmony_ci that correspond to sample points that intersect the circular region 2225bd8deadSopenharmony_ci are 1, other coverage bits are 0. All depth values of the fragment 2235bd8deadSopenharmony_ci are assigned the depth value of the point being rasterized. Other 2245bd8deadSopenharmony_ci data associated with each fragment are the data associated with the 2255bd8deadSopenharmony_ci point being rasterized. 2265bd8deadSopenharmony_ci 2275bd8deadSopenharmony_ci Point size range and number of gradations are equivalent to those 2285bd8deadSopenharmony_ci supported for antialiased points. 2295bd8deadSopenharmony_ci 2305bd8deadSopenharmony_ci Line Multisample Rasterization 2315bd8deadSopenharmony_ci [Insert before section 3.4.3] 2325bd8deadSopenharmony_ci 2335bd8deadSopenharmony_ci If MULTISAMPLE_ARB is enabled, and SAMPLE_BUFFERS_ARB is a value of 2345bd8deadSopenharmony_ci one, then lines are rasterized using the following algorithm, 2355bd8deadSopenharmony_ci regardless of whether line antialiasing (LINE_SMOOTH) is enabled 2365bd8deadSopenharmony_ci or disabled. Line rasterization produces a fragment for each 2375bd8deadSopenharmony_ci framebuffer pixel with one or more sample points that intersect the 2385bd8deadSopenharmony_ci rectangular region that is described in the Antialiasing section of 2395bd8deadSopenharmony_ci 3.4.2 (Other Line Segment Features). If line stippling is enabled, 2405bd8deadSopenharmony_ci the rectangular region is subdivided into adjacent unit-length 2415bd8deadSopenharmony_ci rectangles, with some rectangles eliminated according to the 2425bd8deadSopenharmony_ci procedure given under Line Stipple, where "fragment" is replaced 2435bd8deadSopenharmony_ci by "rectangle". 2445bd8deadSopenharmony_ci 2455bd8deadSopenharmony_ci Coverage bits that correspond to sample points that intersect a 2465bd8deadSopenharmony_ci retained rectangle are 1, other coverage bits are 0. Each depth 2475bd8deadSopenharmony_ci value is produced by substituting the corresponding sample location 2485bd8deadSopenharmony_ci into equation 3.1, then using the result to evaluate equation 3.3. 2495bd8deadSopenharmony_ci The data associated with each fragment are otherwise computed by 2505bd8deadSopenharmony_ci evaluating equation 3.1 at the fragment center, then substituting 2515bd8deadSopenharmony_ci into equation 3.2. 2525bd8deadSopenharmony_ci 2535bd8deadSopenharmony_ci Line width range and number of gradations are equivalent to those 2545bd8deadSopenharmony_ci supported for antialiased lines. 2555bd8deadSopenharmony_ci 2565bd8deadSopenharmony_ci Polygon Multisample Rasterization 2575bd8deadSopenharmony_ci [Insert before section 3.5.6] 2585bd8deadSopenharmony_ci 2595bd8deadSopenharmony_ci If MULTISAMPLE_ARB is enabled, and SAMPLE_BUFFERS_ARB is a value of 2605bd8deadSopenharmony_ci one, then polygons are rasterized using the following algorithm, 2615bd8deadSopenharmony_ci regardless of whether polygon antialiasing (POLYGON_SMOOTH) is 2625bd8deadSopenharmony_ci enabled or disabled. Polygon rasterization produces a fragment for 2635bd8deadSopenharmony_ci each framebuffer pixel with one or more sample points that satisfy 2645bd8deadSopenharmony_ci the point sampling criteria described in section 3.5.1, including 2655bd8deadSopenharmony_ci the special treatment for sample points that lie on a polygon 2665bd8deadSopenharmony_ci boundary edge. If a polygon is culled, based on its orientation 2675bd8deadSopenharmony_ci and the CullFace mode, then no fragments are produced during 2685bd8deadSopenharmony_ci rasterization. Fragments are culled by the polygon stipple just as 2695bd8deadSopenharmony_ci they are for aliased and antialiased polygons. 2705bd8deadSopenharmony_ci 2715bd8deadSopenharmony_ci Coverage bits that correspond to sample points that satisfy the 2725bd8deadSopenharmony_ci point sampling criteria are 1, other coverage bits are 0. Each 2735bd8deadSopenharmony_ci depth value is produced by substituting the corresponding sample 2745bd8deadSopenharmony_ci location into the barycentric equations described in section 3.5.1, 2755bd8deadSopenharmony_ci using the approximation to equation 3.4 that omits w components. 2765bd8deadSopenharmony_ci The data associated with each fragment are otherwise computed by 2775bd8deadSopenharmony_ci barycentric evaluation using the fragment's center point. 2785bd8deadSopenharmony_ci 2795bd8deadSopenharmony_ci The rasterization described above applies only to the FILL state of 2805bd8deadSopenharmony_ci PolygonMode. For POINT and LINE, the rasterizations described in 2815bd8deadSopenharmony_ci the Point Multisample Rasterization and the Line Multisample 2825bd8deadSopenharmony_ci Rasterization sections apply. 2835bd8deadSopenharmony_ci 2845bd8deadSopenharmony_ci Pixel Rectangle Multisample Rasterization 2855bd8deadSopenharmony_ci [Insert before section 3.6.5] 2865bd8deadSopenharmony_ci 2875bd8deadSopenharmony_ci If MULTISAMPLE_ARB is enabled, and SAMPLE_BUFFERS_ARB is a value of 2885bd8deadSopenharmony_ci one, then pixel rectangles are rasterized using the following 2895bd8deadSopenharmony_ci algorithm. Let (Xrp,Yrp) be the current raster position. (If the 2905bd8deadSopenharmony_ci current raster position is invalid, then DrawPixels is ignored.) 2915bd8deadSopenharmony_ci If a particular group (index or components) is the nth in a row and 2925bd8deadSopenharmony_ci belongs to the mth row, consider the region in window coordinates 2935bd8deadSopenharmony_ci bounded by the rectangle with corners 2945bd8deadSopenharmony_ci 2955bd8deadSopenharmony_ci (Xrp + Zx*n, Yrp + Zy*m) 2965bd8deadSopenharmony_ci 2975bd8deadSopenharmony_ci and 2985bd8deadSopenharmony_ci 2995bd8deadSopenharmony_ci (Xrp + Zx*(n+1), Yrp + Zy*(m+1)) 3005bd8deadSopenharmony_ci 3015bd8deadSopenharmony_ci where Zx and Zy are the pixel zoom factors specified by PixelZoom, 3025bd8deadSopenharmony_ci and may each be either positive or negative. A fragment 3035bd8deadSopenharmony_ci representing group n,m is produced for each framebuffer pixel with 3045bd8deadSopenharmony_ci one or more sample points that lie inside, or on the bottom or 3055bd8deadSopenharmony_ci left boundary, of this rectangle. Each fragment so produced takes 3065bd8deadSopenharmony_ci its associated data from the group and from the current raster 3075bd8deadSopenharmony_ci position, in a manner consistent with the discussion in the 3085bd8deadSopenharmony_ci Conversion to Fragments subsection of section 3.6.4 of the GL 3095bd8deadSopenharmony_ci specification. All depth sample values are assigned the same 3105bd8deadSopenharmony_ci value, taken either from the group (if it is a depth component 3115bd8deadSopenharmony_ci group) or from the current raster position (if it is not). 3125bd8deadSopenharmony_ci 3135bd8deadSopenharmony_ci A single pixel rectangle will generate multiple, perhaps very many 3145bd8deadSopenharmony_ci fragments for the same framebuffer pixel, depending on the pixel 3155bd8deadSopenharmony_ci zoom factors. 3165bd8deadSopenharmony_ci 3175bd8deadSopenharmony_ci Bitmap Multisample Rasterization 3185bd8deadSopenharmony_ci [Insert at the end section 3.7] 3195bd8deadSopenharmony_ci 3205bd8deadSopenharmony_ci If MULTISAMPLE_ARB is enabled, and SAMPLE_BUFFERS_ARB is a value of 3215bd8deadSopenharmony_ci one, then bitmaps are rasterized using the following algorithm. If 3225bd8deadSopenharmony_ci the current raster position is invalid, the bitmap is ignored. 3235bd8deadSopenharmony_ci Otherwise, a screen-aligned array of pixel-size rectangles is 3245bd8deadSopenharmony_ci constructed, with its lower-left corner at (Xrp,Yrp), and its upper 3255bd8deadSopenharmony_ci right corner at (Xrp+w,Yrp+h), where w and h are the width and 3265bd8deadSopenharmony_ci height of the bitmap. Rectangles in this array are eliminated if 3275bd8deadSopenharmony_ci the corresponding bit in the bitmap is zero, and are retained 3285bd8deadSopenharmony_ci otherwise. Bitmap rasterization produces a fragment for each 3295bd8deadSopenharmony_ci framebuffer pixel with one or more sample points either inside or 3305bd8deadSopenharmony_ci on the bottom or left edge of a retained rectangle. 3315bd8deadSopenharmony_ci 3325bd8deadSopenharmony_ci Coverage bits that correspond to sample points either inside or on 3335bd8deadSopenharmony_ci the bottom or left edge of a retained rectangle are 1, other 3345bd8deadSopenharmony_ci coverage bits are 0. The associated data for each fragment are 3355bd8deadSopenharmony_ci those associated with the current raster position. Once the 3365bd8deadSopenharmony_ci fragments have been produced, the current raster position is 3375bd8deadSopenharmony_ci updated exactly as it is in the single-sample rasterization case. 3385bd8deadSopenharmony_ci 3395bd8deadSopenharmony_ciAdditions to Chapter 4 of the 1.2.1 Specification (Per-Fragment 3405bd8deadSopenharmony_ciOperations and the Frame Buffer) 3415bd8deadSopenharmony_ci 3425bd8deadSopenharmony_ci Multisample Fragment Operations 3435bd8deadSopenharmony_ci [Insert after section 4.1.2] 3445bd8deadSopenharmony_ci 3455bd8deadSopenharmony_ci This step modifies fragment alpha and coverage values based on the 3465bd8deadSopenharmony_ci values of SAMPLE_ALPHA_TO_COVERAGE_ARB, SAMPLE_ALPHA_TO_ONE_ARB, 3475bd8deadSopenharmony_ci SAMPLE_COVERAGE_ARB, SAMPLE_COVERAGE_VALUE_ARB, and 3485bd8deadSopenharmony_ci SAMPLE_COVERAGE_INVERT_ARB. No changes to the fragment alpha or 3495bd8deadSopenharmony_ci coverage values are made at this step if MULTISAMPLE_ARB is 3505bd8deadSopenharmony_ci disabled, or if SAMPLE_BUFFERS_ARB is not a value of one. 3515bd8deadSopenharmony_ci 3525bd8deadSopenharmony_ci SAMPLE_ALPHA_TO_COVERAGE_ARB, SAMPLE_ALPHA_TO_ONE_ARB, and 3535bd8deadSopenharmony_ci SAMPLE_COVERAGE_ARB are enabled and disabled by calling Enable and 3545bd8deadSopenharmony_ci Disable with <cap> specified as one of the three token values. All 3555bd8deadSopenharmony_ci three values are queried by calling IsEnabled, with <cap> set to 3565bd8deadSopenharmony_ci the desired token value. If SAMPLE_ALPHA_TO_COVERAGE_ARB is 3575bd8deadSopenharmony_ci enabled, the fragment alpha value is used to generate a temporary 3585bd8deadSopenharmony_ci coverage value, which is then ANDed with the fragment coverage 3595bd8deadSopenharmony_ci value. Otherwise the fragment coverage value is unchanged at 3605bd8deadSopenharmony_ci this point. 3615bd8deadSopenharmony_ci 3625bd8deadSopenharmony_ci This specification does not require a specific algorithm for 3635bd8deadSopenharmony_ci converting an alpha value to a temporary coverage value. It is 3645bd8deadSopenharmony_ci intended that the number of 1's in the temporary coverage be 3655bd8deadSopenharmony_ci proportional to the alpha value, with all 1's corresponding to the 3665bd8deadSopenharmony_ci maximum alpha value, and all 0's corresponding to an alpha value 3675bd8deadSopenharmony_ci of 0. It is also intended that the algorithm be pseudo-random in 3685bd8deadSopenharmony_ci nature, to avoid image artifacts due to regular coverage sample 3695bd8deadSopenharmony_ci locations. The algorithm can and probably should be different 3705bd8deadSopenharmony_ci at different pixel locations. If it does differ, it should be 3715bd8deadSopenharmony_ci defined relative to window, not screen, coordinates, so that 3725bd8deadSopenharmony_ci rendering results are invariant with respect to window position. 3735bd8deadSopenharmony_ci 3745bd8deadSopenharmony_ci Next, if SAMPLE_ALPHA_TO_ONE_ARB is enabled, fragment alpha is 3755bd8deadSopenharmony_ci replaced by the maximum representable alpha value. Otherwise, 3765bd8deadSopenharmony_ci fragment alpha value is not changed. 3775bd8deadSopenharmony_ci 3785bd8deadSopenharmony_ci Finally, if SAMPLE_COVERAGE_ARB is enabled, the fragment coverage 3795bd8deadSopenharmony_ci is ANDed with another temporary coverage. This temporary coverage 3805bd8deadSopenharmony_ci is generated in the same manner as the one described above, but as 3815bd8deadSopenharmony_ci a function of the value of SAMPLE_COVERAGE_VALUE_ARB. The function 3825bd8deadSopenharmony_ci need not be identical, but it must have the same properties of 3835bd8deadSopenharmony_ci proportionality and invariance. If SAMPLE_COVERAGE_INVERT_ARB is 3845bd8deadSopenharmony_ci TRUE, the temporary coverage is inverted (all bit values are 3855bd8deadSopenharmony_ci inverted) before it is ANDed with the fragment coverage. 3865bd8deadSopenharmony_ci 3875bd8deadSopenharmony_ci The values of SAMPLE_COVERAGE_VALUE_ARB and 3885bd8deadSopenharmony_ci SAMPLE_COVERAGE_INVERT_ARB are specified simultaneously by calling 3895bd8deadSopenharmony_ci SampleCoverageARB, with <value> set to the desired coverage value, 3905bd8deadSopenharmony_ci and <invert> set to TRUE or FALSE. <value> is clamped to [0,1] 3915bd8deadSopenharmony_ci before being stored as SAMPLE_COVERAGE_VALUE_ARB. 3925bd8deadSopenharmony_ci SAMPLE_COVERAGE_VALUE_ARB is queried by calling GetFloatv with 3935bd8deadSopenharmony_ci <pname> set to SAMPLE_COVERAGE_VALUE_ARB. 3945bd8deadSopenharmony_ci SAMPLE_COVERAGE_INVERT_ARB is queried by calling GetBooleanv with 3955bd8deadSopenharmony_ci <pname> set to SAMPLE_COVERAGE_INVERT_ARB. 3965bd8deadSopenharmony_ci 3975bd8deadSopenharmony_ci Multisample Fragment Operations 3985bd8deadSopenharmony_ci [Insert after section 4.1.8] 3995bd8deadSopenharmony_ci 4005bd8deadSopenharmony_ci If the DrawBuffers mode is NONE, no change is made to any 4015bd8deadSopenharmony_ci multisample or color buffer. Otherwise, fragment processing is as 4025bd8deadSopenharmony_ci described below. 4035bd8deadSopenharmony_ci 4045bd8deadSopenharmony_ci If MULTISAMPLE_ARB is enabled, and SAMPLE_BUFFERS_ARB is one, the 4055bd8deadSopenharmony_ci stencil test, depth test, blending, and dithering operations 4065bd8deadSopenharmony_ci are performed for each pixel sample, rather than just once for each 4075bd8deadSopenharmony_ci fragment. Failure of the stencil or depth test results in 4085bd8deadSopenharmony_ci termination of the processing of that sample, rather than 4095bd8deadSopenharmony_ci discarding of the fragment. All operations are performed on the 4105bd8deadSopenharmony_ci color, depth, and stencil values stored in the multisample buffer 4115bd8deadSopenharmony_ci (to be described in a following section). The contents of the 4125bd8deadSopenharmony_ci color buffers are not modified at this point. 4135bd8deadSopenharmony_ci 4145bd8deadSopenharmony_ci Stencil, depth, blending, and dithering operations are performed 4155bd8deadSopenharmony_ci for a pixel sample only if that sample's fragment coverage bit is 4165bd8deadSopenharmony_ci a value of 1. If the corresponding coverage bit is 0, no 4175bd8deadSopenharmony_ci operations are performed for that sample. Depth operations use 4185bd8deadSopenharmony_ci the fragment depth value that is specific for each sample. The 4195bd8deadSopenharmony_ci single fragment color value is used for all sample operations, 4205bd8deadSopenharmony_ci however, as is the current stencil value. 4215bd8deadSopenharmony_ci 4225bd8deadSopenharmony_ci If MULTISAMPLE_ARB is disabled, and SAMPLE_BUFFERS_ARB is one, the 4235bd8deadSopenharmony_ci fragment may be treated exactly as described above, with 4245bd8deadSopenharmony_ci optimization possible because the fragment coverage must be set 4255bd8deadSopenharmony_ci to full coverage. Further optimization is allowed, however. An 4265bd8deadSopenharmony_ci implementation may choose to identify a centermost sample, and to 4275bd8deadSopenharmony_ci perform stencil and depth tests on only that sample. Regardless 4285bd8deadSopenharmony_ci of the outcome of the stencil test, all multisample buffer stencil 4295bd8deadSopenharmony_ci sample values are set to the appropriate new stencil value. If 4305bd8deadSopenharmony_ci the depth test passes, all multisample buffer depth sample values 4315bd8deadSopenharmony_ci are set to the depth of the fragment's centermost sample's depth 4325bd8deadSopenharmony_ci value, and all multisample buffer color sample values are set to 4335bd8deadSopenharmony_ci the color value of the incoming fragment. Otherwise, no change is 4345bd8deadSopenharmony_ci made to any multisample buffer color or depth value. 4355bd8deadSopenharmony_ci 4365bd8deadSopenharmony_ci After all operations have been completed on the multisample buffer, 4375bd8deadSopenharmony_ci the color sample values are combined to produce a single color 4385bd8deadSopenharmony_ci value, and that value is written into each color buffer that is 4395bd8deadSopenharmony_ci currently enabled, based on the DrawBuffers mode. An 4405bd8deadSopenharmony_ci implementation may defer the writing of the color buffer until a 4415bd8deadSopenharmony_ci later time, but the state of the framebuffer must behave as if the 4425bd8deadSopenharmony_ci color buffer was updated as each fragment was processed. The 4435bd8deadSopenharmony_ci method of combination is not specified, though a simple average 4445bd8deadSopenharmony_ci computed independently for each color component is recommended. 4455bd8deadSopenharmony_ci 4465bd8deadSopenharmony_ci Fine Control of Multisample Buffer Updates 4475bd8deadSopenharmony_ci [Insert at the end of section 4.2.2] 4485bd8deadSopenharmony_ci 4495bd8deadSopenharmony_ci When SAMPLE_BUFFERS_ARB is one, ColorMask, DepthMask, and 4505bd8deadSopenharmony_ci StencilMask control the modification of values in the multisample 4515bd8deadSopenharmony_ci buffer. The color mask has no effect on modifications to the color 4525bd8deadSopenharmony_ci buffers. If the color mask is entirely disabled, the color sample 4535bd8deadSopenharmony_ci values must still be combined (as described above) and the result 4545bd8deadSopenharmony_ci used to replace the color values of the buffers enabled by 4555bd8deadSopenharmony_ci DrawBuffers. 4565bd8deadSopenharmony_ci 4575bd8deadSopenharmony_ci Clearing the Multisample Buffer 4585bd8deadSopenharmony_ci [Insert as a subsection for section 4.2.3] 4595bd8deadSopenharmony_ci 4605bd8deadSopenharmony_ci The color samples of the multisample buffer are cleared when one or 4615bd8deadSopenharmony_ci more color buffers are cleared, as specified by the Clear mask bit 4625bd8deadSopenharmony_ci COLOR_BUFFER_BIT and the DrawBuffers mode. If the DrawBuffers mode 4635bd8deadSopenharmony_ci is NONE, the color samples of the multisample buffer cannot be 4645bd8deadSopenharmony_ci cleared. 4655bd8deadSopenharmony_ci 4665bd8deadSopenharmony_ci Clear mask bits DEPTH_BUFFER_BIT and STENCIL_BUFFER_BIT indicate 4675bd8deadSopenharmony_ci that the depth and stencil samples of the multisample buffer are to 4685bd8deadSopenharmony_ci be cleared. If Clear mask bit DEPTH_BUFFER_BIT is specified, and 4695bd8deadSopenharmony_ci if the DrawBuffers mode is not NONE, then the multisample depth 4705bd8deadSopenharmony_ci buffer samples are cleared. Likewise, if Clear mask bit 4715bd8deadSopenharmony_ci STENCIL_BUFFER_BIT is specified, and if the DrawBuffers mode is 4725bd8deadSopenharmony_ci not NONE, then the multisample stencil buffer is cleared. 4735bd8deadSopenharmony_ci 4745bd8deadSopenharmony_ci Reading Pixels 4755bd8deadSopenharmony_ci [These changes are made to the text in section 4.3.2, following the 4765bd8deadSopenharmony_ci subheading Obtaining Pixels from the Framebuffer.] 4775bd8deadSopenharmony_ci 4785bd8deadSopenharmony_ci Follow the sentence "If there is no depth buffer, the error 4795bd8deadSopenharmony_ci INVALID_OPERATION occurs." with: If there is a multisample buffer 4805bd8deadSopenharmony_ci (SAMPLE_BUFFERS_ARB is 1) then values are obtained from the depth 4815bd8deadSopenharmony_ci samples in this buffer. It is recommended that the depth value 4825bd8deadSopenharmony_ci of the centermost sample be used, though implementations may choose 4835bd8deadSopenharmony_ci any function of the depth sample values at each pixel. 4845bd8deadSopenharmony_ci 4855bd8deadSopenharmony_ci Follow the sentence "if there is no stencil buffer, the error 4865bd8deadSopenharmony_ci INVALID_OPERATION occurs." with: If there is a multisample buffer, 4875bd8deadSopenharmony_ci then values are obtained from the stencil samples in this buffer. 4885bd8deadSopenharmony_ci It is recommended that the stencil value of the centermost sample 4895bd8deadSopenharmony_ci be used, though implementations may choose any function of the 4905bd8deadSopenharmony_ci stencil sample values at each pixel. 4915bd8deadSopenharmony_ci 4925bd8deadSopenharmony_ci [This extension makes no change to the way that color values are 4935bd8deadSopenharmony_ci obtained from the framebuffer.] 4945bd8deadSopenharmony_ci 4955bd8deadSopenharmony_ciAdditions to Chapter 5 of the 1.2.1 Specification (Special Functions) 4965bd8deadSopenharmony_ci 4975bd8deadSopenharmony_ci None 4985bd8deadSopenharmony_ci 4995bd8deadSopenharmony_ciAdditions to Chapter 6 of the 1.2 Specification (State and State 5005bd8deadSopenharmony_ciRequests) 5015bd8deadSopenharmony_ci 5025bd8deadSopenharmony_ci An additional group of state variables, MULTISAMPLE_BIT_ARB, is 5035bd8deadSopenharmony_ci defined by this extension. When PushAttrib is called with bit 5045bd8deadSopenharmony_ci MULTISAMPLE_BIT_ARB set, the multisample group of state variables 5055bd8deadSopenharmony_ci is pushed onto the attribute stack. When PopAttrib is called, 5065bd8deadSopenharmony_ci these state variables are restored to their previous values if 5075bd8deadSopenharmony_ci they were pushed. Some multisample state is included in the 5085bd8deadSopenharmony_ci ENABLE_BIT group as well. In order to avoid incompatibility with 5095bd8deadSopenharmony_ci GL implementations that do not support SGIS_multisample, 5105bd8deadSopenharmony_ci ALL_ATTRIB_BITS does not include MULTISAMPLE_BIT_ARB. 5115bd8deadSopenharmony_ci 5125bd8deadSopenharmony_ciAdditions to the GLX Specification 5135bd8deadSopenharmony_ci 5145bd8deadSopenharmony_ci The parameter GLX_SAMPLE_BUFFERS_ARB is added to glXGetConfig. 5155bd8deadSopenharmony_ci When queried, by calling glXGetConfig with <attrib> set to 5165bd8deadSopenharmony_ci GLX_SAMPLE_BUFFERS_ARB, it returns the number of multisample 5175bd8deadSopenharmony_ci buffers included in the visual. For a normal visual, the return 5185bd8deadSopenharmony_ci value is zero. A return value of one indicates that a single 5195bd8deadSopenharmony_ci multisample buffer is available. The number of samples per pixel 5205bd8deadSopenharmony_ci is queried by calling glXGetConfig with <attrib> set to 5215bd8deadSopenharmony_ci GLX_SAMPLES_ARB. It is understood that the number of color, depth, 5225bd8deadSopenharmony_ci and stencil bits per sample in the multisample buffer are as 5235bd8deadSopenharmony_ci specified by the GLX_*_SIZE parameters. It is also understood that 5245bd8deadSopenharmony_ci there are no single-sample depth or stencil buffers associated with 5255bd8deadSopenharmony_ci this visual -- the only depth and stencil buffers are those in the 5265bd8deadSopenharmony_ci multisample buffer. GLX_SAMPLES_ARB is zero if 5275bd8deadSopenharmony_ci GLX_SAMPLE_BUFFERS_ARB is zero. 5285bd8deadSopenharmony_ci 5295bd8deadSopenharmony_ci glXChooseVisual accepts GLX_SAMPLE_BUFFERS_ARB in <attribList>, 5305bd8deadSopenharmony_ci followed by the minimum number of multisample buffers that can be 5315bd8deadSopenharmony_ci accepted. Visuals with the smallest number of multisample buffers 5325bd8deadSopenharmony_ci that meets or exceeds the specified minimum number are preferred. 5335bd8deadSopenharmony_ci Currently operation with more than one multisample buffer is 5345bd8deadSopenharmony_ci undefined, so the returned value will be either zero or one. 5355bd8deadSopenharmony_ci 5365bd8deadSopenharmony_ci glXChooseVisual accepts GLX_SAMPLES_ARB in <attribList>, followed 5375bd8deadSopenharmony_ci by the minimum number of samples that can be accepted in the 5385bd8deadSopenharmony_ci multisample buffer. Visuals with the smallest number of samples 5395bd8deadSopenharmony_ci that meets or exceeds the specified minimum number are preferred. 5405bd8deadSopenharmony_ci 5415bd8deadSopenharmony_ci If the color samples in the multisample buffer store fewer bits 5425bd8deadSopenharmony_ci than are stored in the color buffers, this fact will not be 5435bd8deadSopenharmony_ci reported accurately. Presumably a compression scheme is being 5445bd8deadSopenharmony_ci employed, and is expected to maintain an aggregate resolution 5455bd8deadSopenharmony_ci equal to that of the color buffers. 5465bd8deadSopenharmony_ci 5475bd8deadSopenharmony_ciGLX Protocol 5485bd8deadSopenharmony_ci 5495bd8deadSopenharmony_ci One new GL rendering commands is added. The following command is 5505bd8deadSopenharmony_ci sent to the server as part of a glXRender request: 5515bd8deadSopenharmony_ci 5525bd8deadSopenharmony_ci SampleCoverageARB 5535bd8deadSopenharmony_ci 2 12 rendering command length 5545bd8deadSopenharmony_ci 2 229 rendering command opcode 5555bd8deadSopenharmony_ci 4 FLOAT32 value 5565bd8deadSopenharmony_ci 1 BOOL invert 5575bd8deadSopenharmony_ci 3 unused 5585bd8deadSopenharmony_ci 5595bd8deadSopenharmony_ciAdditions to the WGL Specification 5605bd8deadSopenharmony_ci 5615bd8deadSopenharmony_ci The parameter WGL_SAMPLE_BUFFERS_ARB is added to 5625bd8deadSopenharmony_ci wglGetPixelFormatAttrib*v. When queried, by calling 5635bd8deadSopenharmony_ci wglGetPixelFormatAttrib*v with <piAttributes> set to 5645bd8deadSopenharmony_ci WGL_SAMPLE_BUFFERS_ARB, it returns the number of multisample 5655bd8deadSopenharmony_ci buffers included in the pixel format. For a normal pixel format, 5665bd8deadSopenharmony_ci the return value is zero. A return value of one indicates that a 5675bd8deadSopenharmony_ci single multisample buffer is available. The number of samples per 5685bd8deadSopenharmony_ci pixel is queried by calling wglGetPixelFormatAttrib*v with 5695bd8deadSopenharmony_ci <piAttributes> set to WGL_SAMPLES_ARB. It is understood that the 5705bd8deadSopenharmony_ci number of color, depth, and stencil bits per sample in the 5715bd8deadSopenharmony_ci multisample buffer are as specified by the WGL_*_SIZE parameters. 5725bd8deadSopenharmony_ci It is also understood that there are no single-sample depth or 5735bd8deadSopenharmony_ci stencil buffers associated with this visual -- the only depth and 5745bd8deadSopenharmony_ci stencil buffers are those in the multisample buffer. 5755bd8deadSopenharmony_ci WGL_SAMPLES_ARB is zero if WGL_SAMPLE_BUFFERS_ARB is zero. 5765bd8deadSopenharmony_ci 5775bd8deadSopenharmony_ci wglChoosePixelFormatEXT accepts WGL_SAMPLE_BUFFERS_ARB in 5785bd8deadSopenharmony_ci <piAttribIList> and <pfAttribIList> with the corresponding value 5795bd8deadSopenharmony_ci set to the minimum number of multisample buffers that can be 5805bd8deadSopenharmony_ci accepted. Pixel formats with the smallest number of multisample 5815bd8deadSopenharmony_ci buffers that meets or exceeds the specified minimum number are 5825bd8deadSopenharmony_ci preferred. Currently operation with more than one multisample 5835bd8deadSopenharmony_ci buffer is undefined, so the returned value will be either zero or 5845bd8deadSopenharmony_ci one. 5855bd8deadSopenharmony_ci 5865bd8deadSopenharmony_ci If the color samples in the multisample buffer store fewer bits 5875bd8deadSopenharmony_ci than are stored in the color buffers, this fact will not be 5885bd8deadSopenharmony_ci reported accurately. Presumably a compression scheme is being 5895bd8deadSopenharmony_ci employed, and is expected to maintain an aggregate resolution 5905bd8deadSopenharmony_ci equal to that of the color buffers. 5915bd8deadSopenharmony_ci 5925bd8deadSopenharmony_ciErrors 5935bd8deadSopenharmony_ci 5945bd8deadSopenharmony_ci INVALID_OPERATION is generated if SampleCoverageARB is called 5955bd8deadSopenharmony_ci between the execution of Begin and the execution of the 5965bd8deadSopenharmony_ci corresponding End. 5975bd8deadSopenharmony_ci 5985bd8deadSopenharmony_ciNew State 5995bd8deadSopenharmony_ci 6005bd8deadSopenharmony_ci Get Value Get Command Type Initial Value Attribute 6015bd8deadSopenharmony_ci --------- ----------- ---- ------------- --------- 6025bd8deadSopenharmony_ci MULTISAMPLE_ARB IsEnabled B TRUE multisample/enable 6035bd8deadSopenharmony_ci SAMPLE_ALPHA_TO_COVERAGE_ARB IsEnabled B FALSE multisample/enable 6045bd8deadSopenharmony_ci SAMPLE_ALPHA_TO_ONE_ARB IsEnabled B FALSE multisample/enable 6055bd8deadSopenharmony_ci SAMPLE_COVERAGE_ARB IsEnabled B FALSE multisample/enable 6065bd8deadSopenharmony_ci SAMPLE_COVERAGE_VALUE_ARB GetFloatv R+ 1 multisample 6075bd8deadSopenharmony_ci SAMPLE_COVERAGE_INVERT_ARB GetBooleanv B FALSE multisample 6085bd8deadSopenharmony_ci 6095bd8deadSopenharmony_ciNew Implementation Dependent State 6105bd8deadSopenharmony_ci 6115bd8deadSopenharmony_ci Get Value Get Command Type Minimum Value 6125bd8deadSopenharmony_ci --------- ----------- ---- ------------- 6135bd8deadSopenharmony_ci SAMPLE_BUFFERS_ARB GetIntegerv Z+ 0 6145bd8deadSopenharmony_ci SAMPLES_ARB GetIntegerv Z+ 0 6155bd8deadSopenharmony_ci 6165bd8deadSopenharmony_ciConformance Testing 6175bd8deadSopenharmony_ci 6185bd8deadSopenharmony_ci TBD 6195bd8deadSopenharmony_ci 6205bd8deadSopenharmony_ciRevision History 6215bd8deadSopenharmony_ci 6225bd8deadSopenharmony_ci 09/20/1999 0.1 6235bd8deadSopenharmony_ci - First ARB draft based on the original SGI draft. 6245bd8deadSopenharmony_ci 6255bd8deadSopenharmony_ci 10/1/1999 0.2 6265bd8deadSopenharmony_ci - Added query for the number of passes. 6275bd8deadSopenharmony_ci 6285bd8deadSopenharmony_ci 11/8/1999 0.3 6295bd8deadSopenharmony_ci - Fixed numerous typos reported by E&S. 6305bd8deadSopenharmony_ci 6315bd8deadSopenharmony_ci 12/7/1999 0.4 6325bd8deadSopenharmony_ci - Removed the multiple pass feature. 6335bd8deadSopenharmony_ci - Resolved the working group issues at the ARB meeting. 6345bd8deadSopenharmony_ci - Added language that stated that SAMPLE_BUFFERS_ARB is the 6355bd8deadSopenharmony_ci same value as either GLX_SAMPLE_BUFFERS_ARB or 6365bd8deadSopenharmony_ci WGL_SAMPLE_BUFFERS_ARB. 6375bd8deadSopenharmony_ci 6385bd8deadSopenharmony_ci 12/15/1999 0.5 6395bd8deadSopenharmony_ci - Added back in the statement about ALL_ATTRIB_BITS not 6405bd8deadSopenharmony_ci including MULTISAMPLE_BIT_ARB. 6415bd8deadSopenharmony_ci 6425bd8deadSopenharmony_ci 03/12/2002 0.6 6435bd8deadSopenharmony_ci - Added GLX protocol for SampleCoverageARB. Updated contact 6445bd8deadSopenharmony_ci information. 645