Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
Um efeito Microsoft DirectX permite a integração de sombreadores de vértice e pixel com o estado do pipeline para renderizar objetos. Os efeitos são a próxima etapa lógica na combinação de sombreadores para produzir condições de renderização exclusivas.
Os efeitos também fornecem uma maneira conveniente de escrever sombreadores para diferentes versões de hardware. Como diferentes placas de vídeo suportam diferentes funcionalidades, um aplicativo pode escrever várias técnicas que serão executadas em uma variedade de dispositivos. Desta forma, se o aplicativo estiver sendo executado no hardware mais recente e melhor, o aplicativo pode executar a técnica de efeito mais sofisticada. Por outro lado, técnicas de efeitos menos sofisticadas podem ser escolhidas automaticamente para serem executadas em hardware menos caro ou menos capaz.
Um efeito pode substituir o processamento de vértice e parte do processamento de pixel realizado pelo pipeline de gráficos. Um exemplo de um efeito que usa um sombreador de vértice e um sombreador de pixel está no BasicHLSL Sample. Você pode obter este exemplo e aprender sobre ele no SDK do DirectX. Para obter informações sobre o SDK do DirectX, consulte Onde está o SDK do DirectX?.
Para obter mais informações sobre efeitos, consulte estes tópicos:
Efeitos e o pipeline 3D
O diagrama a seguir mostra o pipeline.
O pipeline transforma dados de entrada em pixels de saída que preenchem o buffer de quadros. Os dados de entrada vêm de objetos que são compostos de vértices no espaço do objeto, ou superfícies de ordem superior criadas a partir de N-patches, patches de retângulo e patches de triângulo. Uma vez que os dados de entrada tenham sido testados, o pipeline executa o processamento de vértices, o processamento primitivo e o processamento de pixels antes de gerar as cores finais de pixel.
O processamento de vértice e pixel pode ser realizado pelo pipeline de função fixa ou pode ser implementado com sombreadores programáveis. A tesselação de dados de entrada, o processamento primitivo e as saídas de dados são controlados pelo estado do pipeline. Tudo isto pode ser integrado num efeito. Um efeito define o estado que controla como o pipeline funciona. Os efeitos gerenciam sombreadores programáveis, bem como o estado da função fixa.
Os efeitos podem salvar e restaurar o estado, deixando o dispositivo no mesmo estado de antes da execução do efeito. Os tipos de estado que um efeito pode gerenciar incluem:
- Estado de sombreamento. Isso inclui criar e excluir sombreadores, definir constantes de sombreador, definir o estado do sombreador e renderizar com sombreadores.
- Textura e estado do amostrador. Isso inclui especificar arquivos de textura, inicializar estágios de textura, criar objetos de amostrador e definir o estado do amostrador.
- Outro estado do gasoduto. Isso inclui estados para definir transformações, iluminação, materiais e opções de renderização. Estas podem ser variáveis globais ou locais. As variáveis podem ser definidas pelo próprio efeito ou pela aplicação.
Os efeitos contêm várias opções de renderização chamadas técnicas. Cada técnica encapsula variáveis globais, estado do pipeline, textura e estado do amostrador e estado do sombreador. Um único estilo é implementado em um passo de renderização. Um ou mais passes podem ser encapsulados em uma técnica. Todos os passes e técnicas podem ser validados para ver se o código de efeito será executado no dispositivo de hardware.
Efeitos Salvar e restaurar estado
Os efeitos gerenciam o estado. A palavra estado é usada de forma muito ampla aqui, pois inclui todos os tipos de informações que o pipeline precisa para especificar as condições de renderização. Isso inclui quase todas as áreas funcionais do gasoduto.
As opções de renderização são controladas por técnicas e passes. Um aplicativo renderiza um efeito definindo uma técnica ativa e renderizando uma ou mais passagens. Toda a renderização em um efeito é feita dentro de um par correspondente de chamadas Begin e End. Quando Begin é chamado, um stateblock é criado e o estado do dispositivo é salvo (a menos que você especifique o contrário). Depois que uma técnica processa os passos que o aplicativo especifica para renderizar, final é chamado para encerrar a técnica ativa. O sistema de efeitos responde restaurando automaticamente o estado do pipeline que foi capturado no bloco de estado (a menos que você opte por desativar essa funcionalidade de salvar e restaurar).
Ao programar sequências de renderização de várias passagens, cada uma das quais requer sua própria configuração de estado, os efeitos podem reduzir a limpeza necessária para acompanhar as alterações de estado. Para ver mais informações sobre os estados que podem ser salvos e restaurados pelos efeitos, consulte Estados de efeito (Direct3D 9).
Os efeitos podem compartilhar parâmetros
Os parâmetros de efeito são todas as variáveis não estáticas declaradas em um efeito. Isso pode incluir variáveis globais e anotações. Os parâmetros de efeito podem ser compartilhados entre diferentes efeitos declarando parâmetros com a palavra-chave compartilhada e, em seguida, criando o efeito com um pool de efeitos.
Os efeitos clonados usam o mesmo pool de efeitos do qual são clonados. A clonagem de um efeito faz uma cópia exata de um efeito, incluindo variáveis globais, técnicas, passes e anotações.
Tópicos relacionados
-
Guia de programação para Direct3D 9