KR102104057B1 - 점별로 테셀레이션 팩터를 할당하는 방법과 상기 방법을 수행할 수 있는 장치들 - Google Patents

점별로 테셀레이션 팩터를 할당하는 방법과 상기 방법을 수행할 수 있는 장치들 Download PDF

Info

Publication number
KR102104057B1
KR102104057B1 KR1020130080048A KR20130080048A KR102104057B1 KR 102104057 B1 KR102104057 B1 KR 102104057B1 KR 1020130080048 A KR1020130080048 A KR 1020130080048A KR 20130080048 A KR20130080048 A KR 20130080048A KR 102104057 B1 KR102104057 B1 KR 102104057B1
Authority
KR
South Korea
Prior art keywords
point
points
tessellation factor
tessellation
generated
Prior art date
Application number
KR1020130080048A
Other languages
English (en)
Other versions
KR20150006554A (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 KR1020130080048A priority Critical patent/KR102104057B1/ko
Priority to US14/310,351 priority patent/US9779547B2/en
Priority to JP2014137042A priority patent/JP2015018551A/ja
Priority to GB1412090.1A priority patent/GB2518272B/en
Priority to CN201410324670.9A priority patent/CN104282035B/zh
Publication of KR20150006554A publication Critical patent/KR20150006554A/ko
Application granted granted Critical
Publication of KR102104057B1 publication Critical patent/KR102104057B1/ko

Links

Images

Classifications

    • 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
    • G06T17/00Three dimensional [3D] modelling, e.g. data description of 3D objects
    • G06T17/20Finite element generation, e.g. wire-frame surface description, tesselation
    • 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
    • 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/04Texture mapping
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T17/00Three dimensional [3D] modelling, e.g. data description of 3D objects
    • G06T17/20Finite element generation, e.g. wire-frame surface description, tesselation
    • G06T17/205Re-meshing

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Graphics (AREA)
  • Geometry (AREA)
  • Software Systems (AREA)
  • Image Generation (AREA)
  • Processing Or Creating Images (AREA)

Abstract

테셀레이팅하는 방법은 패치(patch)에 포함된 점들 각각에 테셀레이션 팩터를 할당하는 단계와, 상기 점들 중에서 현재 점의 주위에, 상기 현재 점에 할당된 제1테셀레이션 팩터에 상응하는 새로운 점(들)을 생성하는 단계를 포함한다. 즉, 상기 테셀레이팅하는 방법은 점별로 테셀레이션 팩터를 할당할 수 있다.

Description

점별로 테셀레이션 팩터를 할당하는 방법과 상기 방법을 수행할 수 있는 장치들{TESSELLATION METHOD FOR ASSIGNING A TESSELLATION FACTOR PER POINT AND DEVICES PERFORMING THE METHOD}
본 발명의 개념에 따른 실시 예는 테셀레이션에 관한 것으로, 특히 모든 종류의 틈들(cracks)을 제거하기 위해, 점별로 테셀레이션 팩터를 할당하는 방법과 상기 방법을 수행할 수 있는 장치들에 관한 것이다.
테셀레이션(tessellation)은 하나 또는 그 이상의 기하학적 모양들 (geometric shapes), 소위 타일들(tiles)을 이용하여 겹침(overlaps)과 틈(gaps) 없이 평면(plain)을 타일링(tiling)하는 것을 의미한다.
컴퓨터 그래픽스에서, 테셀레이션은 표면들의 모습(appearance of surfaces)을 사실적인 3-차원 물체들(realistic three-dimensional objects)로 옮기기 (render) 위해 필요한 정보를 체계화(organize)하기 위해 사용된다.
테셀레이션 팩터들(tessellation factors)은 각 패치(patch)를 얼마나 세분화할지를 결정한다.
종래의 테셀레이션 팩터는 면(face)마다 할당되었다. 면마다 테셀레이션 팩터를 할당하면, 서로 다른 테셀레이션 팩터들을 갖는 모서리를 공유하는 면들 (edge-shared faces) 사이에서 틈(crack)이 발생한다.
이러한 틈을 방지하기 위해, 모서리마다 테셀레이션 팩터를 할당하는 방법이 개발되었다. 상기 방법은 모서리를 공유하는 면들 사이에서 발생하는 틈을 제거할 수 있으나, 서로 다른 테셀레이션 팩터들을 갖는 점을 공유하는 면들(point-shared faces) 사이에서 다른 종류의 틈이 발생한다.
본 발명이 이루고자 하는 기술적인 과제는 모든 종류의 틈들을 제거하기 위해 점별로 테셀레이션 팩터를 할당하는 방법과 상기 방법을 수행할 수 있는 장치들을 제공하는 것이다.
본 발명의 실시 예에 따른 그래픽스 프로세서(graphics processor)에 의해 그래픽스 파이프라인에서 표면들을 테셀레이팅하는 방법은 패치(patch)에 포함된 점들 각각에 테셀레이션 팩터를 할당하는 단계와, 상기 점들 중에서 현재 점의 주위에, 상기 현재 점에 할당된 제1테셀레이션 팩터에 상응하는 새로운 제1점(들)을 생성하는 단계를 포함한다.
상기 점들 각각에 할당된 상기 테셀레이션 팩터는 정수 또는 소수일 수 있다.
상기 주위는 상기 현재 점, 상기 현재 점을 포함하는 모서리(edge), 또는 상기 현재 점을 포함하는 면(face)일 수 있다.
상기 제1테셀레이션 팩터는 0인 아닌 정수 또는 소수이다.
상기 생성하는 단계는 상기 제1테셀레이션 팩터가 0(zero) 또는 어떠한 점도 생성하지 말라는 정보를 포함할 때, 상기 현재 점의 주위에 상기 새로운 제1점(들)을 생성하지 않는다.
상기 현재 점과 이전 점이 하나의 모서리를 공유할 때, 상기 모서리의 일부에는 상기 현재 점에 할당된 상기 제1테셀레이션 팩터에 상응하는 상기 새로운 제1점(들)을 생성하고, 상기 모서리의 나머지 일부에는 상기 이전 점에 할당된 제2테셀레이션 팩터에 상응하는 새로운 제2점(들)을 생성하고, 상기 제2테셀레이션 팩터는 0인 아닌 정수 또는 소수이다.
실시 예에 따라, 상기 점들 각각은 위치(position)와 법선 벡터(normal vector) 중에서 적어도 하나를 포함하는 기하학적인 데이터(geometric data)를 나타낸다.
다른 실시 예에 따라, 상기 점들 각각은 위치, 법선 벡터, 및 텍스쳐 좌표(texture coordinate)를 포함하는 속성들을 갖는 꼭지점(vertex)을 나타낸다.
상기 표면들(surfaces)은 파라메트릭 표면들(parametric surfaces), 서브디비젼 표면들(subdivision surfaces), 트라이앵글 메시들(triangle meshes) 또는 곡선들(curves)을 포함한다.
상기 테셀레이팅하는 방법은 상기 점들과 상기 점들 각각에 할당된 상기 테셀레이션 팩터에 따라 생성된 새로운 제2점(들)을 이용하여 토폴로지 정보를 생성하는 단계와, 틈(crack)이 있을 때, 상기 토폴로지 정보를 이용하여 상기 틈을 제거하기 위한 적어도 하나의 프리미티브를 생성하는 단계를 더 포함한다.
상기 점들 각각에 대한 상기 테셀레이션 팩터는 사용자-정의된 알고리즘에 따라 생성된다.
본 발명의 실시 예에 따른 그래픽스 파이프라인에서 표면들(surfaces)을 테셀레이팅하는 테셀레이션 과정을 수행하는 장치는 패치에 포함된 점들 각각에 테셀레이션 팩터를 할당하는 헐 쉐이더(Hull shader)와, 상기 점들 각각과 상기 점들 각각에 할당된 상기 테셀레이션 팩터를 수신하고, 상기 점들 각각의 주위에 상기 점들 각각에 할당된 상기 테셀레이션 팩터에 상응하는 새로운 점(들)을 생성하는 테셀레이터를 포함한다.
상기 장치는 상기 헐 쉐이더에서 사용될 상기 점들 각각에 대한 상기 테셀레이션 팩터를 저장하는 메모리를 더 포함한다.
상기 테셀레이터는 상기 점들 중에서 대응되는 점 또는 상기 대응되는 점을 포함하는 모서리 (edge)마다 상기 대응되는 점에 할당된 테셀레이션 팩터에 상응하는 상기 새로운 점(들)을 생성한다.
상기 테셀레이터는 상기 점들 중에서 대응되는 점을 포함하는 면(face)마다 상기 대응되는 점에 할당된 테셀레이션 팩터에 상응하는 상기 새로운 점(들)을 생성한다.
본 발명의 실시 예에 따른 그래픽스 파이프라인을 이용하여 표면들(surfaces)을 테셀레이팅하는 테셀레이션 과정을 수행하는 그래픽스 프로세서는 상기 그래픽스 프로세서는 패치에 포함된 점들 각각에 테셀레이션 팩터를 할당하고, 상기 점들 각각의 주위에 상기 점들 각각에 할당된 테셀레이션 팩터에 상응하는 새로운 점(들)을 생성하고, 상기 점들과 상기 새로운 점(들)을 이용하여 프리미티브들을 생성한다.
본 발명의 실시 예에 따른 전자 시스템은 그래픽스 프로세서와, 상기 그래픽스 프로세서에 의해 처리된 신호들을 디스플레이하는 디스플레이를 포함한다.
상기 그래픽스 프로세서는 패치에 포함된 점들 각각에 테셀레이션 팩터를 할당하는 헐 쉐이더(Hull shader)와, 상기 점들 각각과 상기 점들 각각에 할당된 테셀레이션 팩터를 수신하고, 상기 점들 각각의 주위에 상기 점들 각각에 할당된 테셀레이션 팩터에 상응하는 새로운 점(들)을 생성하고, 상기 점들과 상기 새로운 점(들)을 이용하여 프리미티브들을 생성하는 테셀레이터를 포함한다.
틈이 있을 때, 상기 프리미티브들 중에서 적어도 하나는 상기 틈을 제거하기 위한 프리미티브이다.
본 발명의 실시 예에 따라 점별로 테셀레이션 팩터를 할당하는 방법은, 면별로 또는 모서리별로 테셀레이션 팩터를 할당하는 종래의 방법과 달리, 모서리를 공유하는 면들 사이의 틈과 점을 공유하는 면들 사이의 틈을 포함하는 모든 종류의 틈들을 제거할 수 있는 효과가 있다.
본 발명의 실시 예에 따라 점별로 테셀레이션 팩터를 할당하는 방법은 곡률에 따라 서로 다른 테셀레이션 팩터를 할당할 수 있으므로 곡선 변화(curve variation)를 좀더 정확하게 추적할 수 있다.
따라서, 점별로 테셀레이션 팩터를 할당하는 방법은 의미 없는 테셀레이션들과 그래픽 대역폭 요구(graphic bandwidth requirement)를 줄일 수 있는 효과가 있다.
본 발명의 상세한 설명에서 인용되는 도면을 보다 충분히 이해하기 위하여 각 도면의 상세한 설명이 제공된다.
도 1은 본 발명의 실시 예에 따른 전자 시스템의 블록도이다.
도 2는 도 1에 도시된 그래픽스 프로세싱 유닛의 파이프라인의 실시 예를 나타낸다.
도 3은 본 발명의 일 실시 예에 따른 헐-쉐이더와 테셀레이터의 동작을 설명하기 위한 개념도이다.
도 4는 점별로 테셀레이션 팩터를 계산하는 방법을 설명하기 위한 개념도이다.
도 5와 도 6은 점별로 할당된 테셀레이션 팩터를 저장하는 메모리를 나타낸다.
도 7은 본 발명의 다른 실시 예에 따른 헐-쉐이더와 테셀레이터의 동작을 설명하기 위한 다른 개념도이다.
도 8부터 도 12는 본 발명의 실시 예들에 따른 헐-쉐이더와 테셀레이터의 동작을 설명하기 위한 개념도들이다.
도 13은 종래의 모서리별로 테셀레이션 팩터를 할당하는 방법과 본 발명의 실시 예에 따른 점별로 테셀레이션 팩터를 할당하는 방법에 따른 곡선 변화를 추적하는 예들을 설명하기 위한 개념도들이다.
도 14는 본 발명의 실시 예에 따른 헐-쉐이더의 동작과 테셀레이터의 동작을 설명하기 위한 플로우차트이다.
본 명세서에 개시되어 있는 본 발명의 개념에 따른 실시 예들에 대해서 특정한 구조적 또는 기능적 설명은 단지 본 발명의 개념에 따른 실시 예들을 설명하기 위한 목적으로 예시된 것으로서, 본 발명의 개념에 따른 실시 예들은 다양한 형태들로 실시될 수 있으며 본 명세서에 설명된 실시 예들에 한정되지 않는다.
본 발명의 개념에 따른 실시 예들은 다양한 변경들을 가할 수 있고 여러 가지 형태들을 가질 수 있으므로 실시 예들을 도면에 예시하고 본 명세서에서 상세하게 설명하고자 한다. 그러나, 이는 본 발명의 개념에 따른 실시 예들을 특정한 개시 형태들에 대해 한정하려는 것이 아니며, 본 발명의 사상 및 기술 범위에 포함되는 모든 변경, 균등물, 또는 대체물을 포함한다.
제1 또는 제2 등의 용어는 다양한 구성 요소들을 설명하는데 사용될 수 있지만, 상기 구성 요소들은 상기 용어들에 의해 한정되어서는 안 된다. 상기 용어들은 하나의 구성 요소를 다른 구성 요소로부터 구별하는 목적으로만, 예컨대 본 발명의 개념에 따른 권리 범위로부터 벗어나지 않은 채, 제1구성 요소는 제2구성 요소로 명명될 수 있고 유사하게 제2구성 요소는 제1구성 요소로도 명명될 수 있다.
어떤 구성 요소가 다른 구성 요소에 "연결되어" 있다거나 "접속되어" 있다고 언급된 때에는, 그 다른 구성 요소에 직접적으로 연결되어 있거나 또는 접속되어 있을 수도 있지만, 중간에 다른 구성 요소가 존재할 수도 있다고 이해되어야 할 것이다. 반면에, 어떤 구성 요소가 다른 구성 요소에 "직접 연결되어" 있다거나 "직접 접속되어" 있다고 언급된 때에는 중간에 다른 구성 요소가 존재하지 않는 것으로 이해되어야 할 것이다. 구성 요소들 간의 관계를 설명하는 다른 표현들, 즉 "~사이에"와 "바로 ~사이에" 또는 "~에 이웃하는"과 "~에 직접 이웃하는" 등도 마찬가지로 해석되어야 한다.
본 명세서에서 사용한 용어는 단지 특정한 실시 예를 설명하기 위해 사용된 것으로서, 본 발명을 한정하려는 의도가 아니다. 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다. 본 명세서에서, "포함하다" 또는 "가지다" 등의 용어는 본 명세서에 기재된 특징, 숫자, 단계, 동작, 구성 요소, 부분품 또는 이들을 조합한 것이 존재함을 지정하려는 것이지, 하나 또는 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성 요소, 부분품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다.
다르게 정의되지 않는 한, 기술적이거나 과학적인 용어를 포함해서 여기서 사용되는 모든 용어들은 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미를 나타낸다. 일반적으로 사용되는 사전에 정의되어 있는 것과 같은 용어들은 관련 기술의 문맥상 가지는 의미와 일치하는 의미를 갖는 것으로 해석되어야 하며, 본 명세서에서 명백하게 정의하지 않는 한, 이상적이거나 과도하게 형식적인 의미로 해석되지 않는다.
이하, 본 명세서에 첨부된 도면들을 참조하여 본 발명의 실시 예들을 상세히 설명한다.
도 1은 본 발명의 실시 예에 따른 전자 시스템의 블록도이다.
도 1을 참조하면, 전자 시스템(100)은 처리 장치(110)와 입출력 장치(130)를 포함한다.
전자 시스템(100)은 PC(personal computer), 2차원 TV, 3차원 TV, 또는 휴대용 전자 장치로 구현될 수 있다.
상기 휴대용 전자 장치는 랩탑 컴퓨터(laptop computer), 스마트폰(smart phone), 태블릿(tablet) PC, PDA(personal digital assistant), PMP(portable multimedia player), 휴대용 게임 콘솔(handheld game console), 또는 모바일 인터넷 장치(mobile internet device(MID))로 구현될 수 있다.
처리 장치(110)는 인쇄 회로 기판(printed circuit board(PCB)), 시스템 온 칩(system on chip(SoC)) 또는 애플리케이션 프로세서(application processor)로 구현될 수 있다.
처리 장치(110)는 CPU(central processing unit; 113), 그래픽스 프로세싱 유닛(graphics processing unit(GPU); 115), 메모리 컨트롤러(117), 메모리(119), 및 입출력 인터페이스(121)를 포함한다.
CPU(113)는 버스(111)를 통해 GPU(115), 메모리 컨트롤러(117), 및 입출력 인터페이스(121)를 제어할 수 있다.
CPU(113)는 애플리케이션, 예컨대 3D 애플리케이션 또는 3D 게임 애플리케이션을 실행시킬 수 있다.
상기 3D 애플리케이션 또는 상기 3D 게임 애플리케이션이 실행됨에 따라, 상기 3D 애플리케이션 또는 상기 3D 게임 애플리케이션은 3D 애플리케이션 프로그래밍 인터페이스 명령들(application programming interface(API) commands)을 출력한다.
상기 3D API 명령들에 따라 3D 컴퓨터 그래픽스를 표현하기(render) 위해, 애플리케이션들에서 사용되는 3D API, 예컨대 OpenGLTM 또는 Direct3DTM가 실행될 수 있다.
GPU(115)는 CPU(113)의 제어에 따라 컴퓨터 그래픽(computer graphics)에 관련된 데이터 스트림(data stream)을 매우 효과적으로 처리할 수 있다.
GPU(115)는 그래픽스 파이프라인을 포함하는 그래픽스 프로세서(graphics processor)의 일 예이다.
GPU(115)는 점들(points) 각각에 테셀레이션 팩터들(tessellation factors) 각각을 할당하고, 상기 점들 각각의 주위(예컨대, 상기 점들 중에서 대응되는 점, 상기 대응되는 점을 포함하는 면(face), 또는 상기 대응되는 점을 포함하는 모서리 (egde))에 점별로 할당된 테셀레이션 팩터에 해당하는 새로운 점(들)(예컨대, 테셀레이트된 점(들))을 생성하고, 상기 점들과 상기 새로운 점(들)을 이용하여 프리미티브 패턴(들)(primitive pattern(s))을 생성할 수 있다.
본 명세서에서, 새로운 점(들)은 하나의 새로운 점 또는 그 이상의 새로운 점들을 포함하는 의미로 사용된다. 또한, 프리미티브 패턴(들)은 하나의 프리미티브 패턴 또는 그 이상의 프리미티브 패턴들을 포함한다.
예컨대, 특정한 점에 할당된 특정한 테셀레이션 팩터가 0(zero) 또는 어떠한 새로운 점도 생성하지 말라는 정보(또는 의미)를 포함할 때, 상기 특정한 점의 주위에는 새로운 점(들)이 생성되지 않을 수 있다.
본 명세서에서 점(point)은 입력 패치(patch)에 포함된 꼭지점(vertex) 또는 제어 점(control point)을 의미할 수 있다.
상기 입력 패치는 쿼드 패치(quad patch), 트라이 패치(tri patch), 또는 아이소라인(isoline)을 의미할 수 있다.
메모리 컨트롤러(117)는, CPU(113) 또는 GPU(115)의 제어에 따라, 메모리 (119)로 데이터를 라이트하거나 또는 메모리(119)로부터 데이터를 리드할 수 있다.
메모리(119)는 CPU(113) 또는 GPU(115)에서 처리될(또는 처리된) 데이터를 저장할 수 있고, 휘발성 메모리 및/또는 불휘발성 메모리로 구현될 수 있다.
메모리(119)는 운영 체계(operating system(OS)), 애플리케이션 프로그램들, 다른 프로그램 모듈들 및/또는 프로그램 데이터를 저장할 수 있다.
실시 예에 따라, 메모리(119)는 시스템 메모리로서 사용될 수 있다. 또한, 메모리(119)는 본 발명의 실시 예에 따른 점별로 테셀레이션 팩터를 할당하기 위한 API를 저장할 수 있다.
도 1에서는 메모리(119)가 처리 장치(110)에 내장된 형태로 도시되어 있으나, 실시 예에 따라 메모리(119)는 처리 장치(110)의 외부에 구현될 수도 있다.
처리 장치(110)의 외부에 구현된 메모리(예컨대, 119)는 DRAM(dynamic random access memory), 하드디스크 드라이브(hard disk drive), 솔리드 스테이트 드라이브(solid state drive), 제거할 수 있는 저장 매치(removable storge media) 또는 제거할 수 없는(non-removable) 저장 매체로 구현될 수 있다.
예컨대, 상기 외부에 구현된 메모리(예컨대, 119)는 UFS(universal flash storage), eMMC(embedded multimedia card) 또는 USB(universal serial bus) 플래시 드라이브로 구현될 수 있다.
처리 장치(110)는 입출력 인터페이스(121)를 통해 입출력 장치(130)와 통신할 수 있다.
입출력 장치(130)는 컴퓨터 그래픽스를 디스플레이할 수 있는 평판 디스플레이로 구현될 수 있다. 상기 평판 디스플레이는 GPU(115)에 의해 처리된 신호들을 디스플레이할 수 있다.
도 2는 도 1에 도시된 그래픽스 프로세싱 유닛의 파이프라인의 실시 예를 나타낸다.
본 발명의 특유한 기술적 사상이 포함된 스테이지들(115-3A/115-3B 및 115-4A)을 제외한 나머지 스테이지들(115-1, 115-2, 및 115-5~115-10)의 기능과 동작은 마이크로소프트 Direct3DTM 11의 그래픽스 파이프라인에 포함된 동일한 이름을 갖는 스테이지들의 기능과 동작과 동일하다.
따라서 나머지 스테이지들(115-1, 115-2, 및 115-5~115-10)에 대한 상세한 설명은 생략한다.
또한, 본 발명의 특유한 기술적 사상이 포함된 스테이지들(115-3A/115-3B 및 115-4A)은 점별로 테셀레이션 팩터를 할당하고, 상기 점별로 할당된 테셀레이션 팩터를 이용하여 테셀레이션 작동을 수행하는 다양한 그래픽스 파이프라인에서 사용될 수 있다.
메모리 리소스들은 메모리(119)이거나 또는 GPU(115)에 의해서 액세스될 수 있는 별도의 메모리(미 도시)일 수 있다.
도 3은 본 발명의 일 실시 예에 따른 헐-쉐이더와 테셀레이터의 동작을 설명하기 위한 개념도이다.
도 2와 도 3을 참조하면, 헐 쉐이더(115-3A)는 입력 점들(ICP), 예컨대 입력 꼭지점들(input vertices) 또는 입력 제어 점들(input controll points) 각각에 할당될 테셀레이션 팩터를 계산할 수 있다(201).
상기 테셀레이션 팩터는 LOD(level of detail)을 의미하는 것으로서, 정수 또는 소수(decimal fraction)일 수 있다.
헐 쉐이더(115-3A)에서, 상기 테셀레이션 팩터는 다양한 알고리즘들을 이용하여 계산될 수 있다.
상기 다양한 알고리즘들 중 하나는 깊이 비교(depth comparison) 알고리즘이다. 즉, 사용자-정의된 기준들(user-defined criteria) 또는 사용자-정의된 알고리즘에 따라, 사용자의 가상의 눈(EYE)에서 가까운 점에 대한 테셀레이션 팩터는 큰 값으로 설정되고 눈(EYE)에서 먼 점에 대한 테셀레이션 팩터는 작은 값으로 설정될 수 있다.
도 4에 예시적으로 도시된 바와 같이, 헐 쉐이더(115-3A)에 의해, 점(Pd1)의 깊이 값이 제1기준 깊이 값(UD1)보다 작을 때 테셀레이션 팩터(TF)는 2로 설정되고, 점(Pd2)의 깊이 값이 제1기준 깊이 값(UD1)과 제2기준 깊이 값(UD2) 사이에 존재할 때 테셀레이션 팩터(TF)는 1로 설정되고, 점(Pd3)의 깊이 값이 제2기준 깊이 값(UD2)보다 클 때 테셀레이션 팩터(TF)는 0으로 설정될 수 있다. 예컨대, 각 점(Pd1, Pd2, 및 Pd3)은 가상의 점일 수 있다.
상기 다양한 알고리즘들 중 다른 하나는 곡률(curvature) 비교 알고리즘이다. 상기 곡률은 다양한 방법들로 계산될 수 있다.
헐 쉐이더(115-3A)에 의해 계산된 테셀레이션 팩터는 최종적으로 점별로 할당된다(203).
할당 동작은 표면들(surfaces)을 테셀레이팅하는 테셀레이션 과정 동안 수행된다.
상기 표면들은 파라메트릭 표면들(parametric surfaces), 서브디비젼 표면들 (subdivision surfaces), 트라이앵글 메시들(triangle meshes) 또는 곡선들 (curves)을 포함한다. 현실적인 3차원-물체(realistic three-dimensional object)의 외관(appearance)은 상기 표면들을 이용하여 표현(represent)될 수 있다.
종래에는 테셀레이션 팩터가 모서리(edge)별로 할당되었으나, 본 발명에서는 테셀레이션 팩터가 점(point)별로 할당된다. 즉, 종래에는 모서리마다 하나의 테셀레이션 팩터가 할당되었으나, 본 발명에서는 모서리마다 두 개의 테셀레이션 팩터들이 할당될 수 있다.
따라서, 본 발명은 모서리별로 또는 면별로 테셀레이션 팩터를 할당하는 것보다, 좀 더 정밀하게 적응할 수 있는 테셀레이션(adaptive tessellation)을 수행할 수 있는 효과가 있다.
실시 예에 따라, 헐 쉐이더(115-3A)로부터 출력된 출력 점들(OCP)과 출력 점들(OCP) 각각에 할당된 테셀레이션 팩터들(TFs) 각각은 테셀레이터(115-4A)로 제공될 수 있다.
출력 점들(OCP)은 꼭지점들 또는 제어 점들일 수 있다.
헐 쉐이더(115-3A)는 입력 점들(ICP)의 세트(set)를 출력 점들(OCP)의 세트로 변환(transform)할 수 있다. 실시 예들에 따라, 입력 점들(ICP)의 개수와 출력 점들(OCP)의 개수는 서로 동일하게 설계될 수도 있고 서로 다르게 설계될 수도 있다. 즉, 헐 쉐이더(115-3A)를 어떻게 프로그램하느냐에 따라 출력 점들(OCP)의 개수가 결정될 수 있다.
본 명세서에서는 설명의 편의를 위해, 입력 점들(ICP)의 개수와 출력 점들 (OCP)의 개수는 서로 동일하다고 가정하나, 본 발명의 기술적 사상은 입력 점들 (ICP)의 개수와 출력 점들 (OCP)의 개수가 서로 다를 때에도 그대로 적용될 수 있다.
따라서, 본 명세서에서는 패치에 포함된 점들은 입력 점들(ICP) 또는 출력 점들(OCP)을 의미하는 것으로 해석된다.
헐 쉐이더(115-3A)는 출력 점들(OCP)과 패치 상수 데이터(patch constant data)를 도메인 쉐이더(115-5)로 출력할 수 있다.
상기 패치 상수 데이터는 점별로 할당된 테셀레이션 팩터와, 테셀레이션 파이프라인에서 사용되는 패치 방정식(patch equation)에 관련된 값들을 포함할 수 있다.
테셀레이션 파이프라인은 테셀레이션, 또는 테셀레이션 단계(tessellation stage)라고도 불리며, 헐 쉐이더(또는 헐 쉐이더 스테이지; 115-3A 또는 115-3B), 테셀레이터(또는 테셀레이터 스테이지; 115-4A), 및 도메인 쉐이더(또는 도메인 쉐이더 스테이지; 115-5)를 포함한다.
예컨대, 상기 패치 방정식은 곡선(curve) 방정식 또는 표면(surface) 방정식일 수 있다. 예컨대, 상기 곡선 방정식은 에르미트 곡선(Hermite curve) 방정식, 베지어 곡선(Bezier curve) 방정식, 넙스 곡선(NURBS curve) 방정식, 또는 B-스플라인 곡선(B-spline curve) 방정식일 수 있다.
상기 패치 방정식에 관련된 상기 값들은 상기 패치 방정식의 계수들 (coefficients)일 수 있다.
헐 쉐이더(115-3A)는 프로그램된 기준들(programmed criteria)에 따라 입력 점들(ICP)에 대한 출력 값들(TFs와 OCP)을 생성할 수 있다.
예컨대, 상기 출력 값들은 점들(ICP 또는 OCP)에 관련된 패치 방정식과 점들 (ICP 또는 OCP) 각각에 할당된 테셀레이션 팩터들(TFs) 각각을 포함할 수 있다.
출력 값들(TFs와 OCP)은 테셀레이터(115-4A)로 출력될 수 있다.
다른 실시 예에 따라, 점들(ICP 또는 OCP) 각각에 할당된 테셀레이션 팩터는 GPU(115)와 메모리 컨트롤러(117)의 제어에 따라 테셀레이션 전에 제1메모리 영역 (119-1)에 미리 저장될 수 있다. 이 경우, 제1메모리 영역(119-1)에 저장된 점들 (ICP 또는 OCP) 각각에 할당된 각 테셀레이션 팩터는 테셀레이터(115-4A)로 제공될 수 있다.
도 5에 도시된 바와 같이, 출력 점들(OCP) 각각에 할당된(또는 할당될) 테셀레이션 팩터는 출력 점들(OCP) 각각에 대한 속성들(attributes)을 저장하는 제1메모리 영역(119-1)에 저장될 수 있다.
예컨대, 각 출력 점에 상응하는 각 꼭지점(Vertex0~Vertex3)의 속성들은 각 위치(PST0~PST3), 각 컬러(CLR0~CLR3), 각 법선 벡터(NORMAL0~NORMAL3), 각 텍스처 좌표(Tex_coord0~Tex_coord3), 및 각 테셀레이션 팩터(TF0~TF3)를 포함한다.
각 컬러(CLR0~CLR3)는 RGB 데이터, YUV 데이터, YCbCr 데이터, 또는 YCoCg 데이터일 수 있다.
각 출력 점은 위치(position)와 법선 벡터(normal vector) 중에서 적어도 하나를 포함하는 기하학적인 데이터(geometric data)를 나타낼 수 있다.
또한, 각 출력 점은 3차원 그래픽스 파이프라인에서 위치, 법선 벡터, 및 텍스쳐 좌표를 포함하는 속성들을 갖는 꼭지점(vertex)을 나타낼 수 있다.
도 6에 도시된 바와 같이, 출력 점들(OCP) 각각에 할당된(또는 할당될) 테셀레이션 팩터는 출력 점들(OCP) 각각에 대한 속성들(attributes)을 저장하는 제1메모리 영역(119-1)과 다른 제2메모리 영역(119-2)에 저장될 수 있다.
테셀레이터(115-4A)는, 출력 점들(OCP) 각각과 출력 점들(OCP) 각각에 할당된 테셀레이션 팩터를 이용하여, 출력 점들(OCP) 각각에 대한 새로운 점들을 생성할 수 있다(205).
테셀레이터(115-4A)는 출력 점들(OCP) 및/또는 생성된 새로운 점들을 이용하여 프리미티브 패턴들을 생성하고, 틈이 생겼을 때 상기 틈을 제거하기 위한 스티칭 과정(stitching process)을 수행할 수 있다(207).
테셀레이터(115-4A)에 의해 테셀레이트된 (도메인) 점들(TDP)의 UV 좌표들(또는 UVW 좌표)과, 상기 UV좌표들(또는 상기 UVW 좌표들)의 연결 관계 (connectivity relationship)를 정의하는 토폴로지 정보(TI)를 포함하는 프리미티브 패턴들은 도메인 쉐이더(115-5)로 전송될 수 있다.
실시 예에 따라, 출력 점들(OCP)은 상기 프리미티브 패턴들과 함께 도메인 쉐이더(115-5)로 전송될 수도 있다.
도 7은 본 발명의 다른 실시 예에 따른 헐-쉐이더와 테셀레이터의 동작을 설명하기 위한 다른 개념도이다.
도 2와 도 7을 참조하면, 헐 쉐이더(115-3B)는 입력 점들(ICP)과 테셀레이션 팩터들(TFs)을 수신하고, 출력 점들(OCP) 각각에 테셀레이션 팩터들(TFs) 각각을 할당할 수 있다(203A).
테셀레이터(115-4A)는, 헐 쉐이더(115-3B)로부터 출력된 출력 점들(OCP) 각각과 출력 점들(OCP) 각각에 할당된 테셀레이션 팩터를 이용하여, 출력 점들(OCP) 각각에 대한 새로운 점 또는 새로운 점들을 생성할 수 있다(205).
테셀레이터(115-4A)는 출력 점들(OCP) 각각과 생성된 새로운 점들 각각을 이용하여 프리미티브 패턴들을 생성하고, 틈이 생겼을 때 상기 틈을 제거하기 위한 스티칭 과정(stitching process)을 수행할 수 있다(207).
테셀레이터(115-4A)에 의해 테셀레이트된 (도메인) 점들(TDP)의 UV 좌표들(또는 UVW 좌표)과, 상기 UV좌표들(또는 상기 UVW 좌표들)의 연결 관계를 정의하는 토폴로지 정보(TI)를 포함하는 프리미티브 패턴들은 도메인 쉐이더(115-5)로 전송될 수 있다.
실시 예에 따라, 출력 점들(OCP)은 상기 프리미티브 패턴들과 함께 도메인 쉐이더(115-5)로 전송될 수도 있다.
입력 점들(ICP)을 포함하는 입력 패치가 파라메트릭 표면에 포함될 때, 테셀레이터(115-4)는 출력 점들(OCP) 각각과 출력 점들(OCP) 각각에 할당된 테셀레이션 팩터를 이용하여 테셀레이트된 도메인 점들(TDP)을 생성할 수 있다.
입력 점들(ICP)을 포함하는 입력 패치가 서브디비젼 표면 또는 트라이앵글 메시에 포함될 때, 테셀레이터(115-4)는 출력 점들(OCP) 각각과 출력 점들(OCP) 각각에 할당된 테셀레이션 팩터를 이용하여 기본 메시를 세분화할 수 있다.
도 8부터 도 12는 본 발명의 실시 예들에 따른 헐-쉐이더와 테셀레이터의 동작을 설명하기 위한 개념도들이다.
도 1부터 도 3, 도 7, 및 도 8을 참조하면, 헐 쉐이더(115-3A 또는 115-3B)는 입력 점들(P1, P2, 및 P3)을 수신한다. 예컨대, 입력 점들(P1, P2, 및 P3)은 입력 패치 또는 입력 프리미티브를 구성할 수 있다.
상술한 바와 같이, 출력 점들(OCP)은 입력 점들(ICP)과 동일하다고 가정했으므로, 이하에서 점은 입력 점 또는 출력 점을 의미한다.
도 3과 도 8의 (a)에 도시된 바와 같이, 헐 쉐이더(115-3A)는 다양한 알고리즘들을 이용하여 각 점(P1, P2, 및 P3)에 대한 테셀레이션 팩터(TF1, TF2, 및 TF3)를 계산하고, 각 테셀레이션 팩터(TF1, TF2, 및 TF3)를 각 점(P1, P2, 및 P3)에 할당할 수 있다.
도 7과 도 8의 (a)에 도시된 바와 같이, 헐 쉐이더(115-3B)는 각 점(P1, P2, 및 P3)에 대한 테셀레이션 팩터(TF1, TF2, 및 TF3)를 외부, 예컨대 메모리(119)로부터 수신하고, 각 테셀레이션 팩터(TF1, TF2, 및 TF3)를 각 점(P1, P2, 및 P3)에 할당할 수 있다.
예컨대, 헐 쉐이더(115-3A 또는 115-3B)는 제1점(P1)에 제1테셀레이션 팩터 (TF1(=1))를 할당하고, 제2점(P2)에 제2테셀레이션 팩터(TF2(=2))를 할당하고, 제3점(P3)에 제3테셀레이션 팩터(TF3(=0))를 할당할 수 있다.
도 8의 (b)에 도시된 바와 같이, 테셀레이터(115-4A)는 각 점(P1, P2, 및 P3)과 각 점(P1, P2, 및 P3)에 할당된 테셀레이션 팩터(TF1, TF2, 및 TF3)를 헐 쉐이더(115-3A 또는 115-3B)로부터 수신한다.
테셀레이터(115-4A)는 각 점(P1, P2, 및 P3)의 주위에 각 점(P1, P2, 및 P3)에 할당된 테셀레이션 팩터(TF1, TF2, 및 TF3)에 상응하는 새로운 점(즉, 테셀레이트된 점)을 생성할 수 있다.
제1점(P1)을 기준으로 할 때, 상기 주위는 제1점(P1), 제1점(P1)을 포함하는 모서리, 또는 제1점(P1)을 포함하는 면(face)일 수 있다.
예컨대, 특정한 점에 0이 아닌 특정한 값(예컨대, 정수 또는 소수)을 갖는 테셀레이션 팩터가 할당될 때, 테셀레이터(115-4A)에 프로그램된 프로그램에 따라, 테셀레이터(115-4A)는 상기 특정한 값과 동일한 개수의 새로운 점(들)을 생성하거나 또는 상기 특정한 값과 다른 개수의 새로운 점(들)을 생성할 수 있다.
예컨대, 상기 특정한 점에 할당된 상기 테셀레이션 팩터가 N(자연수, N은 2보다 크거나 같을 때)일 때, 상기 프로그램에 따라 테셀레이터(115-4A)는 N개의 새로운 점들, 2N개의 새로운 점들, 또는 (N-1)개의 새로운 점(들)을 생성할 수 있다.
각 점(P1, P2, 및 P3)이 파라메트릭 표면의 패치에 포함될 때, 테셀레이터 (115-4A)는 점(P1, P2, 및 P3)별로 할당된 테셀레이션 팩터(TF1, TF2, 및 TF3)에 상응하는 테셀레이트된 도메인 점(들)(tessellated domain point(s))을 생성할 수 있다.
각 점(P1, P2, 및 P3)이 서브디비젼 표면의 패치 또는 트라이앵글 메시의 패치에 포함될 때, 테셀레이터(115-4A)는 점(P1, P2, 및 P3)별로 할당된 테셀레이션 팩터(TF1, TF2, 및 TF3)를 이용하여 기본 메시들(basic mesh) 각각을 세분화 (refine)할 수 있다.
설명의 편의를 위해, 테셀레이터(115-4A)는 제1점(P1), 제2점(P2), 및 제3점 (P3)의 순서로 새로운 점(들)을 생성한다고 가정한다. 그러나, 실시 예에 따라 상기 순서는 변경될 수 있다.
예컨대, 테셀레이터(115-4A)는 제1점(P1)에 할당된 제1테셀레이션 팩터 (TF1(=1))를 이용하여 제1모서리(EG1)의 중점(midpoint)에 하나의 새로운 점(NP1)을 생성하고, 제2모서리(EG2)의 중점에 하나의 새로운 점(NP2)을 생성할 수 있다.
테셀레이터(115-4A)는 제2점(P2)에 할당된 제2테셀레이션 팩터(TF2(=2))를 이용하여 새로운 점(NP1)과 제2점(P2)의 중점에 새로운 점(NP3)을 생성하고, 제3모서리(EG3)에 새로운 2개의 점들(NP4와 NP5)을 생성할 수 있다.
현재 점(P2)에 대한 2개의 새로운 점들(NP1과 NP3)은 이전 점(P1)에 할당된 제1테셀레이션 팩터(TF1)에 의해 생성된 점(NP1)을 포함할 수 있다.
즉, 새로운 점(NP1)은 제1테셀레이션 팩터(TF1(=1))에 의해 생성됨 점임과 동시에 제2테셀레이션 팩터(TF2(=2))에 의해 생성된 점일 수 있다.
이전 점(P1)과 현재 점(P2)이 제1모서리(EG1)를 공유할 때, 제1모서리(EG1)의 일부에는 이전 점(P1)에 할당된 제1테셀레이션 팩터(TF1(=1)에 상응하는 새로운 점(NP1)이 생성되고, 제1모서리(EG1)의 나머지 일부에는 현재 점(P2)에 할당된 제2테셀레이션 팩터(TF1(=2)에 상응하는 새로운 점들(NP1과 NP3)이 생성될 수 있다.
이때, 이전 점(P1)에 대해 새로운 점(NP1)이 이미 생성된 경우, 테셀레이터 (115-4A)는 현재 점(P2)에 대해 새로운 점(즉, NP1)을 중복해서 생성하지 않을 수 있다.
각 모서리(EG1, EG2, 및 EG3)에 새로운 점(들)이 모두 생성되면, 테셀레이터 (115-4A)는 점들(P1, P2, 및 P3) 각각 및/또는 새로운 점들(NP1-NP5) 각각에 대한 연결 관계를 나타내는 연결 정보(connectivity information), 즉 토폴로지 정보 (topology information)를 생성할 수 있다.
상기 연결 정보는 스티칭 과정에 사용될 수 있다.
도 8의 (c)에 도시된 바와 같이, 테셀레이터(115-4A)는 생성된 연결 정보에 기초하여 프리미티브 패턴들(또는 프리미티브들)을 생성할 수 있다.
이때, 틈(crack)이 생성될 때 테셀레이터(115-4A)는 상기 틈을 제거하기 위한 프리미티브를 생성할 수 있다. 예컨대, 상기 프리미티브는 점들(NP1, NP2, 및 NP4)을 포함할 수 있다.
도 3과 도 9의 (a)에 도시된 바와 같이, 헐 쉐이더(115-3A)는 다양한 알고리즘들을 이용하여 각 점(P11, P12, P13, 및 P14)에 대한 테셀레이션 팩터(TF1, TF2, TF3, 및 TF4)를 계산하고, 각 테셀레이션 팩터(TF1, TF2, TF3, 및 TF4)를 각 점 (P11, P12, P13, 및 P14)에 할당할 수 있다.
도 7과 도 9의 (a)에 도시된 바와 같이, 헐 쉐이더(115-3B)는 각 점(P11, P12, P13, 및 P14)에 대한 테셀레이션 팩터(TF1, TF2, TF3, 및 TF4)를 외부로부터 수신하고, 각 테셀레이션 팩터(TF1, TF2, TF3, 및 TF4)를 각 점(P11, P12, P13, 및 P14)에 할당할 수 있다.
예컨대, 헐 쉐이더(115-3A)는 제1점(P11)에 제1테셀레이션 팩터(TF1(=0))를 할당하고, 제2점(P12)에 제2테셀레이션 팩터(TF2(=1))를 할당하고, 제3(P13)에 제3테셀레이션 팩터(TF3(=0))를 할당하고, 제4점(P14)에 제4테셀레이션 팩터(TF4(=0))를 할당한다.
도 9의 (b)에 도시된 바와 같이, 테셀레이터(115-4A)는 각 점(P11, P12, P13, 및 P14)과 각 점(P11, P12, P13, 및 P14)에 할당된 테셀레이션 팩터(TF1, TF2, TF3, 및 TF4)를 헐 쉐이더(115-3A 또는 115-3B)로부터 수신한다.
제1점(P11)에 제1테셀레이션 팩터(TF1(=0))가 할당되어 있으므로, 테셀레이터(115-4A)는 제1점(P11)의 주위에 새로운 점(들)을 생성하지 않는다.
테셀레이터(115-4A)는 제2점(P12)의 주위에 점(P12)에 할당된 테셀레이션 팩터(TF2=1)에 상응하는 새로운 점(들)을 생성할 수 있다.
설명의 편의를 위해, 테셀레이터(115-4A)는 제1점(P11), 제2점(P12), 제3점 (P13), 및 제4점(P14)의 순서로 새로운 점들을 생성한다고 가정한다. 그러나, 실시 예에 따라 상기 순서는 변경될 수 있다.
예컨대, 테셀레이터(115-4A)는 제2점(P12)에 할당된 제2테셀레이션 팩터 (TF1(=1))를 이용하여 제1모서리(EG11)의 중점에 하나의 새로운 점(NP11)을 생성하고, 제2모서리(EG12)의 중점에 하나의 새로운 점(NP12)을 생성하고, 제2점(P12)을 포함하는 면(FACE11)의 중앙에 새로운 점(NP13)을 생성할 수 있다.
예컨대, 테셀레이터(115-4A)는 제2점(P12)에 할당된 제2테셀레이션 팩터 (TF1(=1))를 이용하여 제2점(P12)의 주위(EG11, EG12, 및 FACE11)에 3개의 새로운 점들(NP11, NP12, 및 NP13)을 생성할 수 있다.
제2점(P12)의 주위(EG11, EG12, 및 FACE11)에 3개의 새로운 점들(NP11, NP12, 및 NP13)이 모두 생성되면, 테셀레이터(115-4A)는 점들(P11, P12, P13, 및 P14) 각각 및/또는 새로운 점들(NP11, NP12, 및 NP13) 각각에 대한 연결 관계를 나타내는 연결 정보를 생성한다.
도 9의 (c)에 도시된 바와 같이, 테셀레이터(115-4A)는 생성된 연결 정보에 기초하여 프리미티브들을 생성할 수 있다.
네 개의 틈들이 발생할 때, 테셀레이터(115-4A)는 상기 네 개의 틈들을 제거하기 위한 4개의 프리미티브들을 생성할 수 있다. 상기 4개의 프리미티브들 각각은 빗금으로 표현된다.
도 3과 도 10의 (a)에 도시된 바와 같이, 헐 쉐이더(115-3A)는 다양한 알고리즘들을 이용하여 각 점(P21, P22, P23, 및 P24)에 대한 테셀레이션 팩터(TF1, TF2, TF3, 및 TF4)를 계산하고, 각 테셀레이션 팩터(TF1, TF2, TF3, 및 TF4)를 각 점(P21, P22, P23, 및 P24)에 할당할 수 있다.
도 7과 도 10의 (a)에 도시된 바와 같이, 헐 쉐이더(115-3B)는 각 점(P21, P22, P23, 및 P24)에 대한 테셀레이션 팩터(TF1, TF2, TF3, 및 TF4)를 외부로부터 수신하고, 각 테셀레이션 팩터(TF1, TF2, TF3, 및 TF4)를 각 점(P21, P22, P23, 및 P24)에 할당할 수 있다.
예컨대, 헐 쉐이더(115-3A 또는 115-3B)는 제1점(P21)에 제1테셀레이션 팩터(TF1(=1))를 할당하고, 제2점(P22)에 제2테셀레이션 팩터(TF2(=1))를 할당하고, 제3점(P23)에 제3테셀레이션 팩터(TF3(=0))를 할당하고, 제4점(P24)에 제4테셀레이션 팩터(TF4(=0))를 할당한다.
도 10의 (b)에 도시된 바와 같이, 테셀레이터(115-4A)는 각 점(P21, P22, P23, 및 P24)과 각 점(P21, P22, P23, 및 P24)에 할당된 테셀레이션 팩터(TF1, TF2, TF3, 및 TF4)를 헐 쉐이더(115-3A 또는 115-3B)로부터 수신한다.
테셀레이터(115-4A)는 제1점(P21)의 주위에 점(P21)에 할당된 제1테셀레이션 팩터(TF2=1)에 상응하는 새로운 점들을 생성할 수 있다.
설명의 편의를 위해, 테셀레이터(115-4A)는 제1점(P21), 제2점 (P22), 제3점 (P23), 및 제4점(P24)의 순서로 새로운 점들을 생성한다고 가정한다. 그러나, 실시 예에 따라 상기 순서는 변경될 수 있다.
예컨대, 테셀레이터(115-4A)는 제1점(P21)에 할당된 제1테셀레이션 팩터 (TF1(=1))를 이용하여 제1모서리(EG21)의 중점에 하나의 새로운 점(NP21)을 생성하고, 제2모서리(EG22)의 중점에 하나의 새로운 점(NP22)을 생성하고, 제1점(P21)을 포함하는 면(FACE21)의 중앙에 새로운 점(NP23)을 생성한다.
테셀레이터(115-4A)는 제2점(P22)에 할당된 제2테셀레이션 팩터(TF2(=1))를 이용하여 제3모서리(EG23)의 중점에 하나의 새로운 점(NP24)을 생성할 수 있다.
이때, 제1모서리(EG21)의 중점에는 하나의 새로운 점(NP21)이 이미 생성되어 있고 면(FACE21)의 중앙에는 새로운 점(NP23)이 이미 생성되어 있으므로, 테셀레이터(115-4A)는 제1모서리(EG21)와 면(FACE21) 각각에 새로운 점을 생성하지 않을 수 있다.
테셀레이터(115-4A)는 제3점(P23)에 할당된 제3테셀레이션 팩터(TF3(=0))에 기초하여 새로운 점을 생성하지 않고, 제4점(P24)에 할당된 제4테셀레이션 팩터 (TF4(=0))에 기초하여 새로운 점을 생성하지 않는다.
점들(P21과 P22)의 주위(EG21, EG22, EG23, 및 FACE21)에 새로운 점들(NP21, NP22, NP24, 및 NP23)이 모두 생성되면, 테셀레이터(115-4A)는 점들(P21, P22, P23, 및 P24) 각각 및/또는 새로운 점들(NP21, NP22, NP23, 및 NP24) 각각에 대한 연결 관계를 나타내는 연결 정보를 생성한다.
도 10의 (c)에 도시된 바와 같이, 테셀레이터(115-4A)는 생성된 연결 정보에 기초하여 프리미티브들을 생성할 수 있다.
이때, 세 개의 틈들이 발생할 때, 테셀레이터(115-4A)는 상기 세 개의 틈들을 제거하기 위한 3개의 프리미티브들을 생성할 수 있다. 상기 3개의 프리미티브들 각각은 빗금으로 표현된다.
도 3과 도 11의 (a)에 도시된 바와 같이, 헐 쉐이더(115-3A)는 다양한 알고리즘들을 이용하여 각 점(P31, P32, P33, 및 P34)에 대한 테셀레이션 팩터(TF1, TF2, TF3, 및 TF4)를 계산하고, 각 테셀레이션 팩터(TF1, TF2, TF3, 및 TF4)를 각 점(P31, P32, P33, 및 P34)에 할당한다.
도 7과 도 11의 (a)에 도시된 바와 같이, 헐 쉐이더(115-3B)는 각 점(P31, P32, P33, 및 P34)에 대한 테셀레이션 팩터(TF1, TF2, TF3, 및 TF4)를 외부로부터 수신하고, 각 테셀레이션 팩터(TF1, TF2, TF3, 및 TF4)를 각 점(P31, P32, P33, 및 P34)에 할당한다.
예컨대, 헐 쉐이더(115-3A 또는 115-3B)는 제1점(P31)에 제1테셀레이션 팩터(TF1(=0))를 할당하고, 제2점(P32)에 제2테셀레이션 팩터(TF2(=1))를 할당하고, 제3점(P33)에 제3테셀레이션 팩터(TF3(=0))를 할당하고, 제4점(P34)에 제4테셀레이션 팩터(TF4(=1))를 할당할 수 있다.
도 11의 (b)에 도시된 바와 같이, 테셀레이터(115-4A)는 각 점 (P31, P32, P33, 및 P34)과 각 점(P31, P32, P33, 및 P34)에 할당된 테셀레이션 팩터(TF1, TF2, TF3, 및 TF4)를 헐 쉐이더(115-3A 또는 115-3B)로부터 수신한다.
테셀레이터(115-4A)는 제2점(P32)의 주위에 제2점(P32)에 할당된 테셀레이션 팩터(TF2=1)에 상응하는 새로운 점(들)을 생성할 수 있다.
설명의 편의를 위해 테셀레이터(115-4A)는 제1점(P31), 제2점 (P32), 제3점(P33), 및 제4점(P34)의 순서로 새로운 점들을 생성한다고 가정한다. 그러나, 실시 예에 따라 상기 순서는 변경될 수 있다.
예컨대, 테셀레이터(115-4A)는 제1점(P31)의 주위에 제1점(P31)에 할당된 테셀레이션 팩터(TF1=0)에 기초하여 새로운 점을 생성하지 않는다.
테셀레이터(115-4A)는 제2점(P32)에 할당된 제2테셀레이션 팩터 (TF2(=1))를 이용하여 제1모서리(EG31)의 중점에 하나의 새로운 점(NP31)을 생성하고, 제2모서리(EG32)의 중점에 하나의 새로운 점(NP32)을 생성하고, 제2점(P32)을 포함하는 면(FACE31)의 중앙에 새로운 점(NP33)을 생성할 수 있다.
테셀레이터(115-4A)는 제3점(P33)의 주위에 제3점(P33)에 할당된 테셀레이션 팩터(TF3=0)에 기초하여 새로운 점을 생성하지 않는다.
테셀레이터(115-4A)는 제4점(P34)에 할당된 제4테셀레이션 팩터(TF4=1)를 이용하여 제3모서리(EG33)의 중점에 하나의 새로운 점(NP34)을 생성하고, 제4모서리(EG34)의 중점에 하나의 새로운 점(NP35)을 생성한다.
이때, 면(FACE31)의 중앙에는 새로운 점(NP33)이 이미 생성되어 있으므로, 테셀레이터(115-4A)는 면(FACE31)에 별도의 새로운 점을 생성하지 않을 수 있다.
점들(P32와 P34)의 주위(EG31, EG32, EG33, EG34, 및 FACE31)에 새로운 점들 (NP31, NP32, NP34, NP35, 및 NP33)이 모두 생성되면, 테셀레이터(115-4A)는 점들 (P31, P32, P33, 및 P34) 각각 및/또는 새로운 점들(NP31, NP32, NP33, NP34, 및 NP35) 각각에 대한 연결 관계를 나타내는 연결 정보를 생성한다.
도 11의 (c)에 도시된 바와 같이, 테셀레이터(115-4A)는 생성된 연결 정보에 기초하여 프리미티브들을 생성할 수 있다.
예컨대, 네 개의 틈들이 발생할 때, 테셀레이터(115-4A)는 상기 네 개의 틈들을 제거하기 위한 4개의 프리미티브들을 생성할 수 있다. 상기 4개의 프리미티브들 각각은 빗금으로 표현된다.
도 3과 도 12의 (a)에 도시된 바와 같이, 헐 쉐이더(115-3A)는 다양한 알고리즘들을 이용하여 각 점(P41, P42, P43, 및 P44)에 대한 테셀레이션 팩터(TF1, TF2, TF3, 및 TF4)를 계산하고, 각 테셀레이션 팩터(TF1, TF2, TF3, 및 TF4)를 각 점(P41, P42, P43, 및 P44)에 할당한다.
도 7과 도 12의 (a)에 도시된 바와 같이, 헐 쉐이더(115-3B)는 각 점(P41, P42, P43, 및 P44)에 대한 테셀레이션 팩터(TF1, TF2, TF3, 및 TF4)를 외부로부터 수신하고, 각 테셀레이션 팩터(TF1, TF2, TF3, 및 TF4)를 각 점(P41, P42, P43, 및 P44)에 할당한다.
예컨대, 헐 쉐이더(115-3A 또는 115-3B)는 제1점(P41)에 제1테셀레이션 팩터(TF1(=1))를 할당하고, 제2점(P42)에 제2테셀레이션 팩터(TF2(=1))를 할당하고, 제3점(P43)에 제3테셀레이션 팩터(TF3(=1))를 할당하고, 제4점(P44)에 제4테셀레이션 팩터(TF4(=1))를 할당할 수 있다.
도 12의 (b)에 도시된 바와 같이, 테셀레이터(115-4A)는 각 점 (P41, P42, P43, 및 P44)과 각 점(P41, P42, P43, 및 P44)에 할당된 테셀레이션 팩터(TF1, TF2, TF3, 및 TF4)를 헐 쉐이더(115-3A 또는 115-3B)로부터 수신한다.
테셀레이터(115-4A)는 제1점(P41)의 주위에 제1점(P41)에 할당된 테셀레이션 팩터(TF1=1)에 상응하는 새로운 점(들)을 생성할 수 있다.
설명의 편의를 위해, 테셀레이터(115-4A)는 제1점(P41), 제2점 (P42), 제3점 (P43), 및 제4점(P44)의 순서로 새로운 점들을 생성한다고 가정한다. 그러나, 실시 예에 따라 상기 순서는 변경될 수 있다.
예컨대, 테셀레이터(115-4A)는 제1점(P41)에 할당된 제1테셀레이션 팩터 (TF1(=1))를 이용하여 제1모서리(EG41)의 중점에 하나의 새로운 점(NP41)을 생성하고, 제2모서리(EG42)의 중점에 하나의 새로운 점(NP42)을 생성하고, 제1점(P41)을 포함하는 면(FACE41)의 중앙에 새로운 점(NP43)을 생성할 수 있다.
테셀레이터(115-4A)는 제2점(P42)에 할당된 제2테셀레이션 팩터 (TF2(=1))를 이용하여 제3모서리(EG43)의 중점에 새로운 점(NP44)을 생성할 수 있다.
제1모서리(EG41)와 면(FACE41) 각각에 새로운 점들(NP41과 NP43) 각각이 이미 생성되어 있으므로, 테셀레이터(115-4A)는 제1모서리(EG41)와 면 (FACE41) 각각에 제2테셀레이션 팩터(TF2(=1))에 해당하는 별도의 새로운 점을 생성하지 않을 수 있다.
테셀레이터(115-4A)는 제3점(P43)에 할당된 제3테셀레이션 팩터(TF3(=1))를 이용하여 제4모서리(EG44)의 중점에 하나의 새로운 점(NP45)을 생성할 수 있다.
이때, 면(FACE41)과 제3모서리(EG43) 각각에 새로운 점들(NP43과 NP44) 각각이 이미 생성되어 있으므로, 테셀레이터(115-4A)는 면(FACE41)과 제3모서리(EG43) 각각에 제3테셀레이션 팩터(TF3(=1))에 해당하는 별도의 새로운 점을 생성하지 않을 수 있다.
제2모서리(EG42), 면(FACE41), 및 제4모서리(EG44) 각각에 새로운 점들 (NP42, NP43, 및 NP45) 각각이 이미 생성되어 있으므로, 테셀레이터(115-4A)는 제2모서리(EG42), 면(FACE41), 및 제4모서리(EG44) 각각에 제4테셀레이션 팩터 (TF4(=1))에 해당하는 별도의 새로운 점(들)을 생성하지 않을 수 있다.
점들(P41, P42, P43, 및 P44)의 주위(EG41, EG42, EG43, EG44, 및 FACE41)에 새로운 점들(NP41, NP42, NP44, NP45, 및 NP43)이 모두 생성되면, 테셀레이터(115-4A)는 점들(P41, P42, P43, 및 P44) 각각 및/또는 새로운 점들(NP41, NP42, NP43, NP44, 및 NP45) 각각에 대한 연결 관계를 나타내는 연결 정보를 생성한다.
도 12의 (c)에 도시된 바와 같이, 테셀레이터(115-4A)는 생성된 연결 정보에 기초하여 프리미티브들을 생성할 수 있다. 이때, 틈을 발생하는 프리미티브는 존재하지 않는다.
도 8부터 도 12를 참조하며 설명한 바와 같이, 점별로 할당된 테셀레이션 팩터에 상응하는 점 또는 상응하는 점들을 모서리 또는 상응하는 점들을 포함하는 면의 어느 위치에 생성할지는 실시 예들에 따라 다양하게 변경될 수 있다.
또한, 하나의 모서리에 두 개의 테셀레이션 팩터들이 할당될 때, 상기 모서리에 몇 개의 새로운 점(들)을 어떤 간격으로 생성할지는 실시 예들에 따라 다양하게 변경될 수 있다.
도 13은 종래의 모서리별로 테셀레이션 팩터를 할당하는 방법과 본 발명의 실시 예에 따른 점별로 테셀레이션 팩터를 할당하는 방법에 따른 곡선 변화를 추적하는 예들을 설명하기 위한 개념도들이다.
도 13의 (a)를 참조하면, 종래의 방법은 2개의 점들(P51과 P52) 사이의 모서리에 할당된 테셀레이션 팩터(TF=A)를 이용하여 곡률의 변화에 무관하게 상기 모서리를 동일한 간격으로 테셀레이트한다.
그러나, 도 13의 (b)를 참조하면, 본 발명은 점(P51과 P52)별로 할당된 각 테셀레이션 팩터(TF51=X와 TF52=Y)를 이용하여 곡률 변화에 적응적으로 모서리를 테셀레이트한다. 여기서, A, X, 및 Y는 정수 또는 소수일 수 있다.
예컨대, 완만한 곡률(smooth curvature)을 갖는 부분은 작은 테셀레이션 팩터(TF51=X)를 이용하여 테셀레이트되고, 급격한 곡률은 갖는 부분은 큰 테셀레이션 팩터(TF52=Y, Y>X)를 이용하여 테셀레이트된다.
본 발명의 실시 예에 따라 점별로 테셀레이션 팩터를 할당하는 방법은, 모서리별로 테셀레이션 팩터를 할당하는 방법 또는 면별로 테셀레이션 팩터를 할당하는 방법에 비해, 더 정밀하게 곡선 변화(CV)를 추적할 수 있는 효과가 있다.
따라서, 본 발명의 실시 예에 따라 점별로 테셀레이션 팩터를 할당하는 방법은 무의미한 테셀레이션과 그래픽스 대역폭 요구를 줄일 수 있는 효과가 있다.
도 14는 본 발명의 실시 예에 따른 헐-쉐이더의 동작과 테셀레이터의 동작을 설명하기 위한 플로우차트이다.
도 1부터 도 14를 참조하면, 헐 쉐이더(115-3A 또는 115-3B)는 입력 패치에 포함된 입력 점들 또는 상기 입력 점들에 관련된 출력 점들 각각에 테셀레이션 팩터들 각각을 할당한다(S110).
상기 테셀레이션 팩터들 각각은 헐 쉐이더((115-3A)에 의해 계산될 수 있고 헐 쉐이더(115-3B)의 외부로부터 입력될 수 있다.
테셀레이터(115-4A)는, 헐 쉐이더(115-3A 또는 115-3B)의 출력 신호들, 예컨대 출력 점들(OCP)과 출력 점들(OCP) 각각에 할당된 테셀레이션 팩터를 이용하여, 각 출력점 주위에 상기 각 출력 점에 할당된 테셀레이션 팩터 만큼의 테셀레이트된 점(들)을 생성한다(S120).
즉, 테셀레이터(115-4A)는 헐 쉐이더(115-3A 또는 115-3B)로부터 출력된 출력 점들(OCP) 중에서 현재 테셀레이션 동작의 대상이 되는 현재 점의 주위에 상기 현재 점에 할당된 테셀레이션 팩터에 해당하는 N(N은 정수 또는 소수)개의 새로운 점을 생성할 수 있다.
테셀레이터(115-4A)는 출력 점들(OCP) 및/또는 테셀레이트된 점(들)에 기초하여 프리미티브 패턴(들)을 생성한다(S130). 이때, 테셀레이터(115-4A)는 틈을 제거하기 위한 스티칭 동작을 수행할 수 있다.
테셀레이터(115-4A)는 출력 점들(OCP), 테셀레이트된 점(들), 및 토폴로지 정보(TI)를 도메인 쉐이더(115-5)로 출력한다(S140).
예컨대, 테셀레이터(115-4A)는 테셀레이트된 점(들)의 UV 좌표(들) 또는 UVW 좌표(들)와 토폴로지 정보를 도메인 쉐이더(115-5)로 출력한다(S140). 상기 토폴로지 정보는 출력 점들의 연결 정보 및/또는 테셀레이트된 점들의 연결 정보를 포함할 수 있다.
도메인 쉐이더(115-5)는 헐 쉐이더(115-3A 또는 115-3B)의 출력들과 테셀레이터(115-4A)의 출력들을 이용하여 꼭지점들의 속성들을 계산할 수 있다(S150).
본 발명은 도면에 도시된 실시 예를 참고로 설명되었으나 이는 예시적인 것에 불과하며, 본 기술 분야의 통상의 지식을 가진 자라면 이로부터 다양한 변형 및 균등한 타 실시 예가 가능하다는 점을 이해할 것이다. 따라서, 본 발명의 진정한 기술적 보호 범위는 첨부된 등록청구범위의 기술적 사상에 의해 정해져야 할 것이다.
100: 전자 시스템
110; 시스템 온 칩
111; 버스
113; CPU
115: GPU
117; 메모리 컨트롤러
119; 메모리
121; 입출력 인터페이스
130; 입출력 장치
115-3, 115-3A, 및 115-3B; 헐 쉐이더(Hull shader)
115-4, 115-4A; 테셀레이터(tessellator)
115-5; 도메인 쉐이더(domain shader)

Claims (20)

  1. 현재 점과 이전 점이 하나의 모서리를 공유할 때, 패치(patch)에 포함된 점들 중에서, 상기 모서리의 일부분에 위치한 상기 현재 점에 제1 테셀레이션 팩터를 할당하고, 상기 모서리의 나머지 부분에 위치한 상기 이전 점에는 상기 제1 테셀레이션 팩터보다 작은 제2 테셀레이션 팩터를 할당하는 단계;
    상기 현재 점의 주위에, 새로운 제1점들을 상기 현재 점에 할당된 상기 제1 테셀레이션 팩터에 상응하는 개수만큼 생성하는 단계;
    상기 이전 점의 주위에, 새로운 제2점들을 상기 이전 점에 할당된 상기 제2 테셀레이션 팩터에 상응하는 개수만큼 생성하는 단계;
    상기 점들, 상기 생성된 제1점들 및 상기 생성된 제2점들을 이용하여 토폴로지 정보를 생성하는 단계; 및
    틈이 있을 때, 상기 토폴로지 정보를 이용하여 상기 틈을 제거하기 위한 적어도 하나의 프리미티브를 생성하는 단계를 포함하며,
    상기 모서리의 일부분은, 상기 모서리의 나머지 부분보다 곡률의 변화가 큰 것을 특징으로 하는 그래픽스 프로세서 (graphics processor)에 의해 그래픽스 파이프라인에서 표면들을 테셀레이팅하는 방법.
  2. 제1항에 있어서,
    상기 점들 각각에 할당된 상기 테셀레이션 팩터는 정수 또는 소수인 테셀레이팅하는 방법.
  3. 제1항에 있어서,
    상기 주위는 상기 현재 점, 상기 현재 점을 포함하는 모서리(edge), 또는 상기 현재 점을 포함하는 면(face)인 테셀레이팅하는 방법.
  4. 제1항에 있어서,
    상기 생성된 제1점들은, 상기 제1 테셀레이션 팩터의 값과 동일한 개수만큼 생성되며,
    상기 생성된 제2점들은, 상기 제2 테셀레이션 팩터의 값과 동일한 개수만큼 생성되고,
    상기 제2 테셀레이션 팩터는 0이 아닌 자연수인 테셀레이팅하는 방법.
  5. 그래픽스 파이프라인에서 표면들(surfaces)을 테셀레이팅하는 테셀레이션 과정을 수행하는 장치에 있어서,
    현재 점과 이전 점이 하나의 모서리를 공유할 때, 패치에 포함된 점들 중에서, 상기 모서리의 일부분에 위치한 상기 현재 점에 제1 테셀레이션 팩터를 할당하고, 상기 모서리의 나머지 부분에 위치한 상기 이전 점에는 상기 제1 테셀레이션 팩터보다 작은 제2 테셀레이션 팩터를 할당하는 헐 쉐이더(Hull shader); 및
    상기 현재 점의 주위에, 새로운 제1점들을 상기 현재 점에 할당된 상기 제1 테셀레이션 팩터에 상응하는 개수만큼 생성하며, 상기 이전 점의 주위에, 새로운 제2점들을 상기 이전 점에 할당된 상기 제2 테셀레이션 팩터에 상응하는 개수만큼 생성하며,
    상기 모서리의 일부분은, 상기 모서리의 나머지 부분보다 곡률의 변화가 큰 것을 특징으로 하는 테셀레이터를 포함하는 장치.
  6. 삭제
  7. 삭제
  8. 제5항에 있어서, 상기 테셀레이터는,
    상기 점들, 상기 생성된 제1점들 및 상기 생성된 제2점들의 접속 관계를 정의하는 토폴로지 정보를 생성하고, 틈이 있을 때 상기 토폴로지 정보에 기초하여 상기 점들, 상기 생성된 제1점들 및 상기 생성된 제2점들을 스티치하여 상기 틈을 제거하는 장치.
  9. 그래픽스 파이프라인을 이용하여 표면들(surfaces)을 테셀레이팅하는 테셀레이션 과정을 수행하는 그래픽스 프로세서에 있어서,
    상기 그래픽스 프로세서는 현재 점과 이전 점이 하나의 모서리를 공유할 때, 패치에 포함된 점들 중에서, 상기 모서리의 일부분에 위치한 상기 현재 점에 제1 테셀레이션 팩터를 할당하고, 상기 모서리의 나머지 부분에 위치한 상기 이전 점에는 상기 제1 테셀레이션 팩터보다 작은 제2 테셀레이션 팩터를 할당하고, 상기 현재 점의 주위에, 새로운 제1점들을 상기 현재 점에 할당된 상기 제1 테셀레이션 팩터에 상응하는 개수만큼 생성하며, 상기 이전 점의 주위에, 새로운 제2점들을 상기 이전 점에 할당된 상기 제2 테셀레이션 팩터에 상응하는 개수만큼 생성하고, 상기 점들, 상기 생성된 제1점들 및 상기 생성된 제2점들을 이용하여 프리미티브들을 생성하며,
    상기 모서리의 일부분은, 상기 모서리의 나머지 부분보다 곡률의 변화가 큰 것을 특징으로 하는 그래픽스 프로세서.
  10. 그래픽스 프로세서; 및
    상기 그래픽스 프로세서에 의해 처리된 신호들을 디스플레이하는 디스플레이를 포함하며,
    상기 그래픽스 프로세서는,
    현재 점과 이전 점이 하나의 모서리를 공유할 때, 패치에 포함된 점들 중에서, 상기 모서리의 일부분에 위치한 상기 현재 점에 제1 테셀레이션 팩터를 할당하고, 상기 모서리의 나머지 부분에 위치한 상기 이전 점에는 상기 제1 테셀레이션 팩터보다 작은 제2 테셀레이션 팩터를 할당하는 헐 쉐이더(Hull shader); 및
    상기 현재 점의 주위에, 새로운 제1점들을 상기 현재 점에 할당된 상기 제1 테셀레이션 팩터에 상응하는 개수만큼 생성하며, 상기 이전 점의 주위에, 새로운 제2점들을 상기 이전 점에 할당된 상기 제2 테셀레이션 팩터에 상응하는 개수만큼 생성하고, 상기 점들, 상기 생성된 제1점들 및 상기 생성된 제2점들을 이용하여 프리미티브들을 생성하며,
    상기 모서리의 일부분은, 상기 모서리의 나머지 부분보다 곡률의 변화가 큰 것을 특징으로 하는 테셀레이터를 포함하는 전자 시스템.
  11. 삭제
  12. 삭제
  13. 삭제
  14. 삭제
  15. 삭제
  16. 삭제
  17. 삭제
  18. 삭제
  19. 삭제
  20. 삭제
KR1020130080048A 2013-07-09 2013-07-09 점별로 테셀레이션 팩터를 할당하는 방법과 상기 방법을 수행할 수 있는 장치들 KR102104057B1 (ko)

Priority Applications (5)

Application Number Priority Date Filing Date Title
KR1020130080048A KR102104057B1 (ko) 2013-07-09 2013-07-09 점별로 테셀레이션 팩터를 할당하는 방법과 상기 방법을 수행할 수 있는 장치들
US14/310,351 US9779547B2 (en) 2013-07-09 2014-06-20 Tessellation method for assigning a tessellation factor per point and device performing the method
JP2014137042A JP2015018551A (ja) 2013-07-09 2014-07-02 点別にテッセレーションファクタを割り当てる方法と、該方法を行う装置
GB1412090.1A GB2518272B (en) 2013-07-09 2014-07-08 Tessellation method for assigning a tessellation factor per point and device performing the method
CN201410324670.9A CN104282035B (zh) 2013-07-09 2014-07-09 用于对每点指派镶嵌因子的镶嵌方法和执行该方法的设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020130080048A KR102104057B1 (ko) 2013-07-09 2013-07-09 점별로 테셀레이션 팩터를 할당하는 방법과 상기 방법을 수행할 수 있는 장치들

Publications (2)

Publication Number Publication Date
KR20150006554A KR20150006554A (ko) 2015-01-19
KR102104057B1 true KR102104057B1 (ko) 2020-04-23

Family

ID=51410763

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020130080048A KR102104057B1 (ko) 2013-07-09 2013-07-09 점별로 테셀레이션 팩터를 할당하는 방법과 상기 방법을 수행할 수 있는 장치들

Country Status (5)

Country Link
US (1) US9779547B2 (ko)
JP (1) JP2015018551A (ko)
KR (1) KR102104057B1 (ko)
CN (1) CN104282035B (ko)
GB (1) GB2518272B (ko)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9697645B2 (en) * 2014-02-25 2017-07-04 The Boeing Company Two-dimensional model of triangular sectors for use in generating a mesh for finite element analysis
GB2533443B (en) * 2015-06-05 2018-06-06 Imagination Tech Ltd Tessellation method using recursive sub-division of triangles
GB2552260B (en) * 2015-06-05 2019-04-10 Imagination Tech Ltd Tessellation method
GB2539042B (en) * 2015-06-05 2019-08-21 Imagination Tech Ltd Tessellation method using displacement factors
US10726619B2 (en) * 2015-10-29 2020-07-28 Sony Interactive Entertainment Inc. Foveated geometry tessellation
US20170358132A1 (en) * 2016-06-12 2017-12-14 Apple Inc. System And Method For Tessellation In An Improved Graphics Pipeline
CN106709982B (zh) * 2016-10-20 2020-03-17 哈尔滨安天科技集团股份有限公司 一种基于连续折线形三维管道的绘制方法及***
US10242496B2 (en) * 2017-04-24 2019-03-26 Intel Corporation Adaptive sub-patches system, apparatus and method
US11010862B1 (en) * 2019-11-14 2021-05-18 Advanced Micro Devices, Inc. Reduced bandwidth tessellation factors

Family Cites Families (31)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7499053B2 (en) * 2000-06-19 2009-03-03 Mental Images Gmbh Real-time precision ray tracing
US6707452B1 (en) 2000-07-19 2004-03-16 Pixar Method and apparatus for surface approximation without cracks
USRE42534E1 (en) 2000-07-28 2011-07-12 Adrian Sfarti Bicubic surface real-time tesselation unit
US6784884B1 (en) 2000-09-29 2004-08-31 Intel Corporation Efficient parametric surface binning based on control points
US7139794B2 (en) 2000-12-27 2006-11-21 3-D-V-U Israel (2000) Ltd. System and methods for network image delivery with dynamic viewing frustum optimized for limited bandwidth communication channels
US6940503B2 (en) 2001-05-10 2005-09-06 Ati International Srl Method and apparatus for processing non-planar video graphics primitives
GB2388507B (en) 2002-05-10 2005-11-09 Imagination Tech Ltd An interface and method of interfacing between a parametric modelling unit and a polygon based rendering system.
US6940505B1 (en) * 2002-05-20 2005-09-06 Matrox Electronic Systems Ltd. Dynamic tessellation of a base mesh
US7142206B1 (en) * 2003-04-08 2006-11-28 Nvidia Corporation Shared N-patch edges
US7446777B2 (en) * 2003-09-26 2008-11-04 Rensselaer Polytechnic Institute System and method of computing and displaying property-encoded surface translator descriptors
US7679615B2 (en) * 2004-05-04 2010-03-16 Iucf-Hyu (Industry-University Cooperation Foundation Hanyang University) Calculating three-dimensional (3D) Voronoi diagrams
JP4255449B2 (ja) 2005-03-01 2009-04-15 株式会社ソニー・コンピュータエンタテインメント 描画処理装置、テクスチャ処理装置、およびテセレーション方法
EP2230925A2 (en) * 2007-12-18 2010-09-29 Diolaiti, Erminio Product tablet and related pack
US7928979B2 (en) * 2008-02-01 2011-04-19 Microsoft Corporation Efficient geometric tessellation and displacement
US8643644B2 (en) 2008-03-20 2014-02-04 Qualcomm Incorporated Multi-stage tessellation for graphics rendering
US20100079454A1 (en) 2008-09-29 2010-04-01 Legakis Justin S Single Pass Tessellation
US20100164954A1 (en) 2008-12-31 2010-07-01 Sathe Rahul P Tessellator Whose Tessellation Time Grows Linearly with the Amount of Tessellation
US20100214294A1 (en) * 2009-02-20 2010-08-26 Microsoft Corporation Method for tessellation on graphics hardware
US8884957B2 (en) 2009-09-09 2014-11-11 Advanced Micro Devices, Inc. Tessellation engine and applications thereof
US8698802B2 (en) * 2009-10-07 2014-04-15 Nvidia Corporation Hermite gregory patch for watertight tessellation
US8570324B2 (en) * 2009-10-12 2013-10-29 Nvidia Corporation Method for watertight evaluation of an approximate catmull-clark surface
US8605085B1 (en) * 2009-10-15 2013-12-10 Nvidia Corporation System and method for perspective corrected tessellation using parameter space warping
US8537158B2 (en) 2009-12-02 2013-09-17 Microsoft Corporation Parallel triangle tessellation
KR20110072462A (ko) 2009-12-23 2011-06-29 주식회사 울프슨랩 3차원 곡면 모델 스케치를 위한 모델링 방법 및 시스템 , 및 기록 매체
US8144147B2 (en) 2010-04-07 2012-03-27 Intel Corporation Hierarchical bounding of displaced parametric surfaces
US20110310102A1 (en) * 2010-06-17 2011-12-22 Via Technologies, Inc. Systems and methods for subdividing and storing vertex data
US9165403B2 (en) * 2011-01-14 2015-10-20 Intel Corporation Planetary scale object rendering
JP2013127683A (ja) * 2011-12-16 2013-06-27 Namco Bandai Games Inc プログラム、情報記憶媒体、端末、サーバ及びネットワークシステム
US8854374B2 (en) * 2011-12-23 2014-10-07 Advanced Micro Devices, Inc. Tessellation patterns
US9449419B2 (en) * 2012-03-30 2016-09-20 Intel Corporation Post tessellation edge cache
CN102930520B (zh) * 2012-10-15 2015-06-03 上海电机学院 一种碎片镶嵌图片的生成方法

Also Published As

Publication number Publication date
GB201412090D0 (en) 2014-08-20
JP2015018551A (ja) 2015-01-29
KR20150006554A (ko) 2015-01-19
US20150015580A1 (en) 2015-01-15
GB2518272A (en) 2015-03-18
GB2518272B (en) 2020-07-08
CN104282035A (zh) 2015-01-14
US9779547B2 (en) 2017-10-03
CN104282035B (zh) 2019-03-01

Similar Documents

Publication Publication Date Title
KR102104057B1 (ko) 점별로 테셀레이션 팩터를 할당하는 방법과 상기 방법을 수행할 수 있는 장치들
US11232534B2 (en) Scheme for compressing vertex shader output parameters
US10733691B2 (en) Fragment shaders perform vertex shader computations
KR102341267B1 (ko) 양안 시차 영상에 대한 렌더링 방법 및 장치
JP6400601B2 (ja) テッセレーションのためのドメイン座標の出力順序付け
KR102188543B1 (ko) 그래픽 처리 장치
CN105513117B (zh) 调整细节等级的图形处理单元、操作方法及包括其的设备
KR102066659B1 (ko) 그래픽 프로세싱 유닛, 이를 포함하는 그래픽 프로세싱 시스템 및 이의 동작 방법
CN105654418B (zh) 图形处理单元和包括其的装置
KR102381945B1 (ko) 그래픽 프로세싱 장치 및 그래픽 프로세싱 장치에서 그래픽스 파이프라인을 수행하는 방법
KR102109130B1 (ko) 그래픽스 프로세싱 유닛, 이의 동작 방법, 및 이를 포함하는 장치들
KR20150058666A (ko) 도메인 쉐이딩 방법과 이를 수행하는 장치들
KR102477265B1 (ko) 그래픽스 프로세싱 장치 및 그래픽스 파이프라인의 텍스쳐링을 위한 LOD(level of detail)를 결정하는 방법
US20160071317A1 (en) Graphics processing unit (gpu) including subdivider and device including the gpu
JP7278195B2 (ja) 地面のレンダリングに関するコンピュータグラフィック方法
US9582935B2 (en) Tessellation device including cache, method thereof, and system including the tessellation device

Legal Events

Date Code Title Description
A201 Request for examination
AMND Amendment
E902 Notification of reason for refusal
AMND Amendment
E601 Decision to refuse application
X091 Application refused [patent]
AMND Amendment
E90F Notification of reason for final refusal
AMND Amendment
X701 Decision to grant (after re-examination)