Funções intrínsecas
A tabela a seguir lista as funções intrínsecas disponíveis no HLSL. Cada função tem uma breve descrição e um link para uma página de referência que tem mais detalhes sobre o argumento de entrada e o tipo de retorno.
Nome | Descrição | Modelo mínimo de sombreador |
---|---|---|
abort | Encerra a chamada de despacho ou sorteio atual que está sendo executada. | 4 |
abs | Valor absoluto (por componente). | 1¹ |
acos | Retorna o arco cosseno de cada componente de x. | 1¹ |
all | Testa se todos os componentes de x são diferentes de zero. | 1¹ |
AllMemoryBarrier | Bloqueia a execução de todos os threads em um grupo até que todos os acessos à memória sejam concluídos. | 5 |
AllMemoryBarrierWithGroupSync | Bloqueia a execução de todos os threads em um grupo até que todos os acessos à memória tenham sido concluídos e todos os threads no grupo tenham chegado a essa chamada. | 5 |
qualquer | Testa se algum componente de x é diferente de zero. | 1¹ |
asdouble | Reinterpreta um valor cast como um double. | 5 |
asfloat | Converta o tipo de entrada em um float. | 4 |
asin | Retorna o arco seno de cada componente de x. | 1¹ |
asint | Converte o tipo de entrada em um inteiro. | 4 |
asuint | Reinterpreta o padrão de bits de um tipo de 64 bits como um uint. | 5 |
asuint | Converte o tipo de entrada em um inteiro sem sinal. | 4 |
atan | Retorna o arco tangente de x. | 1¹ |
atan2 | Retorna o arco tangente de dois valores (x, y). | 1¹ |
ceil | Retorna o menor número inteiro que seja maior ou igual a x. | 1¹ |
CheckAccessFullyMapped | Determina se todos os valores de uma operação Sample ou Load acessaram blocos mapeados em um recurso em blocos. | 5 |
clamp | Fixa x no intervalo [min, max]. | 1¹ |
clip | Descarta o pixel atual, se qualquer componente de x é menor que zero. | 1¹ |
cos | Retorna o cosseno de x. | 1¹ |
cosh | Retorna o cosseno hiperbólico de x. | 1¹ |
countbits | Conta o número de bits (por componente) no inteiro de entrada. | 5 |
cross | Retorna o produto cruzado de dois vetores 3D. | 1¹ |
D3DCOLORtoUBYTE4 | Faz swizzle e dimensiona componentes do vetor 4D para compensar a falta de suporte UBYTE4 em alguns hardwares. | 1¹ |
ddx | Retorna a derivada parcial de x em relação à coordenada x do espaço da tela. | 2¹ |
ddx_coarse | Calcula uma derivada parcial de baixa precisão em relação à coordenada x do espaço da tela. | 5 |
ddx_fine | Calcula uma derivada parcial de alta precisão em relação à coordenada x do espaço da tela. | 5 |
ddy | Retorna a derivada parcial de x em relação à coordenada y do espaço da tela. | 2¹ |
ddy_coarse | Calcula uma derivada parcial de baixa precisão em relação à coordenada y do espaço da tela. | 5 |
ddy_fine | Calcula uma derivada parcial de alta precisão em relação à coordenada y do espaço da tela. | 5 |
degrees | Converte x de radianos em graus. | 1¹ |
determinant | Retorna o determinante da matriz quadrada m. | 1¹ |
DeviceMemoryBarrier | Bloqueia a execução de todos os threads em um grupo até que todos os acessos à memória do dispositivo sejam concluídos. | 5 |
DeviceMemoryBarrierWithGroupSync | Bloqueia a execução de todos os threads em um grupo até que todos os acessos à memória do dispositivo tenham sido concluídos e todos os threads no grupo tenham chegado a essa chamada. | 5 |
distance | Retorna a distância entre dois pontos. | 1¹ |
dot | Retorna o produto escalar de dois vetores. | 1 |
dst | Calcula um vetor de distância. | 5 |
errorf | Envia uma mensagem de erro para a fila de informações. | 4 |
EvaluateAttributeCentroid | Realiza uma avaliação no centroide de pixel. | 5 |
EvaluateAttributeAtSample | Realiza uma avaliação no local da amostra indexada. | 5 |
EvaluateAttributeSnapped | Realiza uma avaliação no centroide de pixel com um deslocamento. | 5 |
exp | Retorna o expoente de base "e". | 1¹ |
exp2 | Expoente de base 2 (por componente). | 1¹ |
f16tof32 | Converte o float16 armazenado na metade inferior do uint em um float. | 5 |
f32tof16 | Converte uma entrada em um tipo float16. | 5 |
faceforward | Retorna -n * sign(dot(i, ng)). | 1¹ |
firstbithigh | Obtém o local do primeiro bit do conjunto, começando do bit de ordem mais alta e prosseguindo para baixo, por componente. | 5 |
firstbitlow | Retorna o local do primeiro bit do conjunto, começando do bit de ordem mais baixa e prosseguindo para cima, por componente. | 5 |
floor | Retorna o maior inteiro, que é menor ou igual a x. | 1¹ |
fma | Retorna a adição de multiplicação fundida de precisão dupla de um * b + c. | 5 |
fmod | Retorna o resto do ponto flutuante de x/y. | 1¹ |
frac | Retorna a parte fracionária de x. | 1¹ |
frexp | Retorna a mantissa e o expoente de x. | 2¹ |
fwidth | Retorna abs(ddx(x)) + abs(ddy(x)) | 2¹ |
GetRenderTargetSampleCount | Retorna o número de amostras de destino de renderização. | 4 |
GetRenderTargetSamplePosition | Retorna uma posição de amostra (x,y) para um determinado índice de amostra. | 4 |
GroupMemoryBarrier | Bloqueia a execução de todos os threads em um grupo até que todos os acessos compartilhados do grupo sejam concluídos. | 5 |
GroupMemoryBarrierWithGroupSync | Bloqueia a execução de todos os threads em um grupo até que todos os acessos compartilhados do grupo tenham sido concluídos e todos os threads no grupo tenham chegado a essa chamada. | 5 |
InterlockedAdd | Executa uma adição atômica garantida de valor à variável de recurso dest. | 5 |
InterlockedAnd | Realiza um and atômico garantido. | 5 |
InterlockedCompareExchange | Compara atomicamente a entrada com o valor de comparação e troca o resultado. | 5 |
InterlockedCompareStore | Compara atomicamente a entrada ao valor de comparação. | 5 |
InterlockedExchange | Atribui um valor a dest e retorna o valor original. | 5 |
InterlockedMax | Realiza um max atômico garantido. | 5 |
InterlockedMin | Realiza um min atômico garantido. | 5 |
InterlockedOr | Realiza um or atômico garantido. | 5 |
InterlockedXor | Realiza um xor atômico garantido. | 5 |
isfinite | Retorna true se x é finito; caso contrário, retorna false. | 1¹ |
isinf | Retorna true se x é +INF ou -INF; caso contrário, retorna false. | 1¹ |
isnan | Retorna true se x é NAN ou QNAN; caso contrário, retorna false. | 1¹ |
ldexp | Retorna x * 2exp | 1¹ |
length | Retorna o comprimento do vetor v. | 1¹ |
lerp | Retorna x + s(y - x). | 1¹ |
lit | Retorna um vetor de iluminação (ambiente, difuso, especular, 1) | 1¹ |
log | Obtém o logaritmo de base "e" de x. | 1¹ |
log10 | Retorna o logaritmo de base 10 de x. | 1¹ |
log2 | Retorna o logaritmo de base 2 de x. | 1¹ |
mad | Executa uma operação de multiplicação/adição aritmética em três valores. | 5 |
max | Seleciona o maior entre x e y. | 1¹ |
min | Seleciona o menor entre x e y. | 1¹ |
modf | Divide o valor x em partes fracionárias e inteiras. | 1¹ |
msad4 | Compara um valor de referência de 4 bytes e um valor de origem de 8 bytes e acumula um vetor de 4 somas. | 5 |
mul | Realiza a multiplicação da matriz usando x e y. | 1 |
noise | Gera um valor aleatório usando o algoritmo de ruído de Perlin. | 1¹ |
normalize | Retorna um vetor normalizado. | 1¹ |
pow | Retorna xy. | 1¹ |
printf | Envia uma mensagem de sombreador personalizada para a fila de informações. | 4 |
Process2DQuadTessFactorsAvg | Gera os fatores de tesselação corrigidos para um patch quádruplo. | 5 |
Process2DQuadTessFactorsMax | Gera os fatores de tesselação corrigidos para um patch quádruplo. | 5 |
Process2DQuadTessFactorsMin | Gera os fatores de tesselação corrigidos para um patch quádruplo. | 5 |
ProcessIsolineTessFactors | Gera os fatores de tesselação arredondados para uma isolinhagem. | 5 |
ProcessQuadTessFactorsAvg | Gera os fatores de tesselação corrigidos para um patch quádruplo. | 5 |
ProcessQuadTessFactorsMax | Gera os fatores de tesselação corrigidos para um patch quádruplo. | 5 |
ProcessQuadTessFactorsMin | Gera os fatores de tesselação corrigidos para um patch quádruplo. | 5 |
ProcessTriTessFactorsAvg | Gera os fatores de tesselação corrigidos para um patch triplo. | 5 |
ProcessTriTessFactorsMax | Gera os fatores de tesselação corrigidos para um patch triplo. | 5 |
ProcessTriTessFactorsMin | Gera os fatores de tesselação corrigidos para um patch triplo. | 5 |
radians | Converte x de graus em radianos. | 1 |
rcp | Calcula uma recíproca rápida, aproximada, por componente. | 5 |
reflect | Retorna um vetor de reflexão. | 1 |
refract | Retorna o vetor de refração. | 1¹ |
reversebits | Inverte a ordem dos bits, por componente. | 5 |
round | Arredonda x para o número inteiro mais próximo | 1¹ |
rsqrt | Retorna 1/sqrt(x) | 1¹ |
saturate | Fixa x no intervalo [0, 1] | 1 |
sign | Calcula o sinal de x. | 1¹ |
sin | Retorna o seno de x | 1¹ |
sincos | Retorna o seno e cosseno de x. | 1¹ |
sinh | Retorna o seno hiperbólico de x | 1¹ |
smoothstep | Retorna uma interpolação de Hermite suave entre 0 e 1. | 1¹ |
sqrt | Raiz quadrada (por componente) | 1¹ |
step | Retorna (x >= a) ? 1 : 0 | 1¹ |
tan | Retorna a tangente de x | 1¹ |
tanh | Retorna a tangente hiperbólica de x | 1¹ |
tex1D(s, t) | Pesquisa de textura 1D. | 1 |
tex1D(s, t, ddx, ddy) | Pesquisa de textura 1D. | 2¹ |
tex1Dbias | Pesquisa de textura 1D com viés. | 2¹ |
tex1Dgrad | Pesquisa de textura 1D com um gradiente. | 2¹ |
tex1Dlod | Pesquisa de textura 1D com nível de detalhe. | 3¹ |
tex1Dproj | Pesquisa de textura 1D com divisão projetiva. | 2¹ |
tex2D(s, t) | Pesquisa de textura 2D. | 1¹ |
tex2D(s, t, ddx, ddy) | Pesquisa de textura 2D. | 2¹ |
tex2Dbias | Pesquisa de textura 2D com viés. | 2¹ |
tex2Dgrad | Pesquisa de textura 2D com um gradiente. | 2¹ |
tex2Dlod | Pesquisa de textura 2D com nível de detalhe. | 3 |
tex2Dproj | Pesquisa de textura 2D com divisão projetiva. | 2¹ |
tex3D(s, t) | Pesquisa de textura 3D. | 1¹ |
tex3D(s, t, ddx, ddy) | Pesquisa de textura 3D. | 2¹ |
tex3Dbias | Pesquisa de textura 3D com viés. | 2¹ |
tex3Dgrad | Pesquisa de textura 3D com um gradiente. | 2¹ |
tex3Dlod | Pesquisa de textura 3D com nível de detalhe. | 3¹ |
tex3Dproj | Pesquisa de textura 3D com divisão projetiva. | 2¹ |
texCUBE(s, t) | Pesquisa de textura de cubo. | 1¹ |
texCUBE(s, t, ddx, ddy) | Pesquisa de textura de cubo. | 2¹ |
texCUBEbias | Pesquisa de textura de cubo com viés. | 2¹ |
texCUBEgrad | Pesquisa de textura de cubo com um gradiente. | 2¹ |
texCUBElod | Pesquisa de textura de cubo com nível de detalhe. | 3¹ |
texCUBEproj | Pesquisa de textura de cubo com divisão projetiva. | 2¹ |
transpose | Retorna a transposição da matriz m. | 1 |
trunc | Trunca valores de ponto flutuante para valores inteiros | 1 |
¹ Consulte a página de referência para restrições.
Tipos de componente e de modelo
As declarações de função intrínseca HLSL usam tipos de componente e tipos de modelo para argumentos de parâmetro de entrada e valores de retorno. Essas propriedades disponíveis estão listadas na tabela a seguir.
Estes tipos de modelo | Descrição | Dão suporte a estes tipos de dados |
---|---|---|
matriz | até 16 componentes, dependendo da declaração | Tipos HLSL básicos |
objeto | objeto sampler | sampler, sampler1D, sampler2D, sampler3D, samplerCUBE |
escalar | 1 componente | Tipos HLSL básicos |
vector | Mínimo de 1 componente, máximo de 4 componentes (inclusive) | Tipos HLSL básicos |
Confira também