org.lwjgl.vulkan.AMDShaderFragmentMask Maven / Gradle / Ivy
Show all versions of lwjgl-vulkan Show documentation
/*
* Copyright LWJGL. All rights reserved.
* License terms: https://www.lwjgl.org/license
* MACHINE GENERATED FILE, DO NOT EDIT
*/
package org.lwjgl.vulkan;
/**
* This extension provides efficient read access to the fragment mask in compressed multisampled color surfaces. The fragment mask is a lookup table that associates color samples with color fragment values.
*
* The fragment mask can be fetched with a call to {@code fragmentMaskFetchAMD} from a shader, which returns a single uint where each subsequent 4 bit specifies the color fragment index corresponding to the color sample, starting from the least significant bit. For example, when 8 color samples are used, the color fragment index for color sample 0 will be in bits 0-3 of the fragment mask, for color sample 7 the index will be in bits 28-31.
*
* The color fragment for a particular color sample may then be fetched with the correspoding fragment mask value using the {@code fragmentFetchAMD} shader function.
*
* Examples
*
* This example shows a shader that queries the fragment mask from a multisampled compressed surface and uses it to query fragment values.
*
*
* #version 450 core
*
* #extension GL_AMD_shader_fragment_mask: enable
*
* layout(binding = 0) uniform sampler2DMS s2DMS;
* layout(binding = 1) uniform isampler2DMSArray is2DMSArray;
*
* layout(binding = 2, input_attachment_index = 0) uniform usubpassInputMS usubpassMS;
*
* layout(location = 0) out vec4 fragColor;
*
* void main()
* {
* vec4 fragOne = vec4(0.0);
*
* uint fragMask = fragmentMaskFetchAMD(s2DMS, ivec2(2, 3));
* uint fragIndex = (fragMask & 0xF0) >> 4;
* fragOne += fragmentFetchAMD(s2DMS, ivec2(2, 3), 1);
*
* fragMask = fragmentMaskFetchAMD(is2DMSArray, ivec3(2, 3, 1));
* fragIndex = (fragMask & 0xF0) >> 4;
* fragOne += fragmentFetchAMD(is2DMSArray, ivec3(2, 3, 1), fragIndex);
*
* fragMask = fragmentMaskFetchAMD(usubpassMS);
* fragIndex = (fragMask & 0xF0) >> 4;
* fragOne += fragmentFetchAMD(usubpassMS, fragIndex);
*
* fragColor = fragOne;
* }
*
*
* - Name String
* - {@code VK_AMD_shader_fragment_mask}
* - Extension Type
* - Device extension
* - Registered Extension Number
* - 138
* - Revision
* - 1
* - Extension and Version Dependencies
*
* - Requires Vulkan 1.0
*
* - Contact
*
* - Aaron Hagan @ahagan
*
* - Last Modified Date
* - 2017-08-16
* - IP Status
* - No known IP claims.
* - Dependencies
*
* - Requires the SPV_AMD_fragment_mask SPIR-V extension.
*
* - Contributors
*
* - Aaron Hagan, AMD
* - Daniel Rakos, AMD
* - Timothy Lottes, AMD
*
*
*/
public final class AMDShaderFragmentMask {
/** The extension specification version. */
public static final int VK_AMD_SHADER_FRAGMENT_MASK_SPEC_VERSION = 1;
/** The extension name. */
public static final String VK_AMD_SHADER_FRAGMENT_MASK_EXTENSION_NAME = "VK_AMD_shader_fragment_mask";
private AMDShaderFragmentMask() {}
}