KR20080015705A - 표시용의 그래픽 오브젝트의 렌더링 중에 오브젝트꼭지점을 변환하는 방법 및 장치 - Google Patents

표시용의 그래픽 오브젝트의 렌더링 중에 오브젝트꼭지점을 변환하는 방법 및 장치 Download PDF

Info

Publication number
KR20080015705A
KR20080015705A KR1020070023949A KR20070023949A KR20080015705A KR 20080015705 A KR20080015705 A KR 20080015705A KR 1020070023949 A KR1020070023949 A KR 1020070023949A KR 20070023949 A KR20070023949 A KR 20070023949A KR 20080015705 A KR20080015705 A KR 20080015705A
Authority
KR
South Korea
Prior art keywords
matrix
space
vertex
multiplication
clip
Prior art date
Application number
KR1020070023949A
Other languages
English (en)
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 KR20080015705A publication Critical patent/KR20080015705A/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
    • 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
    • G06T1/00General purpose image data processing
    • G06T1/20Processor architectures; Processor configuration, e.g. pipelining

Landscapes

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

Abstract

표시용의 그래픽 오브젝트의 렌더링 중에 오브젝트 꼭지점을 변환하는 방법은 변환되는 오브젝트 스페이스에서의 각 오브젝트 꼭지점을 곱셈 행렬로 곱셈하는 단계를 포함한다. 곱셈 행렬은 모델뷰 행렬과 투영 행렬의 곱이다. 그 결과, 각 오브젝트 꼭지점은 단일 곱셈 연산을 통해 오브젝트 스페이스로부터 클립 스페이스로 변환된다.

Description

