PT1376472E - Sistemas e métodos para efectuar uma amostragem controlável de textura - Google Patents

Sistemas e métodos para efectuar uma amostragem controlável de textura Download PDF

Info

Publication number
PT1376472E
PT1376472E PT03007903T PT03007903T PT1376472E PT 1376472 E PT1376472 E PT 1376472E PT 03007903 T PT03007903 T PT 03007903T PT 03007903 T PT03007903 T PT 03007903T PT 1376472 E PT1376472 E PT 1376472E
Authority
PT
Portugal
Prior art keywords
sampling
effect
texture
parameter
specifying
Prior art date
Application number
PT03007903T
Other languages
English (en)
Inventor
Charles N Boyd
Michael A Toelle
Original Assignee
Microsoft Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Microsoft Corp filed Critical Microsoft Corp
Publication of PT1376472E publication Critical patent/PT1376472E/pt

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/04Texture mapping

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Graphics (AREA)
  • Image Generation (AREA)
  • Sampling And Sample Adjustment (AREA)
  • Measuring Or Testing Involving Enzymes Or Micro-Organisms (AREA)
  • Facsimile Image Signal Circuits (AREA)

Description

DESCRIÇÃO
"SISTEMAS E MÉTODOS PARA EFECTUAR UMA AMOSTRAGEM CONTROLÁVEL DE TEXTURA"
CAMPO DA INVENÇÃO A presente invenção refere-se a sistemas e métodos para efectuar uma amostragem de textura em ligação com gráficos de computador. Mais particularmente, a presente invenção refere-se a sistemas e métodos para efectuar uma amostragem controlável de textura.
ANTECEDENTES DA INVENÇÃO 0 mapeamento de textura permite que um sinal colorido, ou texturado, seja representado em termos geométricos dando a aparência do detalhe em grosseiras malhas de triângulos. A utilização de texturas é, de um modo geral, mais eficiente que refinar a geometria da portadora para representar o sinal por vértices. Enquanto, durante muitos anos, o hardware de pixelização tem suportado um mapeamento de textura básico, começou recentemente a oferecer caracteristicas mais poderosas.
Uma vista geral do processo de mapeamento de textura é mostrado na Fig. 1. No mapa 200 de textura dado, tendo elementos 202 de textura, o mapeamento de textura aplica o sinal do mapa 200 de textura a triângulos 210 de uma malha de acordo com 1 alguma configuração geométrica do triângulo, e/ou aplica alguma transformação adicional, tal como sombreamento, iluminação, etc., a qual faz corresponder elementos 202 de textura a elementos 222 de imagem. O mapeamento de textura é um problema que implica a teoria de Nyquist, até ao ponto em que se deve evitar o efeito de escada, que afirma que, para reproduzir com precisão, uma forma de onda analógica, o sinal analógico deve ser amostrado a uma velocidade de, pelo menos, duas vezes a sua frequência mais elevada, de modo a ser capaz de representar o sinal no dominio digital com um elevado nivel de precisão. Então, são utilizadas técnicas de conversão digital-a-analógico para, de um modo preciso, reconstruir o sinal analógico original. Se for utilizada uma taxa de amostragem insuficiente, o resultado é o efeito de escada, que é informação de alta-frequência amostrada de um modo incorrecto, que aparece como ruído de baixa frequência.
Também surgem questões de amostragem em ligação com o mapeamento de textura. O processo de mapeamento de textura efectua a amostragem de mapas de textura para elementos de imagem de ecrã, e os dados do mapa de textura devem ser amostrados, tanto quanto possível, a uma taxa de amostragem suficientemente alta para incluir a informação de frequência mais elevada. A este respeito, de um modo típico, objectos de ecrã representados por um certo número de elementos de imagem (pixéis) utilizam mapas de textura com um número diferente de elementos de textura (texels) . Quando os mapas de textura têm mais texels que espaço de pixel, a um único pixel pode corresponder mais do que um texel e quando os mapas de textura têm menos texels que espaço de pixel, múltiplos pixéis podem 2 corresponder a um único texel. Quando não existe um mapeamento exacto entre o espaço de textura e o espaço de imagem, podem surgir questões de qualidade de visualização.
De facto, o mapa de textura tanto pode não ser capaz, para de um modo eficiente, fazer corresponder o detalhe de imagem apropriado à área de pixel designada, ou, pelo contrário, uma área de pixel mais pequena pode não ser capaz de utilizar todos os detalhes de textura de um mapa de textura maior/mais rico.
De um modo específico, no caso em que um mapa de textura é demasiado pequeno comparado com a área de pixel a ser mapeada, então o mesmo texel é mapeado para pixéis adjacentes, o que causa um efeito granulado quando se visualiza a imagem. Noutro caso, se múltiplos texels correspondem ao mesmo pixel, é muitas vezes difícil de saber qual o texel exacto, do grupo de texels que podem corresponder ao pixel dado a ser seleccionado do mapa de textura e aplicado ao pixel. É, deste modo, um processo dependente de algoritmo e pode resultar em perturbações conhecidas como efeito de vaga e aparecimento súbito de pixéis, sendo ambas bem notadas quando a câmara se desloca. Além disto, mesmo se existir um número substancialmente similar ou igual de pixéis e texels para mapeamento entre si, pode haver alguma transformação, ou função, aplicada aos texels antes da renderização, caso em que, algum algoritmo deve ainda decidir de onde os dados de pixel devem vir em relação aos dados de texel.
Para efeitos de ilustração do(s) problema(s) que pode(m) surgir, o caso com um número de texels maior que o número de pixéis pode ser considerado como se segue. Assuma-se que há uma superfície de painel quadrada numa cena (3—D) tridimensional compreendendo dois triângulos equiláteros, em que o quadrado tem 3 100x100 pixéis. Se se aplicar um mapa de textura compreendendo 200 riscas horizontais vermelhas e azuis na parte superior da área quadrada de 100x100 pixéis, podem não ser discernidas todas as 200 riscas de textura uma vez aplicadas ao painel, porque a textura tem mais amostras que a área de pixéis à qual será aplicada. Alguns dos dados de texturas intermédios não poderão ser utilizados no mapeamento, e serão, essencialmente, ignorados. À medida que o ponto de vista 3-D de alguém é deslocado sobre o painel, por exemplo, se se navega num jogo, surge um fenómeno chamado aparecimento súbito de pixéis, o qual é um resultado das riscas de textura surgirem alinhadas e desalinhadas em relação aos pixéis do painel. Isto é um caso de uma taxa de amostragem de textura insuficiente para descrever os detalhes da cena. Isto é uma ilustração de um tipo de perturbação que também pode resultar, como, também, podem resultar outros tipos de perturbações, de uma amostragem de textura pobre.
Existem várias abordagens para minimizar a renderização de perturbações causadas por uma taxa de amostragem de textura insuficiente, a maior parte na forma de filtragem e reamostragem. Os dois métodos de filtragem utilizados nos métodos de texturizaçâo simples, como amostragem por pontos, são a Ampliação e Redução, os quais alteram os métodos de amostragem de textura para ajudar a evitar os problemas descritos acima. O algoritmo de redução é utilizado no caso em que múltiplos texels podem corresponder a um único pixel, e selecciona o texel que melhor se adapta do grupo de texels que podem corresponder ao pixel. A técnica de ampliação é utilizada quando múltiplos 4 pixéis podem corresponder a um único texel, e faz corresponder um único texel a múltiplos pixéis. Existem muitos métodos, variando em velocidade e qualidade, para aplicar texturas, incluindo amostragem por pontos, filtragem bilinear, mapeamento MIP trilinear, filtragem anisotrópica e anti-efeito de escada. A maneira mais básica de aplicar texturas a uma superfície é a amostragem por pontos, a qual utiliza um método de amostragem por "vizinho mais próximo". Quando o renderizador de imagem localiza uma parte de textura, capta a amostra de textura do mapa de textura que tem as coordenadas (u, v) que correspondem às coordenadas do pixel (o centro do pixel) mais próximo, e aplica-a ao pixel. Esta abordagem é ilustrada na Fig. 2A, em que a posição relevante do mapeamento do espaço de pixéis para o espaço de texels está localizada na posição Pl. Aqui, uma vez que o texel mais próximo é Tl, TI é seleccionado. Embora esta abordagem requeira a menor quantidade de largura de banda de memória em termos do número de texels a ler da memória de textura, i. e., um por pixel, o resultado causa, muitas vezes, perturbações como as discutidas acima, devido a amostras insuficientes, i. e., pixéis de ecrã, para descrever a textura. Mas, mesmo a primeira geração hardware 3-D de computador pessoal (PC) tinha uma característica para ajudar a limpar, ou, pelo menos, esconder estes problemas de amostragem até um certo ponto, nomeadamente, pela utilização de filtragem bilinear.
Em vez de apenas apanhar o vizinho mais próximo numa textura, a filtragem bilinear, em vez disso, lê as quatro amostras mais próximas do centro do pixel, e utiliza uma média ponderada desses valores de cor como o valor final de cor de textura. Assim, como ilustrado na Fig. 2B, é realizada uma média ponderada de Tl, T2, T3 e T4, em que os pesos são baseados na 5 distância do centro do pixel aos quatro centros de texel. Equações exemplificativas de filtragem bilinear, para especialistas na técnica de processamento gráfico, são as seguintes:
Ca = Pij · α + (Pij+i) · (l-oía) cb = Pi+i j · α + (pi+1 j+i) · (l-aa) F = lrp (ca, cb) · ab onde lrp é uma função de interpolação linear facilmente conhecida pelas unidades de processamento gráfico (GPUs) actuais. 0 efeito visual liquido é o de manchar uma boa parte das perturbações de textura visualizadas com amostragem por pontos, mas, porque é apenas um filtro de quatro ligações trabalhando com um único mapa de textura, a eficácia da filtragem bilinear é limitada.
Outra abordagem para melhorar a qualidade da textura de imagem é uma técnica conhecida como mapeamento MIP, onde o renderizador faz múltiplas cópias da textura original, e cada mapa MIP sucessivo é, exactamente, metade da resolução do anterior. Isto torna-se, efectivamente, uma espécie de textura 3-D, em que estão presentes as duas coordenadas padrão, (u, v), mas existe, também, uma terceira coordenada, d, utilizada para medir qual(is) o(s) mapa(s) MIP a seleccionar com base no mapa de resolução que melhor coincide com a área de pixel a ser mapeada. No caso em que um avião de combate está perto da câmara de visualização, deve ser seleccionado um mapa de textura muito detalhado, mas à medida que o avião se afasta, deverão ser utilizados, sucessivamente, mapas mais pequenos e menos detalhados. 6 À medida que a coordenada d aumenta, são utilizados mapas MIP cada vez mais pequenos. A derivação da coordenada d tende a ser complicada e dependente de implementação, mas, em geral, tem a ver com descobrir quanta ampliação ou redução de textura deverá resultar de uma selecção particular de mapa MIP com base na área de pixel a ser abrangida. 0 mapa MIP com a menor quantidade de ampliação e redução de textura é, deste modo, seleccionado por este meio. Como ilustrado na Fig. 2C, o problema do mapeamento MIP é, assim, o de seleccionar qual a textura 200a, 200b, 200c, etc., a utilizar para representar o número de pixéis na melhor renderização de pixel 220.
Existem umas poucas formas diferentes das aplicações poderem utilizar mapas MIP, e estas são frequentemente dependentes do suporte do hardware gráfico. Em alguns casos, uma aplicação pode optar, (A) por seleccionar um único mapa que melhor corresponda à área de pixel a ser mapeada, (B) por aplicar filtragem bilinear aos texels nesse mapa, e, então, (C) por aplicar os resultantes texels cuja média foi calculada aos seus pixels correspondentes. Contudo, podem ocorrer problemas visuais com o mapeamento MIP bilinear nos limites do mapa quando existe um deslocamento através da cena. Por exemplo, quando num jogo, o jogador conduz por uma estrada, podem ver-se quebras visíveis na textura da estrada. Isto é provavelmente devido a uma comutação de mapas MIP.
Um método de mapeamento MIP, de qualidade superior, frequentemente utilizado, é o chamado mapeamento MIP trilinear, que ajuda a reduzir o problema dos limites do mapa MIP discutido acima. Este método de filtragem pega em duas amostras bilineares, utilizando cada quatro amostras de texel, dos dois mapas MIP mais próximos do pixel, em que um mapa de textura pode 7 ter uma resolução um pouco maior e o outro ter uma resolução um pouco menor que a área de pixel a ser mapeada. Então, o algoritmo trilinear utiliza uma média ponderada para combinar os dois texels filtrados bilinearmente num pixel texturado resultante, em que o mapa, cuja resolução é mais próxima da área de pixel recebe mais peso.
Mesmo o mapeamento MIP trilinear sofre de alguns constrangimentos, contudo, a maior parte refere-se à tendência do nivel de detalhe (LOD) . Diz-se que cada mapa MIP tem um LOD associado, e a tendência tem a ver com o factor de ponderação da média entre as duas amostras filtradas bilinearmente tiradas de dois mapas diferentes. Se o valor de tendência do LOD for demasiado "elevado", ponderando a média na direcção de um mapa de resolução mais pequeno, pode ocorrer uma textura manchada. Se o valor de tendência do LOD for demasiado "baixo", ponderando a média na direcção de um maior mapa MIP, pode ocorrer um efeito de escada e um efeito de escada temporal, tal como tremor/arrastamento da textura. Deste modo a tendência do LOD altera o valor d, dando origem à utilização de mapas maiores ou menores, apesar do valor d ser ainda pré-configurado na altura do desenvolvimento. 0 principal problema com estas técnicas é a natureza isotrópica da filtragem bilinear ou trilinear. A ampliação/redução ao longo de um eixo na textura pode ser significativamente diferente da ampliação/redução ao longo de outro eixo, o que pode resultar em efeito de escada ao longo de um eixo e mancha no outro.
Existe uma outra técnica de filtragem, chamada filtragem anisotrópica, que tenta resolver a natureza isotrópica da filtragem linear e trilinear. Uma forma de filtragem anisotrópica utiliza amostragem de mapas MIP, mas em vez de tratar oito amostras, trata até 16. Na utilização de filtragem anisotrópica, especifica-se para o renderizador qual é o grau de anisotropia, que é um rácio de até onde uma textura pode ser esticada antes da qualidade de imagem se começar a degradar.
Noutra forma de filtragem anisotrópica, a filtragem bilinear é executada múltiplas vezes ao longo de algum ângulo. Isto pode ser útil quando "a existência de riscas" é um produto derivado da renderização dos pixéis, e. g., como é o caso, num jogo de video, da estrada que "passa" pelos carros numa corrida de carros.
Quando o polígono texturado forma um ângulo oblíquo com o plano do ecrã, a superfície correspondente a um pixel de ecrã mapeado na textura torna-se alongada, i. e., deixa de ser quadrada. Métodos mais sofisticados, utilizam a colecção de texels de formato irregular nesta superfície e combina-os, em conjunto, para produzir o resultado final. É um problema muito difícil, calcular o formato correcto a utilizar para esta superfície de amostragem, e que comprimento deve ter. Quaisquer algoritmos, conhecidos actualmente, para fazer isto, baseiam os seus cálculos apenas na geometria relativa do pixel de ecrã versus alinhamento de texels do polígono, e nenhum providência flexibilidade que permita a um investigador, de um modo previsível/inteligente, controlar o processo.
Esta forma de filtragem anisotrópica, a qual multiplica execuções de filtragem bilinear, é ilustrada na Fig. 2D, para um ponto Pia, a ser filtrado anisotrópicamente ao longo de um ângulo Θ, definido pela relação Δν/Au, e um tamanho de passo s entre os pontos Pia, Plb, Plc, etc., definido pela magnitude de Δν e Au, de acordo com alguns aspectos geométricos prefixados do 9 triângulo a ser renderizado. Uma forma elíptica ao longo do ângulo Θ define o posicionamento de Plb e Plc. Então, é executada a filtragem bilinear para cada um de entre Pia, Plb e Plc, o que, para este exemplo, de uma forma ponderada, combina em conjunto os correspondentes grupos de quatro: respectivamente, (A) T14, Til, T15 e T12, (B) Til, T12, T6 e T5 e (C) T7, T6, T8 e Til.
Ao utilizar mais amostras na direcção, a textura tem que e ser alongada para caber na superfície onde está a ser aplicada, a filtragem anisotrópica obtém uma qualidade de imagem mais nítida que a filtragem bilinear ou trilinear, e, também, evita a intermitência de luz da textura encontrada com a amostragem por pontos. É, também, verificado que o texto filtrado anisotrópicamente que é visualizado num ângulo, como pode acontecer num painel num jogo de corridas, ou no início do filme Guerra das Estrelas, renderiza mais claramente que com outros métodos de filtragem.
De um modo geral, as interfaces de programação de aplicação (APIs) gráfica permitem que um único vértice armazene dois ou mais endereços de textura para utilização em efeitos de multitexturização. Anteriormente, a multitexturização foi utilizada para criar efeitos luminosos utilizando mapas de luz, mas, desde então, tem sido aplicada em efeitos adicionais como mapeamento de relevo. Estas características de multitexturização levaram, eventualmente, os fabricantes de circuitos integrados 3-D a investir em fábricas de circuitos integrados para criar condutas de pixel paralelas, e em gerações mais recentes de circuitos integrados, para processar múltiplos texels por pixel por ciclo de relógio. 10 A vantagem ganha por ter condutas paralelas capazes de manipular múltiplos textels por pixel é que operações de multitexturização podem ser feitas, frequentemente, num único ciclo de relógio, em vez de ter de executar renderização multipassagem, onde cada pixel numa cena é desenhado várias vezes. Por cada passagem adicional, um circuito integrado tem de fazer a renderização de uma cena, sendo a sua taxa efectiva de enchimento de pixéis dividida pelo número de passagens que precisam de ser feitas. Assim, se um circuito integrado com uma taxa de enchimento de 500 Mpixéis/sec tem de fazer duas passagens de modo a renderizar nele uma cena com efeitos multitexturização, a taxa efectiva de enchimento desse circuito integrado é dividida para 250 Mpixéis/sec. Se ele fizer quatro passagens, a taxa de enchimento cai para 125 Mpixéis/sec. Assim, também, as condutas paralelas têm aumentado enormemente a eficiência da renderização de gráficos. O modo de funcionamento da multitexturização não é muito diferente da texturização única e normal, excepto que as texturas separadas têm de ser combinadas em conjunto, e, então, combinadas com a cor de pixel existente produzido pela sombra. Contudo, duplicar ou triplicar o número de texturas a serem utilizadas numa cena, aumenta drasticamente a quantidade de largura de banda da memória de trama requerida para trazer as texturas adicionais, e se estão a ser feitas múltiplas passagens tem de ser considerado que a performance geral irá sofrer. Contudo, nos últimos anos a evolução dos processadores gráficos, extremamente rápidos, fez esquecer estas considerações. A texturização e multitexturização podem ser utilizadas para criar um grande número de efeitos visuais, onde a descrição básica de superfície é apenas a ponta do icebergue. 11
Investigadores descobriram, também, um outro modo de criar texturas, em vez de armazenar um mapa de bits "gravado", um investigador pode, em vez disso, criar um pequeno programa que através de procedimentos crie texturas. Esta técnica tem sido utilizada para criar qualquer coisa desde superfícies de mármore, a texturas de terreno em grandes ambientes exteriores, a efeitos de movimentação de água.
Um outro processo que muitas aplicações procuram fazer com 3-D é o de configurar uma emoção. Isto é especialmente importante para tentar que os jogadores entrem completamente dentro do mundo idealizado pelo investigador. Uma ferramenta útil para alcançar diferentes emoções é a neblina, a qual também ajuda a dar a uma cena uma sensação de profundidade de campo. A neblina pode ser implementada de diversas maneiras diferentes, com as variações a terem mais a ver com a maneira como a neblina se torna nevoeiro. Dois métodos muito comuns são os chamados neblina linear e neblina exponencial, os quais, como os seus nomes indicam escalam, respectivamente, linearmente e exponencialmente. A neblina pode ser, também, aplicada por vértice ou pixel, e como em muitas coisas em 3-D, parece mais convincente por pixel, mas computacionalmente é mais dispendioso.
Um método mais avançado de aplicação de neblina é o chamado neblina baseada na distância, o qual não tem sido, tradicionalmente, disponibilizado aos circuitos integrados 3-D de consumo, mas a neblina baseada na distância é uma opção, com a chegada dos sombreados vértice no DirectX8. Um outro método, é o chamado tabela de neblina, onde os valores de neblina são 12 armazenados numa tabela de pesquisa aplicados, então, a cada pixel.
Mas independentemente da técnica, a neblina é uma função de a que distância está um objecto, a qual é habitualmente determinada pelo valor z, a distância da câmara de visão. Um factor neblina, quer calculado linearmente ou exponencialmente, é então calculado e aplicado ao pixel utilizando uma operação de combinação para combinar a quantidade de neblina (cor) e a luz/sombreado/textura da cor do pixel. Se a neblina está a ser executada por um vértice, as operações de neblina tornam-se uma parte dos cálculos de luz, e são interpolados ao lonqo de cada triângulo utilizando sombreamento de Gouraud.
Uma outra aplicação prática para a neblina é o de permitir que os objectos no plano visível distante "desvaneçam" suavemente em vez de simplesmente saírem de cena. A neblina pode ser, também, utilizada para permitir a um renderizador de apenas ter de desenhar objectos globais relativamente próximos da câmara de visão. Assim, quando o valor de neblina chega próximo ou atinge zero (de um modo típico, os valores de neblina são valores de vírgula flutuante entre zero e um, em que zero é neblina absoluta e um é ausência de neblina), o objecto é essencialmente rejeitado, e não precisa de ser realizado mais nenhum trabalho de renderização.
Também existem técnicas para aplicar transparência e translucidez. Ao contrário dos objectos opacos, os objectos transparentes devem ser, de um modo geral, ordenados em profundidade de trás para a frente para assegurar que as cores subjacentes, que são combinadas com os objectos transparentes, estejam disponíveis quando é executada a operação de combinação. 13
Existem várias fórmulas que podem ser utilizadas para calcular a translucidez dos objectos, mas uma fórmula comum é: c0 = α · cs + (1 - a) · cd, em que c0 = cor final do pixel α = valor alfa (entre 0 e 1) cs = cor do pixel transparente (chamado de origem) e cd = cor do pixel obstruído (chamado de destino).
Esta fórmula é um somatório de duas modulações de pixel, onde o valor alfa é aplicado, de um modo diferente, a ambos os pixéis, e os valores resultantes são adicionados entre si para dar o pixel de cor final.
Assim, existem uma miríade de técnicas que podem ser aplicadas em ligação com a amostragem de textura de gráficos de computador; contudo, até agora, a selecção de qualquer uma da miríade de técnicas é fixa pelo investigador, na altura do desenvolvimento, sem grande flexibilidade. Uma vez que certas variáveis e heurísticas são úteis para certas circunstâncias gráficas, e não para outras, o resultado da qualidade final pode ser uma mistura, mesmo com a sempre crescente potência de processamento. Consequentemente, seria desejável o aumento da quantidade de inteligência aplicada aos algoritmos de amostragem de textura na parte frontal do processo. Na perspectiva de um aumento da tendência para a função flex da GPU, seria desejável expor a amostragem controlável de textura para os investigadores a aplicarem no momento, inteligência dinâmica para manipular circunstâncias diferentes na maneira mais eficiente. À medida que se tornam disponíveis programas mais avançados de sombreamento por pixel e algoritmos de iluminação, que têm em 14 consideração as propriedades do material, superfícies curvadas, texturas volumétricas, e que têm de longe mais combinações complexas de passagem de textura única, tornou-se o maior de todos os desejos permitir aos investigadores terem controlo sobre os processos de amostragem de textura. Também, pode ser desejável introduzir, controladamente, perturbações numa imagem renderizada, como a desfocagem, ou listas ou a intermitência de luz. Consequentemente, seria desejável fornecer qualquer um, ou mais, de um sistema operativo, código de programa de ligação, uma interface de programação de aplicação, um conjunto de ferramentas e/ou funcionalidade na conduta gráfica em si mesma, incluindo a GPU ou outro dispositivo de coprocessamento, um mecanismo, o qual fornece capacidades de amostragem controlável de textura. 0 documento US-A-5651104 refere-se a uma combinação de mapeamento MIP e superamostragem para reduzir o efeito de escada da textura num polígono oblíquo. A técnica descrita é baseada no reconhecimento que a desejada textura do nível de detalhe é o nível onde o tamanho dos texels é igual à largura da superfície de pixel projectada, não o comprimento da superfície. Um ecrã de visualização contém um número de pixéis, cada um dos quais tem uma parte de pixel associado definida pelos quatro raios do ponto focal até aos cantos do pixel. A intercepção da parte do pixel com o polígono forma a superfície do pixel projectada no polígono. Adicionalmente às capacidades padrão de renderização de polígono, o gerador de imagem empregue, tem componentes adicionais necessários para a operação de superamostragem, incluindo uma unidade de superamostragem por pontos de amostra. A unidade de superamostragem por pontos de amostra define os pontos de amostra dentro da superfície de pixel projectada ao longo de uma linha no centro da superfície espaçada a distâncias 15 iguais ao longo da linha. Então, os pontos de amostra são mapeadas para localizações da superamostra no mapa MIP localizado numa memória de textura num nivel de detalhe seleccionado. As localizações na memória de textura são amostradas sobre a linha pela unidade de superamostragem por pontos de amostra. 0 documento US-B1-6292193, refere-se a projectar um filtro de pixel num mapa de textura para definir uma superfície elíptica cobrindo os dados de textura nesse mapa de textura. A superfície tem um eixo maior e um eixo menor. 0 método apresentado determina pontos de amostra numa linha na superfície que fica muito próxima do eixo maior da superfície. Dados de textura são amostrados nos pontos de amostra para determinar um valor de textura para cada ponto de amostra. As coordenadas de textura para o centro da superfície do filtro de pixel, são calculadas utilizando implementações de software ou hardware. 0 comprimento do eixo menor é aumentado quando dados de textura forem excluídos da amostragem ou forem sub-pesados. Aumentar o comprimento do eixo menor aumenta a área coberta por um filtro de espaço invariável, que é utilizado para amostrar dados de textura nos pontos de amostra.
No documento US-A-5877771, são descritos um aparelho e método para mapeamento de textura de alta qualidade. Dados de textura de resolução múltipla para um pixel destino são superamostrados a taxas de amostragem de espaço de ecrã horizontal e vertical, com base na velocidade local de alteração na textura. Uma superfície de pixel arbitrária (forma e/ou orientação) é eficiente e precisamente aproximada no espaço da textura. As calculadas velocidades locais de alteração na textura podem ser, independentemente, escaladas para permitir a 16 determinação do efeito de cada dimensão de textura num nivel de detalhe, e finalmente, as taxas de amostragem de espaço de ecrã horizontal e vertical, a serem controladas separadamente. As taxas de amostragem são determinadas com base numa rotina de gradiente de textura máxima optimizada, a qual assegura amostragem mínima quando uma área de superfície colapsa para um estado tipo linha. Para determinar as taxas de amostragem de espaço de ecrã horizontal e vertical com base numa rotina de gradiente de textura máxima optimizada, são feitas comparações para assegurar amostragem suficiente baseada no perímetro de uma superfície de pixel, quando a área de superfície colapsa para uma linha. As taxas de amostragem de espaço de ecrã horizontal e vertical, são reduzidas para segundas taxas de amostragem de espaço de ecrã horizontal e vertical, correspondentes a uma imagem de textura de resolução reduzida. Os dados de textura de resolução múltipla são amostrados em número de posições distribuídas de acordo com as segundas taxas de amostragem de espaço de ecrã horizontal e vertical, para aproximar a superfície correspondente à posição da amostra destino.
RESUMO DA INVENÇÃO 0 objectivo da presente invenção, é o de acelerar o completo processo de pré-amostragem e amostragem, enquanto providencia a possibilidade de especificar parâmetros definindo a superfície de amostragem.
Este objectivo é atingido pela invenção, como definido nas reivindicações independentes nas reivindicações dependentes são dadas formas de realização. 17
Com base no antecedente, a presente invenção providencia sistemas e métodos para efectuar uma amostragem controlável de textura em ligação com gráficos de computador num sistema de computador. Em várias formas de realização, são providenciados mecanismos aperfeiçoados, para controlar amostragem de textura, que activa a hardware acelerador de 3-D para aumentar enormemente o nivel de realismo na renderização, incluindo mecanismos aperfeiçoados para (1) desfocagem de movimento; (2) geração de reflexões de superfície anisotrópicas, (3) geração de superfícies auto-sombreadas, (4) amostragem volumétrica de traçagem de raios, (5) renderização volumétrica auto-sombreada e (6) traçagem de raios volumétrica auto-sombreada. Em técnicas de amostragem de textura existentes suplementares, os parâmetros para amostragem de textura podem ser substituídos e/ou modificados.
Em várias formas de realização, são providenciados métodos, aparelhos, meios legíveis por computador e dispositivos de coprocessamento, os quais permitem amostragem controlável de textura, incluindo especificar parâmetro(s) de uma amostragem de superfície utilizada em ligação com amostragem de textura de um mapa de textura e amostragem de textura a mapa de textura de acordo com os parâmetros especificados na amostragem de superfície.
Outras características e formas de realização da presente invenção são descritas abaixo. 18
BREVE DESCRIÇÃO DOS DESENHOS O sistema e métodos para efectuar uma amostragem controlável de textura de acordo com a presente invenção, são ainda descritas com referência aos desenhos que se fazem acompanhar, nos quais: A Figura 1 providencia uma visão geral do processo de amostragem de textura num sistema gráfico de computador; A Figura 2A providencia uma visão geral, de uma técnica anterior, do processo de amostragem por pontos, utilizada em ligação com amostragem de textura num sistema gráfico de computador; A Figura 2B providencia uma visão geral, de uma técnica anterior, do processo de filtragem bilinear utilizada em ligação com amostragem de textura num sistema gráfico de computador; A Figura 2C providencia uma visão geral, de uma técnica anterior, do processo de mapeamento MIP utilizada em ligação com amostragem de textura num sistema gráfico de computador; A Figura 2D providencia uma visão geral, de uma técnica anterior, do processo de filtragem anisotrópica utilizada em ligação com amostragem de textura num sistema gráfico de computador; A Figura 3A é um diagrama de blocos representando um modelo de ambiente de rede, tendo uma variedade de dispositivos computacionais nos quais pode ser implementada a presente invenção; 19 A Figura 3B é um diagrama de blocos representando um modelo de dispositivo computacional não limitado, no qual pode ser implementada a presente invenção; A Figura 4A ilustra uma forma de realização da invenção em que se efectua uma amostragem controlável de textura; e A Figura 4B ilustra ainda uma forma de realização da invenção em que é efectuada uma amostragem controlável de textura; e A Figura 5 ilustra um processo em ligação com o qual ainda podem ser aplicadas outras formas de realização da invenção.
DESCRIÇÃO DETALHADA DA INVENÇÃO
Visão geral É providenciado um mecanismo para efectuar uma amostragem controlável de textura, que permite que o hardware celerador de 3-D aumente, enormemente, o nível de realismo na renderização e abra o caminho para a utilização de cálculos em "ray tracing" (traçagem de raios) em hardware 3-D. Até agora, estes métodos têm sido restritos a renderizadores de software trabalhando com um processador anfitrião, abrandando, enormemente as condutas gráficas. A este respeito, actualmente, os circuitos integrados de gráficos 3-D têm uma unidade chamada um amostrador, que é utilizado para extrair a cor de uma textura num polígono durante a renderização. Uma vez que as posições dos pixéis a serem renderizados, de um modo geral, não correspondem exactamente às posições dos texels na textura, existe algum trabalho envolvido. 20 A amostragem de textura pode funcionar com vários níveis de sofisticação utilizando técnicas descritas em antecedentes da invenção, tais como amostragem por pontos, filtragem bilinear, mapeamento MIP e filtragem anisotrópica, assim como outras técnicas. Tais técnicas antecedentes têm aspectos fixos inerentes, os quais não se aplicam bem a todas as situações. Mais ainda, as presentes técnicas de filtragem anisotrópica trabalham para eliminar efeitos de desfocagem onde um investigador pode, realmente, querer criar um efeito de desfocagem. Consequentemente, a presente invenção apresenta ao investigador parâmetros fixados previamente, de modo a providenciar o investigador com inteligência, sem precedente prévio, relativamente ao nível de controlo sobre o processo de amostragem de textura. Em várias formas de realização, a invenção mostrou ser útil para vários efeitos de texturização. Mais ainda, a invenção pode ser, invariavelmente, implementada com software, hardware ou ambos. Por exemplo, algums detalhes de implementação podem ser implementados num circuito integrado de coprocessamento, tal como um GPU, onde outros podem ser expostos a um investigador gráfico através de um conjunto de ferramentas API, um sistema operativo, programas de ligação, código descarregavel, etc.
Modelos de Ambientes Distribuídos e em Rede
Aquele que é especialista na técnica pode apreciar que um computador, ou outro dispositivo cliente ou servidor, pode ser disposto como parte de uma rede de computadores ou de um ambiente de computação distribuída. Nesta consideração, a presente invenção refere-se a qualquer sistema de computador que tenha qualquer número de unidades de memória ou de 21 armazenamento, e qualquer número de aplicações e processos ocorrendo ao lonqo de qualquer número de unidades de armazenamento ou volumes, os quais podem ser utilizados em ligação com um processo de amostragem de textura. A presente invenção pode aplicar-se a um ambiente com computadores servidores e computadores clientes dispostos num ambiente de rede ou num ambiente de computação distribuída, tendo armazenagem remota ou local. A presente invenção, também, pode ser aplicada a dispositivos de computação autónoma, tendo funcionalidades de linguagem de programação, capacidades de interpretação e execução para gerar, receber e transmitir informação em ligação com serviços remotos ou locais. A computação distribuída facilita a partilha de recursos e serviços de computador pela troca directa entre dispositivos de computação e sistemas. Estes recursos e serviços incluem a troca de informação, armazenamento intermédio, e armazenamento em disco para ficheiros. A computação distribuída tira vantagem da ligação de rede, permitindo aos clientes utilizarem a sua potência colectiva para benefício de toda a empresa. Nesta consideração, uma variedade de dispositivos pode ter aplicações, objectos ou recursos que podem implicar um processo de amostragem de textura que pode utilizar as técnicas da presente invenção. A Fig. 3A providencia um diagrama esquemático de um modelo de ambiente de rede ou de computação distribuída. 0 ambiente de computação distribuída compreende objectos 10a, 11b, etc., de computação e objectos de computação ou dispositivos 110a, 110b, 110c, etc. Estes objectos podem compreender programas, métodos, armazéns de dados, lógica programável, etc. Os objectos podem compreender partes dos mesmos, ou diferentes, dispositivos tais 22 como PDAs, televisões, leitores de MP3, computadores pessoais, etc. Cada objecto pode comunicar com outro objecto através da rede 14 de comunicações. Esta rede pode, ela própria, compreender outros objectos de computação e dispositivos de computação que providenciam serviços ao sistema da Fig. 3A. De acordo com um aspecto da presente invenção, cada objecto 10a, 11b, etc. ou 110a, 110b, 110c, etc. pode conter uma aplicação que pode solicitar serviços de amostragem de textura.
Numa arquitectura de computação distribuída, computadores, os quais, tradicionalmente, podem ter sido apenas utilizados como clientes, comunicam directamente entre si e podem actuar quer como clientes quer como servidores, assumindo qualquer regra que seja a mais eficiente para a rede. Isto reduz a carga nos servidores e permite a todos os clientes aceder a recursos disponíveis noutros clientes, deste modo aumentando a capacidade e eficiência de toda a rede. De acordo com a presente invenção, serviços de amostragem de textura podem assim ser distribuídos entre clientes e servidores, actuando de um modo que é eficiente para toda a rede. A computação distribuída pode ajudar os serviços de distribuição e capacidades dos negócios a serem mais eficientes ao longo de diversos limites geográficos. Mais ainda, a computação distribuída pode mover dados próximos do ponto onde os dados são consumidos, actuando como um mecanismo de armazenamento intermédio da rede. A computação distribuída, também, permite computação de redes para, dinamicamente, trabalhar entre si utilizando agentes inteligentes. Os agentes residem em computadores com as mesmas funções e comunicam vários tipos de informação para trás e para a frente. Os agentes, também, podem iniciar tarefas no interesse de outros sistemas 23 com as mesmas funções. Por exemplo, agentes inteligentes podem ser utilizados para dar prioridade a tarefas numa rede, alterar o fluxo de tráfego, procurar localmente por ficheiros ou determinar comportamentos anómalos, tal como um virus e pará-lo antes que ele afecte a rede. Todas as ordenações de outros serviços, também, podem ser contempladas. Num tal sistema, uma vez que objecto(s) gráfico (s) e mapas de textura podem, na pratica, estar fisicamente localizados numa ou mais localizações, a capacidade de distribuir serviços de amostragem de textura é de grande utilidade.
Também, pode ser entendido que um objecto, tal como 110c, pode se alojado noutro dispositivo 10a, 10b, etc. ou 110a, 110b, etc. de computação. Assim, embora o ambiente físico representado possa mostrar os dispositivos ligados como computadores, tal ilustração é meramente um modelo e o ambiente físico pode, de um modo alternativo, ser representado ou descrito compreendendo vários dispositivos digitais, tais como PDAs, televisões, leitores de MP3, etc., objectos de software, tais como interfaces, objectos COM e similares.
Existe uma variedade de sistemas, componentes e configurações de rede que suportam ambientes de computação distribuída. Por exemplo, sistemas de computação podem ser ligados entre si por sistemas de cabos ou sem fios, por redes locais ou redes largamente distribuídas. Actualmente, muitas das redes estão ligadas à Internet, a qual providencia a infra-estrutura para computação largamente distribuída e abrange muitas redes diferentes.
Em ambiente de rede residencial, existem, pelo menos, quatro meios de transporte de rede distintos, cada um pode 24 suportar um único protocolo, tais como linha de energia, dados (quer sem fios quer por cabo), voz (e. g., telefone) e média de entretenimento. Muitos dispositivos de controlo residencial, tais como comutadores de luz e aparelhos, podem utilizar para ligação a linha de energia. Serviços de Dados podem entrar na residência como banda larga (e. g., quer seja DSL ou modem de Cabo) e são acessíveis dentro de casa utilizando ligação sem fios (e. g., RF Residencial ou 802.11b) ou por cabo (e. g., PNA Residencial, Cat 5, mesmo a linha de energia) . O tráfico de voz pode entrar na residência quer como cabo (e. g., Cat 3) ou sem fios (e. g., telemóveis) e pode ser distribuído dentro da residência utilizando cablagem Cat 3. Média de entretenimento, ou outros dados gráficos, podem entrar na residência através de satélite ou cabo e, de um modo típico, é distribuída na residência utilizando cabo coaxial. Também, as normas IEEE 1394 e DVI estão a emergir como interligações digitais para agrupamento de dispositivos de média. Todos este ambientes de rede e outros que possam emergir como protocolo padrão podem ser interligados para formar uma intranet que pode se ligada ao mundo exterior através da Internet. Em resumo, existe uma variedade de fontes distintas para armazenar e transmitir dados, e por consequência, antecipando, dispositivos de computação irão requerer modos de partilhar dados, tais como acesso a dados ou evento utilizado para amostragem de textura de objecto(s) gráfico(s) e mapas de textura de acordo com a presente invenção. A Internet usualmente refere-se à colecção de redes e portas de saída que utilizam o conjunto de protocolos TCP/IP, o qual é bem conhecido na técnica de redes de computador. TCP/IP é um anacronismo para "Protocolo de Controlo de Transporte/Programa de Interface". 25 A Internet pode ser descrita como um sistema de redes de computador remotas geograficamente distribuídas interligadas por computadores executando protocolos de rede que permitem aos utilizadores interagirem e partilharem informação sobre as redes. Devido a tal alargada e espalhada partilha de informação, redes remotas, como a Internet, têm até agora, de um modo geral, evoluído num sistema aberto para o qual os investigadores podem desenhar aplicações de software para execução de operações especializadas ou serviços, essencialmente, sem restrições.
Assim, a infra-estrutura de rede permite um conjunto de topologias de rede, tais como cliente/servidor, ponto a ponto, ou arquitecturas híbridas. 0 "cliente" é um membro de uma classe ou grupo que utiliza os serviços de outra classe ou grupo ao qual não está relacionado. Assim, em computação, um cliente é um processo, í. e., de um modo aproximado, um conjunto de instruções ou tarefas, que solicitam um serviço providenciado por outro programa. 0 processo cliente utiliza o serviço solicitado sem ter de "conhecer" qualquer detalhe acerca do trabalho do outro programa ou do serviço em si. Numa arquitectura cliente/servidor, particularmente um sistema em rede, um cliente é, de um modo usual, um computador que acede a recursos de rede partilhados providenciados por outro computador, e. g., um servidor. No exemplo da Fig. 3A, os computadores 110a, 110b, etc., podem ser pensados como clientes e o computador 10a, 10b, etc., podem ser pensados como servidor onde o servidor 10a, 10b, etc., mantém os dados que são então replicados nos computadores 110a, 110b, etc., clientes.
De um modo típico, um servidor é um sistema de computador remoto acessível sobre uma rede remota, tal como a Internet. 0 processo cliente pode ser activo num primeiro sistema de 26 computador, e o processo servidor pode ser activo num segundo sistema de computador, comunicando um com o outro sobre um meio de comunicações, providenciando, assim, funcionalidades distribuídas e permitindo a múltiplos clientes tirarem vantagens das capacidades de recolha de informação do servidor.
Cliente e servidor comunicam entre si utilizando a funcionalidade providenciada pela camada de protocolo. Por exemplo, o Protocolo de Transferência de Hipertexto (HTTP) é um protocolo comum que é utilizado em ligação com a Rede de Tamanho Mundial (WWW) . De um modo típico, um endereço de rede de computador, tal como um endereço Localizador Universal de Recursos (URL) ou um Protocolo Internet (IP), é utilizado para identificar os computadores, servidor ou cliente, entre si. 0 endereço de rede pode ser referido como um endereço URL. Por exemplo, comunicação pode ser providenciada sobre um meio de comunicações. Em particular, para comunicações de alta capacidade, o cliente e o servidor podem ser ligados um ao outro através de ligações TCP/IP.
Assim, a Fig. 3A ilustra um modelo de ambiente em rede ou distribuído, com um servidor em comunicação com computadores cliente através de uma rede/barramento, no qual a presente invenção pode ser empregue. Em maior detalhe, um número de servidores 10a, 10b, etc., está interligado através de uma rede/barramento 14 de comunicações, a qual pode ser uma LAN, WAN, intranet, a Internet, etc., com um número de clientes ou dispositivos 110a, 110b, 110c, HOd, IlOe, etc., de computação remotos, tais como computadores portáteis, computadores de bolso, cliente fino, maquina em rede, ou outro dispositivo, tal como um VCR, TV, forno, iluminação, aquecimento e similares de acordo com a presente invenção. É deste modo contemplado que a 27 presente invenção pode ser aplicada a qualquer dispositivo de computação em ligação com o qual é desejado processar objecto(s) gráfico(s).
Num ambiente de rede no qual as comunicações de rede/barramento é a Internet, por exemplo, os servidores 10a, 10b, etc. podem ser servidores Web com os quais os clientes 110a, 110b, 110c, HOd, IlOe, etc. comunicam através de qualquer um de um número de protocolos conhecidos, como HTTP. Os servidores 10a, 10b, etc., também, podem servir como clientes 110a, 110b, 110c, HOd, IlOe, etc., como pode ser característico de um ambiente de computação distribuída. Conforme apropriado, as comunicações podem ser por cabo ou sem fios. Os dispositivos 110a, 110b, 110c, HOd, IlOe, etc., clientes podem, ou não, comunicar através da rede/barramento 14 de comunicações, e pode haver comunicações independentes associadas com estes. Por exemplo, no caso de uma TV ou VCR, pode, ou não, ter uma característica de rede ao controlo deste. Cada computador cliente 110a, 110b, 110c, HOd, IlOe, etc., e computador servidor 10a, 10b, etc. pode ser equipado com várias módulos de programas de aplicação ou objectos 135 e com ligações ou acessos aos vários tipos de elementos de armazenagem ou objectos, ao longo dos quais os ficheiros põem ser armazenados ou para os quais parte(s) de ficheiros podem ser descarregados ou migrados. Qualquer computador 10a, 10b, 110a, 110b, etc. pode ser responsável pela manutenção e actualização de uma base 20 de dados ou outro elemento de armazenagem de acordo com a presente invenção, tal como uma base de dados ou memória 20 para armazenamento de objecto(s) gráfico (s) ou objecto(s) gráfico(s) intermediário(s) processado(s) de acordo com a invenção. Assim, a presente invenção pode ser utilizada num ambiente de rede de computador que tem computadores 110a, 110b, etc., clientes que 28 podem aceder e interagir com uma rede/barramento 14 de computador e computadores 10a, 10b, etc., servidores que podem interagir com os computadores 110a, 110b, etc., e outros dispositivos similares, e bases 20 de dados.
Modelo de Dispositivo de Computação A Fig. 3B e a discussão que se segue têm a intenção de providenciar uma breve descrição geral de um ambiente de computação apropriado, no qual pode ser implementada a invenção. Contudo, deverá ser compreendido que dispositivos de computação de bolso, portáteis e outros e objectos de computação de todos os tipos são contemplados para utilização em ligação com a presente invenção. Enquanto um computador de utilização geral é descrito abaixo, isto é só um exemplo, e a presente invenção pode ser implementada com um cliente fino que tenha inter-operacionalidade e interacção de rede/barramento. Assim, a presente invenção pode ser implementada num ambiente de serviços hospedados em rede, nos quais estão implicados muito poucos, ou mínimos, recursos de cliente, í. e., um ambiente em rede no qual o dispositivo cliente serve, apenas, como uma interface à rede/barramento, tal como um objecto colocado numa máquina. Essencialmente, qualquer lugar que possa ter dados armazenados ou a partir do qual os dados possam ser recuperados é um desejado, ou apropriado, ambiente para operação das técnicas de amostragem de textura controláveis da invenção.
Apesar de não requerido, a invenção pode ser implementada através de um sistema operativo, para utilização por um investigador de serviços para um dispositivo ou objecto, e/ou incluído dentro do software de aplicação que opera em ligação 29 com a amostragem controlável de textura da invenção. Software pode ser descrito no contexto geral de instruções executáveis de computador, tal como módulos de programa, sendo executado por um, ou mais computadores, tais como estações de trabalho clientes, servidores ou outros dispositivos. De um modo geral, módulos de programa incluem rotinas, programas, objectos, componentes, estrutura de dados e similares que executam tarefas particulares ou implementam tipos de dados abstractos particulares. De um modo tipico, a funcionalidade dos módulos de programa pode ser combinada ou distribuída, como desejado, em várias formas de realização. Além disso, os especialistas na técnica perceberão que a invenção pode ser praticada com outras configurações de sistema de computador. Outros bem conhecidos sistemas de computação, ambientes, e/ou configurações que podem ser apropriadas para utilização com a invenção incluem, mas não estão limitados a, computadores pessoais (PCs), máquinas de pagamento automático, computadores servidores, dispositivos de bolso ou portáteis, sistemas multiprocessador, sistemas baseados em microprocessador, equipamentos electrónicos programáveis de consumo, PCs em rede, máquinas, iluminação, elementos de controlo ambiental, minicomputadoes, computadores centrais e similares. A invenção, também, pode ser praticada em ambiente de computação distribuída onde as tarefas são executadas por dispositivos de processamento remotos que estão ligados através de uma rede/barramento de comunicações ou outro meio de transmissão de dados. Num ambiente de computação distribuída, os módulos de programa podem estar localizados quer no meio de armazenamento do computador local quer do computador remoto, incluindo dispositivos de armazenamento de memória, e nós de clientes podem, por sua vez, comportarem-se como nós servidores. 30
Assim, a Fig. 3B ilustra um exemplo de um ambiente 100 de sistema de computação apropriado, no qual pode ser implementada a invenção, embora como foi tornado claro acima, o ambiente 100 de sistema de computação é apenas um exemplo de um ambiente de computação apropriado e não é intenção sugerir qualquer limitação a respeito do âmbito da utilização ou funcionalidade da invenção. O ambiente 100 de computação também não deve ser interpretado como tendo qualquer dependência ou requisito relativamente a qualquer componente ou combinação de componentes ilustrados no modelo de ambiente 100 operativo.
Com referência à Fig. 3B, um modelo de sistema para implementação da invenção inclui um dispositivo de computação de utilização geral na forma de um computador 110. Componentes do computador 110 podem incluir, mas não estão limitados a, uma unidade 120 de processamento, uma memória 130 de sistema, e um barramento 121 de sistema que liga vários componentes de sistema incluindo a memória de sistema à unidade 120 de processamento. O barramento 121 de sistema pode ser qualquer um dos vários tipos de estruturas de barramento incluindo barramento de memória, barramento de periféricos, e um barramento local que utilize qualquer uma de uma variedade de arquitecturas de barramento. A titulo de exemplo, e não limitativo, tais arquitecturas incluem barramento Arquitectura Padrão da Indústria (ISA), barramento Arquitectura Micro Canal (MCA), barramento Arquitectura Padrão da Indústria Estendido (EISA), barramento local Associação de Padrões de Electrónica de Video (VESA), e barramento Interligação de Componentes Periféricos (PCI) (também conhecido por barramento Mezzanine).
De um modo típico, o computador 110 inclui uma variedade de meios legíveis por computador. Meios legíveis por computador 31 podem ser quaisquer meios disponíveis que possam ser acedidos pelo computador 110 e inclui quer meios voláteis quer não voláteis, meios amovíveis e não amovíveis. A título de exemplo, e não limitativo, meios legíveis por computador podem compreender meios de armazenamento de computador e meios de comunicações. Meios de armazenamento de computador incluem meios voláteis e não voláteis, amovíveis e não amovíveis, implementados por qualquer método ou tecnologia para armazenamento da informação, tais como, instruções que são lidas pelo computador, estruturas de dados, módulos de programa ou outros dados. Meios de armazenamento de computador incluem, mas não estão limitados a, RAM, ROM, EEPROM, memória flash ou outra tecnologia de memória, CDROM, Discos Digitais Versáteis (DVD) ou outro armazenamento de disco óptico, cassetes magnéticas, bandas magnéticas, armazenamento de disco magnético ou outros dispositivos de armazenamento magnético, ou quaisquer outros meios, que possam ser utilizados para armazenar a informação desejada e a qual possa ser acedida pelo computador 110. De um modo típico, meios de comunicação englobam instruções que são lidas pelo computador, estruturas de dados, módulos de proqrama ou outros dados num sinal de dados modulado, tal como uma onda portadora ou outro mecanismo de transporte e inclui quaisquer meios de entrega de informação. O termo "sinal de dados modulado" significa um sinal que tem uma, ou mais, das suas características configurada ou alterada de um modo tal que codifica a informação no sinal. A título de exemplo, e não limitativo, meios de comunicação incluem meios de cabos, tal como uma rede de cabos ou ligação de cabo directa, e meios sem fios, tal como acústica, RF, infravermelhos e outros meios sem fios. Também deve ser incluído dentro do âmbito da meios legíveis por computador quaisquer combinações dos acima. 32 A memória 130 de sistema inclui meios de armazenamento de computador na forma de memória volátil ou não volátil, tal como memória 131 apenas de leitura (ROM) e memória 132 de acesso aleatório (RAM) . De um modo tipico, um sistema 133 de entrada/saida básico (BIOS), contendo as rotinas básicas que ajudam a transferir informação entre elementos dentro do computador 110, tal como durante o arranque, é armazenado em ROM 131. De um modo tipico, a RAM 132 contém dados e/ou módulos de programa que são imediatamente acessíveis à e/ou estão presentemente em operação na unidade 120 de processamento. A titulo de exemplo, e não limitativo, a Fig. 3B ilustra o sistema 134 operativo, programas 135 de aplicação, outros módulos 136 de programa, e dados 137 de programa. O computador 110, também, pode incluir outros meios de armazenamento de computador amovíveis/não amovíveis, voláteis/não voláteis. Apenas a título de exemplo, a Fig. 3B ilustra uma unidade 141 de disco rígido que lê de ou escreve para um meio magnético não amovível, não volátil, uma unidade 151 de disco magnético que lê de ou escreve para um disco 152 magnético amovível, não volátil, e uma unidade 155 de disco óptico que lê de ou escreve para um disco 156 óptico amovível, não volátil, tal como um CD ROM ou outro meio óptico. Outros meios armazenamento de computador amovíveis/não amovíveis, voláteis/não voláteis que pode ser utilizado no modelo de ambiente operativo incluem, mas não estão limitados a, cassetes de banda magnética, cartas de memória flash, discos digitais versáteis, cassetes de vídeo digital, RAM de estado sólido, ROM de estado sólido, e similares. De um modo típico, a unidade 141 de disco rígido está ligada ao barramento 121 de sistema através de uma interface de memória não amovível, tal como a interface 140, e a unidade 151 de disco magnético e a unidade 155 de disco 33 óptico estão, de um modo típico, ligadas ao barramento 121 de sistema por uma interface de memória amovível, tal como a interface 150.
As unidades e seus meios de armazenamento de computador associadas, discutidas acima e ilustradas na Fig. 3B, providenciam armazenamento de instruções que são lidas pelo computador, estruturas de dados, módulos de programa e outros dados para o computador 110. Por exemplo, na Fig. 3B, a unidade 141 de disco rígido é ilustrada como armazenando o sistema 144 operativo, programas 145 de aplicação, outros módulos 146 de programa e dados 147 de programa. De notar que estes componentes tanto podem ser os mesmos como diferentes do sistema 134 operativo, programas 135 de aplicação, outros módulos 136 de programa e dados 137 de programa. Aqui são dados diferentes números ao sistema 144 operativo, programas 145 de aplicação, outros módulos 146 de programa e dados 147 de programa para ilustrar que, num mínimo, eles são cópias diferentes. Um utilizador pode introduzir comandos e informação no computador 110 através de dispositivos de entrada, tal como um teclado 162 e dispositivo 161 apontador, usualmente referido como um rato, bola de comando ou tapete táctil. Outros dispositivos de entrada (não mostrados) podem incluir um microfone, manche, comando de jogos, prato de satélite, digitalizador, ou similar. Estes e outros dispositivos de entrada, são muitas vezes ligados à unidade 120 de processamento através de uma interface 160 de entrada de utilizador que está ligada ao barramenteo 121 de sistema, mas podem ser ligados por outras interfaces e estruturas de barramento, tal como uma porta paralela, porta de jogos ou barramento série universal (USB). Uma interface 182 de gráficos, tal como Northbridge, também, pode ser ligada ao barramento 121 de sistema. Northbridge é um conjunto de 34 circuitos integrados que comunica com a CPU, ou unidade 120 de processamento anfitriã, e assume a responsabilidade das comunicações para a porta acelerada de gráficos (AGP). Uma, ou mais, unidades 184 de processamento gráfico (GPUs) podem comunicar com a interface 182 de gráficos. Nesta consideração, de um modo geral, as GPUs 184 incluem armazenamento de memória no circuito integrado, tal como um armazenamento de registo e as GPUs 184 comunicam com uma memória 186 de video. Contudo, as GPUs 184 são apenas um exemplo de um coprocessador e, assim, uma variedade de dispositivos de coprocessamento podem ser incluídos no computador 110. Também, um ecrã 191 ou outro tipo de dispositivo de visualização está ligado ao barramento 121 de sistema através de uma interface, tal como uma interface 190 de vídeo, a qual pode, por sua vez, comunicar com a memória 186 de vídeo. Adicionalmente ao ecrã 191, os computadores podem, também, incluir outros dispositivos periféricos de saída, tais como altifalantes 197 e impressora 196, os quais podem ser ligados através de uma interface 195 de periféricos de saída. O computador 110 pode funcionar num ambiente em rede ou distribuído utilizando ligações lógicas a um, ou mais, computadores remotos, tal com um computador 180 remoto. O computador 180 remoto pode ser um computador pessoal, um servidor, um encaminhador, um PC de rede, um dispositivo equivalente ou outro nó de rede comum, e, de um modo típico, inclui muitos dos, ou todos os, elementos descritos acima relativamente ao computador 110, apesar de um dispositivo 181 de armazenagem de memória apenas ter sido ilustrado na Fig 3B. As ligações lógicas descritas na Fig. 3B incluem uma rede 171 de área local (LAN) e uma rede 173 de área alargada (WAN) , mas, também, pode incluir outras redes/barramentos. Tais ambientes de 35 rede são lugares comum em casas, escritórios e grandes redes de computador de empresa, intranets e a Internet.
Quando utilizado num ambiente de rede LAN, o computador 110 está ligado à LAN 171 através de uma interface de rede ou adaptador 170. Quando utilizado num ambiente de rede WAN, de um modo típico, o computador 110 inclui um modulador/demodulador 172 ou outro meio para estabelecer comunicações sobre a WAN 173, tal como a Internet. O modulador/demodulador 172, o qual pode ser interno ou externo, pode ser ligado ao barramento 121 de sistema através da interface 160 de entrada de utilizador, ou outro mecanismo apropriado. Num ambiente em rede, os módulos de programa descritos relativamente ao computador 110, ou partes destes, podem ser armazenados no dispositivo de armazenamento de memória remoto. A título de exemplo, e não limitativo, a Fig. 3B ilustra programas 185 de aplicação remota como residentes no dispositivo 181 de memória. Será apreciado que as ligações de rede mostradas são modelos, e podem ser utilizados outros meios de estabelecer uma ligação de comunicações entre os computadores.
Ambientes ou Arquitecturas de Computação Distribuída ou Exemplificativas Vários ambientes de computação distribuída têm sido e estão a ser desenvolvidas à luz da convergência da computação pessoal e a Internet. Utilizadores individuais e igualmente empresariais são providenciados com uma coerente interoperacionalidade e interface que permite Web para aplicações e dispositivos de computação, fazendo aumentar as actividades de computação de pesquisa Web ou orientada para a rede. 36
Por exemplo, a plataforma MICROSOFT®'s .NET inclui servidores, serviços de construção de blocos, tais como armazenamento de dados baseados na Web e software de dispositivo descarregável. Falando de um modo geral, a plataforma .NET providencia (1) a capacidade para fazer a gama completa de dispositivos de computação trabalharem em conjunto e ter informação de utilizador actualizada e sincronizada automaticamente em todos eles, (2) aumento da capacidade interactiva para sítios Web, permitida pela maior utilização de XML em vez de HTML, (3) serviços em linha que caracterizam o acesso e a entrega, costumizado, de produtos e serviços ao utilizador de um ponto inicial central para a gestão de várias aplicações, tal como, por exemplo, correio electrónico ou software, tal como o Office.NET, (4) armazenamento de dados centralizado, o qual irá aumentar a eficiência e facilidade de acesso à informação, assim como sincronização de informação entre utilizadores e dispositivos, (5) a capacidade de integrar vários média de comunicações, tais como correio electrónico, fac-símiles, e telefones, (6) para investigadores, a capacidade para criar módulos reutilizáveis, aumentando, deste modo, a produtividade e reduzindo o número de erros de programação e (7) também, muitas outras características de integração entre plataformas.
Enquanto aqui, modelos de formas de realização são descritos em ligação com software residente num dispositivo de computação uma, ou mais partes da invenção, também, podem ser implementadas através de um sistema operativo, interface de programação de aplicação (API) ou um objecto "homem do meio" entre um coprocessador e o objecto pedido, de modo que serviços de amostragem controlável de textura possam ser executados, através de todas as linguagens NET suportadas ou acedidas e 37 serviços, e, também noutras estruturas de suporte de computação distribuída.
Amostragem Controlável de Textura
Como descrito no antecedente da invenção, existe um número de técnicas diferentes que podem ser aplicadas para executar amostragem de textura com gráficos de computador dependendo da aplicação envolvida. Contudo, o problema é que uma vez seleccionada, a técnica é fixa sem muita flexibilidade, de modo que se aparecem circunstâncias únicas, não apropriadas para a técnica de amostragem de textura seleccionada, ou se o investigador pretende desejar certas perturbações, tal como desfocagem, no resultado final, pouco pode ser feito. Deste modo, a invenção aplica inteligência aos algoritmos de amostragem de textura, de modo que é dado a um investigador mais liberdade na parte dianteira permitindo maior amostragem de textura dinâmica na parte traseira. As técnicas da invenção tiram, assim, vantagem da tendência para a função flexível dos GPUs, expondo a amostragem controlável de textura para os investigadores aplicarem no momento, e inteligência dinâmica para manipular circunstâncias diferentes em maneiras diferentes. Deste modo, em várias formas de realização, a invenção providencia, para um, ou mais do que um, sistema operativo, código de programa de ligação, uma API, um conjunto de ferramentas e/ou funcionalidade na conduta de gráficos em si, incluindo a GPU ou outro dispositivo de coprocessamento, um mecanismo, o qual providencia capacidades de amostragem controlável de textura. 38
Assim, a invenção providencia várias técnicas para controlar processos de amostragem de textura através de amostragem programável. Como mencionado em antecedentes da invenção, numa forma de filtragem anisotrópica, é executada filtragem bilinear múltiplas vezes ao longo de algum ângulo. Como ilustrado na Fig. 4A, quando o polígono texturado está num ângulo oblíquo ao plano do ecrã, a superfície correspondente a um pixel de ecrã mapeado na textura torna-se uma forma alongada, tal como uma elipse. Qualquer método actualmente conhecido para calcular a forma correcta para utilizar esta superfície de amostragem baseia os seus cálculos apenas na geometria relativa do pixel de ecrã ao alinhamento dos texels do polígono, e não providencia flexibilidade, a qual permite a um investigador, previsível e inteligentemente, controlar directamente o tamanho e orientação da superfície. Assim, a invenção providencia vários mecanismos para permitir quer uma "sobreposição manual" das computações automáticas já realizadas e/ou uma modificação dos resultados gerados por estas, permitindo um novo nível de realismo visual em gráficos 3-D de tempo real.
Com respeito a uma sobreposição manual, a invenção pode ser utilizada para substituir o tamanho e orientação da superfície pela substituição de Au e Δν, de um modo geral, utilizados para calcular a superfície com os valores Aun0vo e Δνηονο de substituição. Isto é ilustrado na Fig. 4A, onde Aun0vo e Δνηονο define uma orientação θηονο de substituição e define um tamanho de passo sn0vo de substituição. Assim, através da especificação dos valores Aun0v0 e Δνηονο de substituição através de uma API, sistema operativo, conjunto de ferramentas, programas de ligação, etc., o processo de amostragem de textura pode ser controlado. Nesta consideração, a actual função flexível de GPU pode receber 39 segmentos que representam a funcionalidade para atingir isto, ao atribuir e/ou reatribuir certos registos para atingir tal processamento. As GPUs, também, podem ser pré-fabricadas para manipular este processamento. A substituição pode, em certas circunstâncias, ser mais rápida que as técnicas utilizadas actualmente, uma vez que o circuito integrado não está mais envolvido na computação dos parâmetros definidos pela aplicação durante a substituição.
Com respeito a uma modificação da presente superfície utilizada em ligação com as técnicas anisotrópicas, a invenção pode ser utilizada para modificar o tamanho e orientação da superfície pela modificação do Au e Δν, de um modo geral, utilizados para calcular a superfície com valores de desvio Δυ0 e Δνο. Isto é ilustrado na Fig. 4B, onde Δυ + Δυο e Δν + Δν0 definem uma orientação θ0 modificada e, também, define um tamanho de passo So modificado. Assim, o processo de amostragem de textura pode ser controlado através da especificação dos valores de desvio Δυο e Δν0 através de uma API, sistema operativo, conjunto de ferramentas, programas de ligação, etc. De um modo similar, ao da substituição, os GPUs actuais de a função flexível podem receber segmentos que representam a funcionalidade para atingir isto, ou pré-fabricados para atingir os mesmos resultados. Modificação, como descrito aqui, contempla qualquer função de Δυ e Δυ0, ou Δν e Δν0 não só adição, í. e., multiplicação, exponentes, raízes quadradas, subtracção, ou qualquer função matemática F(Δυ e Δυο) ou F(Δν e Δν0) são contemplados, conforme apropriado as tarefas de filtragem em mão.
Ambas as capacidades de modificação e substituição podem ser providenciadas ao mesmo tempo, e são ambas opcionais, se o 40 investigador escolher permitir que o hardware se comportar como habitualmente com respeito ao mapeamento de textura. Contudo, a invenção permite que o investigador tenha a opção de suplementar as actuais técnicas existentes ao substituir e/ou modificar os parâmetros que definem a superfície de amostragem de textura para atingir a amostragem controlável de textura.
Também, como descrito em antecedentes da invenção, modelos de equações para filtragem bilinear, conhecidos daqueles que são especialistas na técnica de processamento gráfico, incluem o seguinte:
Ca = Pij · Ct + (Pij + i) · (l-Oía)
Cb = Pi+1 j · α + (Pi+1 j+i) · (l-aa) F = lrp(ca, cb) · ab
Em forma(s) de realização adicional(is) , a invenção permite aos investigadores substituírem ou modificarem o aa e ^ utilizado em ligação com computação de filtragem bilinear, para providenciar uma camada de controlo adicional sobre o processo de amostragem de textura. A(s) técnica (s) providenciada(s) pela invenção é(são) genérica (s) e o âmbito das aplicações para a sua utilização é virtualmente ilimitada. Assim, enquanto numerosos exemplos da sua utilização são providenciados abaixo e enquanto numerosos exemplos de efeitos em ligação com os quais a invenção pode ser utilizada são dados em antecedentes da invenção, é pretendido que a invenção seja aplicada a qualquer processo de amostragem de textura para o qual seria desejável controlar aspectos do mapeamento. 41
Assim, abaixo são providenciados exemplos de utilização da invenção, e modelos de pseudocódigo para esta.
Os actuais métodos de desfocar movimento requerem múltiplas passagens de renderização, e. g., entre quatro e oito, as quais resultam, de um modo directo, num desempenho inferior, e. g., desempenho quatro a oito vezes inferior. A utilização de uma abordagem de filtragem, de acordo com a invenção, pode providenciar resultados similares apenas numa só passagem, com um impacto no desempenho muito mais reduzido. Num tal caso, a invenção aplicaria dados (nível de vértice) repetidos para controlar o vector sentido no qual a desfocagem deverá ocorrer. Como explicado acima, o vector sentido pode ser modificado ou substituído por modificação ou substituição dos parâmetros definidos. Uma abordagem similar pode ser utilizada para simular e/ou controlar a reflexão/desfocagem de Fresnel. É possível gerar reflexões de superfície anisotrópica e efeitos luminosos para iluminação difusa, e para algumas aproximações à iluminação espelhada. A verdadeira iluminação espelhada vem dos mapas de ambiente, os quais as técnicas actuais não amostram anisotrópicamente. A(s) técnica (s) da invenção permitem renderização anisotrópica dos mapas de ambiente reflectidos. Tal (is) técnica (s) é(são), de um modo particular, apropriada (s) para superfícies brilhantes, embora anisotrópicas, tal como acabamento de metal levemente polido no encaixe de aço inoxidável, e pode utilizar qualquer uma da especificação por vértice e por pixel da amostragem de sentido por modificação ou substituição dos parâmetros definidos da amostragem de sentido. 42
Com respeito à superfície auto-sombreada, existem muitas técnicas que contribuem para iluminação por pixel das superfícies. A maioria destas técnicas, apenas, podem executar efeitos de iluminação difusa. Os quais são por definição ligeiros efeitos de iluminação lisos. 0 impacto visual dominante de superfícies rugosas vem das sombras que áreas mais elevadas moldam em áreas mais baixas, o que providencia limites firmes de alto contraste que representa, de um modo claro, a rugosidade da textura da superfície. Outros métodos para computação de sombras em gráficos 3-D, apenas, podem moldar sombras de um polígono para outro, e não são válidos para computação de sombras entre texels no mesmo polígono. Assim, a invenção aplica especificação por pixel da amostragem de sentido por modificação ou substituição dos parâmetros definidos da amostragem de sentido. A Fig. 5, ilustra um princípio básico por detrás do sombreado e ilustra formas de realização da invenção adicionais. É ilustrado na Fig. 5, um terreno ou superfície T arbitrário, a ser sombreado, ou iluminado, a partir de um ponto de origem ps, por meio do qual a região de sombra representa matematicamente as áreas da superfície que são expostas aos raios a partir do ponto de origem ps. Nesta consideração, o terreno T é definido por uma pluralidade de pontos, os quais, além de terem os valores u e v, têm também um valor w, o qual corresponde ao peso do ponto do terreno T. Assim, amostragem de sentido para sombreado ou iluminação em 3-D, de um modo típico, envolve configurar um vector de amostragem de sentido 3-D, tendo um sentido e tamanho de passo definido pelos valores Au, Δν e Aw. Nesta consideração, a invenção permite a substituição ou modificação dos valores Au, Av e Aw prolongando as técnicas aplicadas aos valores Au, Δν, descritos acima, ao valor Aw. 43
Com respeito à amostragem volumétrica de traçagem de raios, os métodos actuais para renderização volumétrica requerem a divisão do volume em polígonos relativamente ortogonais ao sentido do olho. Isto produz ligação de perturbações ao longo dos limites e cantos de tais volumes. A(s) técnica (s) da invenção permite(m), de um modo controlado, evitar estas perturbações, assim como, melhorar o desempenho. Assim, a invenção permite a especificação ou modificação de um vector 3-D, o qual determina a amostragem de sentido, a qual é, então, linearmente repetida a partir dos vértices. Então, a amostragem poderá ser feita por séries de células múltiplas, e. g., 8 células, amostras trilineares, ou por amostras bilineares.
Com respeito à renderização volumétrica de auto-sombreado, quando se utiliza esta técnica em combinação com renderização volumétrica de divisão convencional ou estilo splat, qualquer um dos efeitos de auto-sombreado ou de auto iluminação pode ser simulado dentro do volume renderizado. Assim, a invenção permite uma especificação por vértice ou modificação de um vector de amostragem de sentido 3-D.
Com respeito à traçagem de raios volumétrica auto-sombreado, é adicionado um nivel de ciclo de dados sequencial, onde em cada exemplo ao longo do raio, um conjunto separado de amostras é modelado ao longo do sentido para a origem da luz para providenciar verdadeira renderização de traçagem de raios volumétrica com auto-sombreado. Esta técnica é um prolongamento directo das técnicas discutidas até aqui, mas implica alterações, mais significativas, ao hardware de amostragem.
Com respeito à amostragem de textura programável e amostragem de sombras, a técnica chave realizada pela invenção é 44 a de permitir à aplicação, ou investigador, especificar o sentido e espaçamento de amostras do núcleo do filtro anisotrópico.
Valores programados utilizados na amostragem bi/trilinear actual incluem: largura-u e largura-v de um núcleo de quatro pontos. Valores adicionais para amostragem anisotrópica programável, de acordo com a invenção, incluem o espaçamento du das amostras em u, e o espaçamento dv das amostras em v. Nesta consideração, a invenção permite a especificação ou modificação destes parâmetros por pixel em adição ao por vértice, seguido por repetição. Por exemplo, tais técnicas seriam suficientes para mapas de ambiente desfocado anisotrópicamente.
Modelo de Pseudocódigo Não Limitativo
Modelo de pseudocódigo para um sombreador anisotrópico é como se segue: para cada pixel {
CalcularBaseUV( &u, &v )
CalcularDuDv (com base na equação padrão de área) soma = 0.0; para cada amostra { u = u + du; v = v + dv; soma += ApanharAmostraBilinear( u, v ) } soma = soma/namostras (1,2,4,8) 45
Modelo de pseudocódigo para um sombreador para desfocagem de movimento, e. g., para sombreador de desfocagem anisotrópica para simular metal polido com mapas de ambiente, que funciona em dados por vértice 2-D, é como se segue: para cada pixel {
CalcularBaseUV( &u, &v )
LerDuDv da textura ou repetições se por poly soma = 0,0; para númeroamostras (de um modo preferido potência de 2) { u = u + du; v = v + dv; soma += ApanharAmostraBilinear( u, v ); } soma = soma/namostras (1,2,4,8,16); retornar soma; }
Modelo de pseudocódigo para um sombreador de superfície de sombra nitida, e. g., para um sombreador auto-sombreado de superfície local, o qual fornece limites de sombra nítidos, mas permite sair cedo da amostragem quando é determinado que a posição está na sombra, é com se segue: du, dv, dw // passos no sentido da fonte de luz // (repetido dos vértices) para cada pixel {
CalcularBaseUV( &u, &v ) w = AmostraH( u, v ); // inicializa o raio 46 neste pixel soma = 0,0; para i=0; i<númeroamostras (não é requerido potência de 2) { u = u + du; v = v + dv; w = w + dw; h = amostraH( u, v); se ( h > w ) retorna 0,5; } retorna 1,0; // repete para a luz // apanhar largura // se, largura acima do raio // então, o pixel está na sombra // senão, está completamente iluminado }
Modelo de pseudocódigo para um sombreador de superfície de sombra desfocada, o qual calcula um valor fraccionário da pela distribuição de sombra ao(s) obstrutor(es), é com se segue: du, dv, dw // passos no sentido da fonte de luz // (repetido dos vértices) para cada pixel {
CalcularBaseUV( &u, &v ) w = AmostraH( u, v ); // inicializa o raio neste pixel 47 soma = 0,0; para númeroAmostras (não é requerido potência de 2) { u = u + du; v = v + dv; w = w + dw; h = amostraH( u, del = h - w; se ( del > max ) // repete para a luz v ) ; //// max = del; apanhar largura largura acima do raio // encontra valor mais elevado } mapaMaxparaSombra () }
Exemplos adicionais da utilização da invenção inclui providenciar um sombreador de traçagem de raios volumétrica programável, o qual acumula e integra valores de amostra trilinear. Como um sombreador pode comportar-se, de um modo diferente, com base na complexidade dos dados no ambiente na conduta. Nesta consideração, a invenção pode ser utilizada em harmonia com o z-buffer para integrar objectos opacos. Num tal caso, uma leitura do z-buffer pode ser executada, e o z-buffer pode ser comparado por amostra. Também, uma tal técnica pode assumir que os raios estão sempre afastados do olho, que tal integração pode terminar de acordo com o resultado da profundidade da operação de comparação.
Outros exemplos de utilização da invenção inclui providenciar um sombreador de neblina/pele volumétrico auto-sombreado programável, o qual utiliza o método de renderização 48 estilo splat actual para dados de volume, mas utiliza a(s) técnica (s) descrita (s) acima para calcular raios de sombra.
Existem múltiplas formas de implementar a presente invenção. Uma forma é providenciar uma implementação por meio de coprocessador(es) , e. g., GPU(s), são pré-fabricados para executar a funcionalidade da invenção, e receber comandos apropriados à amostragem controlável de textura aqui descrita. Outra implementação da invenção inclui programação de coprocessador (es) manual ou automaticamente para atingir a funcionalidade da invenção, por meio de uma API apropriada, conjunto de ferramentas, código de programa de ligação, sistema operativo, objecto de software isolado ou descarregável, etc. permitindo a utilização da invenção entre a aplicação e o coprocessador. Outra implementação da invenção, inclui alteração dos parâmetros que alimentam o(s) coprocessador (es) próximo da aplicação para fazer a modificação/substituição dos parâmetros de superfície do processo de amostragem de textura transparente ao(s) coprocessador(es). Assim, a invenção contempla a implementação de amostragem de textura programável, descrita aqui, totalmente em hardware, parte em hardware e parte em software, assim como um implementação de software.
Num modelo de implementação da invenção, é providenciado um componente de API, o qual permite as especificações do(s) parâmetro(s) na indicação da amostragem que identifica um vector de direcção para ocorrer a amostragem. Também, são contempladas todas as variações descritas acima com respeito aos vectores de amostragem multidimensional. Por exemplo, o terceiro componente utilizado para elevação da inclinação pode ser utilizado para modelação de sombras, renderização volumétrica, etc. Um exemplo 49 de um tal componente de API para operar em cima de registos de hardware é, em formato de pseudocódigo, como se segue:
LD# rO, tO,vO
Amostra de textura configurada em estágio #
Colocar resultado em rO
Amostra em texcoord tO
Com eixo de superfície vO e modo contar/misturar de amostragem definido na declaração do estágio # como em: stg # modowrap = off, modotile = wrap, modofiltro = programável, contaramostra = 16 largura = 1 filtroop = substituir (valores especificados na aplicação)
Uma parte de hardware exemplificativa, que permite que o vectorde direcção/passo para o sombreado anisotrópico seja controlável pelos anteriores meios especificados de API, inclui a seguinte funcionalidade: (A) Por Defeito, (B) Substituir, (C) Adicionar e (D) Modular.
No que a isto se refere, Por Defeito, define uma amostragem convencional não controlada pela aplicação, a qual calcula o passo e o sentido para amostragem com base num algoritmo de filtragem anisotrópica padrão. A função Substituir substitui a Por Defeito com valores especificados pela aplicação. A função Adicionar adiciona os 50 valores especificados pela aplicação aos valores calculados pelo circuito integrado para determinar a direcção da amostragem final. A função Modular multiplica o vector de direcção especificado pela aplicação pelo calculado no circuito integrado para determinar a direcção da amostragem final.
Numa forma de realização da invenção, circuitos integrados de hardware utilizam existentes técnicas de hardware dependentes de leitura para fazer amostras individuais de modo a implementar as várias técnicas da invenção. Uma tal forma de realização permite que uma aplicação controle a posição de cada amostra no núcleo, não apenas a de cada conjunto de duas por duas superfícies bilineares, e deste modo, é mais generalista que algumas das técnicas descritas acima.
Utilizações adicionais da invenção incluem a utilização de derivadas da aproximação de mapeamento de horizonte de Nelson Max para atingir texturas auto sombreadas ao controlar os parâmetros utilizados respeitantes a isso. A invenção nas suas várias formas de realização relevantes, também, suporta (1) detecção de, (2) "sair cedo" ou (3) um retorno de nulo(s) quando o raio de modelação intersecta o z-buffer actual, ou quando ocorre saturação.
Em outra forma de realização da invenção, são providenciados sombreadores de amostragem programável que permitem controlo algorítmico das operações de amostragem, como descrito em vários detalhes acima. Mais ainda, são alcançados certos efeitos de segunda ordem, tais como a capacidade de variar o espaçamento destes incrementos, ou o tamanho do núcleo 51 a cada passo, de modo que o desfocar, distribuir luzes, etc. pode ser modelado.
Como acima mencionado, enquanto modelos de formas de realização da presente invenção foram descritos em ligação com vários dispositivos de computação e arquitecturas de rede, os conceitos subjacentes podem ser aplicados a qualquer dispositivo ou sistema no qual é desejável executar amostragem de textura. Assim, as técnicas para providenciar processamento de sinal melhorado de acordo com a presente invenção podem ser aplicadas a uma variedade de aplicações e dispositivos. Por exemplo, o(s) algoritmo(s) da invenção podem ser aplicados ao sistema operativo de um dispositivo computacional, providenciado como um objecto separado no dispositivo, como parte de outro objecto, como um objecto descarregável de um servidor, com um "homem do meio" entre um dispositivo ou objecto e a rede, como um objecto distribuído, etc. Enquanto modelos de linguagens de programação, nomes e exemplos são escolhidos aqui como representativos de várias escolhas, estas linguagens, nomes e exemplos não pretendem ser limitativos. Qualquer especialista na técnica perceberá que existem numerosos modos de providenciar código de objecto que alcance a mesma, similar ou equivalente amostragem controlável de textura alcançada pela invenção.
As várias técnicas descritas aqui podem ser implementadas em ligação com hardware ou software ou, onde apropriado, com uma combinação dos dois. Assim, os métodos e aparelhos da presente invenção, ou certos aspectos ou partes desta, podem tomar a forma de código de programa (i. e., instruções) embutido em média física, tal como disquetes, CD-ROMs, discos rígidos, ou qualquer outro meio de armazenamento que seja lido pela máquina, em que quando o código de programa é carregado para e executado 52 por uma máquina, tal como um computador, a máquina torna-se um aparelho para exercer a invenção. No caso de execução de código de programa em computadores programáveis, o dispositivo de computação, de um modo geral, incluirá um processador, um meio de armazenamento que seja lido pelo processador (incluindo memória volátil e não volátil e/ou elementos de armazenamento), pelo menos um dispositivo de entrada, e pelo menos um dispositivo de saída. Um ou mais programas que podem utilizar os serviços de processamento de sinal da presente invenção, e. g., através da utilização da uma API de processamento de dados ou similar, são, de um modo preferido, implementados num elevado nível processual ou linguagem de programação orientada a objectos para comunicar com um sistema de computador. Contudo, se desejado, o(s) programa(s) pode(m) ser implementado(s) em assembler ou linguagem máquina. Neste caso, a linguagem pode ser uma linguagem compilada ou interpretada, e combinada com implementações de hardware.
Os métodos e aparelhos da presente invenção, também, podem ser praticados através de comunicações incorporadas na forma de código de programa que é transmitido sobre algum meio de transmissão, tal como sobre fios de electricidade ou cablagem, através de fibra óptica, ou através de qualquer outra forma de transmissão, em que, quando o código de programa é recebido e carregado para e executado por uma máquina, tal como uma EPROM, uma linha de portas, um dispositivo de lógica programável (PLD), um computador cliente, um gravador de vídeo ou similar, ou uma máquina receptora que tem capacidades de processamento de sinal como descrito acima em modelos de formas de realização, torna-se um aparelho para exercer a invenção. Quando implementado num processador de utilização geral, o código de programa combina com o processador para providenciar um único aparelho que opera 53 para invocar a funcionalidade da presente invenção. Adicionalmente, qualquer técnica de armazenamento utilizada em ligação com a presente invenção pode, de um modo invariável, ser uma combinação de hardware e software.
Enquanto a presente invenção tem sido descrita em ligação com as preferidas formas de realização das várias figuras, deve ser compreendido que outras formas de realização similares podem ser utilizadas ou modificadas e adições podem ser feitas à forma de realização descrita para executar a mesma função da presente invenção sem prejuízo desta. Por exemplo, enquanto modelos de ambientes de rede da invenção são descritos num contexto de ambiente em rede, tal como ambientes em rede par a par, aquele que for especialista na técnica reconhecerá que a presente invenção não está limitada a isto, e que os métodos, como descritos na presente aplicação podem aplicar-se a qualquer dispositivo de computação ou ambiente, tal como uma consola de jogos, computador de bolso, computador portátil, etc., ligados por cabo ou sem fio, e podem ser aplicados a qualquer número de tais dispositivos de computação ligados através de uma rede de comunicações, e interagindo ao longo da rede. Mais ainda, deve ser realçado que a variedade de plataformas de computador, incluindo sistemas operativos de dispositivos de bolso e outras aplicações específicas de sistemas operativos são contempladas, de um modo especial, quando o número de dispositivos de rede sem fios continua a proliferar. Mais ainda, a presente invenção pode ser implementada em ou ao longo de uma pluralidade de circuitos integrados ou dispositivos de processamento, e armazenar pode, de um modo similar, ser realizado ao longo de uma pluralidade de dispositivos. Deste modo, a presente invenção não deve ser limitada a qualquer forma de realização única, mas, ao 54 contrário, deve ser interpretada no espirito e âmbito de acordo com as reivindicações apensas.
Lisboa, 23 de Fevereiro de 2007 55

Claims (70)

  1. REIVINDICAÇÕES 1. Dispositivo (184) de coprocessamento para utilizar em ligação com instruções de amostragem controlável de textura, compreendendo um componente de amostragem de textura passível de ser utilizado para executar uma amostragem de textura num mapa (200, 200b, 200c) de textura de acordo com, pelo menos, um parâmetro (Auo, Δνο, So, θο, Aunovo, Δνηονο, sn0vo r θηονο) especificado, definindo uma superfície de amostragem utilizada em ligação com a referida amostragem de textura do referido mapa de textura, caracterizado por o dispositivo de coprocessamento compreender ainda um componente de entrada passível de ser utilizado para receber a especificação de, pelo menos, um referido parâmetro definindo a referida superfície de amostragem.
  2. 2. Dispositivo de coprocessamento de acordo com a reivindicação 1, em que o referido componente de entrada inclui, pelo menos, um de um primeiro componente de entrada que recebe instruções para modificar, pelo menos, um parâmetro (Δυ, Δν, s, Θ) padrão, ao receber uma especificação de, pelo menos, um valor (Δυ0, Δν0) de desvio para o referido, pelo menos um, parâmetro padrão e um segundo componente de entrada que recebe instruções para substituir, pelo menos um, parâmetro (Au, Δν, s, Θ) padrão com, pelo menos, um parâmetro (Aun0vo, Δνηονο, Sn0vo, θηθνο) de substituição. 1
  3. 3. Dispositivo de coprocessamento de acordo com a reivindicação 2, em que a referida primeira componente de entrada que recebe instruções de modificação inclui, pelo menos, um de um terceiro componente de entrada que recebe instruções para adicionar o valor de desvio e o parâmetro padrão, um quarto componente de entrada que recebe instruções para multiplicar o valor de desvio e o valor padrão, um quinto componente de entrada que recebe instruções para aplicar um de entre o valor de desvio e o parâmetro padrão como um expoente, um sexto componente de entrada que recebe instruções para subtrair o valor de desvio e o parâmetro padrão, e um sétimo componente de entrada que recebe instruções para executar uma função matemática predefinida com base no parâmetro padrão e no valor de desvio.
  4. 4. Dispositivo de coprocessamento de acordo com uma das reivindicações 1 a 3, em que a referida superfície de amostragem é uma superfície de amostragem resultante de, pelo menos, um de entre um processo de amostragem por pontos, um processo de filtragem bilinear, um processo de mapeamento MIP, um processo de filtragem anisotrópica e um processo anti-efeito de escada.
  5. 5. Dispositivo de coprocessamento de acordo com a reivindicação 1, em que o referido componente de entrada inclui um componente que recebe instruções para especificar o referido, pelo menos um, parâmetro, pelo menos, um por vértice e por pixel (222) em ligação com o referido componente de amostragem de textura. 2
  6. 6. Dispositivo de coprocessamento de acordo com a reivindicação 5, incluindo, ainda, aplicar de modo iteractivo a referida amostragem de textura do componente de amostragem de textura.
  7. 7. Dispositivo de coprocessamento de acordo com a reivindicação 1, em que o referido componente de entrada inclui um componente que recebe instruções para especificar, pelo menos, um de um tamanho de passo (s0, Snovo) ® uma orientação (θο, θηονο) da superfície de amostragem.
  8. 8. Dispositivo de coprocessamento de acordo com a reivindicação 5 ou 6, em que o referido componente de entrada inclui, pelo menos, um de um primeiro componente de entrada que recebe instruções para especificar o espaçamento du das amostras numa direcção u e um segundo componente de entrada que recebe instruções para especificar o espaçamento dv das amostras numa direcção v.
  9. 9. Dispositivo de coprocessamento de acordo com a reivindicação 5 ou 6, em que o referido componente de entrada inclui um componente que recebe instruções para especificar, pelo menos, um de um valor Au, um valor Δν e um valor Aw.
  10. 10. Dispositivo de coprocessamento de acordo com a reivindicação 1, em que o referido componente de entrada inclui um componente que recebe instruções para especificar um de um valor aa e um valor 0¾ para utilizar em ligação com um cálculo de filtragem bilinear. 3
  11. 11. Dispositivo de coprocessamento de acordo com uma das reivindicações 1 a 3, em que a referida superfície de amostragem é uma superfície de amostragem de filtragem anisotrópica.
  12. 12. Dispositivo de coprocessamento de acordo com a reivindicação 11, em que o referido , pelo menos um, parâmetro inclui, pelo menos, um de uma direcção e um espaçamento das amostras de núcleo de filtro anisotrópico.
  13. 13. Dispositivo de coprocessamento de acordo com uma das reivindicações 1 a 12, em que a referida amostragem de textura do referido mapa de textura pelo componente de amostragem de textura de acordo com os referidos parâmetros especificados altera, pelo menos, um efeito visual de espaço de pixel resultante da referida amostragem de textura, e, pelo menos, um referido efeito visual inclui, pelo menos um de: um efeito de desfocagem, um efeito granulado, efeito de vaga, um efeito aparecimento súbito de pixéis, um efeito de escada temporal, um efeito de tremor óptico da textura, um efeito de arrastamento da textura e um efeito de aparecimento de riscas.
  14. 14. Dispositivo de coprocessamento de acordo com uma das reivindicações 1 a 12, em que a referida amostragem de textura do referido mapa de textura pelo componente de amostragem de textura de acordo com os referidos parâmetros textura uma superfície de triângulo para alcançar, pelo menos um de, um efeito luminoso, um efeito de mapeamento de relevo, um efeito de desfocagem, um efeito de desfocagem de reflexão, um efeito de desfocagem de Fresnel, um efeito marmorização, um efeito de água em movimento, um efeito de 4 névoa linear, um efeito de névoa exponencial, um efeito de névoa com base na distância, um efeito de transparência, um efeito de translucidez, um efeito de superfície curvada, um efeito de sombreamento distinto, um efeito de sombreamento indistinto e um efeito de texturação volumétrica.
  15. 15. Dispositivo de coprocessamento de acordo com a reivindicação 1, em que o referido componente de entrada inclui um primeiro componente de entrada que recebe instruções para especificar, pelo menos, um parâmetro de uma superfície de amostragem que aplica desfocagem de movimento e o referido componente de entrada inclui ainda um segundo componente que recebe instruções para aplicação de dados de nível de vértice iterados para controlar um vector de direcção da superfície de amostragem.
  16. 16. Dispositivo de coprocessamento de acordo com a reivindicação 1, em que o referido componente de entrada inclui um primeiro componente de entrada que recebe instruções para especificar, pelo menos, um parâmetro de uma superfície de amostragem que aplica, pelo menos uma de, uma reflexão de superfície anisotrópica, iluminação difusa e uma aproximação a uma iluminação especular, e o referido componente de entrada inclui ainda um segundo componente que recebe instruções para aplicar uma especificação de direcção de amostragem por vértice e por pixel da superfície de amostragem.
  17. 17. Dispositivo de coprocessamento de acordo com a reivindicação 1, em que o referido componente de entrada inclui um primeiro componente de entrada que recebe instruções para especificar, pelo menos, um parâmetro de 5 uma superfície de amostragem que aplica auto-sombreado de superfície e o referido componente de entrada inclui ainda um segundo componente de entrada que recebe instruções para aplicar especificação de direcção da amostragem por pixel da superfície de amostragem.
  18. 18. Dispositivo de coprocessamento de acordo com a reivindicação 1, em que o referido componente de entrada inclui ainda um componente que recebe instruções para especificar parâmetros de controlo para cálculos derivados de mapeamento de horizonte de Nelson Max.
  19. 19. Dispositivo de coprocessamento de acordo com a reivindicação 1, em que o referido componente de entrada inclui um primeiro componente de entrada que recebe instruções para especificar, pelo menos, um parâmetro de uma superfície de amostragem que aplica amostragem volumétrica de traçagem de raios, em que a amostragem volumétrica de traçagem de raios inclui dividir um volume em polígonos relativamente ortogonais a uma direcção de visualização e o referido componente de entrada inclui ainda um segundo componente de entrada que recebe instruções para especificar a direcção de amostragem da superfície de amostragem, e o referido componente de amostragem de textura aplica, de modo iterativo, a direcção de amostragem especificada.
  20. 20. Dispositivo de coprocessamento de acordo com a reivindicação 19, incluindo ainda um componente de detecção que detecta quando é que um de um raio traçado intercepta um z-buffer actual e quando ocorre saturação. 6
  21. 21. Dispositivo de coprocessamento de acordo com a reivindicação 1, em que o referido componente de entrada inclui um primeiro componente de entrada que recebe instruções para especificar, pelo menos, um parâmetro de uma superfície de amostragem que aplica renderização volumétrica auto-sombreada em combinação com uma divisão convencional ou renderização volumétrica estilo splat e o referido componente de entrada inclui ainda um segundo componente de entrada, que recebe instruções para aplicar uma especificação de direcçâo de amostragem por vértice da superfície da amostragem.
  22. 22. Dispositivo de coprocessamento de acordo com a reivindicação 1, em que o referido componente de entrada inclui um componente que recebe instruções para especificar um vector de direcçâo da superfície de amostragem de, pelo menos, uma de uma interface de programação de aplicação, código de programa de gestão, um sistema operativo e uma aplicação.
  23. 23. Dispositivo de coprocessamento de acordo com uma das reivindicações 1 a 22, incluindo ainda, pelo menos, uma unidade (184) de processamento gráfico.
  24. 24. Meio legível por computador (20, 130-132, 141, 152, 156, 181, 186), para efectuar uma amostragem controlável de textura tendo armazenado em si, pelo menos, um módulo (135, 135a-135e, 136, 145, 146, 185) executável por computador compreendendo instruções executáveis por computador para executar um método, compreendendo o método: 7 especificação de, pelo menos, um parâmetro (Δυο, Δν0, s0, θο, ΔυηθνοΛ Δνηθνο^ Snovor θη0ν0) definindo uma superfície de amostragem utilizada em ligação com amostragem de textura de um mapa (200, 200b, 200c) de textura; e inicialização da amostragem de textura do referido mapa de textura no dispositivo de coprocessamento de acordo com a reivindicação 1 de acordo com os referidos parâmetros especificados definindo a referida superfície de amostragem.
  25. 25. Meio legível por computador de acordo com a reivindicação 24, em que a referida especificação inclui, pelo menos, uma modificação de, pelo menos, um parâmetro padrão (Δυ, Δν, s, Θ) ao especificar, pelo menos, um valor (Δυο, Δνο) de desvio para, pelo menos, um referido parâmetro padrão e substituir, pelo menos, um parâmetro (Au, Δν, s, Θ) padrão por, pelo menos, um parâmetro (Δυη0ν0, Δνηονο, sn0v0, θηθνο) de substituição.
  26. 26. Meio legível por computador de acordo com a reivindicação 25, em que a referida modificação inclui, pelo menos, uma das operações de, adicionar o valor de desvio e o parâmetro padrão, multiplicar o valor de desvio e o parâmetro padrão, aplicar o valor de desvio ou o parâmetro padrão como um expoente, subtrair o valor de desvio e o parâmetro padrão, e executar uma função matemática predefinida com base no parâmetro padrão e no valor de desvio
  27. 27. Meio legível por computador de acordo com uma das reivindicações 24 a 26, em que a referida superfície de 8 amostragem é uma superfície de amostragem de, pelo menos, um de um processo de amostragem por pontos, um processo de filtragem bilinear, um processo de mapeamento MIP, um processo de filtragem anisotrópica e um processo anti-efeito de escada.
  28. 28. Meio legível por computador de acordo com a reivindicação 24, em que a referida especificação inclui especificar, pelo menos, um referido parâmetro, pelo menos um, de por vértice e por pixel (222) em ligação com a referida amostragem de textura.
  29. 29. Meio legível por computador de acordo com a reivindicação 28, em que o método inclui ainda aplicar, de um modo iterativo, a referida amostragem de textura.
  30. 30. Meio legível por computador de acordo com a reivindicação 24, em que a referida especificação inclui especificar, pelo menos, um de um tamanho de passo (so, sn0v0) e uma orientação (θ, θηθνο) da superfície de amostragem.
  31. 31. Meio legível por computador de acordo com a reivindicação 28 ou 29, em que a referida especificação inclui especificar, pelo menos, uma especificação do espaçamento du de amostras numa direcção u ou especificação de espaçamento dv de amostras numa direcção v.
  32. 32. Meio legível por computador de acordo com a reivindicação 28 ou 29, em que a referida especificação inclui especificar, pelo menos um de, um valor Au, um valor Δν e um valor Aw. 9
  33. 33. Meio legível por computador de acordo com a reivindicação 24, em que a referida especificação inclui especificar, pelo menos, um de um valor aa e um valor capara utilizar em ligação com um cálculo de filtragem bilinear.
  34. 34. Meio legível por computador de acordo com uma das reivindicações 24 a 26, em que a referida superfície de amostragem é uma superfície de amostragem de filtragem anisotrópica.
  35. 35. Meio legível por computador de acordo com a reivindicação 34, em que, pelo menos, um referido parâmetro inclui, pelo menos, um de uma direcção e espaçamento de amostras de núcleo de filtros anisotrópicos.
  36. 36. Meio legível por computador de acordo com uma das reivindicações 24 a 35, em que a amostragem de textura inicializada pela referida amostragem de textura iniciadora do referido mapa de textura de acordo com os referidos parâmetros especificados altera, pelo menos, um efeito visual de espaço de pixel resultante da referida amostragem de textura, e, pelo menos, um referido efeito visual inclui, pelo menos, um de: um efeito de desfocagem, um efeito de granulado, um efeito de efeito de vaga, um efeito de aparecimento súbito de pixéis, um efeito de efeito de escada temporal, um efeito de tremor óptico de textura, um efeito de arrastamento de textura e um efeito de aparecimento de riscas.
  37. 37. Meio legível por computador de acordo com uma das reivindicações 24 a 35, em que a amostragem de textura inicializada pela referida amostragem de textura iniciadora 10 do referido mapa de textura de acordo com os referidos parâmetros especificados textura uma superfície triangular para alcançar, pelo menos um de, um efeito luminoso, um efeito de mapeamento de relevo, um efeito de desfocagem, um efeito de desfocagem de reflexão, um efeito de desfocagem de Fresnel, um efeito de marmorização, um efeito de água em movimento, um efeito de névoa linear, um efeito de névoa exponencial, um efeito de névoa com base na distância, um efeito de transparência, um efeito de translucidez, um efeito de superfície curvada, um efeito de sombreamento distinto, um efeito de sombreamento indistinto e um efeito de texturação volumétrica.
  38. 38. Meio legível por computador de acordo com a reivindicação 24, em que a referida especificação de, pelo menos, um parâmetro inclui especificar, pelo menos, um parâmetro de uma superfície de amostragem que aplica desfocagem de movimento e a referida especificação inclui ainda a aplicação de dados de nível de vértice iterados para controlar um vector de direcção da superfície de amostragem.
  39. 39. Meio legível por computador de acordo com a reivindicação 24, em que a referida especificação de, pelo menos, um parâmetro inclui especificar, pelo menos, um parâmetro de uma superfície de amostragem que aplica, pelo menos, uma de uma reflexão de superfície anisotrópica, iluminação difusa e uma aproximação à iluminação especular e a referida especificação inclui ainda aplicar uma especificação de direcção de amostragem por vértice e por pixel da superfície de amostragem. 11
  40. 40. Meio legível por computador de acordo com a reivindicação 24, em que a referida especificação de, pelo menos, um parâmetro inclui especificar, pelo menos, um parâmetro de uma superfície de amostragem que aplica auto-sombreado de superfície e a referida especificação inclui ainda aplicar uma especificação de direcção de amostragem por pixel da superfície de amostragem.
  41. 41. Meio legível por computador de acordo com a reivindicação 40, em que a referida especificação inclui ainda especificar parâmetros de controlo para cálculos derivados de mapeamento de horizonte de Nelson Max.
  42. 42. Meio legível por computador de acordo com a reivindicação 24, em que a referida especificação de, pelo menos, um parâmetro inclui especificação, de pelo menos, um parâmetro de uma superfície de amostragem que aplica amostragem volumétrica de traçagem de raios, em que a amostragem volumétrica de traçagem de raios inclui dividir um volume em polígonos relativamente ortogonais a uma direcção de visualização e a referida especificação inclui ainda especificar a direcção de amostragem da superfície de amostragem, e a referida amostragem de textura iniciada pela referida amostragem de textura iniciadora inclui aplicação iterativa, da direcção da amostragem especificada.
  43. 43. Meio legível por computador de acordo com a reivindicação 42, em que o método inclui ainda detectar quando é que um de um raio traçado intercepta um z-buffer actual e quando ocorre saturação. 12
  44. 44. Meio legível por computador de acordo com a reivindicação 24, em que a referida especificação de, pelo menos, um parâmetro inclui especificar, pelo menos, um parâmetro de uma superfície de amostragem que aplica renderização volumétrica auto-sombreada em combinação com uma divisão convencional ou renderização volumétrica de estilo splat e a referida especificação inclui ainda aplicar uma especificação de direcção de amostragem por vértice da superfície de amostragem.
  45. 45. Meio legível por computador de acordo com a reivindicação 24, em que a referida especificação inclui especificar o vector de direcção da superfície de amostragem através de um componente de interface de programação de aplicação.
  46. 46. Meio legível por computador de acordo com uma das reivindicações 24 a 45, em que os referidos módulos são incluídos em, pelo menos, um de uma interface de programação de aplicação, código de programa de gestão, um sistema operativo e uma aplicação.
  47. 47. Método para efectuar uma amostragem controlável de textura, compreendendo: especificar, pelo menos, um parâmetro (Au0, Δν0, s0, θ0, Aunovof Δνηονο, Snovo, θη0ν0) definindo a superfície de amostragem utilizada em ligação com amostragem de textura do mapa (200, 200b, 200c) de textura; receber, por um componente de entrada de um dispositivo de coprocessamento, a especificação do referido, pelo 13 menos um, parâmetro definindo a referida superfície de amostragem; e amostragem de textura do referido mapa de textura de acordo com os referidos parâmetros especificados definindo a referida superfície de amostragem.
  48. 48. Método de acordo com a reivindicação 47, em que a referida especificação inclui, pelo menos, uma de uma modificação de, pelo menos, um parâmetro (Au, Δν, s, Θ) padrão ao especificar, pelo menos, um valor (Au0, Δν0) de desvio para o referido, pelo menos um, parâmetro padrão e substituir, pelo menos, um parâmetro (Au, Δν, s, Θ) padrão com, pelo menos, um parâmetro (Aun0vo, Δνηονο, sn0vo, 0nOvo)de substituição.
  49. 49. Método de acordo com a reivindicação 48, em que a referida modificação inclui, pelo menos, uma das operações de adicionar o valor de desvio e o parâmetro padrão, multiplicar o valor de desvio e o parâmetro padrão, aplicar o valor de desvio ou o parâmetro padrão como um expoente, subtrair o valor de desvio e o parâmetro padrão, e executar uma função matemática predefinida com base no parâmetro padrão e no valor de desvio.
  50. 50. Método de acordo com uma das reivindicações 47 a 49, em que a referida superfície de amostragem é uma superfície de amostragem de, pelo menos, um de um processo de amostragem por pontos, processo de filtragem bilinear, processo de mapeamento MIP, um processo de filtragem anisotrópico e um processo anti-efeito de escada. 14
  51. 51. Método de acordo com a reivindicação 47, em que a referida especificação inclui especificar o referido, pelo menos um, parâmetro de, pelo menos um, por vértice e por pixel (222) em ligação com a referida amostragem de textura.
  52. 52. Método de acordo com a reivindicação 51, incluindo ainda aplicar, de um modo iterativo, a referida amostragem de textura.
  53. 53. Método de acordo com a reivindicação 47, em que a referida especificação inclui especificar, pelo menos, um de um tamanho de passo (s0, snovo) e uma orientação (θ, θηθνο) da superfície de amostragem.
  54. 54. Método de acordo com a reivindicação 51 ou 52, em que a referida especificação inclui, pelo menos, uma de uma especificação do espaçamento du de amostras numa direcção u e uma especificação do espaçamento dv de amostras numa direcção v.
  55. 55. Método de acordo com a reivindicação 51 ou 52, em que a referida especificação inclui especificar, pelo menos, um de um valor Au, um valor Δν e um valor Aw.
  56. 56. Método de acordo com a reivindicação 47, em que a referida especificação inclui especificar um de um valor aa e um valor ab em ligação com cálculo de filtragem bilinear.
  57. 57. Método de acordo com uma das reivindicações 47 a 49, em que a referida superfície de amostragem é uma superfície de amostragem de filtragem anisotrópica. 15
  58. 58. Método de acordo com a reivindicação 57, em que o, pelo menos um, referido parâmetro inclui, pelo menos, um de uma direcção e um espaçamento de amostras de núcleo de filtro anisotrópico.
  59. 59. Método de acordo com uma das reivindicações 47 a 58, em que a referida amostragem de textura do referido mapa de textura de acordo com os referidos parâmetros especificados altera, pelo menos, um efeito visual de espaço de pixel resultando da referida amostragem de textura, e o referido, pelo menos um, efeito visual inclui, pelo menos um de: um efeito de desfocagem, um efeito de granulado, um efeito de vaga, um efeito de aparecimento súbito de pixéis, um efeito de escada temporal, um efeito de tremor óptico de textura, um efeito de arrastamento de textura e um efeito de aparecimento de riscas.
  60. 60. Método de acordo com uma das reivindicações 47 a 58, em que a referida amostragem de textura do referido mapa de textura de acordo com os referidos parâmetros especificados textura uma superfície triangular para alcançar, pelo menos um de, um efeito luminoso, um efeito de mapeamento de relevo, um efeito de desfocagem, um efeito de desfocagem de reflexão, um efeito de desfocagem de Fresnel, um efeito de marmorização, um efeito de água em movimento, um efeito de névoa linear, um efeito de névoa exponencial, um efeito de névoa com base na distância, um efeito de transparência, um efeito de translucidez, um efeito de superfície curvada, e um efeito de sombreamento distinto, um efeito de sombreamento indistinto e um efeito de texturação volumétrica. 16
  61. 61. Método de acordo com a reivindicação 47, em que a referida especificação de, pelo menos, um parâmetro inclui especificar, pelo menos, um parâmetro de uma superfície de amostragem que aplica desfocagem de movimento e a referida especificação inclui ainda a aplicação de dados de nível de vértice iterados para controlar um vector de direcção da superfície de amostragem.
  62. 62. Método de acordo com a reivindicação 47, em que a referida especificação de, pelo menos, um parâmetro inclui especificar, pelo menos, um parâmetro de uma superfície de amostragem que aplica, pelo menos, uma reflexão de superfície anisotrópica, iluminação difusa e uma aproximação a iluminação especular e a referida especificação inclui ainda aplicar uma de uma especificação de direcção de amostragem por vértice e por pixel da superfície de amostragem.
  63. 63. Método de acordo com a reivindicação 47, em que a referida especificação de, pelo menos, um parâmetro inclui especificar, pelo menos, um parâmetro de uma superfície de amostragem que aplica auto-sombreado de superfície e a referida especificação inclui ainda aplicar uma especificação de direcção de amostragem por pixel da superfície de amostragem.
  64. 64. Método de acordo com a reivindicação 63, em que a referida especificação inclui ainda especificar parâmetros de controlo para cálculos derivados de mapeamento de horizonte de Nelson Max. 17
  65. 65. Método de acordo com a reivindicação 47, em que a referida especificação de, pelo menos, um parâmetro inclui especificar, pelo menos, um parâmetro de uma superfície de amostragem que aplica amostragem volumétrica de traçagem de raios, em que a amostragem volumétrica de traçagem de raios inclui dividir um volume em polígonos relativamente ortogonais a uma direcção de visualização e a referida especificação inclui ainda especificar a direcção de amostragem da superfície de amostragem, e a referida amostragem de superfície inclui aplicar de modo iterativo a direcção de amostragem especificada.
  66. 66. Método de acordo com a reivindicação 65, incluindo ainda detectar quando é que um de um raio traçado intercepta um z-buffer actual e quando ocorre saturação.
  67. 67. Método de acordo com a reivindicação 47, em que a referida especificação de, pelo menos, um parâmetro inclui especificar, pelo menos, um parâmetro de uma superfície de amostragem que aplica renderização volumétrica auto-sombreada em combinação com uma divisão convencional ou renderização volumétrica de estilo splat e a referida especificação inclui ainda aplicar a especificação da direcção de amostragem por vértice da superfície de amostragem.
  68. 68. Método de acordo com a reivindicação 47, em que a referida especificação inclui especificar um vector de direcção da superfície de amostragem através de um componente da API. 18
  69. 69. Sinal de dados modulado transportando instruções executáveis por computador para executar o método de uma das reivindicações 47 a 68.
  70. 70. Dispositivo (10a, 10b, 110, HOa-llOe, 180) de cálculo compreendendo um meio para executar o método de uma das reivindicações 47 a 68. Lisboa, 23 de Fevereiro de 2007 19
PT03007903T 2002-06-20 2003-04-07 Sistemas e métodos para efectuar uma amostragem controlável de textura PT1376472E (pt)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US10/176,811 US7324116B2 (en) 2002-06-20 2002-06-20 Systems and methods for providing controllable texture sampling

Publications (1)

Publication Number Publication Date
PT1376472E true PT1376472E (pt) 2007-03-30

Family

ID=22645931

Family Applications (1)

Application Number Title Priority Date Filing Date
PT03007903T PT1376472E (pt) 2002-06-20 2003-04-07 Sistemas e métodos para efectuar uma amostragem controlável de textura

Country Status (25)

Country Link
US (2) US7324116B2 (pt)
EP (1) EP1376472B1 (pt)
JP (1) JP4371355B2 (pt)
KR (1) KR100863406B1 (pt)
CN (1) CN100401325C (pt)
AT (1) ATE352827T1 (pt)
AU (1) AU2003203677B2 (pt)
BR (1) BRPI0300983B1 (pt)
CA (1) CA2424705C (pt)
CO (1) CO5450258A1 (pt)
DE (1) DE60311359T2 (pt)
DK (1) DK1376472T3 (pt)
ES (1) ES2279910T3 (pt)
HK (1) HK1058420A1 (pt)
IL (1) IL155337A (pt)
MX (1) MXPA03004604A (pt)
MY (1) MY135056A (pt)
NO (1) NO326851B1 (pt)
NZ (1) NZ525338A (pt)
PL (1) PL360236A1 (pt)
PT (1) PT1376472E (pt)
RU (1) RU2324978C2 (pt)
SG (1) SG119180A1 (pt)
TW (1) TWI328200B (pt)
ZA (1) ZA200302810B (pt)

Families Citing this family (80)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7324116B2 (en) * 2002-06-20 2008-01-29 Microsoft Corporation Systems and methods for providing controllable texture sampling
US20070152977A1 (en) * 2005-12-30 2007-07-05 Apple Computer, Inc. Illuminated touchpad
US20050140688A1 (en) * 2003-12-29 2005-06-30 Kim Pallister Method and mechanism for programmable filtering of texture map data in 3D graphics subsystems
KR100823373B1 (ko) * 2003-12-29 2008-04-17 인텔 코오퍼레이션 3차원 그래픽 서브시스템들에서의 텍스쳐 맵 데이터의프로그램 가능 필터링을 위한 방법 및 메카니즘
WO2005106798A1 (en) * 2004-05-03 2005-11-10 Koninklijke Philips Electronics N.V. Graphics pipeline for rendering graphics
US8149235B2 (en) * 2004-08-20 2012-04-03 Microsoft Corporation System and method for upscaling low-resolution images
JP3961524B2 (ja) * 2004-09-21 2007-08-22 株式会社コナミデジタルエンタテインメント 画像処理装置、画像処理方法、ならびに、プログラム
US8189002B1 (en) * 2004-10-29 2012-05-29 PME IP Australia Pty, Ltd. Method and apparatus for visualizing three-dimensional and higher-dimensional image data sets
US7158143B2 (en) * 2004-12-03 2007-01-02 Via Technologies, Inc. Fast algorithm for anisotropic texture sampling
JP4660254B2 (ja) * 2005-04-08 2011-03-30 株式会社東芝 描画方法及び描画装置
US7463261B1 (en) * 2005-04-29 2008-12-09 Adobe Systems Incorporated Three-dimensional image compositing on a GPU utilizing multiple transformations
US7499051B1 (en) 2005-04-29 2009-03-03 Adobe Systems Incorporated GPU assisted 3D compositing
JP5537026B2 (ja) * 2005-04-29 2014-07-02 コーニンクレッカ フィリップス エヌ ヴェ マルチサーフェスモデリング
US20060250407A1 (en) * 2005-05-05 2006-11-09 Via Technologies, Inc. Texture filtering using a programmable table filter to improve computer graphics performmance
US7702131B2 (en) * 2005-10-13 2010-04-20 Fujifilm Corporation Segmenting images and simulating motion blur using an image sequence
US7262714B2 (en) * 2005-12-01 2007-08-28 Avago Technologies General Ip (Singapore) Pte. Ltd. Interpolating encoder utilizing a frequency multiplier
US7936359B2 (en) * 2006-03-13 2011-05-03 Intel Corporation Reconfigurable floating point filter
US7817161B2 (en) * 2006-06-26 2010-10-19 Microsoft Corporation Texture synthesis using dimensionality-reduced appearance space
US20080012874A1 (en) * 2006-07-14 2008-01-17 Spangler Steven J Dynamic selection of high-performance pixel shader code based on check of restrictions
US7659901B2 (en) * 2006-07-24 2010-02-09 Microsoft Corporation Application program interface for programmable graphics pipeline
US8970680B2 (en) * 2006-08-01 2015-03-03 Qualcomm Incorporated Real-time capturing and generating stereo images and videos with a monoscopic low power mobile device
US7764286B1 (en) * 2006-11-01 2010-07-27 Adobe Systems Incorporated Creating shadow effects in a two-dimensional imaging space
US7746352B2 (en) * 2006-11-03 2010-06-29 Nvidia Corporation Deferred page faulting in virtual memory based sparse texture representations
KR100818286B1 (ko) 2006-11-23 2008-04-01 삼성전자주식회사 안개 효과를 고려하여 3차원 그래픽스 데이터를 렌더링하는방법 및 장치
WO2008066292A1 (en) * 2006-12-02 2008-06-05 Electronics And Telecommunications Research Institute Apparatus for providing and transforming shader of 3d graphic system
US8437563B2 (en) 2007-04-04 2013-05-07 Telefonaktiebolaget L M Ericsson (Publ) Vector-based image processing
CN101286225B (zh) * 2007-04-11 2010-10-06 中国科学院自动化研究所 一种基于三维纹理硬件加速的海量数据体绘制方法
US7924290B2 (en) * 2007-05-30 2011-04-12 Nvidia Corporation Method and system for processing texture samples with programmable offset positions
US8134556B2 (en) * 2007-05-30 2012-03-13 Elsberg Nathan Method and apparatus for real-time 3D viewer with ray trace on demand
US8392529B2 (en) 2007-08-27 2013-03-05 Pme Ip Australia Pty Ltd Fast file server methods and systems
WO2009067680A1 (en) 2007-11-23 2009-05-28 Mercury Computer Systems, Inc. Automatic image segmentation methods and apparartus
US8319781B2 (en) 2007-11-23 2012-11-27 Pme Ip Australia Pty Ltd Multi-user multi-GPU render server apparatus and methods
WO2009067675A1 (en) 2007-11-23 2009-05-28 Mercury Computer Systems, Inc. Client-server visualization system with hybrid data processing
US9904969B1 (en) 2007-11-23 2018-02-27 PME IP Pty Ltd Multi-user multi-GPU render server apparatus and methods
US10311541B2 (en) 2007-11-23 2019-06-04 PME IP Pty Ltd Multi-user multi-GPU render server apparatus and methods
US8035641B1 (en) 2007-11-28 2011-10-11 Adobe Systems Incorporated Fast depth of field simulation
CN101751687B (zh) * 2008-12-18 2014-03-05 超威半导体(上海)有限公司 确定纹理映射参数以定义代表像素投影足迹的方法和装置
US8581916B2 (en) * 2009-06-26 2013-11-12 Intel Corporation Graphics analysis techniques
US8624907B2 (en) * 2009-06-26 2014-01-07 Intel Corporation Graphics analysis techniques
US8289341B2 (en) * 2009-06-29 2012-10-16 Intel Corporation Texture sampling
US9082216B2 (en) * 2009-07-01 2015-07-14 Disney Enterprises, Inc. System and method for filter kernel interpolation for seamless mipmap filtering
US8687011B2 (en) * 2010-10-28 2014-04-01 Microsoft Corporation Techniques for efficient sampling for image effects
JP5642804B2 (ja) * 2010-12-02 2014-12-17 デジタルプロセス株式会社 表示処理方法及び装置
RU2467395C1 (ru) * 2011-07-11 2012-11-20 Российская Федерация, От Имени Которой Выступает Министерство Промышленности И Торговли Российской Федерации Способ создания изображений трехмерных объектов для систем реального времени
CN102254340B (zh) * 2011-07-29 2013-01-09 北京麒麟网文化股份有限公司 一种基于gpu加速的环境光遮挡图像绘制方法及***
TWI470580B (zh) * 2011-09-01 2015-01-21 Univ Nat Taiwan 無資料庫之紋理合成的超解析度系統及方法
US9286122B2 (en) * 2012-05-31 2016-03-15 Microsoft Technology Licensing, Llc Display techniques using virtual surface allocation
RU2604674C2 (ru) * 2012-06-27 2016-12-10 Лэндмарк Графикс Корпорейшн Системы и способы для создания трехмерного текстурного атласа
US9286712B2 (en) 2013-03-15 2016-03-15 Google Inc. System and method for approximating cartographic projections by linear transformation
US8976190B1 (en) 2013-03-15 2015-03-10 Pme Ip Australia Pty Ltd Method and system for rule based display of sets of images
US20140267273A1 (en) * 2013-03-15 2014-09-18 Janne Kontkanen System and method for overlaying two-dimensional map elements over terrain geometry
US10070839B2 (en) 2013-03-15 2018-09-11 PME IP Pty Ltd Apparatus and system for rule based visualization of digital breast tomosynthesis and other volumetric images
US10152820B2 (en) * 2013-03-15 2018-12-11 Intel Corporation Texture address mode discarding filter taps
US11183292B2 (en) 2013-03-15 2021-11-23 PME IP Pty Ltd Method and system for rule-based anonymized display and data export
US9183666B2 (en) 2013-03-15 2015-11-10 Google Inc. System and method for overlaying two-dimensional map data on a three-dimensional scene
US9509802B1 (en) 2013-03-15 2016-11-29 PME IP Pty Ltd Method and system FPOR transferring data to improve responsiveness when sending large data sets
US11244495B2 (en) 2013-03-15 2022-02-08 PME IP Pty Ltd Method and system for rule based display of sets of images using image content derived parameters
US10540803B2 (en) 2013-03-15 2020-01-21 PME IP Pty Ltd Method and system for rule-based display of sets of images
US9355490B2 (en) 2013-11-14 2016-05-31 Intel Corporation Minimum-maximum filtering of graphical texture data
US9367948B2 (en) 2013-11-14 2016-06-14 Intel Corporation Flexible filter logic for multi-mode filtering of graphical texture data
US9355489B2 (en) 2013-11-14 2016-05-31 Intel Corporation Land grid array socket for electro-optical modules
GB2525636B (en) * 2014-04-30 2020-08-19 Geomerics Ltd Graphics processing systems
US20150379664A1 (en) * 2014-06-27 2015-12-31 Kalyan K. Bhiravabhatla Accelerated single plane clipping of polygons in graphics processing
US9704272B2 (en) * 2014-11-21 2017-07-11 Microsoft Technology Licensing, Llc Motion blur using cached texture space blur
US9779134B2 (en) * 2014-12-26 2017-10-03 Business Objects Software Ltd. System and method of data wrangling
JP6482283B2 (ja) * 2015-01-13 2019-03-13 三菱プレシジョン株式会社 三次元映像生成装置およびキューブマップ生成方法
US11599672B2 (en) 2015-07-31 2023-03-07 PME IP Pty Ltd Method and apparatus for anonymized display and data export
US9984478B2 (en) 2015-07-28 2018-05-29 PME IP Pty Ltd Apparatus and method for visualizing digital breast tomosynthesis and other volumetric images
TWI550416B (zh) * 2015-08-18 2016-09-21 國立交通大學 利用高維度子空間產生取樣之方法
KR20170034727A (ko) 2015-09-21 2017-03-29 삼성전자주식회사 그림자 정보 저장 방법 및 장치, 3d 렌더링 방법 및 장치
US10521517B2 (en) * 2016-02-10 2019-12-31 Autodesk, Inc. Designing objects using lattice structure optimization
CN106023292B (zh) * 2016-05-20 2018-11-06 浙江大学 一种基于数学函数的实时的大理石体纹理生成方法
CN108346178A (zh) 2017-01-23 2018-07-31 微软技术许可有限责任公司 混合现实对象呈现
US10388061B2 (en) 2017-02-22 2019-08-20 Microsoft Technology Licensing, Llc Generation of lighting data for a three-dimensional entity
US11270502B2 (en) 2017-08-22 2022-03-08 Alibaba Group Holding Limited Method and apparatus for image processing of three-dimensional model maps
US10909679B2 (en) 2017-09-24 2021-02-02 PME IP Pty Ltd Method and system for rule based display of sets of images using image content derived parameters
CN110570494A (zh) * 2018-06-05 2019-12-13 艾司科软件有限公司 用于各向异性地修改文本属性以符合分辨率极限的方法和设备
CN108955897B (zh) * 2018-08-13 2019-11-01 成都森川科技股份有限公司 运动货运列车测温还原方法
GB2583154B (en) * 2019-10-17 2021-04-28 Imagination Tech Ltd Texture filtering
US11158110B1 (en) * 2021-01-06 2021-10-26 Arm Limited Graphics texture mapping

Family Cites Families (30)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS63213079A (ja) 1987-02-28 1988-09-05 Nippon Telegr & Teleph Corp <Ntt> 画像生成装置
GB2245805A (en) * 1990-06-29 1992-01-08 Philips Electronic Associated Generating an anti-aliased image
US5307451A (en) * 1992-05-12 1994-04-26 Apple Computer, Inc. Method and apparatus for generating and manipulating graphical data for display on a computer output device
US5550960A (en) * 1993-08-02 1996-08-27 Sun Microsystems, Inc. Method and apparatus for performing dynamic texture mapping for complex surfaces
US5651104A (en) 1995-04-25 1997-07-22 Evans & Sutherland Computer Corporation Computer graphics system and process for adaptive supersampling
US5977977A (en) * 1995-08-04 1999-11-02 Microsoft Corporation Method and system for multi-pass rendering
JPH09245179A (ja) * 1996-03-08 1997-09-19 Mitsubishi Electric Corp コンピュータグラフィックス装置
US5877771A (en) * 1996-07-12 1999-03-02 Silicon Graphics, Inc. Method and apparatus for supersampling based on the local rate of change in texture
US5990903A (en) * 1997-02-03 1999-11-23 Micron Technologies, Inc. Method and apparatus for performing chroma key, transparency and fog operations
KR100603161B1 (ko) * 1997-04-12 2006-12-13 소니 가부시끼 가이샤 편집시스템및편집방법
KR100603173B1 (ko) * 1997-04-12 2006-12-15 소니 가부시끼 가이샤 편집장치및편집방법
GB9716251D0 (en) 1997-08-01 1997-10-08 Philips Electronics Nv Attribute interpolation in 3d graphics
US6300960B1 (en) 1997-08-04 2001-10-09 Pixar Animation Studios Realistic surface simulation in computer animation
US6037949A (en) 1997-08-04 2000-03-14 Pixar Animation Studios Texture mapping and other uses of scalar fields on subdivision surfaces in computer graphics and animation
US6097397A (en) 1997-11-20 2000-08-01 Real 3D, Inc. Anisotropic texture mapping using silhouette/footprint analysis in a computer image generation system
JP2000155845A (ja) 1998-05-29 2000-06-06 Mitsubishi Electronics America Inc 記憶装置、デ―タフォ―マッタ、デ―タにアクセスする方法、デ―タの領域をクリアする方法、デ―タを圧縮する方法、デ―タをフォ―マット化する方法、グラフィックスシステムおよびグラフィックスシステムを動作させる方法
WO2000004505A1 (en) 1998-07-16 2000-01-27 The Research Foundation Of State University Of New York Apparatus and method for real-time volume processing and universal 3d rendering
US6600487B1 (en) * 1998-07-22 2003-07-29 Silicon Graphics, Inc. Method and apparatus for representing, manipulating and rendering solid shapes using volumetric primitives
US6292193B1 (en) * 1998-07-30 2001-09-18 Compaq Computer Corporation Techniques for anisotropic texture mapping using multiple space-invariant filtering operations per pixel
GB9921777D0 (en) 1999-09-16 1999-11-17 Koninkl Philips Electronics Nv Method and apparatus for handling translucency in 3d graphics
JP3367509B2 (ja) 1999-12-16 2003-01-14 株式会社セガ 画像生成方法及びこれを用いた画像生成装置
WO2001063561A1 (en) * 2000-02-25 2001-08-30 The Research Foundation Of State University Of New York Apparatus and method for volume processing and rendering
US6580425B1 (en) * 2000-02-28 2003-06-17 Mitsubishi Electric Research Laboratories, Inc. Hierarchical data structures for surface elements
US6509902B1 (en) * 2000-02-28 2003-01-21 Mitsubishi Electric Research Laboratories, Inc. Texture filtering for surface elements
US6426755B1 (en) * 2000-05-16 2002-07-30 Sun Microsystems, Inc. Graphics system using sample tags for blur
JP2002032779A (ja) 2000-07-19 2002-01-31 Sony Corp データ処理装置及びデータ処理方法、並びに記憶媒体
US6664962B1 (en) * 2000-08-23 2003-12-16 Nintendo Co., Ltd. Shadow mapping in a low cost graphics system
US6664971B1 (en) * 2000-08-25 2003-12-16 Microsoft Corporation Method, system, and computer program product for anisotropic filtering and applications thereof
KR100393086B1 (ko) * 2001-05-15 2003-07-31 한국과학기술원 서브 텍셀 수준의 면적 점유비를 이용한 이방성 텍스춰필터링 방법 및 장치
US7324116B2 (en) * 2002-06-20 2008-01-29 Microsoft Corporation Systems and methods for providing controllable texture sampling

Also Published As

Publication number Publication date
TW200400471A (en) 2004-01-01
US20030234791A1 (en) 2003-12-25
RU2324978C2 (ru) 2008-05-20
DE60311359T2 (de) 2007-05-16
DK1376472T3 (da) 2007-05-21
US7719544B2 (en) 2010-05-18
NZ525338A (en) 2005-01-28
DE60311359D1 (de) 2007-03-15
PL360236A1 (en) 2003-12-29
CA2424705A1 (en) 2003-12-20
ATE352827T1 (de) 2007-02-15
MXPA03004604A (es) 2004-01-22
AU2003203677B2 (en) 2009-11-05
TWI328200B (en) 2010-08-01
ZA200302810B (en) 2004-02-12
KR20030097646A (ko) 2003-12-31
CN100401325C (zh) 2008-07-09
CO5450258A1 (es) 2004-10-29
AU2003203677A1 (en) 2004-01-22
ES2279910T3 (es) 2007-09-01
NO20031557L (no) 2003-12-22
NO20031557D0 (no) 2003-04-07
BR0300983A (pt) 2004-11-09
BRPI0300983B1 (pt) 2016-04-05
IL155337A (en) 2008-11-03
CA2424705C (en) 2013-02-12
IL155337A0 (en) 2003-11-23
EP1376472B1 (en) 2007-01-24
JP2004021979A (ja) 2004-01-22
CN1467687A (zh) 2004-01-14
KR100863406B1 (ko) 2008-10-14
HK1058420A1 (en) 2004-05-14
US20080122856A1 (en) 2008-05-29
JP4371355B2 (ja) 2009-11-25
MY135056A (en) 2008-01-31
SG119180A1 (en) 2006-02-28
EP1376472A1 (en) 2004-01-02
US7324116B2 (en) 2008-01-29
NO326851B1 (no) 2009-03-02

Similar Documents

Publication Publication Date Title
PT1376472E (pt) Sistemas e métodos para efectuar uma amostragem controlável de textura
US7212207B2 (en) Method and apparatus for real-time global illumination incorporating stream processor based hybrid ray tracing
EP1594091B1 (en) System and method for providing an enhanced graphics pipeline
Navarro et al. Motion blur rendering: State of the art
US20150187129A1 (en) Technique for pre-computing ambient obscurance
US9401043B2 (en) Photon beam diffusion
US9684997B2 (en) Efficient rendering of volumetric elements
US20100265250A1 (en) Method and system for fast rendering of a three dimensional scene
JP5873672B2 (ja) 仮想環境のポイントにおいて受光された光の量の推定方法
US8854392B2 (en) Circular scratch shader
US9905045B1 (en) Statistical hair scattering model
Günther et al. Decoupled opacity optimization for points, lines and surfaces
Huo et al. Spherical Gaussian‐based lightcuts for glossy interreflections
Hu et al. Interactive approximate rendering of reflections, refractions, and caustics
US20230274493A1 (en) Direct volume rendering apparatus
Liu et al. Non‐Linear Beam Tracing on a GPU
KR20120078070A (ko) 영상 처리 장치 및 방법
Okuno et al. Binary space partitioning visibility tree for polygonal and environment light rendering
Ragan-Kelley Practical interactive lighting design for RenderMan scenes
Otto et al. Physically-based Environment and Area Lighting using Progressive Rendering in WebGL
de Freitas Almeida MSc Computer Animation & Visual Effects September 2023
Johnson Algorithms For Rendering Optimization
Bugeja et al. High-fidelity graphics for dynamically generated environments using distributed computing
Haindl et al. Visualization
Peschel et al. Plausible visualization of the dynamic digital factory with massive amounts of lights