Class NVFramebufferMixedSamples
- java.lang.Object
-
- org.lwjgl.opengles.NVFramebufferMixedSamples
-
public class NVFramebufferMixedSamples extends java.lang.Object
Native bindings to the NV_framebuffer_mixed_samples extension.This extension allows multisample rendering with a raster and depth/stencil sample count that is larger than the color sample count. Rasterization and the results of the depth and stencil tests together determine the portion of a pixel that is "covered". It can be useful to evaluate coverage at a higher frequency than color samples are stored. This coverage is then "reduced" to a collection of covered color samples, each having an opacity value corresponding to the fraction of the color sample covered. The opacity can optionally be blended into individual color samples.
In the current hardware incarnation both depth and stencil testing are supported with mixed samples, although the API accommodates supporting only one or the other.
Rendering with fewer color samples than depth/stencil samples can greatly reduce the amount of memory and bandwidth consumed by the color buffer. However, converting the coverage values into opacity can introduce artifacts where triangles share edges and may not be suitable for normal triangle mesh rendering.
One expected use case for this functionality is Stencil-then-Cover path rendering (NV_path_rendering). The stencil step determines the coverage (in the stencil buffer) for an entire path at the higher sample frequency, and then the cover step can draw the path into the lower frequency color buffer using the coverage information to antialias path edges. With this two-step process, internal edges are fully covered when antialiasing is applied and there is no corruption on these edges.
The key features of this extension are:
- It allows a framebuffer object to be considered complete when its depth or stencil samples are a multiple of the number of color samples.
- It redefines SAMPLES to be the number of depth/stencil samples (if any); otherwise, it uses the number of color samples. SAMPLE_BUFFERS is one if there are multisample depth/stencil attachments. Multisample rasterization and multisample fragment ops are allowed if SAMPLE_BUFFERS is one.
- It replaces several error checks involving SAMPLE_BUFFERS by error checks directly referencing the number of samples in the relevant attachments.
- A coverage reduction step is added to Per-Fragment Operations which converts a set of covered raster/depth/stencil samples to a set of covered color samples. The coverage reduction step also includes an optional coverage modulation step, multiplying color values by a fractional opacity corresponding to the number of associated raster/depth/stencil samples covered.
-
-
Field Summary
Fields Modifier and Type Field Description static int
GL_COLOR_SAMPLES_NV
GL_COVERAGE_MODULATION_NVAccepted by thepname
parameter of GetBooleanv, GetDoublev, GetIntegerv, and GetFloatv.static int
GL_COVERAGE_MODULATION_TABLE_NV
Accepted by thecap
parameter of Enable, Disable, IsEnabled.static int
GL_COVERAGE_MODULATION_TABLE_SIZE_NV
GL_DEPTH_SAMPLES_NV
GL_EFFECTIVE_RASTER_SAMPLES_EXT
GL_MAX_RASTER_SAMPLES_EXT
GL_MIXED_DEPTH_SAMPLES_SUPPORTED_NV
GL_MIXED_STENCIL_SAMPLES_SUPPORTED_NV
GL_MULTISAMPLE_RASTERIZATION_ALLOWED_EXT
GL_RASTER_FIXED_SAMPLE_LOCATIONS_EXTAccepted by thepname
parameter of GetBooleanv, GetDoublev, GetIntegerv, and GetFloatv.static int
GL_RASTER_MULTISAMPLE_EXT
Accepted by thecap
parameter of Enable, Disable, IsEnabled.static int
GL_RASTER_SAMPLES_EXT
GL_STENCIL_SAMPLES_NVAccepted by thepname
parameter of GetBooleanv, GetDoublev, GetIntegerv, and GetFloatv.
-
Method Summary
All Methods Static Methods Concrete Methods Modifier and Type Method Description static void
glCoverageModulationNV(int components)
static void
glCoverageModulationTableNV(float[] v)
Array version of:CoverageModulationTableNV
static void
glCoverageModulationTableNV(java.nio.FloatBuffer v)
static void
glGetCoverageModulationTableNV(float[] v)
Array version of:GetCoverageModulationTableNV
static void
glGetCoverageModulationTableNV(java.nio.FloatBuffer v)
static void
glRasterSamplesEXT(int samples, boolean fixedsamplelocations)
static void
nglCoverageModulationTableNV(int n, long v)
static void
nglGetCoverageModulationTableNV(int bufsize, long v)
-
-
-
Field Detail
-
GL_RASTER_MULTISAMPLE_EXT, GL_COVERAGE_MODULATION_TABLE_NV
Accepted by thecap
parameter of Enable, Disable, IsEnabled.
-
GL_RASTER_SAMPLES_EXT, GL_MAX_RASTER_SAMPLES_EXT, GL_RASTER_FIXED_SAMPLE_LOCATIONS_EXT, GL_MULTISAMPLE_RASTERIZATION_ALLOWED_EXT, GL_EFFECTIVE_RASTER_SAMPLES_EXT, GL_COLOR_SAMPLES_NV, GL_DEPTH_SAMPLES_NV, GL_STENCIL_SAMPLES_NV, GL_MIXED_DEPTH_SAMPLES_SUPPORTED_NV, GL_MIXED_STENCIL_SAMPLES_SUPPORTED_NV, GL_COVERAGE_MODULATION_NV, GL_COVERAGE_MODULATION_TABLE_SIZE_NV
Accepted by thepname
parameter of GetBooleanv, GetDoublev, GetIntegerv, and GetFloatv.
-
-
Method Detail
-
glRasterSamplesEXT
public static void glRasterSamplesEXT(int samples, boolean fixedsamplelocations)
-
nglCoverageModulationTableNV
public static void nglCoverageModulationTableNV(int n, long v)
-
glCoverageModulationTableNV
public static void glCoverageModulationTableNV(java.nio.FloatBuffer v)
-
nglGetCoverageModulationTableNV
public static void nglGetCoverageModulationTableNV(int bufsize, long v)
-
glGetCoverageModulationTableNV
public static void glGetCoverageModulationTableNV(java.nio.FloatBuffer v)
-
glCoverageModulationNV
public static void glCoverageModulationNV(int components)
-
glCoverageModulationTableNV
public static void glCoverageModulationTableNV(float[] v)
Array version of:CoverageModulationTableNV
-
glGetCoverageModulationTableNV
public static void glGetCoverageModulationTableNV(float[] v)
Array version of:GetCoverageModulationTableNV
-
-