KR100868396B1 - 기하 이미지 분할을 위한 그래픽 처리 시스템 및 방법 - Google Patents

기하 이미지 분할을 위한 그래픽 처리 시스템 및 방법 Download PDF

Info

Publication number
KR100868396B1
KR100868396B1 KR1020077004122A KR20077004122A KR100868396B1 KR 100868396 B1 KR100868396 B1 KR 100868396B1 KR 1020077004122 A KR1020077004122 A KR 1020077004122A KR 20077004122 A KR20077004122 A KR 20077004122A KR 100868396 B1 KR100868396 B1 KR 100868396B1
Authority
KR
South Korea
Prior art keywords
data
vertex
geometric image
memory
resolution
Prior art date
Application number
KR1020077004122A
Other languages
English (en)
Other versions
KR20070032080A (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 KR1020077004122A priority Critical patent/KR100868396B1/ko
Publication of KR20070032080A publication Critical patent/KR20070032080A/ko
Application granted granted Critical
Publication of KR100868396B1 publication Critical patent/KR100868396B1/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
    • G06T1/00General purpose image data processing
    • G06T1/60Memory management
    • 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
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/10Geometric effects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T17/00Three dimensional [3D] modelling, e.g. data description of 3D objects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T5/00Image enhancement or restoration
    • G06T5/80Geometric correction
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T7/00Image analysis
    • G06T7/10Segmentation; Edge detection
    • G06T7/149Segmentation; Edge detection involving deformable models, e.g. active contour models
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T7/00Image analysis
    • G06T7/60Analysis of geometric attributes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2210/00Indexing scheme for image generation or computer graphics
    • G06T2210/56Particle system, point based geometry or rendering

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Geometry (AREA)
  • Computer Graphics (AREA)
  • Software Systems (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Image Generation (AREA)

Abstract

시스템은 그래픽 메모리, 데이터 버스, 프로세서 및 버텍스 셰이더(vertex shader)를 포함할 수 있다. 상기 데이터 버스는 상기 그래픽 메모리에 작동적으로(operatively) 연결될 수 있다. 상기 프로세서는 버텍스 데이터를 상기 데이터 버스를 경유하여 상기 그래픽 메모리로 전송할 수 있다. 버텍스 셰이더는 상기 그래픽 메모리로부터 상기 버텍스 데이터를 판독할 수 있고 상기 버텍스 데이터를 분할된 버텍스 데이터로 분할할 수 있다. 상기 버텍스 셰이더는 또한 상기 분할된 버텍스 데이터를 상기 그래픽 메모리에 기록할 수 있다.
기하 이미지(geometry image), 버텍스 셰이더(vertex shader), 이미지 분할(subdividing image), 그래픽 하드웨어(graphic hardware).

Description

기하 이미지 분할을 위한 그래픽 처리 시스템 및 방법{GRAPHIC PROCESSING SYSTEM AND METHOD FOR SUBDIVIDING GEOMETRY IMAGES}
본 발명의 구현은 일반적으로 그래픽 이미지 프로세싱에 관련될 수 있고, 특히 기하 이미지(geometry image)를 이용한 그래픽 이미지 프로세싱에 관련될 수 있다.
도 1은 일반적인 그래픽 프로세싱(100)을 나타내는 흐름도이다. 그래픽 이미지를 나타내는 기하구조(geometry)는 그래픽 파이프라인으로 전송될 수 있다[동작 110]. 이러한 기하구조는 일반적으로 삼각형을 포함하나, 사변형 또는 임의의 다른 종류의 기하 구조(shape)도 포함할 수 있다. 버텍스 셰이더(vertex shader)는 그 후 각각의 폴리곤(polygon)의 변환 및 광원 처리(lighting), 버텍스 색상 결정, 필요한 경우 법선(normal) 결정 등과 같은 프로세싱을 수행하여, 기하구조를 처리할 수 있다[동작 120]. 버텍스 셰이더는 일반적으로 버텍스와 연관된 데이터 상에 작용하는 명령 집합을 구현하는 하드웨어를 포함한다. 이러한 데이터는 버텍스 위치, 버텍스 법선, 및 버텍스 당(per vertex) 텍스쳐 좌표를 포함할 수 있다. 이러한 값은 또한 추후에 셰이딩 하드웨어(shading hardware)가 셰이딩된 이미지(shaded image)를 생성하기 위해 폴리곤을 가로질러 인터폴레이트(interpolate)하는데 이용될 수 있다.
다음으로, 폴리곤은 적합한 위치에서 스크린에 고정될 수 있다[동작 130]. 픽셀 셰이더(pixel shader)는 그 후 각각의 폴리곤을 셰이딩할 수 있다[동작 140]. 픽셀 셰이더는 일반적으로 각각의 단편(fragment)이 스크린에 렌더링(rendering)되기 전 그래픽 파이프라인을 통과할 때 각각의 단편에 일련의 명령을 실행하는 하드웨어를 포함한다. 픽셀 셰이더 및 버텍스 셰이더는 동일한 또는 상이한 명령 집합을 가질 수 있다. 또한, 이들이 실행하는 명령 집합은 프로그래머에게 노출되는 명령과 다를 수 있다.
셰이딩 후, 특정 픽셀이 이전에 렌더링된 임의의 픽셀 앞에 있다면, 특정 픽셀은 프레임 버퍼(frame buffer)에 기록될 수 있다[동작 150]. 일부 그래픽 엔진에 있어서, 알파 블렌딩(alpha blending)이 일어날 수 있다. 알파 블렌딩은 부분적으로 투명한 물체의 구현을 용이하게 하는 메카니즘이며, 일반적으로 통상의 3차원(3D) 그래픽 파이프라인에서 이용되는 색상 채널(channel)에 채널을 추가함으로써 구현된다.
최근, 그래픽 이미지의 표면 기하구조를 표현하는 기술이 어떤 이점을 가질 수 있다고 제안되었다. 그러한 기술은 임의의 그래픽 표면을 "기하 이미지"라고 불리는 완전한 정규 구조체(completely regular structure)상에 리메쉬(remesh)할 수 있다. 기하 이미지는 그래픽 이미지의 표면 기하구조를 양자화된(quantized) 점들의 2차원(2D) 어레이(array)로 캡쳐(capture)할 수 있다. 법선 및/또는 색상과 같은 표면 신호는 기하 이미지와 동일한 표면 매개변수화(parameterization)를 이용하여 유사한 2D 이미지에 저장될 수 있다. 기하 이미지에 대한 추가적인 논의 는 예를 들면 쟝펭 구 등(Xianfeng Gu et al.)의, "기하 이미지(Geometry Images)," SIGGRAPH 2002 회보(Proceedings), 355-361 페이지; 및 F. 로사소 등(F. Losasso et al.)의, "평탄한 기하 이미지(Smooth Geometry Images)," Eurographics 2003, 138-145 페이지 및 273 페이지에서 찾을 수 있다. 기하 이미지가 무엇인지 그리고 어떤 방식으로 3D 그래픽 객체를 표현할 수 있는지에 대해 보다 잘 이해하기 위해, 간략한 설명을 제공한다.
도 2는 3D 모델(210)로부터 기하 이미지(250)를 형성하는 것을 도시한다(즉, 휴스 호프(Hughes Hoppe)의, "컴퓨터 그래픽의 완전한 정규 메싱에 대한 비정규성(Irregular To Completely Regular Meshing In Computer Graphics)," International Meshing Roundtable 2002, 2002년 11월 참조). 3D 모델(210)은 3D 메쉬(mesh)를 형성하기 위해 3D 공간에서 구부러지고 왜곡된 2차원(2D) 형상으로 개념화될 수 있다. 모델(210)은 버텍스와, 버텍스 간의 에지(edge)로 정의되는 그러한 기하학적 형상(예로, 삼각형, 사변형 등)의 메쉬를 포함할 수 있다. 모델(210)의 버텍스는 3D 좌표계(예로, [x, y, z] 좌표)에서 연관된 공간 좌표값을 가질 수 있다.
3D 모델(210)은 다른(예로, 토끼 모양이 아닌) 2D 형상을 형성하기 위해 에지를 따라 절단될 수 있다. 절단선(220)은 그러한 하나의 절단을 예시한다. 이러한 다른 형상은 정규 형상(230)을 형성하기 위해 공지의 기술을 이용하여 왜곡되거나 매개변수화될 수 있다. 정규 형상(230)은 모델(210)로부터의 연결된 버텍스를 포함할 수 있으며(예로, 삼각형으로 도시됨), 절단선(220)은 형상(230)의 외부 에 지에 위치한다. 이와 같이, 정규 형상(230)은 이러한 버텍스들 간의 연결 관계 뿐만 아니라, 모델(210)의 버텍스의 [x,y,z] 위치 값 모두를 보유한다. 정규 형상(230)이 사각형으로 예시되어 있으나, 다른 종류의 정규 형상(예로, 원형 등)도 이용할 수 있음을 유의하여야 한다.
정규 형상(230)의 폴리곤은 샘플링(sample)된 형상(240)을 생성하기 위해 규칙적으로 샘플링될 수 있다. 샘플링된 형상(240)의 샘플링된 각 점은, 위치 값(예로, [x,y,z] 좌표)을 보유하고 샘플링된 이미지(240)의 다른 버텍스에 간접적으로(implicitly) 연결되는 새로운 버텍스일 수 있다. 즉, 샘플링된 이미지(240)의 버텍스들은 정규 형상(230)의 규칙적 샘플링에 의해 위, 아래, 좌, 우측의 다른 버텍스로 연결되어 에지가 될 수 있다.
기하 이미지(250)를 생성하기 위해, 샘플링된 이미지(240)는 샘플링된 이미지(240)의 버텍스의 3채널 [x,y,z] 좌표를 3채널 적/녹/청(RGB) 공간, [r,g,b] 좌표로 매핑(mapping)함으로써 RGB(또는 어떤 다른 색상 공간) 색상 이미지로 변환될 수 있다. 기하 이미지(250)의 각 픽셀은 모델(210)의 샘플링된 버텍스를 나타낼 수 있으며, 픽셀의 적, 녹, 청 값은 샘플링된 버텍스의 [x,y,z] 공간 위치를 나타낸다. 모델(210)의 대응하는 샘플링된 버텍스의 이웃 버텍스는 기하 이미지(250)의 주어진 픽셀에 이웃하는 픽셀에 의해 결정된다. 다시 말해서, 모델(210)의 이웃하는 버텍스는 기하 이미지(250) 내의 이웃하는 픽셀들에 의해 알 수 있으며, 이러한 버텍스의 위치 값은 기하 이미지(250)의 픽셀에 대한 색상 값으로 알 수 있다.
기하 이미지(250)가 위치 정보에 대하여 설명되었으나, 기하 이미지(250)는 모델(210)의 버텍스와 연관된 임의의 정보로부터 생성될 수 있다. 예를 들면, 공간을 향하는 [x,y,z] 벡터인 법선도 기하 이미지(250)에 의해 표현될 수 있다. 또한 색상 값 및/또는 텍스쳐 좌표도 기하 이미지(250)에 의해 표현될 수 있다. 모델을 이미지로 표현하는 것은 이미지 압축 알고리즘과 같은 종래의 이미지 프로세싱 알고리즘을 이용할 수 있게 할 수 있다.
기하 이미지를 압축하는 것이 가능하지만, 그러한 기하 이미지는, 압축된 경우라도, 어떤 경우 데이터 버스(bus)를 통해 그래픽 프로세서로 전송될 수 있다. 어떤 경우, 데이터 버스의 대역폭이 기하 이미지로부터 그래픽 프로세서에 의해 디스플레이될 수 있는 해상도 및/또는 시각적 충실도(visual fidelity)를 제한할 수 있다.
본 명세서에 통합되고 그 일부를 구성하는 첨부된 도면은 발명의 원리와 부합하는 하나 이상의 구현을 도시하며, 발명의 상세한 설명과 함께 그러한 구현을 설명한다. 도면은 실제 크기로 도시된 것이 아니며, 대신 발명의 원리를 예시하는 것임을 강조한다. 도면에서,
도 1은 일반적인 그래픽 프로세싱을 도시하는 흐름도.
도 2는 기하 이미지의 형성을 도시하는 도.
도 3은 예시 시스템을 도시하는 도.
도 4는 그래픽 데이터를 분할하는 프로세스를 도시하는 흐름도.
이하 발명의 상세한 설명은 첨부된 도면을 참조한다. 동일한 또는 유사한 요소를 식별하기 위해 동일한 참조 부호가 상이한 도면에서 사용될 수 있다. 이하의 설명에서, 한정이 아닌 설명의 목적으로, 청구된 발명의 다양한 태양에 대한 완전한 이해를 돕기 위해 특정 구조, 아키텍처, 인터페이스, 기술 등과 같은 특유한 세부 내용이 나열된다. 그러나, 청구된 발명의 다양한 태양이 본 특정 세부 내용을 벗어나는 다른 예에서 실시될 수 있다는 것은 본 명세서를 읽은 당업자에게 자명할 것이다. 어떤 경우, 잘 알려진 장치, 회로 및 방법에 대한 설명은 불필요한 세부사항으로 인해 본 발명의 설명을 모호하게 하지 않기 위해 생략한다.
도 3은 예시 시스템(300)을 도시한다. 시스템(300)은 주 메모리(310), 프로세서(320), 데이터 버스(330), 그래픽 메모리(340), 하나 이상의 버텍스 셰이더(350), 하나 이상의 픽셀 셰이더(360), 및 프레임 버퍼(370)를 포함할 수 있다. 일부 구현에서, 하나 이상의 요소(340-370)가 데이터 버스(330)를 경유하여 프로세서에 연결된, 물리적으로 분리된 그래픽 카드에 포함될 수 있다. 일부 구현에서, 요소들(340-370)은 공통 회로 보드(예로, 마더보드, 도터 카드 등)에 요소들(310 및 320)과 함께 위치할 수 있다. 일부 구현에서는, 하나 이상의 요소(350 및 360)는 장치의 한 부분(예로, 코어)의 일부가 될 수 있고, 프로세서(320)는 동일한 장치의 다른 부분(예로, 다른 코어)에 포함될 수 있다.
주 메모리(310)는 기하 이미지를 저장할 저장 장치(storage device)를 포함할 수 있다. 주 메모리(310)는 디램(dynamic RAM; DRAM), 디디알 램(double data rate RAM; DDR RAM) 등과 같은 램(random access memory; RAM) 장치를 포함할 수 있다. 주 메모리(310)는 사전 연산된(pre-computed) 기하 이미지 및/또는 기하 이미지를 계산할 그래픽 데이터를 저장할 수 있다.
프로세서(320)는 범용 프로세서, 특정 용도의 프로세서 및/또는 특정 용도를 위해 구성된 로직(logic)을 포함할 수 있다. 프로세서(320)는 데이터 버스(330)를 경유하여 주 메모리(310)로부터 그래픽 메모리(340)로 기하 이미지를 분배하도록 구성될 수 있다. 프로세서(320)는 렌더링, 게임, 그래픽 생성(graphical creation) 또는 다른 종류의 그래픽 관련 프로그램과 같은 프로그램의 제어 하에 데이터 버스(330)를 경유하여 기하 이미지를 전송할 수 있다. 일부 구현에서, 프로세서(320)는 주 메모리(310)의 다른 정보로부터 기하 이미지를 계산하고 주 메모리(310)에 기하 이미지를 저장할 수 있다. 일부 구현에서는, 프로세서(320)는 데이터 버스(330)를 경유하여 전송하기 전에 기하 이미지를 압축(예로, JPEG 2000 또는 다른 무손실 기법을 통하여) 할 수 있다.
데이터 버스(330)는 프로세서(320)를 그래픽 메모리(340)로 연결할 수 있다. 데이터 버스(330)는 일반적인 상호접속 프로토콜(interconnect protocol)을 사용하거나, 커스텀 통신 프로토콜(custom communication protocol)을 사용할 수 있다. 데이터 버스(330)는 주어진 시간에 전송할 수 있는 데이터의 최대량을 규정하는 관련 대역폭을 가질 수 있다. 일부 구현에서, 데이터 버스(330)의 대역폭은 시스템(300)의 다른 부분(예로, 셰이더(350 및/또는 360))의 성능을 제한할 수 있다. 일부 구현에서, 데이터 버스(330)의 대역폭은 시스템(300)의 전체 성능을 제한하지 않을 수 있다.
그래픽 메모리(340)는 기하 이미지를 저장할 저장 장치를 포함할 수 있다. 그래픽 메모리(340)는 디램(DRAM), 디디알 램(DDR RAM) 등과 같은 램(RAM) 장치를 포함할 수 있다. 그래픽 메모리(340)는 프로세서(320)와 버텍스 셰이더(350)로부터 기하 이미지를 수신하고 저장할 수 있다. 기록 연산(write operation)을 통해 기하 이미지를 저장하는 일 외에, 그래픽 메모리(340)는 판독 연산(read operation)을 통해 그러한 기하 이미지를 버텍스 셰이더(350)와 픽셀 셰이더(360)에게 제공할 수 있다. 예를 들면, 그래픽 메모리(340)는 기하 이미지와 연관된 다양한 "버텍스 당(per vertex)" 데이터를 저장할 수 있다. 그러한 버텍스 데이터는 하나 이상의 버텍스 위치, 텍스쳐 좌표, 색상 좌표 또는 법선 벡터를 포함할 수 있다.
버텍스 셰이더(350)는 그래픽 메모리(340)로부터 버텍스 데이터를 판독하여 더 높은 해상도의 버텍스 데이터를 생성하기 위해 버텍스 데이터를 분할하도록 구성될 수 있다. 버텍스 셰이더(350)는 병렬 구조를 가질 수 있으며, 예를 들면 픽셀 셰이더(360)보다 더 큰 명령 집합을 가질 수 있다. 본 명세서에서 더 자세히 기술되는 바와 같이, 버텍스 셰이더(350)는 버텍스 데이터의 해상도를 높이기 위해 다양한 버텍스 생성 프로그램과 분할 기법을 사용할 수 있다. 버텍스 셰이더(350)는 또한 더 높은 해상도의 버텍스 데이터를 그래픽 메모리(340)에 기록할 수 있다.
그래픽 메모리(340)에 대한 비교적 높은 대역의 액세스로 인해, 버텍스 셰이더(350)는 비교적 많은 양의 고해상도 버텍스 데이터를 그래픽 메모리(340)에 기록할 수 있다. 일반적인 분할 기법은 기하 이미지의 데이터 양을 4배로 증가시킬 수 있다. 버텍스 셰이더(350)는 주어진 기하 이미지에 대하여 하나 이상의 분할 레벨을 수행하도록 구성될 수 있으며, 버텍스 셰이더(350)는 예를 들면, 그래픽 메모리(340)에 저장된 한번 분할된 버텍스 데이터를 사용하여 그래픽 메모리(340)에 저장하기 위한 두 번째 레벨의 분할 데이터(예로, 더 높은/좋은 해상도)를 생성할 수 있다.
픽셀 셰이더(360)는 분할된 버텍스 데이터를 그래픽 메모리(340)로부터 판독하여 디스플레이 준비를 하도록 구성될 수 있다. 픽셀 셰이더(360)는 예를 들면 버텍스 셰이더(350)보다 더 높은 대역폭의 그래픽 메모리(340)로의 연결을 가질 수 있으며, 픽셀 셰이더(360)는 버텍스 셰이더(350)보다 명령 및 명령 집합의 수에 있어서 더 제한될 수 있다. 예를 들면, 픽셀 셰이더(360)는 새로운, 고해상도 기하 이미지를 그래픽 메모리(340)로부터 판독하고, 이미지를 래스터라이즈(rasterize)하며 래스터라이즈된 픽셀 데이터를 프레임 버퍼(370)로 전송하도록 구성될 수 있다. 일부 구현에서, 픽셀 셰이더(360)는 프로세서(320)로부터의 (그래픽 메모리(340)에 남아있을 수 있는) 저해상도 기하 이미지를 디스플레이 프리미티브(primitive)로 이용하여 새로운 기하 이미지를 래스터라이즈할 수 있다.
프레임 버퍼(370)는 픽셀 셰이더(360)로부터 픽셀 데이터를 수신하여, 필요하다면 디스플레이하기 전에 이를 버퍼링(buffer)하도록 구성될 수 있다. 프레임 버퍼(370)는 또한, 디스플레이 또는 디스플레이 인터페이스로 데이터를 출력할 수 있으며, 이는 그래픽 프로세서의 제어 하에 이루어질 수 있다(도시되지 않음).
도 4는 그래픽 데이터 분할 프로세스(400)를 도시하는 흐름도이다. 설명의 편의를 위해 프로세스(400)는 시스템(300)에 대하여 기술될 수 있으나, 청구된 발명은 반드시 이에 한정되는 것은 아니다.
프로세싱은 프로세서(320)가 텍스쳐, 기하 이미지 및 이미지 내의 버텍스 위치에 대해 연관된 임의의 다른 값들을 얻음으로써 시작할 수 있다[동작 410]. 일부 구현에서, 프로세서(320)는 상기 값들을 계산할 수 있고, 일부 구현에서 프로세서(320)는 주 메모리(310)로부터 상기 값들을 판독할 수 있다. 기하 이미지를 얻는 것 외에, 프로세서(320)는 또한 하나 이상의 텍스쳐 좌표 맵 및 색상 좌표 맵을 생성할 수 있다. 기하 이미지를 생성하는 상세한 과정(예로, 에지 경로를 따라 메쉬를 절단하고 결과 차트(chart)를 사각형으로 매개변수화하는 것)은 예를 들면 쟝펭 구 등의, "기하 이미지(Geometry Images)," SIGGRAPH 2002 회보(Proceedings) 355-361 페이지에서 찾아볼 수 있다. 그러한 텍스쳐 맵, 기하 이미지 및/또는 색상 맵은 특정한 폭와 높이를 갖는 어레이로 구현될 수 있다.
텍스쳐, 색상 및/또는 법선 맵은 도 2의 버텍스 맵과 동일한 방식으로 생성될 수 있다. 텍스쳐에 있어서, tu 및 tv는 각각 적색 및 녹색 채널에 저장될 수 있다. 마찬가지로, 색상에 있어서 r, g, b 값은 텍스쳐 맵에 대한 r, g, b 값에 저장될 수 있다. 텍스쳐는 보통 색상의 어레이일 뿐이므로, 색상과 텍스쳐 맵 모두 r, g, b를 사용한다. 마지막으로 법선의 x, y, z 값은 텍스쳐 맵의 r, g, b 채널에 저장될 수 있다. 그러한 매핑은 이미지와 같은 2D 구조에 제한될 필요가 없음을 유의하여야 한다. 오히려, 본 명세서에 기술된 기법은 r, g, b 및 (필요하다면) 알파(alpha)에 매핑된 많은 수의 채널을 사용함으로써 텍스쳐, 법선 및 색상을 지원할 수 있다. 만일 4 채널 이상의 버텍스 관련 정보 또는 데이터가 필요할 경우, 추가적인 텍스쳐 맵이 이 정보를 위해 사용될 수 있다. 이렇게, 도 2에 대하여 설명된 기술은 다소 임의적인 또한/또는 복잡한 버텍스 데이터에 이용될 수 있다.
또한 동작 410에서, 프로세서(320)는 텍스쳐, 기하 이미지 및 색상이 한번 이상 분할된 경우 그에 대한 플레이스홀더(placeholder) 어레이를 생성할 수 있다. 그러한 플레이스홀더 어레이는 분할된 텍스쳐, 기하 이미지 등을 위한 그래픽 메모리(340)의 공간을 확보하기 위해 최소 대역폭을 이용하여 단축된(shorthand) 형태로 데이터 버스(330)를 통해 전송될 수 있다. 일부 구현에서, 플레이스홀더 어레이는 프로세서(320)로부터의 명령에 응답하여 버텍스 셰이더(350)에 의해 국부적으로(locally) 생성될 수 있다. 임의의 이벤트에 있어서, 플레이스홀더 어레이는 0으로 초기화되어 그래픽 메모리(340)에 저장될 수 있다.
프로세싱은 프로세서(320)가 텍스쳐, 기하 이미지 및 임의의 다른 값(예로, 색상 좌표 및/또는 법선 벡터)을 데이터 버스(330)를 경유하여 그래픽 메모리(340)로 전송함으로써 계속될 수 있다[동작 420]. 일부 구현에서, 프로세서(320)는 텍스쳐, 기하 이미지 및 임의의 다른 값을 그래픽 애플리케이션 프로그래밍 인터페이스(application programming interface; API)로 전송할 수 있으며, 이는 텍스쳐 및 기하 이미지의 그래픽 메모리(340)로의 운반을 처리할 수 있다. 일부 구현에서, 텍스쳐, 기하 이미지 등은 데이터 버스(330)를 통해 전송되기 전 (예로, JPEG 2000과 같은 무손실 기법을 통하여) 압축될 수 있다.
버텍스 셰이더(350)는 저장된 텍스쳐, 기하 이미지 및 임의의 다른 값(통합적으로 "버텍스 데이터")를 그래픽 메모리(340)로부터 판독할 수 있으며 상기 버텍스 데이터를 분할할 수 있다[동작 430]. 상기 언급된 바와 같이, 2차원 이미지(예로, 기하 이미지)의 분할은 이미지의 해상도를 대략 4배 정도로 증가시킬 수 있다. 일부 구현에서, 버텍스 셰이더(350)는 에드 캣멀(Ed Catmull) 및 짐 클락(Jim Clark)의, "임의의 위상의 메쉬상의, 재귀적으로 생성된 B-스플라인 표면(Recursively Generated B-Spline Surface on Arbitrary Topological Meshes)," Computer Aided Geometric Design, Vol. 10, No. 6, 1978에 개시된 캣멀-클락(Catmull-Clark) 기술을 이용하여 분할을 구현할 수 있다.
그러나, 다른 분할 기술이 버텍스 셰이더(350)에 의해 사용될 수 있다. 일부 구현에서, 버텍스 셰이더(350)는 "분할의 구현: 실시간 스케일러블 포토리얼리즘을 위한 분할 평면의 사용(Subdividing Reality: Employing Subdivision Surfaces for Real Time Scalable Photorealism)," 스티븐 전킨스(Stephen Junkins), Game Developers Conference 학회보, 2000에 개시된 나비 기술(butterfly technique)을 이용하여 버텍스 데이터를 분할할 수 있다. 일부 구현에서, 버텍스 셰이더(350)는 C.T.루프(C.T.Loop), "삼각형 기반의 평탄한 분할 평면(Smooth Subdivision Surfaces Based on Triangles)," M.S.Thesis, Department of Mathematics, University of Utah, August, 1987에 개시된 루프 기술(loop technique)을 이용하여 버텍스 데이터를 분할할 수 있다. 일부 구현에서, 버텍스 셰이더(350)는 D.Doo 및 M.Sabin, "Behavior of Recursive Division Surfaces Near Extraordinary Points," Computer Aided Design, Vol. 10, No. 6, 1978에 개시된 두-사빈(Doo-Sabin) 기술을 이용하여 버텍스 데이터를 분할할 수 있다.
버텍스 셰이더(350)는 분할된, 출력 버텍스 데이터를 그래픽 메모리(340)에 기록할 수 있다[동작 440]. 일부 구현에서, 버텍스 셰이더(350)는 그래픽 메모리(340) 내의 하나 이상의 플레이스홀더 어레이를 출력 버텍스 데이터로 덮어쓴다. 일부 구현에서, 버텍스 셰이더(350)는 필요에 따라 출력 버텍스 데이터를 위해 그래픽 메모리(340)에 새로운 구조체를 생성할 수 있다.
도 4에 점선 화살표로 표시된 바와 같이, 필요한 분할의 레벨 수에 따라, 버텍스 셰이더(350)는 동작 430과 440을 한번 이상 반복할 수 있다. 예를 들면, 한번 이상의 분할 동작이 필요한 경우(예로, 더 높은 해상도를 생성하기 위해), 버텍스 셰이더(350)는 이전 동작 440에서 그래픽 메모리(340)에 저장된 한번 분할된(또는 동작 430이 두번 반복된 경우 두번 분할된) 출력 버텍스 데이터를 판독하여 더 분할할 수 있다. 분할은 직전의 선행하는 해상도(예로, 이전 분할의 출력)에서의 버텍스 데이터에 종속적일 수 있기 때문에, 일부 구현에서 버텍스 셰이더(350)는 그래픽 메모리(340)의 공간을 비우기 위해 더 높은 해상도의 버텍스 데이터를 덮어쓰고 또한/또는 삭제할 수 있다. 예를 들면, 두 번째 레벨의(또는 그 이상) 분할을 수행할 때, 프로세서(320)로부터 전송된 원본 버텍스 데이터가 덮어씌여지고 또한/또는 삭제될 수 있다.
분할시에, 그래픽 메모리(340) 및/또는 시스템(300)의 다른 자원의 공간을 절약하기 위해 다른 기술들이 또한 사용될 수 있다. 예를 들면, 그래픽 메모리(340)의 공간은 텍스쳐, 법선 및/또는 색상 좌표를, 예를 들면 연관된 기하 이미지 만큼 완전히 분할하지 않음으로써 절약될 수 있다. 그러한 경우, 픽셀 셰이더(360)는 낮은 레벨의 분할(예로, 두번 이상 분할된 해상도에 대해 단 한번 분할된 데이터)을 참조할 뿐이며 각 룩업(lookup)에 대해 4로 분할한다. 한 예로, 256x256 법선 맵과 그에 대응하는 256x256 기하 이미지의 생성 및/또는 저장이 필요한 경우, 픽셀 셰이더(360)는 64x64 레벨의 해상도를 가진 법선 맵을 대신 사용할 수 있다. 위치 어레이의 인덱스(32, 32)에서의 목록(entry)에 대해, 64x64 법선 맵의 위치 (8, 8)가 프로세싱 중 픽셀 셰이더(360)에 의해 참조될 수 있다. 이렇게, 픽셀 셰이더(360)는 버텍스 셰이더(350)에 의해 고해상도로 분할된 다른 벡터 데이터(예로, 기하 이미지 또는 다른 구조)를 포맷팅(formatting)할 때 하나 이상의 낮은 해상도의 맵(예로, 법선 맵)을 이용할 수 있다.
일부 구현에서, 적합한 법선이 계산될 수 있으며, 그 후 가장 근접한 법선이 이전 법선 맵에서 검색될 수 있다. 결과의 법선 데이터는 임의의 크기의 법선 맵에 저장될 수 있다. 다른 기술이 주어진 해상도에 대해 그래픽 메모리(340)의 모든 그래픽 데이터를 완전히 분할하는 것을 회피하는데 이용될 수 있다.
분할은 일부 영역(예로, 기하 이미지 내의 영역)에서는 필요하지 않을 수 있다. 그러한 영역에 대해, 기존 기하 이미지, 법선 이미지 및/또는 텍스처 맵은 그대로 남겨질 수 있다. 분할할 필요가 있는 다른 영역에 대해, 분할 기법이 사용될 수 있다(예로, 캣멀-클락). 두 영역(예로, 분할된 영역과 그렇지 않은 영역) 사이의 경계에 대해, 일부 버텍스 정보는 중복될 수 있다.
그래픽 메모리(340)의 공간을 절약하는 다른 방법은 그래픽 메모리에 저장된 데이터(예로, 원본 버텍스 데이터 및/또는 분할된 버텍스 데이터)를 무손실 압축 기법을 통해 압축하는 것일 수 있다. 예를 들면 분할된 기하 이미지를 압축하는데 적합한 하나의 그러한 기법은 JPEG 2000이 될 수 있으며, 이는 약 2.5 대 1의 압축 비율을 얻을 수 있다. 데이터 압축은 그래픽 메모리(340)에 저장되는 데이터의 양을 감소시키는 다른 기술 대신, 또는 그에 부가하여 사용될 수 있다.
프로세싱은 픽셀 셰이더(360)가 그래픽 메모리(340)에 저장된 분할된 버텍스 데이터를 디스플레이하기 위해 준비함으로써 계속될 수 있다[동작 450]. 픽셀 셰이더(360)는 저장된 버텍스 데이터(예로, 기하 이미지, 색상 맵 등)를 디스플레이하기 위해 래스터라이즈하고 또한/또는 다른 방식으로 포맷팅한다. 일부 구현에서, 픽셀 셰이더(360)는 하나 이상의 저해상도 버텍스 데이터 집합(예로, 원본 기하 이미지)을 디스플레이 프리미티브로 이용하여 분할된 버텍스 데이터를 준비할 수 있다. 도 4에는 명확히 도시되어 있지 않으나, 포맷팅된 그래픽 이미지는 그 후 프레임 버퍼(370)로부터 디스플레이될 수 있다.
상기 기술된 버텍스 셰이더(350)를 통한 버텍스 데이터 분할 시스템 및 기법은 일부 구현에서 데이터 버스(330)에 의해 전송되는 데이터의 주어진 대역폭에 대해 디스플레이된 데이터의 시각적 충실도/해상도를 증가시킬 수 있다. 예를 들면, 데이터 버스(330)의 대부분 또는 사실상 모든 대역폭을 사용하는 버텍스 데이터를 버텍스 셰이더(350)에 의해 분할함으로써, 그렇지 않은 경우 데이터 버스(330)의 대역폭으로 인해 가능할 수 있는 해상도를 넘어 디스플레이 해상도를 증가시킬 수 있다. 일부 구현에서, 그러한 분할 기법은 분할이 수행되지 않은 경우 보다 데이터 버스(330)의 더 적은 대역폭을 이용하여 주어진 시각적 충실도/해상도를 생성하는데 도움이 될 수 있다. 예를 들면, 디스플레이 해상도는 분할이 수행되지 않은 경우와 동일하게 남을 수 있으나, 분할은 상기 경우 동일한 해상도를 위해 실질적으로 데이터 버스(330)의 더 낮은 대역폭을 이용할 수 있도록 한다.
상기 기술된 시스템(300)과 프로세스(400)의 이해를 더욱 돕기 위해, 예시를 제시할 것이다. 이 예시에서, 프로세서(320)는 동작 410에서 주 메모리(310)로부터 세개의 n x n(n은 8, 16, 32 등과 같은 정수) 어레이, G0, T0 및 C0을 생성하거나 판독할 수 있다. G0은 기하 이미지일 수 있다. T0은 텍스쳐 좌표 맵일 수 있으며, 각 위치는 대응하는 텍스쳐 좌표를 포함한다. C0은 색상 좌표 맵일 수 있으며, 각 위치는 대응하는 적, 녹, 청 색상 값을 포함한다. G0, T0 및 C0는 원본 해상도에서의 값일 수 있다(예로, 8x8, 16x16 등).
또한 동작 410에서, 필요한 분할 레벨 각각에 대해(예로, 2 레벨), 프로세서(320) 및/또는 버텍스 셰이더(350)는 각각의 분할된 해상도에서 각 G0, T0 및 C0에 대한 플레이스홀더 어레이/맵을 생성할 수 있다. 분할은 어레이/이미지의 크기/해상도를 4배 만큼 증가시킬 수 있기 때문에, 제1 레벨의 분할에 있어서, G1, T1 및 C1은 4*n x 4*n의 크기/해상도로 생성될 수 있다. 제2 레벨의 분할에 있어서, G2, T2 및 C2은 4*4*n x 4*4*n(즉, 16n x 16n)의 크기/해상도로 생성될 수 있다. 편의상, G1, T1, C1, G2, T2 및 C2는 0으로 초기화될 수 있다.
동작 420에서, 프로세서(320)는 구조체 G0, T0, C0, G1, T1, C1, G2, T2 및 C2를 데이터 버스(330)를 통해 그래픽 메모리(340)로 보낼 수 있다. 일부 구현에서, 그러한 연산은 그래픽 API를 이용하여 수행될 수 있다. 이러한 연산은 추후에 버텍스 셰이더(350)에 의해 채워질 수 있도록 그래픽 메모리(340)의 공간을 초기화할 수 있다.
버텍스 셰이더(350)는 그 후 1차 분할된 버텍스 데이터 G1, T1 및 C1을 생성하기 위해 동작 430에서 G0, T0 및 C0을 분할할 수 있다. 예를 들면, 사용된 특정한 분할 기법이 캣멀-클락 분할 기법인 경우, 면(face)에 대한 새로운 면 포인트(face point)는 면을 정의하는 기존 점들의 평균을 냄으로써 계산될 수 있다. 새로운 에지 포인트(edge point)는 에지를 공유하는 면의 두 새로운 면 포인트의 평균으로 기존 에지 포인트의 중간점을 평균 냄으로써 계산될 수 있다. 새로운 버텍스 포인트는 Q/n + (2*R)/n + (S*(n-3))/n를 평균함으로써 계산될 수 있으며, 여기서 Q는 기존 버텍스 포인트에 인접한 모든 면의 새로운 면 포인트의 평균과 같고, R은 기존 버텍스 포인트에 부수하는 모든 기존 에지의 중간점의 평균과 같으며, S는 기존 버텍스 포인트이다. 캣멀-클락과 다른 분할 기법이 일부 구현에서 사용될 수 있다.
G1, T1 및 C1의 포인트의 각 집합이 생성되면, 동작 440에서 버텍스 셰이더(350)는 대응하는 플레이스홀더 구조체의 값을 그래픽 메모리(340)에 저장할 수 있다. 1차 분할이 충분히 완료되면, 버텍스 셰이더(350)는 2차 분할된 버텍스 데이터 G2, T2 및 C2를 생성하기 위해 동작 430에서 G1, T1 및 C1을 더 분할할 수 있다. 동작 440에서 버텍스 셰이더(350)는 더 분할된 값을 그래픽 메모리(340)의 대응하는 플레이스 홀더 구조체 G2, T2 및 C2에 저장할 수 있다. 상기 설명된 바와 같이, 일부 구현에서 G1, T1 또는 C2는 2차 분할 레벨을 거치지 않을 수 있다. 픽셀 셰이더(360)는 그래픽 메모리(340)로부터 최종 분할된 버텍스 데이터(예로, 모두 두 번 분할되었다면 G2, T2 및 C2)를 판독하여 프레임 버퍼(370)를 경유하여 디스플레이하기 위해 준비할 수 있다. G0, T0 및 C0이 모두 두 번 분할되지 않는 구현에서, 픽셀 셰이더(360)는 G2와, T1 및/또는 C1과 같이 하나 이상의 덜 분할된(less-subdivided) 구조체를 디스플레이하기 위해 준비한다.
상기 설명된 예시는 특정한 구현을 포함하지만, 청구된 발명은 반드시 그에 한정되는 것은 아니다. 예를 들면, 초기 버텍스 데이터는 법선 데이터와 같이 G0, T0 및 C0과는 다른 그래픽 데이터를 포함할 수 있다. 버텍스 셰이더(350)에 의해 수행되는 분할의 수는 2회 이상이거나 이하일 수 있다. 이와 같이, 캣멀-클락과 다른 분할 기법이 일부 구현에서 사용될 수 있다.
상기 하나 이상의 구현에 대한 기술은 예시와 설명을 제공하지만, 이것이 전부라거나 발명의 범주를 개시된 특정한 형태로 한정하고자 하는 것은 아니다. 상기의 개시 내용에 비추어 수정 및 변경이 가능하며 또는 발명의 다양한 구현의 실시로부터 수정 및 변경을 얻을 수 있다.
예를 들면, 본 명세서의 분할 기법은 버텍스 셰이더(350)에 대하여 기술되었으나, 일부 구현에서는 다른 그래픽 하드웨어가 분할을 구현하는데 이용될 수 있다. 그래픽 메모리(340)로부터 버텍스 데이터를 판독하고 그래픽 메모리(340)로 분할된 버텍스 데이터를 기록하는 능력이 있다면 그러한 다른 하드웨어(예로, 다른 종류의 셰이더 등)는 적합할 수 있다.
또한 본 명세서에 기술된 분할 기법은 일부 구현에서는 버텍스 셰이더(350)에 의해 필요에 따라(on an as-needed basis)(예로, 사실상 실시간에) 수행될 수 있으며, 일부 구현에서는 버텍스 셰이더(350)에 의해 미리 계산될(pre-computed) 수 있다. 또한 일부 구현에서는 버텍스 셰이더(350)는 분할된 버텍스 데이터를 먼저 그래픽 메모리(340)에 기록하지 않고, 직접 픽셀 셰이더(360)로 전송할 수 있다.
또한, 도 4의 동작들은 도시된 순서대로 구현될 필요가 없으며 모든 동작이 반드시 수행되어야 하는 것도 아니다. 또한, 다른 동작에 종속적이 아닌 그러한 동작은 다른 동작과 병렬적으로 수행될 수 있다. 또한, 본 도(figure)의 적어도 일부의 동작은 머신 판독 가능한 매체(machine-readable medium)에 구현된 명령 또는 명령 그룹으로 구현될 수 있다.
본 출원의 설명에서 사용된 어떤 요소, 동작 또는 명령도 명확히 언급되지 않는 한 발명에 결정적으로 중요하거나(critical) 필수 불가결한(essential) 것으로 해석될 수 없다. 또한 본 명세서에서 사용된 경우, 단복수 표현이 특별히 없는 경우는 단수적인 의미뿐만 아니라 복수적인 의미도 가지는 것이다. 실질적으로 발명의 사상과 원리를 벗어나지 않으면서 청구 발명의 상기 기술된 구현(들)에 변경과 수정이 이루어질 수 있다. 모든 그러한 수정과 변경은 본 명세서의 범주 내에 포괄되며 이하 청구 범위에 의해 보호하고자 한다.

Claims (28)

  1. 그래픽 메모리;
    상기 그래픽 메모리와 동작적으로(operatively) 연결된 데이터 버스;
    버텍스 데이터(vertex data)를 상기 데이터 버스를 경유하여 상기 그래픽 메모리로 전송하는 프로세서; 및
    상기 그래픽 메모리로부터 상기 버텍스 데이터를 판독하고, 상기 버텍스 데이터를 분할된 버텍스 데이터로 분할하며, 상기 분할된 버텍스 데이터를 상기 그래픽 메모리에 기록하는 버텍스 셰이더(vertex shader)
    를 포함하는 그래픽 처리 시스템.
  2. 제1항에 있어서,
    상기 버텍스 데이터는 기하 이미지(geometry image)를 포함하는, 그래픽 처리 시스템.
  3. 제2항에 있어서,
    상기 버텍스 데이터는 색상 데이터, 텍스쳐 데이터 또는 법선(normal) 데이터를 더 포함하는, 그래픽 처리 시스템.
  4. 제1항에 있어서,
    상기 프로세서는 애플리케이션 프로그래밍 인터페이스(API)를 이용하여 상기 버텍스 데이터를 전송하도록 구성된, 그래픽 처리 시스템.
  5. 제1항에 있어서,
    상기 데이터 버스는 연관된 대역폭을 가지며, 상기 프로세서에 의해 전송되는 상기 버텍스 데이터는 상기 데이터 버스의 상기 대역폭의 대부분을 사용하는, 그래픽 처리 시스템.
  6. 제1항에 있어서,
    상기 그래픽 메모리로부터 상기 분할된 버텍스 데이터를 판독하고 상기 분할된 버텍스 데이터를 디스플레이하기 위해 준비하는 픽셀 셰이더(pixel shader)
    를 더 포함하는 그래픽 처리 시스템.
  7. 제6항에 있어서,
    상기 픽셀 셰이더는 상기 분할된 버텍스 데이터를 래스터라이즈(rasterize)하는, 그래픽 처리 시스템.
  8. 제6항에 있어서,
    상기 픽셀 셰이더로부터의 상기 준비된 분할된 버텍스 데이터를 버퍼링하고 출력하는 프레임 버퍼
    를 더 포함하는 그래픽 처리 시스템.
  9. 제1항에 있어서,
    상기 프로세서가 상기 버텍스 데이터를 상기 그래픽 메모리로 전송하기 전 상기 버텍스 데이터를 저장하는 주 메모리(main memory)
    를 더 포함하는 그래픽 처리 시스템.
  10. 제1 해상도를 갖는 제1 기하 이미지를 저장하는 메모리;
    상기 제1 기하 이미지를 상기 제1 해상도보다 높은 제2 해상도를 갖는 제2 기하 이미지로 분할하고 상기 제2 기하 이미지를 상기 메모리에 저장하는 버텍스 셰이더; 및
    상기 제2 기하 이미지를 디스플레이하기 위해 준비하는 픽셀 셰이더
    를 포함하는 그래픽 처리 시스템.
  11. 제10항에 있어서,
    상기 픽셀 셰이더로부터의 데이터를 버퍼링하고 출력하는 프레임 버퍼
    를 더 포함하는 그래픽 처리 시스템.
  12. 제10항에 있어서,
    상기 제1 기하 이미지를 획득하여 상기 제1 기하 이미지를 상기 메모리에 전송하는 프로세서
    를 더 포함하는 그래픽 처리 시스템.
  13. 제12항에 있어서,
    상기 프로세서에 의한 엑세스를 위해 상기 제1 기하 이미지를 저장하는 별도의 메모리
    를 더 포함하는 그래픽 처리 시스템.
  14. 제10항에 있어서,
    상기 픽셀 셰이더는 상기 제2 기하 이미지를 래스터라이즈하는, 그래픽 처리 시스템.
  15. 제10항에 있어서,
    상기 제2 해상도는 상기 제1 해상도보다 약 4배 더 큰, 그래픽 처리 시스템.
  16. 제1 크기의 제1 기하 이미지를 획득하는 단계;
    상기 제1 기하 이미지를 저장하는 단계;
    상기 제1 기하 이미지를 상기 제1 크기보다 큰 제2 크기의 제2 기하 이미지로 분할하는 단계; 및
    상기 제2 기하 이미지를 저장하는 단계
    를 포함하는 그래픽 처리 방법.
  17. 제16항에 있어서,
    상기 획득 단계는 상기 제1 기하 이미지를 계산(computing)하는 단계를 포함하는, 그래픽 처리 방법.
  18. 제16항에 있어서,
    상기 획득 단계는 메모리로부터 상기 제1 기하 이미지를 판독하는 단계를 포함하는, 그래픽 처리 방법.
  19. 제16항에 있어서,
    상기 제2 크기는 상기 제1 크기보다 약 4배 더 큰, 그래픽 처리 방법.
  20. 제16항에 있어서,
    상기 제2 기하 이미지를 상기 제2 크기보다 큰 제3 크기의 제3 기하 이미지로 분할하는 단계; 및
    상기 제3 기하 이미지를 저장하는 단계
    를 더 포함하는 그래픽 처리 방법.
  21. 제16항에 있어서,
    상기 제1 기하 이미지의 상기 저장 단계 전에 데이터 버스를 경유하여 상기 제1 기하 이미지를 전송하는 단계
    를 더 포함하는 그래픽 처리 방법.
  22. 제 16항에 있어서,
    상기 제2 기하 이미지를 래스터라이즈하는 단계
    를 더 포함하는 그래픽 처리 방법.
  23. 그래픽 데이터를 저장하는 메모리; 및
    상기 메모리로부터 그래픽 데이터를 판독하고, 상기 판독된 그래픽 데이터로부터 새로운 그래픽 데이터를 생성하며, 상기 새로운 그래픽 데이터를 상기 메모리에 기록하는 버텍스 셰이더
    를 포함하는 그래픽 처리 장치.
  24. 제23항에 있어서,
    상기 판독된 그래픽 데이터는 기하 이미지를 포함하는, 그래픽 처리 장치.
  25. 제23항에 있어서,
    상기 버텍스 셰이더는 상기 판독된 그래픽 데이터를 분할하여 상기 새로운 그래픽 데이터를 생성하도록 구성된, 그래픽 처리 장치.
  26. 메모리로부터 제1 해상도를 갖는 버텍스 데이터를 판독하는 단계;
    상기 메모리로부터 상기 제1 해상도보다 낮은 제2 해상도를 갖는 법선 데이터를 판독하는 단계; 및
    상기 법선 데이터를 이용하여 디스플레이를 위해 상기 버텍스 데이터를 준비하는 단계
    를 포함하는 그래픽 처리 방법.
  27. 제26항에 있어서,
    상기 제2 해상도를 갖는 원본 버텍스 데이터를 상기 제1 해상도를 갖는 상기 버텍스 데이터로 분할하는 단계; 및
    상기 제1 해상도를 갖는 상기 버텍스 데이터를 상기 메모리에 기록하는 단계
    를 더 포함하는 그래픽 처리 방법.
  28. 제26항에 있어서,
    상기 준비 단계는, 상기 제2 해상도를 갖는 상기 법선 데이터에 대응하는 인덱스를 생성하기 위해, 상기 제1 및 제2 해상도의 비율로 상기 제1 해상도를 갖는 상기 버텍스 데이터로 인덱스를 스케일링(scale)하는 단계를 포함하는, 그래픽 처리 방법.
KR1020077004122A 2004-08-26 2005-08-12 기하 이미지 분할을 위한 그래픽 처리 시스템 및 방법 KR100868396B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020077004122A KR100868396B1 (ko) 2004-08-26 2005-08-12 기하 이미지 분할을 위한 그래픽 처리 시스템 및 방법

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/926,875 2004-08-26
KR1020077004122A KR100868396B1 (ko) 2004-08-26 2005-08-12 기하 이미지 분할을 위한 그래픽 처리 시스템 및 방법

Publications (2)

Publication Number Publication Date
KR20070032080A KR20070032080A (ko) 2007-03-20
KR100868396B1 true KR100868396B1 (ko) 2008-11-11

Family

ID=41647518

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020077004122A KR100868396B1 (ko) 2004-08-26 2005-08-12 기하 이미지 분할을 위한 그래픽 처리 시스템 및 방법

Country Status (1)

Country Link
KR (1) KR100868396B1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101692058B1 (ko) 2016-01-29 2017-01-04 상명대학교서울산학협력단 3d 메쉬모델 분할 방법

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9905046B2 (en) 2014-04-03 2018-02-27 Intel Corporation Mapping multi-rate shading to monolithic programs

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2003050759A1 (fr) * 2001-12-12 2003-06-19 Sony Corporation Appareil de traitement d'images et procede associe
KR20040073280A (ko) * 2001-12-12 2004-08-19 소니 가부시끼 가이샤 화상 처리 장치 및 그 방법

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2003050759A1 (fr) * 2001-12-12 2003-06-19 Sony Corporation Appareil de traitement d'images et procede associe
KR20040073280A (ko) * 2001-12-12 2004-08-19 소니 가부시끼 가이샤 화상 처리 장치 및 그 방법

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101692058B1 (ko) 2016-01-29 2017-01-04 상명대학교서울산학협력단 3d 메쉬모델 분할 방법

Also Published As

Publication number Publication date
KR20070032080A (ko) 2007-03-20

Similar Documents

Publication Publication Date Title
US7956860B2 (en) Subdividing geometry images in graphics hardware
EP3673463B1 (en) Rendering an image from computer graphics using two rendering computing devices
US11625894B2 (en) Virtual photogrammetry
US8115767B2 (en) Computer graphics shadow volumes using hierarchical occlusion culling
US11348308B2 (en) Hybrid frustum traced shadows systems and methods
Purnomo et al. Seamless texture atlases
EP2831848B1 (en) Method for estimating the opacity level in a scene and corresponding device
JP2001118082A (ja) 描画演算処理装置
WO2008013605A1 (en) Real-time gpu rendering of piecewise algebraic surfaces
JP2002520748A (ja) リアルタイム・ボリューム処理およびユニバーサル3dレンダリングのための装置および方法
Sander et al. Progressive buffers: view-dependent geometry and texture lod rendering
US11087511B1 (en) Automated vectorization of a raster image using a gradient mesh with arbitrary topology
CN111127299A (zh) 一种加速光栅化遍历的方法、装置及计算机存储介质
KR100868396B1 (ko) 기하 이미지 분할을 위한 그래픽 처리 시스템 및 방법
US8274513B1 (en) System, method, and computer program product for obtaining a boundary attribute value from a polygon mesh, during voxelization
Xu et al. Visualization methods of vector data on a Digital Earth System
Dai et al. Rendering 3D vector data using the theory of stencil shadow volumes
US11869123B2 (en) Anti-aliasing two-dimensional vector graphics using a compressed vertex buffer
US20230186523A1 (en) Method and system for integrating compression
Hernández et al. Simple dynamic lod for geometry images
Ivanov et al. Representation of real-life 3d models by spatial patches
Shinkovich Feature preserving continuous level-of-detail for terrain rendering

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
FPAY Annual fee payment

Payment date: 20121019

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20131101

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20141031

Year of fee payment: 7

FPAY Annual fee payment

Payment date: 20151030

Year of fee payment: 8

FPAY Annual fee payment

Payment date: 20161028

Year of fee payment: 9

LAPS Lapse due to unpaid annual fee