KR20140113379A - 데이터를 인코딩 및 디코딩하는 방법 및 장치 - Google Patents

데이터를 인코딩 및 디코딩하는 방법 및 장치 Download PDF

Info

Publication number
KR20140113379A
KR20140113379A KR20140027512A KR20140027512A KR20140113379A KR 20140113379 A KR20140113379 A KR 20140113379A KR 20140027512 A KR20140027512 A KR 20140027512A KR 20140027512 A KR20140027512 A KR 20140027512A KR 20140113379 A KR20140113379 A KR 20140113379A
Authority
KR
South Korea
Prior art keywords
data
texture
texture data
block
value
Prior art date
Application number
KR20140027512A
Other languages
English (en)
Other versions
KR102164847B1 (ko
Inventor
앤더스 라센
존 니스타드
Original Assignee
에이알엠 리미티드
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 에이알엠 리미티드 filed Critical 에이알엠 리미티드
Publication of KR20140113379A publication Critical patent/KR20140113379A/ko
Application granted granted Critical
Publication of KR102164847B1 publication Critical patent/KR102164847B1/ko

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/30Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using hierarchical techniques, e.g. scalability
    • H04N19/34Scalability techniques involving progressive bit-plane based encoding of the enhancement layer, e.g. fine granular scalability [FGS]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T9/00Image coding

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Signal Processing (AREA)
  • Compression Of Band Width Or Redundancy In Fax (AREA)
  • Image Generation (AREA)
  • Image Processing (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)

Abstract

그래픽 처리 시스템에 사용하는 텍스처를 인코딩하기 위해서, 가장 먼저 텍스처를 다운스케일(downscale)하여 텍스처(41)의 저해상도 표현을 발생한다. 다음에 텍스처의 저해상도 버전의 업스케일된(upscaled) 버전(42)과 원래의 텍스처를 비교해서 텍스처의 업스케일된 버전과 원래의 텍스처(43)의 텍셀의 값의 차분을 각 텍셀마다 나타내는 한 세트의 차분 값을 결정한다. 인코딩된 텍스처 데이터 블록은 원래의 텍스처(44)의 텍셀의 각 8×8 블록마다 발생한다. 각 인코딩된 텍스처 데이터 블록은 텍스처의 저행상도 표현으로부터 취득한 베이스 컬러 값과, 텍스처 데이터의 블록을 디코딩할 때 사용하는 결정된 차분 데이터의 세트로부터 차분 데이터를 나타내는 한 세트의 인덱스 값을 포함하여, 텍스처 데이터의 블록이 나타내는 텍스처 데이터 요소에 대하여 사용되는 데이터 값을 생성한다.

Description

데이터를 인코딩 및 디코딩하는 방법 및 장치{Method of and Apparatus for Encoding and Decoding Data}
본 발명은 데이터를 인코딩 및 디코딩하는 방법 및 장치에 관한 것으로, 특히 컴퓨터 그래픽 시스템에서 텍스처(texture) 데이터를 압축 및 압축 해제하기 위해서 사용하는 방법 및 장치에 관한 것이다.
컴퓨터 그래픽 시스템에 있어서는, 소위 텍스처들 혹은 텍스처 데이터를, 묘사되어야 하는 표면에 적용해서 표시되어야 하는 화상의 샘플링 위치에 대한 컬러를 생성하는 것이 일반적이다. 예를 들면, 개체(object) 위의 표면 디테일(detail)을, "텍스처"의 외관을 객체의 렌더링된(rendered) 화상에 주기 위해서, 객체를 나타내는 폴리곤의 세트에 미리 정해진 "텍스처"를 적용함으로써 생성할 수 있다. 그러한 텍스처들은 주어진 텍스처 데이터(컬러, 휘도 및/또는 빛/음영 등 값들과 같은)를 각각 나타내는 텍스처 요소들 또는 "텍셀들(texels)"의 어레이를 저장한 후에, 표시되어야 하는 화상에 대해서, 샘플링 위치의 세트와 (정말로, 일반적으로) 같은, 대응하는 요소들에 텍셀들을 맵핑(mapping)함으로써 적용되는 것이 일반적이다. 저장된 텍스처 요소(데이터)의 어레이는 일반적으로 "텍스처 맵(texture maps)"이라고 불린다.
그러한 구성은 고화질을 제공하지만, 많은 결점이 있다. 특히, 텍스처 데이터의 저장 및 사용중에 액세스하는 것은 예를 들면 높은 스토리지(storage) 및 대역폭 요건들을 그래픽 처리 디바이스에 둘 수 있다(혹은 반대로 그러한 요건이 충족되지 않은 경우에는 성능 손실이 있게 된다.). 이것은 특히 그래픽 처리를 행하는 모바일 및 포켓용 디바이스에 중요한데, 그 이유는 그러한 디바이스가 본질적으로 그들의 예를 들면 스토리지, 대역폭 및 동력 자원 및 능력에 제한되기 때문이다.
그러므로, 그러한 텍스처 데이터를 "압축된" 형태로 인코딩하여, 예를 들면 디바이스에 부과되는 스토리지 및 대역폭 부담을 줄이려고 하는 것이 알려져 있다.
하나의 알려진 그러한 텍스처 데이터 압축 기술은 예를 들면 주어진 텍스처 맵에 사용되는 컬러의 세트 또는 팔레트를 결정하고, 그 후에 텍셀에 대해서 사용되는 컬러를 나타내는 컬러들의 세트 또는 팔레트로 인덱스를 텍스처 맵에 있어서의 각 텍스처 요소(텍셀)마다 저장한다. 이것은 풀(예를 들면) 컬러 값보다는, 인덱스만이 각 텍셀마다 저장될 필요가 있다는 이점이 있다. 이것은 예를 들면 텍스처 데이터 저장 요건들을 줄이는 것을 돕지만, 여전히 저하된 화질 및 필요한 데이터 처리의 관점에서와 같은, 몇 가지의 단점이 있다.
또 다른 알려진 텍스처 압축 기술은 소위 구획 절단 부호화(BTC;block truncation coding)을 이용하는 것이다. 이 기술에 있어서는, 전체 텍스처 어레이(텍스처 맵)는 보다 작은 블록들, 예를 들면 4×4 텍셀로 세분되고, 다수(일반적으로는 2개)의 베이스(base) 또는 원색(primary colour) 값들은 그러한 블록마다 결정되며, 그 블록에 있어서의 각 텍셀은 베이스 컬러(base colour) 값들 중의 하나로 설정되어 있다. 이것은 다시 낮은 화질의 비용으로만 저장 및 액세스되어야 하는 데이터를 절약한다.
US 특허 제5047853호는 개선된 구획 절단 부호화 기술에 관해서 설명하고 있다. 이 기술에 있어서는, 2개의 베이스 컬러는 다시 각 텍셀 블록마다 저장되지만, 블록에 사용되는 2개의 추가 컬러는 이들 2개의 베이스 컬러(예를 들면, 이들 컬러들을 선형으로 블렌딩)으로부터 도출된다. 이렇게 해서, 4개의 컬러가 픽셀 블록에 대한 "팔레트"로서 제공되지만, 오직 2개의 컬러 값만이 블록에 대해서 저장될 필요가 있다. 그 다음, 이 블록에 있어서의 각 텍셀은 4개의 블록 "컬러들" 중 어느 것이 텍셀에 대해서 사용되어야 하는지를 나타내기 위해서, 2개의 비트를 이용해서 인코딩된다. 이 시스템은 기본 블록 구획 절단 부호화에 대해서 개선된 화질을 제공하지만, 블록당 더 많은 데이터를 필요로 한다.
본 출원인은 데이터 인코딩 및 압축 기술을 향상시킬 여지, 특히 그래픽 처리에 대해서 텍스처 데이터를 사용할 여지가 남아 있다고 믿는다.
본 발명의 제1 국면에 의하면, 그래픽 처리 시스템에서 사용되는 텍스처 데이터 요소들의 한 세트를 인코딩하는 방법이 제공되는데, 이 방법은,
상기 텍스처 데이터 요소들의 세트의 저해상도 표현을 결정하는 단계와,
원래의 텍스처 데이터 요소들의 세트와, 상기 텍스처 데이터 요소들의 세트의 결정된 저해상도 표현의 업스케일된 버전 간의 차분을 나타내는 전해상도의 차분 데이터의 세트를 결정하는 단계와,
상기 텍스처 데이터 요소들을 나타내는 텍스처 데이터의 한 개 또는 그 이상의 블록으로서 상기 텍스처 데이터 요소들의 세트를 인코딩하는 단계를 포함하고, 각 그러한 텍스처 데이터의 블록은,
상기 텍스처 데이터 요소들의 세트로부터 텍스처 데이터 요소들의 블록을 나타내고,
상기 텍스처 데이터 요소들의 세트의 결정된 저해상도 표현으로부터 얻은 블록에 대해서 베이스 데이터 값을 나타내는 데이터; 및
상기 텍스처 데이터의 블록이 나타내는 텍스처 데이터 요소들에 대해서 사용되는 데이터 값들을 생성하기 위해서 상기 텍스처 데이터의 블록을 디코딩할 때 사용되는 상기 결정된 차분 데이터의 세트로부터 차분 데이터를 나타내는 데이터를 포함한다.
본 발명의 제2 국면에 의하면, 그래픽 처리 시스템에서 사용되는 텍스처 데이터 요소들의 한 세트를 인코딩하는 장치가 제공되는데, 이 장치는,
상기 텍스처 데이터 요소의 세트의 저해상도 표현을 결정하는 수단과,
원래의 텍스처 데이터 요소들의 세트와, 상기 텍스처 데이터 요소들의 세트의 결정된 저해상도 표현의 업스케일된 버전 간의 차분을 나타내는 전해상도의 차분 데이터의 세트를 결정하는 수단과,
상기 텍스처 데이터 요소들을 나타내는 텍스처 데이터의 1개 또는 그 이상의 블록으로서 상기 텍스처 데이터 요소들의 세트를 인코딩하는 수단을 구비하고, 각 그러한 텍스처 데이터의 블록은,
상기 텍스처 데이터 요소들의 세트로부터 텍스처 데이터 요소들의 한 블록을 나타내고,
상기 텍스처 데이터 요소들의 세트의 결정된 저해상도 표현으로부터 얻은 블록에 대해서 베이스 데이터 값을 나타내는 데이터; 및
상기 텍스처 데이터의 블록이 나타내는 텍스처 데이터 요소들에 대해서 사용되는 데이터 값들을 생성하기 위해서 상기 텍스처 데이터의 블록을 디코딩할 때 사용되는 상기 결정된 차분 데이터의 세트로부터 차분 데이터를 나타내는 데이터를 포함한다.
본 발명의 제3 국면에 의하면, 그래픽 처리 시스템에서 사용되는 텍스처 데이터 요소들의 한 세트를 나타내는 텍스처 데이터의 한 블록이 제공되고,
상기 텍스처 데이터 요소의 세트의 결정된 저해상도 표현으로부터 얻은 블록에 대한 베이스 데이터 값을 나타내는 데이터; 및
원래의 텍스처 데이터 요소의 세트와, 상기 텍스처 데이터 요소의 세트의 결정된 저해상도 표현의 업스케일된 버전 간의 차분을 나타내고, 상기 텍스처 데이터의 블록이 나타내는 텍스처 데이터 요소들에 대해서 사용되는 데이터 값들을 생성하기 위해서 상기 텍스처 데이터의 블록을 디코딩할 때 텍스처 데이터 블록이 나타내는 텍스처 데이터 요소들에 대해서 사용되는 전해상도의 차분 데이터의 세트로부터 얻은 차분 데이터를 나타내는 데이터를 포함한다.
본 발명의 텍스처 데이터 인코딩 시스템에 있어서는, 텍스처 데이터 요소들(예를 들면, 화상을 나타내는)의 한 세트는 텍스처 데이터의 한 개 또는 그 이상의 블록으로서 인코딩되고, 텍스처 데이터의 각 블록은 알려진 종래 기술에서와 같이, 텍스처 데이터 요소들의 각각의 블록을 나타낸다.
그렇지만, 본 발명은 원래의 텍스처 데이터 요소들의 세트와 텍스처 데이터 요소들의 세트의 저해상도 표현의 업스케일된 버전 간의 차분을 나타내는 전해상도의 차분 데이터의 세트(즉, 각 텍스처 데이터 요소에 대한 별도의 엔트리(또는 엔트리들)가 있는 차분 데이터의 한 세트(즉, (원래의 텍스처(화상)의 해상도로) 인코딩되고 있는 원래의 텍스처 데이터 요소들의 세트의 해상도의 차분 데이터의 한 세트)와 함께, 원래의 텍스처 데이터 요소들의 세트의 저해상도 표현(버전)을 (나타내는 데이터를 인코딩하고) 결정해서 텍스처 데이터를 인코딩한다. 즉, 본 발명은 한 개의 감소된 (저)해상도 데이터 세트(텍스처 데이터 요소들의 세트의 저해상도 표현으로부터의 베이스 데이터 값들)와, 한 개의 전해상도 데이터 세트(차분 데이터의 세트)의 결합을 이용해서, 그래픽 텍스처를 인코딩한다.
추가로 이하에 설명하는 것처럼, 본 발명의 인코딩 스킴에 있어서는, 저해상도 데이터 세트는 실질적으로 텍스처에 있어서 저주파수를 나타낼 것이고, 전해상도 차분 데이터 세트는 실질적으로 텍스처에 있어서 고주파수를 나타낼 것이다.
본 출원인은 텍스처를 저주파수 및 고주파수 데이터 세트로 분할하면, 저주파수 성분이 공간 압축을 이용해서 유리하게 압축될 수 있지만, 여전히 고주파수 데이터의 전해상도 표현을 유지하는 것이 바람직할 것이라는 것을 알고 있다. 또한, 이하에서 더 후술하는 바와 같이, 본 출원인은, 데이터 세트를 나타내는 전해상도 고주파 데이터가 여전히 효율적으로 인코딩될 수 있는데 그 이유는 텍스처에 있어서의 고주파수 데이터의 짧은 반복 주기가 그러한 데이터의 전해상도 표현을 이용하고 있을 때에도, 효율적인 방식으로 인코딩될 수 있다는 것을 의미하기 때문이라는 것을 알고 있다. 본 발명은 이 인식을 이용해서 개선된 텍스처 압축 스킴을 제공한다.
이하에 더 설명하는 바와 같이, 본 출원인은 본 발명의 인코딩이 비교적 높은 텍스처 데이터 압축률을 제공할 수 있지만, 여전히 허용가능한 재생된 화질을 제공하고 있다는 것을 알아냈다. 예를 들면, 그것은 8×8 텍셀(텍스처 데이터 요소) 블록(즉, 1bpp, 픽셀(텍셀) 평균당 1비트)당 64비트만을 이용해서 많은 사용 케이스에 대해서 허용가능한 품질의 풀 RGB 텍스처의 인코딩을 허용할 수 있다.
따라서, 본 발명은 그래픽 처리 시스템에서의 텍스처 맵핑 시에 필요하며 소모되는 상당한 양의 대역폭 등을 줄일 수 있다. 이것에 의해 예를 들면 내장형 그래픽 시스템이 현재의 산업 표준 텍스처 압축 스킴보다도 훨씬 적은 대역폭을 소모하면서 고해상도로 시각적인 요소들에 텍스처들을 적용할 수 있게 된다. 또한, 본 발명은 텍스처들이 보다 적은 메모리를 사용할 수 있게 하고, 그것에 의해 예를 들면, 그들이 GPU(graphics processing unit) 메모리 퀵커(quicker)(이것은 특히 동영상으로 된(비디오) 텍스처들을 스트리밍(streaming)하는 데에 유용하다)에 업로드(스트림)될 수 있고, 보다 작은 디스크 공간 풋프린트 및 보다 짧은 로딩 시간을 게임 및 다른 그래픽 애플리케이션에 줄 수 있다.
이하에 더 설명하는 것처럼, 본 발명의 인코딩 포맷을 이용해서 1bpp 포맷에 대해서 매우 좋은 품질로 단일 성분 텍스처들을 인코딩할 수 있다. 상대적으로, 본 발명의 형태의 2개의 인코딩된 텍스처를 이용해서 인코딩된 텍스처들의 사이즈에 대해서 좋은 품질로 2bpp에서, 노멀 데이터와, RGB + 알파 데이터를 인코딩할 수 있다.
본 출원인은 또한 본 발명에 의해 제공된 보다 낮은 텍스처 데이터 비트율이 모바일 및 휴대용 디바이스들의 화면 해상도가 앞으로 더 증가함에 따라 더욱더 유리해질 수 있다는 것을 믿는다.
본 발명은 어떤 적절한 형태의 텍스처 데이터를 인코딩하기 위해서 이용될 수 있다. 상술한 바와 같이, 그러한 데이터는 그것의 원래의, 본래의, 혹은 인코딩되지 않은 형태로, 일반적으로 텍스처 요소들 혹은 텍셀들의 어레이의 형태로 배열되므로, 특히 바람직한 실시예에 있어서는, 본 발명은, 텍스처 데이터 요소들(텍셀들)의 어레이들을 인코딩하기 위해 이용된다. 그러한 어레이들은 비록 본 발명을 이용해서 3차원 어레이를 인코딩하는 것도 가능하지만, 일반적으로는 이 기술분야에서 알려진 바와 같이, 2차원이다.
인코딩되어야 하는 텍스처와 텍스처 데이터 요소들은 어떤 적절한 텍스처 데이터를 나타낼 수 있다. 바람직한 일 실시예에 있어서는, 텍스처는 이 기술분야에서 알려진 바와 같이, 렌더링되어야 하는 프리미티브(primitives)에 적용되는 화상, 컬러들(그레이스케일을 포함), 휘도, 범프 맵, 쉐도우 맵(라이트(light) 맵) 등과 같은, 예컨대 바람직하게는 표시용 화상 및/또는 프레임을 렌더링할 때, 그래픽 처리를 위해 사용되어야 하는 텍스처이다.
그렇지만, 본 발명은 예들 들면 그래픽 텍스처(및 그래픽 텍스처 처리)를 이용하여 다른 형태의 데이터를 나타내고 처리하는 것을 원하는 경우에는, 다른 형태의 데이터를 나타내고 처리하는 데에 사용되는 텍스처들을 처리 및 인코딩(디코딩)하기 위해서도 사용될 수 있다. 이 기술분야에서 알려진 바와 같이, 텍스처들은 "전통적인" 그래픽 목적을 위해서뿐만 아니라, 3D fog, 플로 필드(flow fields) 등과 같은, 많은 다른 종류의 데이터를 나타내고 처리하기 위해서 그래픽 처리에 사용될 수 있고 사용된다. 본 발명은 동일하게 그래픽 처리 시스템에 있어서 이들 텍스처들의 종류 및 이용에 적용 및 확장될 수 있다. 이와 같이, 본 발명의 텍스처는 원한다면, 그래픽 처리 시스템에 있어서의 텍스처로서 처리되어야 하는 다른 형태의 데이터를 나타낼 수도 있다.
특히 바람직한 실시예에 있어서는, 텍스처 데이터 요소들은 각각 텍스처 요소에 대한 컬러 값을 나타내지만, 이것은 필수적이지 않다. 바람직하게는, 텍스처 데이터 요소들은 텍셀당 1, 2, 3 혹은 4 성분(휘도, 휘도-알파, RGB 및 RGB 알파, 각각)를 가진 LDR(low dynamic range) 텍스처 데이터 혹은 텍셀당 1, 3 혹은 4 성분을 가진 HDR(high dynamic range) 텍스처 데이터를 나타낸다.
이 기술분야의 당업자가 알 수 있는 것처럼, 텍스처 요소들에 따른 실제의 데이터 값들은, 그들의 원래의, 인코딩되지 않은, 원형태로, 또 그들의 인코딩된 형태(혹은 적어도 인코딩된 데이터가 원래의 데이터의 표현을 재생하기 위해서 디코딩되었을 때)로, 텍스처 요소들이 정의하거나 나타내기 위한 "텍스처"의 형태에 의존할 것이다.
이와 같이, 예를 들면, 텍스처 요소들이 사용되어야 하는 컬러들을 정의하는 경우에는, 원래의, 인코딩되지 않은 형태의 텍스처 데이터 요소들이 각각 한 세트의 컬러 값(Red, Green, Blue(RGB), 한 세트의 컬러 및 투명도값(Red, Green, Blue, Alpha(RGBa)), 혹은 한 세트의 휘도 및 색차값을 포함하고, 디코딩(재생)되었을 때, 인코딩된 데이터는 대응하는 컬러값들의 세트를 생성할 것이다.
쉐도우(라이트) 맵의 경우에는, 예를 들면, 텍스처 데이터 요소들은 각각 그 텍스처 요소에 대한 빛 및 음영의 양(및/또는 컬러)과, 예를 들면 텍스처 요소가 빛인지 음영인지를 나타내는 데이터 값들의 한 세트를 포함하거나 나타낼 것이다. 마찬가지로, 노멀 맵(범프 맵)에 대해서는, 각 텍스처 요소의 데이터는 그 텍스처 요소에서 빛이 반사되는 방향을 나타내는 한 세트의 값일 것이다.
텍스처 데이터 요소들은 또한 예를 들면 z값들(깊이 값들), 스텐실(stencil)값들, 휘도값들(휘도 텍스처들), 휘도-알파-텍스처들, 및/또는 광택(gloss) 맵(즉, 표면이 텍스처 요소 위치에서 빛나는지 아닌지 여부) 등을 나타낼 수 있다.
적절하게는, 각 텍스처 데이터 블록이 원래의 데이터를 재생하는 데에 필요한 데이터 값들의 전체는 아니지만 일부를 생성하는 데에 필요한 데이터를 인코딩하는 것만 가능할 것이고, 나머지 데이터 값들은 데이터 재생 프로세스의 부분으로서 (예를 들면, 거기로부터) 얻어진다. 이와 같이, 하나의 바람직한 실시예에 있어서는, 인코딩된 텍스처 데이터는 원래의 텍스처 데이터의 일부를 대표하는 데이터를 인코딩하고, 원래의 데이터의 다른 일부를 대표하는 데이터는 디코딩 프로세스 시에 인코딩된 데이터로부터 얻어진다.
예를 들면, 노멀 맵의 경우에는, 인코딩된 텍스처 데이터가 통상적인 방향 성분 중의 2개(예를 들면, dx 및 dy)를 인코딩하는 것만 가능할 것이고, 제3 성분(dz)은 데이터가 디코딩될 때(그 성분들의 제곱의 합은 1(그들이 길이 1의 노멀 벡터를 정의하므로):1=dx2 + dy2 + dz2이어야 한다는 것이 알려져 있기 때문에), 이들 2개의 값으로부터 얻어진다.
따라서, 여기에서 "컬러" 혹은 "휘도" 등에 대한 언급(references)은, 이 기술분야에 속하는 당업자가 알 수 있는 것처럼, 문제의 컬러 혹은 휘도 등이 예를 들면 디스플레이 상에 재생될 수 있는 한 세트의 데이터 값들을 나타낸다는 것에 유념해야 한다. 이들 데이터 값들은 상기 설명한 바와 같이, 한 세트의 RGB값과 같은, 어떤 적절한 세트의 컬러 혹은 휘도 등을 포함할 수 있다. 동일하게는, 인코딩된 텍스처 데이터 블록에 대한 한 세트의 데이터값을 생성하고, 개개의 텍스처 요소들의 데이터 값들 등에 대한 언급은, 적절하게는 한 세트의 컬러값들(RGB 혹은 RGBa)과 같은, 값들의 조합을 각각 구비하거나 포함하는 데이터 값을 아우른다.
본 발명에 따라 인코딩되는 텍스처 데이터 요소들의 세트 혹은 어레이는 어떤 적절한 혹은 원하는 그러한 세트일 수 있다. 그것은 인코딩되어야 하는 전체 텍스처 맵(예를 들면, 화상)을 포함하는 것이 바람직하지만, 원한다면, 텍스처 맵(예를 들면)의 일부만을 포함할 수도 있다.
생성되는 각 인코딩된 텍스처 데이터 블록은, 전통적인 블록 인코딩 기술에서와 같이, 문제의 텍스처 맵의 보다 작은 부분(혹은 블록)을 인코딩하는 것이 바람직하다. 그러한 경우에, 각 텍스처 데이터 블록은 원래의 텍스처 데이터 요소들의 세트로부터 복수의 텍스처 데이터 요소들의 선택된 서브 세트 혹은 어레이를 인코딩하고 나타낼 것이다. 각 텍스처 데이터 블록은 작은 직사각형의 텍셀들의 어레이(정사각형이거나 정사각형이 아닐 수도 있다)를 인코딩하는 것이 바람직하다.
바람직한 실시예에 있어서는, 각 텍스처 데이터 블록은 정사각형의 텍셀들의 어레이, 바람직하게는 텍셀들의 8×8 블록을 인코딩한다. 다른 구성, 예를 들면 블록 사이즈 및/또는 배치도 물론 가능할 것이다.
그러한 구성에 있어서는, 복수의 그러한 개개의 텍스처 데이터 블록은 원래의 텍스처 데이터(텍스처 데이터 요소들)의 전체 세트를 인코딩하고, 예를 들면 전체 텍스처 맵을 구성하는데 필요할 것이다. 이와 같이, 특히 바람직한 실시예에 있어서는, 본 발명은 텍스처 데이터 요소들(예를 들면, 텍스처 맵에 대한)의 세트를 텍스처 데이터 요소들의 복수의 서브 세트로 세분한 후에, 본 발명의 방식으로 텍스처 데이터 블록으로서 텍스처 데이터 요소들의 각 서브 세트를 인코딩하는 것을 포함한다. 이와 같이, 원래(초기)의 텍스처 데이터 요소들의 세트는 복수의 텍스처 데이터의 블록으로서 인코딩될 것이다.
인코딩되고 있는 텍스처를, 동일한 사이즈(및 구성)의 블록들로, 즉 동일한 개수(예를 들면, 어레이)의 텍스처 데이터 요소들을 나타내기 위해 인코딩된 블록을 생성하는 텍스처 맵의 각 서브 세트에 대해서 분할하는 것이 바람직하다. 이것은 예를 들면 주어진 텍스처 데이터 요소가 어느 블록에 있는지를 찾는 일을 단순화할 수 있다.
복수의 텍스처 데이터 블록들을 이용해서 보다 큰 텍스처 맵(혹은 텍스처 요소들의 세트 혹은 어레이)(혹은 그것의 일부)을 인코딩하는 경우에는, 실제로 어레이를 보다 작은 블록으로 세분하는 것과, 텍스처 블록들로 인코딩하는 순서가 원하는 대로 선택될 수 있다. 바람직한 실시예에 있어서는, 블록들(데이터의 서브 세트들)은, 비록 모톤 순서(Morton order)의 이용과 같은, 다른 구성도 물론 가능하지만, 래스터(raster)순으로 인코딩된다.
결정되는 인코딩되어야 하는 텍스처 데이터 요소들의 세트의 저해상도 표현은 원래의 텍스처의 적절한 저주파수 표현이어야 한다. 그것은 바람직하게는 원래의 텍스처 데이터 요소들의 세트의 다운스케일된(필터링된) 버전이다. 이와 같이, 인코딩되어야 하는 텍스처 데이터 요소들의 세트의 저해상도 표현은 바람직하게는 원래의 텍스처(화상)의 저해상도 버전이다.
인코딩되어야 하는 텍스처 데이터 요소들의 세트의 저해상도 표현은 인코딩되어야 하는 텍스처 데이터 요소들의 세트의 저해상도 표현을 생성함으로써 결정되는 것이 바람직하지만, 원한다면, 블록 단위로 평균을 산출하는 등, 다른 구성을 대신 이용할 수 있다. 원래의 데이터는 텍스처 데이터 요소들의 세트의 저해상도 표현(버전)을 결정하기 위해서 8(각 방향에 있어서 1:8)의 인자로 다운스케일되는 것이 바람직하다. 이와 같이, RGB 텍스처의 경우에 있어서는, 예를 들면, 텍스처의 저해상도 표현은 저해상도(각 방향에 있어서 1:8) RGB 화상인 것이 바람직하다.
원래의 텍스처 데이터 요소들의 세트의 저해상도 표현(버전)을 개별적으로 결정해서 인코딩하는 것은 고주파수 데이터로부터 개별적으로 인코딩된 텍스처에 있어서의 저주파수 데이터(예를 들면, 컬러들의 경우에 저주파수 색조 및 휘도)를 인코딩하는 효과가 있다. 이것에 의해 데이터의 저주파수 및 고주파수 부분이 보다 효율적인 압축(인코딩) 스킴을 제공하기 위해서 사용되는 상이한 비트율을 이용해서 인코딩될 수 있다. 특히, 이하에 더 설명하는 바와 같이, 사람의 눈이 화상의 고주파수에서 노이즈에 민감하므로, 데이터의 고주파수 부분에 대해서는 비교적 낮은 비트율이 사용될 수 있다(그것에 의해 고주파수의 덜 정확한 표현이 인지된 품질의 너무 많은 손실 없이 사용될 수 있다).
텍스처 데이터 블록에 대한 원래의 데이터의 저해상도 표현으로부터 베이스 데이터 값을 나타내는 인코딩된 텍스처 블록에 포함되는 데이터는, 값들의 룩업 테이블에 대한 인덱스 등, 어떤 원하는 적절한 형태를 취할 수 있다. 그렇지만, 그것은 텍스처 데이터 블록에 대해서 사용되는 실제의 베이스 데이터 값을 포함하는 것이 바람직하다. 바람직하게는, 각 인코딩된 텍스처 데이터 블록에 포함되는 그러한 1개의 데이터값 및 그러한 오직 1개의 데이터값만(혹은 그러한 데이터 값에 대한 인덱스)이 있다(즉, 각 인코딩된 텍스처 데이터 블록은 그것에 포함된(그것과 관련된) 한 개의 베이스 데이터 값을 가질 것이다). 이 베이스 데이터 값(혹은 그러한 값에 대한 인덱스)은 바람직하게는 16비트 값이다.
인코딩된 텍스처 데이터 블록에 포함된 베이스 데이터 값은, 바람직하게는 원래의 데이터의 저해상도 표현(버전)으로부터 직접 얻은 데이터값이고, 가장 바람직하게는 인코딩된 텍스처 데이터 블록이 나타내는 원래의 데이터에 있어서의 텍스처 데이터 요소들의 블록에 대응하는 원래의 데이터의 저해상도 표현(버전)의 위치(데이터 요소)로부터 직접 얻은 데이터값이다. 예들 들면, 바람직하게는, 각 인코딩된 텍스처 데이터 블록이 텍셀들의 8×8 블록을 나타내고, 원래의 텍스처가 텍스처의 저해상도 버전을 생성하기 위해서 8의 인자로 다운스케일되는 경우에는, 인코딩 목적을 위해서 텍스처 맵이 분할되는 텍셀들의 8×8 블록에 대한 텍스처의 저해상도 버전에서 1개의 텍스처 요소 값이 있어야 한다
이와 같이, 원래의 데이터의 저해상도 버전을 결정하기 위해서 사용된 다운스케일링의 레벨은, 바람직하게는 별도의 인코딩된 텍스처 데이터 블록들로서 인코딩되는 텍스처 데이터 요소들의 개개의 블록들의 (같은) 사이즈에 대응한다. 이와 같이, 예를 들면, 각 인코딩된 텍스처 데이터 블록이 원래의 텍스처의 A×A 텍셀들을 나타내는 것이면, 원래의 텍스처의 저해상도 표현은 A의 인자(각 방향에서)로 원래의 텍스처를 다운스케일링함으로써 결정되는 것이 바람직하다.
이 목적을 위한 각 인코딩된 텍스처 데이터 블록에 포함되는 데이터 값은, 예를 들면, 인코딩되고 있는 텍스처 데이터의 본질에 의존해서, 어떤 적절한 형태를 취해도 된다. 상기 설명한 바와 같이, 그것은 원래의 텍스처 데이터에 대해서 사용된 형태의 한 개의 텍스처 데이터 값을 포함하는 것이 바람직하다. 이와 같이, 예를 들면, RGB565 텍스처에 대해서는, 저해상도 화상으로부터 사용되어야 하는 베이스 데이터 값을 나타내기 위한 텍스처 데이터 블록에 포함되는 베이스 데이터 값이, RGB565 값(바람직하게는 한 개의 RGB565 값)을 포함하는 것이 바람직하다.
텍스처 데이터의 다른 형태에 대해서는, 베이스 데이터 값이 그에 대응하는 형태(이것에 대해서는 이하에 더 설명할 것이다)을 가져야 한다.
원래의 텍스처와 텍스처의 저해상도 표현의 업스케일된 버전 간의 차분을 나타내기 위한 결정된 전해상도의 차분 데이터의 세트가 어떤 적절한 소망하는 형태를 취할 수 있다. 이 차분 데이터의 세트는 전해상도의 차분 데이터의 세트의 형태, 즉 원래의 텍스처의 각 텍스처 데이터 요소에 대한 별도의 (및 각각의) 차분 데이터값(혹은 값들)을 가지고 있다(즉, 원래의 텍스처(화상)의 해상도의 한 세트의 차분 데이터이며(원래의 텍스처에 대한 적절한 근사치를 생성(재생)하기 위해서, 텍스처의 저해상도 버전을 원래의 텍스처의 해상도(텍스처의 저해상도 표현의 업스케일링된 버전)로 업스케일링함으로써 생성된 원래의 텍스처의 표현에 적용될 수 있다). 이 차분 데이터의 세트는, 상술한 바와 같이, 원래의 텍스처에서 고주파수를 효율적으로 나타낼 것이다.
특히 바람직한 실시예에 있어서는, 이 차분 데이터의 세트는 원래의 텍스처의 각 텍스처 데이터 요소에 대한 개별적인(각각의) 차분 데이터 값(또는 값들)을 갖는, 전해상도 차분(델타) 마스크의 형태이다.
바람직한 실시예에 있어서는, 차분 데이터의 세트는 인코딩된 블록이 나타내는 텍스처 데이터 요소들에 대한 원래의 텍스처 데이터 요소 값의 적절한 근사치를 발생할 수 있도록 인코딩된 블록들이 나타내는 텍스처 데이터 요소들에 대한 대응하는 베이스 데이터 값들과 함께 사용되어야 하는 값들의 한 세트를 포함한다. 따라서, 이 차분 데이터의 세트는 블록들을 디코딩할 때 인코딩된 블록들이 나타내는 텍스처 데이터 요소들에 대한 데이터 값들을 발생하기 위해서 인코딩된 텍스처 데이터 요소들에 대한 베이스 데이터 값들과 함께 사용되어야 하는 부호를 지닌 정수값들의 세트를 포함하는 것이 바람직하고, 이 세트는 인코딩된 블록들이 나타내는 각 인코딩된 텍스처 데이터 요소에 대한 부호를 지닌 정수 값(또는 값들)으로 이루어져 있다.
이와 같이, 주어진 인코딩된 텍스처 데이터 블록에 대한 원래의 텍스처와 텍스처의 저해상도 표현의 업스케일된 버전 간의 차분을 나타내는 결정된 차분 데이터의 세트는, 인코딩된 블록이 나타내는 텍스처 데이터 요소들에 대한 원래의 텍스처 데이터 요소 값들의 적절한 근사치를 발생하도록 인코딩된 블록이 나타내는 텍스처 데이터 요소들에 대한 대응하는 베이스 데이터값들과 함께 사용되는 값들의 한 세트로 구성되는 것이 바람직하고, 이 값들의 세트는 인코딩된 블록이 나타내는 각 텍스처 데이터 요소에 대한 부호를 지닌 정수값(또는 값들)으로 이루어져 있다. 마찬가지로 인코딩된 블록의 차분 데이터의 세트는, 블록을 디코딩할 때 인코딩된 블록이 나타내는 텍스처 데이터 요소들에 대한 데이터 값들을 생성하기 위해서 블록이 나타내는 인코딩된 텍스처 데이터 요소들에 대한 베이스 데이터값들과 함께 사용되는 (전해상도) 부호를 지닌 정수값들의 세트로 구성되는 것이 바람직하다.
텍스처 데이터가 레드, 그린 및 블록 성분들과 같은, 많은 성분을 포함하는 경우에는, 차분 데이터의 세트는 텍스처 데이터의 각 상이한 성분에 대한 별도의 차분값(예를 들면, RGB 텍스처에 대해서는 "레드" 차분값들, "그린" 차분값들 및 "블루" 차분값들이 있다)을 포함한다. 그렇지만, 특히 바람직한 실시예에 있어서는, 같은 차분 데이터 값은, (텍스처 데이터가 많은 성분을 포함하는 경우에는) 텍스처 데이터의 각각의 성분 및 모든 성분에 대해서 사용된다. 이와 같이, 예를 들면, 주어진 텍스처 데이터 요소에 대한 동일한 한 개의 차분 값은, RGB 텍스처에 있어서 그 텍스처 데이터 요소에 대한 레드, 그린 및 블루 값들의 각각에 대해서 사용될 것이다.
이와 같이, 특히 바람직한 실시예에 있어서는, 결정된 차분 데이터의 세트는 원래의 텍스처의 각각의 텍스처 데이터 요소에 대하여 각 한 개의 차분 데이터 값을 포함하는 차분 (델타) 마스크의 형태를 취하고, 그 한 개의 차분 데이터 값은, (적절한 경우에) 텍스처 데이터 요소의 모든 성분에 대해서 사용되어야 한다.
결정된 차분 데이터(예를 들면, 델타 마스크)의 세트는, 특히 인코딩된 텍스처를 디코딩할 때 텍스처의 저해상도 표현을 업스케일링하여 인코딩 텍스처의 각 텍스처 데이터 요소에 대하여 적절한 베이스 데이터 값을 발생하기 위해서 사용되는 프로세스에 따라, 그리고 인코딩된 텍스처를 디코딩할 때 사용되는 디코딩 스킴에 대하여 원하는 텍스처 데이터 요소 값들을 발생하도록 구성되어야 한다(이것에 대해서는 이하에 좀더 자세히 설명할 것이다).
이와 같이, 예를 들면, 디코딩 프로세스가 블록이 나타내는 텍스처 데이터 요소들의 각각에 대한 베이스 데이터 값으로서 인코딩된 텍스처 데이터 블록에 대해서 표시된 베이스 데이터 값을 간단히 사용하고, 그 후에 주어진 텍스처 데이터 요소에 대한 차분 값을, 텍스처 데이터 요소에 대한 이렇게 해서 결정된 베이스 데이터 값에 직접 부가하는 경우에는, 차분 데이터의 세트가 원래의 텍스처에 있어서의 대응하는(적절한) 텍스처 데이터 요소들의 값들과 텍스처의 저해상도 표현으로부터의 각각의 인코딩된 블록 베이스 데이터 값들 간의 각 차분(적어도 이 차분에 대한 근사치)을 나타내어야 한다. 이 경우에, 차분 데이터, 예를 들면 델타 마스크의 세트는 바람직하게는 원래의 텍스처의 각 텍스처 데이터 요소에 대해서, 원래의 텍스처에 있어서(인코딩되고 있는 텍스처에 있어서)의 텍스처 데이터 요소에 대한 값과 텍스처의 저해상도 버전(으로부터 얻은)의 텍셀값 간의 차분을 나타내어야 한다.
특히 바람직한 실시예에 있어서는, 디코딩 프로세스는, 이하에 더 설명하는 것처럼, 텍스처의 저해상도 표현을 필터링(인터폴레이팅(interpolating))함으로써 텍스처의 저해상도 표현의 업스케일된 버전을 생성한다(즉, 차분 데이터가 적용되어야 하는 텍스처의 저해상도 표현의 업스케일된 버전은, 텍스처의 저해상도 표현의 업스케일된, 필터링된 버전이다). 즉, (텍스처 데이터 요소에 대한 차분값과 결합되어야 하는) 디코딩되어야 하는 주어진 텍스처 데이터 요소에 대한 베이스 데이터 값은, 그 텍스처 데이터 요소를 나타내는 인코딩된 블록에 대한 베이스 데이터 값이라고 단순히 여기지는 것이 아니라, 대신 좀더 정교한 방식으로 텍스처의 저해상도 표현을 효율적으로 샘플링하거나 필터링함으로써 결정되는 값이다.
이 경우에, 차분 데이터는 원래의 텍스처의 저해상도 표현의 업스케일된 버전의 형태에 적용될 때 원래의 텍스처 데이터 요소 값에 대한 적절한 근사치를 제공하도록 구성되어야 한다.
이와 같이, 특히 바람직한 실시예에 있어서는, 차분 데이터, 예를 들면 델타 마스크의 세트는 원래의 텍스처의 각 텍스처 데이터 요소에 대하여, 원래의 텍스처에 있어서(인코딩되고 있는 텍스처에 있어서) 텍스처 데이터 요소에 대한 값과 텍스처 데이터 요소에 대한 텍스처의 저해상도 버전으로부터 생성된 필터링된, 바람직하게는 선형으로 필터링된, 샘플(텍셀 값) 간의 차분을 나타낸다.
(이하에 더 설명하는 것처럼, 본 출원인은 인코딩된 텍스처를 디코딩할 때 텍스처의 저해상도 버전을 업스케일링하도록 선형 필터링을 이용하는 것에 의해 저주파수 경사도(gradients)를 보존하는 데에 특히 좋은 본 발명의 인코딩 포맷을 만들 수 있다는 것을 인식했다(그것에 의해 재생된 텍스처에 있어서 스무스한 경사도를 유지하면서 (다른 낮은 비트율 텍스처 압축 스킴이 문제가 될 수 있는) 밴딩(banding)을 줄인다.) 이와 같이, 차분 데이터 (델타 마스크)는 그러한 디코딩 프로세스와 함께 사용하도록 구성되는 것이 바람직하다.)
이와 같이, RGB565 텍스처의 경우에는, 예를 들면, 결정된 차분 데이터의 세트는, 원래의 텍스처와 텍스처의 저해상도 버전으로부터의 바람직하게는 선형적으로 필터링된 샘플들 간의 광도 차(평균 RGB 차분)를 나타내는, 부호를 지닌 정수를 가진, 전해상도 휘도 델타 마스크로 구성되는 것이 바람직하다. 이 차분 데이터의 세트는 상대적으로 다른 형태의 텍스처 데이터로 구성되는 것이 바람직하다.
텍스처를 인코딩하는 데에 사용되는 결정된 차분 데이터의 세트는, 예를 들면 원래의 텍스처와 텍스처의 저해상도 표현의 업스케일된 버전 간의 실제의("참(true)") 차분으로 구성된다.
그렇지만, 특히 바람직한 실시예에 있어서는, 블록에 대해 사용되는 차분 데이터의 세트는, 인코딩되고 있는 텍스처에 대한 차분 값들의 "참" 세트에 대한 근사치이다. 이하에 더 설명하는 것처럼, 차분 값들의 세트에 대한 근사치를 이용하는 것에 의해 차분 데이터가 인코딩된 텍스처에 있어서 압축된 형태로 표시되거나 저장되고, 그것에 의해 원래의 텍스처 맵의 좀더 효율적인 인코딩을 용이하게 한다. 또한, 본 출원인은 이것이 재생된 화질의 너무 많은 손실 없이 가능하다는 것을 알아냈다.
인코딩되고 있는 텍스처에 대한 차분 값들의 "참" 세트에 대한 그러한 근사치는, 원하는 대로 결정될 수 있다. 예를 들면, 실제의 차분 값들은, (예를 들면, 원래의 텍스처와 텍스처의 저해상도 표현의 업스케일된 버전을 비교함으로써) 먼저 결정될 수 있고, 그 후에 그 차분 값들의 참 세트의 적절히 압축된 버전은 텍스처를 인코딩할 때 그리고 텍스처를 인코딩하기 위해서 사용되는 결정된 차분 값들의 세트가 되도록 생성되었다.
특히 바람직한 실시예에 있어서는, 인코딩되고 있는 텍스처에 대해 사용되는 차분 값들의 "참" 세트에 대한 근사치는, (텍스처에 대한 차분 값들의 "참" 세트에 대한 적절한 근사치가 되도록 결정되었던) 미리 정해진 기준 차분 값들의 한 세트로부터 얻은 차분 값들로 구성된다.
따라서, 이 구성에 있어서는, 미리 정해진(미리 결정된), 기준 차분 값의 세트 또는 세트들이 있을 것이고, 미리 결정된 기준 차분 값들 중의 적절한 것들이 인코딩되어야 하는 텍스처에 대한 차분 값들의 "참" 세트(이와 같이, 텍스처를 인코딩할 때 그리고 텍스처를 인코딩하기 위해 사용되는 결정된 차분 값들의 세트로서)를 근사치로 계산하기 위해 사용될 것이다.
바람직하게는, 사용될 수 있는 미리 정해진 기준 차분 값들의 팔레트(palette)가 정의되고, 그 후에 그 팔레트의 적절한 부분들이 문제의 텍스처에 대해서 사용되는 결정된 차분 값들의 세트를 형성하도록 선택된다.
미리 결정된 차분 값의 기준 세트(예를 들면, 팔레트)를 이용하는 것은, 텍스처 데이터의 압축을 용이하게 하는 것을 돕는데, 그 이유는 예를 들면 차분 값들의 기준 세트가 텍스처들에 대한 차분 값들을 나타내기 위해 사용되는 감소된 차분 값들의 세트(정말로, 바람직하게)일 수도 있기 때문이다.
가장 바람직하게는, 예를 들면 대응하는 인코딩된 텍스처 데이터 요소들의 어레이에 대해서 사용될 수 있는 차분 값들의 어레이를 (바람직하게는, 부호가 있는 정수값들의 형태로) 각각 포함하고 있는, 복수의 상이한 차분값 블록들(델타 블록들)의 한 세트로서 구성된 미리 결정된 기준 차분 값들의 팔레트를 사용한다. 이 구성에 있어서는, 기준 차분값의 각 미리 정해진 블록(어레이)은, 인코딩된 텍스처 데이터 블록이 나타내는 텍스처 데이터 요소들의 어레이의 1/2 혹은 1/4과 같은, 인코딩된 텍스처 데이터 블록이 나타내는 텍스처 데이터 요소들의 어레이의(즉, 서브세트) 전체가 아닌 일부만을 나타내는 것이 바람직하다.
이와 같이, 예를 들면, 각 인코딩된 텍스처 데이터 블록이 텍스처 데이터 요소들의 A×A 블록을 나타내는 경우에는, 차분 데이터 값들의 미리 정해진 팔레트에 있어서의 차분 (델타) 블록들이 각각 차분 값들의 A/n×A/n 어레이를 나타내고, 여기서 n은 1보다 큰 정수이다. 특히 바람직한 일 실시예에 있어서는, 예를 들면, 각 인코딩된 텍스처 데이터 블록이 텍스처 데이터 요소들의 8×8 블록을 나타내는 경우에는, 미리 정해진 차분 데이터 값들의 팔레트에 있어서의 차분 (델타) 블록들이 각각 차분 값들의 4×4 어레이를 나타내는 것이 바람직하다. 이 경우에, 따라서, 기준 차분 데이터 팔레트에 있어서의 각 차분 (델타) 블록은 인코딩되는 텍스처 데이터 요소들의 8×8 블록의 1/4(4×4 블록)에 대응할 것이다.
그 팔레트를 구성하는 차분 (델타) 블록의 세트와 같은, 미리 정해진 기준 차분값 팔레트 등은, 원하는 대로 결정 및 도출될 수 있다. 예를 들면, 복수의 알려진 대표적인 텍스처들(대표적인 게임 콘텐츠를 나타내는 텍스처들 등)을, 예를 들면, 상호 훈련(interative training) 방식으로 인코딩하고 테스트하여, 인코딩되는 복수의 상이한 텍스처들과 함께 사용하는 데에 적합한 차분값들(예를 들면, 차분 값 블록들)의 적절한 기준 팔레트를 도출할 수 있다. 이렇게 결정된 기준 차분값들 팔레트(예를 들면, 미리 정해진 차분값 블록들의 팔레트)는, 인코더(및 디코더)가 텍스처 데이터 블록들을 인코딩(및 디코딩)할 때 사용 및 참조할 수 있는 예를 들면, 룩업 테이블로서 저장되어야 한다.
이들 구성에 있어서, 인코딩되어야 하는 어떤 주어진 텍스처에 대해서는, 이와 같이, 텍스처에 대한 차분값들의 실제의 "참" 세트를, 미리 정해진 차분값들의 기준 세트(팔레트)와 비교하는 것이 바람직하고, (예를 들면, 바람직하게는 텍스처에 대한 차분값들의 "참" 세트와 가장 근접하게 매치하는) 차분값들의 기준 세트의 적절한 부분 또는 부분들(예를 들면, 차분값 블록 또는 블록들)은, 텍스처를 디코딩할 때 사용되는 결정된 차분값의 세트를 형성하는 데에 사용할 차분값들의 기준 세트의 부분들과의 비교에 근거해서 선출(선택)된다.
예를 들면, 바람직하게는, 차분값들의 기준 세트 중의 어느 부분들이 "참" 차분값들과 가장 근접하게 매치하는지를 판정하기 위한, 텍스처의 실제의 차분값들과 차분값들의 기준 세트와의 비교는, 원하는 대로, 그리고, 예를 들면 텍스처에 대한 결정된 "참" 차분값들과 가장 잘 매치하는 미리 정해진 기준 차분값들을 판정하기 위한 에러 비교 기술을 이용하는 것과 같이, 어떤 적절한 비교 및 유사성 평가를 이용해서 행해질 수 있다. (텍스처에 대한 실제의 "참" 차분값들은, 예를 들면, 텍스처의 저해상도 표현의 업스케일된 버전을 발생한 후에 그것을 원래의 텍스처와 비교함으로써 원하는 대로 결정될 수 있다.)
특히 바람직한 실시예에 있어서는, 사용할 미리 정해진 기준 차분값들을, 블록 단위로 결정한다. 이와 같이, 인코딩되어야 하는 각 텍스처 데이터 블록을, 미리 정해진 기준 차분값들에 대해서(예를 들면, 바람직하게는 미리 결정된 기준 차분값 블록들에 대해서) 테스트해서, 미리 결정된 기준 차분 값들(예를 들면, 차분값 블록들) 중의 어느 것이 블록(에 가장 적합한 일)을 사용할지를 판정(선택)하는 것이 바람직하다.
이와 같이, 특히 바람직한 실시예에 있어서는, 인코딩된 텍스처 데이터의 블록이 나타내는 텍스처 데이터 요소들의 세트에 대한 실제의 차분값들의 세트와, 미리 정해진 기준 차분값들의 블록의 팔레트를 비교하고, 그 후에 인코딩된 텍스처 데이터의 블록이 나타내는 텍스처 데이터 요소들의 세트에 대해서 사용할 기준 차분값들의 블록(혹은 블록들)이 그 비교에 근거해서(바람직하게는 차분값들의 기준 블록(또는 블록들) 중의 어느 것이 문제의 텍스처 데이터 요소들의 블록에 대한 실제의 차분값들의 세트와 가장 밀접하게 매치하는지에 근거해서) 선출(선택)된다.
상술한 바와 같이, 각 기준 차분값 블록은 바람직하게는 인코딩된 블록이 나타내는 텍스처 데이터 요소들의 어레이의 서브 세트에 (사이즈가) 대응하고, 그래서 바람직하게는 각 인코딩된 텍스처 데이터 블록에 대한 비교는 "서브 블록" 단위로 행해진다. 이와 같이, 특히 바람직한 실시예에 있어서는, 인코딩된 텍스처 데이터의 블록이 나타내는 텍스처 데이터 요소들의 세트에 대한 실제의 차분값들의 세트의 각 서브 세트들과, 기준 차분값들의 블록의 미리 정해진 팔레트를 각각 비교하고, 그 후에 인코딩된 텍스처 데이터의 블록이 나타내는 텍스처 데이터 요소들의 세트의 각 서브 세트에 대해서 사용할 기준 차분값들의 블록을, 그 비교에 근거해서(바람직하게는 차분값들의 기준 블록 중의 어느 것이 문제의 텍스처 데이터 요소들의 블록에 대한 차분값들의 서브 세트에 대한 "참" 차분값들과 가장 밀접하게 매치하는지에 근거해서) 선택한다.
블록에 대해서 사용되는 결정된 차분 데이터의 세트로부터의 차분 데이터를 나타내기 위해 각 인코딩된 텍스처 데이터 블록에 포함되는 데이터는, 어떤 원하는 적절한 방식으로 차분 데이터를 나타낼 수 있다. 예를 들면, 그것은 관련된 차분값들 자체, 또는 (예를 들면, 룩업 테이블로부터 얻어지는) 사용되어야 하는 값(들)을 나타내는 인덱스로 구성될 수 있다.
상술한 바와 같이, 차분 데이터 값들의 가능한 세트들의 팔레트가 정의되는 경우에는, 사용되어야 하는 차분 데이터를 나타내는 인코딩된 텍스처 데이터 블록에 포함되는 데이터는, 문제의 인코딩된 블록에 대하여 미리 정해진 팔레트의 어느 요소들 또는 어느 부분 또는 부분들이 사용되는지를 나타내는 것이 바람직하다.
이와 같이, 미리 정해진 기준 차분값들의 팔레트가 사용되는 경우에는, 인코딩된 텍스처 데이터 블록에 포함되는 인코딩된 텍스처 데이터 블록에 대하여 사용되어야 하는 차분 값들을 나타내는 데이터는, 바람직하게는 기준 차분값들의 팔레트의 어느 부분 또는 부분들이 인코딩된 텍스처 데이터 블록에 대하여 사용되는지를 나타내는 인덱스값과 같은, 데이터값의 형태를 취한다.
이와 같이, 특히 바람직한 실시예에 있어서는, 미리 정해진 기준 차분값들의 팔레트가 미리 정해진 차분값들의 블록들(어레이들)의 형태를 취하는 경우에는, 인코딩된 텍스처 데이터 블록들은 미리 정해진 차분값들의 어느 블록 또는 블록들이 인코딩된 텍스처 데이터 블록에 대해서 사용되는지를 나타내는 인덱스 값 또는 값들을 포함한다. 이와 같이, 각 인코딩된 텍스처 데이터 블록이 텍스처 데이터 요소들의 8×8 블록을 나타내고, 미리 정해진 기준 차분값들의 팔레트가 미리 정해진 4×4 차분값 블록들의 형태인 경우에는, 각 인코딩된 텍스처 데이터 블록은 미리 정해진 어느 4×4 차분값 블록이 텍스처 데이터 요소들의 8×8 블록의 각 4×4 블록에 대해서 사용되는지를 나타내는, 4 인덱스값들을 포함하는 것이 바람직하다.
예를 들면, 미리 정해진 기준 차분값들의 팔레트에 대한 인덱스 값들은, 예를 들면, 지원되는 유니크한 인덱스값들의 수에 대응하는 기준 차분값 블록들의 세트에 대한 인덱스를 간소화할 수 있다. 그렇지만, 특히 바람직한 실시예에 있어서는, 인덱스값 스킴(scheme)은 작은 저장된 미리 정해진 기준 차분값 블록들의 세트가 사용될 수 있는 보다 큰 세트의 미리 정해진 기준 차분값 블록들을 생성하기 위해서 사용될 수 있도록 구성되어 있다. 이것은 사용될 수 있는 차분값 블록들 간의 회전 대칭과 같은, 인덱싱 스킴 인코딩 및 익스플로이팅(exploiting) 대칭, 및 다른 관계에 의해 행해지는 것이 바람직하다.
예를 들면, 사용되는 인덱스 값들은, 바람직하게는 인덱스된 저장된 블록에 대하여 사용되는 오리엔테이션(회전); 저장된 블록 값들의 부호가 부정되는지 아닌지 여부; 및 저장된 블록 값들이 스케일링 인자(바람직하게는, 사용된다면 스케일링 인자의 값)와 곱해져야 하는지 아닌지 여부 중의 하나 또는 그 이상, 바람직하게는 모두와, 미리 정해진 기준 차분값 블록들의 저장된 세트에 대한 베이스 인덱스를 나타낼 수 있다.
특히 바람직한 실시예에 있어서는, 12비트 인덱스 값은, 바람직하게는 미리 정해진 기준 차분값 블록들의 저장된 세트에 대한 7비트 베이스 인덱스; 인덱스된 저장된 블록에 대하여 사용되는 오리엔테이션(회전)을 정의하는 2비트 값; 저장된 블록값들의 부호를 정의하는 1비트 값(설정한 경우, 모은 블록 값들은 부정되어야 한다); 및 블록의 진폭을 정의하는 2비트 값(모든 블록 값들은 1 + 이 값과 곱해진다)으로 구성된, 사용되어야 하는 차분값의 기준 세트를 나타내기 위해 사용된다.
그 다음에 이것에 의해 사용되어야 하는 128개의 미리 정해진 기준 차분값 블록들의 저장된 세트가 인코딩되어야 하는 텍스처 데이터 요소들의 블록들에 대한 차분 값들에 대해서 사용되어야 하는 4096개의 상이한 기준 차분값 블록들을 생성할 수 있게 된다.
이와 같이, 특히 바람직한 실시예에 있어서는, 각 인코딩된 텍스처 데이터 블록은 텍스처 데이터 요소들의 8×8 블록을 나타내고, 미리 정해진 기준 차분값 블록들은 차분값들의 4×4 어레이로 구성되며, 각 인코딩된 텍스처 데이터 블록은, 바람직하게는 12비트를 갖고, 또 바람직하게는 상술한 포맷을 갖는 인덱스값과, 그 인코딩된 텍스처 데이터 블록에 대해서 사용되어야 하는 기준 차분값 블록들을 나타내는 4 인덱스 값들을 포함한다.
마찬가지로, 특히 바람직한 실시예에 있어서는, 각 인코딩된 텍스처 데이터 블록은, 블록에 대해서 사용되어야 하는 기준 차분값 블록들을 나타내는 4개의 인덱스 값들과 블록에 대한 베이스 데이터, 예를 들면 컬러 값을 포함할 것이다(단지 포함만 한다). 특히 바람직한 실시예에 있어서는, 베이스 데이터값은 16비트값(예를 들면, 한 개의 RGB565 값)일 것이고, 차분 블록 인덱스 값들은 각각 12비트일 것이다. 이 포맷에 있어서는, 텍스처 데이터 요소들의 주어진 8×8 어레이가 64비트를 이용해서, 즉 픽셀당(텍셀당) 1비트를 이용해서 인코딩될 것이다.
본 출원인은, 차분값들의 세트가 효율적으로 나타내는 고주파수 데이터에 대표적으로 있는 짧은 반복 주기를 이용함으로써, 본 발명의 인코딩 스킴에 사용된 차분값들의 세트를 여전히 효율적인 방법으로 인코딩할 수 있다는 것을 상기로부터 알 수 있다. 특히, 본 출원인은 그래픽 텍스처 전체에 걸쳐 있는 차분값들의 블록들은 반복하는 경향이 있고, 또 그들이 차분값들(차분값 블록들)의 좀더 제한된, 대표적인 세트로부터 차분값들의 블록들(세트들)을 반복함으로써 충분히 정확하게 인코딩(및 표현)될 수 있을 만큼 유사할 것이다. 이것은 여전히 텍스처들에 있어서 고주파수를 나타내기 위해서 전해상도의 차분값들의 세트를 이용하면서, 여전히 효율적인 방식으로 텍스처들을 인코딩하는 것이 가능하다는 것을 의미한다(그것에 의해 인코딩된 텍스처들의 정확도가 향상된다).
이와 같이, 특히 바람직한 실시예에 있어서는, 인코딩된 텍스처 데이터 블록들에 있어서의 차분 데이터의 세트의 인코딩은, 인코딩되고 있는 텍스처(텍스처들)에 대한 차분 데이터의 세트의 반복을 이용한다. 가장 바람직하게는, 차분 데이터의 세트는 텍스처를 나타내는 상이한 인코딩된 텍스처 데이터 블록들에 대한 동일한 차분 데이터의 세트를 재사용(반복)함으로써 인코딩된다(즉, 텍스처에 대한 2개 또는 그 이상의 인코딩된 텍스처 데이터 블록들은 동일한 차분 데이터의 세트를 이용할 것이다).
마찬가지로, 특히 바람직한 실시예에 있어서는, 공통의 차분 데이터의 세트는, 각각의 텍스처에 대한 차분 데이터를 나타내기 위해서 공통의 차분 데이터의 세트의 적절한 부분들을 이용해서, 복수의 상이한 텍스처들을 인코딩하기 위해서 사용된다. 이와 같이, 공통의 차분 데이터의 기준 세트(동일한 세트)는 인코딩되어야 하는 복수의 상이한 텍스처들에 대해서 재사용되는 것이 바람직하다.
본 발명에 대해서는 컬러, RGB, 텍스처 맵의 인코딩을 참조해서 주로 상기에서 설명했지만, 본 출원인은 또한 본 발명이 광도를 나타내지 않을 때에도, 단일 성분(그레이 스케일) 텍스처들을 나타내는 데에 유리하게 사용될 수 있다는 것을 인지했다. 이것은 본 발명의 포맷이 컬러를 나타내는 매우 적은 비트를 이용할 수 있어, 단일 성분 텍스처들에 대한 재생된 텍스처 품질도 좋을 수 있기 때문이다.
이와 같이, 본 발명은 또한 바람직하게는 예를 들어 어떤 타입의 단일 성분 상세 맵과 같은, 바람직하게는 예를 들어 광택(gloss) 맵, 알파 맵, 변위(displacement) 맵 및 시차(parallax) 맵 중의 하나 또는 그 이상, 바람직하게는 모두와 같은, 단일 성분 데이터에 대하여 사용될 수 있다. 이 경우에, 베이스 데이터값은 적절한 광택, 또는 알파 등일 것이고, 값 및 차분값들은 기본적으로 데이터 요소의 "참" 값과, 텍스처 데이터 요소에 대한 업스케일된 재생된 데이터값 간의 에러(에 대한 근사치)를 나타낼 것이다.
특히 바람직한 일 실시예에 있어서는, 본 발명의 형태의 2세트의 인코딩된 텍스처 데이터 블록들(즉, 본 발명의 형태의 2개의 인코딩된 텍스처)을 함께(결합해서) 사용해서 한 세트의 텍스처 데이터 요소들(텍스처 맵)을 나타낸다. 예를 들면, 노멀 맵의 경우에는, 본 발명의 형태의 2개의 단일 성분 인코딩된 텍스처들을 이용해서, 노멀 맵의 예를 들면 X 및 Y 성분을 각각 인코딩할 수 있고, Z 성분은 (X,Y,Z)가 단위 벡터라는 것을 아는 것에서 디코더에 의해 재구성된다. 이것은 2bpp의 레이트(rate)로 인코딩하는 좋은 노멀 맵을 제공할 것이다. 마찬가지로, 본 발명의 형태의 2개의 별개의 텍스처들을 이용해서 RGB + 알파 텍스처 맵의 2bpp 인코딩을 제공할 수 있다.
본 발명은 또한 HDR(High Dynamic Range) 텍스처들을 인코딩하기 위해서 사용될 수 있다. 예를 들면, 단일 성분 HDR 텍스처에 대해서는, 한 개의 블록에 대한 베이스 컬러 값이, 인코딩된 블록에 대한 지수(exponent)와 공통 베이스 휘도값을 제공하기 위해서, RGB565 값(16비트 베이스 데이터값들이 사용되는 경우)보다는, L8E8(8비트 부호를 지닌 휘도, 8비트 부호를 지닌 지수)값으로서 인코딩될 수 있다.
또한, 본 발명의 형태의 2개의 텍스처를 이용하여, 2bpp에서 HDR RGB 데이터 + (0...1) 알파를 인코딩하는 것(바람직한 실시예에 있어서는, 이것이 행해진다)이 가능할 것이다. 이 경우에, RGB 데이터는, A8E8 베이스값을 이용해서 별도의 텍스처에서 인코딩된 알파 데이터와, 각 블록에 대한 RGB565 베이스 컬러값을 이용해서 인코딩될 수 있고, 여기서 A는 블록에 대한 베이스 알파값이지만, "알파" 인코딩된 텍스처에 대한 지수(E) 값은 알파값들에 대한 지수 대신에, 대응하는 RGB 텍스처 블록의 RGB 값들에 대한 지수로서 사용된다.
이 경우와 같이, 본 발명의 형태의 2개의 텍스처를 결합하여 사용하는 경우에는, 본 발명의 형태의 2개의 별도의 인코딩된 64비트(예를 들면) 블록의 각각의 쌍(예를 들면, RGB 값들에 대한 하나와 알파 값들에 대한 하나)은, 전체 텍스처의 관련 부분(예를 들면, 원래의 텍스처의 8×8 텍셀의 대응하는 블록에 대한 RGB + 알파)을 나타내는 (예를 들면) 128비트 "메가블록"으로 결합되는 것이 바람직하다.
상기에서 알 수 있는 것처럼, 본 발명의 인코딩 방법을 이용해서 생성되는 인코딩된 텍스처 데이터 블록들은, 인코딩된 텍스처 데이터 블록이 나타내는 텍스처 데이터 요소들에 대한 값들을 결정하기 위해서 텍스처 데이터 요소들에 대한 베이스 데이터 값들과 함께 사용되는 차분값들의 기준 블록들을 나타내는 1개 또는 그 이상(바람직한 실시예에서는 4개)의 인덱스 값과, 블록이 나타내는 텍스처 데이터 요소들에 대한 베이스 데이터 값들(예를 들면, 컬러들)을 결정하기 위해서 사용되는 블록에 대한 (한 개의) 베이스 데이터 값을 각각 포함하는(바람직하게는 오직 포함만 하는) 것이 바람직할 것이다.
이 정보는 어떤 원하는 순서 및 구성에 있어서의 인코딩된 텍스처 데이터 블록들에 포함될 수 있지만, 바람직한 실시예에 있어서는, 특별한(바람직하게는 공통) 포맷 및 구조가 각 인코딩된 텍스처 데이터 블록에 대해서 사용된다.
상기에서 알 수 있는 것처럼, 본 발명의 인코딩 프로세스는 원래의 텍스처 맵을 나타내고 그것에 대응하는 인코딩된 텍스처 데이터 블록들의 스트림 또는 세트를 생성하도록 동작할 것이다. 본 발명의 인코딩 프로세서는 이것을 행하도록 인코딩되는 원래의 텍스처 데이터를 이용해서 또는 어떤 적절한 방식으로 행해질 수 있다.
예를 들면, 인코딩되어야 하는 원래의 텍스처 맵이 다운스케일될 수 있고, 그 후에 인코딩되어야 하는 텍스처 데이터 요소들의 주어진 블록에 대하여 사용할 차분값들의 세트는 상술한 바와 같이 결정될 수 있다. 이것을, 원래의 데이터(예를 들면, 텍스처 맵)가 분할되었던 각 상이한 블록에 대해서 반복함으로써, 원래의 데이터의 세트(예를 들면, 텍스처 맵)를 나타내고 그에 대응하는 인코딩된 텍스처 데이터 블록들의 스트림 또는 세트를 생성할 것이다.
인코딩된 텍스처 데이터 블록들의 세트는, 예를 들면 렌더링되어야 하는 화상에 텍스처를 적용하기 원할 때, 후에 사용하기 위해서, 예를 들어 DVD와 같은 휴대용 저장장치에 저장될 수 있다. 바람직하게는 텍스처는 한 세트의 밉맵(mipmaps)으로서 인코딩되고, 각 밉맵은 본 발명의 방식으로 생성되는 것이 바람직하다.
원래의 데이터(예를 들면, 텍스처 맵)가 분할되는 각 블록은, 바람직하게는 같은 사이즈 및 구성이다. 사용되고 있는 블록 사이즈는 디코더에 제공되는 것이 바람직하다. 블록 사이즈는 인코딩된 텍스처 데이터 블록들 자체에 포함되는 것이 아니라, 디코더에 별도로 제공되는 것이 바람직하다. 예를 들면, 블록 사이즈는 예를 들어 화상 타입과 같은, 디코더에 제공되는 또 다른 파라미터로 함축적으로 표시될 수 있거나, 인코딩된 텍스처 데이터 블록들의 세트와 관련(부착)되는 (글로벌) 데이터 헤더에 포함(표시)될 수 있다.
상기는 주로 본 발명의 인코딩 기술에 대해서 설명한다. 이 기술분야에 속하는 당업자가 알 수 있는 것처럼, 본 발명은 또한 인코딩된 텍스처 데이터 블록 또는 블록들을 이용해서, 사용하기 위한 텍스처 데이터 요소들의 1개 또는 그 이상 또는 어레이를 생성하는, 역(reversse) 디코딩 프로세스로 확장된다. 이 디코딩 프로세스는 어떤 적절한 원하는 방식으로 행해질 수 있다.
디코딩 프로세스는 먼저 사용되어야 하는 텍스처 맵을 나타내는 인코딩된 텍스처 데이터 블록들의 세트에 있어서 어느 인코딩된 텍스처 데이터 블록이 값이 필요한(즉, 인코딩되는) 텍스처 데이터 요소를 나타내는지(포함하는지)를 판정하는 것을 포함하는 것이 바람직하다. 이것은, 예를 들면 바람직하게는 텍스처 데이터 요소(예를 들면, 텍스처의 사이즈 및 블록 사이즈의 지식)의 위치에 근거해서 행해질 수도 있다.
그 다음에, 식별된 인코딩된 텍스처 데이터 블록을 이용해서 문제의 텍스처 데이터 요소에 대하여 사용되는 값을 결정할 수 있다. 이 프로세스는 기본적으로 인코딩 프로세스의 역(reverse)이므로, 예를 들면 인코딩된 텍스처 데이터 블록에 있어서 베이스 데이터 값을 이용해서 블록들의 텍스처 데이터 요소 또는 요소들에 대해서 사용되는 베이스 데이터 값을 결정하고, 인코딩된 텍스처 데이터 블록으로부터 블록에 대한 차분값 또는 값들을 결정하며, 블록의 텍스처 데이터 요소(들)에 대한 결정된 베이스 데이터 값(들)과 결정된 차분값 또는 값들을 이용해서 블록이 나타내는 개개의 텍스처 데이터 요소 또는 요소들에 대해서 사용되는 데이터 값 또는 값들(예를 들면, 컬러들)을 생성하는 것을 포함한다.
이렇게 해서 생성된, 디코딩된 텍셀 값들을, 이 기술분야에서 알려진 것처럼, 렌더링되고 있는 샘플링 위치들 및/또는 프래그먼트들(fragments)에 적용해서 이들 샘플링 위치들 및/또는 프래그먼트들에 대하여 렌더링된 데이터를 생성하고, 그 렌더링된 데이터는 예를 들면, 디스플레이가 "텍스처드(taxtured)" 샘플링 위치들 및/또는 프래그먼트들을 표시하기 위한 프레임 버퍼에 기록된다.
이와 같이, 본 발명은 또한, 본 발명의 방식으로 인코딩되었던 텍스처를 인코딩하도록 구성된 디코더 및 디코딩 장치에도 확장된다.
디코딩 프로세스는 여기서 설명한 본 발명의 다양한 바람직한 선택적인 특징들 중의 하나 또는 그 이상 또는 모두를 적절하게 포함할 수 있고, 참으로 바람직하게는 행한다.
이와 같이, 본 발명의 제4 국면에 의하면, 텍스처 데이터 블록이 나타내는 텍스처 데이터 요소의 값을 결정하기 위해서 그래픽 처리 시스템에서 사용되는 텍스처 데이터 요소들의 한 세트를 인코딩하는 텍스처 데이터 블록을 디코딩하는 방법에 제공되는데, 이 방법은,
상기 블록이 나타내는 상기 텍스처 데이터 요소들의 세트의 저해상도 표현으로부터 얻은 인코딩된 텍스처 데이터 블록에 대한 베이스 데이터 값을 상기 인코딩된 텍스처 데이터 블록으로부터 결정하고, 상기 텍스처 데이터 블록에 대한 결정된 베이스 데이터 값을 이용해서 값이 결정되어야 하는 블록이 나타내는 텍스처 데이터 요소에 대해서 사용되는 베이스 데이터 값을 결정하는 단계와,
텍스처 데이터의 블록을 디코딩할 때 사용되는 차분 데이터 값을 상기 인코딩된 텍스처 데이터 블록으로부터 결정해서 값이 결정되어야 하는 블록이 나타내는 텍스처 데이터 요소에 대해서 사용되는 데이터 값을 생성하는 단계와,
상기 텍스처 데이터 요소에 대한 결정된 차분 값과 함께 텍스처 데이터 요소에 대한 결정된 베이스 데이터 값을 이용해서 텍스처 데이터 요소에 대하여 사용되는 데이터 값을 생성하는 단계를 포함한다.
본 발명의 제5 국면에 의하면, 텍스처 데이터 블록이 나타내는 텍스처 데이터 요소의 값을 결정하기 위해서 그래픽 처리 시스템에서 사용되는 텍스처 데이터 요소들의 한 세트를 인코딩하는 텍스처 데이터 블록을 디코딩하는 장치가 제공되는데, 이 장치는,
블록이 나타내는 텍스처 데이터 요소들의 세트의 저해상도 표현으로부터 얻은 인코딩된 텍스처 데이터 블록에 대한 베이스 데이터 값을 인코딩된 텍스처 데이터 블록으로부터 결정하고, 텍스처 데이터 블록에 대한 결정된 베이스 데이터 값을 이용해서 값이 결정되어야 하는 블록이 나타내는 텍스처 데이터 요소에 대하여 사용되는 베이스 데이터 값을 결정하는 수단과,
텍스처 데이터의 블록을 디코딩할 때 사용되는 차분 데이터 값을 인코딩된 텍스처 데이터 블록으로부터 결정하여 값이 결정되어야 하는 블록이 나타내는 텍스처 데이터 요소에 대하여 사용되는 데이터 값을 생성하는 수단과,
텍스처 데이터 요소에 대한 결정된 차분 값과 함께 텍스처 데이터 요소에 대한 결정된 베이스 데이터 값을 이용하여 텍스처 데이터 요소에 대하여 사용되는 데이터 값을 생성하는 수단을 구비한다.
이 기술분야의 당업자가 알 수 있는 것처럼, 본 발명의 이들 모든 국면은, 적절하게는, 여기서 설명한 본 발명의 바람직한 선택적인 특징들 중의 어느 하나 또는 그 이상 또는 모두를 포함할 수 있고, 바람직하게는 행할 수 있다. 이와 같이, 예를 들면, 인코딩된 텍스처 데이터 블록들은 바람직하게는 8×8 어레이의 텍스처 데이터 요소들을 나타내고, 바람직하게는 사이즈가 64비트이다.
본 발명의 디코딩 프로세스에 있어서는, 주어진 텍스처 데이터 요소에 대하여 사용되어야 하는 베이스 데이터 값은, 어떤 원하는 적절한 방식으로 인코딩된 텍스처 데이터 블록에 대한(로부터 결정되는)(즉, 그것으로 나타낸) 베이스 데이터 값을 이용해서 결정될 수 있다. 예를 들면, 그것은 간단히 인코딩된 텍스처 데이터 블록 자체에 대한(즉, 인코딩된 텍스처 데이터 블록으로부터 결정되는) 베이스 데이터 값이라고 여겨질 수 있다.
그렇지만, 특히 바람직한 실시예에 있어서는, 값이 결정되어야 하는 텍스처 데이터 요소에 대해서 사용되는 베이스 데이터 값은, 텍스처를 나타내는 1개 또는 그 이상의 다른 인코딩된 텍스처 데이터 블록들에 대한 텍스처의 저해상도 표현으로부터 얻은 베이스 데이터 값 또는 값들과 결합하여, 문제의 인코딩된 텍스처 데이터 블록에 대한(즉, 텍스처 데이터 요소가 속하는) 베이스 데이터 값을 이용해서 결정된다(즉, 값이 결정되어야 하는 텍스처 데이터 요소에 대해서 사용되는 베이스 데이터 값은, 복수의 인코딩된 텍스처 데이터 블록들에 대한 텍스처의 저해상도 표현으로부터 얻은 베이스 데이터 값들을 이용해서 결정되는 것이 바람직하다).
바람직하게는, 이것은 예를 들면 바람직하게는 문제의 텍스처 데이터 요소의 위치에 근거하여, 문제의 복수의 인코딩된 텍스처 데이터 블록들에 대한 베이스 데이터 값들을 결합해서 문제의 텍스처 데이터 요소에 대한 베이스 데이터 값을 도출함으로써 행해진다. 가장 바람직하게는, 상기 설명한 것처럼, 복수의 인코딩된 텍스처 데이터 블록들에 대한 베이스 데이터 값들을, 값이 결정되어야 하는 텍스처 데이터 요소의 위치에 근거해서, 선형으로 필터링하여, 텍스처 데이터 요소에 대하여 사용되는 베이스 데이터 값을 결정한다. 상술한 바와 같이, 본 출원인은 그러한 선형 필터링을 이용하는 것이 저주파수 경사도를 보존하고, 인코딩된 텍스처에 있어서의 밴딩(banding)을 피하는 것에 도움이 될 수 있다는 것을 알아냈다.
이와 같이, 특히 바람직한 실시예에 있어서는, 주어진 텍스처 데이터 블록의 텍스처 데이터 요소에 대해서 사용되는 베이스 데이터 값은, 복수의 인코딩된 텍스처 데이터 블록들로부터 베이스 데이터 값들을 선형으로 필터링함으로써 결정된다.
복수의 인코딩된 블록들에 대한 베이스 데이터 값들을 이용해서 디코딩될 텍스처 데이터 요소에 대하여 사용되는 베이스 데이터 값을 도출하는 경우에는, 바람직하게는 텍스처 데이터 요소가 속하는 블록에 대한 베이스 데이터 값이 문제의 텍스처 데이터 요소에 가장 가까운 이웃하는 3개의 블록에 대한 베이스 데이터 값들과 함께 사용된다. 이것은 예를 들면 이선형(bilinear) 필터링을 이용해서 텍스처 데이터 요소에 대하여 사용되는 베이스 데이터 값을 결정하는 것을 용이하게 할 것이다. 물론 다른 구성도 가능할 것이다.
복수의 인코딩된 블록들에 대한 베이스 데이터 값들이 이 방식으로 사용되는 경우에는, 디코딩 프로세스는, 베이스 데이터 값들이 사용되어야 하는 관련 인코딩된 텍스처 데이터 블록들(예를 들면, 바람직하게는, 디코딩될 텍스처 데이터 요소를 포함하는 블록과, (예를 들면) 인코딩될 텍스처 데이터 요소의 위치에 근거한 관련 이웃하는 블록들)을 식별하고; 그렇게 해서 식별된 블록들의 각각에 대한 베이스 데이터 값들을 결정하며; 그 다음 이들 결정된 베이스 데이터 값들을 이용해서(예를 들면 바람직하게는, 문제의 텍스처 데이터 요소의 위치에 따라 블록들에 대한 베이스 데이터 값들을 선형으로 필터링함으로써) 문제의 텍스처 데이터 요소에 대하여 사용되는 베이스 데이터 값을 발생하는 것을 포함해야 하고, 바람직하게는 행한다.
값이 결정되어야 하는 텍스처 데이터 요소에 대하여 사용되는 차분 데이터 값은, 마찬가지로 어떤 원하는 적절한 방식으로, 예를 들면 인코딩된 텍스처 데이터 블록이 차분 값들을 가리키는(나타내는) 방법에 의존해서, 인코딩된 텍스처 데이터 블록으로부터 결정될 수 있다. 예를 들면, 인코딩된 블록이 차분 값들을 직접 포함하는 경우에는, 그 블록에 있어서의 관련 차분 값을 식별해서 사용할 수 있다.
특히 바람직한 실시예에 있어서는, 상술한 바와 같이, 디코딩될 텍스처 데이터 요소에 대하여 사용되는 차분 데이터 값은, 블록에 대해서 사용할, 예를 들면 룩업 테이블에 저장된, 미리 정해진 차분 데이터의 세트(가장 바람직하게는 미리 정해진 차분 데이터의 블록)를 식별하기 위해서 블록에 포함된 인덱스 값(또는 값들)을 이용해서 결정된다.
이 프로세스는, 회전, 니게이션(negation) 또는 스케일링(증폭) 중의 하나 또는 그 이상, 바람직하게는 모두와 같은, 어떤 동작이든, 블록에 대하여 사용되는 차분 데이터의 세트를 제공(발생)하도록 미리 정해진 차분 데이터의 블록에 대해서 행해져야 하는지(적용되어야 하는지) 여부를 블록에 포함된 인덱스값으로부터 판정하는 것을 더 포함하는 것이 바람직하다. 만약 그렇다면, 지시된 동작이 식별된 차분 데이터의 세트에 적용되는 것이 바람직하다.
일단 문제의 텍스처 데이터 요소에 대하여 사용되는 미리 결정된 차분 데이터 값들의 세트가 식별되고, 예를 들면 필요에 따라 회전, 스케일, 등 되었으면, 문제의 텍스처 데이터 요소에 대해서 사용되는 특정한 차분 값은, 예를 들면, 바람직하게는 문제의 텍스처 데이터 요소의 위치에 근거해서, 차분 데이터 값들의 세트로부터 선택(결정)되는 것이 바람직하다.
상술한 바와 같이, 인코딩된 블록에 포함된, 예를 들면, 블록의 상이한 사분면에 대해서, 복수의 차분 데이터 인덱스 값들이 있는 경우에는, 관심 블록(예를 들면, 사분면)의 부분이 (예를 들면, 관심 텍스처 데이터 요소의 위치에 의거해서) 식별되어야 하고, 그 후에 인덱스 및 그 블록 부분(예를 들면, 사분면)에 대한 차분 데이터의 세트가 결정된다.
일단 디코딩될 텍스처 데이터 요소에 대해서 사용되는 차분 값 및 베이스 데이터 값이 결정되었다면, 그들을 이용해서 텍스처 데이터 요소에 대하여 사용되는 디코딩된 데이터(예를 들면, 컬러) 값을 제공할 수 있다. 바람직하게는, 결정된 차분 값과 베이스 데이터 값은, 바람직하게는 이것을 행하기 위해서, 그들을 함께 더함으로써 결합된다. 텍스처 데이터가 복수의 성분(예를 들면, RGB)을 포함하는 경우에는, 차분 값이 베이스 데이터 값의 각 성분과(에 더해진다) 적절하게 결합되는 것이 바람직하다. 한 개의 차분 값이 있는 경우에는, 동일한 차분 값이 디코딩된 출력(예를 들면, 컬러) 값을 제공하기 위해서 베이스 데이터 값의 각 성분에 별도로 부가되는 것이 바람직하다.
베이스 데이터 값과 차분 값을 이용해서 결정된 데이터 (예를 들면, 컬러)값은, 사용을 위해 최종적으로 출력되기 전에, 원한다면 또는 필요하다면, 추가 처리될 수 있다.
예를 들면, 필요한 경우에는 그것은 예를 들면 원하는 허용된 값 범위(바람직하게는 RGB 컬러의 경우에 (0, 255) 등)로 고정될 수 있다. 바람직한 일 실시예에 있어서는, 이것이 행해진다.
마찬가지로, 단일 성분 HDR 텍스처의 경우에는, 예를 들면, 베이스 값과 차분 값을 결합해서 얻은 값은, 텍스처 데이터 요소에 대해서 출력 및 사용되는 플로팅 포인트(floating point) 값을 주기 위해서 지수의 거듭제곱에 2를 곱한 후에 225.0f로 나눈 부호를 지닌 정수값으로서 유지되는 것이 바람직하다.
텍스처 데이터 요소에 대한 결정된, 원한다면 고정된, 데이터 값은, 원하는 대로 예를 들면 사용을 위해서, 그래픽 프로세서의 프래그먼트 셰이더(fragment shader)에 출력될 수 있다.
디코딩 프로세스는 값이 필요한 블록의 각 텍스처 데이터 요소에 대해서(다른 인코딩된 블록들에 있어서의 텍스처 데이터 요소들에 대해서)(값이 필요한 텍스처의 각 텍스처 데이터 요소에 대해서) 반복될 수도 있다.
바람직한 실시예에 있어서는, 디코더(디코딩 장치)는 그래픽 프로세서와 같은, 인코딩된 텍스처들을 사용해야 하는 디바이스로 구현된다. 이 디코더는 디코딩 프로세스를 행하기 위해서 구성되는 전용 하드웨어 소자로서 구현되는 것이 바람직하다.
상기로부터 알 수 있는 것처럼, 특히 바람직한 실시예에 있어서는, 인코딩된 텍스처의 개개의 텍스처 데이터 요소에 대한 본 발명의 디코딩 프로세스는, 텍스처 데이터 요소의 위치에 의거하여 텍스처를 나타내는 인코딩된 텍스처 데이터 블록들의 한 세트로부터 3개의 이웃하는 인코딩된 텍스처 데이터 블록들 및 텍스처 데이터 요소를 나타내는 인코딩된 텍스처 데이터 블록을 식별하고; 식별된 텍스처 데이터 블록들의 각각에 대한 텍스처의 저해상도 표현으로부터 얻은 베이스 데이터 값을 결정하며; 텍스처 데이터 요소의 위치에 의거한 식별된 텍스처 데이터 블록들에 대한 결정된 베이스 데이터 값들을 선형으로 필터링하여 텍스처 데이터 요소에 대한 베이스 데이터 값을 생성하고; 텍스처 데이터 요소의 위치에 의거한 텍스처 데이터 요소를 나타내는 인코딩된 텍스처 데이터 블록에 있어서의 미리 결정된 차분 데이터 값들의 세트를 나타내는 인덱스 값을 식별하며; 인덱스 값을 이용해서 메모리로부터 미리 결정된 차분 데이터 값들의 세트를 패치(fecth)하고; 어떤 동작들(바람직하게는, 회전, 니게이션, 또는 스케일링 등)을, 미리 결정된 차분 값들의 세트에 적용할 필요가 있는지를 인덱스 값으로부터 판정하고, 만약 그렇다면, 이들 동작을 미리 결정된 차분 값들의 세트에 적용하고; 텍스처 데이터 요소의 위치에 의거한 텍스처 데이터 요소에 대하여 사용할 미리 결정된 차분 값들의 세트로부터 차분 값을 식별하며; 텍스처 데이터 요소에 대한 식별된 차분 값을 텍스처 데이터 요소에 대한 결정된 베이스 데이터 값에 부가해서 텍스처 데이터 요소에 대한 디코딩된 값을 생성하는(그 후에, 예를 들면 그래픽 프로세서에 의해, 예를 들면, (필요하다면) 디코딩된 값을 고정하거나 그렇지 않으면 처리하고, 그것을 사용하기 위해서 출력하다) 것을 포함할 것이다.
이와 같이, 본 발명의 추가 국면에 의하면, 그래픽 처리 시스템에서 사용되는 텍스처 데이터 요소들의 어레이를 나타내는 인코딩된 텍스처를 디코딩하는 방법이 제공되고, 상기 인코딩된 텍스처는 한 세트의 인코딩된 텍스처 데이터 블록들의 형태를 취하고 있고, 각 블록은 텍스처의 텍스처 데이터 요소들의 서브 세트를 나타내며, 상기 방법은,
값이 결정되어야 하는 텍스처 데이터 요소의 위치에 의거해서, 텍스처를 나타내는 인코딩된 텍스처 데이터 블록들의 세트로부터 3개의 이웃하는 인코딩된 텍스처 데이터 블록들과 값이 결정되어야 하는 텍스처 데이터 요소를 나타내는 인코딩된 텍스처 데이터 블록을 식별하고;
식별된 텍스처 데이터 블록들의 각각에 대한 텍스처의 저해상도 표현으로부터 얻은 베이스 데이터 값을 결정하고;
텍스처 데이터 요소의 위치에 의거한 식별된 텍스처 데이터 블록들에 대한 결정된 베이스 데이터 값들을 선형으로 필터링하여 텍스처 데이터 요소에 대한 베이스 데이터 값을 생성하며;
텍스처 데이터 요소의 위치에 의거한 텍스처 데이터 요소를 나타내는 인코딩된 텍스처 데이터 블록에 있어서의 미리 결정된 차분 데이터 값들의 세트를 나타내는 인덱스 값을 식별하고;
인덱스 값을 이용해서 메모리로부터 미리 결정된 차분 데이터 값들의 세트를 페치하며;
텍스처 데이터 요소의 위치에 의거한 텍스처 데이터 요소에 대해서 사용할 미리 결정된 차분값들의 세트로부터 차분값을 결정하고;
텍스처 데이터 요소에 대한 결정된 차분 값과 텍스처 데이터 요소에 대한 결정된 베이스 데이터 값을 이용해서 텍스처 데이터 요소에 대한 디코딩된 값을 제공함으로써,
인코딩된 텍스처가 나타내는 개개의 텍스처 데이터 요소의 값을 결정하는 것을 포함한다.
마찬가지로, 본 발명의 추가 국면에 의하면, 그래픽 처리 시스템에서 사용되는 텍스처 데이터 요소들의 어레이를 나타내는 인코딩된 텍스처를 디코딩하여 인코딩된 텍스처가 나타내는 개개의 텍스처 데이터 요소의 값을 결정하는 장치가 제공되고, 인코딩된 텍스처는 한 세트의 인코딩된 텍스처 데이터 블록들의 형태를 취하고 있고, 각 블록은 텍스처의 텍스처 데이터 요소들의 서브 세트를 나타내며, 상기 장치는,
값이 결정되어야 하는 텍스처 데이터 요소의 위치에 의거해서, 텍스처를 나타내는 인코딩된 텍스처 데이터 블록들의 세트로부터 3개의 이웃하는 인코딩된 텍스처 데이터 블록들과 값이 결정되어야 하는 텍스처 데이터 요소를 나타내는 인코딩된 텍스처 데이터 블록을 식별하는 수단과,
식별된 텍스처 데이터 블록들의 각각에 대한 텍스처의 저해상도 표현으로부터 얻은 베이스 데이터 값을 결정하는 수단과,
텍스처 데이터 요소의 위치에 의거한 식별된 텍스처 데이터 블록들에 대한 결정된 베이스 데이터 값들을 선형으로 필터링하여 텍스처 데이터 요소에 대한 베이스 데이터 값을 생성하는 수단과,
텍스처 데이터 요소의 위치에 의거한 텍스처 데이터 요소를 나타내는 인코딩된 텍스처 데이터 블록에 있어서 미리 결정된 차분 데이터 값들의 세트를 나타내는 인덱스 값을 식별하는 수단과,
인덱스 값을 이용해서 메모리로부터 미리 결정된 차분 데이터 값들의 세트를 페치하는 수단과,
텍스처 데이터 요소의 위치에 의거한 텍스처 데이터 요소에 대해서 사용할 미리 결정된 차분값들의 세트로부터 차분값을 결정하는 수단과,
텍스처 데이터 요소에 대한 결정된 차분 값과 텍스처 데이터 요소에 대한 결정된 베이스 데이터 값을 이용해서 텍스처 데이터 요소에 대한 디코딩된 값을 제공하는 수단을 구비한다.
이 기술분야의 당업자가 알 수 있는 것처럼, 본 발명의 이들 모든 국면은, 적절하게는, 여기에서 설명한 본 발명의 바람직한 선택적인 특징들 중의 어느 하나 또는 그 이상 또는 모두를 포함할 수 있고, 바람직하게는 행할 수 있다.
이와 같이, 예를 들면, 인코딩된 텍스처 데이터 블록들은 각각 8×8 어레이의 텍스처 데이터 요소들을 나타내는 것이 바람직하고, 또 사이즈가 64비트인 것이 바람직하며, 프로세스는 (바람직하게는) 회전, 니게이션 및/또는 스케일링(증폭)과 같은, 동작이 미리 결정된 차분값의 세트에 적용될 필요가 있는지 여부를 식별된 인덱스 값으로부터 결정하고, 만약 그렇다면, 미리 결정된 차분 값들의 세트로부터 문제의 텍스처 데이터 요소에 대해서 사용할 차분값을 결정할 때 미리 결정된 차분 값들의 세트에 그 동작을 적용하는 것을 더 포함하는 것이 바람직하다. 바람직하게는, 동작에 영향을 주는 어떤 오리엔테이션은 (검색되는 값들에 영향을 미칠 것이므로) 블록 값들이 검색되기 전에 행해지고, 및/또는 블록 값들 자체를 변경하는 어떤 동작들은 블록 값들이 검색된 후에 행해진다.
마찬가지로, 프로세스는 디코딩된 값을 허용된 범위의 값들로 고정하는 등, 바람직하게는 먼저 디코딩된 값을 몇몇 추가 처리에 적용한 후에, 예를 들면, 그래픽 프로세서에 의해, 사용하기 위한 텍스처 데이터 요소에 대한 디코딩된 값을 출력하는 것을 더 포함하는 것이 바람직하다.
동일하게, 이 프로세스는 값이 필요한 텍스처의 각 텍스처 데이터 요소에 대해서 반복되는 것이 바람직하다.
본 발명은 또한 본 발명의 인코딩 프로세스와 디코딩 프로세스의 결합 사용에도 확장되고, 마찬가지로 본 발명의 인코딩 프로세스와 디코딩 프로세스 양쪽을 실행할 수 있는 장치에도 확장된다.
본 발명에 대해서는, 그래픽 처리 시스템에 있어서 텍스처 데이터의 인코딩 및 디코딩을 참조하여 상기에서 설명했지만, 이 기술분야의 당업자가 알 수 있는 것처럼, 본 발명은 동일하게 다른 형태의 데이터 처리 시스템에서의 데이터의 인코딩 및 디코딩에도 적용가능할 것이고, 특히 (유사한) 데이터 요소들(예를 들면, 값이 공통 또는 유사한 포맷을 따르고 및/또는 유사하거나 동일한 목적을 위해 사용되거나 사용될 수 있고 또는 유사한 정보를 나타내는 데이터 요소들)의 어레이들 또는 블록들의 (혹은 형태로 표현될 수 있는) 형태를 취하는 데이터에도 적용가능할 것이다. 특히, 본 발명은 데이터에 대한 랜덤 액세스를 원하는 그러한 데이터의 인코딩 및 디코딩에 적용가능하다.
그러한 데이터는 예를 들면, 시뮬레이션을 위해 사용된 벡터 필드(vector-fields), 유체(fluids)를 위한 플로우(flow) 방향이나 임팩트(impacts)를 위한 바운스(bounce) 방향 등을 나타내는 데이터(그 데이터는 예를 들면 그래픽 데이터와 관련해서 상기에서 설명한 노멀 맵(범프 맵)과 비슷할 것이다), 히트(heat) 맵, 또는 사운드 데이터 등을 포함할 수 있다.
그러한 구성에 있어서는, 데이터는 여기서 설명한 것처럼 텍스처 데이터와 비슷한 방식으로 인코딩 및 디코딩될 수 있다.
이와 같이, 본 발명의 또 다른 국면에 의하면, 데이터 처리 시스템에서 사용되는 데이터 요소들의 한 세트를 인코딩하는 방법이 제공되고, 이 방법은,
데이터 요소들의 세트의 저해상도 표현을 결정하고;
원래의 데이터 요소들의 세트와, 데이터 요소들의 세트의 결정된 저해상도 표현의 업스케일된 버전 간의 차분을 나타내기 위한 전해상도의 차분 데이터의 세트를 결정하며;
데이터 요소들을 나타내는 데이터의 1개 또는 그 이상의 블록으로서 데이터 요소들의 세트를 인코딩하는 것을 포함하고, 각 그러한 데이터의 블록은,
데이터 요소들의 세트로부터 데이터 요소들의 블록을 나타내고,
데이터 요소들의 세트의 결정된 저해상도 표현으로부터 얻은 블록에 대한 베이스 데이터 값을 나타내는 데이터; 및
데이터의 블록이 나타내는 데이터 요소들에 대해서 사용되는 데이터 값들을 생성하기 위해서 데이터의 블록을 디코딩할 때 사용되는 결정된 차분 데이터의 세트로부터의 차분 데이터를 나타내는 데이터를 포함한다.
본 발명의 또 다른 국면에 의하면, 데이터 처리 시스템에서 사용되는 데이터 요소들의 세트를 인코딩하는 장치가 제공되고, 이 장치는,
데이터 요소들의 세트의 저해상도 표현을 결정하는 수단;
원래의 데이터 요소들의 세트와, 데이터 요소들의 세트의 결정된 저해상도 표현의 업스케일된 버전 간의 차분을 나타내는 전해상도의 차분 데이터의 세트를 결정하는 수단; 및
데이터 요소들을 나타내는 데이터의 1개 또는 그 이상의 블록으로서 데이터 요소들의 세트를 인코딩하는 수단을 구비하고, 각 그러한 텍스처 데이터의 블록은,
데이터 요소들의 세트로부터의 데이터 요소들의 블록을 나타내고,
상기 데이터 요소들의 세트의 결정된 저해상도 표현으로부터 얻은 블록에 대한 베이스 데이터 값을 나타내는 데이터; 및
그 데이터의 블록이 나타내는 데이터 요소들에 대하여 사용되는 데이터 값들을 발생하기 위해서 데이터의 블록을 디코딩할 때 사용되는 결정된 차분 데이터의 세트로부터의 차분 데이터를 나타내는 데이터를 포함한다.
본 발명의 또 다른 국면에 의하면, 데이터 처리 시스템에서 사용되는 데이터 요소들의 한 세트를 인코딩하는 데이터 블록을 디코딩하여 그 블록이 나타내는 데이터 요소의 값을 결정하는 방법으로서,
그 블록이 나타내는 데이터 요소들의 세트의 저해상도 표현으로부터 얻은 인코딩된 데이터 블록에 대한 베이스 데이터 값을 인코딩된 데이터 블록으로부터 결정하고, 데이터 블록에 대한 결정된 베이스 데이터 값을 이용해서 값이 결정되어야 하는 블록이 나타내는 데이터 요소에 대해서 사용되는 베이스 데이터 값을 결정하며;
값이 결정되어야 하는 블록이 나타내는 데이터 요소에 대하여 사용되는 데이터 값을 생성하기 위해서 데이터의 블록을 디코딩할 때 사용되는 차분 데이터 값을 인코딩된 데이터 블록으로부터 결정하고; 및
데이터 요소에 대한 결정된 차분 값과 함께 데이터 요소에 대한 결정된 베이스 데이터 값을 이용해서 데이터 요소에 대해서 사용되는 데이터 값을 생성하는 것을 포함한다.
본 발명의 또 다른 국면에 의하면, 데이터 처리 시스템에서 사용되는 데이터 요소들의 한 세트를 인코딩하는 데이터 블록을 디코딩하여 그 블록이 나타내는 데이터 요소의 값을 결정하는 장치가 제공되는데, 이 장치는,
그 블록이 나타내는 데이터 요소들의 세트의 저해상도 표현으로부터 얻은 인코딩된 데이터 블록에 대한 베이스 데이터 값을 인코딩된 데이터 블록으로부터 결정하고, 데이터 블록에 대한 결정된 베이스 데이터 값을 이용해서 값이 결정되어야 하는 블록이 나타내는 데이터 요소에 대해서 사용되는 베이스 데이터 값을 결정하는 수단;
값이 결정되어야 하는 블록이 나타내는 데이터 요소에 대하여 사용되는 데이터 값을 생성하기 위해서 데이터의 블록을 디코딩할 때 사용되는 차분 데이터 값을 인코딩된 데이터 블록으로부터 결정하는 수단; 및
데이터 요소에 대한 결정된 차분 값과 함께 데이터 요소에 대한 결정된 베이스 데이터 값을 이용해서 데이터 요소에 대해서 사용되는 데이터 값을 생성하는 수단을 구비한다.
이 기술분야의 당업자가 알 수 있는 것처럼, 본 발명의 이들 모든 국면은, 여기에서 설명한 본 발명의 바람직한 선택적인 특징들 중의 어느 한 개 또는 그 이상 또는 모두를 적절하게 포함할 수 있고, 바람직하게는 행할 수 있다. 이와 같이, 예를 들면, 디코딩된 데이터 블록들은 8×8 어레이의 데이터 요소들을 나타내는 것이 바람직하고, 사이즈가 16비트인 것이 바람직하다.
본 발명의 방법 및 장치는, 어떤 적절한 방식으로, 예를 들면 하드웨어 또는 소프트웨어로, 그리고 어떤 적절한 디바이스 또는 구성소자(에 포함된다)로 구현될 수 있다. 바람직한 실시예에 있어서는, 그들은 그래픽 프로세서로 구현되므로, 본 발명은 본 발명의 방법을 이용하도록 구성되고 또는 본 발명의 장치를 포함하는 그래픽 프로세서에도 확장된다. 바람직한 실시예에 있어서는, 본 발명의 방법 및 장치는, 바람직하게는 한 개의 세미 컨덕터 플랫폼 상의 하드웨어로 구현된다.
본 발명은 적절하게 구성된 마이크로 프로세서 기반의 시스템과 같은, 어떤 적절한 시스템으로 구현될 수 있다. 바람직한 실시예에 있어서는, 본 발명은 컴퓨터 및/또는 마이크로 프로세서 기반의 시스템으로 구현된다.
본 발명의 다양한 기능들은 어떤 소망하는 적절한 방식으로 행해질 수 있다. 예를 들면, 본 발명의 기능들은 원하는 대로, 하드웨어 또는 소프트웨어로 구현될 수 있다. 이와 같이, 예를 들면, 본 발명의 다양한 기능적인 요소들 및 "수단"은, 원하는 방식으로 동작하도록 프로그램될 수 있는 프로그래머블 하드웨어 소자들 및/또는 적절한 전용 하드웨어 소자들과 같은, 다양한 기능 등을 수행하도록 동작가능한 적절한 프로세서 또는 프로세서들, 컨트롤러 또는 컨트롤러들, 기능 유닛들, 회로, 처리 로직, 마이크로프로세서 장치 등을 구비할 수 있다. 다양한 기능적인 요소 등은, 원하는 대로, 서로 분리될 수 있거나 (예를 들면, 동일한 프로세서에 의해 행해지는) 회로를 공유할 수 있다.
여기에서는, 이 기술분야의 당업자가 알 수 있는 것처럼, 본 발명의 다양한 기능 등은, 복제될 수 있고, 및/또는 주어진 프로세서에 대해서 병렬로 행해질 수 있다는 점에 유념해야 한다.
본 발명은 타일(tile) 기반의 그래픽 프로세서, 즉각 모드 렌더러(immediate mode renderers), "파이프라인(pipelined)" 렌더링 구성을 갖는 프로세서 등과 같은 그래픽 프로세서 및 렌더러의 어떤 적절한 형태 또는 구성에 적용가능하다.
상기로부터 알 수 있는 것처럼, 본 발명은 배타적으로는 아니지만, 특히 그래픽 프로세서 및 처리 장치에 적용가능하고, 따라서 여기에서 설명한 본 발명의 국면들 중의 어느 하나 또는 그 이상의 장치를 포함하고, 그 방법에 따라 동작하는 그래픽 프로세서 및 그래픽 처리 플랫폼에 확장된다. 그렇지 않으면, 그러한 그래픽 프로세서는, 상기 설명한 특정 기능을 수행하기 위해 필요한 어떤 하드웨어에 따라, 그래픽 프로세서가 포함하는 보통의 기능 유닛들 중의 어느 하나 또는 그 이상 또는 모두를 포함할 수 있다.
몇몇 실시예에 있어서는, 데이터 처리 시스템, 그래픽 처리 시스템, 데이터 프로세서들, 그래픽 프로세서들, 처리회로, 장치 등은, 텍스처 데이터(원래의 텍스처 및/또는 인코딩된 텍스처), 다운스케일된 버전의 텍스처, 차분 데이터(차분 데이터 블록들)의 기준 세트, 텍스처 데이터 요소들의 값들, 인코딩된 텍스처 데이터 블록 등과 같은, 여기에서 설명한 데이터를 저장하고, 및/또는 여기에서 설명한 프로세스들을 수행하는 소프트웨어를 저장하는 메모리 및/또는 1개 또는 그 이상의 메모리 디바이스들과 통신할 수 있다. 데이터 처리 시스템, 그래픽 처리 시스템, 데이터 프로세서들, 그래픽 프로세서들, 처리회로, 장치 등은, 또한 생성된 텍스처 데이터에 의거한 화상들을 표시하기 위한 디스플레이와 통신할 수 있다.
기술된 본 발명의 모든 국면들 및 실시예들은 적절하게는 여기에서 설명한 바람직한 선택된 특징들 중의 어느 하나 또는 그 이상 또는 모두를 포함할 수 있다는 것은 이 기술분야의 당업자에 의해 인식될 것이다.
본 발명에 따른 방법들은 소프트웨어, 예를 들면 컴퓨터 프로그램을 이용해서 적어도 부분적으로 구현될 수 있다. 이와 같이, 추가 국면에서 봤을 때, 본 발명은 데이터 수단 상에 인스톨될 때 여기에 기술된 방법을 수행하도록 특별히 구성된 컴퓨터 소프트웨어, 프로그램 요소가 데이터 처리 수단 상에서 실행될 때 여기에서 기술된 방법을 수행하기 위한 컴퓨터 소프트웨어 코드부를 포함하는 컴퓨터 프로그램 소자, 및 프로그램이 데이터 처리 시스템상에서 실행될 때 여기에 기술된 방법 또는 방법들의 모든 스텝들을 수행하도록 구성된 코드 수단을 포함하는 컴퓨터 프로그램을 제공한다는 것을 알 것이다. 데이터 처리 시스템은 마이크로프로세서, 프로그래머블 FPGA(Field Programmable Gate Array) 등일 수 있다.
본 발명은 그래픽 프로세서를 동작시키도록 사용될 때, 데이터 처리 수단을 포함하는 렌더러 또는 다른 시스템이 상기 데이터 처리 수단과 함께 상기 프로세서, 렌더러 또는 시스템으로 하여금 본 발명의 방법들의 스텝들을 수행하게 하는 소프트웨어를 포함하는 컴퓨터 소프트웨어 캐리어에도 확장된다. 그러한 컴퓨터 소프트웨어 캐리어는 ROM 칩, CD ROM, RAM 플래시 메모리, 또는 디스크와 같은 물리적인 저장매체일 수 있고 또는 위성 등과 같이 와이어를 통하는 전기신호, 광신호 또는 무선신호와 같은 신호일 수 있다.
본 발명의 방법의 모든 스텝이 반드시 컴퓨터 소프트웨어에 의해 수행될 필요는 없으므로, 추가 넓은 국면에서, 본 발명은 여기에서 시작된 방법들의 스텝들 중의 적어도 하나를 수행하기 위한 컴퓨터 소프트웨어 캐리어 상에 인스톨된 소프트웨어 및 컴퓨터 소프트웨어를 제공한다는 것을 더 알 수 있을 것이다.
따라서, 본 발명은 컴퓨터 시스템과 함께 사용하기 위한 컴퓨터 프로그램 제품으로서 적절히 구현될 수 있다. 그러한 구현은, 광학 또는 아날로그 통신선로들을 포함하지만 그것에 한정되지 않거나, 막연하게 무선기술을 이용하고, 마이크로파, 적외선 또는 다른 송신기술을 포함하지만 그것에 한정되지 않는, 어느 하나의 유형의 매체 상에서, 컴퓨터 판독가능한 매체, 예를 들면, 디스켓, CD ROM, ROM, RAM, 플래시 메모리, 또는 하드 디스크와 같은, 유형의 비일시 매체 상에 고정되거나, 모뎀 또는 다른 인터페이스 디바이스를 통해서 컴퓨터 시스템에 송신가능한 일련의 컴퓨터 판독가능한 명령들을 포함한다. 이 일련의 컴퓨터 판독가능한 명령들은 여기에 이전에 기술된 기능의 모두 또는 일부를 구현한다.
이 기술분야의 당업자는, 그러한 컴퓨터 판독가능한 명령들이 많은 컴퓨터 구조 또는 조작 시스템과 함께 사용하기 위한 다수의 프로그래밍 언어로 기록될 수 있다는 것을 알 수 있을 것이다. 또, 그러한 명령들은, 어떤 메모리 기술, 현재 또는 미래를 이용하고, 세미컨덕터, 마그네틱, 또는 옵티컬을 포함하지만 그것에 한정되지 않으며, 또는 어떤 통신 기술, 현재 및 미래를 이용해서 송신되며, 옵티컬, 적외선 또는 마이크로파를 포함하지만 그것에 한정하지 않고 저장될 수 있다. 그러한 컴퓨터 프로그램 제품은, 프린트된 또는 전자 문서, 예를 들면 쉬링크 랩핑된(shrink wrapped) 소프트웨어를 수반하여 이동식 매체로서 분포될 수 있고, 예를 들면, 시스템 ROM 또는 고정된 디스크 상에, 컴퓨터 시스템이 프리 로드(pre loaded)될 수 있으며, 또는 네트워크, 예를 들면, 인터넷 또는 World Wide Web 상의 서버 또는 전자 게시판으로부터 분포될 수 있다는 것이 고려된다.
본 발명의 다수의 바람직한 실시예는 첨부도면을 참조하여 예로서 기술될 것이다.
도 1은 본 발명의 실시예에 따른 복수의 인코딩된 데이터 블록들로서 화상 데이터의 어레이의 인코딩을 개략적으로 나타낸다.
도 2는 본 발명의 바람직한 실시예에서 사용된 인코딩 프로세스를 나타낸다.
도 3은 본 발명의 기술된 바람직한 실시예의 인코딩된 블록 레이아웃을 나타낸다.
도 4는 본 발명의 바람직한 실시예의 인코딩 프로세스를 개략적으로 나타낸 플로차트이다.
도 5는 본 발명의 바람직한 실시예의 디코딩 프로세스를 개략적으로 나타낸 플로차트이다.
도 6은 본 발명의 방식으로 인코딩된 텍스처 데이터를 사용할 수 있는 그래픽 처리 시스템을 개략적으로 나타낸다.
본 발명의 바람직한 실시예는 그래픽 처리에 사용하기 위한 (텍스처 맵의) 텍스처 데이터의 인코딩을 참조하여 설명할 것이다. 그렇지만, 상기 설명한 바와 같이, 이 기술분야에 속하는 당업자가 알 수 있는 것처럼, 본 발명은 일반적으로 데이터 인코딩 및 디코딩에 적용가능하므로, 텍스처 데이터 인코딩의 본 예에 한정되는 것으로 간주되어서는 안 된다.
도 1은 이 실시예의 기본 인코딩 프로세스를 나타낸다. 도 1에 나타낸 바와 같이, 텍스처 데이터 요소들(텍셀들)(텍스처 "맵")의 원래의 화상 또는 어레이(1)는 복수의 8×8 텍스처 요소 블록(2)으로 세분된다. (원한다면, 다른 블록 사이즈가 사용될 수 있다.)
본 실시예에 있어서는, 도 1에 나타낸 바와 같이, 원래의 화상(텍스처 맵)(1)은 동일한 사이즈의 블록들로 분할된다. 이것은 어느 블록에 주어진 텍스처 데이터 요소가 놓여 있는지를 찾아내는 일을 간소화하고, 일정한 데이터 레이트를 제공한다. (사용된 블록 사이즈는 인코딩된 텍스처 데이터 블록들 자체의 블록 사이즈를 포함하기보다는, 별도로 디코더에 전해진다. 그것은 예를 들면 전체적으로 텍스처의 기술(description)의 부분으로서 저장되거나 화상 타입과 같은, 텍스처와 관련된 또 다른 파라미터로 함축적으로 표시될 수 있다. 바람직한 실시예에 있어서는, 블록 사이즈는 문제의 텍스처에 대한 인코딩된 텍스처 데이터 블록들의 세트와 관련되는 데이터 헤더에 (분명하게) 표시된다.)
이 실시예에 있어서는, 원래의 텍스처 맵 데이터 어레이(화상)에 있어서의 각 텍스처 요소(텍셀)는 각각의 텍스처 요소의 위치에서 사용되는 컬러를 나타내고, 따라서 한 세트의 컬러 값들(예를 들면, 레드, 그린, 블록(RGB) 값들)로 구성되는 데이터 값을 그것에 할당했다. 즉, 이 실시예에 있어서는, 인코딩되어 생성되는 데이터 값들 등은 각각 컬러(한 세트의 컬러 값들)에 대응하고 그것을 나타낸다. 편의를 위해서, 이하의 설명에서는 주로 "컬러"라고 언급할 것이지만, 이러한 언급은 문제의 컬러를 나타내는 한 세트의 컬러 값들로 구성되는 데이터 값을 나타낸다는 것을 이해해야 한다.
본 실시예에 있어서는, 완전한, 원래의 형태의 컬러 데이터의 어레이를 저장하는 것보다는, 각 8×8 텍스처 요소 블록(2)이 그것의 원래의 인코딩되지 않은 형태의 텍스처 데이터에 비해서 사이즈가 작은 텍스처 데이터 블록(5)으로서 인코딩된다. 이것은 실제로는 원래의 텍스처 데이터를 압축하고, 그것에 의해 그것의 저장 및 처리를 보다 쉽게 좀더 효율적으로 행한다. 본 실시예에 있어서는, 각 인코딩된 텍스처 데이터 블록(5)은 64비트를 사용한다. 각 인코딩된 텍스처 데이터 블록(5)이 64비트를 이용해서 8×8 어레이의 텍셀들을 인코딩함에 따라, 인코딩이 1bpp(픽셀 평균당 1비트) 레이트로 행해진다. (다른 구성도 가능할 것이다.)
각 인코딩된, 사이즈가 감소된, 텍스처 데이터 블록(5)은 이하에 더 설명하는 바와 같이, 문제의 8×8 텍스처 요소 블록의 원래의, 인코딩되지 않은, 데이터에 대응하거나 그것을 나타내는 데이터가 재생될 수 있도록 적절한 데이터를 포함한다.
본 실시예에 있어서는, 각 텍스처 맵은 텍스처 맵을 구성하는 텍스처 데이터 요소들의 어레이를 인코딩하는 개개의 텍스처 데이터 블록들의 시퀀스로 구성되는 텍스처 데이터 파일로서 인코딩된다.
텍스처 맵(1)을 구성하는 개개의 8×8 텍셀 블록들은 본 실시예에 있어서는 래스터(raster)순으로 인코딩된다. 물론, 모톤 오더(Morton order)의 사용과 같은, 다른 구성도 가능할 것이다.
인코딩된 텍스처 파일에 있어서의 텍스처 데이터 블록들의 수는, 인코딩되고 있는 텍스처 맵(텍스처 데이터 어레이)의 사이즈와, 예를 들면 데이터가 밉 맵(mip-map) 형태로 저장되고 있는지 여부에 의존할 것이다. 밉맵이 사용되면, 그리고나서 텍스처 맵 해상도의 제1 레벨은 "n" 텍스처 데이터 블록들을 이용해서 인코딩되면, 사이즈 1×1의 밉맵 레벨이 도달될 때까지 아래의 밉맵 레벨에 대해서는 "n/4" 텍스처 데이터 블록들, 다음 밉맵에 대해서는 "n/16" 블록, 그 다음에 대해서는 "n/64", 다시 그 다음에 대해서는 "n/256" 등(그렇지만, 각 레벨에 대해서는 한 개의 블록보다 적지 않다)이 있을 것이다.
(본 실시예에 있어서는, 인코딩된 텍스처 데이터는 MIP 맵의 형태일 수 있고, 바람직하게는 그 형태로 저장될 수 있다(즉, 상이한 레벨의 디테일(해상도)을 각각 갖는 많은 버전의 원래의 텍스처 데이터 어레이가 사용을 위해서 저장되는 경우에). MIP 맵은 메모리에 서로 하나씩 저장되는 것이 바람직하고, 각 MIP 맵 레벨은, 이 기술분야에서 알려진 바와 같이, 원래의 어레이(화상)의 (2의 인자로) 다운로드된 표현(화상)이다. MIP 맵은 해상도의 내림차순으로, 즉 n×n,..., 16×16, 8×8, 4×4, 2×2, 1×1의 순으로 저장된다. 보다 작은 MIP 맵(<8×8)은 각각 별도의 인코딩된 블록에 개별적으로 저장된다.
본 실시예에서 사용되는 텍스처 데이터 요소(텍셀)의 블록을 인코딩하는 포맷에 대해서는, 도 2, 도 3 및 도 4를 참조하여 설명할 것이다. 본 실시예에 있어서는, 인코딩될 원래의 텍스처가 RGB565 화상이라고 가정한다.
본 실시예에 있어서 텍스처를 인코딩할 때 사용되는 기본 프로세스는, 인코딩될 텍스처를 2개의 별도의 논리적인 부분: 텍스처의 저해상도 표현(버전)과, 원래의 텍스처와 텍스처의 저해상도 표현의 업스케일된 버전 간의 차분을 나타내는 전해상도 차분 (델타) 마스크로 분할하는 것이다.
원래의 텍스처의 저해상도 버전은 원래의 텍스처에 있어서의 저주파수 색조 및 휘도를 효율적으로 인코딩하지만, 차분 (델타) 마스크는 텍스처에 있어서의 고주파수 데이터를 나타낸다. 이런 방식으로 원래의 텍스처를 인코딩함으로써, 인코딩된 텍스처 포맷은 더 적은 비트를 이용해서 (사람의 눈은 저주파수의 노이즈에 더 민감하므로) 인지된 품질의 너무 많은 손실 없이 고주파수 데이터를 인코딩할 수 있다.
그 다음, 원래의 텍스처(1)를 나타내기 위해서 사용되는 각 인코딩된 텍스처 데이터 블록(5)은, 문제의 블록에 대해서 사용되는 차분 마스크 값들을 나타내는 데이터와 함께, 텍스처의 저해상도 버전으로부터 적절한 데이터를 포함한다.
본 실시예에 있어서는, 인코드되어야 하는 텍스처(1)는 RGB 화상이므로, 텍스처의 저해상도 표현은 원래의 텍스처로부터 도출된 저해상도 (각 방향에서 1:8) RGB565 화상이며 차분 (델타) 마스크는 원래의 텍스처와 저해상도 화상의 업스케일된 버전 간의 밝기(평균 RGB 차이)의 차이를 나타낸다.
도 2는 이것을 보여주고, 인코딩되어야 하는 원래의 텍스처(화상)(10), 텍스처의 대응하는 저해상도 RGB565 버전(11), 및 전해상도 휘도 델타 마스크(12)를 나타낸다.
그 다음에, 도 3은 원래의 텍스처(10)의 텍셀들(텍스처 데이터 요소들의 각각의 8×8 블록을 나타내기 위해 생성되는 각 64비트 인코딩된 텍스처 데이터 블록의 레이아웃을 나타낸다.
도 3에 나타낸 바와 같이, 텍스처(10)에 있어서의 텍셀들의 각각의 8×8 블록에 대해서 생성되는 각 인코딩된 텍스처 데이터 블록(5)은, 첫째로 문제의 인코딩된 텍스처 데이터 블록(5)이 나타내는 8×8 블록의 텍셀들의 위치에 대응하는 원래의 텍스처(10)의 저해상도 표현(11)의 위치로부터 취득되는 16비트 RGB565 베이스 컬러 값(20)을 포함한다.
각 인코딩된 텍스처 블록(5)은 휘도 델타 마스크, 고주파수, 문제의 인코딩된 텍스처 블록에 대해서 사용되는 데이터를 나타내는 4개의 12비트 휘도 델타 인덱스(21)도 포함한다. 각 그러한 12비트 델타 인덱스(21)는, 각각의 인코딩된 텍스처 데이터 블록(5)이 나타내는 텍셀들의 8×8 블록의 각 4×4 텍셀 서브블록에 대해서 사용되는 부호를 지닌 8비트 정수 차분 데이터 값들의 미리 정해진 4×4 블록을 나타낸다.
이 목적을 위해서 사용된 차분 데이터 값들의 미리 정해진 4×4 블록을, 예를 들면, 차분값들의 4×4 블록의 다른 세트들을 이용하여 복수의 대표적인, 예를 들면 게임 콘텐츠, 텍스처들을 인코딩하는 것에 의해 미리 결정되었던 차분값들의 4×4 블록들의 미리 정해진 팔레트로부터 취해서, 사용되어야 하는 대표적인 텍스처들을 인코딩하고 가장 잘 나타내기 위해서 사용될 수 있는 차분값들의 미리 정해진 4×4 블록들의 적절한 팔레트를 (예를 들면, 적절한 머신 러닝 알고리즘(machine learning algorithm)을 이용해서) 판정한다. 그렇게 해서 도출된 미리 정해진 차분값 블록들의 팔레트의 일부 또는 전부는, (양쪽 인코딩 측에서, 그리고 디코더에 의해) 사용을 위해서, 예를 들면 룩업 테이블(25)로서 저장된다.
본 실시예에 있어서는, 사용되는 그러한 블록들의 팔레트에 포함된 상이한 미리 정해진 차분값 블록들 간의 다양한 대칭들(symmetries)에 의해, 더 적은 수의 저장된 블록들이 텍스처들을 인코딩(및 디코딩)하기 위해서 사용될 수 있는 보다 큰 미리 정해진 차분값 블록들의 팔레트를 생성하기 위해서 사용될 수 있다.
특히, 본 실시예에 있어서는, 각 12비트 인덱스 값(21)의 처음 7비트는 8비트 부호를 지닌 정수 차분값들의 128 미리 정해진 4×4 블록들의 룩업 테이블(25)로부터 차분값들의 4×4 블록을 (그것에 대한 인덱스로서 사용된) 식별하기 위해서 사용되고, 12비트 인덱스(21)에서의 다음 2비트는 사용되어야 하는 블록의 오리엔테이션(회전)을 (즉, 룩업 테이블로부터의 블록이 실제로 사용되어야 하는 차분값들의 블록을 제공하기 위해서 회전되어야 하는지 그리고 어떻게 회전되지) 정의하기 위해서 사용되며, 12비트 인덱스(21)에서의 다음 비트는 사용되어야 하는 블록값들의 부호를 정의하고(이 비트가 설정되면, 모든 룩업 블록 값들은 부정되어야 한다), 12비트 인덱스에서의 최종 2비트는 룩업 블록 값들에 적용되는 스케일링(즉, 블록의 진폭)(모든 블록값 들을 1 + 이 값과 곱한다)을 정의한다.
그 다음, 이것에 의해 128 저장된 미리 정해진 블록들이 텍스처들을 인코딩 및 디코딩할 때 사용하기 위한 4096 미리 정해진 4×4 차분값 블록들의 팔레트를 생성하기 위해서 사용될 수 있다.
도 4는 본 실시예의 인코딩 프로세스를 개략적으로 나타낸 것이다. 이 프로세스는 하드웨어 인코더와 같은, 어떤 적절한 인코더, 혹은 예를 들면 메모리 내의 원래의 텍스처 데이터에 액세스한 PC와 같은, 적절히 프로그램된 범용 프로세서로 실행되어도 된다.
우선, 초기의 텍스처(10)는 인코더(스텝 40)에 입력되고, 그 후에 원래의 텍스처(10)의 대응하는 저해상도 표현(11)을 생성하도록 다운스케일된다(스텝 41).
그 다음, 텍스처의 생성된 저해상도 표현(11)의 (즉, 원래의 텍스처와 같은 해상도를 갖는) 업스케일된, 전해상도 버전은, 선형 필터링을 이용해서 생성된다(스텝 42). 원래의 텍스처의 저해상도 버전(11)의 이 업스케일된 버전을, 원래의 텍스처(10)와 비교해서 원래의 텍스처(10)에서의 텍셀의 값과, 텍스처의 저해상도 표현(11)의 업스케일된 버전에서의 텍셀의 값 간의 차분(즉, 에러)을 각 텍셀마다 나타내는 차분값들의 한 세트를 결정한다(스텝 43). 본 실시예에 있어서는, 하나의 텍셀에 대한 차분값은, 2개의 텍셀값들 간의 평균 RGB 차분을 나타내는 8비트 부호를 지닌 정수값으로서 도출된다. 물론 다른 구성도 가능할 것이다.
일단 이것이 행해졌으면, 인코딩된 텍스처 데이터 블록(5)은 원래의 텍스처(10)에서의 텍셀들의 각 8×8 블록에 대해서 생성될 수 있다(스텝 44).
이것을 위해서, 인코딩된 텍스처 데이터 블록(5)에 포함되는 베이스 컬러 값(20이 먼저 결정된다. 이것은 인코딩된 텍스처 데이터 블록(5)이 나타내어야 하는 8×8 텍셀 블록에 대응하는 위치에서 텍스처의 저해상도 표현(11)을 샘플링함으로써 인코딩된 텍스처 데이터 블록(5)에 포함하는 베이스 컬러값(20)을 텍스처(10)의 저해상도 표현(11)으로부터 결정함으로써 행해진다.
다음에, 인코딩된 텍스처 데이터 블록(5)에 포함되는 휘도 델타 인덱스 값들(21)이 결정된다.
이것은 인코딩된 텍스처 데이터 블록(5)이 나타내어야 하는 텍셀들의 8×8 블록에 대한 원래의 텍스처(10)와 텍스처의 업스케일된 텍스처 저해상도 표현(11) 간의 결정된 차분값들의 세트를 식별한 후에, 이들 결정된 차분값들과 미리 정해진 차분값 블록들의 세트를 비교함으로써 행해진다.
본 실시예에 있어서는, 인코딩되고 있는 텍셀들의 8×8 블록의 각각의 4×4 텍셀 사분면에 대한 결정된 차분값들의 각각의 4×4 블록을, 차분값들의 미리 정해진 4×4 블록들의 미리 결정된 팔레트에서의 미리 정해진 차분값들의 4×4 블록들의 한 세트와 비교해서, 고려되고 있는 텍셀들의 8×8 블록의 텍셀들의 각각의 4×4 블록에 대한 "참" 결정된 차분값들과 가장 밀접하게 매치하는 차분값들의 블록들의 미리 정해진 팔레트로부터 미리 정해진 차분값들의 4×4 블록을 식별한다. (이 매칭 프로세스는, 예를 들어 블록에 대한 차분값들의 결정된 "참" 세트와 미리 정해진 차분값들의 가능한 세트들 간의 피크 신호대 잡음비를 측정하는 것과 같은, 어떤 원하는 테스팅 스킴을 이용할 수 있다.) 그 다음, 미리 결정된 차분값들의 4×4 블록과 가장 밀접하게 매치하는 대응하는 휘도 델타 인덱스(21)는, 인코딩된 텍스처 데이터 블록(5)에 할당되고 그것에 포함된다. 이것은 인코딩된 텍스처 데이터 블록(5)에 포함되는 4개의 휘도 델타 인덱스값(21)을 제공하기 위해서, 인코딩되고 있는 8×8 텍셀 블록의 각 4×4 사분면에 대해서 행해진다.
이 프로세스는 원래의 텍스처(10)를 나타내는 인코딩된 텍스처 데이터 블록(5)의 한 세트를 생성하도록, 원래의 텍스처(10)의 텍셀들의 각 8×8 블록에 대해서 반복된다. 그 후에, 이 인코딩된 텍스처 데이터 블록들의 세트는 예를 들면 그래픽 프로세서에 의해, 텍스처로서 미래에 사용하기 위해 출력되어 저장(스텝 45)될 수 있다. 이 인코딩된 텍스처 데이터 블록들의 세트는, 예를 들면 렌더링되어야 하는 화상에 텍스처를 적용하길 원하는 경우에, 나중에 사용하기 위해서, 예를 들면 DVD와 같은 휴대용 저장장치에 저장될 수 있다. 바람직하게는, 밉맵(mipmaps)의 한 세트는 텍스처를 나타내기 위해서 생성되고, 각 밉맵은 상기 방식으로 생성되는 것이 바람직하다.
표시용 그래픽을 처리할 때 본 실시예의 형태의 인코딩된 텍스처를 이용하는 디코딩 프로세스에 대해서는 도 5를 참조해서 설명할 것이다. (디코더는 텍스처를 사용하는 예를 들면, 그래픽 프로세서일 수도 있다. 바람직하게는 하드웨어 디코더가 사용된다.)
프로세스에 있어서의 제1 스텝은, 값이 필요한(결정되어야 하는) 텍셀의 위치(u, v)를 식별하는 것이다(스텝 50). 이것을 이용해서, 텍셀을 포함하는 인코딩된 텍스처 데이터 블록(5)과, 그 텍셀 부근의 그것의 3개의 가장 인접한 이웃하는 블록들은, 처리를 위해서 식별되고 로드된다(스텝 51). 그 다음, 이들 4개의 인코딩된 텍스처 데이터 블록들(5)의 각각에 대한 베이스 컬러 값들(20)을, 관심의 텍셀의 위치에 의거하여 결정해서 선형으로 필터링(즉, 이선형으로 필터링)해서, 값이 결정되어야 하는 텍셀에 대한 베이스 컬러 값을 도출한다.
(관심의 텍셀에 대한 베이스 컬러값을 도출하기 위해서 4개의 베이스 컬러 값을 선형으로 필터링하는 효과는, 텍스처의 저해상도 버전(11)으로부터 샘플링된 값들을 선형으로 필터링함으로써 인코딩된 텍스처를 디코딩할 때 텍스처(10)의 저해상도 표현(11)을 업스케일링하는 것이다. 텍스처의 저해상도 표현을 업스케일하기 위해서 디코딩할 때 선형 필터링을 이용하면, 원래의 텍스처로부터 저주파수 경사도의 보존이 용이하게 되어, 예를 들면, 디코딩된 텍스처에 있어서의 밴딩(banding)이 회피된다.)
다음에, 값이 결정되어야 하는 텍셀을 나타내는 인코딩된 텍스처 데이터 블록(5)에 포함된 휘도 델타 인덱스(21)는, 인코딩된 텍스처 데이터 블록(5)이 나타내는 텍셀들의 8×8 블록에서의 관심의 텍셀의 위치(즉, 사분면)에 의거해서 식별된다(스텝 53). 그 후, 12비트 인덱스(21)의 처음 7비트로 표시된 차분값들의 관련된 미리 정해진 4×4 블록은, 차분값들의 미리 정해진 4×4 블록의 룩업 테이블(25)로부터 식별되고 페치된다(스텝 54). (이 룩업 테이블은 사용중의 디코더(예를 들면, 그래픽 프로세서)에 의해 혹은 이 디코더에 액세스 가능하도록 적절히 저장된다.) 휘도 델타 인덱스 값(21)으로 나타낸 바와 같이 어떤 필요한 회전, 니게이션 및 스케일링(증폭)은 차분값들의 4×4 블록에 적용된다(스텝 55). 이 다음에, 문제의 텍셀에 대해서 사용할 차분값은 텍셀의 위치에 의거해서 차분값들의 4×4 블록으로부터 식별된다(스텝 56).
그렇게 해서 식별된 부호가 있는 정수 차분(델타) 값을, 텍셀에 대해 결정된 베이스 컬러 값(20)의 레드, 그린 및 블루 성분의 각각에 (개별적으로) 부가해서 텍셀에 대해 디코딩된 RGB 값을 제공한다(스텝 57).
본 실시예에 있어서는, 인코딩되었던 텍스처가 RGB565 텍스처이므로, 디코딩된 텍셀 레드, 그린, 블루 값들은 그 레인지(0, 255)에 고정된다. 그 결과의 컬러값(R/255.Of, G/255.Of, B/255.Of, 1.0f)은 텍셀을 필요로 하는 프래그먼트 쉐더(fragment shader)로 되돌아오는 등, 사용을 위해서 출력된다(스텝 58).
이 프로세스는 값이 필요한 각 텍셀에 대해서 반복된다.
도 6은 본 실시예에 따라 인코딩된 텍스처들을 사용할 수 있는 그래픽 처리 시스템(60)의 구성을 개략적으로 나타낸 것이다. 이 실시예에 있어서는, 그래픽 처리 시스템(60)은 타일 기반의 렌더링 시스템이다. 그렇지만, 다른 구성도 물론 가능하다.
도 6에 도시한 바와 같이, 그래픽 처리 시스템(60)은 렌더링 파이프라인(rendering pipeline)의 형태로 스테이트 관리 시스템(61), 래스터라이징 스테이지(rasterising stage)(62), 및 렌더링 스테이지(63)를 포함한다. 도 6에 도시한 바와 같이 그래픽 프로세서(60)의 스테이지들, 소자들 및 유닛들 등의 각각이 원하는 대로 구현될 수 있고, 그에 따라 필요한 동작 및 기능들을 수행하기 위한, 적절한 회로, 및/또는 처리 로직 등을 구비할 것이라는 것을 알 수 있을 것이다.
스테이트 관리 시스템(61)은, 이 기술분야에 알려진 바와 같이, 그래픽 처리 유닛의 스테이트 및 스테이트 데이터를 저장하고 제어해서 그래픽 처리 동작을 제어한다.
래스터라이저(rasteriser)(62)는, 이 기술분야에 알려진 바와 같이, 표시되어야 하는 프리미티브(primitives)를 그것의 입력으로서 취하고, 샘플링 위치에 이들 프리미티브를 래스터화하고 렌더링되어야 하는 프래그먼트들을 생성한다.
렌더링 파이프라인(63)은 래스터라이저(62)로부터 프래그먼트들을 취하고 표시용 이들 프래그먼트를 렌더링한다. 이 기술분야에서 알려진 바와 같이, 렌더링 파이프라인(63)은 프래그먼트 쉐더(fragment shaders), 블렌더(blenders), 텍스처 맵퍼(texture mappers) 등과 같은, 다수의 상이한 처리 유닛을 포함할 것이다.
렌더링 파이프라인(63)으로부터의 출력(렌더링된 프래그먼트)은 (본 실시예는 타일 기반의 시스템이므로) 타일 버퍼(64)에 출력된다. 이 타일 버퍼의 출력은 최종적으로 표시용 프레임 버퍼(65)에 출력된다.
도 6은 또한 본 실시예의 방식으로 인코딩된 텍스처를 사용하기 위해서 제공되는 그래픽 처리 시스템(60)의 특정의 특징을 개략적으로 나타낸 것이다.
특히, 도 6에 도시한 바와 같이, 렌더링 파이프라인(63)은 텍스처 리스트 버퍼(67)에 액세스할 수 있도록 구성된 텍스처 맵핑 스테이지(66)를 포함하여 렌더링을 위해서 수신하는 프래그먼트를 텍처링하는 데에 필요한 텍스처를 결정한다.
텍스처 리스트 버퍼(67)는 필요한 텍스처를 나타낼 것이고, 그 후에 이 기술분야에서 알려진 바와 같이, 텍스처 맵퍼(66)는 메모리(68)로부터 관련 텍스처 데이터를 페치(fetch)하고, 페치된 텍스처 데이터를 이용해서 문제의 프래그먼트를 처리할 것이다.
텍스처 메모리(68)에 저장된 텍스처들은 본 실시예의 인코딩 포맷을 이용해서 저장된다. 이와 같이, 텍스처 맵퍼(66)가 렌더링되고 있는 프래그먼트에 적용하기 위한 주어진 텍셀 또는 텍셀들을 필요로 할 때, 문제의 텍셀에 대해서 필요로 하는 그 맵 내에서 텍스처 맵 및 인코딩된 블록들을 결정할 것이고(예를 들면, 이 기술분야서 알려진 것처럼, 텍셀의 위치와, 블록 사이즈 및 텍스처의 사이즈의 지식에 의거해서), 메모리(68)로부터 이들 블록을 검색할 것이고, 그 후에 상술한 방식으로 인코딩된 블록들로부터 텍셀의 값(예를 들면, 컬러들)을 결정할 것이다.
텍스처 맵퍼(66)는 이것을 행하기 위한 적절한 디코더(디코딩 회로)를 포함한다. 이 디코더는 예를 들면 본 발명의 실시예의 형태로 인코딩된 텍스처들을 디코딩하도록 구성되는 전용의 하드웨어 소자의 형태이거나, 예를 들면, 본 실시예의 형태로 인코딩된 텍스처들을 디코딩할 수 있도록 적절히 프로그램된 프로그래머블 처리회로를 구비할 수도 있다. 바람직하게는 전용의 하드웨어 디코더가 사용된다.
이것은 필요한 각 텍셀 값에 대해서 반복되고, 이렇게 생성된, 디코딩된 텍셀 값들을 렌더링되고 있는 샘플링 위치(프래그먼트)에 적용해서 이들 샘플링 위치(프래그먼트들)에 대해서 렌더링된 데이터를 생성하고, 그 렌더링된 데이터는 예를 들면 "텍스처된" 샘플링 위치 및/또는 프래그먼트들을 표시하기 위한 디스플레이용 프레임 버퍼에 기록된다.
상기 실시예에 대해서는, 상술한 바와 같이, 또 이 기술분야의 당업자가 알 수 있는 것처럼, RGB 컬러의 형태의 텍스처 데이터를 참조하여 설명했지만, 본 발명은 휘도 맵 또는 범프 맵 등과 같은, 다른 형태의 텍스처 데이터와, 다른 비텍스처(non-texture) 데이터에도 적용가능하다. 그러한 구성에 있어서, 데이터는 유사한 방식으로 인코딩되거나 디코딩될 수 있지만, 각 데이터 값은 예를 들면 컬러보다는, 휘도값 또는 노멀 벡터 등을 나타낼 것이다.
대신, 본 발명은, 예를 들면, 단일 성분(그레이 스케일) 텍스처들을 나타내기 위해서 유리하게 사용될 수 있다. 이것은 본 발명의 포맷이 컬러를 나타내는 매우 적은 비트를 사용할 수 있어, 단일 성분 텍스처들에 대한 재생된 텍스처 품질도 좋을 수 있기 때문이다.
이와 같이, 바람직한 실시예에 있어서는, 인코딩 및 디코딩 프로세스는, 바람직하게는 광택 맵, 알파 맵, 변위(displacement) 맵 및 시차(parallax) 맵 중의 하나 혹은 그 이상, 바람직하게는 모두와 같은, 바람직하게는 단일 성분 디테일 맵의 어떤 타입과 같은, 단일 성분 데이터에 대해서 사용된다. 이 경우, 각 인코딩된 텍스처 데이터 블록(5)에 포함된 베이스 데이터 값(20)은, 적절한 광택 혹은 알파 등일 것이고, 값 및 차분 값들은 본질적으로 데이터 요소의 "참" 값과, 텍스처 데이터 요소에 대한 업스케일된 재생된 데이터 값 간의 에러(에 대한 근사치)를 나타낼 것이다.
또 다른 바람직한 실시예에서는, 상기 실시예의 형태의 인코딩된 텍스처 데이터 블록들의 2세트(즉, 상기 실시예의 형태의 2개의 인코딩된 텍스처들)을 함께 사용해서 한 세트의 텍스처 데이터 요소(텍스처 맵)를 나타낸다. 예를 들면, 노멀 맵의 경우에, 본 실시예의 형태의 2개의 단일 성분 인코딩된 텍스처를 이용해서 예를 들면, 각각 노멀 맵의 X 및 Y 성분을 인코딩할 수 있고, Z 성분은 (X, Y, Z)가 단위 벡터라는 것을 아는 것으로부터 디코더에 의해 재구성된다. 이것은 2bpp의 레이트로 인코딩하는 좋은 노멀 맵을 제공할 수 있다. 마찬가지로, 본 실시예의 형태의 2개의 별도의 텍스처를 이용해서 RGB + 알파 텍스처 맵의 2bpp 인코딩을 제공할 수 있다.
본 실시예는 또한 HDR(High Dynamic Range) 텍스처들을 인코딩하기 위해서 사용될 수 있다. 예를 들면, 단일 성분 HDR 텍스처에 대해서, 한 블록(5)에 대한 베이스 컬러 값(20)을, RGB565 값(16비트 베이스 데이터 값이 사용되는 경우)보다는, L8E8(8비트 부호가 있는 휘도, 8비트 부호가 있는 지수) 값으로서 인코딩해서, 이 블록(5)에 대하여 공통의 베이스 휘도 값 및 지수를 제공할 수 있다. 이 경우에, 텍스처를 디코딩할 때 베이스 및 차분 값들을 조합해서 얻은 값을, 지수의 거듭제곱에 2가 곱해진 후에, 255.Of로 나눠지는 부호가 있는 정수값으로서 유지해서, 디코딩된 텍셀에 대한 값으로서 출력되어 사용되는 플로팅 포인트를 제공하는 것이 바람직하다.
본 실시예의 형태의 2개의 텍스처를 이용해서 2bpp로 HDR RGB 데이터 + (0...1) 알파를 인코딩하는 것도 가능할 것이다. 이 경우에, RGB 데이터를, 각 블록에 대해서 RGB565 베이스 컬러 값을 이용해서 인코딩하고, 알파 데이터를, A8E8 베이스 값을 이용해서 별도의 텍스처에서 인코딩하며, 여기서 A는 블록에 대한 베이스 알파 값이지만, "알파" 인코딩된 텍스처에 대한 지수(E) 값은 알파값들에 대한 지수 대신에, 대응하는 RGB 텍스처 블록의 RGB 값에 대한 지수로서 사용된다.
이 경우와 같이, 본 실시예의 형태의 2개의 텍스처를 결합해서 사용하는 경우에는, 본 실시예의 형태의 2개의 별도의 인코딩된 64비트 블록의 각 쌍(예를 들면, RGB 값에 대한 하나와, 알파 값에 대한 하나)은 전체 텍스처의 관련 부분을 나타내는 (예를 들면) 128비트 "메가블록"(예를 들면, 원래의 텍스처의 8×8 텍셀의 대응하는 블록에 대한 RGB + 알파)으로 결합되는 것이 바람직하다.
본 발명은 그것의 바람직한 실시예에 있어서, 적어도 8×8 텍셀 블록당 64비트만(텍셀 평균당 1비트) 사용하는 많은 사용 케이스에 대해서 허용가능한 품질의 풀 RGB 텍스처들(및 다른 텍스처들)의 저장을 허용할 수 있는 블록 기반의 텍스처 인코딩 스킴을 제공한다는 것을 상기로부터 알 수 있다.
이것에 의해 실시간으로 텍스처 맵핑 프리미티브 적용시 그래픽 어플리케이션들이 적은 대역폭을 이용할 수 있고, 이에 따라 내장형 그래픽 시스템이 현재의 산업 표준 텍스처 압축 스킴보다도 훨씬 적은 대역폭을 이용하면서 매우 높은 해상도로 텍스처들을 시각요소들에 적용하는 것을 용하게 할 수 있다. 본 발명에 의해 용이하게 된 낮은 데이터 레이트에 의해 텍스처들이 보다 적은 메모리를 이용하고, 또 그들이 그래픽 프로세서 메모리 퀵커에 업로드(스트림)될 수 있다. (이와 같이, 본 발명은, 그것의 바람직한 실시예에 있어서는 적어도, 스트리밍 애니메이티드(streaming animated)(비디오) 텍스처들에 대해서 특히 유용할 수 있다.) 본 발명은, 그것의 바람직한 실시예에 있어서 적어도, 게임 및 다른 그래픽 어플리케이션에 보다 작은 디스크 공간 풋프린트 및 보다 짧은 로딩 시간도 제공할 수 있다. 또한, 본 발명의 포맷을 이용해서 텍셀 포맷당 1비트에 대해 매우 좋은 품질의 단일 성분 텍스처들을 인코딩할 수 있고, 본 발명의 형태의 2개의 텍스처를 이용해서 예를 들면, 사이즈에 대해 좋은 품질로 텍셀당 2비트로 노멀 데이터 혹은 RGB + 알파 데이터를 인코딩할 수 있다.
따라서, 본 발명은, 높은 압축률을 제공하므로 메모리 자원과 메모리 대역폭이 제한된 디바이스들에 적합하기 때문에, 모바일 게임시장에서 특별한 어플리케이션을 가질 수 있다. 또한, 높은 압축률은 예를 들면 다운로드 시간을 증가시키거나 이 다운로드 시간과 관련되는 네트워크 대역폭 및 최종 사용자 비용 문제를 완화할 수 있기 때문에, 게임 또는 다른 애플리케이션의 다운로딩을 용이하게 한다.
이것은, 본 발명의 바람직한 실시예에 있어서는, 적어도 인코딩되어야 하는 텍스처를 2개의 논리적인 부분, 즉 원래의 텍스처와 텍스처의 저해상도 표현의 업스케일된 버전 간의 차분을 나타내는 전해상도 차분 마스크와 함께, 텍스처의 저해상도 표현으로 분리한 후에, 인코딩된 텍스처 데이터 블록에 대해서 사용되는 한 세트의 차분 마스크값을 나타내는 데이터와 함께, 텍스처의 저해상도 표현으로부터 적절한 베이스 데이터값을 각 인코딩된 텍스처 데이터 블록에서 인코딩함으로써 모두 달성된다.

Claims (24)

  1. 그래픽 처리 시스템에서 사용되는 텍스처 데이터 요소들의 한 세트를 인코딩하는 방법으로서,
    상기 텍스처 데이터 요소들의 세트의 저해상도 표현을 결정하는 단계와,
    원래의 텍스처 데이터 요소들의 세트와, 상기 텍스처 데이터 요소들의 세트의 결정된 저해상도 표현의 업스케일된 버전 간의 차분을 나타내는 전해상도의 차분 데이터의 세트를 결정하는 단계와,
    상기 텍스처 데이터 요소들을 나타내는 텍스처 데이터의 한 개 또는 그 이상의 블록으로서 상기 텍스처 데이터 요소들의 세트를 인코딩하는 단계를 포함하고, 각 그러한 텍스처 데이터의 블록은,
    상기 텍스처 데이터 요소들의 세트로부터 텍스처 데이터 요소들의 하나의 블록을 나타내고,
    상기 텍스처 데이터 요소들의 세트의 결정된 저해상도 표현으로부터 얻은 블록에 대한 베이스 데이터 값을 나타내는 데이터; 및
    상기 텍스처 데이터의 블록이 나타내는 텍스처 데이터 요소들에 대해서 사용되는 데이터 값들을 생성하기 위해서 상기 텍스처 데이터의 블록을 디코딩할 때 사용되는 상기 결정된 차분 데이터의 세트로부터 차분 데이터를 나타내는 데이터를 포함하는 것을 특징으로 하는, 인코딩 방법.
  2. 제 1 항에 있어서,
    텍스처 데이터 블록에 대한 원래의 데이터의 저해상도 표현으로부터 베이스 데이터 값을 나타내는 각 인코딩된 텍스처 블록에 포함되는 데이터는, 상기 텍스처 데이터 요소들의 세트의 저해상도 표현으로부터 직접 얻은 데이터 값으로 구성되는 것을 특징으로 하는, 인코딩 방법.
  3. 제 1 항 또는 제 2 항에 있어서,
    상기 텍스처 데이터 요소들의 세트에 대한 결정된 차분 데이터의 세트는, 상기 텍스처 데이터 요소들의 세트의 각각의 텍스처 데이터 요소에 대해서 각각의 한 개의 차분 데이터 값으로 구성되고, 그 한 개의 차분 데이터 값은 텍스처 데이터 요소의 모든 성분에 대해서 사용되는 것을 특징으로 하는, 인코딩 방법.
  4. 제 1 항 또는 제 2 항에 있어서,
    상기 텍스처 데이터 요소들의 세트에 대해서 사용되는 결정된 차분 값들의 세트는 미리 정해진 기준 차분 값들의 세트로부터 얻은 차분 값들로 구성되는 것을 특징으로 하는, 인코딩 방법.
  5. 제 1 항 또는 제 2 항에 있어서,
    각 인코딩된 텍스처 데이터 블록에 포함되는 사용될 차분 데이터를 나타내는 데이터는, 인코딩된 텍스처 데이터 블록에 대해서 사용될 복수의 미리 정해진 기준 차분 값 블록들의 세트로부터 미리 정해진 차분 값들의 블록 또는 블록들을 나타내는 인덱스 값 또는 값들로 구성되는 것을 특징으로 하는, 인코딩 방법.
  6. 제 5 항에 있어서,
    상기 인덱스 값들은, 인덱스된 블록에 대해서 사용되는 오리엔테이션(orientation); 인덱스된 블록의 값들의 부호가 부정되는지(negated) 아닌지 여부; 및 인덱스된 블록의 값들이 스케일링 인자와 곱해져야 하는지 아닌지 여부 중 하나 또는 그 이상과, 미리 정해진 기준 차분 값 블록들의 세트로 베이스 인덱스를 나타내는 것을 특징으로 하는, 인코딩 방법.
  7. 제 1 항 또는 제 2 항에 있어서,
    인코딩된 텍스처 데이터 블록들의 2세트를 결합하여 이용해서 텍스처 데이터 요소들의 한 세트를 나타내는 것을 포함하는 것을 특징으로 하는, 인코딩 방법.
  8. 텍스처 데이터 블록이 나타내는 텍스처 데이터 요소의 값을 결정하기 위해서 그래픽 처리 시스템에서 사용되는 텍스처 데이터 요소들의 한 세트를 인코딩하는 텍스처 데이터 블록을 디코딩하는 방법으로서,
    상기 블록이 나타내는 텍스처 데이터 요소들의 세트의 저해상도 표현으로부터 얻은 인코딩된 텍스처 데이터 블록에 대한 베이스 데이터 값을 상기 인코딩된 텍스처 데이터 블록으로부터 결정하고, 텍스처 데이터 블록에 대한 결정된 베이스 데이터 값을 이용해서 값이 결정되어야 하는 블록이 나타내는 텍스처 데이터 요소에 대해서 사용되는 베이스 데이터 값을 결정하는 단계와,
    텍스처 데이터의 블록을 디코딩할 때 사용되는 차분 데이터 값을 상기 인코딩된 텍스처 데이터 블록으로부터 결정해서 값이 결정되어야 하는 블록이 나타내는 텍스처 데이터 요소에 대해서 사용되는 데이터 값을 생성하는 단계와,
    텍스처 데이터 요소에 대한 결정된 차분 값과 함께 텍스처 데이터 요소에 대한 결정된 베이스 데이터 값을 이용해서 텍스처 데이터 요소에 대하여 사용되는 데이터 값을 생성하는 단계를 포함하는 것을 특징으로 하는, 디코딩 방법.
  9. 제 8 항에 있어서,
    텍스처 데이터 요소가 속하는 인코딩된 텍스처 데이터 블록에 대한 결정된 베이스 데이터 값과, 상기 텍스처 데이터 요소들의 세트를 나타내는 1개 또는 그 이상의 다른 인코딩된 텍스처 블록들로부터 결정된 베이스 데이터 값 또는 값들을 이용해서,
    값이 결정되어야 하는 텍스처 데이터 요소에 대하여 사용되는 베이스 데이터 값을 결정하는 것을 포함하는 것을 특징으로 하는, 디코딩 방법.
  10. 제 8 항 또는 제 9 항에 있어서,
    텍스처 데이터 요소를 나타내는 인코딩된 텍스처 데이터 블록에서 텍스처 데이터 요소의 위치에 의거한 미리 결정된 차분 데이터 값들의 세트를 나타내는 인덱스 값을 식별하고;
    상기 인덱스 값을 이용해서 메모리로부터 미리 결정된 차분 데이터 값들의 세트를 페치(fetch)하며; 및
    텍스처 데이터 요소의 위치에 의거하여 텍스처 데이터 요소에 대하여 사용할 미리 결정된 차분 값들의 세트로부터 차분 값을 결정함으로써,
    디코딩되어야 하는 텍스처 데이터 요소에 대하여 사용되는 차분 데이터 값을 결정하는 것을 포함하는 것을 특징으로 하는, 디코딩 방법.
  11. 제 10 항에 있어서,
    조작들이 미리 결정된 차분 값들의 세트에 적용될 필요가 있는지를 인덱스 값으로부터 판정하고, 만약 그렇다면, 이들 조작들을 미리 결정된 차분 값들의 세트에 적용하고;
    텍스처 데이터 요소의 위치에 의거하여 이렇게 조작된 미리 결정된 차분 값들의 세트로부터 텍스처 데이터 요소에 대하여 사용할 차분 값을 식별하는 것을 더 포함하는 것을 특징으로 하는, 디코딩 방법.
  12. 그래픽 처리 시스템에서 사용되는 텍스처 데이터 요소들의 한 세트를 인코딩하는 장치로서,
    상기 텍스처 데이터 요소들의 세트의 저해상도 표현을 결정하는 수단과,
    원래의 텍스처 데이터 요소들의 세트와, 상기 텍스처 데이터 요소들의 세트의 결정된 저해상도 표현의 업스케일된 버전 간의 차분을 나타내는 전해상도의 차분 데이터의 세트를 결정하는 수단과,
    상기 텍스처 데이터 요소들을 나타내는 텍스처 데이터의 1개 또는 그 이상의 블록으로서 상기 텍스처 데이터 요소들의 세트를 인코딩하는 수단을 구비하고, 각 그러한 텍스처 데이터의 블록은,
    상기 텍스처 데이터 요소들의 세트로부터 텍스처 데이터 요소들의 한 블록을 나타내고,
    상기 텍스처 데이터 요소들의 세트의 결정된 저해상도 표현으로부터 얻은 블록에 대해서 베이스 데이터 값을 나타내는 데이터; 및
    상기 텍스처 데이터의 블록이 나타내는 텍스처 데이터 요소들에 대해서 사용되는 데이터 값들을 생성하기 위해서 상기 텍스처 데이터의 블록을 디코딩할 때 사용되는 결정된 차분 데이터의 세트로부터 차분 데이터를 나타내는 데이터를 포함하는 것을 특징으로 하는, 인코딩 장치.
  13. 제 12 항에 있어서,
    텍스처 데이터 블록에 대한 원래의 데이터의 저해상도 표현으로부터 베이스 데이터 값을 나타내는 각 인코딩된 텍스처 블록에 포함되는 데이터는, 상기 텍스처 데이터 요소들의 세트의 저해상도 표현으로부터 직접 얻은 데이터 값을 포함하는 것을 특징으로 하는, 인코딩 장치.
  14. 제 12 항 또는 제 13 항에 있어서,
    상기 텍스처 데이터 요소들의 세트에 대한 결정된 차분 데이터의 세트는, 상기 텍스처 데이터 요소들의 세트의 각각의 텍스처 데이터 요소에 대한 각 한 개의 차분 데이터 값으로 구성되고, 그 한 개의 차분 데이터 값은 텍스처 데이터 요소의 모든 성분들에 대하여 사용되는 것을 특징으로 하는, 인코딩 장치.
  15. 제 12 항 또는 제 13 항에 있어서,
    상기 텍스처 데이터 요소들의 세트에 대해서 사용되는 결정된 차분 값들의 세트는, 미리 정해진 기준 차분 값들의 한 세트로부터 얻은 차분 값들로 구성되는 것을 특징으로 하는, 인코딩 장치.
  16. 제 12 항 또는 제 13 항에 있어서,
    각 인코딩된 텍스처 데이터 블록에 포함되는 사용될 차분 데이터를 나타내는 데이터는, 인코딩된 텍스처 데이터 블록에 대해서 사용되는 복수의 미리 정해진 기준 차분 값 블록들의 한 세트로부터 미리 정해진 차분 값들의 블록 또는 블록들을 나타내는 인덱스 값 또는 값들로 구성되는 것을 특징으로 하는, 인코딩 장치.
  17. 제 16 항에 있어서,
    상기 인덱스 값들은 인덱스된 블록에 대해서 사용되는 오리엔테이션; 인덱스된 블록의 값들의 부호가 부정되는지 아닌지의 여부; 및 인덱스된 블록의 값들이 스케일링 인자와 곱해져야 하는지 아닌지 여부 중 하나 또는 그 이상과, 미리 정해진 기준 차분 값 블록들의 세트로 베이스 인덱스를 나타내는 것을 특징으로 하는, 인코딩 장치.
  18. 텍스처 데이터 블록이 나타내는 텍스처 데이터 요소의 값을 결정하기 위해서 그래픽 처리 시스템에서 사용되는 텍스처 데이터 요소들의 한 세트를 인코딩하는 텍스처 데이터 블록을 디코딩하는 장치로서, 상기 장치는,
    블록이 나타내는 텍스처 데이터 요소들의 세트의 저해상도 표현으로부터 얻은 인코딩된 텍스처 데이터 블록에 대한 베이스 데이터 값을 인코딩된 텍스처 데이터 블록으로부터 결정하고, 텍스처 데이터 블록에 대한 결정된 베이스 데이터 값을 이용해서 값이 결정되어야 하는 블록이 나타내는 텍스처 데이터 요소에 대하여 사용되는 베이스 데이터 값을 결정하는 수단과,
    텍스처 데이터의 블록을 디코딩할 때 사용되는 차분 데이터 값을 인코딩된 텍스처 데이터 블록으로부터 결정하여 값이 결정되어야 하는 블록이 나타내는 텍스처 데이터 요소에 대하여 사용되는 데이터 값을 생성하는 수단과,
    텍스처 데이터 요소에 대한 결정된 차분 값과 함께 텍스처 데이터 요소에 대한 결정된 베이스 데이터 값을 이용하여 텍스처 데이터 요소에 대하여 사용되는 데이터 값을 생성하는 수단을 구비하는 것을 특징으로 하는, 디코딩 장치.
  19. 제 18 항에 있어서,
    값이 결정되어야 하는 텍스처 데이터 요소에 대하여 사용되는 베이스 데이터 값을 결정하는 수단은,
    텍스처 데이터 요소가 속하는 인코딩된 텍스처 데이터 블록에 대한 결정된 베이스 데이터 값과, 텍스처 데이터 요소들의 세트를 나타내는 1개 또는 그 이상의 다른 인코딩된 텍스처 데이터 블록들로부터 결정된 베이스 데이터 값 또는 값들을 이용해서,
    값이 결정되어야 하는 텍스처 데이터 요소에 대하여 사용되는 베이스 데이터 값을 결정하는 것을 특징으로 하는, 디코딩 장치.
  20. 제 18 항 또는 제 19 항에 있어서,
    디코딩되어야 하는 텍스처 데이터 요소에 대하여 사용되는 차분 데이터 값을 결정하는 수단은,
    텍스처 데이터 요소를 나타내는 인코딩된 텍스처 데이터 블록에서, 텍스처 데이터 요소의 위치에 의거한 미리 결정된 차분 데이터 값들의 세트를 나타내는 인덱스 값을 식별하고,
    이 인덱스 값을 이용해서 메모리로부터 미리 결정된 차분 데이터 값들의 세트를 페치(fetch)하며;
    텍스처 데이터 요소의 위치에 의거하여 텍스처 데이터 요소에 대해 사용할 미리 결정된 차분 값들의 세트로부터 차분 값을 결정함으로써,
    디코딩되어야 하는 텍스처 데이터 요소에 대해서 사용되는 차분 데이터 값을 결정하는 것을 특징으로 하는, 디코딩 장치.
  21. 제 20 항에 있어서,
    어떤 조작들이 미리 결정된 차분 값들의 세트에 적용될 필요가 있는지의 여부를 인덱스 값으로부터 판정하고, 만약 그렇다면, 이들 조작들을 미리 결정된 차분 값들의 세트에 적용하는 수단과,
    텍스처 데이터 요소의 위치에 의거하여 이렇게 조작된 미리 결정된 차분 값들의 세트로부터 텍스처 데이터 요소에 대해서 사용할 차분 값을 식별하는 수단을 더 구비하는 것을 특징으로 하는, 디코딩 장치.
  22. 청구항 12, 13, 18 또는 19 중의 어느 한 항의 장치를 구비하는 그래픽 프로세서.
  23. 그래픽 처리 시스템에서 사용되는 텍스처 데이터 요소들의 한 세트를 나타내는 텍스처 데이터의 블록으로서,
    상기 텍스처 데이터 요소들의 세트의 결정된 저해상도 표현으로부터 얻은 블록에 대한 베이스 데이터 값을 나타내는 데이터; 및
    원래의 텍스처 데이터 요소들의 세트와, 상기 텍스처 데이터 요소들의 세트의 결정된 저해상도 표현의 업스케일된 버전 간의 차분을 나타내고, 상기 텍스처 데이터의 블록이 나타내는 텍스처 데이터 요소들에 대해서 사용되는 데이터 값들을 생성하기 위해서 상기 텍스처 데이터의 블록을 디코딩할 때 텍스처 데이터 블록이 나타내는 텍스처 데이터 요소들에 대해서 사용되는 전해상도의 차분 데이터의 세트로부터 얻은 차분 데이터를 나타내는 데이터를 포함하는 것을 특징으로 하는, 텍스처 데이터의 블록.
  24. 프로그램이 데이터 처리 수단 상에서 실행될 때, 청구항 1, 2, 8 또는 9 중 어느 한 항의 방법을 실행하기 위한 컴퓨터 소프트웨어 코드를 포함하는 컴퓨터 프로그램를 기억한 컴퓨터 판독가능한 기록매체.
KR1020140027512A 2013-03-15 2014-03-10 데이터를 인코딩 및 디코딩하는 방법 및 장치 KR102164847B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US13/836,887 2013-03-15
US13/836,887 US10147202B2 (en) 2013-03-15 2013-03-15 Methods of and apparatus for encoding and decoding data

Publications (2)

Publication Number Publication Date
KR20140113379A true KR20140113379A (ko) 2014-09-24
KR102164847B1 KR102164847B1 (ko) 2020-10-14

Family

ID=50634829

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020140027512A KR102164847B1 (ko) 2013-03-15 2014-03-10 데이터를 인코딩 및 디코딩하는 방법 및 장치

Country Status (4)

Country Link
US (1) US10147202B2 (ko)
KR (1) KR102164847B1 (ko)
CN (1) CN104050688B (ko)
GB (1) GB2514653B (ko)

Families Citing this family (26)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2491688B (en) 2011-05-05 2014-08-27 Advanced Risc Mach Ltd Method of and apparatus for encoding and decoding data
US9596280B2 (en) 2013-11-11 2017-03-14 Amazon Technologies, Inc. Multiple stream content presentation
US9582904B2 (en) 2013-11-11 2017-02-28 Amazon Technologies, Inc. Image composition based on remote object data
US9604139B2 (en) 2013-11-11 2017-03-28 Amazon Technologies, Inc. Service for generating graphics object data
US9641592B2 (en) 2013-11-11 2017-05-02 Amazon Technologies, Inc. Location of actor resources
US9634942B2 (en) 2013-11-11 2017-04-25 Amazon Technologies, Inc. Adaptive scene complexity based on service quality
US9805479B2 (en) 2013-11-11 2017-10-31 Amazon Technologies, Inc. Session idle optimization for streaming server
US9578074B2 (en) 2013-11-11 2017-02-21 Amazon Technologies, Inc. Adaptive content transmission
US9679348B2 (en) * 2014-05-15 2017-06-13 Disney Enterprises, Inc. Storage and compression methods for animated images
KR102247565B1 (ko) * 2014-09-12 2021-05-03 삼성전자 주식회사 렌더링 방법 및 장치
US20160112724A1 (en) * 2014-10-15 2016-04-21 Qualcomm Incorporated Hrd descriptor and buffer model of data streams for carriage of hevc extensions
US10212434B2 (en) 2015-01-30 2019-02-19 Qualcomm Incorporated Palette entries coding in video coding
KR102060871B1 (ko) * 2015-04-08 2019-12-30 에이치에프아이 이노베이션 인크. 비디오 코딩에서의 팔레트 모드 콘텍스트 코딩 및 이진화를 위한 방법
US10880566B2 (en) * 2015-08-28 2020-12-29 Boe Technology Group Co., Ltd. Method and device for image encoding and image decoding
KR102477264B1 (ko) * 2015-09-22 2022-12-13 삼성전자주식회사 텍스쳐를 처리하는 방법 및 장치
GB2552323B (en) * 2016-07-18 2020-04-29 Imagination Tech Ltd Mip map compression
KR20180056313A (ko) * 2016-11-18 2018-05-28 삼성전자주식회사 텍스처를 처리하는 방법 및 장치
WO2018111014A1 (en) * 2016-12-14 2018-06-21 Samsung Electronics Co., Ltd. Method and apparatus for rendering object using mipmap including plurality of textures
GB2584764B (en) * 2017-04-28 2021-12-29 Imagination Tech Ltd Decoder unit for texture decompression
TWI694271B (zh) * 2018-05-20 2020-05-21 宏達國際電子股份有限公司 操作方法、頭戴式裝置及追蹤系統
US10931853B2 (en) 2018-10-18 2021-02-23 Sony Corporation Enhanced color reproduction for upscaling
CN117336469A (zh) * 2019-04-12 2024-01-02 北京字节跳动网络技术有限公司 根据基于矩阵的帧内预测的变换编码
US11049216B1 (en) 2020-01-21 2021-06-29 Arm Limited Graphics processing systems
US11030783B1 (en) 2020-01-21 2021-06-08 Arm Limited Hidden surface removal in graphics processing systems
EP4113382A4 (en) 2020-09-15 2023-08-30 Samsung Electronics Co., Ltd. ELECTRONIC DEVICE, ITS CONTROL METHOD AND SYSTEM
US11770584B1 (en) * 2021-05-23 2023-09-26 Damaka, Inc. System and method for optimizing video communications based on device capabilities

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20100046846A1 (en) * 2006-12-20 2010-02-25 Sony Computer And/or Decompression Image compression and/or decompression

Family Cites Families (36)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE2440768C3 (de) 1974-08-26 1982-03-18 Philips Patentverwaltung Gmbh, 2000 Hamburg Verfahren und Vorrichtung zur Datenkompression für die Faksimile-Übertragung graphischer Information
US4969204A (en) 1989-11-29 1990-11-06 Eastman Kodak Company Hybrid residual-based hierarchical storage and display method for high resolution digital images in a multiuse environment
US5047853A (en) 1990-03-16 1991-09-10 Apple Computer, Inc. Method for compresssing and decompressing color video data that uses luminance partitioning
US5046119A (en) 1990-03-16 1991-09-03 Apple Computer, Inc. Method and apparatus for compressing and decompressing color video data with an anti-aliasing mode
US5218431A (en) * 1990-04-26 1993-06-08 The United States Of America As Represented By The Secretary Of The Air Force Raster image lossless compression and decompression with dynamic color lookup and two dimensional area encoding
US5227789A (en) 1991-09-30 1993-07-13 Eastman Kodak Company Modified huffman encode/decode system with simplified decoding for imaging systems
US6236405B1 (en) 1996-07-01 2001-05-22 S3 Graphics Co., Ltd. System and method for mapping textures onto surfaces of computer-generated objects
US6738058B1 (en) 1997-04-30 2004-05-18 Ati Technologies, Inc. Method and apparatus for three dimensional graphics processing
US5956431A (en) 1997-10-02 1999-09-21 S3 Incorporated System and method for fixed-rate block-based image compression with inferred pixel values
US6775417B2 (en) 1997-10-02 2004-08-10 S3 Graphics Co., Ltd. Fixed-rate block-based image compression with inferred pixel values
JP2001507823A (ja) 1997-10-28 2001-06-12 コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ 画像の圧縮及び復元
JP2000090249A (ja) * 1998-09-14 2000-03-31 Fujitsu Ltd 画像処理装置および画像処理方法およびコンピュータを画像処理装置として動作させるためのプログラムが記録されたコンピュータ読み取り可能な記録媒体
US6298169B1 (en) 1998-10-27 2001-10-02 Microsoft Corporation Residual vector quantization for texture pattern compression and decompression
GB2348334A (en) 1999-03-22 2000-09-27 Videologic Ltd A method of compressing digital image data
EP1442607A1 (en) 2001-10-26 2004-08-04 Koninklijke Philips Electronics N.V. Spatial scalable compression
GB0128888D0 (en) * 2001-12-03 2002-01-23 Imagination Tech Ltd Method and apparatus for compressing data and decompressing compressed data
US6940511B2 (en) 2002-06-07 2005-09-06 Telefonaktiebolaget L M Ericsson (Publ) Graphics texture processing methods, apparatus and computer program products using texture compression, block overlapping and/or texture filtering
SE0401850D0 (sv) * 2003-12-19 2004-07-08 Ericsson Telefon Ab L M Image processing
SE0401852D0 (sv) 2003-12-19 2004-07-08 Ericsson Telefon Ab L M Image processing
SE526226C2 (sv) * 2003-12-19 2005-08-02 Ericsson Telefon Ab L M Bildbehandling
GB2439481B (en) 2005-03-04 2008-08-06 Arm Norway As Method of and apparatus for encoding data
GB0504570D0 (en) 2005-03-04 2005-04-13 Falanx Microsystems As Method of and apparatus for encoding data
US7983498B1 (en) 2007-08-06 2011-07-19 Nvidia Corporation Low dynamic range 3-channel color compression
US8155184B2 (en) * 2008-01-16 2012-04-10 Sony Corporation Video coding system using texture analysis and synthesis in a scalable coding framework
CN101953166B (zh) 2008-02-21 2013-06-05 法国电信公司 被划分为像素块的图像或图像序列的编码和解码
JP4354510B1 (ja) 2008-05-01 2009-10-28 株式会社コナミデジタルエンタテインメント 画像処理装置、画像処理方法、ならびに、プログラム
CN101447084B (zh) * 2008-12-19 2011-01-19 北京师范大学 一种基于Quardtree的三维模型纹理压缩编/解码方法
CN101511017B (zh) * 2009-03-20 2011-02-09 西安电子科技大学 基于网格的立体视频空间可分级编码器及其编码方法
FR2947134A1 (fr) 2009-06-23 2010-12-24 France Telecom Procedes de codage et de decodages d'images, dispositifs de codage et de decodage, flux de donnees et programme d'ordinateur correspondants.
CN101710993B (zh) * 2009-11-30 2012-04-11 北京大学 基于块的自适应超分辨率视频处理方法及系统
US9153064B2 (en) 2009-12-23 2015-10-06 Intel Corporation Grouping pixels to be textured
US8605104B1 (en) 2009-12-31 2013-12-10 Nvidia Corporation Threshold-based lossy reduction color compression
WO2012030262A1 (en) 2010-09-03 2012-03-08 Telefonaktiebolaget Lm Ericsson (Publ) Co-compression and co-decompression of data values
GB2491688B (en) 2011-05-05 2014-08-27 Advanced Risc Mach Ltd Method of and apparatus for encoding and decoding data
US9478069B2 (en) * 2012-01-25 2016-10-25 St-Ericsson Sa Compression format conversion for texture data
US9177415B2 (en) 2013-01-30 2015-11-03 Arm Limited Methods of and apparatus for encoding and decoding data

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20100046846A1 (en) * 2006-12-20 2010-02-25 Sony Computer And/or Decompression Image compression and/or decompression

Also Published As

Publication number Publication date
US10147202B2 (en) 2018-12-04
CN104050688B (zh) 2019-06-04
GB2514653B (en) 2017-07-26
GB2514653A (en) 2014-12-03
US20140267283A1 (en) 2014-09-18
CN104050688A (zh) 2014-09-17
KR102164847B1 (ko) 2020-10-14
GB201404642D0 (en) 2014-04-30

Similar Documents

Publication Publication Date Title
KR102164847B1 (ko) 데이터를 인코딩 및 디코딩하는 방법 및 장치
JP5341968B2 (ja) データをエンコードする方法および装置
US10291926B2 (en) Method and apparatus for compressing and decompressing data
US9582845B2 (en) Method of and apparatus for encoding and decoding data
KR102137443B1 (ko) 데이터 인코딩 및 디코딩 방법 및 장치
US9177415B2 (en) Methods of and apparatus for encoding and decoding data
KR20160019387A (ko) 데이터 처리 시스템
GB2550150A (en) Data processing systems
WO2008123823A1 (en) Vector-based image processing
GB2439482A (en) Encoding Texture Data
US7983498B1 (en) Low dynamic range 3-channel color compression
CN106717002B (zh) 基于块的混合压缩
Russell HDR Image-Based Lighting on the Web
Pres InsightE
Andujar et al. Locally-Adaptive Texture Compression.

Legal Events

Date Code Title Description
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant