Funzione Sample(S,float,int,float,uint) (riferimento HLSL)
Campiona un oggetto Texture2D con un valore facoltativo per bloccare i valori LOD (Sample Level of Detail) e restituisce lo stato dell'operazione.
Nota
Richiede il modello shader 5 o versione successiva.
Sintassi
DXGI_FORMAT Sample(
in SamplerState S,
in float Location,
in int Offset,
in float Clamp,
out uint Status
);
Parametri
-
S [in]
-
Stato sampler. Si tratta di un oggetto dichiarato in un file di effetto che contiene assegnazioni di stato.
-
Posizione [in]
-
Coordinate di trama. Il tipo di argomento dipende dal tipo di oggetto trama.
tipo Texture-Object Tipo di parametro Texture1D float Texture1DArray, Texture2D float2 Texture2DArray, Texture3D, TextureCube float3 TextureCubeArray float4 -
Offset [in]
-
Offset di coordinate di trama facoltativo, che può essere usato per qualsiasi tipo di oggetto trama; l'offset viene applicato alla posizione prima del campionamento. Gli offset di trama devono essere statici. Il tipo di argomento dipende dal tipo di oggetto trama. Per altre info, vedi Applicazione degli offset delle coordinate della trama.
tipo Texture-Object Tipo di parametro Texture1D, Texture1DArray INT Texture2D, Texture2DArray int2 Texture3D int3 TextureCube, TextureCubeArray non supportato -
Morsetto [in]
-
Valore facoltativo per bloccare i valori LOD campione. Ad esempio, se si passa 2,0f per il valore di blocco, assicurarsi che nessun singolo campione accesa a un livello mip inferiore a 2,0f.
-
Stato [out]
-
Stato dell'operazione. Non è possibile accedere direttamente allo stato; Passare invece lo stato alla funzione intrinseca CheckAccessFullyMapped . CheckAccessFullyMapped restituisce TRUE se tutti i valori dell'operazione Sample, Gather o Load hanno eseguito l'accesso a riquadri mappati in una risorsa affiancata. Se sono stati acquisiti valori da un riquadro non mappato, CheckAccessFullyMapped restituisce FALSE.
Valore restituito
Formato trama, che è uno dei valori tipizzati elencati in DXGI_FORMAT.
Commenti
Il campionamento delle trame usa la posizione del texel per cercare un valore di texel. È possibile applicare un offset alla posizione prima della ricerca. Lo stato del campionatore contiene le opzioni di campionamento e filtro. Questo metodo può essere richiamato all'interno di un pixel shader, ma non è supportato in un vertex shader o in uno shader geometry.
Usa un offset solo in corrispondenza di un miplevel intero; in caso contrario, è possibile ottenere risultati diversi a seconda dell'implementazione dell'hardware o delle impostazioni del driver.
Calcolo delle posizioni di Texel
Le coordinate delle trame sono valori a virgola mobile che fanno riferimento ai dati delle trame, noti anche come spazio di trama normalizzato. Le modalità di wrapping degli indirizzi vengono applicate in questo ordine (coordinate trama + offset + modalità di wrapping) per modificare le coordinate della trama all'esterno dell'intervallo [0...1].
Per le matrici di trame, un valore aggiuntivo nel parametro location specifica un indice in una matrice di trame. Questo indice viene considerato come un valore float scalato (anziché lo spazio normalizzato per le coordinate della trama standard). La conversione in un indice integer viene eseguita nell'ordine seguente (float + round-to-near-even integer + clamp nell'intervallo di matrici).
Applicazione degli offset delle coordinate della trama
Il parametro offset modifica le coordinate della trama, nello spazio texel. Anche se le coordinate della trama sono numeri a virgola mobile normalizzate, l'offset applica un offset integer. Si noti anche che gli offset delle trame devono essere statici.
Il formato dei dati restituito è determinato dal formato di trama. Ad esempio, se la risorsa trama è stata definita con il formato DXGI_FORMAT_A8B8G8R8_UNORM_SRGB, l'operazione di campionamento converte i texel campionati da gamma 2.0 a 1.0, filtra e scrive il risultato come valore a virgola mobile nell'intervallo [0..1].
Vedi anche