Compartilhar via


Recursos do Direct3D 10.1

O Direct3D 10.1 amplia o conjunto de recursos do Direct3D 10.0 com os seguintes novos recursos:

  • Modos de combinação – modos de combinação independentes por destino de renderização usando a nova interface de estado de mistura (veja Interface ID3D10BlendState1). As operações de combinação de origem dupla são restritas para renderizar o slot de destino 0; você pode não gravar em outras saídas ou ter destinos de renderização associados a slots diferentes do slot 0.

  • Comportamento de eliminação – as faces de área zero são automaticamente eliminadas; isso afeta somente a renderização vetorial.

  • Regras de ponto flutuante – Usa as mesmas regras IEEE-754 para operações de ponto flutuante EXCETO nas operações de ponto flutuante de 32 bits que foram reforçadas para produzir um resultado dentro de 0,5 da unidade de menor precisão (0,5 ULP) do resultado de precisão infinita. Isso se aplica à adição, subtração e multiplicação. (precisão de 0,5 ULP para multiplicação, 1,0 ULP para recíproco).

  • Formatos – A precisão da combinação float16 aumentou para 0,5 ULP. A combinação também é necessária para os formatos UNORM16/SNORM16/SNORM8.

  • Suavização Multisample – O Multisampling foi aprimorado para generalizar a transparência baseada em cobertura e fazer com que o multisampling funcione de maneira mais eficaz com a renderização de várias passagens. Para conseguir isso, todas as semânticas do multisample são definidas como se o sombreador de pixels sempre fosse executado uma vez por amostra (frequência da amostra), computando uma cor separada por amostra. Se um sombreador de pixel não usar atributos por amostra, ele calculará o mesmo valor para cada amostra coberta em um pixel. Nesse caso, ele será equivalente ao hardware que executa o sombreador uma vez por pixel (frequência de pixel), replicando o resultado para todas as amostras cobertas. Naturalmente, a execução na frequência do pixel sempre produz os mesmos resultados que a execução do mesmo sombreador na frequência da amostra, quando os atributos passam pela amostragem em uma frequência de pixel. A estatística do pipeline PSInvocations é incrementada na frequência da amostra, a menos que o sombreador esteja em execução na frequência de pixel.

  • Largura de Banda do estágio do pipeline – foi aumentada a quantidade de dados que podem ser passados entre estágios do sombreador:

    Recurso Limites
    Registros entre estágios do sombreador 32 (32 bits x 4 componentes)
    Registros de entrada do sombreador de vértice 32
    Slots de entrada do Assembler de entrada 32

     

  • Regras de rasterização – as regras de rasterização foram alteradas para linhas; além disso, foram adicionadas novas funcionalidades.

    • MultisampleEnable afeta apenas a rasterização de linha (pontos e triângulos não são afetados) e é usada para escolher um algoritmo de desenho de linha. Isso significa que não há mais suporte para algumas rasterizações multisample do Direct3D 10.
    • Nova execução de sombreador de pixel de frequência de amostra com rasterização primitiva.
  • Recursos – CopyResource está habilitado em dois novos cenários:

    • As superfícies MSAA de cor e profundidade/estêncil agora podem ser usadas com o CopyResource como uma origem ou um destino
    • Conversão de formato durante a cópia entre determinados recursos tipados pré-estruturados de 32/64/128 bits e representações compactadas das mesmas larguras de bit.
  • Amostragem de Textura – as instruções sample_c e sample_c_lz são definidas para funcionar com Texture2DArrays e TextureCubeArrays, e usam o membro Location (o componente alfa) para especificar um índice de matriz.

  • Exibições – TextureCube e a nova TextureCubeArray (veja D3D10_TEXCUBE_ARRAY_SRV1) não são recursos reais, mas são novas exibições em um recurso Texture2DArray. Crie uma exibição de recurso com base em um recurso Texture2DArray com um novo sinalizador de uso (D3D10_RESOURCE_MISC_TEXTURECUBE), use a nova interface ID3D10ShaderResourceView1 para associar uma exibição de textura de cubo ao pipeline.

Os novos recursos exigem um tipo de dispositivo 10.1 (veja Interface ID3D10Device1) que pode ser criado chamando D3D10CreateDevice1 ou você pode criar o dispositivo e trocar a cadeia ao mesmo tempo chamando D3D10CreateDeviceAndSwapChain1.

No Windows Vista Service Pack 1, as DLLs do Direct3D 10.0 e Direct3D 10.1 existem lado a lado no sistema. Para acessar os recursos do 10.1, adote um dos seguintes procedimentos:

Acessar recursos do 10.1 no Vista Gold e no Vista Service Pack 1

Os desenvolvedores que desejam dar suporte ao Vista Gold e ao SP1 terão que considerar a falta das novas extensões de API do 10.1 no Vista Gold. A DXUT e a D3DX10 fornecerão funções de conveniência para criar o dispositivo apropriado, com base nas DLLs disponíveis no sistema e no hardware disponível (10.0 ou 10.1). O dispositivo 10.1 herda do dispositivo 10.0 e pode ser recuperado usando QueryInterface(). É recomendável que cada aplicativo acompanhe o tipo de dispositivo e mantenha um ponteiro para o dispositivo 10.1 (se disponível) para evitar chamadas frequentes do QueryInterface quando a funcionalidade do 10.1 for desejada. Da mesma forma, nos casos em que as exibições de recurso do 10.1 e os objetos de estado são associados pela classe personalizada de um aplicativo, é recomendável que o aplicativo detecte se o objeto é um tipo 10.0 ou 10.1 para evitar chamadas redundantes do QueryInterface(). O D3DX10 inclui um conjunto de funções utilitárias para simplificar esse processo (veja D3DX10CreateDevice e D3DX10CreateDeviceAndSwapChain).

Acessando recursos do 10.1 exclusivamente no Vista Service Pack 1

Alguns desenvolvedores podem optar por exigir o Vista Service Pack 1, que será distribuído amplamente para usuários finais e inclui uma série de aprimoramentos fora do Direct3D 10.1. Esses desenvolvedores podem usar exclusivamente os cabeçalhos e bibliotecas do Direct3D 10.1, adotando uma dependência nas DLLs do Direct3D 10.1 que dão suporte a hardware 10.0 e 10.1 (algumas chamadas poderão falhar, no entanto, em dispositivos 10.0 em que a nova funcionalidade não tenha suporte).

Mais algumas observações:

  • As APIs expostas no D3DX10.dll aceitarão dispositivos 10.0 e 10.1 e utilizarão a funcionalidade do 10.1 quando disponível.
  • O D3D10SDKLayers.dll dá suporte a um dispositivo 10.1 e pode gerar a depuração apropriada para recursos do 10.1.
  • O D3D10Ref.dll implementa dispositivos de software 10.0 e 10.1.
  • O D3DX10 e FXC dão suporte ao modelo de sombreador do 10.1 atualizado com os seguintes destinos:vs_4_1, gs_4_1, ps_4_1 e fx_4_1 que podem ser associados a um dispositivo 10.1. Um dispositivo 10.1 dá suporte aos sombreadores do modelo de sombreador 4.0 e 4.1.
  • A estrutura de efeitos do Direct3D 10.0 dá suporte a dispositivos 10.0 e 10.1, no entanto, qualquer técnica que inclua sombreadores do modelo 4.1 ou os novos recursos do 10.1, deve usar um dispositivo 10.1.

Guia de programação para Direct3D 10