Class NVShadingRateImage
By default, OpenGL runs a fragment shader once for each pixel covered by a primitive being rasterized. When using multisampling, the outputs of that
fragment shader are broadcast to each covered sample of the fragment's pixel. When using multisampling, applications can also request that the fragment
shader be run once per color sample (when using the "sample" qualifier on one or more active fragment shader inputs), or run a fixed number of
times per pixel using SAMPLE_SHADING enable and the MinSampleShading frequency value. In all of these approaches, the number of fragment shader
invocations per pixel is fixed, based on API state.
This extension allows applications to bind and enable a shading rate image that can be used to vary the number of fragment shader invocations across
the framebuffer. This can be useful for applications like eye tracking for virtual reality, where the portion of the framebuffer that the user is
looking at directly can be processed at high frequency, while distant corners of the image can be processed at lower frequency. The shading rate image
is an immutable-format two-dimensional or two-dimensional array texture that uses a format of R8UI. Each texel represents a fixed-size rectangle in
the framebuffer, covering 16x16 pixels in the initial implementation of this extension. When rasterizing a primitive covering one of these rectangles,
the OpenGL implementation reads the texel in the bound shading rate image and looks up the fetched value in a palette of shading rates. The shading
rate used can vary from (finest) 16 fragment shader invocations per pixel to (coarsest) one fragment shader invocation for each 4x4 block of pixels.
When this extension is advertised by an OpenGL implementation, the implementation must also support the GLSL extension
"GL_NV_shading_rate_image" (documented separately), which provides new built-in variables that allow fragment shaders to determine the
effective shading rate used for each fragment. Additionally, the GLSL extension also provides new layout qualifiers allowing the interlock
functionality provided by ARB_fragment_shader_interlock to guarantee mutual exclusion across an entire fragment when the shading rate specifies
multiple pixels per fragment shader invocation.
Note that this extension requires the use of a framebuffer object; the shading rate image and related state are ignored when rendering to the default framebuffer.
Requires OpenGL 4.5 and NV_framebuffer_mixed_samples.
-
Field Summary
FieldsModifier and TypeFieldDescriptionstatic final intstatic final intAccepted in theratesparameter ofShadingRateImagePaletteNVand therateparameter ofShadingRateSampleOrderCustomNVandGetShadingRateSampleLocationivNV; returned in therateparameter ofGetShadingRateImagePaletteNV.static final intAccepted in theratesparameter ofShadingRateImagePaletteNVand therateparameter ofShadingRateSampleOrderCustomNVandGetShadingRateSampleLocationivNV; returned in therateparameter ofGetShadingRateImagePaletteNV.static final intAccepted in theratesparameter ofShadingRateImagePaletteNVand therateparameter ofShadingRateSampleOrderCustomNVandGetShadingRateSampleLocationivNV; returned in therateparameter ofGetShadingRateImagePaletteNV.static final intAccepted in theratesparameter ofShadingRateImagePaletteNVand therateparameter ofShadingRateSampleOrderCustomNVandGetShadingRateSampleLocationivNV; returned in therateparameter ofGetShadingRateImagePaletteNV.static final intAccepted in theratesparameter ofShadingRateImagePaletteNVand therateparameter ofShadingRateSampleOrderCustomNVandGetShadingRateSampleLocationivNV; returned in therateparameter ofGetShadingRateImagePaletteNV.static final intAccepted in theratesparameter ofShadingRateImagePaletteNVand therateparameter ofShadingRateSampleOrderCustomNVandGetShadingRateSampleLocationivNV; returned in therateparameter ofGetShadingRateImagePaletteNV.static final intAccepted in theratesparameter ofShadingRateImagePaletteNVand therateparameter ofShadingRateSampleOrderCustomNVandGetShadingRateSampleLocationivNV; returned in therateparameter ofGetShadingRateImagePaletteNV.static final intAccepted in theratesparameter ofShadingRateImagePaletteNVand therateparameter ofShadingRateSampleOrderCustomNVandGetShadingRateSampleLocationivNV; returned in therateparameter ofGetShadingRateImagePaletteNV.static final intAccepted in theratesparameter ofShadingRateImagePaletteNVand therateparameter ofShadingRateSampleOrderCustomNVandGetShadingRateSampleLocationivNV; returned in therateparameter ofGetShadingRateImagePaletteNV.static final intAccepted in theratesparameter ofShadingRateImagePaletteNVand therateparameter ofShadingRateSampleOrderCustomNVandGetShadingRateSampleLocationivNV; returned in therateparameter ofGetShadingRateImagePaletteNV.static final intAccepted in theratesparameter ofShadingRateImagePaletteNVand therateparameter ofShadingRateSampleOrderCustomNVandGetShadingRateSampleLocationivNV; returned in therateparameter ofGetShadingRateImagePaletteNV.static final intstatic final intAccepted by thecapparameter ofEnable,Disable, andIsEnabled, by thetargetparameter ofEnablei,Disablei,IsEnabledi,EnableIndexedEXT,DisableIndexedEXT, andIsEnabledIndexedEXT, and by thepnameparameter ofGetBooleanv,GetIntegerv,GetInteger64v,GetFloatv,GetDoublev,GetDoubleIndexedvEXT,GetBooleani_v,GetIntegeri_v,GetInteger64i_v,GetFloati_v,GetDoublei_v,GetBooleanIndexedvEXT,GetIntegerIndexedvEXT, andGetFloatIndexedvEXT.static final intstatic final intstatic final intstatic final intAccepted in theratesparameter ofShadingRateImagePaletteNVand therateparameter ofShadingRateSampleOrderCustomNVandGetShadingRateSampleLocationivNV; returned in therateparameter ofGetShadingRateImagePaletteNV.static final intAccepted by theorderparameter ofShadingRateSampleOrderNV.static final intAccepted by theorderparameter ofShadingRateSampleOrderNV.static final intAccepted by theorderparameter ofShadingRateSampleOrderNV. -
Method Summary
Modifier and TypeMethodDescriptionstatic voidglBindShadingRateImageNV(int texture) static voidglGetShadingRateImagePaletteNV(int viewport, int entry, int[] rate) Array version of:GetShadingRateImagePaletteNVstatic voidglGetShadingRateImagePaletteNV(int viewport, int entry, IntBuffer rate) static voidglGetShadingRateSampleLocationivNV(int rate, int samples, int index, int[] location) Array version of:GetShadingRateSampleLocationivNVstatic voidglGetShadingRateSampleLocationivNV(int rate, int samples, int index, IntBuffer location) static voidglShadingRateImageBarrierNV(boolean synchronize) static voidglShadingRateImagePaletteNV(int viewport, int first, int[] rates) Array version of:ShadingRateImagePaletteNVstatic voidglShadingRateImagePaletteNV(int viewport, int first, IntBuffer rates) static voidglShadingRateSampleOrderCustomNV(int rate, int samples, int[] locations) Array version of:ShadingRateSampleOrderCustomNVstatic voidglShadingRateSampleOrderCustomNV(int rate, int samples, IntBuffer locations) static voidglShadingRateSampleOrderNV(int order) static voidnglGetShadingRateImagePaletteNV(int viewport, int entry, long rate) static voidnglGetShadingRateSampleLocationivNV(int rate, int samples, int index, long location) static voidnglShadingRateImagePaletteNV(int viewport, int first, int count, long rates) static voidnglShadingRateSampleOrderCustomNV(int rate, int samples, long locations)
-
Field Details
-
GL_SHADING_RATE_IMAGE_NV
public static final int GL_SHADING_RATE_IMAGE_NVAccepted by thecapparameter ofEnable,Disable, andIsEnabled, by thetargetparameter ofEnablei,Disablei,IsEnabledi,EnableIndexedEXT,DisableIndexedEXT, andIsEnabledIndexedEXT, and by thepnameparameter ofGetBooleanv,GetIntegerv,GetInteger64v,GetFloatv,GetDoublev,GetDoubleIndexedvEXT,GetBooleani_v,GetIntegeri_v,GetInteger64i_v,GetFloati_v,GetDoublei_v,GetBooleanIndexedvEXT,GetIntegerIndexedvEXT, andGetFloatIndexedvEXT.- See Also:
-
GL_SHADING_RATE_NO_INVOCATIONS_NV
public static final int GL_SHADING_RATE_NO_INVOCATIONS_NVAccepted in theratesparameter ofShadingRateImagePaletteNVand therateparameter ofShadingRateSampleOrderCustomNVandGetShadingRateSampleLocationivNV; returned in therateparameter ofGetShadingRateImagePaletteNV.- See Also:
-
GL_SHADING_RATE_1_INVOCATION_PER_PIXEL_NV
public static final int GL_SHADING_RATE_1_INVOCATION_PER_PIXEL_NVAccepted in theratesparameter ofShadingRateImagePaletteNVand therateparameter ofShadingRateSampleOrderCustomNVandGetShadingRateSampleLocationivNV; returned in therateparameter ofGetShadingRateImagePaletteNV.- See Also:
-
GL_SHADING_RATE_1_INVOCATION_PER_1X2_PIXELS_NV
public static final int GL_SHADING_RATE_1_INVOCATION_PER_1X2_PIXELS_NVAccepted in theratesparameter ofShadingRateImagePaletteNVand therateparameter ofShadingRateSampleOrderCustomNVandGetShadingRateSampleLocationivNV; returned in therateparameter ofGetShadingRateImagePaletteNV.- See Also:
-
GL_SHADING_RATE_1_INVOCATION_PER_2X1_PIXELS_NV
public static final int GL_SHADING_RATE_1_INVOCATION_PER_2X1_PIXELS_NVAccepted in theratesparameter ofShadingRateImagePaletteNVand therateparameter ofShadingRateSampleOrderCustomNVandGetShadingRateSampleLocationivNV; returned in therateparameter ofGetShadingRateImagePaletteNV.- See Also:
-
GL_SHADING_RATE_1_INVOCATION_PER_2X2_PIXELS_NV
public static final int GL_SHADING_RATE_1_INVOCATION_PER_2X2_PIXELS_NVAccepted in theratesparameter ofShadingRateImagePaletteNVand therateparameter ofShadingRateSampleOrderCustomNVandGetShadingRateSampleLocationivNV; returned in therateparameter ofGetShadingRateImagePaletteNV.- See Also:
-
GL_SHADING_RATE_1_INVOCATION_PER_2X4_PIXELS_NV
public static final int GL_SHADING_RATE_1_INVOCATION_PER_2X4_PIXELS_NVAccepted in theratesparameter ofShadingRateImagePaletteNVand therateparameter ofShadingRateSampleOrderCustomNVandGetShadingRateSampleLocationivNV; returned in therateparameter ofGetShadingRateImagePaletteNV.- See Also:
-
GL_SHADING_RATE_1_INVOCATION_PER_4X2_PIXELS_NV
public static final int GL_SHADING_RATE_1_INVOCATION_PER_4X2_PIXELS_NVAccepted in theratesparameter ofShadingRateImagePaletteNVand therateparameter ofShadingRateSampleOrderCustomNVandGetShadingRateSampleLocationivNV; returned in therateparameter ofGetShadingRateImagePaletteNV.- See Also:
-
GL_SHADING_RATE_1_INVOCATION_PER_4X4_PIXELS_NV
public static final int GL_SHADING_RATE_1_INVOCATION_PER_4X4_PIXELS_NVAccepted in theratesparameter ofShadingRateImagePaletteNVand therateparameter ofShadingRateSampleOrderCustomNVandGetShadingRateSampleLocationivNV; returned in therateparameter ofGetShadingRateImagePaletteNV.- See Also:
-
GL_SHADING_RATE_2_INVOCATIONS_PER_PIXEL_NV
public static final int GL_SHADING_RATE_2_INVOCATIONS_PER_PIXEL_NVAccepted in theratesparameter ofShadingRateImagePaletteNVand therateparameter ofShadingRateSampleOrderCustomNVandGetShadingRateSampleLocationivNV; returned in therateparameter ofGetShadingRateImagePaletteNV.- See Also:
-
GL_SHADING_RATE_4_INVOCATIONS_PER_PIXEL_NV
public static final int GL_SHADING_RATE_4_INVOCATIONS_PER_PIXEL_NVAccepted in theratesparameter ofShadingRateImagePaletteNVand therateparameter ofShadingRateSampleOrderCustomNVandGetShadingRateSampleLocationivNV; returned in therateparameter ofGetShadingRateImagePaletteNV.- See Also:
-
GL_SHADING_RATE_8_INVOCATIONS_PER_PIXEL_NV
public static final int GL_SHADING_RATE_8_INVOCATIONS_PER_PIXEL_NVAccepted in theratesparameter ofShadingRateImagePaletteNVand therateparameter ofShadingRateSampleOrderCustomNVandGetShadingRateSampleLocationivNV; returned in therateparameter ofGetShadingRateImagePaletteNV.- See Also:
-
GL_SHADING_RATE_16_INVOCATIONS_PER_PIXEL_NV
public static final int GL_SHADING_RATE_16_INVOCATIONS_PER_PIXEL_NVAccepted in theratesparameter ofShadingRateImagePaletteNVand therateparameter ofShadingRateSampleOrderCustomNVandGetShadingRateSampleLocationivNV; returned in therateparameter ofGetShadingRateImagePaletteNV.- See Also:
-
GL_SHADING_RATE_IMAGE_BINDING_NV
public static final int GL_SHADING_RATE_IMAGE_BINDING_NV- See Also:
-
GL_SHADING_RATE_IMAGE_TEXEL_WIDTH_NV
public static final int GL_SHADING_RATE_IMAGE_TEXEL_WIDTH_NV- See Also:
-
GL_SHADING_RATE_IMAGE_TEXEL_HEIGHT_NV
public static final int GL_SHADING_RATE_IMAGE_TEXEL_HEIGHT_NV- See Also:
-
GL_SHADING_RATE_IMAGE_PALETTE_SIZE_NV
public static final int GL_SHADING_RATE_IMAGE_PALETTE_SIZE_NV- See Also:
-
GL_MAX_COARSE_FRAGMENT_SAMPLES_NV
public static final int GL_MAX_COARSE_FRAGMENT_SAMPLES_NV- See Also:
-
GL_SHADING_RATE_SAMPLE_ORDER_DEFAULT_NV
public static final int GL_SHADING_RATE_SAMPLE_ORDER_DEFAULT_NVAccepted by theorderparameter ofShadingRateSampleOrderNV.- See Also:
-
GL_SHADING_RATE_SAMPLE_ORDER_PIXEL_MAJOR_NV
public static final int GL_SHADING_RATE_SAMPLE_ORDER_PIXEL_MAJOR_NVAccepted by theorderparameter ofShadingRateSampleOrderNV.- See Also:
-
GL_SHADING_RATE_SAMPLE_ORDER_SAMPLE_MAJOR_NV
public static final int GL_SHADING_RATE_SAMPLE_ORDER_SAMPLE_MAJOR_NVAccepted by theorderparameter ofShadingRateSampleOrderNV.- See Also:
-
-
Method Details
-
glBindShadingRateImageNV
public static void glBindShadingRateImageNV(int texture) -
nglShadingRateImagePaletteNV
public static void nglShadingRateImagePaletteNV(int viewport, int first, int count, long rates) -
glShadingRateImagePaletteNV
-
nglGetShadingRateImagePaletteNV
public static void nglGetShadingRateImagePaletteNV(int viewport, int entry, long rate) -
glGetShadingRateImagePaletteNV
-
glShadingRateImageBarrierNV
public static void glShadingRateImageBarrierNV(boolean synchronize) -
glShadingRateSampleOrderNV
public static void glShadingRateSampleOrderNV(int order) -
nglShadingRateSampleOrderCustomNV
public static void nglShadingRateSampleOrderCustomNV(int rate, int samples, long locations) -
glShadingRateSampleOrderCustomNV
-
nglGetShadingRateSampleLocationivNV
public static void nglGetShadingRateSampleLocationivNV(int rate, int samples, int index, long location) -
glGetShadingRateSampleLocationivNV
public static void glGetShadingRateSampleLocationivNV(int rate, int samples, int index, IntBuffer location) -
glShadingRateImagePaletteNV
public static void glShadingRateImagePaletteNV(int viewport, int first, int[] rates) Array version of:ShadingRateImagePaletteNV -
glGetShadingRateImagePaletteNV
public static void glGetShadingRateImagePaletteNV(int viewport, int entry, int[] rate) Array version of:GetShadingRateImagePaletteNV -
glShadingRateSampleOrderCustomNV
public static void glShadingRateSampleOrderCustomNV(int rate, int samples, int[] locations) Array version of:ShadingRateSampleOrderCustomNV -
glGetShadingRateSampleLocationivNV
public static void glGetShadingRateSampleLocationivNV(int rate, int samples, int index, int[] location) Array version of:GetShadingRateSampleLocationivNV
-