All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.lwjgl.vulkan.AMDShaderFragmentMask Maven / Gradle / Ivy

Go to download

A new generation graphics and compute API that provides high-efficiency, cross-platform access to modern GPUs used in a wide variety of devices from PCs and consoles to mobile phones and embedded platforms.

There is a newer version: 3.3.4
Show newest version
/*
 * 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
*
*
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() {} }




© 2015 - 2024 Weber Informatics LLC | Privacy Policy