Partilhar via


O que há de novo no Direct3D 11 Tech Preview de novembro de 2008

Esta versão do Direct3D 11 contém novos recursos, ferramentas e documentação.

Número Descrição
Tesselação
O Direct3D 11 fornece estágios de pipeline adicionais para suportar de tesselação em tempo real de primitivos de alta ordem. Com recursos amplamente programáveis, esse recurso permite muitos métodos diferentes para avaliar superfícies de alta ordem, incluindo superfícies de subdivisão usando técnicas de aproximação, patches de Bezier, tesselação adaptativa e mapeamento de deslocamento. Este recurso só estará disponível em hardware de classe Direct3D 11, portanto, para avaliar esse recurso, você precisará usar o Rasterizer de referência. Para uma demonstração da tessellation em ação, confira o exemplo SubD11 disponível através do Navegador de Exemplos.
Sombreador de Computação
O Compute Shader é um estágio adicional independente do pipeline do Direct3D 11 que permite a computação de uso geral na GPU. Além de todas as funcionalidades de sombreador fornecidas pelo núcleo unificado do sombreador, o Compute Shader também oferece suporte a leituras e gravações dispersas em recursos por meio de Visualizações de Acesso Não Ordenado, um pool de memória compartilhada dentro de um grupo de threads em execução, primitivos de sincronização, operadores atômicos e muitos outros recursos avançados de paralelismo de dados. Uma variante do Direct3D 11 Compute Shader foi habilitada nesta versão que pode operar em hardware de classe Direct3D 10. Portanto, é possível desenvolver sombreadores de computação em hardware real, mas um driver atualizado é necessário. A funcionalidade completa do Direct3D 11 Compute Shader destina-se ao suporte de hardware de classe Direct3D 11, portanto, para avaliar a funcionalidade completa, você precisará usar o Rasterizer de Referência até que esse hardware esteja disponível. Para obter uma demonstração do Compute Shader em ação, confira o HDRToneMappingCS11 exemplo disponível através do Navegador de Exemplo.
Renderização Multithreaded
A principal diferença da API entre Direct3D 10 e Direct3D 11 é a inclusão de contextos adiados, que permite a execução escalável de comandos Direct3D distribuídos por vários núcleos. Um Contexto Diferido captura e monta ações, como alterações de estado e submissões de desenho, que podem ser executadas no dispositivo real posteriormente. Ao utilizar Contextos Diferidos em várias threads, uma aplicação pode distribuir a sobrecarga de CPU necessária no tempo de execução do Direct3D11 e no driver para vários núcleos, permitindo uma melhor utilização da configuração da máquina de um usuário final. Este recurso está disponível para uso no hardware Direct3D 10 atual, bem como no rasterizador de referência. Para obter uma demonstração do uso da API, confira o Exemplo de MultithreadedRendering11 disponível por meio do Navegador de Exemplo.
Ligação de sombreamento dinâmico
Para resolver o problema de explosão combinatória visto em sombreadores especializados para desempenho, o Direct3D 11 introduz uma forma limitada de tempo de execução de vinculação de sombreador que permite a especialização quase ideal do sombreador durante a execução de um aplicativo. Isso é conseguido especificando as implementações de funções específicas no código do sombreador quando o sombreador é atribuído ao pipeline, o que permite que o driver realize inline das instruções nativas do sombreador rapidamente, em vez de forçar o driver a recompilar a linguagem intermediária em instruções nativas com a nova configuração. O desenvolvimento de shaders é exposto através da introdução de classes e interfaces em HLSL. Para uma demonstração, confira o Dynamic Shader Linkage 11 exemplo disponível através do Navegador de exemplo.
Windows Advanced Rasterizer (WARP)
Disponível neste SDK através do Direct3D 11 e, eventualmente, também através do Direct3D 10.1, o WARP é um rasterizador de dimensionamento rápido e multi-core que é totalmente compatível com Direct3D 10.1. Utilizar esta tecnologia é tão simples como passar a bandeira D3D_DRIVER_TYPE_WARP na criação do seu dispositivo.
Direct3D 10 e Direct3D 11 em hardware Direct3D 9 (D3D10 Nível 9)
Disponível neste SDK através do Direct3D 11 e, eventualmente, também através do Direct3D 10.1, a API do Direct3D pode destinar-se à maioria do hardware Direct3D 9, bem como ao hardware Direct3D 10, Direct3D 10.1 e Direct3D 11. Isto é conseguido através do fornecimento do mecanismo de Nível de Funcionalidade, que agrupa o hardware em seis categorias dependendo da funcionalidade: 9_1, 9_2, 9_3, 10_0, 10_1 e 11_0. Uma placa só atende a um nível de funcionalidade se for totalmente compatível com esse nível, e cada nível é um superconjunto rigoroso dos abaixo dele. A funcionalidade é minimamente emulada para garantir que não sejam encontradas falhas de desempenho inesperadas. Assim, funcionalidades como os Geometry Shaders não estão disponíveis para alvos de nível Direct3D 9.
binários de tempo de execução
Todos os binários de tempo de execução fornecidos na visualização técnica do Direct3D 11 que estarão disponíveis no Windows 7 e no Windows Vista SP1 são instalados com o SDK e rotulados como componentes "Beta" (ou seja, D3D11_beta.DLL). Todos os componentes com marcação beta são bombardeados pelo tempo. Para criar projetos para avaliar esses novos componentes, você deve vincular a suas bibliotecas de importação equivalentes com rótulo beta (ou seja, D3D11_beta.lib). Se você tiver uma cópia PDC do Windows 7, os cabeçalhos, libs e pdbs fornecidos no SDK do Windows com a compilação são apropriados para desenvolvimento usando os componentes Direct3D 11 fornecidos no Windows 7. Reserve o uso dos cabeçalhos, libs e pdbs neste SDK para os componentes beta fornecidos aqui.
D3DX11
Atualmente, o D3DX11 suporta carregamento de textura, compilação de sombreador, carregamento de dados e funções de thread de trabalho para recursos do Direct3D 11. No futuro, este componente fornecerá mais das tecnologias disponíveis no D3DX10. A funcionalidade de compilação de sombreador também é fornecida diretamente por meio do componente Compilador Direct3D, descrito a seguir.
Compilador HLSL e Direct3D
O compilador HLSL tem vários novos recursos para suportar as novas tecnologias disponíveis no Direct3D 11. Isso inclui programação orientada a objetos por meio de interfaces e classes, uma sintaxe de indexação direta para cargas de recursos e a palavra-chave 'precisa' para garantir que todas as operações realizadas com uma variável específica sigam as rígidas regras de ponto flutuante. Quase todos os novos recursos linguísticos têm funcionalidade válida em destinos de sombreador existentes. Além de suportar todos os shaders Direct3D 9, Direct3D 10, Direct3D 10.1 e Direct3D 11, o compilador HLSL também suporta os alvos especiais necessários para desenvolver shaders para alvos Direct3D 10 Nível 9. O compilador D3D agora é diretamente acessível fora do D3DX10 e D3DX11 através do D3DCompiler.H e D3DCompiler.lib. Com esses novos arquivos, um aplicativo não precisa vincular ao D3DX para executar a compilação em tempo de execução, nem precisa incluir o compilador se apenas a funcionalidade D3DX for necessária.
Rasterizador de referência D3D11
O Reference Rasterizer fornece uma implementação de rasterização de padrão exemplar para avaliação dos recursos do Microsoft Direct3D 11 ainda não disponíveis no hardware. O Rasterizer de referência também é fornecido para verificar a precisão de uma implementação de hardware específica em relação à norma de rasterização. O rasterizador de referência é projetado para correção, não desempenho. Para criar um dispositivo de referência, basta passar o sinalizador D3D_DRIVER_TYPE_REFERENCE na criação do dispositivo.
Camadas do SDK D3D11
As camadas do SDK do Direct3D11 fornecem um mecanismo para controlar a operação do tempo de execução do Direct3D 11 durante o desenvolvimento. Atualmente, isso é usado para fornecer informações úteis de depuração, que não só incluem erros sobre uso indevido, mas também avisos que recomendam o uso de práticas recomendadas do tempo de execução e muitas vezes fornecem informações detalhadas e úteis para depuração. É altamente recomendável que a saída de depuração das camadas do SDK D3D11 seja ativada o tempo todo durante o desenvolvimento e um aplicativo não gere nenhuma saída de depuração durante a execução antes de ser lançado ou usado com o PIX para Windows para criação de perfil. Ativar a camada de depuração é tão simples quanto passar o sinalizador D3D11_CREATE_DEVICE_DEBUG no momento da criação do dispositivo. Os desenvolvedores são fortemente encorajados a usar camadas em compilações de depuração. As camadas não são recomendadas para uso em compilações de perfil ou versão.
Novas amostras
Esta versão tem quatro novas amostras.
  • O exemplo de Dynamic Shader Linkage 11 demonstra o uso de interfaces de sombreador Shader Model 5 e o suporte do Direct3D 11 para a ligação de métodos de interface de sombreador em tempo de execução.
  • O exemplo de HDRToneMappingCS11 demonstra como configurar e executar o Compute Shader (CS para abreviar mais tarde), que é um dos novos recursos mais interessantes do Direct3D 11. Embora o exemplo utilize apenas o CS para implementar o mapeamento de tons HDR, o conceito deve se estender facilmente a outros algoritmos de pós-processamento, bem como cálculos mais gerais.
  • O exemplo de MultithreadedRendering11 demonstra como dividir a renderização entre vários threads, com uma sobrecarga muito baixa.
  • O novo exemplo SubD11 é muito semelhante ao exemplo SubD10 no SDK do DirectX, exceto que foi aprimorado para aproveitar três novos estágios de pipeline do Direct3D 11: o hull shader (sombreado de casco), o tessellator e o domain shader (sombreado de domínio).

recursos introduzidos em versões anteriores