BRPI0300983B1 - método para proporcionar amostragem de textura controlável e dispositivo de co-processamento - Google Patents

método para proporcionar amostragem de textura controlável e dispositivo de co-processamento

Info

Publication number
BRPI0300983B1
BRPI0300983B1 BRPI0300983A BR0300983A BRPI0300983B1 BR PI0300983 B1 BRPI0300983 B1 BR PI0300983B1 BR PI0300983 A BRPI0300983 A BR PI0300983A BR 0300983 A BR0300983 A BR 0300983A BR PI0300983 B1 BRPI0300983 B1 BR PI0300983B1
Authority
BR
Brazil
Prior art keywords
sampling
texture
effect
parameter
input component
Prior art date
Application number
BRPI0300983A
Other languages
English (en)
Other versions
BR0300983A (pt
Inventor
Charles N Boyd
Michael A Toelle
Original Assignee
Microsoft Corp
Microsoft Technology Licensing Llc
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, Microsoft Technology Licensing Llc filed Critical Microsoft Corp
Publication of BR0300983A publication Critical patent/BR0300983A/pt
Publication of BRPI0300983B1 publication Critical patent/BRPI0300983B1/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)

Abstract

"sistemas e métodos para proporcionar amostragem de textura controlável". tratam-se de sistemas e métodos que são proporcionados para controlar a amostragem de textura em conexão com computação gráfica em um sistema de computador. nas várias modalidades, mecanismos aperfeiçoados para controlar a amostragem de textura são proporcionados, os quais permitem ao hardware acelerador 3-d aumentar muito o nível de realismo na renderização, incluindo mecanismos aperfeiçoados para (1) embaçamento de movimento; (2) gerar reflexões de superfície anisotrópicas; (3) gerar auto-sombreamento de superfície; (4) amostragem volumétrica de projeção de raio; (4) renderização volumétrica auto-sombreada e (50 projeção de raio volumétrica auto-sombreada. ao suplementar as técnicas de amostragem de textura existentes, parâmetros para a amostragem de textura podem ser substituído e/ou modificados.

Description

Relatório Descritivo da Patente de Invenção para "MÉTODO PARA PROPORCIONAR AMOSTRAGEM DE TEXTURA CONTROLÁVEL E DISPOSITIVO DE CO-PROCESSAMENTO".
AVISO E PERMISSÃO DE DIREITOS AUTORAIS
Uma parte da descrição deste documento de patente pode conter material que está sujeito à proteção por direito autoral. 0 proprietário do direito autoral não tem objeção à reprodução em fac-simile por qualquer pessoa do documento de patente ou da descrição de patente, à medida que ele aparece nos arquivos ou registros do Escritório de Marcas e Patentes, mas de outro modo reserva todos os direitos autorais quaisquer que sejam. 0 aviso seguinte deve aplicar-se a este documento: Copyright © 2001, Microsoft Corp.
CAMPO DA INVENÇÃO A presente invenção está direcionada a sistemas e métodos para proporcionar amostragem de textura em conexão com computação gráfica. Mais particularmente, a presente invenção está direcionada a sistemas e métodos para proporcionar amostragem de textura controlável.
FUNDAMENTO DA INVENÇÃO O mapeamento de textura permite que um sinal colorido ou de textura seja representado sobre a geometria, fornecendo a aparência do detalhe em malhas triangulares grosseiras. Utilizar texturas é geralmente mais eficiente do que refinar a geometria de portadora para representar o sinal por vértices. Enquanto o hardware de conversão em mapa de bits tem suportado o mapeamento básico da textura por vá- rios anos, ela tem recentemente começado a oferecer aspectos mais poderosos.
Uma vista geral do processo de mapeamento de textura é apresentado na Fig. 1. Dado o mapa de textura 2 00, possuindo os texels 202, o mapeamento da textura aplica o sinal do mapa de textura 200 para os triângulos 210 de uma tela reticulada de acordo com alguma configuração geométrica do triângulo e/ou aplica alguma transformação adicional, tal como sombreamento, iluminação, etc., a qual mapeia os texels 202 para os pixels 222. 0 mapeamento de textura é um problema que implica na teoria de Nyquist, até a extensão de que o efeito de serrilhado deve ser evitado, a qual declara que para reproduzir de forma precisa uma forma de onda analógica, o sinal analógico deve ser amostrado em uma taxa pelo menos duas vezes sua freqüência mais alta para estar apto a representar o sinal no domínio digital com um alto nível de precisão. As técnicas de conversão de digital para analógico são então utilizadas para reconstruir o sinal analógico original de forma precisa. Se uma taxa de amostragem insuficiente for utilizada, o resultado é o efeito de serrilhado, o qual é a informação de alta freqüência incorretamente amostrada que aparece como o ruído de freqüência inferior.
Os resultados da amostragem surgem em conexão i-gualmente com o mapeamento de textura. O processo de mapeamento de textura amostra os mapas de textura para os pixels da tela e, até a extensão possível, os dados do mapa de textura devem ter sido amostrados em uma taxa de amostragem su- ficientemente alta para abranger a mais elevada das informações de freqüência. A este respeito, tipicamente, os objetos da tela representados por um certo número de elementos de imagem (pixels) utilizam os mapas de textura com um número diferente de elementos de textura (texels). Quando os mapas de textura possuem mais texels do que o espaço do pixels, um único pixel pode mapear mais do que um texel, e quando os mapas de textura possuem menos texels do que o espaço do pixel, vários pixels podem mapear um único texel. Quando não existe mapeamento exato entre o espaço de textura e o espaço da imagem, podem surgir consequências para a qualidade da exibição.
Na verdade, o mapa de textura pode não estar apto a de forma eficaz mapear os detalhes apropriados da imagem para a área de pixels designadas, ou inversamente, uma área de pixels menor pode não estar apta a utilizar todos os detalhes de textura a partir de um mapa de textura maior / mais rico.
Especificamente, no caso onde um mapa de textura é muito pequeno quando comparado com a área de pixels sendo mapeada, então o mesmo texel é mapeado para pixels adjacentes, o que causa um efeito de bloco quando se vê a imagem. Em outro caso, se vários texels mapearem para o mesmo pixel, fica frequentemente em julgamento capturar qual texel exato, do grupo de texels que poderíam mapear para um dado pixel, será selecionado a partir do mapa de textura e aplicado para o pixel. Assim, isto é um processo dependente de algoritmo e pode resultar em artefatos conhecidos como chuviscado de textura e estouro de pixel, ambos os quais são muito perceptíveis quando a câmara move-se. Além disso, mesmo se um mesmo número ou substancialmente similar de pixels e de texels existirem para o mapeamento entre os mesmos, podem existir algumas transformações, ou funções, aplicadas junto aos texels antes da renderização, caso em que algum algoritmo deve ainda decidir de onde os dados de pixel devem vir com respeito aos dados de texel.
Para propósito de ilustrar problemas que podem surgir, o caso com um número de texels maior do que o número de pixels pode ser considerado como se segue. Assuma que existe uma superfície de quadro de anúncios quadrada em uma cena tridimensional (3-D) compreendendo dois triângulos e-quilãteros, onde o quadrado é 100x100 pixels. Se foi aplicado um mapa de textura compreendendo 200 listras horizontais vermelhas e azuis na parte de cima da área quadrada de 100x100 pixels, todas as 200 listras da textura poderíam não ser percebidas uma vez aplicadas junto ao quadro de avisos porque a textura possui mais amostras do que a área de pixels junto a qual ela será aplicada. Alguns dados de textura intermediários não serão utilizados no mapeamento e serão essencialmente ignorados. Â medida que o ponto de vista 3-D de alguém é movido sobre o quadro de avisos, se navegando-se em um jogo, por exemplo, surge um fenômeno chamado estouro de pixel, o qual é um resultado das listras de textura entrando e saindo de alinhamento com os pixels do quadro de avisos. Este é um caso de uma taxa de amostragem de textura insuficiente para descrever os detalhes da cena. Esta é uma ilustração de um artefato que pode resultar, como outros tipos de artefatos podem resultar igualmente a partir de uma amostragem de textura pobre.
Existem várias maneiras de se abordar para minimizar os artefatos da renderização causados por uma taxa de amostragem de textura insuficiente, na maior parte na forma de filtragem e de nova amostragem. Os dois métodos de filtro utilizados nos métodos de texturização simples como a amostragem de ponto são a Magnificação e a Minificação, os quais alteram os métodos de amostragem de textura para ajudar a evitar os problemas descritos acima. O algoritmo de minificação é utilizado no caso onde múltiplos texels podem mapear para um único pixel e ele seleciona o melhor texel de ajuste de entre o grupo de texels que poderíam mapear para o pixel. A técnica de magnificação é utilizada quando múltiplos pixels podem mapear para um único texel e ela mapeia um único texel para múltiplos pixels. Existem vários métodos variando em velocidade e qualidade para aplicar texturas, incluindo a amostragem de ponto, filtragem bilinear, mapeamento MIP trilinear, filtragem anisotrópica e suavização (antialiasing). O modo mais básico de aplicar texturas junto a uma superfície é a amostragem de ponto, a qual utiliza um método de amostragem de "vizinho mais próximo". Quando o renderi-zador busca um pedaço de textura, ele captura a amostra de textura a partir do mapa de textura que possui as coordenadas (u, v) que mapeiam mais próximo para as coordenadas do pixel (o centro do pixel) e aplica a mesma junto ao pixel. Esta maneira de se abordar é ilustrada na Fig. 2A, onde a posição relevante do mapeamento a partir do espaço de pixels para o espaço de texels está localizada na posição PI. A-qui, desde que o texel mais próximo é Tl, TI é selecionado. Apesar desta maneira de se abordar exigir a menor quantidade de largura de banda de memória em termos do número de texels que necessitam ser lidos a partir da memória de textura, isto é, um por pixel, o resultado freqüentemente causa artefatos como discutido acima, devido às amostras insuficientes, isto é, pixels da tela, para descrever a textura. Mas mesmo o hardware 3-D do computador pessoal (PC) de primeira geração tinha um aspecto para ajudar a limpar, ou pelo menos o-cultar estes problemas de amostragem até uma certa extensão, pela utilização da filtragem bilinear.
Ao invés de apenas capturar o vizinho mais próximo em uma textura, ao invés disso a filtragem bilinear lê as quatro amostras mais próximas do centro do pixel e utiliza uma média ponderada destes valores de cor como o valor de cor final da textura. Assim, como ilustrado na Fig. 2B, uma média ponderada de Tl, T2, T3 e T4 é calculada, onde os pesos são baseados na distância a partir do centro do pixel até os quatro centros do texel. Equações ilustrativas para a filtragem bilinear conhecidas pelos com conhecimento normal na técnica de processamento gráfico são como se segue: = Pi,j*a + (Pi,j+i) * (l-aa) cb = Pi+i;j*a + (Pi+j,j+i) * d-oO F = lrp (ca, cb) * ocb, onde lrp é uma função de interpolação linear prontamente entendida pelas unidades de processamento gráfico (GPUs) atuais. O efeito visual líquido é embaçar fora de uma boa parte dos artefatos de textura vistos com a amostragem de ponto, mas pelo fato de ele ser somente um filtro de quatro derivações trabalhando com uma único mapa de textura, a eficácia da filtragem bilinear é limitada.
Outra maneira de se abordar para aperfeiçoar a qualidade de textura da imagem é uma técnica conhecida como mapeamento MIP, onde o renderizador faz múltiplas cópias da textura original e cada mapa MIP sucessivo é exatamente metade da resolução do anterior. Isto efetivamente torna-se um tipo de textura 3-D, onde as duas coordenadas padrão (u, v) estão presentes, mas existe também uma terceira coordenada, d, utilizada para medir quais mapas MIP selecionar baseado em qual resolução de mapa irá de forma mais estrita combinar com a área de pixels a ser mapeada. No caso onde o plano de um lutador está próximo da câmara de visão, um mapa de textura muito detalhado seria selecionado, mas a medida que o plano solta-se para a distância, mapas sucessivamente menores e menos detalhados seriam utilizados. A medida que a coordenada d aumenta, mapas MIP menores e menores são utilizados. A derivação da coordenada d tende a ser complicada e dependente da implementação, mas em geral relaciona-se com decifrar o quanto de magnificação ou de minificação de textura resultaria a partir da seleção de um mapa MIP particular baseado na área de pixels a ser coberta. 0 mapa MIP com a menor quantidade de magnificação e de minificação de textura é assim selecionado por este método. Como ilustrado pela Fig. 2C, o problema do mapeamento MIP é assim o de selecionar qual textura 200a, 200b, 200c, etc., utilizar para representar melhor o número de pixels na tradução de pixel 220.
Existem poucos modos diferentes em que as aplicações podem utilizar mapas MIP e elas são freqüentemente dependentes do suporte de hardware gráfico. Em alguns casos, uma aplicação pode optar (A) por selecionar um único mapa que corresponda melhor à área de pixel a ser mapeada, (B) aplicar a filtragem bilinear para os texels neste mapa e então (C) aplicar os texels com a média calculada resultante para seus pixels correspondentes. Entretanto, problemas visuais com o mapeamento MIP bilinear podem ocorrer em limites do mapa quando movendo-se através da cena. Por exemplo, quando dirigindo-se para baixo de uma pista de rolamento em um jogo, pode-se ver interrupções visíveis na textura da pista de rolamento. Isto é provável devido a uma troca de mapa MIP.
Um método de qualidade mais elevada do mapeamento MIP freqüentemente utilizado é chamado de mapeamento MIP trilinear, o qual ajuda a aliviar o problema de limite do mapa MIP discutido acima. Este método de filtragem pega duas amostras bilineares, utilizando quatro amostras de texels cada, a partir dos dois mapas MIP mais próximos do pixel, onde um mapa de textura pode ser uma bit maior em resolução e o outro um bit menor em resolução do que a área de pixels a ser mapeada. O algoritmo trilinear então utiliza uma mé- dia ponderada para combinar os dois texels filtrados de forma bilinear em um pixel de textura resultante, com o mapa cuja resolução está mais próxima da área de pixels recebendo mais peso.
Mesmo o mapeamento MIP trilinear sofre de algumas deficiências, entretanto, principalmente relacionando-se com o nível de tendência de detalhe (LOD). Cada mapa MIP é dito como possuindo um LOD associado e a tendência tem que lidar com o fator de ponderação da média entre as duas amostras filtradas de forma bilinear a partir de dois mapas diferentes. Se a tendência LOD for muito voltada "para cima", pon-derando-se a média mais em direção ao menor mapa de resolução, pode resultar no embaçamento da textura. Se a tendência LOD for voltada muito "para baixo", ponderar-se a média em direção ao mapa MIP maior pode resultar no efeito de serrilhado, no efeito de serrilhado temporal, tal como o chu-viscado/rastejamento da textura. Portanto, a tendência LOD altera o valor d, causando que mapas menores ou maiores sejam utilizados, apesar do valor d ainda estar pré-configurado na hora do desenvolvimento. O problema principal com estas técnicas é a natureza isotrópica da filtragem bilinear ou trilinear. A magnificação / minificação ao longo do eixo na textura pode ser de forma significativa diferente da magnificação / minificação ao longo de outro eixo, o que pode resultar em efeito de serrilhado ao longo de um eixo e embaçamento no outro.
Existe outra técnica de filtragem chamada filtragem anisotrópica que tenta endereçar a natureza isotrópica da filtragem bilinear e trilinear. Uma forma de filtragem anisotrópica utiliza a amostragem de mapa MIP, mas ao invés de pegar oito amostras, ela ao invés disso pega até 16. Ao utilizar a filtragem anisotrópica, especifica-se para o ren-derizador qual é o grau de anisotropia, que é a proporção de o quanto longe uma textura pode ser estendida antes de sua qualidade de imagem começar a degradar.
Em outra forma de filtragem anisotrópica, a filtragem bilinear é executada várias vezes ao longo de algum ângulo. Isto pode ser útil onde o "listramento" é natural por produto de renderização de pixel, por exemplo, como é o caso com a estrada sendo atravessada em um jogo de vídeo de corrida de carros. Quando o polígono texturizado está em um ângulo oblíquo com o plano da tela, a base correspondendo a um pixel da tela mapeado sobre a textura torna-se alongada, isto é, não mais quadrada. Métodos mais sofisticados utilizam a coleta em formato ímpar dos texels nesta base e misturam os mesmos para produzir o resultado final. Calcular o formato correto para uso para esta base da amostragem e o quanto longa ela deve ser, é um problema muito difícil. Quaisquer algoritmos atualmente conhecidos para fazer isto baseiam seus cálculos somente na geometria relativa da tela - pixel para o alinhamento dos texels do polígono e nenhum proporciona flexibilidade que permita a um desenvolvedor controlar de forma prognosticada / inteligente o processo.
Esta forma de amostragem anisotrópica que acumula execuções da filtragem bilinear é ilustrada na Fig. 2D, para um ponto Pia, o qual é para ser anisotropicamente filtrado ao longo de um ângulo Θ, definido pela razão Δν/Au e um tamanho de passo s entre os pontos Pia, Plb, Plc, etc., definido pela magnitude de Δν e de Au, de acordo com algum aspecto geométrico prefixado do triângulo sendo renderizado. Um formato elíptico ao longo do ângulo Θ define o posicionamento de Plb e de Plc. Então, a filtragem bilinear é executada para cada um dentre Pia, Plb e Plc, os quais para este exemplo, de um modo ponderado, misturam-se os grupos correspondentes de quatro: (A) T14, Tll, T15 e T12, (B) Tll, T12, T6 e T5 e (C) T7, T6, T8 e Tl, respectivamente.
Ao utilizar mais amostras na direção da textura que teria que ser alongada para encaixar-se na superfície onde ela está sendo aplicada, a filtragem anisotrópica alcança qualidade de imagem mais nítida do que a filtragem bilinear ou trilinear e também evita o chuviscado de textura encontrado com a amostragem de ponto. Também é observado que o texto filtrado de forma anisotrópica que é exibido em um ângulo, como pode ser em uma quadro em um jogo de corrida, ou no início de um filme Guerra nas Estrelas, renderiza-se mais claramente do que com outros métodos de filtragem.
Geralmente, as interfaces de programação de aplicação gráfica (APIs) possuem provisões para um vértice único para armazenar dois ou mais endereços de textura para uso em efeitos de multitexturização. Antigamente, a multitexturiza-ção era utilizada para criar efeitos de iluminação utilizando mapas de luz, mas desde então ela tem sido utilizada para fazer efeitos adicionais como o mapeamento de colisão. Estes aspectos da multitexturização eventualmente compeliram aos fabricantes de chip 3-D a investir no estado real do chip ao criar canais de informação de pixel paralelos e em gerações mais recentes de chips, a processar múltiplos te-xels por pixels por clock. A vantagem obtida por se ter vias paralelas capazes de manipular múltiplos texels por pixel é que as operações de multitexturização podem freqüentemente ser feitas em um único ciclo de clock, ao invés do que ter que executar a renderização de múltiplas passagens, onde cada pixel em uma cena é extraído várias vezes. Para cada passagem adicional que um chip tem que fazer para renderizar uma cena, sua taxa de preenchimento de pixel efetiva é dividida pelo número de passagens que precisam ser feitas. Assim, se um chip com 500 Mpixels/seg de taxa de preenchimento tivesse que fazer duas passagem de modo a renderizar uma cena com efeitos de multitexturização na mesma, esta taxa de preenchimento efetiva do chip é dividida por dois para 250 Mpixels/seg. Se ele fizesse quatro passagens, a taxa de preenchimento cai para 125 Mpixels/seg. Assim, as linhas de informações paralelas igualmente aumentaram muito a eficiência da renderização gráfica. A multitexturização não opera de forma muito diferente da texturização única normal, exceto que texturas separadas têm que ser misturadas e então misturadas com a cor do pixel existente produzido pelo sombreamento. Entretanto, dobrando-se ou triplicando-se o número de texturas sendo u-tilizadas em uma cena, drasticamente aumenta-se a quantidade da largura do armazenamento temporário de quadros requerida para buscar as texturas adicionais e se múltiplas passagens estiverem sendo feitas, mais uma vez havería a preocupação de que a performance como um todo sofreria. Entretanto, a evolução de processadores gráficos extremamente rápidos em anos recentes tem limitado estas preocupações para o resto. A texturização e a multitexturização podem ser u-tilizadas para criar uma ampla série de efeitos visuais, com a descrição básica da superfície sendo somente a ponta do iceberg. Os desenvolvedores também têm descoberto outro modo para criar texturas; ao invés de armazenar um mapa de bits "enlatado", um desenvolvedor pode ao invés disso criar um pequeno programa que cria texturas de forma processual. Esta técnica tem sido utilizada para criar qualquer coisa a partir de superfícies de aspecto de mármore, para texturas de terreno em grandes ambientes externos, para efeitos de água em movimento.
Outro processo de várias aplicações procurando lidar com 3-D é estabelecer um ambiente. Isto é especialmente importante para tentar imergir os jogadores dentro do mundo que o desenvolvedor conjurou. Uma ferramenta útil para obter ambientes diferentes é nevoeiro, o qual também ajuda a dar a uma cena uma percepção de adição de profundidade de campo. 0 nevoeiro pode ser implementado de vários modos, com as variações tendo que lidar na maior parte de vezes com como o nevoeiro torna-se mais nevoento. Dois métodos muito comuns são chamados nevoeiro linear e exponencial, os quais ajustam a escala linear e exponencialmente, respectivamente, como seus nomes sugerem. 0 nevoeiro também pode ser aplicado por vértice ou por pixel e como na maioria dos casos em 3-D, por pixel parece mais convincente, mas é computacional-mente mais oneroso.
Um método mais avançado para aplicar o nevoeiro é chamado nevoeiro baseado na faixa, o qual tradicionalmente não tem estado disponível em chips 3-D de consumidores, mas com a chegada dos sombreadores de vértice no DirectX8, o nevoeiro baseado em vértice é uma opção. Outro método é chamado tabela de nevoeiro, onde valores de nevoeiro são armazenados em uma tabela de consulta e então aplicados para cada pixel.
Mas, independente da técnica, o nevoeiro é uma função de quanto longe um objeto está, o que normalmente é determinado por seu valor z, a distância a partir da câmara de visão. Um fator de nevoeiro, quer calculado linearmente ou exponencialmente, é então calculado e aplicado para o pixel utilizando-se uma operação de mistura para combinar a quantidade de nevoeiro (cor) com a cor do pixel iluminado / sombreado / texturizado. Se o nevoeiro estiver sendo executado por vértice, as operações de nevoeiro tornam-se uma parte do cálculo de iluminação e são interpoladas através de cada triângulo utilizando o sombreamento Gouraud.
Outro uso prático do nevoeiro é permitir que os objetos no plano de corte distante elegantemente "desapareçam gradualmente" ao invés de apenas sair da cena. O nevoeiro também pode ser utilizado para permitir a um renderiza-dor somente ter que puxar objetos do mundo relativamente próximos à câmara de visão. Então, quando o valor do nevoeiro fica próximo ou alcança zero (valores de nevoeiro tipicamente são valores de ponto flutuante entre zero e um, com zero sendo o nevoeiro absoluto e um sendo nenhum nevoeiro) , o objeto é essencialmente descartado e nenhum trabalho de renderização adicional precisa ser feito. Técnicas para aplicar transparência e translucidez igualmente existem. Ao contrário de objetos opacos, os objetos transparentes devem geralmente ser classificados a fundo em ordem de trás para frente para garantir que as cores subjacentes que são misturadas com os objetos transparentes estejam disponíveis quando a operação de mistura é executada. Existem várias fórmulas que têm utilizado calcular a translucidez de um objeto, mas uma fórmula comum é: onde cQ =cor final do pixel α = valor alfa (entre 0 e 1) cs = cor do pixel transparente (chamado de fonte) e cd = cor do pixel obstruído (chamado de destino). Esta fórmula é uma soma de duas modulações de pixel, onde o valor alfa é aplicado de forma diferente junto a ambos os pixels e os valores resultantes são adicionados para fornecer a cor final do pixel.
Assim, existe uma infinidade de técnicas que podem ser aplicadas em conexão com a computação gráfica de amostragem de textura; entretanto, até aqui, a seleção de qualquer uma da infinidade de técnicas é fixada pelo desenvolvedor na hora do desenvolvimento sem muita flexibilidade.
Desde que certas variáveis e heurísticas são úteis para certas circunstâncias gráficas e não outras, o resultado de qualidade final pode ser uma bolsa misturada, mesmo com o sempre aumento da capacidade de processamento. Por conse-qüência, seria desejável aumentar a quantidade de inteligência aplicada junto aos algoritmos de amostragem de textura no front end do processo. Em vista de uma tendência de aumento em direção à GPU de função flexível, seria desejável expor amostragem de textura controlável para os desenvolvedores para aplicar em movimento, inteligência dinâmica para manipular circunstâncias diferentes da maneira mais eficaz. A medida que algoritmos programáveis mais avançados de som-breamento e de iluminação por pixel tornam-se disponíveis, os quais levam em consideração as propriedades do material, as superfícies curvas, as texturas volumétricas e que possuem uma mistura de textura de passagem única muito mais complexa, torna-se tudo mais desejável para permitir aos desenvolvedores ter controle sobre o processo de amostragem de textura. Também pode ser desejável de forma controlada introduzir artefatos em uma imagem renderizada, tal como emba-çamento, ou listamento, ou trepidação. Por conseqüência, seria desejável proporcionar para qualquer um ou mais dentre um sistema operacional, um código acionador, uma interface de programa de aplicação, um kit de ferramentas e/ou uma funcionalidade no próprio canal de informação gráfico, incluindo a GPU ou outro dispositivo de co-processamento, um mecanismo que proporcione capacidades de amostragem de textura controlável.
SUMÁRIO DA INVENÇÃO
Em vista do anterior, a presente invenção proporciona sistemas e métodos para proporcionar amostragem de textura controlável em conexão com a computação gráfica em um sistema de computador. Em várias modalidades, mecanismos aperfeiçoados para controlar a amostragem de textura são proporcionados, os quais permite ao hardware acelerador 3-D aumentar muito o nível de realismo na renderização, incluindo mecanismos aperfeiçoados para (1) embaçamento de movimento; (2) gerar reflexões de superfície anisotrópicas (3) gerar o auto-sombreamento da superfície (4) amostragem volumé-trica de projeção de raio (4) renderização volumétrica auto-sombreada (5) difusão de raio volumétrica auto-sombreada. Em suplementar as técnicas de amostragem de textura existentes, parâmetros para a amostragem de textura podem ser substituídos e/ou modificados.
Em várias modalidades, métodos, aparelhos, meios legível por computador e dispositivos de co-processamento são proporcionados, os quais permitem a amostragem de textura controlável incluindo especificar parâmetros de uma base da amostragem utilizada em conexão com a amostragem de textura de um mapa de textura e a amostragem de textura do mapa de textura de acordo com os parâmetros especificados da base da amostragem.
Outros aspectos e modalidades da presente invenção são descritos abaixo.
BREVE DESCRIÇÃO DOS DESENHOS
Os sistemas e métodos para proporcionar a amostragem de textura controlável de acordo com a presente invenção são adicionalmente descritos com referência aos desenhos a-companhantes, nos quais: A Figura 1 proporciona uma vista geral do processo de amostragem de textura em um sistema de computação gráfica; A Figura 2A proporciona uma vista geral de um processo de amostragem de ponto da técnica anterior utilizado em conexão com a amostragem de textura em uma sistema de computação gráfica; A Figura 2B proporciona um vista geral de um processo de filtragem bilinear da técnica anterior utilizado em conexão com a amostragem de textura em um sistema de computação gráfica; A Figura 2C proporciona uma vista geral de um processo de mapeamento MIP da técnica anterior utilizado em conexão com a amostragem de textura em um sistema de computação gráfica; A Figura 2D proporciona uma vista geral de um processo de filtragem anisotrópica utilizado em conexão coma amostragem de textura em um sistema de computação gráfica; A Figura 3A é um diagrama de blocos representando um ambiente de rede ilustrativo possuindo uma variedade de dispositivos de computação nos quais a presente invenção pode ser implementada; A Figura 3B é um diagrama de blocos representando um dispositivo de computação não limitativo no qual a presente invenção pode ser implementada; A Figura 4A ilustra uma modalidade da invenção onde a amostragem de textura controlável é proporcionada; A Figura 4B ilustra uma modalidade adicional da invenção onde a amostragem de textura controlável é proporcionada; e AFig. 5 ilustra um processo em conexão com as quais modalidades ainda adicionais da invenção podem aplicadas.
DESCRIÇÃO DETALHADA DA INVENÇÃO
VISTA GERAL
Um mecanismo para proporcionar amostragem de textura controlável é proporcionado, o qual permite ao hardware acelerador 3-D aumentar muito o nível de realismo ao ren-derizar e abrir caminhos em direção ao uso dos cálculos de rastreamento de raio em hardware 3-D. Até agora, tais métodos têm sido restritos aos renderizadores de software com um processador hospedeiro, retardando muito o canal de informação gráfica. A este respeito, atualmente chips gráficos 3-D possuem uma unidade chamada de um amostrador que é utilizado para extrair a cor fora de uma textura em um polígono durante a renderização. Desde que as posições dos pixels sendo renderizados geralmente não correspondem exatamente às posições dos texels na textura, existe algum trabalho envolvido. A amostragem de textura pode funcionar com vários níveis de sofisticação utilizando técnicas descritas na prática, tal como amostragem de ponto, filtragem bilinear, mapeamento MIP e filtragem anisotrópica, bem como outras técnicas. Tais técnicas da técnica anterior fixaram aspectos para as mesmas, os quais não se aplicam bem a todas as situações. Além disso, as técnicas de filtragem anisotrópica atuais trabalham para eliminar os efeitos de embaçamento ao passo que um desenvolvedor pode realmente desejar criar um efeito de embaçamento. Por conseqüência, a presente invenção expõem anteriormente os parâmetros fixos para o desenvolvedor, de modo a proporcionar ao desenvolvedor inteligência anteriormente sem precedentes com respeito ao nível de controle sobre o processo de amostragem de textura. Em várias modalidades, a invenção é apresentada como sendo útil para vários efeitos de texturização. Além disso, a invenção pode ser invariavelmente implementada com software, hardware, ou com ambos. Por exemplo, alguns detalhes da implementação podem ser implementados em um chip de co-processamento, tal como uma GPU, ao passo que outros podem ser expostos para um desenvolvedor gráfico via um kit de ferramentas API, via um sistema operacional, via controladores, via código transferí-vel, etc.
AMBIENTES EM REDE E DISTRIBUÍDOS ILUSTRATIVOS
Os com conhecimento normal na técnica podem apreciar que um computador ou outro dispositivo cliente ou servidor pode ser disposto como parte de uma rede de computadores, ou em um ambiente de computação distribuído. A este respeito, a presente invenção pertence a qualquer sistema de computador possuindo qualquer número de unidades de memória ou de armazenamento e qualquer número de aplicações e de processos ocorrendo através de qualquer número de unidades ou volumes de armazenamento, os quais podem ser utilizados em conexão com um processo de amostragem de textura. A presente invenção pode se aplicar a um ambiente com computadores servidor e com computadores cliente dispostos em um ambiente em rede ou em um ambiente de computação distribuído, possuindo armazenamento remoto ou local. A presente invenção também pode ser aplicada junto aos dispositivos de computação independentes, possuindo funcionalidade de linguagem de programação, capacidades de interpretação e de execução para gerar, receber e transmitir informações em conexão com os serviços remotos ou locais. A computação distribuída facilita o compartilhamento de recursos e serviços de computadores pela troca direta entre os dispositivos e sistemas de computação. Os recursos e serviços incluem a troca de informações, armazenamento em memória cachê e armazenamento em disco para arquivos. A computação distribuída leva vantagem da conectividade em rede, permitindo aos clientes alavancar sua força coletiva para benefício de toda a empresa. A este respeito, uma variedade de dispositivos podem ter aplicações, objetos ou recursos que podem implicar em um processo de amostragem de textura que pode utilizar as técnicas da presente invenção. A fig. 3A proporciona uma diagrama esquemático de um ambiente de computação em rede ou distribuído ilustrativo. 0 ambiente de computação distribuído compreende os objetos de computação 10a. 10b, etc. e os objetos ou dispositivos de computação 110a, 110b, 110c, etc. Estes objetos podem compreender programas, métodos, armazenamentos de dados, lógica programável, etc. Os objetos podem compreender partes do mesmo ou de dispositivos diferentes tal como PDAs, televisões, reprodutores de MP3, televisões, computadores pessoais, etc. Cada objeto pode comunicar-se com outro objeto por meio da rede de comunicações 14. Esta rede pode ela própria compreender outros objetos de computação e dispositivos de computação que proporcionam serviços para o sistema da Fig. 3A. De acordo com um aspecto da invenção, cada um dos objetos 10a, 10b, etc. ou 110a, 110b, 110c, etc. pode conter uma aplicação que pode requisitar serviços de amostragem de textura.
Em uma arquitetura de computação distribuída, computadores, os quais podem ter sido tradicionalmente somente utilizados como clientes, comunicam-se diretamente entre e-les próprios e podem atuar tanto como clientes e como servidores, assumindo qualquer papel que seja mais eficiente para a rede. Isto reduz a carga nos servidores e permite que todos os clientes acessem recursos disponíveis em outros clientes, desse modo aumentando a capacidade e a eficiência de toda a rede. Os serviços de amostragem de textura de acordo com a presente invenção podem desse modo serem distribuídos entre os clientes e servidores, atuando de um modo que seja eficiente para toda a rede. A computação distribuída pode ajudar os serviços e capacidades de entrega do negócio de forma mais eficiente através de diversos limites geográficos. Além disso, a computação distribuída pode mover dados mais próximos para o ponto onde os dados são consumidos atuando como um mecanismo de captura da rede. A computação distribuída também permite às redes de computação dinamicamente trabalharem juntas utilizando agentes inteligentes. Os agentes residem em computadores pares e comunicam vários tipos de informação de um lado para o outro. Os agentes também podem iniciar tarefas em nome de outros sistemas pares. Por exemplo, os agentes inteligentes podem ser utilizados para dar prioridade para as tarefas em uma rede, alterar o fluxo de tráfego, pesquisar arquivos localmente ou determinar comportamento anormal tal como um vírus e parar o mesmo antes que ele afete a rede. Todos os tipos de serviço podem ser igualmente contemplados. Desde que os objetos gráficos e os mapas de textura na prática estão fisicamente localizados em uma ou mais localizações, a habilidade de distribuir os serviços de amostragem de textura é de grande utilizada em tal sistema.
Também pode ser apreciado que um objeto, tal como 110c, pode ser hospedado em outro dispositivo de computação 10a, 10b, etc. ou 110a, 110b, etc. Assim, apesar do ambiente físico descrito poder apresentar os dispositivos conectados como computadores, tal ilustração é meramente um exemplo e o ambiente físico pode alternativamente ser descrito ou descrito compreendendo vários dispositivos digitais tal como PDAs, televisões, executores de MP3, etc., objetos de software tal como interfaces, objetos COM e semelhantes.
Existe uma variedade de sistemas, componentes e configurações de rede que suportam ambientes de computação distribuídos. Por exemplo, sistemas de computação podem ser conectados por sistemas com linhas com fios ou por sistemas sem fios, por redes locais ou por redes amplamente distribuídas. Atualmente, várias das redes são acopladas com a Internet, a qual proporciona a infra-estrutura para a computação amplamente distribuída e abrange várias redes diferentes.
Em ambientes de computação domésticos, existem pelo menos quatro meios de transporte de rede diversos os quais podem cada um suportar um protocolo único, tal como linha de Força, dados (tanto sem fios como com fios) , voz (por exemplo, telefone) e meio de entretenimento. A maioria dos dispositivos de controle domésticos tal como chaves de luz e utensílios domésticos pode utilizar a linha de força para conectividade. Os Serviços de Dados podem entrar no lar como banda larga (por exemplo, DSL ou modem a cabo) e são acessíveis dentro do lar utilizando-se a conectividade sem fios (por exemplo, HomeRF ou 802.11b) ou com fios (por exemplo, Home PNA, Cat 5, e até mesmo a linha de força) . O tráfego de voz pode entrar no lar como com fios (por exemplo, Cat 3) ou sem fios (por exemplo, telefones celulares) e pode ser distribuído dento do lar utilizando-se a fiação Cat 3. 0 meio de entretenimento, ou outros dados gráficos, podem entrar no lar através de satélite ou de cabo e tipicamente é distribuído no lar utilizando-se cabo coaxial. O IEEE 1394 e o DVI também estão surgindo como interconexões digitais para agrupamentos de dispositivos de mídia. Todos estes ambientes em rede e outros que podem surgir como padrões de protocolo podem ser interconectados para formar uma intranet que pode ser conectada com o mundo externo por meio da Internet. Em resumo, uma variedade de fontes diversas existem para o armazenamento e transmissão de dados e por conseqüência, olhando para o futuro, os dispositivos de computação irão requerer modos de compartilhar dados, tal como dados acessados ou utilizados inerentes à amostragem de textura de objetos gráficos e mapas de textura de acordo com a presente invenção. A Internet normalmente refere-se à coleção de redes e de portas de comunicação que utilizam o conjunto de protocolos TCP/IP, os quais são bem conhecidos na técnica de rede de computadores. 0 TCP/IP é um acrônimo para "Trans-port Control Protocol/lnterface Program". A Internet pode ser descrita como um sistema de redes de computadores remotas geograficamente distribuídas interconectadas por computadores executando os protocolos de rede que permitem aos usuários interagir e compartilhar informações através das redes. Pelo fato de tal compartilhamento de informação amplamente difundido, as redes remotas tal como a Internet têm até aqui geralmente envolvido-se em um sistema aberto para o qual os desenvolvedores podem projetar aplicações de software para executar operações ou serviços especializados, essencialmente sem restrição.
Assim, a infra-estrutura de rede permite um grande número de topologias de rede tal como cliente/servidor, arquiteturas não hierárquicas, ou arquiteturas híbridas. O "cliente" é um membro de uma classe ou grupo que utiliza os serviços de outra classe ou grupo com o qual ele não está relacionado. Assim, na computação, um cliente é um proces- so, por exemplo, grosseiramente, um conjunto de instruções ou tarefas, que requisita um serviço proporcionado por outro programa. O processo do cliente utiliza o serviço requisitado sem ter que "saber" quaisquer detalhes a cerca do outro programa ou do próprio serviço. Em uma arquitetura clien-te/servidor, particularmente um sistema em rede, um cliente normalmente é um computador que acessar recursos compartilhados da rede proporcionados por outro computador, por e-xemplo, um servidor. No exemplo da Fig. 3A, os computadores 110a, 110b, etc. podem ser pensados como cliente e os computadores 10a, 10b, etc. podem ser pensados como o servidor, onde o servidor 10a, 10b, etc. mantém os dados que são então replicados para os computadores cliente 110a, 110b, etc.
Um servidor tipicamente é um sistema de computador remoto acessível através de uma rede remota, tal como a Internet. O processo do cliente pode ser ativo em um primeiro sistema de computador e o processo servidor pode estar ativo em um segundo sistema de computador, comunicando-se um com o ouro através de um meio de comunicação, desse modo proporcionando a funcionalidade distribuída e permitindo que vários clientes tirem vantagem das capacidades de agrupamento de informações do servidor. 0 cliente e o servidor comunicam-se um com o ouro utilizando a funcionalidade proporcionada por uma camada de protocolo. Por exemplo, o Hypertext-Tranfer Protocol ("Protocolo de Transferência de Hipertexto") (HTTP) é um protocolo comum que é utilizado em conjunto com a World Wide Web (WWW). Tipicamente, um endereço da rede de computadores tal como um Localizador de Recurso Universal (URL) ou um endereço de Protocolo Internet (IP) é utilizado para identificar os computadores servidor ou cliente um para o outro. 0 endereço da rede pode ser referido como endereço URL. Por e-xemplo, a comunicação pode ser proporcionada através de um meio de comunicação. Em particular, o cliente e o servidor podem estar acoplados um com o outro via conexões TCP/IP para comunicação de alta capacidade.
Assim, a Fig. 3A ilustra um ambiente em rede ou distribuído ilustrativo, com um servidor em comunicação com computadores cliente via uma rede/barramento, no qual a presente invenção pode ser empregada. Em mais detalhes, uma série de servidores 10a, 10b, etc., estão interconectados via uma rede/barramento de comunicações 14, o qual pode ser uma LAN, WAN, Intranet, a Internet, etc., com uma série de dispositivos de computação cliente ou remotos 110a, 110b, 110c, HOd, HOe, etc., tal como um computador portátil, computador de mão, cliente magro, dispositivo em rede, ou com outro dispositivo, tal como VCR, TV, forno, luz, aquecedor e semelhantes de acordo com a presente invenção. Assim, é contemplado que a presente invenção pode se aplicar a qualquer dispositivo de computação em conexão com o qual é desejável processar objetos gráficos.
Em um ambiente em rede no qual a rede/barramento de comunicações 14 é a Internet, por exemplo, os servidores 10a, 10b, etc. podem ser servidores Rede com os quais os clientes 110a, 110b, 110c, HOd, HOe, etc., comunicam-se via qualquer um de uma série de protocolos conhecidos tal como o HTTP. Os servidores 10a, 10b, etc. também podem servir como os clientes 110a, 110b, 110c, HOd, HOe, etc. como pode ser característico de um ambiente de computação distribuído. As comunicações podem ser com fios ou sem fios, onde apropriado. Os dispositivos cliente 110a, 110b, 110c, HOd, HOe, etc. podem ou não se comunicar via a rede/barramento de comunicações 14 e podem ter comunicações independentes associadas com os mesmos. Por exemplo, no caso de uma TV ou VCR, pode ou não existir um aspecto em rede para controle do mesmo. Cada computador cliente 110a, 110b, 110c, HOd, HOe, etc. e computador servidor 10a, 10b, etc. pode ser e-quipado com vários módulos ou objetos de programa de aplicação 135 e com conexões ou acessos a vários tipos de elementos ou objetos de armazenamento, através dos quais os arquivos podem ser armazenados ou junto aos quais partes dos arquivos podem ser transferidas ou migradas. Qualquer computador 10a, 10b, 110a, 110b, etc. pode ser responsável pela manutenção e pela atualização de uma base de dados 2 0 ou de outro elemento de armazenamento de acordo com a presente invenção, tal como a base de dados ou memória 20 para armazenar objetos gráficos ou objetos gráficos intermediários processados de acordo com a invenção. Assim, a presente invenção pode ser utilizada em um ambiente de rede de computador possuindo computadores cliente 110a, 110b, etc. que podem acessar e interagir com uma rede/barramento de computador 14 e os computadores servidor 10a, 10b, etc. que podem interagir com os computadores cliente 110a, 110b, etc. e com outros dispositivos semelhantes e com a bases de dados 20.
Dispositivo de Computação Ilustrativo A Fig. 3B e a discussão seguinte são pretendidas para proporcionar uma breve descrição geral de um ambiente de computação adequado no qual a invenção pode ser implementada. Entretanto, deve ser entendido que dispositivos de computação e objetos de computação de mão, portáteis e outros de todos os tipos são contemplados para uso em conexão com a presente invenção. Enquanto um computador de propósito geral é descrito abaixo, este é apenas um exemplo e a presente invenção pode ser implementada com um cliente magro possuindo inter-operatividade e interação de re-de/barramento. Assim, a presente invenção pode ser implementada em uma ambiente de serviços hospedados em rede no qual muito pouco ou mínimos recursos do cliente são implicados, por exemplo, um ambiente em rede no qual o dispositivo cliente serve meramente como uma interface para a rede / barramento, tal como um objeto colocado em um utensílio doméstico. Em essência, em qualquer lugar que os dados possam ser armazenados ou a partir do qual os dados possam ser recuperados é um ambiente desejável, ou adequado, para a operação das técnicas de amostragem de textura controlável da invenção.
Apesar de não requerido, a invenção pode ser implementada via um sistema operacional, para uso por um desenvolvedor de serviços para um dispositivo ou objeto e/ou incluída dentro do software de aplicação que opera em conexão com a amostragem de textura controlável da invenção. O software pode ser descrito no contexto geral de instruções executáveis por computador, tal como módulos de programa, sendo executados por um ou mais computadores, tal como estações de trabalho cliente, servidores ou outros dispositivos. Geralmente, os módulos de programa incluem rotinas, programas, objetos, componentes, estruturas de dados e semelhantes que executam tarefas particulares ou implementam tipos de dados abstratos particulares. Tipicamente, a funcionalidade dos módulos de programa pode ser combinada ou distribuída como desejado em várias modalidades. Além disso, os com conhecimento na técnica irão apreciar que a invenção pode ser praticada com outras configurações de sistema de computador. Outros sistemas de computação, ambientes e/ou configurações que podem ser adequadas para uso com a invenção incluem, mas não estão limitados a computadores pessoais (PCs), máquina de caixa automático, computadores servidor, dispositivos de mão ou lap-top, sistema com múltiplos processadores, sistemas baseados em microprocessador, dispositivos eletrônicos de consumidor programáveis, PCs de rede, utensílios domésticos, luzes, elementos de controle ambiental, minicomputado-res, computadores de grande porte e semelhantes. A invenção também pode ser praticada em ambientes de computação distribuídos 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 por outro meio de transmissão de dados. Em um ambiente de computação distribuído, os módulos de programa podem estar localizados em meio de armazenamento de computador tanto local como remoto, incluindo dispositivos de armazenamento de memória e nós cliente podem por sua vez comportarem-se como nós servidor.
Assim, a Fig. 3B ilustra um exemplo de um ambiente de sistema de computação adequado 100 no qual a invenção pode ser implementada, apesar de como feito claro acima, o ambiente de sistema de computação 100 ser somente um exemplo de um ambiente de computação adequado e não é pretendido para sugerir qualquer limitação quanto ao escopo de uso ou à funcionalidade da invenção. Nem deve ser o ambiente de computação 100 interpretado como possuindo qualquer dependência ou requerimento relacionando-se com qualquer um ou com combinação dos componentes ilustrados no ambiente de operação ilustrativo 100.
Com referência à Fig. 3B, um sistema ilustrativo para implementar a invenção inclui um dispositivo de computação de propósito geral na forma de um computador 110. Os componentes do computador 110 podem incluir, mas não estão limitados a, uma unidade de processamento 120, uma memória do sistema 130 e um barramento do sistema 121 que acopla vários componentes do sistema, incluindo a memória do sistema com a unidade de processamento 120. 0 barramento do sistema 121 pode ser qualquer um de vários tipos de estruturas de barramento incluindo um barramento de memória ou controlador de memória, um barramento periférico e um barramento local utilizando qualquer uma de uma variedade de arquiteturas de barramento. A título de exemplo e não de limitação, tais arquiteturas incluem o barramento da Arquitetura padrão da Industria (ISA), o barramento da Arquitetura de Micro canal (MCA) , o barramento ISA Aperfeiçoado (EISA) , o barramento local da Associação de Padrões de Componentes Eletrônicos (VESA) e o barramento da Interconexão de Componente Periférico (PCI) (também conhecido como barramento Mezanino). O computador 110 tipicamente inclui uma variedade de meios legíveis por computador. Os meios legíveis por computador podem ser qualquer meio disponível que possa ser acessado pelo computador 110 e incluem tanto o meio volátil como o não volátil, o meio removível e o não removível. A título de exemplo e não de limitação, o meio legível por computador pode compreender o meio de armazenamento do computador e o meio de comunicação. 0 meio de armazenamento do computador inclui tanto o meio volátil como o não volátil e o removível e o não removível implementado em qualquer método ou tecnologia para armazenamento de informações tal como instruções legíveis por computador, estruturas de dados, módulos de programa e outros dados. O meio de armazenamento do computador inclui, mas não está limitado a RAM, ROM, EEPROM, memória instantânea ou outra tecnologia de memória, CD-ROM, discos versáteis digitais (DVD) ou outro armazenamento em disco ótico, cassetes magnéticos, fita magnética, armazenamento em disco magnético ou outros dispositivos de armazenamento magnéticos, ou qualquer outro meio que possa ser utilizado para armazenar as informações desejadas e que possa ser acessado pelo computador 110. O meio de comunicação tipicamente incorpora instruções legíveis por computador, estruturas de dados, módulos de programa ou outros dados em um sinal de dados modulado tal como uma onda portado- ra ou outro mecanismo de transporte e inclui qualquer meio de entrega de informação. 0 termo "sinal de dados modulado" significa um sinal que possui uma ou mais de suas características estabelecidas ou alteradas de uma maneira tal a codificar a informação no sinal. A título de exemplo e não de limitação, o meio de comunicação inclui meio com fios tal como uma rede com fios ou conexão com fios direta e meio sem fios tal como acústico, RF, infravermelho e outros meios sem fios. Combinações de qualquer um dos acima também devem estar incluídas dentro do escopo do meio legível por computador . A memória do sistema 130 inclui o meio de armazenamento do computador na forma de memória volátil e/ou não volátil, tal como a memória somente para leitura (ROM) 131 e a memória de acesso randômico (RAM) 132. Um sistema de entrada / saída básico 133 (BIOS), contendo as rotinas básicas que ajudam a transferir as informações entre os elementos dentro do computador 110, tal como durante a partida, é tipicamente armazenado na ROM 131. A RAM 132 tipicamente contém dados e/ou módulos de programa que são imediatamente a-cessíveis e/ou atualmente sendo operados pela unidade de processamento 120. A título de exemplo e não de limitação, a Fig. 3B ilustra o sistema operacional 134, os programas de aplicação 135, outros módulos de programa 136 e os dados de programa 137. 0 computador 110 também pode incluir outros meios de armazenamento do computador removíveis / não removíveis e voláteis / não voláteis. Somente a título de exemplo, a Fig. 3B ilustra uma unidade de disco rígido 141 que lê ou grava no meio magnético não removível, não volátil, uma unidade de disco magnético 151 que lê ou grava junto a um disco magnético não volátil removível 152 e uma unidade de disco ótico 155 que lê ou grava junto a um disco ótico não volátil removível 156, tal como um CD-ROM ou outro meio ótico. Outros meios de armazenamento do computador volátil / não volátil, removível / não removível que podem ser utilizados no ambiente operacional ilustrativo incluem, mas não estão limitados à cassetes de fita magnética, cartões de memória instantânea, discos versáteis digitais, fita de vídeo digital, RAM de estado sólido, ROM de estado sólido e semelhantes. A unidade de disco rígido 141 tipicamente está conectada ao barramento do sistema 121 através de uma interface de memória não removível tal como a interface 140, e a unidade de disco magnético 151 e a unidade de disco ótico 155 tipicamente estão conectadas ao barramento do sistema 121 por uma interface de memória removível, tal como a interface 150 .
As unidades e seus meios de armazenamento de computador associados discutidos acima e ilustrados na Fig. 3B proporcionam armazenado das instruções legíveis por computador, das estruturas de dados, dos módulos de programa e de outros dados para o computador 110. Na Fig. 3B, por exemplo, a unidade de disco rígido 141 é ilustrada como armazenando o sistema operacional 144, os programas de aplicação 145, outros módulos de programa 146 e os dados de programa 147. Observe que estes componentes podem ser os mesmos ou diferentes do sistema operacional 134, dos programas de a-plicação 135, dos outros módulos de programa 136 e dos dados de programa 137. Para o sistema operacional 144, para os programas de aplicação 145, para os outros módulos de programa 146 e para os dados de programa 147 são fornecidos números diferentes aqui para ilustrar que, no mínimo, eles são cópias diferentes. Um usuário pode entrar com comandos e informações no computador 110 através de dispositivos de entrada tal como um teclado 162 e o dispositivo de apontamento 161, normalmente referido como mouse, trackball ou plataforma de toque. Outros dispositivos de entrada (não apresentados) podem incluir um microfone, joystick, controlador de jogo, antena de satélite, scanner ou semelhantes. Estes e outros dispositivos de entrada são freqüentemente conectados com a unidade de processamento 120 através de uma interface de entrada do usuário 160 que está acoplada com o barramento do sistema 121, mas podem estar conectados por outra interface e por outras estruturas de barramento, tal como uma porta paralela, uma porta de jogo ou um barramento serial universal (USB). Uma interface gráfica 182, tal como a Nor-thbridge, também pode estar conectada com o barramento do sistema 121. A Northbridge é um conjunto de chips que se comunica com a CPU, ou coma unidade de processamento hospedeira 120, e assume responsabilidade em relação às comunicações da porta gráfica acelerada (AGP). Uma ou mais unidade de processamento gráfica (GPUs) 184 podem comunicar-se com a interface gráfica 182. A este respeito, as GPUs 184 geralmente incluem um armazenamento de memória no chip, tal como armazenamento de registro as GPUs 184 comunicam-se com uma memória de vídeo 186. Entretanto, as GPUs são apenas um e-xemplo de um coprocessador e desse modo uma variedade de dispositivos de co-processamento podem estar incluídos no computador 110. Um monitor 191 ou outro tipo de dispositivo de vídeo também está conectado com o barramento do sistema 121 via uma interface, tal como uma interface de vídeo 190, a qual pode por sua vez comunicar-se com a memória de vídeo 186. Em adição ao monitor 191, os computadores também podem incluir outros dispositivos de saída periféricos tal como os alto-falantes 197 e a impressora 196, os quais podem estar conectados através de uma interface de saída de periférico 195 . O computador 110 pode operar em um ambiente em rede ou distribuído utilizando conexões lógicas com um ou mais computadores remotos, tal como um computador remoto 180. O computador remoto 180 pode ser um computador pessoal, um servidor, um roteador, um PC de rede, um dispositivo par ou outro nó de rede comum e tipicamente inclui vários ou todos os elementos descritos acima em relação ao computador 110, apesar de somente um dispositivo de armazenamento de memória 181 ter sido ilustrado na Fig. 3B. As conexões lógicas descritas na Fig. 3B incluem uma rede de área local (LAN) 171 e uma rede de área ampla (WAN) 173, mas também poderíam incluir outras redes / barramentos. Tais ambientes em rede são comuns em lares, escritórios, em redes de computadores amplas de empresas, intranets e na Internet.
Quando utilizado em uma ambiente em rede LAN, o computador 110 está conectado à LAN 171 através da interface de rede ou adaptador 170. Quando utilizado em um ambiente em rede WAN, o computador 110 tipicamente inclui um modem 172 ou outro dispositivo para estabelecer comunicações através da WAN 173, tal como a Internet. O modem 172, o qual pode ser interno ou externo, pode estar conectado com o bar-ramento do sistema 121 via a interface de entrada do usuário 160, ou via outro mecanismo apropriado. Em um ambiente em rede, os módulos de programa descritos em relação ao computador 110, ou partes dos mesmos, podem ser armazenados no dispositivo de armazenamento de memória remoto. A título de exemplo e não de limitação, a Fig. 3B ilustra programas de aplicação remotos 185 como residindo no dispositivo de memória 181. Será apreciado que as conexões da rede apresentadas são ilustrativas e outros dispositivos para estabelecer um link de comunicações entre os computadores podem ser utilizados .
Modelos ou Arquiteturas de Computação Distribuída Ilustrativos Vários modelos de computação distribuída têm sido e estão sendo desenvolvidos a luz da convergência da computação pessoal e da Internet. Indivíduos e usuários de negócio semelhantemente são proporcionados com uma interface habilitada para a Rede e diretamente inter-operável para aplicações e dispositivos de computação, tornando as atividades de computação crescentemente orientadas para a navegação na Rede ou em rede.
Por exemplo, a plataforma .NET da MICROSOFT® inclui servidores, serviços de blocos de construção, tal como armazenamento de dados baseado na Rede e software de dispositivo que pode ser transferido. Geralmente falando, a plataforma .NET proporciona (10) a capacidade de fazer toda uma faixa de dispositivos de computação trabalharem juntos e ter a informação do usuário automaticamente atualizada e sincronizada em todos os mesmos, (20) capacidade interativa aumentada para sites da Rede, permitido pelo maior uso do XML ao invés do HTML, (3) serviços on-line que caracterizam acesso personalizado e entrega de produtos e de serviços para o u-suário a partir de um ponto de partida central para gerenciamento de várias aplicações tal como e-mail, por exemplo, ou software, tal como Office .NET, (4) armazenamento de dados centralizado, o que irá aumentar a eficiência e a facilidade de acesso à informação, bem como a sincronização da informação entre os usuários e serviços, (5) a habilidade de integrar vários meios de comunicação, tal como e-mail, faxes e telefones, (6) para desenvolvedores, a capacidade de criar módulos reutilizáveis, desse modo aumentado a produtividade e reduzindo ao número de erros de programação e (7) igual-mente vários outros aspectos de integração de através da plataforma .
Enquanto modalidades ilustrativas aqui dentro são descritas em conexão com software residindo em um dispositivo de computação, uma ou mais partes da invenção podem também ser implementadas via um sistema operacional, interface de programação de aplicação (API) ou via um objeto "interme- diário" entre ura coprocessador e um objeto requisitante, de modo que os serviços de amostragem de textura controlável possam ser executados, suportados ou acessado via todas as linguagens e serviços da .NET e igualmente em outros modelos de computação distribuída.
AMOSTRAGEM DE TEXTURA CONTROLÁVEL
Como descrito no fundamento, existe uma pluralidade de diferentes técnicas que podem ser aplicadas para executar a amostragem de textura com a computação gráfica dependendo da aplicação envolvida. Apesar disso, o problema é que uma vez selecionada, a técnica é fixa sem muita flexibilidade, de modo que se surgir uma circunstância única não adequada para a técnica de amostragem de textura selecionada, ou se o desenvolvedor deve desejar certos artefatos, tal como o embaçamento, no resultado final, pouca coisa pode ser feita. Por conseqüência, a invenção aplica inteligência para os algoritmos de amostragem de textura de modo que um desenvolvedor é proporcionado com mais liberdade no front end permitindo-se a amostragem de textura mais dinâmica no back end. As técnicas da invenção desse modo tiram vantagem da tendência em direção às GPUs de função flexível, expondo a-mostragem de textura controlável para desenvolvedores aplicarem durante o desenvolvimento e inteligência dinâmica para manipular circunstâncias diferentes de modos diferentes. Por conseqüência, em várias modalidades, a invenção proporciona, para um ou mais dentre um sistema operacional, um código do controlador, uma API, um kit de ferramentas e/ou uma funcionalidade no próprio canal de informação gráfico, in- cluindo a GPU ou outro dispositivo de co-processamento, um mecanismo que proporciona capacidades de amostragem de textura controlável.
Desse modo, a invenção proporciona várias técnicas para controlar os processos de amostragem de textura via a-mostragem programável. Como mencionado no fundamento, em uma forma da filtragem anisotrópica, a filtragem bilinear é executada várias vezes ao longo de algum ângulo. Como ilustrado na Fig. 4A, quando o polígono texturizado está em um ângulo oblíquo com o plano da ela, a base correspondendo ao pixel da tela mapeado sobre a textura torna-se um formato alongado, tal como uma elipse. Quaisquer métodos atualmente conhecidos para calcular o formato correto para utilizar em relação a esta base da amostragem, baseia seus cálculos somente na geometria relativa do pixel da tela para o alinhamento dos texels do polígono e nenhum proporciona flexibilidade que permita a um desenvolvedor de forma prognosticada e de forma inteligente controlar o tamanho e a orientação da base diretamente. Assim, a invenção proporciona vários mecanismos para permitir uma "anulação manual" dos cálculos automáticos já executados e/ou uma modificação dos resultados que eles geram, permitindo um novo nível de realismo visual em gráficos 3-D em tempo real.
Com respeito à anulação manual, a invenção pode ser utilizada para substituir o tamanho e a orientação da base por substituir o Au e ο Δν originalmente utilizados para calcular a base com os valores de substituição Aunew e Avnew. Isto é ilustrado na Fig. 4A, por meio do que Aunew e Avnew definem uma orientação de substituição Gnew e definem um tamanho de passo de substituição snew. Assim, através da especificação dos valores de substituição Aunew e Avnew via uma API, via o sistema operacional, via um kit de ferramentas, via os controladores, etc., o processo de amostragem de textura pode ser controlado. A este respeito, as GPUs de função flexível atuais podem receber elementos de dados que representam a funcionalidade para alcançar isto, por designar e/ou designar novamente certos registros para alcançar tal processamento. As GPUs também podem ser pré-fabricadas para manipular este processamento. A substituição pode em algumas circunstâncias ser mais rápida do que as técnicas atualmente utilizadas desde que o chip não está mais envolvido em calcular os parâmetros definidos pela aplicação durante a substituição.
Com respeito a uma modificação da base atual utilizada em conexão com as técnicas anisotrópicas, a invenção pode ser utilizada para modificar o tamanho e a orientação da base pela modificação do Au e do Δν normalmente utilizados para calcular a base com os valores de deslocamento Au0 e Δν0. Isto é ilustrado na Fig. 4A, por meio do que Au + Au0 e Δν + Δν0 definem uma orientação modificada θ0 e também definem um tamanho de passo modificado s0. Assim, através da especificação dos valores de deslocamento Au0 e Δν0 via uma API, via um sistema operacional, via um kit de ferramentas, via controladores, etc., o processo de amostragem de textura pode ser controlado. De forma similar à substituição, as GPUs de função flexível atuais podem receber elementos de dados que representam as funcionalidade para alcançar isto, ou pré-fabricadas para alcançar os mesmos resultados. A modificação, como descrita aqui dentro, contempla qualquer função de Au ou de Au0, ou de Δν ou de Δν0 que não seja simplesmente a adição, isto é, multiplicação, expoentes, raízes quadradas, subtração, ou qualquer função matemática F (Au eAu0) ou F (Δν e Δν0) é contemplada como pode ser apropriado para a tarefa de filtragem em andamento.
Tanto a capacidade de modificação como a de substituição pode ser proporcionada ao mesmo tempo e ambas são opcionais, se o desenvolvedor escolher permitir ao hardware comportar-se como normal com respeito ao mapeamento de textura. Entretanto, a invenção proporciona ao desenvolvedor a opção de suplementar as técnicas atualmente existente por substituir e/ou modificar os parâmetros que definem a base da amostragem de textura para alcançar a amostragem de textura controlável.
Além disso, como descrito no fundamento, equações ilustrativas para a filtragem bilinear conhecidas para os com conhecimento comum na técnica de processamento gráfico incluem as seguintes: Em modalidades adicionais, a invenção permite aos desenvolvedores substituição ou modificação do aa e do ab utilizados em conexão com o cálculo da filtragem bilinear, para proporcionar uma camada adicional de controle sobre o processo de amostragem de textura.
As técnicas proporcionadas pela invenção são gerais e a faixa de aplicações para seu uso é virtualmente sem limites. Assim, enquanto vários exemplos de seu uso são proporcionados abaixo e enquanto vários exemplos de efeitos em conexão com os quais a invenção pode ser utilizada são dados no fundamento, a invenção é pretendida para aplicar-se junto a qualquer processo de amostragem de textura para o qual podería ser desejável controlar os aspectos do mapeamento.
Exemplos do uso da invenção e o pseudocódigo ilustrativo para a mesma são assim proporcionados abaixo.
Os métodos atuais para embaçamento do movimento requerem várias passagens de renderização, por exemplo, entre quatro e oito, as quais diretamente resultam em performance mais lenta, por exemplo, quatro até oito vezes uma performance mais lenta. Utilizar a maneira de se abordar de filtragem de acordo com a invenção pode proporcionar resultados similares em apenas uma passagem com um impacto muito reduzido na performance. Em tal caso, a invenção aplicaria dados repetidos (nível de vértice) para controlar o vetor de direção no qual o embaçamento é para ocorrer. Como explicado acima, o vetor de direção pode ser modificado ou substituído pela modificação ou substituição dos parâmetros de definição. Uma maneira de se abordar similar pode ser utilizada para simular e/ou controlar o embaçamento de refle-xão/Fresnel. É possível gerar reflexões de superfície anisotró-picas e efeitos de iluminação para a iluminação difusa e para algumas aproximações para iluminação especular. A iluminação especular verdadeira provém dos mapas de ambiente, os quais as técnicas correntes não podem amostrar de forma ani-sotrópica. As técnicas da invenção permitem a renderização anisotrópica dos mapas de ambiente refletidos. Tais técnicas são particularmente adequadas para superfícies brilhantes, ainda que anisotrópicas, tal como acabamentos de metal ligeiramente escovados em acessórios de aço inoxidável e podem utilizar a especificação por vértice ou por pixel da direção de amostragem pela modificação ou substituição dos parâmetros de definição da direção de amostragem.
Com respeito à superfície de auto-sombreamento, várias técnicas existem que promovem a iluminação por pixel das superfícies. A maioria destas técnicas pode somente e-xecutar efeitos de iluminação difusa, as quais são por definição,, efeitos de iluminação suaves. 0 impacto visual dominante de superfícies ásperas provém das sombras que áreas maiores projetam sobre áreas menores, o qual proporciona limites nítidos de alto contraste que claramente retratam a aspereza da textura da superfície. Outros métodos para calcular sombras nos gráficos 3-D somente podem projetar sombras a partir de um polígono sobre o outro e não são válidas para calcular sombras entre texels no mesmo polígono. A invenção desse modo aplica a especificação por pixel da direção de amostragem por modificar ou substituir os parâmetros de definição da direção de amostragem. A Fig. 5 ilustra um princípio básico por trás do sombreamento e ilustra modalidades adicionais da invenção. Na Fig. 5, um terreno ou superfície arbitrário T a ser sombreado ou iluminado a partir de uma fonte de ponto ps é i-lustrado, por meio do qual a região sombreada matematicamente representa as áreas da superfície que são expostas aos raios a partir da fonte de ponto ps. A este respeito, o terreno T é definido por uma pluralidade de pontos, os quais, em adição a possuir os valores u e v, também possuem um valor w que corresponde à altura do ponto do terreno T. Assim, a direção de amostragem para o sombreamento ou iluminação em 3-D tipicamente envolver estabelecer um vetor de direção de amostragem 3-D possuindo uma orientação e o tamanho do passo definido pelos valores Au, Δν e Aw. A este respeito, a invenção permite a substituição ou modificação dos valores de Au, Av e de Aw estendendo as técnicas aplicadas junto aos valores Au e Av, descritas acima, para o valor Aw.
Com respeito à amostragem volumétrica de projeção de raio, os métodos correntes para a renderização volumétrica requerem cortar o volume em fatias dentro dos polígono relativamente ortogonais para a direção do olho. Isto produz artefatos de ligação ao longo das bordas e dos cantos de tais volumes. As técnicas da invenção permitem a evitação controlável destes artefatos e igualmente aperfeiçoam a performance. Desse modo, a invenção permite a especificação ou a modificação de um vetor 3-D, o qual determina a direção de amostragem, o qual é então repetido linearmente a partir dos vértices. A amostragem podería então ser feita por uma sé- rie de múltiplas células, por exemplo, amostras trilineares de 8 células ou por amostras bilineares.
Com respeito à renderização volumétrica de auto-sombreamento, quando utilizando esta técnica em combinação com a renderização volumétrica do estilo dividido ou de fatia convencional, os efeitos de auto-iluminação ou de auto-sombreamento podem ser simulados dentro do volume renderiza-do. Assim, a invenção permite uma especificação por vértice ou a modificação de um vetor de direção de amostragem 3-D.
Com respeito à projeção de raio volumétrica auto sombreada, um nível de repetição aninhado é adicionado, onde em cada amostra ao longo do raio, um conjunto separado de amostra é projetado ao longo da direção para a fonte de luz para proporcionar a renderização de projeção de raio volumétrica verdadeira com auto-sombreamento. Esta técnica é uma extensão direta das técnicas discutidas até aqui, mas implica em alterações mais significativas junto ao hardware de amostragem.
Com respeito à amostragem de textura programável e aos projetores de sombra de amostragem, a técnica chave realizada pela invenção é permitir à aplicação, ou ao desenvolvedor, especificar a direção e o espaçamento das amostras centrais do filtro anisotrópico.
Os valores programados utilizados na amostragem bi/trilinear atual incluem: largura u, e largura v de um núcleo de quatro pontos. Valores adicionais para a 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 a- mostras em v. A este respeito, a invenção permite a especificação ou a modificação destes parâmetros por pixel em adição ao por vértice, seguido pela repetição. Por exemplo, tais técnicas seriam suficientes para os mapas de ambiente embaçados de forma anisotrópica.
Pseudocódigo Ilustrativo não Limitativo 0 pseudocódigo ilustrativo para um projetor de sombra anisotrópico básico é como se segue: para cada pixel { ComputeBaseUV (&u, &v) ComputeDuDv (baseado na equação de área padrão) sum = 0,0; para cada amostra { sum += GetBilinearSample( u, v ) } sum = sum/nsamples(1,2,4,8) } 0 pseudocódigo para um proj etor de sombra para em-baçamento de movimento, por exemplo, para um projetor de sombra de embaçamento anisotrópico para simular metal escovado com mapas de ambiente, que opera em dados por vértice 2-D é como se segue: para cada pixel { ComputeBaseUV (&u, &v) ReadDuDv a partir da textura ou repetidores se por polígono sum = 0,0; para numsamples (de preferência pow2) { sum += GetBilinearSample( u, v ) } sum = sum/nsamples(1,2,4,8,16) retorna sum } O pseudocódigo ilustrativo para um projetor de sombra de uma superfície nítida sombreada, por exemplo, para uma um projetor de sombra de auto-sombreamento de superfície local, o qual produz bordas de sombra nítidas, mas permite a saída antecipada da amostragem quando é determinado que a posição está na sombra, é como se segue: du, dv, dw// etapas na direção da fonte de luz // (repetidas a partir dos vértices) para cada pixel { ComputeBaseUV( &u, &v ) w = SampleH( u, v );// raio inicial neste pixel sum = 0,0; para i=0; icnumsamples (nenhum pow2 requisitado) { //repete em direção à luz h = sampleH( u,v );// pega altura se ( h > w)//se altura acima do raio retorna 0,5//então pixel está na sombra } retorna l,0//senão ele está totalmente iluminado } 0 pseudo código ilustrativo para o projetor de sombra de superfície de sombras difusas, o qual calcula um valor fracionário da sombra por distribuir a sombra para o-clusores mais próximos é como se segue: du, dv, dw// etapas na direção da fonte de luz // (repetidas a partir dos vértices) para cada pixel { ComputeBaseUV( &u, &v ) w = SampleH( u, v );// raio inicial neste pixel sum = 0,0; para numsamples (sem necessidade para pow2) { //repete em direção a luz h = sampleH( u,v );// pega altura dei = h - w//altura acima do raio se ( dei > ma ) max = dei; //encontra valor mais alto } mapMaxtoShadow() } Exemplos adicionais do uso da invenção incluem proporcionar um projetor de sombra de projeção de raio volu-métrico programável, o qual acumula e integra valores de a-mostra trilinerares. Tal projetor de sombra pode comportar-se de forma diferente baseado em quanto difíceis são os dados no ambiente com o canal de informação. A este respeito, a invenção pode ser utilizada de comum acordo com o buffer z para integrar objetos opacos. Em tal caso, uma leitura do buffer z pode ser executada e o buffer z pode ser comparado por amostra. Além disso, tal técnica podería assumir que os raios são sempre para longe dos olhos, de modo que esta integração pode terminar de acordo com o resultado da operação de comparação de profundidade.
Outros exemplos do uso da invenção incluem proporcionar um projetor de sombra de pele/nevoeiro volumétrico com auto-sombreamento programável, o qual utiliza um método de renderização do tipo vertical corrente para dados de volume, mas utiliza as técnicas descritas acima para calcular os raios de sombra.
Existem vários modos de implementar a presente invenção. Um modo é proporcionar uma implementação pela qual os coprocessadores, por exemplo, GPUs, são pré-fabricados para executar a funcionalidade da invenção e receber comandos adequados para a amostragem de textura controlável descrita aqui dentro. Outra implementação da invenção inclui manualmente ou automaticamente programar os coprocessadores para alcançar a funcionalidade da invenção, por meio da qual uma API apropriada, kit de ferramentas, código do controlador, sistema operacional, objeto de software independente ou que pode ser transferido, etc., permite o uso da invenção como entre a aplicação e o coprocessador. Outra implementação inclui alterar os parâmetros alimentados para os coprocessadores pela aplicação para tornar a modificação / substituição dos parâmetros da base do processo de amostragem de textura transparente para os coprocessadores. Assim, a invenção contempla implementar a amostragem de textura progra-mável descrita aqui dentro inteiramente em hardware, parcialmente em hardware e parcialmente em software, bem como uma implementação em software.
Em uma implementação ilustrativa da invenção, um componente da API é proporcionado, o qual permite a especificação de parâmetros na declaração de amostragem que identifica um vetor de direção para a amostragem ocorrer. Todas as variações descritas acima com respeito aos vetores de a-mostragem multi-dimensionais também são contempladas. Por exemplo, o terceiro componente utilizado para a inclinação de elevação pode ser utilizado para projetar sombras, rende-rização volumétrica, etc. Um exemplo de tal componente da API para operar sobre os registros de hardware é como se segue em formato de pseudocódigo: LD# rO, tO, vO
textura da amostra estabelecida no estágio # coloca resultado em rO amostra no texcoord tO com eixo da base vO e o modo de contagem/mistura da amostragem definido na declaração do estágio # como em: stg# wrapmode=off, tilemode = wrap, filtermode-programmable, samplecount=16 width=l filterop = replace (app-valores especificados) Uma parte de hardware ilustrativa, a qual torna o vetor/passada de direção para o sombreamento anisotrópico controlável pelo dispositivo especificado pela IP acima, inclui a seguinte funcionalidade: (A) Valores preestabeleci- dos, (B) Substituir, (C) Adicionar e (D) Modulação. A este respeito, Valores preestabelecidos definem a amostragem controlada que não é de aplicação convencional, a qual calcula o passo e a direção para a amostragem baseada em um algoritmo de filtragem anisotrópica padrão. A função Substituir substitui os Valores Preestabelecidos com valor especificados da aplicação. A função Adicionar adiciona valores especificados da aplicação para os valores calculados do chip para determinar a direção final da amostragem. A função Modulação multiplica o vetor de direção especificado da aplicação pelo valor calculado do chip para determinar a direção final da amostragem.
Em uma modalidade da invenção, os chips do hardware fazem uso de técnicas de hardware de leitura dependente existentes para pegar amostras individuais de modo a implementar as várias técnicas da invenção. Tal modalidade permite que uma aplicação controle a posição de cada amostra no núcleo, não apenas esta de cada conjunto de bases bilineares dois por dois e assim é mais geral do que algumas técnicas descritas acima.
Usos adicionais da invenção incluem o uso da abordagem das derivadas de mapeamento de horizonte de Nelson Max para alcançar texturas auto-sombreadas pelo controle dos parâmetros utilizados inerentes às mesmas. A invenção em suas várias modalidades relevantes também suporta (1) detecção de, (2) "saída antecipada" ou (3) um retorno de nulos quando o raio projetado intersecta o buffer z corrente, ou quando ocorre a saturação.
Em outras modalidades da invenção, os projetores de sombra de amostragem programável são proporcionados, os quais permitem o controle por algoritmo de operações de a-mostragem, como descrito em vários detalhes acima. Além disso, certos efeitos de segunda ordem são alcançados, tal como a habilidade de variar o espaçamento destes incrementos, ou o amanho do núcleo em cada etapa, de modo que o em-baçamento, luzes distribuídas, etc., podem ser modelados.
Como mencionado acima, embora modalidades ilustrativas da presente invenção tenham sido descritas em conexão com vários dispositivos de computação e arquiteturas de rede, os conceitos subjacentes podem ser aplicados junto a qualquer dispositivo ou sistema de computação no qual seja desejável executar a amostragem de textura. Assim, as técnicas para proporcionar o processamento de sinal aperfeiçoado de acordo com a presente invenção podem ser aplicadas junto a uma variedade de aplicações e dispositivos. Por e-xemplo, os algoritmos da invenção podem ser aplicados junto ao sistema operacional de um dispositivo de computação, proporcionados como um objeto separado no dispositivo, como parte de outro objeto, como um objeto que pode ser transferido a partir de um servidor, como um "intermediário" entre um dispositivo ou objeto e a rede, como um objeto distribuído, etc. Enquanto linguagens de programação ilustrativas, nomes e exemplos foram escolhidos aqui dentro como representativos de várias escolhas, estas linguagens, nomes e exemplos não são pretendidos para ser limitativos. Os com conhecimento normal na técnica irão apreciar que existem vários modos para proporcionar o código objeto que obtém a mesma, similar ou equivalente amostragem de textura controlável obtida pela invenção.
As várias técnicas descritas aqui dentro podem ser implementadas em conexão com hardware ou com software ou, onde apropriado, com uma combinação de ambos. Assim, os métodos e aparelhos da presente invenção, ou certos aspectos ou partes da mesma, podem tomar a forma de código de programa (isto é, instruções) incorporadas em meio tangível, tal como disquetes flexíveis, CD-ROM, unidades de disco rígido, ou em qualquer outro meio de armazenamento legível por máquina, onde, quando o código de programa é carregado e executado por uma máquina, tal como um computador, a máquina torna-se um aparelho para praticar a invenção. No caso de execução de código de programa em computadores programáveis, o dispositivo de computação geralmente incluirá um processador, um meio de armazenamento legível 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, por exemplo, através do uso de uma API de processamento de dados ou semelhante, são de preferência implementados em uma linguagem de programação processual de alto nível ou orientada a objeto para comunicar-se com um sistema de computador. Entretanto, os programas podem ser implementados em linguagem de montagem ou de máquina, se desejado. Em qualquer 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 via comunicações incorporadas na forma de código de programa que é transmitido através de algum meio de transmissão, tal como através de fiação elétrica ou de cabo, através de fibra ótica, ou via qualquer outra forma de transmissão, onde, quando o código de programa é recebido e carregado e executado por uma máquina, tal como uma EPROM, uma série de portas, um dispositivo lógico programável (PLD), um computador cliente, um gravador de vídeo ou semelhantes ou uma máquina de recepção possuindo as capacidades de processamento de sinal como descritas nas modalidades a-cima torna-se um aparelho para praticar a invenção. Quando implementado em um processador de propósito geral, o código de programa combina-se com o processador para proporcionar uma aparelho único que opera para invocar a funcionalidade da presente invenção. Adicionalmente, quaisquer técnicas de armazenamento utilizadas em conexão com a presente invenção podem de forma invariável ser uma combinação de hardware e de software.
Embora a presente invenção tenha sido descrita em conexão com as modalidades preferidas das várias figuras, é para ser entendido que outras modalidades similares podem ser utilizadas ou modificações e adições podem ser feitas junto à modalidade descrita para executar a mesma função da presente invenção sem desviar-se da mesma. Por exemplo, enquanto ambientes de rede ilustrativos da invenção são descritos no contexto de um ambiente em rede, tal como um ambiente em rede não-hierárquica, os com conhecimento na técnica irão reconhecer que a presente invenção não está limitada à mesma e que métodos, como descritos no presente pedido podem se aplicar a qualquer dispositivo ou ambiente de computação, tal como console de jogo, computador de mão, computador portátil, etc., que com fios ou sem fios e pode ser aplicada junto a qualquer número de tais dispositivos de computação conectados via uma rede de comunicações e interagindo através da rede. Adicionalmente, deve ser enfatizado que uma variedade de plataformas de computador, incluindo sistemas operacionais de dispositivo de mão e outros sistemas operacionais de aplicação específica são contemplado, especialmente a medida que uma série de dispositivos em rede sem fios continuam a proliferar. Ainda adicionalmente, a presente invenção pode ser implementada através ou em uma pluralidade de chips ou dispositivos de processamento e o armazenamento pode de forma similar ser efetuado através de uma pluralidade de dispositivos. Portanto, a presente invenção não deve ser limitada a qualquer modalidade única, mas ao invés disso deve ser construída em amplitude e escopo de acordo com as reivindicações anexas.

Claims (45)

1. Método para proporcionar amostragem de textura controlável, caracterizado pelo fato de que compreende as etapas de: especificar pelo menos um parâmetro (ãuo, Δν0, So, θο, Aunew/ âVnew/ snew/ 9new) definindo uma base da amostragem utilizada em conexão com amostragem de textura de um mapa de textura (200, 200b, 200c); receber, através de um componente de entrada de um dispositivo de co-processamento, a especificação do dito pelo menos um parâmetro definindo uma base da amostragem; e amostrar a textura do dito mapa de textura de a-cordo com os ditos parâmetros especificados da dita base da amostragem.
2. Método, de acordo com a reivindicação 1, caracterizado pelo fato de que a dita especificação inclui pelo menos uma dentre as etapas de: modificar pelo menos um parâmetro padrão (ãu, Δν, s, Θ) por especificar pelo menos um valor de deslocamento (ãu, Δν) para o dito pelo menos um parâmetro padrão, e substituir pelo menos um parâmetro padrão (ãu, Δν, s, Θ) com pelo menos um parâmetro de substituição (âunew/ ãVnew, Snew/ Qnew) ·
3. Método, de acordo com a reivindicação 2, caracterizado pelo fato de que a dita modificação inclui pelo menos uma dentre as etapas de adicionar o valor de deslocamento e o parâmetro padrão, multiplicar o valor de deslocamento pelo parâmetro padrão, aplicar um dentre o valor de deslocamento e o parâmetro padrão como um expoente, subtrair o valor de deslocamento do parâmetro padrão, e executar uma função matemática predefinida com base no parâmetro padrão e no valor de deslocamento.
4. Método, de acordo com qualquer uma das reivindicações 1 a 3, caracterizado pelo fato de que a dita base da amostragem é uma base da amostragem de pelo menos um dentre um processo de amostragem de ponto, um processo de filtragem bilinear, um processo de mapeamento MIP, um processo de filtragem anisotrópica e um processo de sua-vização.
5. Método, de acordo com a reivindicação 1, caracterizado pelo fato de que a dita especificação inclui especificar o dito pelo menos um parâmetro pelo menos um dentre por vértice e por pixel (222) em conexão com a dita amostragem de textura.
6. Método, de acordo com a reivindicação 5, caracterizado pelo fato de que adicionalmente inclui a etapa de aplicar iterativamente a dita amostragem de textura .
7. Método, de acordo com a reivindicação 1, caracterizado pelo fato de que a dita especificação inclui especificar pelo menos um dentre um tamanho do passo (so, Snew) e uma orientação (θο, 9new) da base da amostragem.
8. Método, de acordo com a reivindicação 5 ou 6, caracterizado pelo fato de que a dita especificação inclui pelo menos um dentre especificar o espaçamento du das amostras em uma direção u e especificar o espaçamento dv das amostras em uma direção v.
9. Método, de acordo com a reivindicação 5 ou 6, caracterizado pelo fato de que a dita especificação inclui especificar pelo menos um dentre um valor ãu, um valor Δν e um valor Aw.
10. Método, de acordo com a reivindicação 1, caracterizado pelo fato de que a dita especificação inclui especificar um dentre um valor aa e um valor 0¾ para uso em conexão com o cálculo da filtragem bilinear.
11. Método, de acordo com qualquer uma das reivindicações 1 a 3, caracterizado pelo fato de que a dita base da amostragem é uma base de amostragem de filtragem anisotrópica.
12. Método, de acordo com a reivindicação 11, caracterizado pelo fato de que o dito pelo menos um parâmetro inclui pelo menos um dentre uma direção e um espaçamento de amostras de núcleo de filtro anisotrópico.
13. Método, de acordo com qualquer uma das reivindicações 1 a 12, caracterizado pelo fato de que a dita amostragem de textura do dito mapa de textura de acordo com os ditos parâmetros especificados altera pelo menos um efeito visual do espaço de pixels resultante da dita amostragem de textura, e o dito pelo menos um efeito visual inclui pelo menos um dentre: um efeito de embaçamen-to, um efeito de formação de bloco, um efeito de rasteja-mento da textura, um efeito de estouro do pixel, um efeito de formação de serrilhado temporal, um efeito de tre-medeira da textura, um efeito de arrastamento da textura e um efeito de listramento.
14. Método, de acordo com qualquer uma das reivindicações 1 a 12, caracterizado pelo fato de que a dita amostragem de textura do dito mapa de textura de acordo com os ditos parâmetros especificados cria a textura de uma superfície de triângulo para obter pelo menos um dentre um efeito de iluminação, um efeito de mapeamento de colisão, um efeito de embaçamento, um efeito de embaça-mento da reflexão, um efeito de embaçamento de Fresnel, um efeito de aspecto de mármore, um efeito de água em movimento, um efeito de criação de nevoeiro linear, um efeito de criação de nevoeiro exponencial, um efeito de criação de nevoeiro baseado na extensão, um efeito de transparência, um efeito de translucidez, um efeito de superfície curva, um efeito de sombreamento nítido, um efeito de sombreamento difuso e um efeito de texturização volumétrica.
15. Método, de acordo com a reivindicação 1, caracterizado pelo fato de que a dita especificação de pelo menos um parâmetro inclui especificar pelo menos um parâmetro de uma base da amostragem que aplica embaçamento do movimento, e a dita especificação adicionalmente inclui aplicar dados de nivel de vértice repetidos para controlar um vetor de direção da base da amostragem.
16. Método, de acordo com a reivindicação 1, caracterizado pelo fato de que a dita especificação de pelo menos um parâmetro inclui especificar pelo menos um parâmetro de uma base da amostragem que aplica pelo menos um dentre a reflexão de superfície anisotrópica, iluminação difusa e uma aproximação para a iluminação especular, e a dita especificação adicionalmente inclui aplicar uma dentre a especificação por vértice e por pixel da direção de amostragem da base da amostragem.
17. Método, de acordo com a reivindicação 1, caracterizado pelo fato de que a dita especificação de pelo menos um parâmetro inclui especificar pelo menos um parâmetro de uma base da amostragem que aplica o auto-sombreamento da superfície, e a dita especificação adicionalmente inclui aplicar a especificação por pixel da direção de amostragem da base da amostragem.
18. Método, de acordo com a reivindicação 17, caracterizado pelo fato de que a dita especificação adicionalmente inclui especificar parâmetros de controle para cálculos de derivada do mapeamento de horizonte de Nelson Max.
19. Método, de acordo com a reivindicação 1, caracterizado pelo fato de que a dita especificação de pelo menos um parâmetro inclui especificar pelo menos um parâmetro de uma base da amostragem que aplica a amostragem volumétrica por projeção de raio, em que a amostragem vo-lumétrica de projeção de raio inclui cortar um volume em fatias em polígonos relativamente ortogonais a uma direção do olho, e a dita especificação adicionalmente inclui especificar a direção de amostragem da base da amostragem, e a dita amostragem de textura inclui repetidamente aplicar a direção de amostragem especificada.
20. Método, de acordo com a reivindicação 19, caracterizado pelo fato de que adicionalmente inclui a etapa de detectar quando um de um raio de projeção intercepta um armazenamento temporário z corrente e quando ocorre a saturação.
21. Método, de acordo com a reivindicação 1, caracterizado pelo fato de que a dita especificação de pelo menos um parâmetro inclui especificar pelo menos um parâmetro de uma base da amostragem que aplica a renderização volumétrica auto-sombreada em combinação com uma renderização volumétrica de fatia ou de estilo vertical, e a dita especificação adicionalmente inclui aplicar a especificação por vértice da direção de amostragem da base da amostragem.
22. Método, de acordo com a reivindicação 1, caracterizado pelo fato de que a dita especificação inclui especificar um vetor de direção da base da amostragem via um componente API.
23. Dispositivo de co-processamento (184) para uso em conexão com instruções de amostragem de textura controlável compreendendo um componente de amostragem de textura operável para executar a amostragem de textura em um mapa de textura (200, 200b, 200c) de acordo com pelo menos um parâmetro especificado (Auo, Δν0, So, θο, àunew, Avnewf snew, 9new) definindo uma base da amostragem utilizada em conexão com a dita amostragem de textura do dito mapa de textura caracterizado pelo fato de que o dispositivo de co-processamento (184) compreende ainda um compo- nente de entrada operável para receber a especificação do dito pelo menos um parâmetro definindo a dita base da amostragem.
24. Dispositivo de co-processamento, de acordo com a reivindicação 23, caracterizado pelo fato de que o dito componente de entrada inclui pelo menos um dentre: um primeiro componente de entrada que recebe instruções para modificar pelo menos um parâmetro padrão (ãu, Δν, s, Θ) por receber uma especificação de pelo menos um valor de deslocamento (ãu, Δν) para o dito pelo menos um parâmetro padrão, e um segundo componente de entrada que recebe instruções para substituir pelo menos um parâmetro padrão (ãu, Δν, s, Θ) com pelo menos um parâmetro de substituição (ãUnew/ ãVnew, Snew/ Qnew) · ·
25. Dispositivo de co-processamento, de acordo com a reivindicação 24, caracterizado pelo fato de que o dito primeiro componente de entrada que recebe instruções para modificar inclui pelo menos um dentre um terceiro componente de entrada que recebe instruções para adicionar o valor de deslocamento e o parâmetro padrão, um quarto componente de entrada que recebe instruções para multiplicar o valor de deslocamento e o parâmetro padrão, um quinto componente de entrada que recebe instruções para aplicar um dentre o valor de deslocamento e o parâmetro padrão como um expoente, um sexto componente de entrada que recebe instruções para subtrair o valor de deslocamento 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 deslocamento.
26. Dispositivo de co-processamento, de acordo com qualquer uma das reivindicações 23 a 25, caracterizado pelo fato de que a dita base da amostragem é uma base da amostragem a partir de pelo menos um dentre um processo de amostragem de ponto, um processo de filtragem bili-near, um processo de mapeamento MIP, um processo de filtragem anisotrópica e um processo de suavização.
27. Dispositivo de co-processamento, de acordo com a reivindicação 23, caracterizado pelo fato de que o dito componente de entrada inclui um componente que recebe instruções para especificar o dito pelo menos um parâmetro pelo menos um dentre por vértice e por pixel (222) em conexão com o dito componente de amostragem de textura .
28. Dispositivo de co-processamento, de acordo com a reivindicação 27, caracterizado pelo fato de que adicionalmente inclui aplicar iterativamente a dita amostragem de textura do componente de amostragem de textura.
29. Dispositivo de co-processamento, de acordo com a reivindicação 23, caracterizado pelo fato de que o dito componente de entrada inclui um componente que recebe instruções para especificar pelo menos um dentre um tamanho do passo (so, snew) e uma orientação (θο, 9new) da base da amostragem.
30. Dispositivo de co-processamento, de acordo com a reivindicação 27 ou 28, caracterizado pelo fato de que o dito componente de entrada inclui pelo menos um dentre um primeiro componente que recebe instruções para especificar o espaçamento du das amostras em uma direção u e um segundo componente de entrada que recebe instruções para especificar o espaçamento dv das amostras em uma direção v.
31. Dispositivo de co-processamento, de acordo com a reivindicação 27 ou 28, caracterizado pelo fato de que o dito componente de entrada inclui um componente que recebe instruções para especificar pelo menos um dentre um valor ãu, um valor Δν e um valor Aw.
32. Dispositivo de co-processamento, de acordo com a reivindicação 23, caracterizado pelo fato de que o dito componente de entrada inclui um componente que recebe instruções para especificar um dentre um valor aa e um valor 0¾ para uso em conexão com o cálculo da filtragem bilinear.
33. Dispositivo de co-processamento, de acordo com qualquer uma das reivindicações 23 a 25, caracterizado pelo fato de que a dita base da amostragem é uma base de amostragem de filtragem anisotrópica.
34. Dispositivo de co-processamento, de acordo com a reivindicação 33, caracterizado pelo fato de que o dito pelo menos um parâmetro inclui pelo menos um dentre uma direção e um espaçamento de amostras de núcleo de filtro anisotrópico.
35. Dispositivo de co-processamento, de acordo com qualquer uma das reivindicações 23 a 34, caracterizado pelo fato de que a dita amostragem de textura do dito mapa de textura pelo componente de amostragem de textura de acordo com os ditos parâmetros especificados altera pelo menos um efeito visual do espaço de pixels resultante da dita amostragem de textura, e o dito pelo menos um efeito visual inclui pelo menos um dentre: um efeito de embaçamento, um efeito de formação de bloco, um efeito de nado da textura, um efeito de estouro do pixel, um efeito de formação de serrilhado temporal, um efeito de treme-deira da textura, um efeito de arrastamento da textura e um efeito de listramento.
36. Dispositivo de co-processamento, de acordo com qualquer uma das reivindicações 23 a 34, caracterizado pelo fato de que a dita amostragem de textura do dito mapa de textura pelo componente de amostragem de textura de acordo com os ditos parâmetros especificados cria a textura de uma superfície de triângulo para obter pelo menos um dentre um efeito de iluminação, um efeito de mapeamento de colisão, um efeito de embaçamento, um efeito de embaçamento da reflexão, um efeito de embaçamento de Fresnel, um efeito de aspecto de mármore, um efeito de água em movimento, um efeito de criação de nevoeiro linear, um efeito de criação de nevoeiro exponencial, um efeito de criação de nevoeiro baseado na extensão, um efeito de transparência, um efeito de translucidez, um efeito de superfície curva, um efeito de sombreamento nítido, um efeito de sombreamento difuso e um efeito de texturização volumétrica.
37. Dispositivo de co-processamento, de acordo com a reivindicação 23, caracterizado pelo fato de que o dito componente de entrada inclui um primeiro componente de entrada que recebe instruções para especificar pelo menos um parâmetro de uma base da amostragem que aplica embaçamento do movimento, e o dito componente de entrada adicionalmente inclui um segundo componente que recebe instruções para aplicar dados de nível de vértice repetidos para controlar um vetor de direção da base da amostragem.
38. Dispositivo de co-processamento, de acordo com a reivindicação 23, caracterizado pelo fato de que o dito componente de entrada inclui um primeiro componente de entrada que recebe instruções para especificar pelo menos um de uma base da amostragem que aplica pelo menos um dentre a reflexão de superfície anisotrópica, iluminação difusa e uma aproximação para a iluminação especular, e o dito componente de entrada adicionalmente inclui um segundo componente que recebe instruções aplicar uma dentre a especificação por vértice e por pixel da direção de amostragem da base da amostragem.
39. Dispositivo de co-processamento, de acordo com a reivindicação 23, caracterizado pelo fato de que o dito componente de entrada inclui um primeiro componente de entrada que recebe instruções para especificar pelo menos um parâmetro de uma base da amostragem que aplica o auto-sombreamento da superfície, e o dito componente de entrada adicionalmente inclui um segundo componente de entrada que recebe instruções para aplicar a especificação por pixel da direção de amostragem da base da amostragem.
40. Dispositivo de co-processamento, de acordo com a reivindicação 39, caracterizado pelo fato de que o dito componente de entrada adicionalmente inclui um componente que recebe instruções para especificar parâmetros de controle para cálculos de derivada do mapeamento de horizonte de Nelson Max.
41. Dispositivo de co-processamento, de acordo com a reivindicação 23, caracterizado pelo fato de que o dito componente de entrada inclui um primeiro componente de entrada que recebe instruções para especificar pelo menos um parâmetro de uma base da amostragem que aplica a amostragem volumétrica por projeção de raio, em que a amostragem volumétrica de projeção de raio inclui cortar um volume em fatias em polígonos relativamente ortogonais a uma direção do olho e o dito componente de entrada adicionalmente inclui um segundo componente de entrada a direção de amostragem da base da amostragem, e o dito componente de amostragem de textura de forma repetida aplica a direção de amostragem especificada.
42. Dispositivo de co-processamento, de acordo com a reivindicação 41, caracterizado pelo fato de que adicionalmente inclui um componente de detecção que detecta quando um de um raio de projeção intersecta um armazenamento temporário z corrente e quando ocorre a satu- ração .
43. Dispositivo de co-processamento, de acordo com a reivindicação 42, caracterizado pelo fato de que o dito componente de entrada inclui um primeiro componente de entrada que recebe instruções para especificar pelo menos um parâmetro de uma base da amostragem que aplica a renderização volumétrica auto-sombreada em combinação com uma renderização volumétrica de fatia ou de estilo vertical convencional, e o dito componente de entrada adicionalmente inclui um segundo componente de entrada que recebe instruções para aplicar a especificação por vértice da direção de amostragem da base da amostragem.
44. Dispositivo de co-processamento, de acordo com a reivindicação 23, caracterizado pelo fato de que o dito componente de entrada inclui um componente que recebe instruções para especificar um vetor de direção da base da amostragem a partir de pelo menos um dentre um componente de interface de programação de aplicação, um código do controlador, um sistema operacional e uma aplicação .
45. Dispositivo de co-processamento, de acordo com qualquer uma das reivindicações 23 a 44, caracterizado pelo fato de que adicionalmente inclui pelo menos uma unidade de processamento gráfico (184).
BRPI0300983A 2002-06-20 2003-04-07 método para proporcionar amostragem de textura controlável e dispositivo de co-processamento BRPI0300983B1 (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 (2)

Publication Number Publication Date
BR0300983A BR0300983A (pt) 2004-11-09
BRPI0300983B1 true BRPI0300983B1 (pt) 2016-04-05

Family

ID=22645931

Family Applications (1)

Application Number Title Priority Date Filing Date
BRPI0300983A BRPI0300983B1 (pt) 2002-06-20 2003-04-07 método para proporcionar amostragem de textura controlável e dispositivo de co-processamento

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
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
PT1376472E (pt) 2007-03-30
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
BRPI0300983B1 (pt) método para proporcionar amostragem de textura controlável e dispositivo de co-processamento
CN111508052B (zh) 三维网格体的渲染方法和装置
WO2022193941A1 (zh) 图像渲染方法、装置、设备、介质和计算机程序产品
EP1594091B1 (en) System and method for providing an enhanced graphics pipeline
US7212207B2 (en) Method and apparatus for real-time global illumination incorporating stream processor based hybrid ray tracing
US7542049B2 (en) Hardware accelerated anti-aliased primitives using alpha gradients
Schott et al. A directional occlusion shading model for interactive direct volume rendering
US20080180440A1 (en) Computer Graphics Shadow Volumes Using Hierarchical Occlusion Culling
JP2004038926A (ja) テクスチャマップ編集
JP6885693B2 (ja) グラフィックス処理システム
US7133052B1 (en) Morph map based simulated real-time rendering
JP4311877B2 (ja) 副標本化テクスチャ端縁部のアンチエイリアシング
US20180005432A1 (en) Shading Using Multiple Texture Maps
US20230274493A1 (en) Direct volume rendering apparatus
Xu et al. Visualization methods of vector data on a Digital Earth System
Meyer et al. Real-time reflection on moving vehicles in urban environments
Bernik et al. Generating Terrain And Hi Details Using Texture Maps
Roettger et al. Fast volumetric display of natural gaseous phenomena
Ahokas Shadow Maps
Haindl et al. Visualization
Wither Interactive dynamic objects in a virtual light field
Méndez Fernández Visualizing 3D models with fine-grain surface dept
Lukasiewicz Scientific visualization using Pixar's RenderMan

Legal Events

Date Code Title Description
B15K Others concerning applications: alteration of classification

Free format text: A CLASSIFICACAO ANTERIOR ERA: G06T 7/40

Ipc: G06T 15/04 (2011.01)

B07A Application suspended after technical examination (opinion) [chapter 7.1 patent gazette]
B25A Requested transfer of rights approved

Owner name: MICROSOFT TECHNOLOGY LICENSING, LLC (US)

B09A Decision: intention to grant [chapter 9.1 patent gazette]
B16A Patent or certificate of addition of invention granted [chapter 16.1 patent gazette]

Free format text: PRAZO DE VALIDADE: 10 (DEZ) ANOS CONTADOS A PARTIR DE 05/04/2016, OBSERVADAS AS CONDICOES LEGAIS.

B21F Lapse acc. art. 78, item iv - on non-payment of the annual fees in time

Free format text: REFERENTE A 17A ANUIDADE.

B24J Lapse because of non-payment of annual fees (definitively: art 78 iv lpi, resolution 113/2013 art. 12)

Free format text: MANUTENCAO DA EXTINCAO - ART. 78 INCISO IV DA LPI