Home | History | Annotate | Download | only in specs
      1 Name
      2 
      3     EXT_shader_integer_mix
      4 
      5 Name Strings
      6 
      7     GL_EXT_shader_integer_mix
      8 
      9 Contact
     10 
     11     Matt Turner (matt.turner 'at' intel.com)
     12 
     13 Contributors
     14 
     15     Matt Turner, Intel
     16     Ian Romanick, Intel
     17 
     18 Status
     19 
     20     Shipping
     21 
     22 Version
     23 
     24     Last Modified Date:         09/12/2013
     25     Author Revision:            6
     26 
     27 Number
     28 
     29     TBD
     30 
     31 Dependencies
     32 
     33     OpenGL 3.0 or OpenGL ES 3.0 is required. This extension interacts with
     34     GL_ARB_ES3_compatibility.
     35 
     36     This extension is written against the OpenGL 4.4 (core) specification
     37     and the GLSL 4.40 specification.
     38 
     39 Overview
     40 
     41     GLSL 1.30 (and GLSL ES 3.00) expanded the mix() built-in function to
     42     operate on a boolean third argument that does not interpolate but
     43     selects. This extension extends mix() to select between int, uint,
     44     and bool components.
     45 
     46 New Procedures and Functions
     47 
     48     None.
     49 
     50 New Tokens
     51 
     52     None.
     53 
     54 Additions to Chapter 8 of the GLSL 4.40 Specification (Built-in Functions)
     55 
     56     Modify Section 8.3, Common Functions
     57 
     58     Additions to the table listing common built-in functions:
     59 
     60       Syntax                       Description
     61       ---------------------------  --------------------------------------------------
     62       genIType mix(genIType x,     Selects which vector each returned component comes
     63                    genIType y,     from. For a component of a that is false, the
     64                    genBType a)     corresponding component of x is returned. For a
     65       genUType mix(genUType x,     component of a that is true, the corresponding
     66                    genUType y,     component of y is returned.
     67                    genBType a)
     68       genBType mix(genBType x,
     69                    genBType y,
     70                    genBType a)
     71 
     72 Additions to the AGL/GLX/WGL Specifications
     73 
     74     None.
     75 
     76 Modifications to The OpenGL Shading Language Specification, Version 4.40
     77 
     78     Including the following line in a shader can be used to control the
     79     language features described in this extension:
     80 
     81       #extension GL_EXT_shader_integer_mix : <behavior>
     82 
     83     where <behavior> is as specified in section 3.3.
     84 
     85     New preprocessor #defines are added to the OpenGL Shading Language:
     86 
     87       #define GL_EXT_shader_integer_mix        1
     88 
     89 Interactions with ARB_ES3_compatibility
     90 
     91     On desktop implementations that support ARB_ES3_compatibility,
     92     GL_EXT_shader_integer_mix can be enabled (and the new functions
     93     used) in shaders declared with '#version 300 es'.
     94 
     95 GLX Protocol
     96 
     97     None.
     98 
     99 Errors
    100 
    101     None.
    102 
    103 New State
    104 
    105     None.
    106 
    107 New Implementation Dependent State
    108 
    109     None.
    110 
    111 Issues
    112 
    113     1) Should we allow linear interpolation of integers via a non-boolean
    114        third component?
    115 
    116     RESOLVED: No.
    117 
    118     2) Should we allow mix() to select between boolean components?
    119 
    120     RESOLVED: Yes. Implementing the same functionality using casts would be
    121     possible but ugly.
    122 
    123 Revision History
    124 
    125     Rev.    Date      Author    Changes
    126     ----  --------    --------  ---------------------------------------------
    127       6   09/12/2013  idr       After discussions in Khronos, change vendor
    128                                 prefix to EXT.
    129 
    130       5   09/09/2013  idr       Add ARB_ES3_compatibility interaction.
    131 
    132       4   09/06/2013  mattst88  Allow extension on OpenGL ES 3.0.
    133 
    134       3   08/28/2013  mattst88  Add #extension/#define changes.
    135 
    136       2   08/26/2013  mattst88  Change vendor prefix to MESA. Add mix() that
    137                                 selects between boolean components.
    138       1   08/26/2013  mattst88  Initial revision
    139