Sintaxis
Parámetros
NumSamplesPerPixel [in]Tipo: UINT SAL:
In
Especifica el número de muestras que se van a tomar por píxel. Este valor puede ser 1, 2, 4, 8 o 16; de lo contrario, la llamada a SetSamplePosition se descarta. El número de muestras debe coincidir con el recuento de muestras configurado en el PSO en el momento del dibujo; de lo contrario, el comportamiento es indefinido.
NumPixels [in]Tipo: UINT SAL:
In
Especifica el número de píxeles para los que se especifican patrones de muestra. Este valor puede ser 1 o 4; de lo contrario, la llamada a SetSamplePosition se descarta. Un valor de 1 configura un único patrón de muestra que se usará para cada píxel; un valor de 4 configura patrones de muestra independientes para cada píxel de una cuadrícula de píxeles de 2x2 que se repite por el espacio del destino de representación o de la ventanilla, alineada con coordenadas pares.
Tenga en cuenta que el número máximo de muestras combinadas no puede superar 16; de lo contrario, la llamada se descarta. Si NumPixels se establece en 4, NumSamplesPerPixel no puede especificar más de 4 muestras.
pSamplePositions [in]Tipo: D3D12_SAMPLE_POSITION * SAL:
In_reads(NumSamplesPerPixel*NumPixels)
Especifica una matriz de elementos D3D12_SAMPLE_POSITION. El tamaño de la matriz es NumPixels * NumSamplesPerPixel. Si NumPixels se establece en 4, el primer grupo de posiciones de muestra corresponde al píxel superior izquierdo de la cuadrícula de píxeles de 2x2; el siguiente grupo de posiciones de muestra corresponde al píxel superior derecho, el siguiente grupo al píxel inferior izquierdo y el último grupo al píxel inferior derecho.
Si se usa la interpolación de centroide durante la representación, el orden de las posiciones de cada píxel determina la prioridad de muestreo de centroide. Es decir, la primera muestra cubierta en el orden especificado se elige como la ubicación de muestra del centroide.
Valor devuelto
Tipo: void Ninguno.Comentarios
La semántica operativa de las posiciones de muestra viene determinada por las distintas operaciones de dibujo, copia, resolución y de otro tipo que pueden producirse. CommandList: en ausencia de llamadas previas a SetSamplePositions en una CommandList, las muestras adoptan la posición predeterminada en función del objeto de estado de canalización (PSO). Las posiciones predeterminadas se determinan mediante la parte SAMPLE_DESC del PSO si está presente, o mediante las posiciones de muestra estándar si la parte RASTERIZER_DESC del PSO tiene ForcedSampleCount establecido en un valor mayor que 0. Después de llamar a SetSamplePosition, las llamadas de dibujo posteriores deben usar un PSO que especifique un recuento de muestras coincidente, ya sea mediante la parte SAMPLE_DESC del PSO o mediante ForcedSampleCount en la parte RASTERIZER_DESC del PSO. SetSamplePositions solo se puede llamar en una CommandList de gráficos. No se puede llamar en un lote (bundle); los lotes heredan el estado de posición de muestra de la CommandList que realiza la llamada y no lo modifican. Llamar a SetSamplePositions(0, 0, NULL) revierte las posiciones de muestra a sus valores predeterminados. Clear RenderTarget: las posiciones de muestra se omiten al borrar un destino de representación. Clear DepthStencil: al borrar la parte de profundidad de una superficie de galería de símbolos de profundidad o cualquier región de esta, las posiciones de muestra deben establecerse de modo que coincidan con las de la representación futura en la superficie o región borrada; el contenido de cualquier región sin borrar generada con posiciones de muestra diferentes pasa a ser indefinido. Al borrar la parte de galería de símbolos de una superficie de galería de símbolos de profundidad o cualquier región de esta, las posiciones de muestra se omiten. Draw to RenderTarget: al dibujar en un destino de representación, las posiciones de muestra se pueden cambiar para cada llamada de dibujo, incluso al dibujar en una región que se superpone a llamadas de dibujo anteriores. Las posiciones de muestra actuales determinan la semántica operativa de cada llamada de dibujo, y las muestras se toman del contenido almacenado del destino de representación, incluso si el contenido se generó con posiciones de muestra diferentes. Draw using DepthStencil: al dibujar en una superficie de galería de símbolos de profundidad (lectura o escritura) o cualquier región de esta, las posiciones de muestra deben establecerse de modo que coincidan con las usadas para borrar previamente la región afectada. Para usar una posición de muestra diferente, primero debe borrarse la región de destino. Los píxeles fuera de la región de borrado no se ven afectados. El hardware puede almacenar la parte de profundidad de una superficie de galería de símbolos de profundidad como ecuaciones de plano y evaluarlas para generar valores de profundidad cuando la aplicación emite una lectura. Solo el rasterizador y el mezclador de salida deben admitir posiciones de muestra programables de la parte de profundidad de una superficie de galería de símbolos de profundidad. Cualquier otra lectura o escritura de la parte de profundidad que se haya representado con posiciones de muestra establecidas puede omitirlas y, en su lugar, muestrear en las posiciones estándar. Resolve RenderTarget: al resolver un destino de representación o cualquier región de este, las posiciones de muestra se omiten; estas API solo operan sobre valores de color almacenados. Resolve DepthStencil: al resolver la parte de profundidad de una superficie de galería de símbolos de profundidad o cualquier región de esta, las posiciones de muestra deben establecerse de modo que coincidan con las de la representación anterior en la superficie o región resuelta. Para usar una posición de muestra diferente, primero debe borrarse la región de destino. Al resolver la parte de galería de símbolos de una superficie de galería de símbolos de profundidad o cualquier región de esta, las posiciones de muestra se omiten; las resoluciones de galería de símbolos solo operan sobre valores de galería de símbolos almacenados. Copy RenderTarget: al copiar desde un destino de representación, las posiciones de muestra se omiten, independientemente de si se trata de una copia total o parcial. Copy DepthStencil (Full Subresource): al copiar un subrecurso completo desde una superficie de galería de símbolos de profundidad, las posiciones de muestra deben establecerse de modo que coincidan con las posiciones de muestra usadas para generar la superficie de origen. Para usar una posición de muestra diferente, primero debe borrarse la región de destino. En algunos tipos de hardware, las propiedades de la superficie de origen (como las ecuaciones de plano almacenadas para los valores de profundidad) se transfieren al destino. Por lo tanto, si posteriormente se dibuja en la superficie de destino, las posiciones de muestra usadas originalmente para generar el contenido de origen deben usarse con la superficie de destino. La API exige esto en todo el hardware por coherencia, aunque puede que solo se aplique a una parte. Copy DepthStencil (Partial Subresource): al copiar un subrecurso parcial desde una superficie de galería de símbolos de profundidad, las posiciones de muestra deben establecerse de modo que coincidan con las posiciones de muestra usadas para generar la superficie de origen, de forma similar a la copia de un subrecurso completo. Sin embargo, si el contenido de los subrecursos de destino afectados solo está parcialmente cubierto por la copia, el contenido de la parte no cubierta dentro de esos subrecursos pasa a ser indefinido, a menos que todo él se haya generado con las mismas posiciones de muestra que el origen de la copia. Para usar una posición de muestra diferente, primero debe borrarse la región de destino. Al copiar un subrecurso parcial desde la parte de galería de símbolos de una superficie de galería de símbolos de profundidad, las posiciones de muestra se omiten. No importa qué posiciones de muestra se usaron para generar el contenido de las demás áreas del búfer de destino no cubiertas por la copia: ese contenido sigue siendo válido. Shader SamplePos: la función intrínseca SamplePos de HLSL no tiene en cuenta las posiciones de muestra programables, y los resultados devueltos a los sombreadores que la llaman en una superficie representada con posiciones programables son indefinidos. Las aplicaciones deben pasar las coordenadas a su sombreador manualmente si es necesario. Del mismo modo, la evaluación de atributos por índice de muestra es indefinida con posiciones de muestra programables. Transición fuera del estado DEPTH_READ o DEPTH_WRITE: si un subrecurso en estado DEPTH_READ o DEPTH_WRITE pasa a cualquier otro estado, incluidos COPY_SOURCE o RESOLVE_SOURCE, es posible que algún hardware necesite descomprimir la superficie. Por lo tanto, las posiciones de muestra deben establecerse en la lista de comandos de modo que coincidan con las usadas para generar el contenido de la superficie de origen. Además, para cualquier transición posterior de la superficie mientras los mismos datos de profundidad permanezcan en ella, las posiciones de muestra deben seguir coincidiendo con las establecidas en la lista de comandos. Para usar una posición de muestra diferente, primero debe borrarse la región de destino. Si una aplicación quiere minimizar el área descomprimida cuando solo es necesario usar una parte, o simplemente conservar la compresión, se puede llamar a ResolveSubresourceRegion() en modo DECOMPRESS con un rectángulo especificado. Esto descomprimirá solo el área pertinente en un recurso independiente y dejará intacto el origen en algunos tipos de hardware, aunque en otros incluso el área de origen se descomprime. El recurso independiente descomprimido explícitamente puede pasarse después al estado deseado (como SHADER_RESOURCE). Transición fuera del estado RENDER_TARGET: si un subrecurso en estado RENDER_TARGET pasa a cualquier estado distinto de COPY_SOURCE o RESOLVE_SOURCE, es posible que algunas implementaciones necesiten descomprimir la superficie. Esta descompresión es independiente de las posiciones de muestra. Si una aplicación quiere minimizar el área descomprimida cuando solo es necesario usar una parte, o simplemente conservar la compresión, se puede llamar a ResolveSubresourceRegion() en modo DECOMPRESS con un rectángulo especificado. Esto descomprimirá solo el área pertinente en un recurso independiente y dejará intacto el origen en algunos tipos de hardware, aunque en otros incluso el área de origen se descomprime. El recurso independiente descomprimido explícitamente puede pasarse después al estado deseado (como SHADER_RESOURCE).Requisitos
Encabezado: d3d12_xs.h o d3d12_x.hBiblioteca: d3d12_xs.lib o d3d12_x.lib
Plataformas compatibles: consolas XBOX Series y familia XBOX One
