{-# language CPP #-} -- | = Name -- -- VK_NV_corner_sampled_image - device extension -- -- == VK_NV_corner_sampled_image -- -- [__Name String__] -- @VK_NV_corner_sampled_image@ -- -- [__Extension Type__] -- Device extension -- -- [__Registered Extension Number__] -- 51 -- -- [__Revision__] -- 2 -- -- [__Extension and Version Dependencies__] -- -- - Requires Vulkan 1.0 -- -- - Requires @VK_KHR_get_physical_device_properties2@ -- -- [__Contact__] -- -- - Daniel Koch -- > > -- -- == Other Extension Metadata -- -- [__Last Modified Date__] -- 2018-08-13 -- -- [__Contributors__] -- -- - Jeff Bolz, NVIDIA -- -- - Pat Brown, NVIDIA -- -- - Chris Lentini, NVIDIA -- -- == Description -- -- This extension adds support for a new image organization, which this -- extension refers to as “corner-sampled” images. A corner-sampled image -- differs from a conventional image in the following ways: -- -- - Texels are centered on integer coordinates. See -- -- -- - Normalized coordinates are scaled using coord × (dim - 1) rather -- than coord × dim, where dim is the size of one dimension of the -- image. See -- . -- -- - Partial derivatives are scaled using coord × (dim - 1) rather than -- coord × dim. See -- . -- -- - Calculation of the next higher lod size goes according to ⌈dim \/ 2⌉ -- rather than ⌊dim \/ 2⌋. See -- . -- -- - The minimum level size is 2x2 for 2D images and 2x2x2 for 3D images. -- See -- . -- -- This image organization is designed to facilitate a system like Ptex -- with separate textures for each face of a subdivision or polygon mesh. -- Placing sample locations at pixel corners allows applications to -- maintain continuity between adjacent patches by duplicating values along -- shared edges. Additionally, using the modified mipmapping logic along -- with texture dimensions of the form 2n+1 allows continuity across shared -- edges even if the adjacent patches use different level-of-detail values. -- -- == New Structures -- -- - Extending -- 'Vulkan.Core11.Promoted_From_VK_KHR_get_physical_device_properties2.PhysicalDeviceFeatures2', -- 'Vulkan.Core10.Device.DeviceCreateInfo': -- -- - 'PhysicalDeviceCornerSampledImageFeaturesNV' -- -- == New Enum Constants -- -- - 'NV_CORNER_SAMPLED_IMAGE_EXTENSION_NAME' -- -- - 'NV_CORNER_SAMPLED_IMAGE_SPEC_VERSION' -- -- - Extending -- 'Vulkan.Core10.Enums.ImageCreateFlagBits.ImageCreateFlagBits': -- -- - 'Vulkan.Core10.Enums.ImageCreateFlagBits.IMAGE_CREATE_CORNER_SAMPLED_BIT_NV' -- -- - Extending 'Vulkan.Core10.Enums.StructureType.StructureType': -- -- - 'Vulkan.Core10.Enums.StructureType.STRUCTURE_TYPE_PHYSICAL_DEVICE_CORNER_SAMPLED_IMAGE_FEATURES_NV' -- -- == Issues -- -- 1. What should this extension be named? -- -- __DISCUSSION__: While naming this extension, we chose the most -- distinctive aspect of the image organization and referred to such -- images as “corner-sampled images”. As a result, we decided to name -- the extension NV_corner_sampled_image. -- -- 2. Do we need a format feature flag so formats can advertise if they -- support corner-sampling? -- -- __DISCUSSION__: Currently NVIDIA supports this for all 2D and 3D -- formats, but not for cube maps or depth-stencil formats. A format -- feature might be useful if other vendors would only support this on -- some formats. -- -- 3. Do integer texel coordinates have a different range for -- corner-sampled images? -- -- __RESOLVED__: No, these are unchanged. -- -- 4. Do unnormalized sampler coordinates work with corner-sampled images? -- Are there any functional differences? -- -- __RESOLVED__: Yes. Unnormalized coordinates are treated as already -- scaled for corner-sample usage. -- -- 5. Should we have a diagram in the “Image Operations” chapter -- demonstrating different texel sampling locations? -- -- __UNRESOLVED__: Probaby, but later. -- -- == Version History -- -- - Revision 1, 2018-08-14 (Daniel Koch) -- -- - Internal revisions -- -- - Revision 2, 2018-08-14 (Daniel Koch) -- -- - ??? -- -- == See Also -- -- 'PhysicalDeviceCornerSampledImageFeaturesNV' -- -- == Document Notes -- -- For more information, see the -- -- -- This page is a generated document. Fixes and changes should be made to -- the generator scripts, not directly. module Vulkan.Extensions.VK_NV_corner_sampled_image (PhysicalDeviceCornerSampledImageFeaturesNV) where import Vulkan.CStruct (FromCStruct) import Vulkan.CStruct (ToCStruct) import Data.Kind (Type) data PhysicalDeviceCornerSampledImageFeaturesNV instance ToCStruct PhysicalDeviceCornerSampledImageFeaturesNV instance Show PhysicalDeviceCornerSampledImageFeaturesNV instance FromCStruct PhysicalDeviceCornerSampledImageFeaturesNV