Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Ao usar a iluminação do Direct3D, você permite que o Direct3D manipule os detalhes da iluminação para você. Os usuários avançados podem executar a iluminação por conta própria, se desejado.
Quando a iluminação é habilitada, o Direct3D calcula a cor de cada vértice de objeto com base em uma combinação do seguinte:
- Os texels em um mapa de textura associado.
- As cores difusas e especulares no vértice, se especificadas.
- A cor e a intensidade da luz produzida por fontes de luz na cena ou no nível de luz ambiente da cena.
Como você trabalha com iluminação e materiais faz uma grande diferença na aparência da cena renderizada. Os materiais definem como a luz reflete fora de uma superfície. Níveis diretos de luz e luz ambiente definem a luz refletida. Você deve usar materiais para renderizar uma cena se a iluminação estiver habilitada.
As luzes não são necessárias para renderizar uma cena, mas os detalhes em uma cena renderizada sem luz não são visíveis. Na melhor das hipóteses, renderizar uma cena não iluminada resulta em uma silhueta dos objetos na cena. Isso não é detalhe suficiente para a maioria das finalidades.
Luz direta versus luz ambiente
Embora a luz direta e ambiente ilumine objetos em uma cena, eles são independentes uns dos outros, eles têm efeitos muito diferentes e exigem que você trabalhe com eles de maneiras completamente diferentes.
A luz direta atinge o objeto diretamente. A luz direta sempre tem direção e cor, e é um fator para algoritmos de sombreamento, como o sombreamento Gouraud. Diferentes tipos de luzes emitem luz direta de diferentes maneiras, criando efeitos especiais de atenuação.
A luz ambiente está efetivamente em toda parte em uma cena. A luz ambiente é um nível geral de luz que preenche uma cena inteira, independentemente dos objetos e seus locais nessa cena. A luz ambiente não tem posição ou direção, apenas cor e intensidade. Cada luz aumenta a luz ambiente geral em uma cena.
A cor da luz ambiente assume a forma de um valor RGBA, em que cada componente é um valor inteiro de 0 a 255. Isso é diferente da maioria dos valores de cores no Direct3D.
Os componentes vermelho, verde e azul são combinados para tornar a cor final da luz ambiente. O componente alfa controla a transparência da cor. Ao usar a aceleração de hardware ou a emulação RGB, o componente alfa é ignorado.
modelo de luz Direct3D versus natureza
Na natureza, quando a luz é emitida de uma fonte, ela é refletida de centenas, se não milhares ou milhões de objetos antes de atingir o olho do usuário. Cada vez que ele é refletido, alguma luz é absorvida por uma superfície, algumas são dispersas em direções aleatórias, e o resto vai para outra superfície ou para o olho do usuário. Esse processo continua até que a luz seja reduzida a nada ou um usuário perceba a luz.
Obviamente, os cálculos necessários para simular perfeitamente o comportamento natural da luz são muito demorados para serem usados para gráficos Direct3D em tempo real. Portanto, com a velocidade em mente, o modelo de luz Direct3D aproxima-se da maneira como a luz funciona no mundo natural. O Direct3D descreve a luz em termos de componentes vermelhos, verdes e azuis que se combinam para criar uma cor final.
No Direct3D, quando a luz reflete em uma superfície, a cor da luz interage matematicamente com a própria superfície para criar a cor que eventualmente é exibida na tela. Para obter informações específicas sobre os algoritmos usados pelo Direct3D, consulte Matemática da iluminação.
O modelo de luz Direct3D generaliza a luz em dois tipos: luz ambiente e luz direta. Cada um tem atributos diferentes e cada um interage com o material de uma superfície de maneiras diferentes. A luz ambiente é uma luz que foi dispersa tanto que sua direção e origem são indeterminados: mantém um baixo nível de intensidade em todos os lugares. A iluminação indireta usada pelos fotógrafos é um bom exemplo de luz ambiente.
A luz ambiente no Direct3D, como na natureza, não tem direção ou origem real, apenas uma cor e intensidade. Na verdade, o nível de luz ambiente é completamente independente de qualquer objeto em uma cena que gere luz. A luz ambiente não contribui para a reflexão especular.
A luz direta é a luz gerada por uma fonte dentro de uma cena; ele sempre tem cor e intensidade e viaja em uma direção especificada. A luz direta interage com o material de uma superfície para criar realces especulares, e a direção da luz é usada como um fator em algoritmos de sombreamento, incluindo o sombreamento Gouraud. Quando a luz direta é refletida, ela não contribui para o nível de luz ambiente em uma cena. As fontes em uma cena que geram luz direta têm características diferentes que afetam a forma como iluminam uma cena.
Além disso, o material de um polígono tem propriedades que afetam como esse polígono reflete a luz recebida. Você define uma única característica de reflexão que descreve como o material reflete a luz ambiente e define características individuais para determinar a reflexão especular e difusa do material.
Valores de cor para luzes e materiais
O Direct3D descreve a cor em termos de quatro componentes (vermelho, verde, azul e alfa), que combinam para criar uma cor final. Cada componente varia de 0,0 a 1,0. Embora as luzes e os materiais usem a mesma estrutura para descrever a cor, os valores são usados de forma um pouco diferente por luzes versus materiais.
Valores de cor para fontes de luz representam a quantidade de um componente de luz específico que ele emite. Como as luzes não usam um componente alfa, somente os componentes vermelho, verde e azul da cor são relevantes. Você pode visualizar os três componentes como as lentes vermelha, verde e azul em uma televisão de projeção. Cada lente pode estar desativada (um valor de 0,0 no membro apropriado), pode ser o mais brilhante possível (um valor de 1,0) ou pode ser algum nível no meio.
As cores que vêm através das lentes combinam para formar a cor final da luz. Uma combinação como R(1.0), G(1.0), B(1.0) cria uma luz branca, em que R(0.0), G(0.0), B(0.0) não emite luz. Você pode criar uma luz que emite apenas um componente, resultando em uma luz vermelha, verde ou azul pura; ou, a luz pode usar combinações para emitir cores como amarelo ou roxo. Você pode até mesmo definir valores negativos para componentes de cor a fim de criar uma "luz escura" que efetivamente remove a luz de uma cena. Ou, você pode definir os componentes como algum valor maior que 1,0 para criar uma luz extremamente brilhante.
Com materiais, por outro lado, os valores de cor representam o quanto um componente de luz é refletido por uma superfície renderizada com esse material. Um material cujos componentes de cor são R(1.0), G(1.0), B(1.0), A(1.0) reflete toda a luz que vem em seu caminho. Da mesma forma, um material com R(0,0), G(1.0), B(0.0), A(1.0) reflete toda a luz verde direcionada a ele. Os materiais têm vários valores de reflexão para criar vários tipos de efeitos.
Consulte tipos de luz e propriedades da luz.
Tópicos relacionados