blob: 5326b65b5d4cf818417d177d349cedfc1ba8321f [file] [log] [blame]
Name Strings
Daniel Koch, NVIDIA Corporation (dkoch 'at'
Pat Brown, NVIDIA
Eric Werness, NVIDIA
Graeme Leese, Broadcom
Contributors to ARB_sample_shading
Members of the OpenGL ES working group
Copyright (c) 2011-2013 The Khronos Group Inc. Copyright terms at
Ratified by the Khronos Board of Promoters on 2014/03/14.
Last Modified Date: January 30, 2014
Revision: 8
OpenGL ES Extension #169
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.
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:
Accepted by the <pname> parameter of GetBooleanv, GetIntegerv,
GetInteger64v, and GetFloatv:
Additions to Chapter 2 of the OpenGL ES 3.0 Specification (OpenGL ES Operation)
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
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)
Additions to Chapter 5 of the OpenGL ES 3.0.2 Specification (Special Functions)
Additions to Chapter 6 of the OpenGL ES 3.0.2 Specification (State and
State Requests)
Modifications to The OpenGL ES Shading Language Specification, Version 3.00.04
Additions to the AGL/GLX/WGL/EGL Specifications
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
MIN_SAMPLE_SHADING_VALUE_OES R+ GetFloatv 0 fraction of multi- 3.3.1
samples to use for
sample shading
New Implementation Dependent State
(0) This extension is based on ARB_sample_shading. What are the major
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?
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