표시용의 그래픽 오브젝트의 렌더링 중에 오브젝트 꼭지점을 변환하는 방법 및 장치{METHOD AND APPARATUS FOR TRANSFORMING OBJECT VERTICES DURING RENDERING OF GRAPHICAL OBJECTS FOR DISPLAY}
도 1은 오브젝트 스페이스 내의 오브젝트 꼭지점을 스크린 스페이스 내의 오브젝트 꼭지점으로 변환하는 종래의 오픈GL(OpenGL) 그래픽 파이프라인을 도시하는 도면;
도 2는 표시용의 그래픽 오브젝트의 렌더링 중에 오브젝트 꼭지점을 변환하는 오픈GL 래스터화 엔진의 블록도; 및
도 3은 오브젝트 꼭지점 변환 중에 도 2의 래스터화 엔진에 의해 실행되는 단계들을 나타내는 플로우차트이다.
본 발명은 일반적으로 그래픽 애플리케이션에 관한 것으로, 특히 표시용의 그래픽 오브젝트의 렌더링 중에 오브젝트 꼭지점을 변환하는 방법 및 장치에 관한 것이다.
오픈GL(OpenGL)은 2차원(2D) 및 3차원(3D) 그래픽 애플리케이션용 산업 표준 그래픽 애플리케이션 프로그래밍 인터페이스(API)이다. 일반적으로, 오픈GL API는 호스트 애플리케이션으로부터 수신되는 렌더링될 오브젝트를 나타내는 그래픽 데이터를 처리하고, 사용자에 의해 시청하기 위한 표시 장치 상에 그래픽 오브젝트를 렌더링한다. 각 오브젝트에 대한 그래픽 데이터는 꼭지점이라고 통칭되는 3D 좌표의 어레이 및 관련 데이터를 포함한다. 오브젝트 꼭지점은 4원 동차 벡터(four-element homogenous vectors) [x, y, z, w]로 표시되며, 여기에서 x, y 및 z는 3D 스페이스에서의 꼭지점 좌표이고, w는 1이다. 오브젝트 꼭지점이 수신될 때, 오픈GL API는 오브젝트 꼭지점을 변환하고 오브젝트 꼭지점의 세트를 함께 그룹화하여 점, 선, 삼각형 및 다각형을 형성함으로써 그래픽 프리미티브(primitive)를 구성한다. 그 후, 구성된 그래픽 프리미티브는 표시 장치 상에 그래픽 오브젝트를 렌더링하는 데 사용된다.
오브젝트 꼭지점을 처리하는 기술은 잘 기록되어 있다. 예를 들면, Taylor 등에게 허여된 미국 특허 제6,552,733호는 전용 하드웨어에서 지원될 모핑(morphing) 및 스키닝(skinning) 연산의 양자를 가능하게 하는 컨피규러블(configurable) 꼭지점 혼합 회로를 개시한다. 그러한 꼭지점 혼합 회로는 꼭지점 혼합 연산의 여러 부분과 관련된 행렬들을 저장하는 데 사용되는 행렬 어레이를 포함한다. 꼭지점 데이터는, 모핑 연산과 관련된 다중 위치가 저장될 수 있도록 다중 위치 버퍼를 포함하는 입력 꼭지점 버퍼에 저장된다. 일반적으로 스키닝 연산과 관련된 하나의 위치가 위치 버퍼 중의 하나에 저장될 수 있다. 입력 꼭지점 버퍼는 전체 꼭지점 혼합 연산에 포함되는 여러 가지 성분 연산과 관련된 혼합 가중 치(weights)를 더 저장한다. 변환 제어기에 의해 구성되어 제어되는 산술 유닛은, 전체 꼭지점 혼합 연산에 포함되는 복수의 성분 연산의 각각에 대해 필요한 계산을 실행한다. 이들 성분 연산의 각각의 결과는 그 후 조합되어 혼합 꼭지점을 생성한다.
Mang 등에게 허여된 미국 특허 제6,567,084호는 조명 효과 계산 블록 및 방법을 개시한다. 조명 효과 계산 블록은 비디오 그래픽 원색용의 조명 효과 연산을, 병렬로 실행되지만 순서에 따르는(order-dependent) 방식으로 누산되는 다수의 더 간단한 계산으로 분리한다. 각각의 개별 계산은 별개의 쓰레드 컨트롤러(thread controller)에 의해 관리된다. 원래의 꼭지점에 대한 조명 효과 계산은 하나의 모광(parent light) 쓰레드 컨트롤러 및 다수의 서브광(sub-light) 쓰레드 컨트롤러를 사용하여 실행될 수 있다. 각 쓰레드 컨트롤러는 특정 꼭지점에 대한 조명 파라미터의 결정에 관련된 연산 코드의 쓰레드를 관리한다. 쓰레드 컨트롤러는 여러 가지 연산 코드간의 기대되는 지연 및 상호의존에 의거해 연산 코드를 중재 모듈에 제출한다. 중재 모듈은 연산 코드가 특정 사이클 동안 실행되는지를 판정하여, 그 연산 코드를 계산 엔진에 제공한다. 계산 엔진은 연산 코드에 의거해 계산을 실행하고, 결과를 특정 꼭지점 조명 효과 블록에 대응하는 누산 버퍼에 또는 메모리에 저장한다. 순서에 따르는 연산이 적절히 실행되도록 하기 위해, 서브광 쓰레드 컨트롤러의 각각은 이전의 쓰레드에 대한 누산 연산이 자신의 연산 코드를 중재 모듈에 제출하기 전에 개시되었는지의 여부를 판정한다.
Idaszak에게 허여된 미국 특허 제6,573,894호는, 오픈GL(OpenGL) RTM 시스템 과 같은 평면 이미지 그래픽 컴퓨터 시스템을 사용하여, 이미지 데이터를 비평면 디스플레이 상에 표시하기 위한 비평면 이미지 데이터로 변환되게 하는 방법을 개시한다. 그 방법 중에, 평면 이미지 그래픽 컴퓨터 시스템에서 변환 행렬이 얻어진다. 이미지 데이터의 복수의 꼭지점이 얻어진 변환 행렬로 곱셈되어 변환된 이미지 데이터를 생성한다. 변환된 이미지 데이터는 비평면 왜곡 보정되어 비평면 이미지 데이터를 생성한다. 평면 이미지 그래픽 컴퓨터 시스템에는 단위 행렬과 같은 패스스루(pass-through) 변환 행렬이 제공된다. 비평면 이미지 데이터는 그 후 추가의 처리를 위해 평면 이미지 그래픽 컴퓨터 시스템에 입력된다. 평면 이미지 그래픽 컴퓨터 시스템에 의해 처리되는 비평면 이미지 데이터는 그 후 비평면 디스플레이 상에 표시된다.
Damers에게 허여된 미국 특허 제6,700,586호는 2D 및 3D 그래픽과 서라운드 음향을 생성하는 커스텀(custom) 그래픽 및 오디오 프로세서를 포함하는 그래픽 시스템을 개시한다. 부가적인 행렬 곱셈 계산 유닛이 모델뷰 행렬 계산 유닛과 캐스케이드(cascade) 접속되고, 뼈대 애니메이션 모델링(skeletal animation modeling)을 위한 스키닝의 조각 선형 버전(piecewise linear version)을 지원한다. 캐스케이드된 행렬 곱셈 계산 유닛들간에 접속되는 정규화기는 왜곡된 가시화를 막기 위해 정규화를 제공한다. 부가적인 행렬 곱셈 계산 유닛은 뼈대 애니메이션 모델링과 다른 애플리케이션(예컨대, 환경 매핑)에 사용될 수 있다.
Maarino에게 허여된 미국 특허 제6,731,303호는 그래픽 데이터를 수신하는 입력을 포함하는 그래픽 시스템을 개시한다. 그래픽 데이터는 오브젝트에 대한 위 치 좌표 및 깊이 좌표를 포함한다. 처리된 그래픽 데이터를 송신하기 위해 출력이 포함된다. 그래픽 시스템은 또한 처리된 그래픽 데이터를 생성하는 처리 소자를 구비한다. 처리 소자 중 하나는 입력에 접속되고, 처리 소자 중 다른 것은 출력에 접속된다. 선택된 처리 소자는 위치 좌표 및 깊이 좌표를 수신하여, 깊이 좌표를 반전시켜, 위치 좌표에 반전된 깊이 좌표를 곱셈한다.
Kilgard에게 허여된 미국 특허 제6,894,687호는 꼭지점 처리 중에 에일리어싱(aliasing) 꼭지점 속성을 제조하는 시스템, 방법 및 물품을 개시한다. 먼저, 복수의 식별자가 꼭지점 데이터와 관련된 복수의 파라미터 중 하나에 매핑된다. 그 후, 꼭지점 데이터는 식별자를 사용하여 파라미터를 참조할 수 있는 꼭지점 프로그램을 이용하여 파라미터를 호출함으로써 처리된다.
Glanville 등에 의한 미국 특허출원 제2003/0009748호 공보는, 애플리케이션 프로그래머블 꼭지점 처리를 수반하고 그래픽 처리 중에 성능을 향상시키는 시스템을 개시한다. 중앙 처리 장치(CPU)는 CPU에서 그래픽 처리를 실행할 수 있는 코드 분할을 실행하는 운영체계를 포함한다. CPU와 관련하여, 그래픽 처리 표준에 따라 그래픽 처리를 실행할 수 있는 하드웨어 수행 그래픽 파이프라인을 포함하는 그래픽 애플리케이션 특정 집적 회로(ASIC)가 있다. 그래픽 처리 표준에 따라 기입된 소프트웨어는 그래픽 ASIC에 그래픽 처리를 실행하도록 명령하는 데 적합하다. 소프트웨어에 대한 확장은 그래픽 ASIC에서 실행될 그래픽 처리의 제1 부분과 CPU에서 실행될 그래픽 처리의 제2 부분을 식별한다. 그래픽 처리의 제2 부분은 그래픽 ASIC에 의해 계산 불가능한 애플리케이션 프로그래머블 꼭지점 처리를 포함한다. 컴파일러가 확장에 따라 그래픽 처리의 제1 부분과 그래픽 처리의 제2 부분을 실행하는 데 사용된 소프트웨어를 컴파일한다.
Kaufman 등에 의한 미국 특허출원 제2004/0125103호 공보는 실시간 볼륨 처리 및 범용 3차원 렌더링하는 장치 및 방법을 개시한다. 그 장치는 3차원(3D) 메모리 유닛, 글로벌 수평 통신을 제공하는 픽셀 버스, 렌더링 파이프라인, 기하 버스, 및 제어 유닛을 포함한다. 써큐럴 레이 인터그레이션 파이프라인(circural ray integration pipeline)을 갖는 블록 프로세서가 복셀(voxel) 데이터 및 레이(ray) 데이터를 처리한다. 레이는 일반적으로 유연성(예컨대, 투시도법(perspective projection), 전반 조명(global illumination))을 허용하는 이미지 순서로 처리된다.
Zuiderveld 등에 의한 미국 특허출원 제2005/0143654호 공보는 상이한 분할 영역을 사용하는 복셀을 포함하는 3D 체적 데이터를 가시화하는 시스템 및 방법을 개시한다. 분할 마스크 벡터가 각 복셀과 관련되어 그 복셀이 속하는 분할 영역을 정한다. 가시화 중에, 분할 마스크는 보간되어(interpolated) 분할 마스크 가중의 벡터를 얻는다. 각 샘플 포인트에 대해, 가시화 값의 벡터는 분할 마스크 가중의 벡터로 곱셈되어 합성 프래그먼트값(composite fragment value)을 산출한다. 프래그먼트값은 합성을 사용하여 픽셀 값으로 조합된다. 프로그래머블 비디오 카드의 계산 효율은 다중 분할된 데이터 영역의 서브샘플링된 부분 컨트리뷰션 가중(contribution weights)을 판정하는 데 영향을 주어, 체적 렌더링에 적합한 컬러 및 불투명도와 같은 분할 특정 특성의 정확한 퍼프래그먼트(per-fragment) 조합을 가능하게 한다.
상기 참조문헌들은 꼭지점 처리 기술을 개시하고 있지만, 그들은 오브젝트 꼭지점의 변환 중에 일어나는 계산 문제를 다루는 데는 실패하고 있다. 표시를 위해 렌더링될 오브젝트가 생성될 때, 오브젝트를 정의하는 꼭지점은 통상 오브젝트 스페이스(object space)라고 하는 오브젝트 좌표계나 모델 내에 일반적으로 있다. 표시용의 그래픽 오브젝트를 렌더링하기 위해, 오브젝트 스페이스 내의 오브젝트 꼭지점이 통상 스크린 스페이스(screen space)라고 하는 윈도우(window) 좌표계에 투영 또는 매핑되어야 한다.
오브젝트 스페이스에서 스크린 스페이스로의 오브젝트 꼭지점을 투영하는 데에는 일반적으로 일련의 행렬 연산을 필요로 한다. 도 1은 오브젝트 스페이스 내의 오브젝트 꼭지점을 오픈GL 그래픽 파이프라인의 스크린 스페이스 내의 오브젝트 꼭지점으로 변환하기 위해 실행되는 연산을 도시한다. 알 수 있는 바와 같이, 꼭지점 변환 프로세스 중에, 오브젝트 스페이스(110) 내의 각 오브젝트 꼭지점 {Vo}는 아래의 식 (1)에 따르는 모델뷰 행렬 [Mmv]로 각 오브젝트 꼭지점 {Vo}를 곱셈함으로써 아이 스페이스(eye space)(120) 내의 오브젝트 꼭지점 {Ve}로 변환된다.
Figure 112007019775897-PAT00001
아이 스페이스(120) 내의 각 오브젝트 꼭지점 {Ve}는 그 후 아래의 식 (2)에 따르는 투영 행렬 [Mp]로 각 오브젝트 꼭지점 {Ve}를 곱셈함으로써 클립 스페이스(clip space) 내의 오브젝트 꼭지점 {Vc}로 변환된다.
Figure 112007019775897-PAT00002
오브젝트 꼭지점이 클립 스페이스(130)에 있으면, 오브젝트 꼭지점{Vc}는 정규화 장치 좌표(NDC) 스페이스(140)로 변환된 후 스크린 스페이스(150)로 변환된다.
이해되는 바와 같이, 오브젝트 스페이스 내의 오브젝트 꼭지점을 클립 스페이스 내의 오브젝트 꼭지점으로 변환하는 것은, 오브젝트 꼭지점 당 적어도 2회의 행렬-벡터 곱셈을 필요로 하기 때문에 산술적으로 고가이다. 따라서, 개선이 요구된다.
따라서, 본 발명의 목적은 표시용의 그래픽 오브젝트의 렌더링 중에 오브젝트 꼭지점을 변환하는 신규의 방법 및 장치를 제공하는 것이다.
따라서, 하나의 양태에서, 표시용의 그래픽 오브젝트의 렌더링(rendering) 중에 오브젝트 꼭지점을 변환하는 방법으로서,
변환될 오브젝트 스페이스 내의 각 오브젝트 꼭지점을 곱셈 행렬로 곱셈하는 단계를 포함하며, 상기 곱셈 행렬은 모델뷰 행렬과 투영 행렬의 곱이고, 그에 의해 각 오브젝트 꼭지점을 단일 곱셈 연산을 통해 오브젝트 스페이스(object space)에서 클립 스페이스(clip space)로 변환하는, 오브젝트 꼭지점 변환 방법이 제공된다.
일 실시예에서, 상기 곱셈 단계 전에, 상태 정보가 상기 곱셈 행렬이 사용되지 않는 것을 나타내는지를 판정하도록 상기 상태 정보가 체크된다. 체크에 이어서, 상기 곱셈 행렬이 사용되는 경우, 상기 곱셈 단계가 실행된다. 상기 곱셈 행렬이 사용되지 않는 경우, 오브젝트 스페이스 내의 각 오브젝트 꼭지점은 상기 모델뷰 행렬로 곱셈되어 각 오브젝트 꼭지점을 아이 스페이스로 변환하고, 아이 스페이스 내의 각 오브젝트 꼭지점이 상기 투영 행렬로 곱셈되어 각 오브젝트 꼭지점을 클립 스페이스로 변환한다. 상기 곱셈 행렬이 사용되지 않는 경우, 적어도 하나의 플래그가 설정된다. 상기 적어도 하나의 플래그는, 상기 모델뷰 행렬 및 상기 투영 행렬 중 적어도 하나가 변경되었을 때 및/또는 적어도 하나의 선택된 래스터화 특정이 인에이블되었을 경우, 설정된다.
다른 양태에 따르면, 표시용의 그래픽 오브젝트의 렌더링 중에 오브젝트 꼭지점을 변환하는 컴퓨터 프로그램을 구현하는 컴퓨터 판독 가능한 매체로서, 상기 컴퓨터 프로그램은,
변환될 오브젝트 스페이스 내의 각 오브젝트 꼭지점을 곱셈 행렬로 곱셈하는 컴퓨터 프로그램 코드를 포함하며, 상기 곱셈 행렬은 모델뷰 행렬과 투영 행렬의 곱이고, 그에 의해 각 오브젝트 꼭지점을 단일 곱셈 연산을 통해 오브젝트 스페이스에서 클립 스페이스로 변환하는, 컴퓨터 판독 가능한 매체가 제공된다.
또 다른 양태에 따르면, 표시용의 그래픽 오브젝트의 렌더링 중에 오브젝트 꼭지점을 변환하는 래스터화 엔진으로서,
모델뷰 행렬, 투영 행렬 및 상기 모델뷰 행렬과 투영 행렬의 곱인 곱셈 행렬을 저장하는 행렬 메모리;
상태 정보 메모리; 및
각 오브젝트 꼭지점을 상기 곱셈 행렬로 곱셈하여, 각 오브젝트 꼭지점을 단일 곱셈 연산으로 오브젝트 스페이스에서 클립 스페이스로 변환하는 그래픽 프로세서를 포함하는, 래스터화 엔진이 제공된다.
모델뷰 및 투영 행렬로 변화하는 사이에 단일 곱셈 연산을 통해 오브젝트 스페이스 내의 오브젝트 꼭지점을 클립 스페이스 내의 오브젝트 꼭지점으로 변환함으로써, 그리고 래스터화 엔진의 선택된 특징들이 인에이블되지 않을 때, 오브젝트 꼭지점 변환이 신속하고 쉽게 실행됨으로써, 계산 로드를 현저히 감소시킬 수 있다.
이하, 첨부하는 도면을 참조하여 실시예를 더욱 완전히 설명한다.
이하의 설명에서는, 표시용의 그래픽 오브젝트의 렌더링 중에 오브젝트 꼭지점을 변환하는 방법 및 래스터화 엔진이 제공된다. 그 방법 중에, 변환될 오브젝 트 스페이스 내의 각 오브젝트 꼭지점은 곱셈 행렬에 의해 곱셈된다. 곱셈 행렬은 모델뷰 행렬과 투영 행렬의 곱이다. 그 결과, 각 오브젝트 꼭지점은 단일 곱셈 연산을 통해 오브젝트 스페이스로부터 클립 스페이스로 변환된다. 곱셈 행렬이 사용되지 않는 경우에는, 오브젝트 스페이스 내의 오브젝트 꼭지점은 종래의 방식으로 클립 스페이스 내의 오브젝트 꼭지점으로 변환된다. 즉, 오브젝트 스페이스 내의 오브젝트 꼭지점은 모델뷰 행렬로 곱셈되어, 오브젝트 꼭지점을 아이 스페이스로 변환하고, 아이 스페이스 내의 오브젝트 꼭지점은 투영 행렬로 곱셈되어, 오브젝트 꼭지점을 클립 스페이스로 변환한다.
이하 도 2로 돌아가 보면, 오브젝트 스페이스에서 클립 스페이스로 오브젝트 꼭지점을 변환하는 래스터화 엔진(rasterization engine)이 참조 번호 200으로 전체적으로 식별하여 도시되어 있다. 알 수 있는 바와 같이, 래스터화 엔진(200)은 오브젝트 꼭지점 변환 애플리케이션을 실행하는 그래픽 프로세서(202), 랜덤 액세스 메모리(204), 및 행렬 메모리(206, 208 및 210)와 상태 정보 메모리(212)를 포함하는 비휘발성 메모리 어레이(205)를 포함한다. 행렬 메모리(206)는 오브젝트 스페이스 내의 오브젝트 꼭지점을 아이 스페이스 내의 오브젝트 꼭지점으로 변환하는 데 사용되는 모델뷰 행렬 [Mmv]를 저장한다. 행렬 메모리(208)는 아이 스페이스 내의 오브젝트 꼭지점을 클립 스페이스 내의 오브젝트 꼭지점으로 변환하는 데 사용되는 투영 행렬 [Mp]을 저장한다. 행렬 메모리(210)는 각각 모델뷰 및 투영 행렬 [Mmv] 및 [Mp]의 곱의 결과인 곱셈 행렬 [Mv]를 저장한다. 상태 정보 메모리(212) 는, 그 행렬이나 행렬들이 오브젝트 스페이스에서 클립 스페이스로의 오브젝트 꼭지점 변환 중에 사용될지를 판정하기 위해 그래픽 프로세서(202)에 의해 시험되는 플래그를 저장한다.
그래픽 데이터 처리 중에, 수백 그렇지 않으면 수천의 오브젝트 꼭지점들이 모델뷰 행렬 [Mmv] 또는 투영 행렬 [Mp]로 변화하는 사이에 오브젝트 스페이스에서 클립 스페이스로의 변환을 필요로 한다. 앞서 언급한 바와 같이, 상기 식 (1) 및 (2)에 따라 오브젝트 꼭지점을 처리하면, 오브젝트 꼭지점이 오브젝트 스페이스에서 클립 스페이스로 변환한다. 식 (1)과 (2)를 조합하면 아래의 식 (3)을 산출한다.
Figure 112007019775897-PAT00003
식 (3)은 아래의 식 (4)로 다시 쓸 수 있다.
Figure 112007019775897-PAT00004
여기에서 {Vo}는 오브젝트 스페이스 내의 오브젝트 꼭지점이고;
{Vc}는 클립 스페이스 내의 오브젝트 꼭지점이며;
[Mx]는 투영 행렬 [Mp]와 모델뷰 행렬 [Mmv]의 곱에서 도출되는 곱셈 행렬이다.
따라서, 유효한 곱셈 행렬 [Mx]로, 오브젝트 스페이스 내의 오브젝트 꼭지점 이 1회의 행렬 곱셈 연산을 실행함으로써, 즉 오브젝트 스페이스 내의 오브젝트 꼭지점을 곱셈 행렬 [Mx]로 곱셈함으로써 클립 스페이스 내의 오브젝트 꼭지점으로 변환될 수 있다. 래스터화 엔진(200)이 행렬 메모리(210)에 곱셈 행렬 [Mx]를 저장하기 때문에, 오브젝트 스페이스에서 클립 스페이스로의 오브젝트 꼭지점 변환은 신속하고 쉽게 발생될 수 있다.
이하 도 3으로 돌아가 보면, 오브젝트 스페이스에서 클립 스페이스로의 오브젝트 꼭지점 변환 중에 래스터화 엔진(200)에 의해 실행되는 단계들이 도시된다. 이에 대한 논의를 위해, 곱셈 행렬 [Mx]가 행렬 메모리(210)에 저장되어 있고, 그래픽 프로세서(202)에 의해 RAM(204)에 로드되어 있다고 가정한다. 그래픽 프로세서(202)가 렌더링되는 그래픽 오브젝트를 나타내는 오브젝트 스페이스 내의 오브젝트 꼭지점을 수신할 때, 상태 정보 메모리(212)는, 곱셈 행렬 [Mx]가 오브젝트 스페이스 내의 오브젝트 꼭지점을 클립 스페이스 내의 오브젝트 꼭지점으로 변환하는 데 사용되지 않아야 하는 것을 나타내는, 하나 이상의 플래그가 설정되어 있는지를 판정하도록 체크된다(단계 300 및 302). 그러한 플래그가 설정되어 있지 않으면, 그래픽 프로세서(202)는 오브젝트 꼭지점을 선택하고(단계 304), 선택된 오브젝트 꼭지점을 곱셈 행렬 [Mx]로 곱셈하여 선택된 오브젝트 꼭지점을 1회의 행렬 곱셈 연산으로 클립 스페이스로 변환한다(단계 306). 오브젝트 꼭지점 카운트는 그 후 증가하고(단계 308), 선택을 위한 더 많은 오브젝트 꼭지점이 존재하는지를 판정하도록 체크가 행해진다(단계 310). 선택을 위한 부가적인 오브젝트 꼭지점이 존재하지 않으면, 오브젝트 꼭지점 변환 프로세스는 완료된 것으로 간주된다(단계 312). 단계 310에서, 선택을 위한 하나 이상의 오브젝트 꼭지점이 존재하면, 프로세스는 다시 단계 300으로 되돌아간다. 이해하는 바와 같이, 상태 정보 메모리(212)에 플래그가 설정되어 있지 않으면, 오브젝트 스페이스 내의 각 오브젝트 꼭지점은 단일 곱셈 연산을 통해 클립 스페이스 내의 오브젝트 꼭지점으로 변환된다.
상태 정보 메모리(212)는, 곱셈 행렬 [Mx]가, 곱셈 행렬이 진부하게 되는 경우 및/또는 아이 스페이스 내의 오브젝트 꼭지점이 필요하게 되는 경우에 일어날 수 있는 상황으로서 사용되기 전에 검사된다. 후자의 경우에, 예컨대, 오픈GL 사용자 클립 평면, 오픈GL 조명 효과 또는 오픈GL 포그(fog) 효과와 같은 래스터화 엔진(200)의 어떤 특징이 인에이블될 때, 아이 스페이스 내의 오브젝트 꼭지점이 필요하게 된다. 그래픽 프로세서(202)는 이들 오픈GL 특징의 상태를 모니터하고, 이들 특징의 하나 이상이 인에이블될 때, 그래픽 프로세스(202)는 각 인에이블된 특징에 대해 대응하는 플래그를 상태 정보 메모리(212)에 설정한다. 그러한 플래그가 설정될 때, 설정 플래그가 단계 300에서 검출되며, 그 결과 오브젝트 꼭지점 변환 중에 곱셈 행렬 [Mx]가 없게 된다.
이 경우에, 오브젝트 꼭지점은 종래의 방식으로 오브젝트 스페이스에서 클립 스페이스로 변환된다(단계 314). 따라서, 그래픽 프로세서(202)는 모델뷰 행렬 [Mmv] 및 투영 행렬 [Mp]를 RAM(204)에 로드한다. 오브젝트 스페이스 내의 각 오브젝트 꼭지점에 대해, 그래픽 프로세서(202)는 오브젝트 꼭지점을 모델뷰 행렬 [Mmv] 로 곱셈하여 오브젝트 꼭지점을 아이 스페이스로 변환한다. 그 후, 그래픽 프로세서(202)는 아이 스페이스 내의 각 오브젝트 꼭지점을 투영 행렬 [Mp]로 곱셈하여 오브젝트 꼭지점을 클립 스페이스로 변환한다.
그래픽 프로세서(202)는 또한 모델뷰 및 투영 행렬 [Mmv] 및 [Mp]의 상태를 모니터하여 이들 행렬의 어느 하나 또는 양자가 변화하였는지를 판정한다. 래스터화 엔진(200)으로 갱신된 모델뷰 및/또는 투영 행렬의 수동 로드, 크기조정(scale), 전이(translation) 또는 회전 변환 연산, 기존의 행렬 스택의 팝핑(popping) 및/또는 뷰 포지션이나 프러스텀(frustum)의 변화의 결과, 이들 행렬에 대한 변화가 일어날 수도 있다. 모델뷰나 투영 행렬에 대해 어떤 변화가 일어나면, 그래픽 프로세서(202)는 대응하는 플래그를 상태 정보 메모리(212)에 설정한다. 그러한 플래그가 설정될 때, 설정 플래그가 단계 300에서 검출되며, 그 결과 오브젝트 꼭지점 변환 중에 곱셈 행렬 [Mx]가 없게 된다. 모델뷰 및/또는 투영 행렬에 대한 변화가 행해지지 않았을 때, 기존의 오브젝트 꼭지점 변환 작업이 완료되면, 그래픽 프로세서(202)는 갱신된 모델뷰 행렬 [Mmv] 및 투영 행렬 [Mp]를 RAM(204)에 로드하고, 곱셈 행렬 [Mx]를 재계산하여 장래의 사용을 위해 행렬 메모리(210)에 새로운 곱셈 행렬 [Mx]를 저장한다.
설명하지 않았지만, 오브젝트 꼭지점이 클립 스페이스로 변환되었다면, 오브젝트 꼭지점은 종래의 방식으로 그래픽 프로세서(202)에 의해 NDC 스페이스에 이어 스크린 스페이스로 변환될 수 있다.
래스터화 엔진(200)은 퍼스날 컴퓨터(PC) 등의 중앙 처리 장치(CPU)에서 구현될 수 있거나, 퍼스널 컴퓨터 등에 설치되는 별개의 그래픽 처리 유닛에서 구현될 수 있다.
오브젝트 꼭지점 변환 소프트웨어 애플리케이션은 그래픽 프로세서와 같은 처리 유닛에 의해 실행되는 컴퓨터 실행 가능한 명령들을 포함한다. 그 소프트웨어 애플리케이션은 루틴(routines), 프로그램, 오브젝트 성분, 데이터 구조 등을 포함하는 프로그램 모듈을 포함할 수 있고, 컴퓨터 판독 가능한 매체에 저장된 컴퓨터 판독 가능한 프로그램 코드로서 구현될 수도 있다. 컴퓨터 판독 가능한 매체는 데이터를 저장할 수 있고, 그 후 컴퓨터 시스템에 의해 판독될 수 있는 임의의 데이터 저장 장치이다. 컴퓨터 판독 가능한 매체의 예는 예를 들면, 판독 전용 메모리, 플래시(flash) 메모리, 랜덤 액세스 메모리, 하드 디스크 드라이브, 자기 테이프, CD-ROM 및 기타 광 데이터 저장 장치를 포함한다. 컴퓨터 판독 가능한 프로그램 코드는 또한 결합된 컴퓨터 시스템을 포함하는 네트워크를 통해 배포될 수 있어, 컴퓨터 판독 가능한 프로그램 코드가 배포되는 방식으로 저장되어 실행된다.
일 실시예를 설명하였지만, 당업자라면 첨부된 청구항에 의해 한정되어 있는 바와 같은 그 사상 및 범위를 벗어남 없이 수정 및 변형이 이루어질 수 있음을 이해할 것이다.
이상 설명한 바와 같이, 본 발명에 의하면, 표시용의 그래픽 오브젝트의 렌 더링 중에 오브젝트 꼭지점을 변환하는 신규의 방법 및 장치를 얻을 수 있다.

