Class EXTFragmentShadingRate
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 optionally request that the
fragment shader be run once per color sample (e.g., by using the "sample" qualifier on one or more active fragment shader inputs), or run a minimum
number of times per pixel using SAMPLE_SHADING
enable and the MinSampleShading
frequency value.
This extension allows applications to specify fragment shading rates of less than 1 invocation per pixel. Instead of invoking the fragment shader once for each covered pixel, the fragment shader can be run once for a group of adjacent pixels in the framebuffer. The outputs of that fragment shader invocation are broadcast to each covered sample for all of the pixels in the group. The initial version of this extension allows for groups of 1, 2, 4, 8, and 16 pixels.
This can be useful for effects like motion volumetric rendering where a portion of scene is processed at full shading rate and a portion can be processed at a reduced shading rate, saving power and processing resources. The requested rate can vary from (finest and default) 1 fragment shader invocation per pixel to (coarsest) one fragment shader invocation for each 4x4 block of pixels.
-
Field Summary
FieldsModifier and TypeFieldDescriptionstatic final int
static final int
static final int
static final int
static final int
static final int
static final int
static final int
static final int
static final int
static final int
static final int
static final int
static final int
static final int
static final int
Allowed in therate
parameter inShadingRateEXT
.static final int
Allowed in therate
parameter inShadingRateEXT
.static final int
Allowed in therate
parameter inShadingRateEXT
.static final int
Allowed in therate
parameter inShadingRateEXT
.static final int
Allowed in therate
parameter inShadingRateEXT
.static final int
Allowed in therate
parameter inShadingRateEXT
.static final int
Allowed in therate
parameter inShadingRateEXT
.static final int
Allowed in therate
parameter inShadingRateEXT
.static final int
Allowed in therate
parameter inShadingRateEXT
.static final int
Accepted by theattachment
parameter ofFramebufferShadingRateEXT
andGetFramebufferAttachmentParameteriv
.static final int
-
Method Summary
Modifier and TypeMethodDescriptionstatic void
glFramebufferShadingRateEXT
(int target, int attachment, int texture, int baseLayer, int numLayers, int texelWidth, int texelHeight) static void
glGetFragmentShadingRatesEXT
(int samples, int[] count, int[] shadingRates) Array version of:GetFragmentShadingRatesEXT
static void
glGetFragmentShadingRatesEXT
(int samples, IntBuffer count, IntBuffer shadingRates) static void
glShadingRateCombinerOpsEXT
(int combinerOp0, int combinerOp1) static void
glShadingRateEXT
(int rate) static void
nglGetFragmentShadingRatesEXT
(int samples, int maxCount, long count, long shadingRates)
-
Field Details
-
GL_SHADING_RATE_ATTACHMENT_EXT
public static final int GL_SHADING_RATE_ATTACHMENT_EXTAccepted by theattachment
parameter ofFramebufferShadingRateEXT
andGetFramebufferAttachmentParameteriv
.- See Also:
-
GL_SHADING_RATE_1X1_PIXELS_EXT
public static final int GL_SHADING_RATE_1X1_PIXELS_EXTAllowed in therate
parameter inShadingRateEXT
.- See Also:
-
GL_SHADING_RATE_1X2_PIXELS_EXT
public static final int GL_SHADING_RATE_1X2_PIXELS_EXTAllowed in therate
parameter inShadingRateEXT
.- See Also:
-
GL_SHADING_RATE_1X4_PIXELS_EXT
public static final int GL_SHADING_RATE_1X4_PIXELS_EXTAllowed in therate
parameter inShadingRateEXT
.- See Also:
-
GL_SHADING_RATE_2X1_PIXELS_EXT
public static final int GL_SHADING_RATE_2X1_PIXELS_EXTAllowed in therate
parameter inShadingRateEXT
.- See Also:
-
GL_SHADING_RATE_2X2_PIXELS_EXT
public static final int GL_SHADING_RATE_2X2_PIXELS_EXTAllowed in therate
parameter inShadingRateEXT
.- See Also:
-
GL_SHADING_RATE_2X4_PIXELS_EXT
public static final int GL_SHADING_RATE_2X4_PIXELS_EXTAllowed in therate
parameter inShadingRateEXT
.- See Also:
-
GL_SHADING_RATE_4X1_PIXELS_EXT
public static final int GL_SHADING_RATE_4X1_PIXELS_EXTAllowed in therate
parameter inShadingRateEXT
.- See Also:
-
GL_SHADING_RATE_4X2_PIXELS_EXT
public static final int GL_SHADING_RATE_4X2_PIXELS_EXTAllowed in therate
parameter inShadingRateEXT
.- See Also:
-
GL_SHADING_RATE_4X4_PIXELS_EXT
public static final int GL_SHADING_RATE_4X4_PIXELS_EXTAllowed in therate
parameter inShadingRateEXT
.- See Also:
-
GL_FRAGMENT_SHADING_RATE_COMBINER_OP_KEEP_EXT
public static final int GL_FRAGMENT_SHADING_RATE_COMBINER_OP_KEEP_EXT- See Also:
-
GL_FRAGMENT_SHADING_RATE_COMBINER_OP_REPLACE_EXT
public static final int GL_FRAGMENT_SHADING_RATE_COMBINER_OP_REPLACE_EXT- See Also:
-
GL_FRAGMENT_SHADING_RATE_COMBINER_OP_MIN_EXT
public static final int GL_FRAGMENT_SHADING_RATE_COMBINER_OP_MIN_EXT- See Also:
-
GL_FRAGMENT_SHADING_RATE_COMBINER_OP_MAX_EXT
public static final int GL_FRAGMENT_SHADING_RATE_COMBINER_OP_MAX_EXT- See Also:
-
GL_FRAGMENT_SHADING_RATE_COMBINER_OP_MUL_EXT
public static final int GL_FRAGMENT_SHADING_RATE_COMBINER_OP_MUL_EXT- See Also:
-
GL_SHADING_RATE_EXT
public static final int GL_SHADING_RATE_EXT- See Also:
-
GL_MIN_FRAGMENT_SHADING_RATE_ATTACHMENT_TEXEL_WIDTH_EXT
public static final int GL_MIN_FRAGMENT_SHADING_RATE_ATTACHMENT_TEXEL_WIDTH_EXT- See Also:
-
GL_MAX_FRAGMENT_SHADING_RATE_ATTACHMENT_TEXEL_WIDTH_EXT
public static final int GL_MAX_FRAGMENT_SHADING_RATE_ATTACHMENT_TEXEL_WIDTH_EXT- See Also:
-
GL_MIN_FRAGMENT_SHADING_RATE_ATTACHMENT_TEXEL_HEIGHT_EXT
public static final int GL_MIN_FRAGMENT_SHADING_RATE_ATTACHMENT_TEXEL_HEIGHT_EXT- See Also:
-
GL_MAX_FRAGMENT_SHADING_RATE_ATTACHMENT_TEXEL_HEIGHT_EXT
public static final int GL_MAX_FRAGMENT_SHADING_RATE_ATTACHMENT_TEXEL_HEIGHT_EXT- See Also:
-
GL_MAX_FRAGMENT_SHADING_RATE_ATTACHMENT_TEXEL_ASPECT_RATIO_EXT
public static final int GL_MAX_FRAGMENT_SHADING_RATE_ATTACHMENT_TEXEL_ASPECT_RATIO_EXT- See Also:
-
GL_MAX_FRAGMENT_SHADING_RATE_ATTACHMENT_LAYERS_EXT
public static final int GL_MAX_FRAGMENT_SHADING_RATE_ATTACHMENT_LAYERS_EXT- See Also:
-
GL_FRAGMENT_SHADING_RATE_WITH_SHADER_DEPTH_STENCIL_WRITES_SUPPORTED_EXT
public static final int GL_FRAGMENT_SHADING_RATE_WITH_SHADER_DEPTH_STENCIL_WRITES_SUPPORTED_EXT- See Also:
-
GL_FRAGMENT_SHADING_RATE_WITH_SAMPLE_MASK_SUPPORTED_EXT
public static final int GL_FRAGMENT_SHADING_RATE_WITH_SAMPLE_MASK_SUPPORTED_EXT- See Also:
-
GL_FRAGMENT_SHADING_RATE_ATTACHMENT_WITH_DEFAULT_FRAMEBUFFER_SUPPORTED_EXT
public static final int GL_FRAGMENT_SHADING_RATE_ATTACHMENT_WITH_DEFAULT_FRAMEBUFFER_SUPPORTED_EXT- See Also:
-
GL_FRAGMENT_SHADING_RATE_NON_TRIVIAL_COMBINERS_SUPPORTED_EXT
public static final int GL_FRAGMENT_SHADING_RATE_NON_TRIVIAL_COMBINERS_SUPPORTED_EXT- See Also:
-
-
Method Details
-
glShadingRateEXT
public static void glShadingRateEXT(int rate) -
glShadingRateCombinerOpsEXT
public static void glShadingRateCombinerOpsEXT(int combinerOp0, int combinerOp1) -
glFramebufferShadingRateEXT
public static void glFramebufferShadingRateEXT(int target, int attachment, int texture, int baseLayer, int numLayers, int texelWidth, int texelHeight) -
nglGetFragmentShadingRatesEXT
public static void nglGetFragmentShadingRatesEXT(int samples, int maxCount, long count, long shadingRates) -
glGetFragmentShadingRatesEXT
-
glGetFragmentShadingRatesEXT
public static void glGetFragmentShadingRatesEXT(int samples, int[] count, int[] shadingRates) Array version of:GetFragmentShadingRatesEXT
-