back  Return to list

homeprevnext Name
homeprevnext Name Strings
homeprevnext Contact
    Mark J. Kilgard, NVIDIA Corporation (mjk 'at'  
homeprevnext Notice
    Copyright NVIDIA Corporation, 2001.  
homeprevnext IP Status
    NVIDIA Proprietary.  
homeprevnext Status
    Shipping, May 2001  
homeprevnext Version
    NVIDIA Date: May 16, 2001  
    $Date: 2002/04/03 $ $Revision: #3 $  
    $Id: //sw/main/docs/OpenGL/specs/GL_NV_multisample_filter_hint.txt#3 $  
homeprevnext Number
homeprevnext Dependencies
    Written based on the OpenGL 1.2.1 specification.  
    Requires ARB_multisample.  
homeprevnext Overview
    OpenGL multisampling typically assumes that the samples of a given  
    pixel are weighted uniformly and averaged to compute the pixel's  
    resolved color.  This extension provides a hint that permits  
    implementations to provide an alternative method of resolving the  
    color of multisampled pixels.  
    As an example of such an alternative method, NVIDIA's GeForce3 GPU  
    provides a technique known as Quincunx filtering.  This technique  
    is used in two-sample multisampling, but it blends the pixel's two  
    samples and three additional samples from adjacent pixels.  The sample  
    pattern is analogous to the 5 pattern on a die.  The quality of this  
    technique is widely regarded as comparable to 4 sample multisampling.  
homeprevnext Issues
    Is the glHint mechanism the right mechanism to expose this functionality?  
      RESOLUTION:  Yes.  Multisample filtering quality is subject to  
      the kinds of variations that the glHint was intended to control.  
      Arguably, the glHint mechanism only provides two definite settings:  
      GL_FASTEST and GL_NICEST while there may be many different  
      techniques for controlling multisample filtering quality.  
      We expect hardware to support only one or two techniques rather  
      than a multitude of nearly indistinguishable sampling techniques.  
    When does changing the multisampling filter hint take effect?  
      RESOLUTION: It may not be until the next swap buffers or glClear  
      operation that the multisample hint actually takes effect.  
      This may be implementation dependent.  
    What is the meaning of GL_DONT_CARE for the multisample hint?  
      RESOLUTION:  By default, NVIDIA expects to treat GL_DONT_CARE  
      the same as GL_FASTEST.  However, the meaning of GL_DONT_CARE  
      for this hint may be subject to a registry (or environment) setting,  
      possibly settable through a control panel.  
    Does GL_NICEST require Quincunx filtering?  
      RESOLUTION:  No.  NVIDIA's GeForce3 Quincunx filtering is one  
      possible technique that may be used to implement the GL_NICEST  
      setting, but future GPUs may use other techniques.  
    Can the meaning of the multisample hint vary depending on the number  
    of samples of the drawable?  
      RESOLUTION:  Yes.  
      The following describes how GeForce3 uses the multisample hint:  
      When using 2-sample multisampling with GeForce3, the multisample  
      filter hint affects multisample filtering as follows: GL_NICEST uses  
      5-tap Quincunx multisample filtering while GL_FASTEST uses standard  
      even-weighted 2-tap multisample filtering of the pixel's 2 samples.  
      When using 4-sample multisampling with GeForce3, the multisample  
      filter hint affects multisample filtering as follows: GL_NICEST  
      uses 9-tap 3x3 multisample filtering while GL_FASTEST uses standard  
      even-weighted 4-tap multisample filtering of the pixel's 4 samples.  
    What is the difference between a "tap" and a "sample"?  
      In the context of multisample filtering, a sample is  
      a subpixel frame buffer sample containing color, depth, and  
      stencil information.  A tap is a source of data for filtering.  
      Typically, samples are filtered by evenly weighting all the samples  
      belonging to a pixel.  In this case, the number of taps for the  
      filter is equal to the number of samples for the pixel.  In other  
      filtering schemes, the number of taps and samples may not be equal  
      (and potentially not evenly weighted as well).  For example,  
      GeForce3's quincunx filtering uses 5 taps even though each pixel  
      has only 2 multisample samples.  Three of the five taps source  
      samples outside the pixel's footprint of two samples.  
    Should the multisample filtering technique be determined by the  
    visual/PFD rather than OpenGL rendering context state?  
      RESOLUTION:  No.  The number of multisample samples per pixel that  
      a window has is a property of the visual/PFD, but the filtering  
      technique does not have to be defined up-front at when the pixel  
      format is set.  
    While not quite consistent with the way ARB_multisample is specified,  
    NVIDIA uses the SwapBuffers operation as a trigger for downsampling  
    multisample sample buffers (other operations such as glReadPixels  
    also trigger downsampling).  But a SwapBuffers operation can be  
    requested without a current OpenGL rendering context.  What happens  
    when a SwapBuffers operation is performed with no current OpenGL  
    rendering context?  
      RESOLUTION:  The multisample filter hint is treated as GL_DONT_CARE  
      in this case.  Applications that want the multisample filter hint  
      to apply to their BufferSwap operation should perform the BufferSwap  
      operation while bound to an OpenGL rendering context.  
homeprevnext New Procedures and Functions
homeprevnext New Tokens
    Accepted by the <target> parameter of Hint and by the <pname>  
    parameter of GetBooleanv, GetIntegerv, GetFloatv, and GetDoublev:  
        MULTISAMPLE_FILTER_HINT_NV                0x8534  
homeprevnext Additions to Chapter 2 of the GL Specification (OpenGL Operation)
homeprevnext Additions to Chapter 3 of the GL Specification (Rasterization)
homeprevnext Additions to Chapter 4 of the GL Specification (Per-Fragment Operations and the Framebuffer)
homeprevnext Additions to Chapter 5 of the GL Specification (Special Functions)
 --  Section 5.6 "Hints"  
     Replace the description of hint targets in the first paragraph with:  
     "target may be one of PERSPECTIVE_HINT, indicating the desired  
     quality of parameter interpolation; POINT_SMOOTH_HINT, indicating the  
     desired sampling quality of points; LINE_SMOOTH_HINT, indicating the  
     desired sampling quality of lines; POLYGON_SMOOTH_HINT, indicating  
     the desired sampling quality of polygons; FOG_HINT, indicating  
     whether fog calculations are done per pixel or per vertex; and  
     MULTISAMPLE_FILTER_HINT, indicating the desired quality of multisample  
     filtering.  The MULTISAMPLE_FILTER_HINT is ignored if the frame buffer  
     has no multisample samples.  When NICEST (or possibly DONT_CARE)  
     multisample filtering is requested and the frame buffer supports  
     multisampling, the multisample filter pattern may involve samples  
     outside the pixel's sample set.  The exact NICEST (or possibly  
     DONT_CARE) multisample filtering technique used is implementation  
     dependent and may vary with the number of multisample samples  
homeprevnext Additions to Chapter 6 of the GL Specification (State and State Requests)
homeprevnext Additions to the GLX, WGL, and AGL Specification
    Add the following to the description of what happens at SwapBuffers  
    "When a SwapBuffers operation is performed by a thread without  
    a current OpenGL rendering context and the target drawable to be  
    swapped is multisampled, any multisample filtering operation that  
    occurs should be done as if the GL_MULTISAMPLE_FILTER_HINT value is  
    set to GL_DONT_CARE."  
homeprevnext GLX Protocol
homeprevnext Errors
homeprevnext New State
(table 6.23, p213) add the following entry:  
Get Value                      Type    Get Command   Initial Value   Description           Sec    Attribute  
----------------------------   ----    -----------   -------------   -----------           ------ --------------  
MULTISAMPLE_FILTER_HINT_NV     Z3      GetIntegerv   DONT_CARE       Multisample filter    5.6    hint  
                                                                     quality hint  
homeprevnext Revision History
Valid XHTML 1.1! Valid CSS! Last update: November 14, 2006.
Cette page doit être lue avec un navigateur récent respectant le standard XHTML 1.1.