HOME.

Assim que partes do pipeline gráfico tornaram-se programáveis, foram desenvolvidas novas linguagens de programação específicas para a arquitetura do hardware gráfico, caracterizada por várias unidades de processamento, tida por muitos como o novo paradigma de processamento massivamente paralelo.
Essas primeiras linguagens são melhor designadas para programação de algoritmos que aumentam o realismo da cena final, e exigem que o programador tenha conhecimento de detalhes da arquitetura, bem como dos comandos OpenGL ou DirectX para disparo e controle do pipeline.

C for Graphics

Desenvolvida pela Nvidia em colaboração com a Microsoft, com o objetivo de possibilitar a programação dos processadores de vértice e de fragmento, sendo compatível com as APIs gráficas OpenGL e DirectX.
Permite o desenvolvimento de programas em uma linguagem pseudo-C, que são portáveis, pois o compilador gera um código assembler que é compilado para binário pelo ambiente de execução (CG runtime).
Contudo, esses programas executam apenas nos processadores de vértices e/ou fragmentos, sendo necessário uma aplicação suporte sobre uma das APIs gráficas para ativar e controlar o pipeline gráfico.

GLSL e HLSL

OpenGL Shading Language, também chamada de GLslang, foi criada pelo OpenGL ARM. Considerada uma extensão do OpenGL e otimizada para a API.
High Level Shading Language, criada pela Microsoft e otimizada para a API DirectX.
Ambas foram desenvolvidas com base na linguagem CG, mas levando em conta os interesses dos grupos que desenvolvem as APIs gráficas. E, como a própria CG, são voltadas ao desenvolvimento de algoritmos sobre a transformação de vértices e colorização de fragmentos, também sendo necessário o uso de programas hospedeiros na CPU. Apesar de poderem ser usadas com propósito genérico, são mais indicadas para programação de algoritmos gráficos.

Arquitetura CUDA

Desenvolvido pela Nvidia, o modelo de programação paralela CUDA foi projetado para facilitar a programação do hardware gráfico sendo, portanto, a melhor escolha para implementações genéricas.
As abstrações de programação providas pela linguagem baseiam-se em hierarquia de threads, memória compartilhada e barreiras de sincronização.
A grande vantagem de CUDA é ser independente de qualquer API gráfica e não obrigar o programador a manter um controle sobre o pipeline gráfico para que se dê o processamento nas unidades programáveis, ao contrário de outras linguagens voltadas para a arquitetura das GPUs. Contudo, assim como as outras linguagens, também precisa de um processo hospedeiro executando em CPU.


Last edited Jul 17, 2009 at 6:33 PM by Lenna, version 1

Comments

No comments yet.