Claims (19)

  1. 표시용의 그래픽 오브젝트의 렌더링(rendering) 중에 오브젝트 꼭지점을 변환하는 방법으로서,
    변환될 오브젝트 스페이스 내의 각 오브젝트 꼭지점을 곱셈 행렬로 곱셈하는 단계를 포함하며, 상기 곱셈 행렬은 모델뷰 행렬과 투영 행렬의 곱이고, 그에 의해 각 오브젝트 꼭지점을 단일 곱셈 연산을 통해 오브젝트 스페이스(object space)에서 클립 스페이스(clip space)로 변환하는, 오브젝트 꼭지점 변환 방법.
  2. 청구항 1에 있어서,
    상기 곱셈 단계 전에, 상태 정보가 상기 곱셈 행렬이 사용되지 않는 것을 나타내는지를 판정하도록 상기 상태 정보를 체크하는 단계;
    상기 곱셈 행렬이 사용되는 경우, 상기 곱셈 단계를 실행하는 단계; 및
    상기 곱셈 행렬이 사용되지 않는 경우, 오브젝트 스페이스 내의 각 오브젝트 꼭지점을 상기 모델뷰 행렬로 곱셈하여 각 오브젝트 꼭지점을 아이 스페이스로 변환하고, 아이 스페이스 내의 각 오브젝트 꼭지점을 상기 투영 행렬로 곱셈하여 각 오브젝트 꼭지점을 클립 스페이스로 변환하는 단계를 더 포함하는, 오브젝트 꼭지점 변환 방법.
  3. 청구항 2에 있어서, 상기 곱셈 행렬이 사용되지 않는 경우, 적어도 하나의 플래그가 설정되는, 오브젝트 꼭지점 변환 방법.
  4. 청구항 3에 있어서, 상기 모델뷰 및 투영 행렬 중 적어도 하나가 변경되었을 때, 상기 적어도 하나의 플래그가 설정되는, 오브젝트 꼭지점 변환 방법.
  5. 청구항 4에 있어서,
    상기 모델뷰 및 투영 행렬 중 적어도 하나가 변경되었을 때, 상기 곱셈 행렬을 재계산하는 단계를 더 포함하는, 오브젝트 꼭지점 변환 방법.
  6. 청구항 3에 있어서, 적어도 하나의 선택된 래스터화 특징이 인에이블될 때, 상기 적어도 하나의 플래그가 설정되는, 오브젝트 꼭지점 변환 방법.
  7. 청구항 6에 있어서, 상기 적어도 하나의 선택된 래스터화 특징은 조명 효과, 포그(fog) 효과 및 클립 평면으로 이루어진 그룹에서 선택되는, 오브젝트 꼭지점 변환 방법.
  8. 청구항 5에 있어서, 적어도 하나의 선택된 래스터화 특징이 인에이블될 때, 상기 적어도 하나의 플래그가 설정되는, 오브젝트 꼭지점 변환 방법.
  9. 청구항 8에 있어서, 상기 적어도 하나의 선택된 래스터화 특징은 조명 효과, 포그 효과 및 클립 평면으로 이루어진 그룹에서 선택되는, 오브젝트 꼭지점 변환 방법.
  10. 표시용의 그래픽 오브젝트의 렌더링 중에 오브젝트 꼭지점을 변환하는 컴퓨터 프로그램을 구현하는 컴퓨터로 판독 가능한 매체로서, 상기 컴퓨터 프로그램은,
    변환될 오브젝트 스페이스 내의 각 오브젝트 꼭지점을 곱셈 행렬로 곱셈하는 컴퓨터 프로그램 코드를 포함하며, 상기 곱셈 행렬은 모델뷰 행렬과 투영 행렬의 곱이고, 그에 의해 각 오브젝트 꼭지점을 단일 곱셈 연산을 통해 오브젝트 스페이스에서 클립 스페이스로 변환하는, 컴퓨터로 판독 가능한 매체.
  11. 청구항 10에 있어서, 상기 컴퓨터 프로그램은,
    상기 곱셈 전에, 상태 정보가 상기 곱셈 행렬이 사용되지 않는 것을 나타내는지를 판정하도록 상기 상태 정보를 체크하는 컴퓨터 프로그램 코드; 및
    상기 곱셈 행렬이 사용되지 않을 때를 체크하는 상기 컴퓨터 프로그램 코드에 응답하여, 상기 곱셈 행렬이 사용되지 않을 때, 오브젝트 스페이스 내의 각 오브젝트 꼭지점을 상기 모델뷰 행렬로 곱셈하여 각 오브젝트 꼭지점을 아이 스페이스로 변환하며, 아이 스페이스 내의 각 오브젝트 꼭지점을 상기 투영 행렬로 곱셈하여 각 오브젝트 꼭지점을 클립 스페이스로 변환하는 컴퓨터 프로그램 코드를 더 포함하는, 컴퓨터로 판독 가능한 매체.
  12. 표시용의 그래픽 오브젝트의 렌더링 중에 오브젝트 꼭지점을 변환하는 래스터화 엔진으로서,
    모델뷰 행렬, 투영 행렬 및 상기 모델뷰 행렬과 투영 행렬의 곱인 곱셈 행렬을 저장하는 행렬 메모리;
    상태 정보 메모리; 및
    각 오브젝트 꼭지점을 상기 곱셈 행렬로 곱셈하여, 각 오브젝트 꼭지점을 단일 곱셈 연산으로 오브젝트 스페이스에서 클립 스페이스로 변환하는 그래픽 프로세서를 포함하는, 래스터화 엔진.
  13. 청구항 12에 있어서, 상기 상태 정보 메모리는 적어도 하나의 설정 가능한 플래그를 저장하고, 상기 상태 정보 메모리에 플래그가 설정된 경우, 상기 그래픽 프로세서는 각 오브젝트 꼭지점을 상기 모델뷰 행렬로 곱셈하여 각 오브젝트 꼭지점을 아이 스페이스로 변환하며, 아이 스페이스 내의 각 오브젝트 꼭지점을 상기 투영 행렬로 곱셈하여 각 오브젝트 꼭지점을 클립 스페이스로 변환하는, 래스터화 엔진.
  14. 청구항 13에 있어서, 상기 모델뷰 및 투영 행렬 중 적어도 하나가 변경되었을 때, 상기 적어도 하나의 플래그가 설정되는, 래스터화 엔진.
  15. 청구항 14에 있어서, 상기 래스터화 엔진의 선택된 특징이 인에이블될 때, 상기 적어도 하나의 플래그가 설정되는, 래스터화 엔진.
  16. 청구항 15에 있어서, 상기 선택된 특징은 조명 효과, 포그 효과 및 클립 평면으로 이루어진 그룹에서 선택되는, 래스터화 엔진.
  17. 청구항 14에 있어서, 상기 그래픽 프로세서는 상기 모델뷰 및 투영 행렬 중 하나 또는 둘다가 변경되었을 때 상기 곱셈 행렬을 재계산하는, 래스터화 엔진.
  18. 청구항 13에 있어서, 상기 래스터화 엔진의 선택된 특징이 인에이블될 때, 상기 적어도 하나의 플래그가 설정되는, 래스터화 엔진.
  19. 청구항 18에 있어서, 상기 선택된 특징은 조명 효과, 포그 효과 및 클립 평면으로 이루어진 그룹에서 선택되는, 래스터화 엔진.
