| // Copyright (c) 2018-2020 NVIDIA Corporation |
| // |
| // SPDX-License-Identifier: CC-BY-4.0 |
| |
| include::{generated}/meta/{refprefix}VK_NV_corner_sampled_image.txt[] |
| |
| === 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 <<textures-unnormalized-to-integer, Unnormalized Texel Coordinate |
| Operations>> |
| * Normalized coordinates are scaled using [eq]#coord {times} (dim - 1)# |
| rather than [eq]#coord {times} dim#, where dim is the size of one |
| dimension of the image. |
| See <<textures-normalized-to-unnormalized, normalized texel coordinate |
| transform>>. |
| * Partial derivatives are scaled using [eq]#coord {times} (dim - 1)# |
| rather than [eq]#coord {times} dim#. |
| See <<textures-scale-factor,Scale Factor Operation>>. |
| * Calculation of the next higher lod size goes according to |
| [eq]#{lceil}dim / 2{rceil}# rather than [eq]#{lfloor}dim / 2{rfloor}#. |
| See <<resources-image-miplevel-sizing,Image Miplevel Sizing>>. |
| * The minimum level size is 2x2 for 2D images and 2x2x2 for 3D images. |
| See <<resources-image-miplevel-sizing,Image Miplevel Sizing>>. |
| |
| 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 [eq]#2^n^+1# allows continuity across shared edges |
| even if the adjacent patches use different level-of-detail values. |
| |
| include::{generated}/interfaces/VK_NV_corner_sampled_image.txt[] |
| |
| === Issues |
| |
| . 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. |
| -- |
| |
| . 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. |
| -- |
| |
| . Do integer texel coordinates have a different range for corner-sampled images? |
| + |
| -- |
| *RESOLVED*: No, these are unchanged. |
| -- |
| |
| . 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. |
| -- |
| |
| . 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) |
| - ??? |