KR101559637B1 - 테셀레이션 시간이 테셀레이션의 양에 따라 선형적으로 증가하는 테셀레이터 - Google Patents

테셀레이션 시간이 테셀레이션의 양에 따라 선형적으로 증가하는 테셀레이터 Download PDF

Info

Publication number
KR101559637B1
KR101559637B1 KR1020137008228A KR20137008228A KR101559637B1 KR 101559637 B1 KR101559637 B1 KR 101559637B1 KR 1020137008228 A KR1020137008228 A KR 1020137008228A KR 20137008228 A KR20137008228 A KR 20137008228A KR 101559637 B1 KR101559637 B1 KR 101559637B1
Authority
KR
South Korea
Prior art keywords
tessellation
values
triangulation
processor
internal
Prior art date
Application number
KR1020137008228A
Other languages
English (en)
Other versions
KR20130049824A (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 KR20130049824A publication Critical patent/KR20130049824A/ko
Application granted granted Critical
Publication of KR101559637B1 publication Critical patent/KR101559637B1/ko

Links

Images

Classifications

    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/20Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using video object coding
    • H04N19/29Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using video object coding involving scalability at the object level, e.g. video object layer [VOL]
    • 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/36Scalability techniques involving formatting the layers as a function of picture distortion after decoding, e.g. signal-to-noise [SNR] scalability

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Graphics (AREA)
  • Geometry (AREA)
  • Software Systems (AREA)
  • Image Generation (AREA)

Abstract

일부 실시예들에 따르면, 테셀레이터는 에지 디테일 레벨이 증가함에 따라 테셀레이션 시간이 단지 선형적으로 증가하게 된다. 통상적으로, 테셀레이터들은 디테일 레벨이 증가함에 따라 테셀레이션 시간이 비선형적 또는 2차적으로 증가한다. 일부 실시예들에서, 내부 테셀레이션에 대한 인터벌들과 삼각화가 미리 계산된다. 그리고 실행 시간에, 미리 계산된 값들이 적용 가능한 에지 디테일 레벨에 대하여 룩업된다.

Description

테셀레이션 시간이 테셀레이션의 양에 따라 선형적으로 증가하는 테셀레이터{A TESSELLATOR WHOSE TESSELLATION TIME GROWS LINEARLY WITH THE AMOUNT OF TESSELLATION}
본 발명은 일반적으로 그래픽스 프로세싱에 관한 것이며, 그래픽스 프로세서들과 그래픽스 프로세싱에 사용되는 범용 프로세서들의 사용을 포함한다.
그래픽스 파이프라인(graphics pipeline)은 게임, 컴퓨터 애니메이션, 의료적 응용, 및 그와 유사한 것들에 대한 그래픽스를 렌더링하는 책임을 맡을 수 있다.
생성된 그래픽스 이미지들의 디테일 레벨(level of detail)은 그래픽스 파이프라인에 존재하는 한계에 기인하여 이상적인 것보다 적을 수 있다. 제공되는 디테일이 더 클수록, 결과적인 그래픽스 프로세싱은 더 느리게 된다. 따라서, 프로세싱 속도와 그래픽스 디테일 간에는 절충이 있게 된다. 마이크로소프트® 다이렉트X 11과 같은 새로운 그래픽스 프로세싱 파이프라인들은 테셀레이션 디테일을 증가시킴에 의해 기하학적인 디테일을 증가시킨다.
테셀레이션(tessellation)은 성긴(coarse) 다각형 모델로부터 시작하여 대상(object)의 이미지를 렌더링하기 위하여 일련의 삼각형들을 형성하는 것이다. 패치(patch)는 표면에 대한 제어 케이지(control cage)를 기술하는 성긴 레벨에서의 기본 유닛이다. 패치는 곡선 또는 영역을 나타낼 수 있다. 상기 표면은 파라미터 함수로서 기술될 수 있는 어떠한 표면이라도 될 수 있다. 제어 케이지는 부드러운 표면들을 생성하기 위하여 예술가들에 의해 사용되는 저 해상도 모델이다.
이와 같이, 테셀레이션을 더 높은 정도로 제공함에 의하여, 묘사될 수 있는 그래픽의 디테일 레벨은 더 크게 된다. 그러나, 프로세싱 속도는 악영향을 받을 수 있다. 일반적으로, 프로세싱 시간은 이미지의 디테일 레벨이 증가함에 따라 2차적으로(quadratically) 증가한다.
도 1은 일 실시예에 따라서 그래픽스 파이프라인을 개략도이다.
도 2는 일 실시예에 따라서 최대 내부 테셀레이션 팩터 감소 함수(maximum inner tessellation factor reduction function) 및 1-축 내부 테셀레이션 팩터 축 감소(1-axis inner tessellation factor axis reduction)를 사용하는 내부 테셀레이션을 도시한 도면이다.
도 3은 일 실시예에 따라서 평균 내부 테셀레이션 팩터 감소 함수 및 1-축 내부 테셀레이션 팩터 축 감소를 사용하는 테셀레이션 패턴을 도시한 도면이다.
도 4는 일 실시예에 따라서 최소 내부 테셀레이션 팩터 감소 함수를 사용하는 1-축 테셀레이션에 대한 테셀레이션 패턴을 도시한 도면이다.
도 5a는 일 실시예에 따라서 1-축 내부 테셀레이션 팩터 축 감소를 도시한 도면이다.
도 5b는 일 실시예에 따라서 상측 에지(top edge)가 도 5a에서와는 다른 에지 디테일 레벨(edge level of detail)을 가지는 1-축 내부 테셀레이션을 나타낸 도면이다.
도 5c는 일 실시예에 따라서 좌측 에지가 도 5a 및 5b에서와는 다른 에지 디테일 레벨을 가지는 1-축 내부 테셀레이션을 나타낸 도면이다.
도 6은 일 실시예에 따라서 소프트웨어 테셀레이터 상에서의 1-축, 멱수(power) 2 테셀레이션을 사용하는 비선형 관계 및 선형 관계에 대한 효과를 보여주는 패치당 사이클 대 디테일 레벨의 가정적 그래프이다.
도 7은 본 발명의 일 실시예에 대한 흐름도이다.
도 8은 일 실시예에 따른 멀티-코어 프로세서의 개념도이다.
일부 실시예들에 따르면, 테셀레이션 시간은 테셀레이션의 양에 따라 단지 선형적으로만 증가한다. 통상적으로, 테셀레이션 시간은 테셀레이션 디테일의 양에 따라 2차 함수로서 증가한다. 결과적으로, 일부 실시예들에서는 테셀레이션 시간이 감소될 수 있으며, 또한 다른 실시예들에서는 더 디테일한 테셀레이션을 수행하기 위하여 덜 강력한 테셀레이터들을 사용할 수 있게 된다.
일부 실시예들에 있어서는, 테셀레이션 시간이 절약될 수 있으며/있거나 다양한 범위의 에지 디테일 레벨에 대하여 일련의 미리 계산된 내부 테셀레이션들을 미리 계산함에 의하여 테셀레이션 프로세싱 능력이 증가될 수 있다. 이에 의해 실행 시간에 내부 테셀레이션들을 다시 계산하는 것을 면하게 해준다.
일부 실시예들에 따르면, 테셀레이션은 삼각형(triangular) 또는 사각형(quad) 프리미티브 도메인(primitive domain)을 사용할 수 있다. 에지 파티셔닝(edge partitioning)은 에지들을 인터벌들로 나누는 과정을 수반할 수 있다. 더 많은 인터벌들이 사용될수록 더 높은 테셀레이션 디테일 레벨이 가능해진다. 따라서, 에지 디테일 레벨을 증가시킴에 따라 결과적인 테셀레이션의 해상도가 증가될 수 있다.
내부 테셀레이션은 프리미티브(primitive)의 외부 경계선 내부의 프리미티브 포인트들의 테셀레이션이다. 외부 밴드(outer band)는 프리미티브의 경계선으로 구성된다.
도 1을 참조하면, 그래픽스 파이프라인은 독립형(standalone) 전용 집적 회로(dedicated integrated circuit)인 그래픽스 프로세서로, 소프트웨어 형태로, 소프트웨어로 구현된 범용 프로세서들로, 또는 소프트웨어와 하드웨어의 결합들로 구현될 수 있다.
입력 어셈블러(12)는 고정된 함수 연산들을 사용하여 메모리에서 정점(vertex)들을 읽고, 기하 구조(geometry)를 형성하고, 파이프라인 작업 항목들을 생성한다. 도 1의 오른편에 점선으로 표시된 바와 같이, 자동 생성된 식별자들은 식별자에 특정한 프로세싱(identifier-specific processing)을 가능하게 한다. 정점 식별자들 및 인스턴스(instance) 식별자들은 정점 음영기(vertex shader, 14) 이후로부터 이용 가능하다. 프리미티브 식별자들은 헐 음영기(hull shader, 16) 이후로부터 이용 가능하다. 제어 포인트 식별자들은 헐 음영기(16)에서만 이용 가능하다.
정점 음영기(14)는 변환(transformation), 스키닝(skinning), 또는 라이팅(lighting)과 같은 연산들을 수행한다. 그것은 하나의 정점을 입력하고 하나의 정점을 출력한다. 제어 포인트 단계에서, 출력 제어 포인트마다 호출되고 각각이 제어 포인트 식별자에 의해 식별되어, 정점 음영기는 출력의 수에 독립적으로 패치에 대한 모든 입력 제어 포인트들을 읽을 수 있는 능력이 있다. 헐 음영기(16)는 호출 때마다 제어 포인트를 출력한다. 집합적 출력(aggregate output)은 다음 헐 음영기 단계와 도메인 음영기(20)에 대한 공유된 입력이다. 패치 상수(patch constant) 단계는 모든 입력과 출력 제어 포인트들의 공유된 읽기 입력과 함께 패치마다 한 번씩 호출될 수 있다. 헐 음영기(16)는 에지 테셀레이션 팩터들과 다른 패치 상수 데이터를 출력한다. 본 명세서에서 사용되는 바와 같이, 에지 테셀레이션 팩터와 프리미티브 도메인의 에지마다의 인터벌의 수에 대한 에지 디테일 레벨은 상호교환적으로 사용될 수 있다. 코드들은 독립적인 작업이 마지막에 결합 단계를 가지며 끝나며 병렬적으로 수행될 수 있도록 나누어진다.
테셀레이터(18)는 하드웨어로 또는 소프트웨어로 구현될 수 있다. 일부 유리한 실시예들에 있어서는, 테셀레이터는 소프트웨어로 구현된 테셀레이터일 수 있다. 본 명세서에서 설명된 바와 같이, 테셀레이터의 연산의 속도를 높임에 의하여, 테셀레이터 연산을 행하였던 코어들이 다른 태스크들을 수행할 수 있도록 해방될 수 있다. 테셀레이터(18)는, 헐 음영기로부터, 테셀레이션을 얼마다 많이 할 것인지를 정의하는 수들을 입력할 수 있다. 그것은 삼각형이나 사각형(quad)과 같은 프리미티브들과, 점들, 선들, 또는 삼각형들과 같은 토폴로지(topology)들을 생성한다. 일 실시예에 있어서, 테셀레이터는 패치에 대한 모든 헐 음영기 출력들의 음영된 읽기 전용 입력마다 하나의 도메인 위치를 입력한다. 그것은 하나의 정점을 출력할 수 있다.
기하 음영기(geometry shader, 22)는 하나의 프리미티브를 입력할 수 있고, 각각이 독립적으로 0 또는 그 이상의 프리미티브들을 수신하는 네 개까지의 스트림(stream)들을 출력한다. 기하 음영기의 출력에서 발생하는 스트림은 프리미티브들을 래스터라이저(24)로 제공할 수 있으며, 한편 네 개까지의 스트림들은 연결되어 버퍼(30)로 출력될 수 있다. 클리핑(clipping), 투시적 분할(perspective dividing), 뷰 포트(view ports), 및 시저 선택 구현(scissor selection implemetation)과 프리미티브 설정은 래스터라이저(24)에 의해 구현될 수 있다.
픽셀 음영기(26)는 하나의 픽셀을 입력하고 같은 위치에 하나의 픽셀을 출력하거나 아무 픽셀도 출력하지 않는다. 출력 융합기(output merger, 28)는 고정 함수 타겟 렌더링(fixed function target rendering), 블렌딩(blending), 깊이, 및 스텐실(stencil) 연산들을 제공한다.
따라서, 도 2를 참조하여, 프리미티브가 사각형인 실시예에 따르면, 사각형(32)은 상변(32t), 우변(32r), 하변(32b) 및 좌변(32l)을 가진다. 이 예에 있어서, 상변(32t)은 하나의 인터벌을 가지며, 우변(32r)은 여덟 개의 인터벌들을 가지며, 하변(32b)은 네 개의 인터벌들을 가지며, 그리고 좌변(32l)은 두 개의 인터벌들을 가진다. 인터벌들은 에지 디테일 레벨(edge level of detail) 및 테셀레이션 팩터에 대응한다. 테셀레이터(18)에서, 내부 테셀레이션은 최소, 최대, 또는 평균 중 하나의 팩터 감소 함수(factor reduction function)를 사용할 수 있다. 도 2는 최대 감소 함수를 도시하고 있다. 이 경우에서, 테셀레이션은 에지 32r을 사용하여 구현되는데, 이는 그것이 최대 개수의 인터벌들을 가지기 때문이다. 이 실시예에서 그것은 단지 하나의 최대값을 계산한다. 다른 실시예들에서, 삼각형이 프리미티브로서 사용될 수 있으며, 다른 내부 테셀레이션 감소 함수들이 사용될 수 있다.
도 3은 평균 테셀레이션 팩터 감소 함수로 프로세싱한 후의 사각형을 도시하고 있다. 여기서, 평균은 네 변들의 인터벌들의 평균에 기초한다. 마지막으로, 도 4는 최소 변을 사용하는 최소 테셀레이션 감소 팩터의 결과를 보여주는데, 여기서 최소 변은 상변(32t)이다.
다음으로 도 5a-5c를 참조하면, 사각형은 외부 밴드(36a)와 내부 테셀레이션(38)으로 나누어질 수 있다. 외부 밴드(36a)는 프리미티브 도메인(이 경우에는 사각형)의 경계선 주변의 모든 것이며, 내부 테셀레이션은 그외의 다른 모든 것들이다. 도 5a-5c는 1-축 내부 테셀레이션 팩터 감소(1-axis inner tessellation factor reduction)의 예에서, 외부 테셀레이션의 최대값이 동일하기만 하면 외부 밴드에서 사용되는 인터벌들의 수에 관계없이 내부 테셀레이션이 동일하다는 것을 보여준다. 이 예에서, 테셀레이션 팩터 감소 함수는 최대이고 테셀레이션 팩터 축 감소는 1-축이다. 따라서, 에지 디테일 레벨 또는 테셀레이션 팩터에 무관하게, 내부 테셀레이션은 동일하게 유지된다. 그 결과로서, 서로 다른 다양한 에지 디테일 레벨에 대하여 내부 테셀레이션들을 미리 계산하고, 그들을 저장하고, 실행 시간에 그들이 필요할 때에 단순히 그들을 적용하는 것이 가능하다. 이와 같이, 다양한 범위의 에지 디테일 레벨에 대하여 미리 계산된 내부 테셀레이션들이 재사용될 수 있으며 실행 시간에 재계산될 필요가 없으므로, 계산을 빠르게 한다.
도 6을 참조하면, 본 발명의 일 실시예를 사용하면, 크로스 해치 무늬의(cross-hatched) 막대들에 의해 표시된 바와 같이, 테셀레이션 시간은 테셀레이션 디테일이 증가함에 따라 선형적으로 증가한다. 그런데, 다른 기술들에 의하면, 테셀레이션 시간은, 해치 무늬의(hatched) 막대들에 의해 표시된 바와, 테셀레이션 디테일이 증가할수록 비선형적으로 또는 2차적으로(quadratically) 증가한다. 도 6에 도시된 예에서는 멱수 2 에지 분할(power 2 edge partitioning)을 사용하는 1-축 테셀레이션 감소와 최대 테셀레이션 팩터 감소 함수들을 사용한다. 이 예에서, 소프트웨어에 기반한 테셀레이션이 사용되었다. 이와 같이, 디테일 레벨이 증가할수록, 패치당 사이클의 수는 비선형의 예에서 더 많은 정도로 증가하지만, 본 발명의 일 실시예에 따른 예에서는 선형적으로 증가한다. 일부 하드웨어에 기초한 접근 방법에서는, 미리 계산된 내부 테셀레이션들과 미리 계산되지 않은 내부 테셀레이션들의 차이가 그다지 인상적이지 않을 수 있다.
도 7을 참조하면, 본 발명의 일 실시예에 따라, 블록 40에 표시된 바와 같이, 테셀레이터(18)는 내부 테셀레이션에 대한 u와 v 값들을 미리 계산하고 저장하며 시작한다. u와 v 값들은, 예를 들어 도 5a에 도시된 바와 같이 수평축 u와 수직축 v를 따라서, 단순히 포인트들의 좌표들 또는 인터벌들을 나타낸 것이다. 또한, 블록 42에 나타낸 바와 같이, 내부 테셀레이션에 대한 삼각화(triangulation)가 미리 계산되고, 저장될 수 있다. 이와 같이, 일 실시예에 있어서, 서로 다른 에지 디테일 레벨 모두에 대하여, 다양한 점들의 미리 계산된 값과 내부 테셀레이션에 대한 삼각화 결과가 미리 결정되고 저장될 수 있다. 그 다음에 실행 시간에는, 블록 44에 나타낸 바와 같이, 프리미티브 외부 밴드 주변의 u, v 값들이 계산된다. 또한, 블록 46에 나타낸 바와 같이, 실행 시간 중에, 외부 밴드에 대한 삼각화가 계산된다. 그 다음, 실행 시간 중에, 테셀레이터(18)는 적용할 수 있는 디테일 레벨에 기초하여 미리 계산된 값들 중에서 내부 테셀레이션들에 대한 적절한 값들을 룩업(look up)한다.
따라서, 다이렉트X 11과 같은 일부 실시예들에서는, 단지 64개의 별개의 에지 디테일 레벨이 존재한다. 다른 실시예들은 다른 수의 에지 디테일 레벨들을 사용할 수 있다. 내부 테셀레이션은 이들 에지 디테일 레벨들 각각에 대하여 미리 계산되고 실행 시간에서의 사용을 위하여 저장될 수 있다.
실행 시간 중에는, 이미지가 프로세싱 되는 때에, 서로 다른 이미지 영역들에 대하여 서로 다른 에지 디테일 레벨들이 지정될 수 있다. 통상적으로, 카메라에 가까운 물건들은 (그리고, 이 때문에 더 큰 스크린 공간을 차지하는 물건들은) 카메라에서 더 멀리 떨어진 물건들보다 더 많이 테셀레이트될 것이다. 따라서, 펀치를 날리는 애니메이션 장면에서, 주먹에 대한 디테일 레벨이 가장 높을 것이며 주먹에서 먼 영역들에 대하여는 낮은 디테일 레벨을 사용하여도 될 것이다. 따라서, 상대적으로 사실적인 렌더링이 생성될 수 있는데, 왜냐하면 사용자들은 이러한 묘사 안에서 관심이 적은 영역들에 사용되는 상이한 디테일 레벨들을 알아채지 못할 것이기 때문이다. 그 결과로서, 넓고 다양한 에지 디테일 레벨들에 직면할 수 있다. 일부 실시예들에서는, 이러한 디테일 레벨들이 발생하는 실행 시간에 내부 테셀레이션에 대한 디테일 레벨들 각각을 계산하는 대신에, 이들 모두를 미리 계산할 수 있으며, 내부 테셀레이션 포인트들의 값과 연결 또는 삼각화를 결정하는 실행 시간 계산의 지연 없이, 실행 시간에 그 값들을 룩업하고 단순히 사용할 수 있다.
일부 실시예들에서, 패치들은 그들의 내부 테셀레이션 팩터에 기초하여, 스레딩(threading) 및 벡터화(vectorizing)를 사용하여, 정렬될 수 있다. 그 다음 동일한 디테일 레벨을 가지는 패치들은, 도 8에 도시된 바와 같이, 멀티 코어 프로세서(50)의 동일한 물리적 코어에서 테셀레이트될 수 있다. 패치 정렬기(52)에서 정렬(sorting)되고 그룹화(grouping)된 후, 테셀레이트될 패치들 중에서 동일한 내부 테셀레이션 디테일 레벨을 가지는 패치들 모두는 동일한 코어(54)로 보내질 수 있으며, 그 다음 해당 코어 상에서의 모든 스레드들은 코어의 레벨 1 캐시(58) 및 레벨 2 캐시(60) 내에 단지 하나의 카피만을 사용할 수 있다. 그 다음 삼각형들은 나중에 패치 프리미티브 ID를 사용하여 비정렬화될 수 있다. 외부 밴드 테셀레이션은 양쪽 다 삼각화에서 생성된 포인트들의 수의 관점에서 가변적이다. 따라서, 제1 버퍼(62)에 미리 계산된 알려진 내부 테셀레이션들을 배치함에 의하여 듀얼 버퍼 접근법이 사용될 수 있다. 그 다음 외부 테셀레이션 변수 파트가 계산되고 제2 버퍼(64)에 저장된다. 도 8에는 단지 두 개의 코어들이 도시되었지만, 어떤 수의 코어들이라도 사용될 수 있다.
일 실시예에 따라서, 유사 코드(pseudo code)는 다음과 같이 구현될 수 있다:
Figure 112013027819858-pat00001
Figure 112013027819858-pat00002
본 명세서에서 기술된 그래픽스 프로세싱 기술들은 다양한 하드웨어 아키텍쳐들에 의해 구현될 수 있다. 예를 들어, 그래픽스 기능은 하나의 칩셋에 집적될 수 있다. 그 대신에, 분리된 그래픽스 프로세서가 사용될 수 있다. 또 다른 실시예로서는, 그래픽스 기능들이, 멀티 코어 프로세서를 포함하여, 범용 프로세서에 의하여 구현될 수 있다.
본 명세서에서 "일 실시예" 또는 "실시예"라는 용어에 의하여 참조된 바가 의미하는 것은, 이러한 실시예와 관련하여 설명된 특정한 특징(feature), 구조(structure) 또는 특성(characterstic)이 본 발명의 범위에 포함된 적어도 하나의 구현예에 포함되어 있다는 것이다. 따라서, "일 실시예" 또는 "일 실시예에 있어서"라는 문구가 나타났다고 하여 반드시 동일한 실시예를 한정하여 가리키는 것은 아니다. 또한, 이와 같은 특정한 특징, 구조 또는 특성은 설명된 특정한 실시예에서와는 다른 적당한 형태로 마련될 수 있으며, 모든 이러한 형태들은 본 출원의 청구범위에 포함될 수 있다.
비록 본 발명이 한정된 수의 실시예들에 의하여 설명되었지만, 당해 기술분야의 숙련된 자들은 이로부터 많은 변경(modification)들과 변형(variation)들을 인식할 수 있을 것이다. 첨부된 청구항들은 본 발명의 진정한 사상(spirit)과 범위(scope)에 속하는 모든 이러한 변경들과 변형들을 포함한다.

Claims (18)

  1. 실행 시간 이전에 복수의 상이한 에지 디테일 레벨들(edge levels of detail)에 대한 u와 v 내부 테셀레이션 값들 및 삼각화(triangulation)를 미리 계산하고 저장하는 단계;
    실행 시간에, 적용가능한 디테일 레벨에 대한 상기 미리 계산된 내부 테셀레이션 값들을 사용하는 테셀레이션을 수행하고, 프리미티브 외부 밴드(primitive outer band)에 대한 u와 v 값들 및 삼각화를 계산하는 단계 - 상기 외부 밴드는 상기 내부 테셀레이션을 둘러쌈 -; 및
    카메라에 가까운 에지들을, 상기 카메라에서 더 멀리 떨어진 에지들보다 더 많이 테셀레이트하는 단계
    를 포함하는 방법.
  2. 제1항에 있어서,
    프리미티브 에지들을 인터벌들(intervals)로 나누는 단계를 포함하는 방법.
  3. 제2항에 있어서,
    사각형(quad) 에지들을 상이한 개수의 인터벌들로 나누는 단계를 포함하는 방법.
  4. 제1항에 있어서,
    이미지의 상이한 영역들에 대해 상이한 에지 디테일 레벨들을 사용하는 단계를 포함하는 방법.
  5. 삭제
  6. 실행 시간 이전에 복수의 상이한 에지 디테일 레벨들에 대한 u와 v 내부 테셀레이션 값들 및 삼각화를 미리 계산하고 저장하는 단계;
    실행 시간에, 적용가능한 디테일 레벨에 대한 상기 미리 계산된 내부 테셀레이션 값들을 사용하는 테셀레이션을 수행하고, 프리미티브 외부 밴드에 대한 u와 v 값들 및 삼각화를 계산하는 단계 - 상기 외부 밴드는 상기 내부 테셀레이션을 둘러쌈 -; 및
    각 패치의 테셀레이션 팩터(factor)에 기초하여, 패치들을 정렬(sorting)하는 단계
    를 포함하는 방법.
  7. 제6항에 있어서,
    멀티 코어 프로세서의 동일한 코어에서 동일한 디테일 레벨로 상기 패치들을 테셀레이트하는 단계를 포함하는 방법.
  8. 제7항에 있어서,
    상기 코어 상의 모든 스레드들이, 상기 코어의 레벨 1 캐시 및 레벨 2 캐시 내에 단지 하나의 카피만을 사용하도록 하는 단계를 포함하는 방법.
  9. 실행 시간 이전에 복수의 상이한 에지 디테일 레벨들에 대한 u와 v 내부 테셀레이션 값들 및 삼각화를 미리 계산하고 저장하는 단계;
    실행 시간에, 적용가능한 디테일 레벨에 대한 상기 미리 계산된 내부 테셀레이션 값들을 사용하는 테셀레이션을 수행하고, 프리미티브 외부 밴드에 대한 u와 v 값들 및 삼각화를 계산하는 단계 - 상기 외부 밴드는 상기 내부 테셀레이션을 둘러쌈 -; 및
    하나의 버퍼에 상기 미리 계산된 내부 테셀레이션 값들을 저장하고, 두 번째 버퍼에 외부 테셀레이션 값들을 저장하는 단계
    를 포함하는 방법.
  10. 저장소(storage); 및
    실행 시간 이전에 복수의 상이한 에지 디테일 레벨들(edge levels of detail)에 대한 u와 v 내부 테셀레이션 값들 및 삼각화(triangulation)를 미리 계산하고 저장하고, 실행 시간에, 적용가능한 디테일 레벨에 대한 상기 미리 계산된 내부 테셀레이션 값들을 사용하는 테셀레이션을 수행하고, 프리미티브 외부 밴드(primitive outer band)에 대한 u와 v 값들 및 삼각화를 계산하는 프로세서 - 상기 외부 밴드는 상기 내부 테셀레이션을 둘러쌈 -
    를 포함하고,
    상기 프로세서는, 카메라에 가까운 에지들을, 상기 카메라에서 더 멀리 떨어진 에지들보다 더 많이 테셀레이트하는 장치.
  11. 제10항에 있어서,
    상기 프로세서는, 프리미티브 에지들을 인터벌들(intervals)로 나누는 장치.
  12. 제11항에 있어서,
    상기 프로세서는, 사각형(quad) 에지들을 상이한 개수의 인터벌들로 나누는 장치.
  13. 제10항에 있어서,
    상기 프로세서는, 이미지의 상이한 영역들에 대해 상이한 에지 디테일 레벨들을 사용하는 장치.
  14. 삭제
  15. 저장소; 및
    실행 시간 이전에 복수의 상이한 에지 디테일 레벨들에 대한 u와 v 내부 테셀레이션 값들 및 삼각화를 미리 계산하고 저장하고, 실행 시간에, 적용가능한 디테일 레벨에 대한 상기 미리 계산된 내부 테셀레이션 값들을 사용하는 테셀레이션을 수행하고, 프리미티브 외부 밴드에 대한 u와 v 값들 및 삼각화를 계산하는 프로세서 - 상기 외부 밴드는 상기 내부 테셀레이션을 둘러쌈 -
    를 포함하고,
    상기 프로세서는, 각 패치의 테셀레이션 팩터(factor)에 기초하여, 패치들을 정렬(sorting)하는 장치.
  16. 제15항에 있어서,
    상기 프로세서는 복수의 코어들을 가지고,
    상기 프로세서는, 동일한 코어에서 동일한 디테일 레벨로 상기 패치들을 테셀레이트하는 장치.
  17. 제16항에 있어서,
    상기 프로세서는, 상기 코어 상의 모든 스레드들이, 상기 코어의 레벨 1 캐시 및 레벨 2 캐시 내에 단지 하나의 카피만을 사용하도록 하는 장치.
  18. 저장소; 및
    실행 시간 이전에 복수의 상이한 에지 디테일 레벨들에 대한 u와 v 내부 테셀레이션 값들 및 삼각화를 미리 계산하고 저장하고, 실행 시간에, 적용가능한 디테일 레벨에 대한 상기 미리 계산된 내부 테셀레이션 값들을 사용하는 테셀레이션을 수행하고, 프리미티브 외부 밴드에 대한 u와 v 값들 및 삼각화를 계산하는 프로세서 - 상기 외부 밴드는 상기 내부 테셀레이션을 둘러쌈 -
    를 포함하고,
    상기 프로세서는, 하나의 버퍼에 상기 미리 계산된 내부 테셀레이션 값들을 저장하고, 두 번째 버퍼에 외부 테셀레이션 값들을 저장하는 장치.
KR1020137008228A 2008-12-31 2009-12-22 테셀레이션 시간이 테셀레이션의 양에 따라 선형적으로 증가하는 테셀레이터 KR101559637B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US12/347,114 US20100164954A1 (en) 2008-12-31 2008-12-31 Tessellator Whose Tessellation Time Grows Linearly with the Amount of Tessellation
US12/347,114 2008-12-31
PCT/US2009/069187 WO2010078153A2 (en) 2008-12-31 2009-12-22 A tessellator whose tessellation time grows linearly with the amount of tessellation

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
KR1020117017953A Division KR101351236B1 (ko) 2008-12-31 2009-12-22 테셀레이션 시간이 테셀레이션의 양에 따라 선형적으로 증가하는 테셀레이터

Publications (2)

Publication Number Publication Date
KR20130049824A KR20130049824A (ko) 2013-05-14
KR101559637B1 true KR101559637B1 (ko) 2015-10-13

Family

ID=42284353

Family Applications (2)

Application Number Title Priority Date Filing Date
KR1020117017953A KR101351236B1 (ko) 2008-12-31 2009-12-22 테셀레이션 시간이 테셀레이션의 양에 따라 선형적으로 증가하는 테셀레이터
KR1020137008228A KR101559637B1 (ko) 2008-12-31 2009-12-22 테셀레이션 시간이 테셀레이션의 양에 따라 선형적으로 증가하는 테셀레이터

Family Applications Before (1)

Application Number Title Priority Date Filing Date
KR1020117017953A KR101351236B1 (ko) 2008-12-31 2009-12-22 테셀레이션 시간이 테셀레이션의 양에 따라 선형적으로 증가하는 테셀레이터

Country Status (8)

Country Link
US (1) US20100164954A1 (ko)
EP (1) EP2380129A4 (ko)
JP (1) JP5224222B2 (ko)
KR (2) KR101351236B1 (ko)
CN (1) CN102272798B (ko)
BR (1) BRPI0923899A2 (ko)
DE (1) DE112009004418T5 (ko)
WO (1) WO2010078153A2 (ko)

Families Citing this family (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9967590B2 (en) 2008-04-10 2018-05-08 Qualcomm Incorporated Rate-distortion defined interpolation for video coding based on fixed filter or adaptive filter
US8917271B2 (en) * 2009-10-05 2014-12-23 Nvidia Corporation Redistribution of generated geometric primitives
CN102096948B (zh) * 2011-03-01 2012-10-31 西安邮电学院 一种适用图形硬件的分格化方法
US9437042B1 (en) * 2011-10-20 2016-09-06 Nvidia Corporation System, method, and computer program product for performing dicing on a primitive
US9390554B2 (en) * 2011-12-29 2016-07-12 Advanced Micro Devices, Inc. Off chip memory for distributed tessellation
WO2013101150A1 (en) * 2011-12-30 2013-07-04 Intel Corporation A sort-based tiled deferred shading architecture for decoupled sampling
CN104025030B (zh) * 2011-12-30 2017-08-29 英特尔公司 减少域着色器/镶嵌器调用的方法、装置及设备
US9449419B2 (en) 2012-03-30 2016-09-20 Intel Corporation Post tessellation edge cache
US9412197B2 (en) * 2012-04-04 2016-08-09 Qualcomm Incorporated Patched shading in graphics processing
CN102881046B (zh) * 2012-09-07 2014-10-15 山东神戎电子股份有限公司 三维电子地图的生成方法
US9305397B2 (en) * 2012-10-24 2016-04-05 Qualcomm Incorporated Vertex order in a tessellation unit
GB2544679B (en) 2012-12-20 2017-08-16 Imagination Tech Ltd Tessellating patches of surface data in tile based computer graphics rendering
US9123168B2 (en) * 2013-01-30 2015-09-01 Qualcomm Incorporated Output ordering of domain coordinates for tessellation
KR102104057B1 (ko) 2013-07-09 2020-04-23 삼성전자 주식회사 점별로 테셀레이션 팩터를 할당하는 방법과 상기 방법을 수행할 수 있는 장치들
KR102072656B1 (ko) * 2013-07-16 2020-02-03 삼성전자 주식회사 캐시를 포함하는 테셀레이션 장치, 그의 동작 방법, 및 상기 장치를 포함하는 시스템
US9483862B2 (en) * 2013-12-20 2016-11-01 Qualcomm Incorporated GPU-accelerated path rendering
KR101555426B1 (ko) * 2014-02-07 2015-09-25 고려대학교 산학협력단 지형 렌더링 방법 및 장치
US9679347B2 (en) * 2014-02-18 2017-06-13 Qualcomm Incorporated Shader pipeline with shared data channels
DE102014214666A1 (de) 2014-07-25 2016-01-28 Bayerische Motoren Werke Aktiengesellschaft Hardwareunabhängiges Anzeigen von graphischen Effekten
CN104183008B (zh) * 2014-07-31 2017-01-18 浙江大学 一种基于表面信号拟合和曲面细分的着色器简化方法、装置及图形渲染方法
CN104616327B (zh) * 2014-07-31 2017-07-14 浙江大学 一种基于曲面细分的着色器简化方法、装置及图形渲染方法
US10134171B2 (en) * 2014-09-29 2018-11-20 Arm Limited Graphics processing systems
KR102197064B1 (ko) 2014-10-10 2020-12-30 삼성전자 주식회사 Lod를 조절할 수 있는 그래픽스 프로세싱 유닛, 이의 작동 방법, 및 상기 그래픽스 프로세싱 유닛을 포함하는 장치들
GB2575503B (en) * 2018-07-13 2020-07-01 Imagination Tech Ltd Scalable parallel tessellation
JP7374479B2 (ja) 2020-01-31 2023-11-07 株式会社フジキン 切換弁

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5428718A (en) * 1993-01-22 1995-06-27 Taligent, Inc. Tessellation system
US6147689A (en) * 1998-04-07 2000-11-14 Adobe Systems, Incorporated Displaying 2D patches with foldover
US6167159A (en) * 1998-04-30 2000-12-26 Virtue Ltd. Triangle mesh compression
US6597356B1 (en) * 2000-08-31 2003-07-22 Nvidia Corporation Integrated tessellator in a graphics processing unit
US6504537B1 (en) * 2000-09-05 2003-01-07 Nvidia Corporation System, method and article of manufacture for fractional tessellation during graphics processing
US6940505B1 (en) * 2002-05-20 2005-09-06 Matrox Electronic Systems Ltd. Dynamic tessellation of a base mesh
US8482559B2 (en) * 2002-11-04 2013-07-09 Ati Technologies Ulc Method and apparatus for triangle tessellation
US7639252B2 (en) * 2004-08-11 2009-12-29 Ati Technologies Ulc Unified tessellation circuit and method therefor
JP4255449B2 (ja) * 2005-03-01 2009-04-15 株式会社ソニー・コンピュータエンタテインメント 描画処理装置、テクスチャ処理装置、およびテセレーション方法
JP4934789B2 (ja) * 2006-01-23 2012-05-16 国立大学法人横浜国立大学 補間処理方法および補間処理装置
US7561156B2 (en) * 2006-02-08 2009-07-14 INOVO Limited Adaptive quadtree-based scalable surface rendering
US20070247458A1 (en) * 2006-04-11 2007-10-25 Samsung Electronics Co., Ltd. Adaptive computation of subdivision surfaces
JP4757120B2 (ja) * 2006-07-06 2011-08-24 キヤノン株式会社 画像処理装置及びその制御方法
US7965291B1 (en) * 2006-11-03 2011-06-21 Nvidia Corporation Isosurface extraction utilizing a graphics processing unit
JP5220350B2 (ja) * 2007-06-13 2013-06-26 株式会社バンダイナムコゲームス プログラム、情報記憶媒体及び画像生成システム
US7928979B2 (en) * 2008-02-01 2011-04-19 Microsoft Corporation Efficient geometric tessellation and displacement
US20100079454A1 (en) * 2008-09-29 2010-04-01 Legakis Justin S Single Pass Tessellation

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
Henry Moreton, "Watertight Tessellation using Forward Differencing", Proceeding of the ACM SIGGRAPH/EUROGRAPHICS workshop on Graphics hardware, Pages 25-32, 2001*

Also Published As

Publication number Publication date
CN102272798A (zh) 2011-12-07
JP2012514273A (ja) 2012-06-21
KR101351236B1 (ko) 2014-02-07
WO2010078153A2 (en) 2010-07-08
EP2380129A4 (en) 2017-06-14
US20100164954A1 (en) 2010-07-01
KR20110112828A (ko) 2011-10-13
EP2380129A2 (en) 2011-10-26
JP5224222B2 (ja) 2013-07-03
WO2010078153A3 (en) 2010-09-30
KR20130049824A (ko) 2013-05-14
CN102272798B (zh) 2015-03-11
DE112009004418T5 (de) 2012-08-09
BRPI0923899A2 (pt) 2018-10-16

Similar Documents

Publication Publication Date Title
KR101559637B1 (ko) 테셀레이션 시간이 테셀레이션의 양에 따라 선형적으로 증가하는 테셀레이터
JP7421585B2 (ja) 光線バンドルの光線に対する差分データを決定する方法及びグラフィックス処理ユニット
US10032308B2 (en) Culling objects from a 3-D graphics pipeline using hierarchical Z buffers
US8760450B2 (en) Real-time mesh simplification using the graphics processing unit
US8217962B2 (en) Single-pass bounding box calculation
US8482560B2 (en) Image forming techniques
GB2537728B (en) Graphics rendering using directional representations of lighting at probe positions within a scene
Ernst et al. Early split clipping for bounding volume hierarchies
US9142060B2 (en) Computation reduced tessellation
JP6017698B2 (ja) モザイク化ユニットにおける頂点順序
US9076260B2 (en) Stitching for primitives in graphics processing
US10198788B2 (en) Method and system of temporally asynchronous shading decoupled from rasterization
GB2570743A (en) Tile assignment to processing cores within a graphics processing unit
Sander et al. Progressive buffers: view-dependent geometry and texture lod rendering
CN114730452A (zh) 减少带宽曲面细分因子
CN116342778A (zh) 混合式的光栅化装置和方法
KR20180138458A (ko) 3차원 데이터 처리 방법
Kastrati et al. Selective Rasterized Ray-traced Reflections on the GPU.
Frid Kastrati et al. Selective rasterized ray-traced reflections on the GPU
CN117224936A (zh) 游戏中的障碍物检测方法、装置、电子设备及存储介质
Hsiao et al. A Hierarchical Triangle-Level Culling Technique for Tile-Based Rendering
Hemingway GPU-Based NURBS Geometry Evaluation and Rendering.
Mustafa et al. Generation of Stencil Shadow Volumes: Avant-garde Approaches

Legal Events

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