KR1020070023949A 2006-08-16 2007-03-12 표시용의 그래픽 오브젝트의 렌더링 중에 오브젝트꼭지점을 변환하는 방법 및 장치 KR20080015705A (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US11/465,017 2006-08-16
US11/465,017 US20080043019A1 (en) 2006-08-16 2006-08-16 Method And Apparatus For Transforming Object Vertices During Rendering Of Graphical Objects For Display

Publications (1)

Publication Number Publication Date
KR20080015705A true KR20080015705A (ko) 2008-02-20

Family

ID=39095148

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020070023949A KR20080015705A (ko) 2006-08-16 2007-03-12 표시용의 그래픽 오브젝트의 렌더링 중에 오브젝트꼭지점을 변환하는 방법 및 장치

Country Status (4)

Country Link
US (1) US20080043019A1 (ko)
JP (1) JP2008047108A (ko)
KR (1) KR20080015705A (ko)
CN (1) CN101127124A (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112035934A (zh) * 2020-09-04 2020-12-04 国网山西省电力公司经济技术研究院 一种基于变电站的数字化设计模型进行施工管理控制的方法

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100919236B1 (ko) * 2007-05-22 2009-09-30 한국전자통신연구원 병렬 프로세서를 이용한 3차원 그래픽 기하 변환 방법
US9785839B2 (en) * 2012-11-02 2017-10-10 Sony Corporation Technique for combining an image and marker without incongruity

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6104405A (en) * 1997-02-26 2000-08-15 Alternate Realities Corporation Systems, methods and computer program products for converting image data to nonplanar image data
JPH1166271A (ja) * 1997-08-11 1999-03-09 Sony Computer Entertainment:Kk 画像合成方法および画像合成装置
US6097395A (en) * 1998-04-28 2000-08-01 Hewlett Packard Company Dynamic selection of lighting coordinates in a computer graphics system
US6509905B2 (en) * 1998-11-12 2003-01-21 Hewlett-Packard Company Method and apparatus for performing a perspective projection in a graphics device of a computer graphics display system
AU2001239926A1 (en) * 2000-02-25 2001-09-03 The Research Foundation Of State University Of New York Apparatus and method for volume processing and rendering
US6857061B1 (en) * 2000-04-07 2005-02-15 Nintendo Co., Ltd. Method and apparatus for obtaining a scalar value directly from a vector register
US6552733B1 (en) * 2000-04-20 2003-04-22 Ati International, Srl Configurable vertex blending circuit and method therefore
US6731303B1 (en) * 2000-06-15 2004-05-04 International Business Machines Corporation Hardware perspective correction of pixel coordinates and texture coordinates
US6567084B1 (en) * 2000-07-27 2003-05-20 Ati International Srl Lighting effect computation circuit and method therefore
US6700586B1 (en) * 2000-08-23 2004-03-02 Nintendo Co., Ltd. Low cost graphics with stitching processing hardware support for skeletal animation
US6697064B1 (en) * 2001-06-08 2004-02-24 Nvidia Corporation System, method and computer program product for matrix tracking during vertex processing in a graphics pipeline
US7162716B2 (en) * 2001-06-08 2007-01-09 Nvidia Corporation Software emulator for optimizing application-programmable vertex processing
US6894687B1 (en) * 2001-06-08 2005-05-17 Nvidia Corporation System, method and computer program product for vertex attribute aliasing in a graphics pipeline
US6774895B1 (en) * 2002-02-01 2004-08-10 Nvidia Corporation System and method for depth clamping in a hardware graphics pipeline
EP1531322A3 (en) * 2003-11-13 2007-09-05 Matsushita Electric Industrial Co., Ltd. Map display apparatus
WO2005055148A1 (en) * 2003-11-29 2005-06-16 Vital Images, Inc. Segmented volume rendering using a programmable graphics pipeline
JP2006190049A (ja) * 2005-01-05 2006-07-20 Fujitsu Ltd 頂点削減図形描画方法および装置

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112035934A (zh) * 2020-09-04 2020-12-04 国网山西省电力公司经济技术研究院 一种基于变电站的数字化设计模型进行施工管理控制的方法
CN112035934B (zh) * 2020-09-04 2024-05-10 国网山西省电力公司经济技术研究院 一种基于变电站的数字化设计模型进行施工管理控制的方法

Also Published As

Publication number Publication date
JP2008047108A (ja) 2008-02-28
CN101127124A (zh) 2008-02-20
US20080043019A1 (en) 2008-02-21

Similar Documents

Publication Publication Date Title
JP6309620B2 (ja) 頂点シェーダのフロント・エンドとしてコンピュート・シェーダを使用すること
EP1399892B1 (en) Programmable pixel shading architecture
EP3255612A1 (en) System and method for tessellation in an improved graphics pipeline
JP2008512771A (ja) フラグメントシェーディングパイプラインにおけるスケーラビリティの向上
CN107392836B (zh) 使用图形处理管线实现的立体多投影
JP7122396B2 (ja) グラフィックスパイプラインにおけるメモリ使用削減のためのコンパイラ支援技法
US10078911B2 (en) System, method, and computer program product for executing processes involving at least one primitive in a graphics processor, utilizing a data structure
US7466322B1 (en) Clipping graphics primitives to the w=0 plane
US10417813B2 (en) System and method for generating temporally stable hashed values
JP2017062789A (ja) グラフィックス処理装置、及びテクスチャリングのためのlodを決定する方法
US8004515B1 (en) Stereoscopic vertex shader override
US20110267354A1 (en) Image generating apparatus, image generating method, and image generating integrated circuit
KR20180037838A (ko) 텍스쳐를 처리하는 방법 및 장치
KR20080015705A (ko) 표시용의 그래픽 오브젝트의 렌더링 중에 오브젝트꼭지점을 변환하는 방법 및 장치
US11941741B2 (en) Hybrid rendering mechanism of a graphics pipeline and an effect engine
US10062140B2 (en) Graphics processing systems
US20100277488A1 (en) Deferred Material Rasterization
Morvan et al. High performance gpu‐based proximity queries using distance fields
US20230401667A1 (en) Graphics processing systems
CN116630516B (zh) 一种基于3d特性的2d渲染排序方法、装置、设备及介质
US7714877B1 (en) Apparatus, system, and method for determining clipping distances
US10891772B2 (en) Rendering apparatus, rendering method and recording medium
US9823889B2 (en) Method and apparatus for estimating a fragment count for the display of at least one three-dimensional object
Collinson et al. Fast digital rendering for special effects
Boyd The direct3d 10 pipeline

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E601 Decision to refuse application