| Name |
| |
| OES_sample_shading |
| |
| Name Strings |
| |
| GL_OES_sample_shading |
| |
| Contact |
| |
| Daniel Koch, NVIDIA Corporation (dkoch 'at' nvidia.com) |
| |
| Contributors |
| |
| Pat Brown, NVIDIA |
| Eric Werness, NVIDIA |
| Graeme Leese, Broadcom |
| Contributors to ARB_sample_shading |
| Members of the OpenGL ES working group |
| |
| Notice |
| |
| Copyright (c) 2011-2013 The Khronos Group Inc. Copyright terms at |
| http://www.khronos.org/registry/speccopyright.html |
| |
| Specification Update Policy |
| |
| Khronos-approved extension specifications are updated in response to |
| issues and bugs prioritized by the Khronos OpenGL ES Working Group. For |
| extensions which have been promoted to a core Specification, fixes will |
| first appear in the latest version of that core Specification, and will |
| eventually be backported to the extension document. This policy is |
| described in more detail at |
| https://www.khronos.org/registry/OpenGL/docs/update_policy.php |
| |
| Status |
| |
| Complete. |
| Ratified by the Khronos Board of Promoters on 2014/03/14. |
| |
| Version |
| |
| Last Modified Date: January 30, 2014 |
| Revision: 8 |
| |
| Number |
| |
| OpenGL ES Extension #169 |
| |
| Dependencies |
| |
| OpenGL ES 3.0 and GLSL ES 3.00 required. |
| |
| This extension is written against the OpenGL ES 3.0.2 (April 8, 2013) |
| and the OpenGL ES Shading Language Specification Revision 4 |
| (March 6, 2013) specifications. |
| |
| This extension requires OES_sample_variables. |
| |
| Overview |
| |
| In standard multisample rendering, an implementation is allowed to |
| assign the same sets of fragment shader input values to each sample. |
| This can cause aliasing where the fragment shader input values are |
| used to generate a result that doesn't antialias itself, for example |
| with alpha-tested transparency. |
| |
| This extension adds the ability to explicitly request that an |
| implementation use a minimum number of unique set of fragment |
| computation inputs when multisampling a pixel. Specifying such a |
| requirement can reduce aliasing that results from evaluating the |
| fragment computations too few times per pixel. |
| |
| This extension adds new global state that controls the minimum |
| number of samples for which attribute data is independently |
| interpolated. When enabled, all fragment-shading operations |
| are executed independently on each sample. |
| |
| |
| New Procedures and Functions |
| |
| void MinSampleShadingOES(float value); |
| |
| New Tokens |
| |
| Accepted by the <cap> parameter of Enable, Disable, and IsEnabled, |
| and by the <pname> parameter of GetBooleanv, GetIntegerv, GetFloatv, |
| and GetInteger64v: |
| |
| SAMPLE_SHADING_OES 0x8C36 |
| |
| Accepted by the <pname> parameter of GetBooleanv, GetIntegerv, |
| GetInteger64v, and GetFloatv: |
| |
| MIN_SAMPLE_SHADING_VALUE_OES 0x8C37 |
| |
| Additions to Chapter 2 of the OpenGL ES 3.0 Specification (OpenGL ES Operation) |
| |
| None. |
| |
| Additions to Chapter 3 of the OpenGL ES 3.0 Specification (Rasterization) |
| |
| Modify Section 3.3 Multisampling p. 95 |
| |
| (add a new subsection at the end of the section, p. 96) |
| |
| 3.3.1 Sample Shading |
| |
| Sample shading can be used to specify a minimum number of unique samples |
| to process for each fragment. Sample shading is controlled by calling |
| Enable or Disable with the symbolic constant SAMPLE_SHADING_OES. |
| |
| If the value of SAMPLE_BUFFERS is zero or SAMPLE_SHADING_OES is |
| disabled, sample shading has no effect. Otherwise, an implementation must |
| provide a minimum of |
| |
| max(ceil(<mss> * <samples>),1) |
| |
| unique sets of fragment shader inputs for each |
| fragment, where <mss> is the value of MIN_SAMPLE_SHADING_VALUE_OES and |
| <samples> is the number of samples (the values of SAMPLES). These are |
| associated with the samples in an implementation-dependent manner. The |
| value of MIN_SAMPLE_SHADING_VALUE_OES is specified by calling |
| |
| void MinSampleShadingOES(float value); |
| |
| with <value> set to the desired minimum sample shading fraction. <value> |
| is clamped to [0,1] when specified. The sample shading fraction may be |
| queried by calling GetFloatv with pname set to |
| MIN_SAMPLE_SHADING_VALUE_OES. |
| |
| When the sample shading fraction is 1.0, a separate set of fragment shader |
| input values are evaluated for each sample, and each set of values |
| is evaluated at the sample location. |
| |
| |
| Additions to Chapter 4 of the OpenGL ES 3.0.2 Specification (Per-Fragment |
| Operations and the Framebuffer) |
| |
| None. |
| |
| Additions to Chapter 5 of the OpenGL ES 3.0.2 Specification (Special Functions) |
| |
| None. |
| |
| Additions to Chapter 6 of the OpenGL ES 3.0.2 Specification (State and |
| State Requests) |
| |
| None. |
| |
| Modifications to The OpenGL ES Shading Language Specification, Version 3.00.04 |
| |
| None. |
| |
| Additions to the AGL/GLX/WGL/EGL Specifications |
| |
| None |
| |
| Errors |
| |
| None. |
| |
| New State |
| |
| Add to Table 6.7 (Multisampling) |
| Get Initial |
| Get Value Type Command Value Description Sec. |
| --------- ---- --------- -------- ----------- ---- |
| SAMPLE_SHADING_OES B IsEnabled FALSE sample coverage 3.3.1 |
| enable |
| MIN_SAMPLE_SHADING_VALUE_OES R+ GetFloatv 0 fraction of multi- 3.3.1 |
| samples to use for |
| sample shading |
| |
| New Implementation Dependent State |
| |
| None. |
| |
| Issues |
| |
| (0) This extension is based on ARB_sample_shading. What are the major |
| differences? |
| |
| 1- rebased against ES 3.0 |
| 2- various editing for consistency to GL 4.4/GLSL 440 specs |
| 3- parameter to MinSampleShading changed to float to match GL 4.x |
| 4- removed mention of SAMPLE_ALPHA_TO_ONE |
| 5- replaced mention of "color and texture coordinates" with more |
| generic language about fragment shader inputs. |
| 6- removed mention of multisample enable. |
| 7- moved shading language sample variables to OES_sample_variables |
| |
| For historical issues, please see ARB_sample_shading. |
| |
| (1) OpenGL has a MULTISAMPLE enable that was not included in OpenGL ES. |
| Should we add it into this extension or base it purely on if the target |
| surface is multisample? |
| |
| DISCUSSION: |
| GL (4.4) says: |
| "Multisample rasterization is enabled or disabled by calling Enable or |
| Disable with the symbolic constant MULTISAMPLE." |
| |
| GL ES (3.0.2) says: |
| "Multisample rasterization cannot be enabled or disabled after a GL |
| context is created." |
| |
| RESOLVED. Multisample rasterization should be based on the target |
| surface properties. Will not pick up the explicit multisample |
| enable, but the language for ES3.0.2 doesn't sound right either. |
| Bug 10690 tracks this and it should be fixed in later versions |
| of the ES3.0 specification. |
| |
| |
| Revision History |
| |
| Rev. Date Author Changes |
| ---- ---------- -------- ----------------------------------------- |
| 8 2014-01-20 dkoch rename to OES, clean editing notess |
| 7 2014-01-20 dkoch Fix a typo, and dangling ARB suffix |
| 6 2013-10-03 dkoch Minor edits |
| 5 2013-09-09 dkoch Require OES_sample_variables. |
| Move gl_SampleMaskIn interaction base extension. |
| 4 2013-09-03 gleese Moved sample variables to OES_sample_variables |
| 3 2013-08-26 dkoch resolved issues 1&2 and supporting edits. |
| replaced discussion of fixed-function inputs |
| with generic language. |
| 2 2013-08-13 dkoch add missing suffices, follow extension template |
| 1 2013-08-12 dkoch Port ARB_sample_shading to ES 3.0 |
| |