KR20180068879A - 복수의 텍스처들을 포함하는 밉맵을 이용하여 객체를 렌더링하기 위한 방법 및 장치 - Google Patents

복수의 텍스처들을 포함하는 밉맵을 이용하여 객체를 렌더링하기 위한 방법 및 장치 Download PDF

Info

Publication number
KR20180068879A
KR20180068879A KR1020170171286A KR20170171286A KR20180068879A KR 20180068879 A KR20180068879 A KR 20180068879A KR 1020170171286 A KR1020170171286 A KR 1020170171286A KR 20170171286 A KR20170171286 A KR 20170171286A KR 20180068879 A KR20180068879 A KR 20180068879A
Authority
KR
South Korea
Prior art keywords
texel
index
level
texture
mipmap
Prior art date
Application number
KR1020170171286A
Other languages
English (en)
Other versions
KR102569446B1 (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 삼성전자주식회사
Priority to EP17881808.4A priority Critical patent/EP3504685B8/en
Priority to US15/842,349 priority patent/US10460502B2/en
Priority to PCT/KR2017/014762 priority patent/WO2018111014A1/en
Publication of KR20180068879A publication Critical patent/KR20180068879A/ko
Application granted granted Critical
Publication of KR102569446B1 publication Critical patent/KR102569446B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/04Texture mapping
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/22Indexing; Data structures therefor; Storage structures
    • G06F16/2228Indexing structures
    • G06F16/2237Vectors, bitmaps or matrices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/20Processor architectures; Processor configuration, e.g. pipelining
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/60Memory management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T11/002D [Two Dimensional] image generation
    • G06T11/40Filling a planar surface by adding surface attributes, e.g. colour or texture
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/005General purpose rendering architectures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2210/00Indexing scheme for image generation or computer graphics
    • G06T2210/36Level of detail
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2215/00Indexing scheme for image rendering
    • G06T2215/12Shadow map, environment map

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Graphics (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Image Generation (AREA)

Abstract

레벨 0부터 레벨 N까지 감소하는 해상도들을 갖는 N+1 개의 텍스처들을 포함하는 밉맵을 이용하여 객체를 렌더링하는 방법 및 장치가 개시된다. 렌더링되는 픽셀의 좌표를 획득하는 단계, 획득된 좌표와 관련된 인덱스 값을 획득하는 단계, 인덱스 값에 의해 식별된 레벨의 텍스처 내의 텍셀들 중에서 획득된 좌표와 관련된 텍셀에 대하여 캐싱된 텍셀의 이용가능성을 판단하는 단계, 및 캐싱된 텍셀이 이용가능한 경우, 캐싱된 택셀을 이용하여 픽셀을 렌더링하는 단계에 의해 객체가 렌더링될 수 있다. 레벨 0부터 레벨 N까지 감소하는 해상도들을 갖는 N+1 개의 텍스처들을 포함하는 밉맵에 대한 복수의 인덱스 값들을 생성하는 방법 및 장치가 또한 개시된다.

Description

복수의 텍스처들을 포함하는 밉맵을 이용하여 객체를 렌더링하기 위한 방법 및 장치 {Method and apparatus for rendering an object using a mipmap comprising a plurality of textures}
본 발명은 밉맵 렌더링에 관한 것으로, 보다 상세하게는 복수의 텍스처들을 포함하는 밉맵을 이용하여 객체를 렌더링하기 위한 방법 및 장치에 관한 것이다.
밉맵은, 메모리 액세스를 더욱 효율적으로 만듦으로써, 렌더링 속도를 높이기 위해 실시간 렌더링 중에 흔히 사용된다. 밉맵은 상이한 해상도에서 동일한 텍스처(이미지)의 복수의 버전을 포함한다. 고해상도 밉맵 이미지는 카메라에 가까운 물체를 렌더링 할 때 사용될 것이고, 저해상도 밉맵 이미지는 카메라에서 멀리 떨어져 있는 물체를 렌더링 할 때 사용될 것이다. 이 방법은, 고해상도 텍스처가 메모리에 로드된 다음 해상도를 낮추기 위해 다운 필터링될 것을 요구하는, 실시간으로 고해상도 버전의 텍스처를 다운 스케일링하는 것보다 효율적이다.
비효율적인 메모리 사용은 느린 렌더링과 높은 전력 소비를 야기하기 때문에, 실시간 렌더링 처리의 성능은 메모리 액세스에 크게 의존한다. 객체가 카메라로부터 더 멀리 있는 경우에 저해상도 밉맵 이미지를 사용함으로써, 객체를 렌더링하는 경우에 더 적은 텍스처 요소(텍셀)가 로드될 필요가 있고, 메모리 액세스의 수를 감소시킨다. 그러나, 현재의 밉맵 렌더링 방법에 대한 개선은 여전히 바람직할 것이다.
본 발명은 이러한 상황에서 이루어진다.
본 개시는, 인덱스 값에 따른 밉맵 레벨의 텍스처 내에서 캐싱된 택셀을 이용하여 객체의 픽셀을 렌더링하기 위한 방법 및 장치를 제안한다.
일 실시예에 따른 레벨 0부터 레벨 N까지 감소하는 해상도들을 갖는 N+1 개의 텍스처들을 포함하는 밉맵을 이용하여 객체를 렌더링하는 방법은, 렌더링되는 픽셀의 좌표를 획득하는 단계, 상기 획득된 좌표와 관련된 인덱스 값을 획득하는 단계, 상기 인덱스 값에 의해 식별된 레벨의 텍스처 내의 텍셀들 중에서 상기 획득된 좌표와 관련된 텍셀에 대하여 캐싱된 텍셀의 이용가능성을 판단하는 단계, 및 상기 캐싱된 텍셀이 이용가능한 경우, 상기 캐싱된 택셀을 이용하여 상기 픽셀을 렌더링하는 단계를 포함할 수 있다.
일 실시예에 따르면, 상기 인덱스 값은, 상기 레벨 0의 텍스처의 해상도와 동일한 해상도를 갖는 인덱스 맵 내의 상이한 위치에 각각이 저장된 복수의 인덱스 값들 중 하나일 수 있다.
다른 실시예에 따르면, 상기 인덱스 값은, 상기 레벨 0의 텍스처의 해상도보다 낮은 해상도를 갖는 인덱스 맵 내의 상이한 위치에 각각이 저장된 복수의 인덱스 값들 중 하나일 수 있다.
일 실시예에 따르면, 상기 인덱스 값의 비트 심도는 상기 밉맵에 포함된 텍스처 레벨들의 총 개수보다 작을 수 있다.
일 실시예에 따르면, 상기 밉맵은, 각각이 상기 N+1 개의 텍스처들을 포함하는 소정 개수의 텍스처 세트들을 포함하고, 상기 인덱스 값은 상기 소정 개수의 텍스처 세트들과 관련된 인덱스 맵에 저장되고, 상기 인덱스 맵의 각각의 위치에는, 각각이 상기 소정 개수의 텍스처 세트들 중 상이한 하나와 관련된 상기 소정 개수의 인덱스 값들이 저장되고, 상기 소정 개수의 인덱스 값들 중 상기 렌더링되는 픽셀에 이용되는 텍스처 세트와 관련된 상기 인덱스 값이 획득될 수 있다.
일 실시예에 따르면, 상기 인덱스 맵의 각각의 위치에 저장된 상기 소정 개수의 인덱스 값들 각각은 상이한 텍스처 채널에 저장될 수 있다.
일 실시예에 따르면, 상기 인덱스 맵의 각각의 위치에 저장된 상기 소정 개수의 인덱스 값들은 연결된(concatenated) 비트 스트링으로서 저장되고, 상기 렌더링되는 픽셀에 이용되는 텍스처 세트와 관련된 상기 인덱스 값을 정의하는 비트 스트링으로부터 하나 이상의 비트를 선택하기 위해 비트 마스크가 사용될 수 있다.
일 실시예에 따른 레벨 0부터 레벨 N까지 감소하는 해상도들을 갖는 N+1 개의 텍스처들을 포함하는 밉맵에 대한 복수의 인덱스 값들을 생성하는 방법은, 상기 N+1 개의 텍스처들 중 제1 레벨의 텍스처를 선택하는 단계, 상기 제1 레벨의 텍스처 내의 제1 텍셀과, 상기 제1 레벨보다 높은 제2 레벨의 텍스처 내의 제2 텍셀이 매칭하는지 여부를 결정하는 단계로서, 상기 제2 텍셀의 위치는 상기 제1 텍셀의 위치에 대응하는 것인, 상기 결정하는 단계, 상기 제1 텍셀과 상기 제2 텍셀이 매칭하지 않으면, 상기 제1 레벨을 식별하는 인덱스 값을 상기 제1 텍셀에 대한 인덱스 값으로 설정하는 단계, 상기 제1 텍셀과 상기 제2 텍셀이 매칭하면, 상기 제1 텍셀과 매칭하지 않는 상기 제2 텍셀이 발생할 때까지 상기 제2 레벨을 소정 값만큼 반복적으로 증가시키면서 상기 제1 텍셀과 상기 제2 텍셀이 매칭하는지 여부의 결정을 반복하는 단계, 상기 제1 텍셀과 매칭하지 않는 상기 제2 텍셀이 발생하지 않으면, 소정 레벨까지 최종적으로 증가된 제2 레벨을 식별하는 인덱스 값을 상기 제1 텍셀에 대한 인덱스 값으로 설정하는 단계, 상기 제1 텍셀과 매칭하지 않는 상기 제2 텍셀이 발생하면, 상기 제1 텍셀과 매칭하지 않는 상기 제2 텍셀이 발생된 제2 레벨보다 상기 소정 값만큼 감소된 레벨을 식별하는 인덱스 값을 상기 제1 텍셀에 대한 인덱스 값으로 설정하는 단계, 및 상기 제1 레벨의 텍스처의 나머지 텍셀들에 대해 이전 단계들을 적용함으로써 상기 제1 레벨의 텍스처의 상기 나머지 텍셀들에 대한 인덱스 값들을 설정하는 단계를 포함할 수 있다.
일 실시예에 따르면, 상기 제1 레벨은 레벨 0일 수 있다.
일 실시예에 따르면, 상기 제1 텍셀의 텍셀 값과 상기 제2 텍셀의 텍셀 값이 임계 값 미만의 정도로 상이한 경우, 상기 제1 텍셀과 상기 제2 텍셀이 매칭하는 것으로 결정될 수 있다.
일 실시예에 따르면, 상기 설정된 인덱스 값들의 비트 심도는, 상기 밉맵에 포함된 텍스처 레벨들의 총 개수보다 작을 수 있다.
일 실시예에 따르면, 상기 설정된 인덱스 값들은 상기 제1 레벨의 텍스처의 해상도와 동일한 해상도를 갖는 제1 인덱스 맵을 정의하고, 상기 방법은, 각각이 소정 개수의 인덱스 값들을 포함하는 복수의 영역들로 상기 제1 인덱스 맵을 분할하는 것, 및 상기 제1 인덱스 맵의 상기 분할된 복수의 영역들 각각에 포함된 소정 개수의 상기 인덱스 값들에 기초하여, 상기 분할된 복수의 영역들 각각에 대응하는 제2 인덱스 맵 내의 등가 위치와 연관된 인덱스 값을 설정하는 것에 의해 상기 제1 인덱스 맵의 해상도보다 낮은 해상도를 갖는 상기 제2 인덱스 맵을 생성하는 단계를 더 포함할 수 있다.
일 실시예에 따르면, 상기 제2 인덱스 맵 내의 상기 등가 위치와 연관된 상기 인덱스 값은, 상기 제1 인덱스 맵의 상기 분할된 영역 내에 포함된 상기 소정 개수의 상기 인덱스 값들 중에서 최소 값과 동일하도록 설정될 수 있다.
일 실시예에 따른 레벨 0부터 레벨 N까지 감소하는 해상도들을 갖는 N+1 개의 텍스처들을 포함하는 밉맵을 이용하여 객체를 렌더링하는 장치는, 상기 텍스처들과 연관된 텍셀들을 저장하기 위한 제1 메모리, 상기 제1 메모리보다 빠른 액세스 속도를 갖고, 상기 제1 메모리로부터 텍셀을 캐싱하기 위한 제2 메모리, 및 렌더링 유닛으로서, 렌더링되는 픽셀의 좌표를 획득하고, 상기 획득된 좌표와 관련된 인덱스 값을 획득하고, 상기 인덱스 값에 의해 식별된 레벨의 텍스처 내의 텍셀들 중에서 상기 획득된 좌표와 관련된 텍셀에 대하여 상기 제2 메모리 내의 캐싱된 텍셀의 이용가능성을 판단하고, 상기 캐싱된 텍셀이 이용가능한 경우, 상기 캐싱된 택셀을 이용하여 상기 픽셀을 렌더링하도록 구성된 상기 렌더링 유닛을 포함할 수 있다.
일 실시예에 따른 레벨 0부터 레벨 N까지 감소하는 해상도들을 갖는 N+1 개의 텍스처들을 포함하는 밉맵을 이용하여 객체를 렌더링하는 방법 및 장치는, 픽셀을 렌더링 할 때, 인덱스 값에 따른 밉맵 레벨의 텍스처 내에서 캐싱된 택셀을 이용하므로, 렌더링 속도를 증가시키고 전력 소모를 줄일 수 있다.
도 1은 래스터화 된 삼각형의 일례를 도시한다.
도 2는 본 발명의 일 실시예에 따라, 텍스처 매핑 후의 도 1의 래스터화 된 삼각형을 도시한다.
도 3은 본 발명의 일 실시예에 따라, 도 1의 래스터화 된 삼각형을 렌더링하기 위한 밉맵을 도시한다.
도 4는 본 발명의 일 실시예에 따라, 도 3의 밉맵에 대한 인덱스 맵을 도시한다.
도 5는 본 발명의 일 실시예에 따라, 밉맵을 이용하여 객체를 렌더링하는 방법을 나타내는 흐름도이다.
도 6은 본 발명의 일 실시예에 따라, 밉맵에 대한 복수의 인덱스 값을 생성하는 방법을 나타내는 흐름도이다.
도 7은 본 발명의 일 실시예에 따라, 고해상도 인덱스 맵으로부터 저해상도 인덱스 맵을 생성하는 방법을 나타내는 흐름도이다.
도 8은 본 발명의 일 실시예에 따라, 레벨 0에서 텍스처의 해상도와 동일한 해상도를 갖는 인덱스 맵을 생성하는 방법을 나타내는 흐름도이다.
도 9는 본 발명의 일 실시예에 따라, 밉맵을 이용하여 객체를 렌더링하기 위한 장치를 도시한다.
도 10은 본 발명의 일 실시예에 따라, 밉맵에 대한 복수의 인덱스 값을 생성하기 위한 장치를 도시한다.
도 11은 본 발명의 일 실시예에 따라, 표면 렌더링을 위한 복수의 텍스처 세트를 도시한다.
이하의 상세한 설명에서, 단지 예시로서, 본 발명의 특정 예시적인 실시예들만이 도시되고 설명되었다. 당업자가 알 수 있는 바와 같이, 설명된 실시예들은 본 발명의 범위를 벗어나지 않으면서 다양한 방식으로 수정될 수도 있다. 따라서, 도면 및 설명은 본질적으로 예시적인 것이며 제한적이지 않은 것으로 간주되어야 한다. 명세서 전체에 걸쳐 동일한 참조 부호는 동일한 구성 요소를 지칭한다.
도 1 내지 5를 참조하여, 본 발명의 일 실시예에 따라 밉맵을 이용하여 객체를 렌더링하는 방법이 설명될 것이다. 본 실시예에서, 래스터화된 삼각형을 렌더링하는 방법이 일례로서 설명된다. 다른 실시예에서, 유사한 방법이 다른 유형의 다각형을 렌더링하는데 사용될 수 있다. 도 1은 래스터화 된 삼각형의 일례를 도시한다. 도 1에서, 음영 처리된 픽셀(101)은 래스터화 된 삼각형(102)의 일부로서 렌더링 될 픽셀을 나타낸다. 도 2는 도 3의 밉맵으로부터 레벨 0 텍스처를 이용하여 텍스처 매핑을 수행한 후의 도 1의 래스터화 된 삼각형을 도시한다. 도 2에서, 각 픽셀(201) 내의 숫자는 그 픽셀에 적용된 텍스처 값을 나타낸다. 유사하게, 도 3에서, 각 텍셀 내의 숫자는 그 좌표가 텍셀 내에 있는 픽셀을 렌더링 할 때 사용할 텍스처 값을 나타낸다.
도 3은 본 발명의 일 실시예에 따라, 도 1의 래스터화 된 삼각형을 렌더링하기 위한 밉맵을 도시한다. 본 실시예에서, 밉맵은 4 개의 상이한 해상도 레벨 0 내지 3에 있는 4 개의 텍스처(300, 301, 302, 303)를 포함하며, 여기서 레벨 0은 텍스처의 최고 해상도 버전을 나타내고, 레벨 3은 텍스처의 최저 해상도 버전을 나타낸다. 그러나, 본 명세서에 개시된 일반적인 원리는 임의의 개수의 레벨을 갖는 밉맵에 적용될 수 있으며, 따라서 본 발명의 실시예는 도 3에 도시된 바와 같은 4 개의 밉맵 레벨로 제한되지 않는다는 것이 이해될 것이다.
도 4는 본 발명의 일 실시예에 따라, 도 3의 밉맵에 대한 인덱스 맵을 도시한다. 본 실시예에서, 도 4에 도시된 바와 같이, 복수의 인덱스 값을 포함하는 인덱스 맵(400)이 제공된다. 인덱스 맵(400)은 캐싱된 텍셀의 재사용을 가능하게 함으로써 밉맵 렌더링 프로세스 동안 메모리 액세스 일관성을 증가시키는데 사용된다. 각 인덱스 값은 텍스처 중에서 레벨들 중 하나를 식별한다.
도 4에 도시된 것과 같은 인덱스 맵(400)을 사용하여 밉맵으로부터 객체를 렌더링하는 방법을, 도 5를 참조하여 설명한다. 도 5는 본 발명의 일 실시예에 따른 밉맵을 이용하여 객체를 렌더링하는 방법을 나타내는 흐름도이고, 이 방법을 구현하기 위한 장치가 도 9에 개략적으로 도시되어 있다.
도 9는 본 발명의 일 실시예에 따라, 밉맵을 이용하여 객체를 렌더링하기 위한 장치를 도시한다. 장치(900)는 복수의 텍스처와 연관된 텍셀을 저장하기 위한 제1 메모리(901) 및 제1 메모리(901)로부터 텍셀을 캐시하기 위한 제2 메모리(902)를 포함한다. 일 실시예에 따르면, 제1 메모리(901)은 메인 메모리이고 제2 메모리(902)는 캐시 메모리일 수 있다. 제2 메모리(902)는 제1 메모리(901)보다 빠른 액세스 속도를 가지며 제1 메모리(901)로부터 판독된 텍셀을 캐시하는데 사용된다. 다음의 설명으로부터 명백해질 바와 같이, 도 4에 도시된 바와 같은 인덱스 맵(400)의 사용은 제1 메모리(901)로의 호출 횟수를 감소시킴으로써 장치(900)의 렌더링 속도를 증가시키고 전력 소비를 감소시킬 수 있다.
장치(900)는 밉맵 및 연관된 인덱스 맵을 사용하여 객체를 렌더링하고 렌더링된 객체를 디스플레이(910)에 출력하기 위한 렌더링 유닛(903)을 더 포함한다. 실시예에 따라, 렌더링 장치(900) 및 디스플레이(910)는 동일한 장치에 포함될 수 있으며, 또는 물리적으로 분리된 장치로 구현될 수도 있다. 렌더링 유닛(903)은 컴퓨터 판독 가능 메모리, 예를 들어 제1 메모리(901) 또는 별도의 메모리에 저장된 컴퓨터 프로그램 명령을 실행하는 하나 이상의 프로세서를 포함 할 수 있다. 실행될 때, 컴퓨터 프로그램 명령은 렌더링 유닛(903)이 도 5에 도시된 방법을 수행하게 할 수 있다. 대안적으로, 다른 실시예에서, 렌더링 유닛(903)의 기능은 소프트웨어보다는 하드웨어에서 수행될 수 있다.
도 5의 흐름도를 계속해서 참조하면, 단계 S500에서 렌더링 유닛(903)은 렌더링될 픽셀의 좌표를 획득한다. 픽셀의 좌표는 객체 내의 픽셀의 위치를 식별하는 2 차원 좌표 (x, y)로서 정의될 수 있다. 예를 들어, 좌표 인덱스 x와 y는 0과 1 사이의 부동 소수점 값으로 정의될 수 있고, (0, 0)은 객체의 왼쪽 위 모서리를 정의하고 (1, 1)은 객체의 오른쪽 아래 모서리를 정의한다. 이것은 픽셀 좌표가 정의될 수 있는 방식의 일례일 뿐이고 다른 형태의 좌표가 다른 실시예에서 사용될 수 있다는 것이 이해될 것이다.
다음으로, 단계 S502에서, 렌더링 유닛(903)은 획득된 좌표와 관련된 인덱스 값을 획득한다. 여기서, 좌표와 관련된 인덱스 값은 좌표에 의해 정의된 인덱스 맵 내의 위치에 있는 인덱스 값을 의미한다. 예를 들어, 단계 S500에서 (0.1875, 0.5625)의 픽셀 좌표가 획득되면, 이것은 도 4의 인덱스 맵 (400)의 제2 열의 제5 인덱스 값 (401)의 중심점에 대응할 것이다. 따라서, 인덱스 값 '2'는 단계 S502에서 획득되어, 밉맵에서 레벨 L=2의 텍스처(302)를 식별한다.
그 다음, 단계 S504 및 단계 S506에서, 렌더링 유닛(903)은 단계 S502에서 획득된 인덱스 값에 의해 식별되는 레벨의 텍스처 내의 텍셀들 중에서 상기 획득된 좌표와 관련된 텍셀에 대하여 캐싱된 텍셀의 이용가능성을 판단하고, 캐싱된 텍셀이 이용가능한 경우, 캐싱된 택셀을 이용하여 픽셀을 렌더링한다. 도 3에 도시된 바와 같이, 본 예에서, 레벨 L=0의 텍스처(300)의 좌측 하부 사분면의 많은 텍셀들은 모두 동일한 값('7')을 가지며, 이것은 레벨 L=2의 텍스처(302)의 등가 위치에서의 텍셀과 동일한 값이다. 도 4의 인덱스 맵(400)에서, 레벨 L=0의 텍스처(300)의 좌측 하부 사분면 내의 복수의 인덱스 값은 레벨 L=2를 식별하도록 설정된다.
따라서, L=0 텍스처(300)에서 좌측 아래 사분면 내의 위치에 있는 픽셀이 렌더링될 때마다, 렌더링 유닛(903)은 동일한 텍셀을 사용하여 픽셀을 렌더링할 수 있으며, 동일한 텍셀은 그 텍셀을 사용하는 제1 픽셀이 렌더링된 후 캐시 메모리(902)에 저장될 것이다. 이와 대조적으로, 인덱스 맵을 사용하지 않는 종래의 밉맵 렌더링 프로세스는 L=0 텍스처(300)로부터 별도의 텍셀을 판독함으로써 L=0 텍스처(300)의 좌측 하부 사분면 내의 각각의 픽셀을 렌더링할 것이고, 결과적으로 더 느린 메인 메모리가 여러 번 액세스된다.
본 발명의 실시예는 저해상도 텍스처의 각 텍셀이 고해상도 텍스처의 복수의 텍셀을 커버하고, 텍스처의 밉맵 레벨에 포함된 정보가 자주 일정하게 유지되거나 넓은 영역에 걸쳐 거의 변하지 않는다는 사실을 이용한다. 따라서 고해상도 텍스처의 복수의 텍셀은 별도의 텍셀을 액세스하는 대신 저해상도 텍스처의 등가 위치에 있는 동일한 텍셀을 사용하여 모두 렌더링될 수 있다. 이러한 방식으로, 본 발명의 실시예는 데이터가 일정한 것으로 알려진 영역에서 텍스처의 저해상도 밉맵 레벨을 인덱싱함으로써 메모리 액세스 일관성을 증가시킬 수 있다. 한편, 종래의 밉맵 렌더링 방법은 특히 고품질의 렌더링을 위해 많은 양의 텍스처 정보를 사용할 때 더 많은 양의 대역폭을 필요로 한다. 대역폭은, 고 대역폭 사용이 전력 소비를 증가시키고 전반적인 성능을 저하시키기 때문에, 실시간 렌더링의 제한 요소 중 하나이다.
또한, 성능 이점을 얻기 위해, 메인 메모리에 저장된 상이한 텍셀에 액세스하는 대신에 캐싱된 텍셀을 사용하여 단일 픽셀을 렌더링하는 것 만이 필요하다. 따라서, 저해상도 텍스처에서 하나의 텍셀에 의해 커버되는 영역의 모든 텍셀이 동일한 값을 공유하는 것은 필수적이지 않다. 도 3에 도시된 예에서, 도 3의 좌측 하부 사분면 L=0 텍스처(300) 내의 16 개의 텍셀 중 하나는 5의 값을 갖는다. 따라서, 이 텍셀에 대한 인덱스 값은 L=0을 식별하도록 설정되는 반면, 남은 15 개의 텍셀에 대한 인덱스 값은 모두 L=2를 식별하도록 설정된다.
실시예에 따라, 인덱스 값은 밉맵에 포함된 텍스처 레벨들의 총 개수와 동일한 비트 심도로 저장되거나 더 낮은 비트 심도로 저장될 수 있다. 도 3 및 도 4에 도시된 실시예에서, 인덱스 맵은 4 개의 밉맵 레벨 중 3 개(L = 0, 1, 2)에만 링크되지만, 다른 실시예에서는 인덱스 값이 인덱스 맵을 모든 밉맵 레벨에 링크시킬 수 있다. 예를 들어, 밉맵이 5 개의 레벨을 포함하는 경우, 인덱스 값은 5 개의 밉맵 레벨 중 하나를 고유하게 식별할 수 있도록 3에 해당하는 비트 심도에 저장될 필요가 있다. 그러나, 인덱스 값이 단지 인덱스 맵을 4 개의 밉맵 레벨에 링크시키는 경우, 2의 비트 심도가 사용될 수 있다. 일부 실시예들에서, 인덱스 맵을 생성할 때 하나 이상의 밉맵 레벨들이 고려되지 않을 수 있고, 결과적인 인덱스 맵의 비트 심도를 감소시키고 따라서 인덱스 맵을 저장하는데 요구되는 메모리의 양을 감소시킨다.
예를 들어, 기존의 밉맵 렌더링 방법을 사용하여 1024 × 1024 픽셀의 해상도를 갖는 2 개의 RGBA8 텍스처 내의 모든 텍셀을 액세스하는 전체 코스트는 다음과 같다:
2 RGBA8 × (1024 × 1024) 픽셀 = ~ 8MB
텍스처가 2/3의 가변 데이터 및 1/3의 일정한 데이터를 가지고 있다고 가정하면, 인덱스 맵을 사용하여 텍스처를 렌더링하는 코스트는 다음과 같다:
[1024 × 1024 픽셀 × 1 R8 (인덱스 맵)] + [680 × 1024 픽셀 × 2 RGBA8] + 16 바이트 (텍스처의 끝에서 두 번째 밉맵 레벨에 액세스) = ~ 6MB
또는
[4 × 4 픽셀 × 1 R8 (축소된 인덱스 맵)] + [680 × 1024 픽셀 × 2 RGBA8] + 64 바이트 (텍스처의 끝에서 세 번째 밉맵 레벨에 액세스) = ~ 5MB
그러므로, 이 예에서, 감소된 인덱스 맵을 사용할 때 (즉, 텍스처의 끝에서 세 번째 밉맵 레벨에 액세스하는 경우), 30% 이상의 대역폭 절약 효과를 얻을 수 있다. 인덱스 맵 방법과 관련된 유일한 추가 코스트는 주로 사전 처리 단계, 특히 인덱스 맵 생성에 있다. 이 작업은 각 밉맵에 대해 한 번만 수행하면 되고 오프라인으로 수행할 수 있다.
도 6은 본 발명의 일 실시예에 따라, 밉맵에 대한 복수의 인덱스 값을 생성하는 방법을 나타내는 흐름도이다. 일 실시예에 따르면, 밉맵은 레벨 0부터 레벨 N까지 감소하는 해상도들을 갖는 N+1 개의 텍스처들을 포함할 수 있다. 도 6을 참조하면, 본 발명의 실시예에 따라, 인덱스 맵을 생성하는 방법이 도시된다. 이 방법을 구현하는 장치가 도 10에 개략적으로 도시되어 있다.
도 10은 본 발명의 일 실시예에 따라, 밉맵에 대한 복수의 인덱스 값을 생성하기 위한 장치를 도시한다. 장치(1000)는 프로그램 메모리(1002)에 저장된 컴퓨터 프로그램 명령을 실행하기 위한 프로세서(1001)를 포함하고, 인덱스 맵을 생성할 때 분석될 텍스처를 저장하기 위한 텍스처 메모리(1003)를 더 포함한다. 일부 실시예에서, 프로그램 메모리(1002) 및 텍스처 메모리(1003)는 동일한 물리적 메모리의 상이한 영역일 수 있다. 또한, 소프트웨어 구현이 본 실시예에 도시되어 있지만, 다른 실시예에서, 프로세서(1001)의 기능은 소프트웨어가 아니라 하드웨어로 수행될 수 있다.
도 6에 도시된 바와 같이, 단계 S600 및 단계 S602에서, 프로세서(1001)는 N+1 개의 텍스처들 중 제1 레벨의 텍스처를 선택하고, 제1 레벨의 텍스처 내의 제1 텍셀과, 제1 레벨보다 높은 제2 레벨의 텍스처 내의 제2 텍셀이 매칭하는지 여부를 결정한다 제2 텍셀의 위치는 제1 텍셀의 위치에 대응할 수 있다. 일 실시예에 따르면, 제1 텍셀의 텍셀 값과 제2 텍셀의 텍셀 값이 임계 값 미만의 정도로 상이한 경우 제1 텍셀과 제2 텍셀이 매칭하는 것으로 결정될 수 있다.
단계 S602의 결정의 결과에 따라서, 제1 텍셀과 제2 텍셀이 매칭하지 않으면, 프로세서(1001)는 단계 S604에서, 제1 레벨을 식별하는 인덱스 값을 제1 텍셀에 대한 인덱스 값으로 설정할 수 있다. 제1 텍셀과 제2 텍셀이 매칭하면, 프로세서(1001)는 단계 S606에서, 제1 텍셀과 매칭하지 않는 제2 텍셀이 발생할 때까지 제2 레벨을 소정 값만큼 반복적으로 증가시키면서 제1 텍셀과 제2 텍셀이 매칭하는지 여부의 결정을 반복할 수 있다.
단계 S606의 수행 결과에 따라서, 상기 제1 텍셀과 매칭하지 않는 상기 제2 텍셀이 발생하지 않으면, 프로세서(1001)는 단계 S608에서 소정 레벨까지 최종적으로 증가된 제2 레벨을 식별하는 인덱스 값을 제1 텍셀에 대한 인덱스 값으로 설정할 수 있다. 제1 텍셀과 매칭하지 않는 제2 텍셀이 발생하면, 프로세서(1001)는 단계 S610에서 제1 텍셀과 매칭하지 않는 제2 텍셀이 발생된 제2 레벨보다 소정 값만큼 감소된 레벨을 식별하는 인덱스 값을 제1 텍셀에 대한 인덱스 값으로 설정할 수 있다.
그 후, 단계 S612에서, 프로세서(1001)는 인덱스 맵에 대한 복수의 인덱스 값을 설정하기 위해, 제1 레벨의 텍스처의 나머지 텍셀들에 대해 단계 S602 내지 단계 S610을 반복하여 적용함으로써 제1 레벨의 텍스처의 나머지 텍셀들에 대한 인덱스 값들을 설정할 수 있다. 결과적인 인덱스 값은 인덱스 맵으로서 저장될 수 있다.
도 3 및 도 4에 도시된 실시예에서, 각각 상이한 텍셀과 연관된 복수의 인덱스 값은 레벨 L = 0의 텍스처의 해상도와 동일한 해상도를 갖는 인덱스 맵으로서 저장된다. 매칭하는 텍셀 값이 더 낮은 해상도 레벨에서 발견되지 않으면 각 인덱스 값이 레벨 L = 0을 식별하도록 설정될 수 있으므로, 정보 손실을 방지할 수 있다. 그러나, 다른 실시예에서, 저해상도 인덱스 맵이 사용될 수 있다. 고해상도 인덱스 맵으로부터 저해상도 인덱스 맵을 생성하는 방법은 도 7에 도시된다. 일 실시예에 따르면, 밉맵에 대한 복수의 인덱스 값들은 제1 레벨의 텍스처의 해상도와 동일한 해상도를 갖는 제1 인덱스 맵을 정의할 수 있고, 제1 인덱스 맵의 해상도보다 낮은 해상도를 갖는 제2 인덱스 맵이 제1 인덱스 맵으로부터 생성될 수 있다. 상대적인 관점에서 제1 인덱스 맵은 고해상도 인덱스 맵일 수 있고, 제2 인덱스 맵은 저해상도 인덱스 맵일 수 있다.
도 7을 참조하면, 먼저, 단계 S700에서, 각각이 소정 개수의 인덱스 값들을 포함하는 복수의 영역들로 제1 인덱스 맵이 분할된다. 예를 들어, 인덱스 맵의 크기를 4 배만큼 감소시키기 위해, 인덱스 맵은 4 개의 인덱스 값을 각각 포함하는 복수의 2 × 2 블록으로 세분될 수 있다.
그 다음에, 단계 S702에서, 제1 인덱스 맵의 분할된 복수의 영역들 각각에 포함된 소정 개수의 인덱스 값들에 기초하여, 분할된 복수의 영역들 각각에 대응하는 제2 인덱스 맵 내의 등가 위치와 연관된 인덱스 값이 설정된다. 일 실시예에 따르면, 제2 인덱스 맵 내의 등가 위치와 연관된 인덱스 값은, 제1 인덱스 맵의 분할된 영역 내에 포함된 소정 개수의 인덱스 값들 중에서 최소 값과 동일하도록 설정될 수 있다. 각각의 영역이 4 개의 인덱스 값을 포함하는 2 × 2 블록인 예를 들면, 각 영역 내의 4 개의 인덱스 값 중 가장 낮은 밉맵 레벨 인덱스(즉, L = 0에 가장 가까운)가 저해상도 인덱스 맵 내의 그 영역에 대한 인덱스 값으로서 사용될 수 있다. 여기서 '최소값'은 상기 영역 내의 복수의 인덱스 값에 의해 식별되는 복수의 레벨 중 최고 해상도 레벨을 식별하는 인덱스 값을 의미한다. 가장 낮은 밉맵 레벨을 선택하는 것은 저해상도 인덱스 맵을 생성할 때 품질 저하가 발생하지 않음을 보장한다.
대안적으로, 다른 실시예에서, 제2 인덱스 맵 내의 등가 위치와 연관된 인덱스 값은 제1 인덱스 맵의 분할된 영역 내에 포함된 소정 개수의 인덱스 값들에 의해 식별되는 최저 레벨보다 높은 레벨을 식별하도록 설정될 수 있다. 예를 들어, 저해상도 인덱스 맵 내의 인덱스 값은 인덱스 값들에 의해 식별된 레벨들에서 대응하는 텍셀들에 대한 텍스처 값들의 차이를 고려함으로써 설정될 수 있다. 텍스처 값이 임계량 미만으로 다른 경우, 더 높은 밉맵 레벨(즉, 저해상도 레벨)이 인덱스 값에 대해 설정될 수 있다. 임계 값은 지각적 중요성에 따라 설정될 수 있다. 즉, 임계 값은 사용자가 렌더링된 이미지를 볼 때 텍스처 값들 간의 차이가 눈에 띄지 않을 정도로 충분히 작게 설정될 수 있다. 일 실시예에서, 제2 인덱스 맵에서의 인덱스 값은 제1 인덱스 맵에서 상기 영역 내에 포함된 복수의 인덱스 값의 최상위 N 번째 백분위 수 중 가장 낮은 인덱스 값과 동일하게 설정될 수 있다.
도 8을 참조하면, 본 발명의 실시예에 따라, 레벨 0에서 텍스처의 해상도와 동일한 해상도를 갖는 인덱스 맵을 생성하는 방법이 도시된다. 본 실시예에서는 밉맵 레벨 L = 0과 동일한 해상도를 갖는 인덱스 맵이 생성되지만, 더 낮은 해상도의 인덱스 맵을 생성하기 위해 유사한 프로세스가 뒤따를 수 있음을 이해해야 한다. 도 8에 도시된 바와 같은 방법은 인덱스 맵을 생성하기 위해 도 10에 도시된 것과 같은 장치에 의해 사용될 수 있다.
먼저, 단계 S801에서, 레벨 인덱스 변수 Lj는 1로 초기화되고, 좌표 변수 Ck는 (0, 0)으로 초기화된다. 그 다음, 단계 S802에서, 레벨 L = 0 텍스처의 좌표 (Ck)에서 텍스처 값(Ti)으로서 제1 샘플(S0)이 설정되고 레벨 L = Lj 텍스처의 좌표(Ck)에서 텍스처 값(Ti)으로서 제2 샘플(SL)이 설정된다.
제1 샘플(S0)과 제2 샘플(SL)은 단계 S803에서 서로 비교되어 매칭하는지를 결정한다. 일부 실시예에서, 단계 S803에서, 2 개의 샘플 값이 동일하면 샘플이 매칭하는 것으로 결정될 수 있다. 다른 실시예에서, 단계 S803에서, 제1 및 제2 샘플 값이 임계량 미만으로 다르면 샘플들이 매칭하는 것으로 결정될 수 있다. 임계 값은 지각적 중요성에 따라 설정될 수 있다. 즉, 임계 값은 임계 값 미만으로 상이한 텍스처 값을 갖는 2 개의 픽셀 사이의 차이가 렌더링된 이미지에서 인지할 수 없을 정도로 충분히 작게 설정될 수 있다.
본 실시예에서, 두 샘플이 매칭하지 않으면, 단계 S804에서 좌표(Ck)에서의 인덱스 값은 레벨(Lj-1)을 식별하도록 설정된다. 이와 같이, 레벨 L = 0의 특정 위치에서의 텍스처 값이 레벨 L = 1에서의 동일한 위치의 텍스처 값과 매칭하지 않으면, 인덱스 값은 L = 0으로 설정된다. 렌더러는 낮은 레벨의 텍스처로부터 텍셀을 사용자 눈에 띄지 않게 대체할 수 있다면 더 높은 밉맵 레벨로부터 캐싱된 텍셀 만을 사용하므로, 인덱스 맵을 사용하여 렌더링할 때 이미지 품질이 손실되지 않음이 보장된다. 또한, 단계 S803에서 정확한 매칭이 요구되는 경우, 더 높은 밉맵 레벨로부터의 캐싱된 텍셀이 그것이 대체하는 하위 레벨 텍셀과 동일할 때만 사용되기 때문에, 무손실 렌더링 방법이 달성된다.
도 8에 도시된 예에서, 일 레벨의 픽셀 샘플이 레벨 0으로부터의 샘플과 매칭하지 않는 것으로 결정되면, 알고리즘은 매칭이 발견된 이전 레벨을 인덱스 값으로서 저장하도록 구성된다. 따라서, 레벨 0의 특정 위치에 있는 샘플이 레벨 1 및 3의 동일한 위치에 있는 샘플과 매칭하지만 레벨 2의 동일한 위치에 있는 샘플과는 매칭하지 않으면, 레벨 3의 검색을 진행하지 않고, 레벨 2를 검색할 때 알고리즘이 종료되고 해당 위치의 인덱스 값이 레벨 1을 식별하도록 설정한다. 예를 들어, 도 3에 도시된 밉맵에서, 레벨 0의 하부 우측 텍셀은 레벨 1 및 3의 동일한 위치의 샘플에 대해 매칭이지만 레벨 2는 그렇지 않고, 도 4의 인덱스 맵에서 이 위치의 인덱스 값은 1로 설정된다. 그러나, 다른 실시예에서, 알고리즘은 중간 레벨에서 매칭하지 않는 샘플이 발견되는 경우에도, 더 높은 레벨에서 매칭을 계속 검색하도록 구성될 수 있고, 특정 위치에 있는 인덱스 값이 매칭하는 샘플이 있는 가장 높은 밉맵 레벨을 식별하도록 설정된다. 일부 시나리오에서는 효율성 향상을 가져올 수 있다.
한편, 샘플들이 단계 S803에서 매칭하면, 프로세스는 단계 S805 및 S806를 통해 계속하여 다음 밉맵 레벨 Lj + 1을 검사한다. 단계 S806에서 상위 레벨이 없다고 결정되면, 프로세스는 단계 S804로 되돌아 가서, 레벨 (Lj-1)을 식별하도록 좌표 Ck에 대한 인덱스 값을 설정한다.
인덱스 값이 현재 좌표(Ck)에 대해 설정되면, 프로세스는 단계 S807로 진행하여, 아직 처리되지 않은 레벨 L = 0 텍스처에 남아있는 텍셀이 있는지 여부가 체크된다. 여전히 처리될 텍셀이 있다면, 단계 S808에서 좌표 변수(Ck)는 처리될 다음 텍셀의 좌표로 설정된다. 그리고, 프로세스는 단계 S809에서 레벨 인덱스 변수 Lj를 레벨 1로 리셋하고, 단계 S802로 되돌아가 새로운 좌표 Ck의 텍스처 값을 사용하여 새로운 제1 및 제2 샘플 값 S0, SL을 설정한다.
본 실시예에서, 인덱스 맵 생성 프로세스는 모든 밉맵 레벨을 포함하도록 구성된다. 텍스처 값에 따라 비트 심도가 밉맵 레벨의 수와 동일한 인덱스 맵이 생성될 수 있다. 다른 실시예에서, 프로세스는 밉맵 레벨의 수보다 작은 비트 심도를 갖는 인덱스 맵을 생성하도록 수정될 수 있다. 예를 들어, 단계 S805는 매 반복마다 2 이상 레벨을 증가시키도록 수정될 수 있고, 그에 따라 텍스처 값을 비교할 때 밉맵 레벨을 생략할 수 있다. 추가 예로서, 단계 S806는 최종 밉맵 레벨에 도달하기 전에, 예를 들어, 레벨 Lj + N이 존재하는지를 검사함으로써 프로세스를 종료하도록 수정될 수 있으며, 여기서 N은 1보다 큰 정수이다.
본 발명의 일부 실시예에서, 밉맵은, 각각이 N+1 개의 텍스처들을 포함하는 소정 개수의 텍스처 세트들을 포함할 수 있고, 인덱스 맵은 입력 텍스처 세트를 포함하는 밉맵으로부터 생성될 수 있다. 이러한 실시예는 PBR (Physical-Based Rendering)과 같이 재료 표면을 묘사하기 위해 다수의 텍스처를 요구하는 실시간 사실적(realistic) 렌더링 어플리케이션에서 사용될 수 있다. 도 11은 사실적(realistic) 표면을 렌더링하는데 함께 사용될 수 있는 7 개의 텍스처들(1101, 1102, 1103, 1104, 1105, 1106, 1107)의 세트를 도시한다. 단순화된 모델은 예를 들어 네 개의 텍스처와 같이 더 적은 수의 텍스처를 사용할 수 있지만, 더 복잡한 모델은 최대 8 개 또는 그 이상의 텍스처를 사용할 수 있다. 복수의 텍스처가 특정 오브젝트를 렌더링하는데 사용되는 실시 예에서, 소정 개수의 텍스처 세트들과 관련된 인덱스 맵에 인덱스 값이 저장되고, 인덱스 맵의 각각의 위치에는, 각각이 소정 개수의 텍스처 세트들 중 상이한 하나와 관련된 소정 개수의 인덱스 값들이 저장될 수 있다. 렌더링 프로세스 동안, 소정 개수의 인덱스 값들 중 렌더링되는 픽셀에 이용되는 텍스처 세트와 관련된 인덱스 값이 획득되어 픽셀을 렌더링하는 데 사용된다.
예를 들어, 일부 실시예에서, 각각의 위치와 연관된 복수의 인덱스 값 각각은 상이한 텍스처 채널(예를 들어, R, G, B 또는 A 채널)에 저장될 수 있다. 대안적으로, 각각의 위치와 연관된 복수의 인덱스 값은 연결된 비트 스트링으로서 저장될 수 있고, 비트 마스크는 렌더링되는 픽셀에 이용되는 텍스처 세트와 관련된 인덱스 값을 정의하는 비트 스트링으로부터 하나 이상의 비트를 선택하는데 사용될 수 있다.
본 발명의 실시예는 밉맵으로부터 객체를 렌더링할 때 사용하기 위해 인덱스 맵이 생성될 수 있는 것으로 설명되었다. 인덱스 맵을 사용하면 텍스처의 특정 영역에서 데이터가 일정하거나 거의 일정한 것으로 알려진 밉맵 텍스처에 보다 효율적으로 액세스할 수 있다. 텍스처는 예를 들어 1D, 2D 또는 3D와 같은 모든 차원을 가질 수 있으며 차원에 적합한 좌표를 사용하여 인덱싱될 수 있다. 인덱스 맵 기법은 메모리 액세스를 향상시키고, 알려진 밉맵 렌더링 방법과 비교하여 보다 빠르고 효율적인 렌더링 프로세스를 제공할 수 있다.
본 발명의 특정 실시예가 도면을 참조하여 본원에 설명되었지만, 첨부된 청구 범위에 정의된 본 발명의 범위를 벗어나지 않으면서 다양한 변형 및 수정이 가능하다는 것이 이해될 것이다.

Claims (15)

  1. 레벨 0부터 레벨 N까지 감소하는 해상도들을 갖는 N+1 개의 텍스처들을 포함하는 밉맵을 이용하여 객체를 렌더링하는 방법에 있어서,
    렌더링되는 픽셀의 좌표를 획득하는 단계;
    상기 획득된 좌표와 관련된 인덱스 값을 획득하는 단계;
    상기 인덱스 값에 의해 식별된 레벨의 텍스처 내의 텍셀들 중에서 상기 획득된 좌표와 관련된 텍셀에 대하여 캐싱된 텍셀의 이용가능성을 판단하는 단계; 및
    상기 캐싱된 텍셀이 이용가능한 경우, 상기 캐싱된 택셀을 이용하여 상기 픽셀을 렌더링하는 단계를 포함하는, 상기 객체를 렌더링하는 방법.
  2. 제1 항에 있어서,
    상기 인덱스 값은, 상기 레벨 0의 텍스처의 해상도와 동일한 해상도를 갖는 인덱스 맵 내의 상이한 위치에 각각이 저장된 복수의 인덱스 값들 중 하나인 것을 특징으로 하는, 상기 객체를 렌더링하는 방법.
  3. 제1 항에 있어서,
    상기 인덱스 값은, 상기 레벨 0의 텍스처의 해상도보다 낮은 해상도를 갖는 인덱스 맵 내의 상이한 위치에 각각이 저장된 복수의 인덱스 값들 중 하나인 것을 특징으로 하는, 상기 객체를 렌더링하는 방법.
  4. 제1 항에 있어서,
    상기 인덱스 값의 비트 심도는 상기 밉맵에 포함된 텍스처 레벨들의 총 개수보다 작은 것을 특징으로 하는, 상기 객체를 렌더링하는 방법.
  5. 제1 항에 있어서,
    상기 밉맵은, 각각이 상기 N+1 개의 텍스처들을 포함하는 소정 개수의 텍스처 세트들을 포함하고,
    상기 인덱스 값은 상기 소정 개수의 텍스처 세트들과 관련된 인덱스 맵에 저장되고, 상기 인덱스 맵의 각각의 위치에는, 각각이 상기 소정 개수의 텍스처 세트들 중 상이한 하나와 관련된 상기 소정 개수의 인덱스 값들이 저장되고,
    상기 소정 개수의 인덱스 값들 중 상기 렌더링되는 픽셀에 이용되는 텍스처 세트와 관련된 상기 인덱스 값이 획득되는 것을 특징으로 하는, 상기 객체를 렌더링하는 방법.
  6. 제5 항에 있어서,
    상기 인덱스 맵의 각각의 위치에 저장된 상기 소정 개수의 인덱스 값들 각각은 상이한 텍스처 채널에 저장되는 것을 특징으로 하는, 상기 객체를 렌더링하는 방법.
  7. 제5 항에 있어서,
    상기 인덱스 맵의 각각의 위치에 저장된 상기 소정 개수의 인덱스 값들은 연결된(concatenated) 비트 스트링으로서 저장되고, 상기 렌더링되는 픽셀에 이용되는 텍스처 세트와 관련된 상기 인덱스 값을 정의하는 비트 스트링으로부터 하나 이상의 비트를 선택하기 위해 비트 마스크가 사용되는 것을 특징으로 하는, 상기 객체를 렌더링하는 방법.
  8. 레벨 0부터 레벨 N까지 감소하는 해상도들을 갖는 N+1 개의 텍스처들을 포함하는 밉맵에 대한 복수의 인덱스 값들을 생성하는 방법에 있어서,
    상기 N+1 개의 텍스처들 중 제1 레벨의 텍스처를 선택하는 단계;
    상기 제1 레벨의 텍스처 내의 제1 텍셀과, 상기 제1 레벨보다 높은 제2 레벨의 텍스처 내의 제2 텍셀이 매칭하는지 여부를 결정하는 단계로서, 상기 제2 텍셀의 위치는 상기 제1 텍셀의 위치에 대응하는 것인, 상기 결정하는 단계;
    상기 제1 텍셀과 상기 제2 텍셀이 매칭하지 않으면, 상기 제1 레벨을 식별하는 인덱스 값을 상기 제1 텍셀에 대한 인덱스 값으로 설정하는 단계;
    상기 제1 텍셀과 상기 제2 텍셀이 매칭하면, 상기 제1 텍셀과 매칭하지 않는 상기 제2 텍셀이 발생할 때까지 상기 제2 레벨을 소정 값만큼 반복적으로 증가시키면서 상기 제1 텍셀과 상기 제2 텍셀이 매칭하는지 여부의 결정을 반복하는 단계;
    상기 제1 텍셀과 매칭하지 않는 상기 제2 텍셀이 발생하지 않으면, 소정 레벨까지 최종적으로 증가된 제2 레벨을 식별하는 인덱스 값을 상기 제1 텍셀에 대한 인덱스 값으로 설정하는 단계;
    상기 제1 텍셀과 매칭하지 않는 상기 제2 텍셀이 발생하면, 상기 제1 텍셀과 매칭하지 않는 상기 제2 텍셀이 발생된 제2 레벨보다 상기 소정 값만큼 감소된 레벨을 식별하는 인덱스 값을 상기 제1 텍셀에 대한 인덱스 값으로 설정하는 단계; 및
    상기 제1 레벨의 텍스처의 나머지 텍셀들에 대해 이전 단계들을 적용함으로써 상기 제1 레벨의 텍스처의 상기 나머지 텍셀들에 대한 인덱스 값들을 설정하는 단계를 포함하는, 상기 복수의 인덱스 값을 생성하는 방법.
  9. 제8 항에 있어서,
    상기 제1 레벨은 레벨 0인 것을 특징으로 하는, 상기 복수의 인덱스 값들을 생성하는 방법.
  10. 제8 항에 있어서,
    상기 제1 텍셀의 텍셀 값과 상기 제2 텍셀의 텍셀 값이 임계 값 미만의 정도로 상이한 경우, 상기 제1 텍셀과 상기 제2 텍셀이 매칭하는 것으로 결정되는 것을 특징으로 하는, 상기 복수의 인덱스 값들을 생성하는 방법.
  11. 제8 항에 있어서,
    상기 설정된 인덱스 값들의 비트 심도는, 상기 밉맵에 포함된 텍스처 레벨들의 총 개수보다 작은 것을 특징으로 하는, 상기 복수의 인덱스 값들을 생성하는 방법.
  12. 제8 항에 있어서,
    상기 설정된 인덱스 값들은 상기 제1 레벨의 텍스처의 해상도와 동일한 해상도를 갖는 제1 인덱스 맵을 정의하고,
    상기 방법은,
    각각이 소정 개수의 인덱스 값들을 포함하는 복수의 영역들로 상기 제1 인덱스 맵을 분할하는 것; 및
    상기 제1 인덱스 맵의 상기 분할된 복수의 영역들 각각에 포함된 소정 개수의 상기 인덱스 값들에 기초하여, 상기 분할된 복수의 영역들 각각에 대응하는 제2 인덱스 맵 내의 등가 위치와 연관된 인덱스 값을 설정하는 것
    에 의해 상기 제1 인덱스 맵의 해상도보다 낮은 해상도를 갖는 상기 제2 인덱스 맵을 생성하는 단계를 더 포함하는 것을 특징으로 하는, 상기 복수의 인덱스 값들을 생성하는 방법.
  13. 제12 항에 있어서,
    상기 제2 인덱스 맵 내의 상기 등가 위치와 연관된 상기 인덱스 값은, 상기 제1 인덱스 맵의 상기 분할된 영역 내에 포함된 상기 소정 개수의 상기 인덱스 값들 중에서 최소 값과 동일하도록 설정되는 것을 특징으로 하는, 상기 복수의 인덱스 값들을 생성하는 방법.
  14. 레벨 0부터 레벨 N까지 감소하는 해상도들을 갖는 N+1 개의 텍스처들을 포함하는 밉맵을 이용하여 객체를 렌더링하는 장치에 있어서,
    상기 텍스처들과 연관된 텍셀들을 저장하기 위한 제1 메모리;
    상기 제1 메모리보다 빠른 액세스 속도를 갖고, 상기 제1 메모리로부터 텍셀을 캐싱하기 위한 제2 메모리; 및
    렌더링 유닛으로서,
    렌더링되는 픽셀의 좌표를 획득하고;
    상기 획득된 좌표와 관련된 인덱스 값을 획득하고;
    상기 인덱스 값에 의해 식별된 레벨의 텍스처 내의 텍셀들 중에서 상기 획득된 좌표와 관련된 텍셀에 대하여 상기 제2 메모리 내의 캐싱된 텍셀의 이용가능성을 판단하고;
    상기 캐싱된 텍셀이 이용가능한 경우, 상기 캐싱된 택셀을 이용하여 상기 픽셀을 렌더링하도록 구성된 상기 렌더링 유닛을 포함하는, 상기 객체를 렌더링하는 장치.
  15. 실행될 때, 제1 항에 따른 방법을 수행하는 컴퓨터 프로그램 명령들을 저장하도록 구성된 비 일시적 컴퓨터 판독가능 저장 매체.
KR1020170171286A 2016-12-14 2017-12-13 복수의 텍스처들을 포함하는 밉맵을 이용하여 객체를 렌더링하기 위한 방법 및 장치 KR102569446B1 (ko)

Priority Applications (3)

Application Number Priority Date Filing Date Title
EP17881808.4A EP3504685B8 (en) 2016-12-14 2017-12-14 Method and apparatus for rendering object using mipmap including plurality of textures
US15/842,349 US10460502B2 (en) 2016-12-14 2017-12-14 Method and apparatus for rendering object using mipmap including plurality of textures
PCT/KR2017/014762 WO2018111014A1 (en) 2016-12-14 2017-12-14 Method and apparatus for rendering object using mipmap including plurality of textures

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
GB1621280.5A GB2557657B (en) 2016-12-14 2016-12-14 Mipmap rendering
GB1621280.5 2016-12-14

Publications (2)

Publication Number Publication Date
KR20180068879A true KR20180068879A (ko) 2018-06-22
KR102569446B1 KR102569446B1 (ko) 2023-08-22

Family

ID=58222196

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020170171286A KR102569446B1 (ko) 2016-12-14 2017-12-13 복수의 텍스처들을 포함하는 밉맵을 이용하여 객체를 렌더링하기 위한 방법 및 장치

Country Status (3)

Country Link
EP (1) EP3504685B8 (ko)
KR (1) KR102569446B1 (ko)
GB (1) GB2557657B (ko)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110689603B (zh) * 2019-08-27 2023-03-17 杭州群核信息技术有限公司 Pbr实时渲染材质的转换方法、装置、系统及渲染方法
CN111275802B (zh) * 2020-01-19 2023-04-21 杭州群核信息技术有限公司 一种基于vray的pbr材质渲染方法和系统
CN111729307B (zh) * 2020-07-30 2023-08-22 腾讯科技(深圳)有限公司 虚拟场景显示方法、装置、设备以及存储介质
CN113626902B (zh) * 2021-08-18 2024-02-20 杭州群核信息技术有限公司 基于pbr材质的材质建模系统
GB2616637B (en) * 2022-03-15 2024-05-08 Advanced Risc Mach Ltd Methods and apparatus for processing graphics data
CN116957899A (zh) * 2022-04-19 2023-10-27 象帝先计算技术(重庆)有限公司 图形处理器、系统、装置、设备及方法
CN114708375B (zh) * 2022-06-06 2022-08-26 江西博微新技术有限公司 纹理映射方法、系统、计算机及可读存储介质

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6130680A (en) * 1997-12-01 2000-10-10 Intel Corporation Method and apparatus for multi-level demand caching of textures in a graphics display device
KR20160004096A (ko) * 2014-07-02 2016-01-12 삼성전자주식회사 밉맵 생성 방법 및 장치
US20160071232A1 (en) * 2014-09-10 2016-03-10 Apple Inc. Texture state cache
KR20160031328A (ko) * 2014-09-12 2016-03-22 삼성전자주식회사 렌더링 방법 및 장치
KR20160059237A (ko) * 2014-11-18 2016-05-26 삼성전자주식회사 텍스쳐 처리 방법 및 장치

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6298169B1 (en) * 1998-10-27 2001-10-02 Microsoft Corporation Residual vector quantization for texture pattern compression and decompression
GB2343599B (en) * 1998-11-06 2003-05-14 Videologic Ltd Texturing systems for use in three dimensional imaging systems
US6924811B1 (en) * 2000-11-13 2005-08-02 Nvidia Corporation Circuit and method for addressing a texture cache
US7948500B2 (en) * 2007-06-07 2011-05-24 Nvidia Corporation Extrapolation of nonresident mipmap data using resident mipmap data
US8542243B2 (en) * 2009-11-19 2013-09-24 Douglas H. Rogers High-compression texture mapping

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6130680A (en) * 1997-12-01 2000-10-10 Intel Corporation Method and apparatus for multi-level demand caching of textures in a graphics display device
KR20160004096A (ko) * 2014-07-02 2016-01-12 삼성전자주식회사 밉맵 생성 방법 및 장치
US20160071232A1 (en) * 2014-09-10 2016-03-10 Apple Inc. Texture state cache
KR20160031328A (ko) * 2014-09-12 2016-03-22 삼성전자주식회사 렌더링 방법 및 장치
KR20160059237A (ko) * 2014-11-18 2016-05-26 삼성전자주식회사 텍스쳐 처리 방법 및 장치

Also Published As

Publication number Publication date
EP3504685A4 (en) 2019-07-31
KR102569446B1 (ko) 2023-08-22
GB2557657B (en) 2020-08-12
GB2557657A (en) 2018-06-27
GB201621280D0 (en) 2017-01-25
EP3504685A1 (en) 2019-07-03
EP3504685B1 (en) 2021-02-24
EP3504685B8 (en) 2021-04-14

Similar Documents

Publication Publication Date Title
KR102569446B1 (ko) 복수의 텍스처들을 포함하는 밉맵을 이용하여 객체를 렌더링하기 위한 방법 및 장치
WO2022193941A1 (zh) 图像渲染方法、装置、设备、介质和计算机程序产品
Elseberg et al. One billion points in the cloud–an octree for efficient processing of 3D laser scans
JP2006094494A (ja) グラフィックス処理装置を使用した加速ビデオ符号化
US10460502B2 (en) Method and apparatus for rendering object using mipmap including plurality of textures
KR102651126B1 (ko) 그래픽 프로세싱 장치 및 그래픽스 파이프라인에서 텍스처를 처리하는 방법
US20230108967A1 (en) Micro-meshes, a structured geometry for computer graphics
GB2478626A (en) Index-based shared patch edge processing
US9256536B2 (en) Method and apparatus for providing shared caches
KR20160047315A (ko) 캐시 메모리 시스템 및 그 동작방법
CN106530379B (zh) 用于执行路径描边的方法和设备
Schütz et al. Software rasterization of 2 billion points in real time
US11521342B2 (en) Residency map descriptors
KR20210088588A (ko) 거리 필드 컬러 팔레트
US10466915B2 (en) Accessing encoded blocks of data in memory
WO2013005366A1 (ja) アンチエイリアス画像生成装置およびアンチエイリアス画像生成方法
KR102477265B1 (ko) 그래픽스 프로세싱 장치 및 그래픽스 파이프라인의 텍스쳐링을 위한 LOD(level of detail)를 결정하는 방법
JP5934380B2 (ja) 可変の深さ圧縮
US11978234B2 (en) Method and apparatus of data compression
KR20160004096A (ko) 밉맵 생성 방법 및 장치
KR20230073239A (ko) 채널별 기반 텍스처 데이터의 압축
Dyken et al. Real‐Time GPU Silhouette Refinement using Adaptively Blended Bézier Patches
González et al. Combining displacement mapping methods on the GPU for real-time terrain visualization
US10706607B1 (en) Graphics texture mapping
US7061487B2 (en) Method and apparatus for improving depth information communication bandwidth in a computer graphics system

Legal Events

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