Loading [MathJax]/extensions/tex2jax.js
  • <xmp id="om0om">
  • <table id="om0om"><noscript id="om0om"></noscript></table>
  • NVIDIA DRIVE OS Linux SDK API Reference

    6.0.5 Release
    All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Modules Pages
    GL_NV_shader_noperspective_interpolation
    Name
    
        NV_shader_noperspective_interpolation
    
    Name Strings
    
        GL_NV_shader_noperspective_interpolation
    
    Contact
    
        Daniel Koch, NVIDIA (dkoch 'at' nvidia.com)
    
    Contributors
    
        Pat Brown, NVIDIA
        Michael Chock, NVIDIA
    
    Status
    
        Complete
    
    Version
    
        Last Modified Date: October 24, 2014
        Revision: 2
    
    Number
    
        OpenGL ES Extension #201
    
    Dependencies
    
        OpenGL ES 3.0 and GLSL ES 3.00 are required.
    
        This specification is written against the OpenGL ES 3.1 (March 17,
        2014) and OpenGL ES 3.10 Shading Language (May 14, 2014) specifications.
    
        This extension interacts with OES_shader_multisample_interpolation.
    
        This extension trivially interacts with EXT_geometry_shader.
    
        This extension trivially interacts with EXT_tessellation_shader.
    
    Overview
    
        In OpenGL 3.0 and later, and in other APIs, there are three types of
        interpolation qualifiers that are available for fragment shader inputs:
        flat, smooth, and noperspective.  The 'flat' qualifier indicates that no
        interpolation should be used. This is mandatory for integer-type
        variables. The 'smooth' qualifier indicates that interpolation should be
        performed in a perspective0correct manner. This is the default for
        floating-point type variables.  The 'noperspective' qualifier indicates
        that interpolation should be performed linearly in screen space.
    
        While perspective-correct (smooth) and non-interpolated (flat) are the
        two types of interpolation that most commonly used, there are important
        use cases for linear (noperspective) interpolation.  In particular, in
        some work loads where screen-space aligned geometry is common, the use of
        linear interpolation can result in performance and/or power improvements.
    
        The smooth and flat interpolation qualifiers are already supported in
        OpenGL ES 3.0 and later. This extension adds support for noperspective
        interpolation to OpenGL ES.
    
    New Procedures and Functions
    
        None.
    
    New Tokens
    
        None.
    
    Additions to the OpenGL ES 3.1 Specification
    
        Modifications to Section 12.4.1 (Clipping Shader Outputs)
    
        (Insert a new paragraph as the second-to-last paragraph of the section)
    
        For vertex shader outputs specified to be interpolated without
        perspective correction (using the "noperspective" qualifier), the value
        of <t> used to obtain the output value associated with P will be adjusted
        to produce results that vary linearly in screen space.
    
    
        Modifications to Section 13.4.1 (Basic Line Segment Rasterization)
    
        (Replace the last paragraph of the section with the following language
        which adds in the description of noperspective interpolation)
    
        The "noperspective" and "flat" keywords used to declare shader outputs
        affect how they are interpolated.  When neither keyword is specified,
        interpolation is performed as described in equation 13.4.  When the
        "noperspective" keyword is specified, interpolation is performed in the
        same fashion as for depth values, as described in equation 13.5.  When
        the "flat" keyword is specified, no interpolation is performed, and
        outputs are taken from the corresponding input value of the provoking
        vertex corresponding to that primitive (see section 12.3).
    
    
        Modifications to Section 13.5.1 (Basic Polygon Rasterization)
    
        (Replace the paragraph which describes the interpolation keywords in
        the middle of p. 298)
    
        The "noperspective" and "flat" keywords used to declare shader outputs
        affect how they are interpolated.  When neither keyword is specified,
        interpolation is performed as described in equation 13.7.  When the
        "noperspective" keyword is specified, interpolation is performed in the
        same fashion as for depth values, as described in equation 13.8. When
        the "flat" keyword is specified, no interpolation is performed, and
        outputs are taken from the corresponding input value of the provoking
        vertex corresponding to that primitive (see section 12.3).
    
    
        Modifications to Section 13.5.3 (Polygon Multisample Rasterization)
    
        (replace the last paragraph of the section)
    
        The "noperspective" and "flat" qualifiers affect how shader outputs are
        interpolated in the same fashion as described for basic polygon
        rasterization in section 13.5.1.
    
    Dependencies on OES_shader_multisample_interpolation
    
        If OES_shader_multisample_interpolation is not supported, ignore
        references to the interpolation functions in section 8.13.
    
    Dependencies on EXT_geometry_shader
    
        If EXT_geometry_shader is supported the, noperspective keyword
        can be used on the outputs from geometry shaders.
    
        If EXT_geometry_shader is not support, ignore references to
        geometry shaders.
    
    Dependencies on EXT_tessellation_shader
    
        If EXT_tessellation_shader is supported, the noperspective keyword
        can be used on the outputs from tessellation shaders.
    
        If EXT_tessellation_shader is not support, ignore references to
        tessellation shaders.
    
    New State
    
        None.
    
    Additions to the OpenGL ES Shading Language 3.10 Specification
    
        Including the following line in a shader can be used to control the
        language features described in this extension:
    
          #extension GL_NV_shader_noperspective_interpolation : <behavior>
    
        where <behavior> is as specified in section 3.4.
    
        A new preprocessor #define is added to the OpenGL ES Shading Language:
    
          #define GL_NV_shader_noperspective_interpolation 1
    
    
        Modifications to Section 3.6 (Keywords):
    
        Remove "noperspective" from the list of reserved keywords and add it to
        the list of keywords.
    
    
        Modifications to Section 4.3 (Storage Qualifiers):
    
        (Add to the table of interpolation qualifiers)
    
        Qualifier          Meaning
        ---------          -------
        noperspective      linear interpolation
    
    
        Modifications to Section 4.3.4 (Input Variables):
    
        (Add to the list of fragment input examples:)
    
            noperspective in float temperature;
            noperspective centroid in vec2 myTexCoord;
    
    
        Modifications to Section 4.3.6 (Output Variables):
    
        (Add to the list of vertex (or tessellation or geometry) output examples:)
    
            noperspective out float temperature;
            noperspective centroid out vec2 myTexCoord;
    
    
        Modifications to Section 4.5 (Interpolation Qualifiers):
    
        (Add to the table of interpolation qualifiers:)
    
        Qualifier          Meaning
        ---------          -------
        noperspective      linear interpolation
    
        (Following the description of "smooth" add the following description:)
    
        "A variable qualified as "noperspective" must be interpolated linearly
        in screen space as described in equation 13.5 of the OpenGL ES Graphics
        System Specification, section 13.4 "Line Segments".
    
    
        Modifications to Section 8.13 (Fragment Processing Functions), as modified
        by OES_shader_multisample_interpolation:
    
        (Add to the end of the paragraph describing the interpolation functions)
    
        "For all the interpolation functions ...
        If <interpolant> is declared with the "noperspective" qualifier, the
        interpolated value will be computed without perspective correction."
    
    
        Modifications to Section 9 (Shading Language Grammar)
    
        (Add to the list of tokens returned from lexical analysis)
    
        NOPERSPECTIVE
    
        (update the interpolation_qualifier rule to be)
    
        interpolation_qualifier:
            SMOOTH
            FLAT
            NOPERSPECTIVE
    
    
    Issues
    
        (1) Is this any different from the 'noperspective' functionality
        that was added in OpenGL 3.0?
    
        RESOLVED. No. This is intended to be identical and the language used
        for this specification was based on the deltas between GL 4.4 and
        ES 3.1.
    
        (2) What should we call this extension?
    
        RESOLVED: Options considered included:
         - shader_interpolation_noperspective
         - shader_noperspective_interpolation
        Using the second option as this is consistent with the naming of
        OES_shader_multisample_interpolation which added support for
        per-sample interpolation.
    
        (3) This is a small extension. Is there anything else we should add at
        the same time?
    
        RESOLVED. No. All the other related functionality is supported in ES
        or already has an extension.
    
    Revision History
    
        Rev.    Date    Author    Changes
        ----  --------  --------- -------------------------------------------------
          1   06/05/14  dkoch     Initial draft based on GL 4.4 and GLSL 4.40
          2   10/24/14  dkoch     Mark complete, resolve issue.
    
    人人超碰97caoporen国产