KR20090057994A - 광선 추적 이미지 처리 시스템의 픽셀 컬러 결정 - Google Patents

광선 추적 이미지 처리 시스템의 픽셀 컬러 결정 Download PDF

Info

Publication number
KR20090057994A
KR20090057994A KR1020097006118A KR20097006118A KR20090057994A KR 20090057994 A KR20090057994 A KR 20090057994A KR 1020097006118 A KR1020097006118 A KR 1020097006118A KR 20097006118 A KR20097006118 A KR 20097006118A KR 20090057994 A KR20090057994 A KR 20090057994A
Authority
KR
South Korea
Prior art keywords
ray
color
pixel
primitive
scaling factor
Prior art date
Application number
KR1020097006118A
Other languages
English (en)
Other versions
KR101054702B1 (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 KR20090057994A publication Critical patent/KR20090057994A/ko
Application granted granted Critical
Publication of KR101054702B1 publication Critical patent/KR101054702B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/50Lighting 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
    • G06T17/10Constructive solid geometry [CSG] using solid primitives, e.g. cylinders, cubes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T11/002D [Two Dimensional] image generation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/06Ray-tracing

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)

Abstract

2차 광선에 의해 교차된 물체로부터의 컬러 기여도를 합하거나 또는 추가함으로써, 이미지 처리 시스템은 추가 컬러 기여도가 결정되면 2차 광선에 의해 교차된 물체로부터의 픽셀에 대한 컬러 기여도를 축적할 수 있다. 또한, 물체, 및 물체를 교차하는 2차 광선과 컬러 기여도의 스케일링 인자를 연관시킴으로써, 2차 광선/물체 교차에 기인하는 컬러 기여도는 최초 광선/물체 교차로부터의 픽셀에 대한 컬러 기여도보다 나중에 계산될 수 있다.

Description

광선 추적 이미지 처리 시스템의 픽셀 컬러 결정{PIXEL COLOR DETERMINATION IN A RAY TRACING IMAGE PROCESSING SYSTEM}
본 발명은 일반적으로 컴퓨터 처리 분야에 관한 것으로, 더 자세하게는 광선 추적 이미지 처리 시스템의 픽셀 컬러의 결정에 관한 것이다.
3차원 장면(scene)으로부터 2차원 이미지들을 렌더링(rendering)하는 프로세스를 보통 이미지 처리라 부른다. 현대의 컴퓨터 산업이 발전함에따라, 이미지 처리 또한 발전하고 있다. 이미지 처리의 발전에 있어서의 한 가지 특별한 목적은 2차원 시뮬레이션 또는 3차원 장면의 렌디션(rendition)을 가능한 한 현실감 있게 만드는 것이다. 현실감있는 이미지들을 렌더링하는데 있어서의 한 가지 제약은, 현대의 모니터들이 픽셀을 이용함으로써 이미지들을 디스플레이한다는 것이다.
픽셀은 모니터 상에 조사될 수 있는 가장 작은 공간 영역이다. 대부분의 현대의 컴퓨터 모니터들은 전체 디스플레이 또는 렌더링된 장면을 구성하기 위하여 수십만 또는 수백만 개의 픽셀들의 조합을 이용할 것이다. 개개의 픽셀들은 그리드 패턴으로 정렬되고 모니터의 전체 보기 영역(viewing area)을 집합적으로 커버한다. 각각의 개개의 픽셀은 최종 보기 화면(picture)을 렌더링하도록 조사될 수 있다.
픽셀을 이용하여 실제 세계의 3차원 장면을 2차원 모니터 상으로 렌더링하기 위한 한 가지 기술을 래스터화(rasterization)라고 부른다. 래스터화란 백터 포맷(한 장면 내의 기하학적 물체들의 수학적 표시)으로 표시된 2차원 이미지를 취하여 모니터 상에 디스플레이하기 위하여 그 이미지를 개개의 픽셀들로 변환하는 프로세스이다. 래스터화는 그래픽을 빠르게 렌더링하고 상대적으로 적은 양의 컴퓨터 전력을 이용한다는 점에서 효과적이지만, 래스터화는 몇몇 단점들을 겪는다. 예를 들어, 래스터화는 종종, 광의 물리적 특성들에 기초하기 보다는 오히려 2차원 평면 상에 투영된 장면의 3차원 기하학적 물체들의 모양에 기초하기 때문에, 현실감의 부족함을 겪는다. 또한, 래스터화를 이용하여 장면을 렌더링하는데 요구되는 컴퓨터 전력은 렌더링될 장면의 복잡도의 증가에 직접적으로 비례한다. 이미지 처리가 더욱 현실감 있어지면, 렌더링된 장면들 또한 더욱 복잡해진다. 따라서, 래스터화는 복잡도에 직접적으로 비례하기 때문에 이미지 처리가 발전함에 따라 더 복잡해진다.
픽셀을 이용하여 실제 세계의 3차원 장면을 2차원 모니터 상에 렌더링하기 위한 다른 기술을 광선 추적이라 부른다. 광선 추적 기술은 컴퓨터 스크린 상으로 렌더링되는 3차원 장면 상으로의 가상의 광선들의 전파를 추적하는데, 이 가상의 광선들은 광의 광선들과 유사하게 행동한다. 광의 광선과 유사하게 행동하는 광선들은 컴퓨터 스크린 뒤에 앉아 있는 관찰자의 눈(들)로부터 비롯되며 컴퓨터 스크린을 구성하는 픽셀들을 통해 3차원 장면을 향해 가로지른다. 각각의 추적된 광선은 장면으로 진행되고, 장면 내의 물체들과 교차할 수 있다. 광선이 장면 내의 물 체와 교차한다면, 물체의 특성들 및 몇몇 다른 기여 인자(contributing factor)들을 이용하여 광선이 노출되는 컬러와 광의 양, 또는 그 양의 결핍을 계산할 수 있다. 그 다음, 이러한 계산값들을 이용하여 추적된 광선이 통과하는 픽셀의 최종 컬러를 결정한다.
광선을 추적하는 프로세스는 한 장면에 대해 여러번 수행된다. 예를 들어, 디스플레이의 각각의 픽셀에 대해 하나의 광선이 추적될 수 있다. 일단 컴퓨터 스크린의 2차원 디스플레이를 구성하는 모든 픽셀의 컬러를 결정하기에 충분한 개수의 광선들이 추적되었다면, 3차원 장면의 2차원적 합성이 관찰자에게 컴퓨터 스크린 상으로 디스플레이될 수 있다.
광선 추적은 통상적으로, 래스터화보다 실제 세계의 3차원 장면들을 더욱 현실감있도록 렌더링한다. 이것은, 광선 추적이 래스터화를 이용하여 수행되는 것과 같이 단순히 3차원 형상을 2차원 평면 상으로 투영하기 보다는, 실제 세계의 환경에서 광이 어떻게 이동하고 행동하는지를 시뮬레이팅한다는 사실에 부분적으로 기인한다. 따라서, 광선 추적을 이용하여 렌더링되는 그래픽들은 우리의 눈이 실제 세계에서 보는 것에 익숙해진 것을 모니터 상에 더욱 정확하게 도시한다.
더욱이, 광선 추적은 또한, 장면이 더욱 복잡해짐에 따른 장면 복잡도의 증가를 래스터화보다 더 잘 처리한다. 광선 추적은 장면 복잡도에 대수적으로 비례한다. 이는, 광선들이 더욱 복잡해진다 하더라도, 동일한 수의 광선들이 장면 내로 캐스팅될 수 있다는 사실에 기인한다. 따라서, 광선 추적은 컴퓨터 전력 요구량의 면에서, 장면이 더욱 복잡해짐에 따라 래스터화가 겪게되는 어려움 만큼의 어려움 을 겪지 않는다.
광선 추적의 한 가지 주요 단점은, 장면들을 렌더링하기 위한 많은 횟수의 계산이고, 이에 따른 처리 전력이다. 이는 고속 렌더링이 필요할 때 문제를 야기한다. 예를 들어, 이미지 처리 시스템이 게임 콘솔에서와 같은 애니메이션 용도의 그래픽들을 렌더링할 때이다. 광선 추적을 위해 증가된 계산 요구량에 기인하여, 애니메이션을 현실감 있게 보일 수 있을 만큼 충분히 빠르게 렌더링하는 것은 어려운 일이다(현실감 있는 애니메이션은 약 초당 20 내지 24 개의 프레임이다).
따라서, 광선 추적을 수행하기 위한 더욱 효율적인 기술 및 장치들에 대한 필요성이 존재한다.
본 발명의 실시예들은 일반적으로, 광선 추적을 수행하기 위한 방법 및 장치들을 제공한다.
본 발명의 일 실시예에 따라, 광선 추적 이미지 처리 시스템의 픽셀의 컬러 결정 방법은, 픽셀을 통하여 3차원 장면에 1차 광선을 방출하는 단계; 1차 광선에 의해 교차된 제1 프리미티브(primitive)의 컬러 값에 기초하여 픽셀에 대한 초기 컬러 값을 결정하는 단계; 1차 광선에 의해 교차된 프리미티브로부터의 적어도 하나의 2차 광선을 장면 내에 방출하는 단계; 및 2차 광선에 의해 교차된 제2 프리미티브의 컬러 값 및 1차 광선에 의해 교차된 제1 프리미티브와 연관된 스케일링 인자(scaling factor)에 기초하여 픽셀에 대한 컬러 값을 업데이트하는 단계를 포함한다.
본 발명의 다른 실시예에 따라, 이미지 처리 시스템은 메모리 캐시; 픽셀을 통하여 3차원 장면 내에 최초 광선을 방출하고, 제1 리프 노드(leaf node)에 도달될 때까지 최초 광선을 이용하여 공간 인덱스(spatial index)를 가로지르도록 구성된 제1 처리 소자; 및 제1 처리 소자로부터 최초 광선 및 제1 리프 노드를 정의하는 정보를 수신하고, 최초 광선에 의해 교차된 제1 프리미티브의 컬러에 기초하여 픽셀에 대한 제1 컬러 기여도를 결정하며, 제1 프리미티브에 기초하여 컬러 기여도의 제1 스케일링 인자를 결정하고, 최초 광선과 제1 프리미티브의 교차에 기초하여 적어도 하나의 2차 광선을 방출하며, 컬러 기여도의 제1 스케일링 인자를 적어도 하나의 2차 광선과 연관시키도록 구성된 제2 처리 소자를 포함한다.
본 발명의 다른 실시예에 따라, 컴퓨터 판독 가능한 매체는 실행시, 픽셀을 통하여 3차원 장면에 1차 광선을 방출하는 단계; 1차 광선에 의해 교차된 제1 프리미티브의 컬러 값에 기초하여 픽셀에 대한 초기 컬러 값을 결정하는 단계; 1차 광선에 의해 교차된 프리미티브로부터의 적어도 하나의 2차 광선을 장면 내에 방출하는 단계; 및 2차 광선에 의해 교차된 제2 프리미티브의 컬러 값 및 1차 광선에 의해 교차된 제1 프리미티브와 연관된 스케일링 인자에 기초하여 픽셀에 대한 컬러 값을 업데이트하는 단계를 일반적으로 포함하는 동작을 수행하는 프로그램을 포함한다.
도 1은 본 발명의 일 실시예에 따른 다중 코어 처리 소자를 도시한 도면이다.
도 2는 본 발명의 실시예들에 따른 다중 코어 처리 소자 네트워크를 도시한 도면이다.
도 3은 본 발명의 일 실시예에 따른 이미지 처리 시스템에 의해 렌더링될 예시적 3차원 장면을 도시한 도면이다.
도 4a 내지 도 4c는 본 발명의 일 실시예에 따라, 이미지 처리 시스템에 의해 렌더링될 2차원 공간 및 이미지 처리 시스템에 의해 생성된 대응하는 공간 인덱스를 도시한 도면이다.
도 5 및 도 7은 본 발명의 일 실시예에 따라 이미지 처리 시스템에 의해 렌더링될 예시적 3차원 장면을 도시한 도면이다.
도 6은 본 발명의 일 실시예에 따라 픽셀의 컬러를 업데이트하는 방법을 도시한 흐름도이다.
본 발명의 실시예들은 광선 추적 방법론을 이용하여 이미지를 처리할 때 픽셀의 컬러를 업데이트하기 위한 방법 및 장치를 제공한다. 본 발명의 일 실시예에 따라, 스케일링 인자는 3차원 장면 내에서 최초 광선과 2차 광선에 의해 교차되는 물체와 연관될 수 있다. 이미지 처리 시스템에 의해 방출되고, 제1 처리 소자에 의해 공간 인덱스를 통해 추적되는 최초 광선이 물체를 교차한다면, 교차된 물체의 컬러를 이용하여 최초 광선이 통과한 픽셀의 컬러를 업데이트할 수 있다. 또한, 3차원 장면 내의 다른 물체들이 최초 광선이 통과한 픽셀의 컬러에 기여하는지 여부를 판단하기 위하여, 최초 광선이 물체를 교차한 지점으로부터 2차 광선이 생성될 수 있다. 본 발명의 일 실시예에 따라, 생성된 2차 광선들을 정의하는 정보는 또한, 이전의 광선(예컨대, 최초 광선)에 의해 교차된 물체와 연관된 스케일링 인자를 포함할 수 있다. 이전의 광선(예컨대, 최초 광선)에 의해 교차된 물체와 연관된 스케일링 인자를 포함함으로써, 2차 광선이 교차하는 물체들로부터의 픽셀에 대한 추가 컬러 기여도는, 최초 광선이 교차하는 물체에 기인하는 픽셀에 대한 컬러 기여도로부터 (예컨대, 추후에 또는 별도의 처리 소자에 의해) 독립적으로 계산될 수 있다.
후속하여, 본 발명의 실시예들에 대한 참조가 행해진다. 그러나, 본 발명은 기술된 특정 실시예들로 한정되지 않는다는 것을 이해해야 한다. 대신에, 상이한 실시예들과 관련되던지 또는 그렇지 않던지 간에, 후속하는 특징들 및 요소들의 임의의 조합은 본 발명을 구현하고 실행하기 위한 것으로 간주된다. 또한, 다양한 실시예들에서, 본 발명은 종래의 기술에 비하여 많은 이점들을 제공한다. 그러나, 본 발명의 실시예들이 다른 가능한 해결책 및/또는 종래 기술에 비하여 이점들을 달성할 수 있지만, 주어진 실시예에 의하여 특정한 이점이 달성되는지 또는 그렇지 않은지의 여부는 본 발명을 제한하지 않는다. 따라서, 후속하는 양태들, 특징들, 실시예들 및 이점들은, 단지 예시적인 것이며, 청구항(들)에 명시적으로 기술되는 첨부한 청구항들의 요소들 또는 한정어들로 간주되지 않는다.
유사하게, "본 발명"에 대한 참조는, 본 명세서에서 개시되는 본 발명의 임의의 주제의 일반화로서 생각되어서는 안되며, 청구항(들)에 명시적으로 기술된 것을 제외하고는, 첨부한 청구항들의 요소 또는 한정어로 간주되어서는 안된다.
본 발명의 일 실시예는 컴퓨터 시스템과 함께 사용하기 위한 프로그램 제품으로서 구현된다. 프로그램 제품의 프로그램(들)은 (본 명세서에서 기술되는 방법들을 포함하여) 실시예들의 기능들을 정의하고, 다양한 컴퓨터 판독 가능한 매체상에 포함될 수 있다. 예시적 컴퓨터 판독 가능한 매체는, (i) 쓰기 불가능(non-writable) 저장 매체(예컨대, CD-ROM 드라이브에 의해 판독 가능한 CD-ROM 디스크와 같은, 컴퓨터 내의 판독 전용 메모리 장치들) 상에 영구적으로 저장된 정보; (ii) 쓰기 가능(writable) 저장 매체(예컨대, 디스켓 드라이브 또는 하드 디스크 드라이브 내의 플로피 디스크) 상에 저장된 변경 가능한 정보; 및 (iii) 무선 통신을 포함하여, 컴퓨터 또는 텔레폰 네트워크와 같은 것들을 통하여 통신 매체에 의해 컴퓨터로 전달된 정보를 포함하지만, 이들로 한정되는 것은 아니다. 후자의 실시예는 특히, 인터넷 및 다른 네트워크들로부터 다운로드된 정보를 포함한다. 본 발명의 기능들에 지시하는 컴퓨터 판독 가능한 명령어들을 수행할 때, 이와 같은 컴퓨터 판독 가능한 매체는 본 발명의 실시예들을 나타낸다.
일반적으로, 본 발명의 실시예들을 구현하기 위하여 실행되는 루틴들은, 운영 시스템 또는 특정 애플리케이션, 컴포넌트, 프로그램, 모듈, 항목(object), 또는 명령어 시퀀스의 일부일 수 있다. 본 발명의 컴퓨터 프로그램은 통상적으로, 네이티브(native) 컴퓨터에 의해 기계 판독 가능한 포맷, 즉 실행 가능한 명령어들로 번역될 복수의 명령어들로 구성된다. 또한 프로그램들은, 프로그램에 국부적으로 존재하거나 또는 메모리 또는 저장 장치에서 발견되는 변수들 또는 데이터 구조들로 구성된다. 또한, 이후부터 기술되는 다양한 프로그램들은, 그 프로그램들이 본 발명의 특정 실시예에서 구현되는 애플리케이션에 기초하여 식별될 수 있다. 그러나, 후속하는 임의의 특정 프로그램 명칭은 단지 편의를 위해 이용되는 것이며, 따라서 본 발명이 이와 같은 명칭에 의해 식별 및/또는 암시되는 임의의 특정 애플리케이션에서만 오직 사용되는 것으로 한정되어서는 안된다는 것을 이해해야 한다.
예시적 프로세서 레이아웃 및 통신 네트워크
도 1은 본 발명의 일 실시예에 따른 다중 코어 처리 소자(100)를 도시한 도면이다. 다중 코어 처리 소자(100)는 복수의 기본 처리율 엔진(BTE, basic throughput engine)(105)을 포함한다. BTE(105)는 복수의 처리 스레드(thread) 및 코어 캐시(예컨대, L1 캐시)를 포함할 수 있다. 각각의 BTE 내에 위치한 처리 스레드는 공유된 다중 코어 처리 소자 캐시(110)(예컨대, L2 캐시)로의 액세스를 가질 수 있다.
BTE(105)는 또한 복수의 인박스(inbox)(115)들로의 액세스를 가질 수 있다. 인박스(115)들은 메모리 맵핑된 어드레스 공간일 수 있다. 인박스(115)들은 각각의 BTE(105) 내에 위치한 처리 스레드로 맵핑될 수 있다. BTE 내에 위치한 각각의 스레드는 메모리 맵핑된 인박스를 가질 수 있고, 다른 메모리 맵핑된 인박스(115)들 모두에의 액세스를 가질 수 있다. 인박스(115)들은 BTE(105)에 의해 사용되는 낮은 지연 및 높은 대역의 통신 네트워크를 구성할 수 있다.
BTE는 서로 통신하고 BTE들에 데이터 처리 업무를 재분배하기 위한 네트워크로서 인박스(115)를 이용할 수 있다. 몇몇 실시예들에서, 예컨대 BTE(105)에 의한 처리의 결과를 수신하기 위하여, 통신 네트워크에서 별도의 아웃박스가 이용될 수 있다. 다른 실시예들에서, 인박스(115)는 또한 아웃박스로서도 기능할 수 있는데, 예컨대 BTE(105)는 결과들을 이용할 다른 BTE(105)의 인박스에 처리 기능의 결과를 직접 기록한다.
이미지 처리 시스템의 총체적인 성능은 BTE가 업무를 얼마나 잘 분할하여 재분배하는지로 귀착될 수 있다. 인박스(115)들의 네트워크를 이용하여, 프레임 투 프레임 가간섭성(coherency)을 갖지 않는 BTE 통신 데이터 패킷들을 이용하여 공유된 다중 코어 처리 소자 캐시(110)에 오류를 일으키지 않으면서 업무를 수집하고 다른 BTE들에 분배할 수 있다. 프레임 당 수백만 개의 삼각형들을 렌더링할 수 있는 이미지 처리 시스템은 이러한 방식으로 접속된 많은 BTE(105)들을 포함할 수 있다. 본 발명의 일 실시예에서, 작업부하 관리자에게 하나의 BTE(105)의 스레드가 할당될 수 있다. 이미지 처리 시스템은 3차원 장면으로부터 2차원 이미지를 렌더링하기 위하여 다양한 소프트웨어 및 하드웨어 컴포넌트들을 이용할 수 있다. 본 발명의 일 실시예에 따라, 이미지 처리 시스템은 작업부하 관리자를 이용하여, 이미지 처리 시스템에 의해 방출된 광선을 이용해 공간 인덱스를 가로지를 수 있다. 도 4에 관하여 아래에서 더 기술되는 바와 같이, 공간 인덱스는 상대적으로 큰 3차원 장면을 더 작은 경계 체적(bounding volume)들로 분할하는데 사용되는 3가지 종류의 데이터 구조로서 구현될 수 있다. 이미지 처리를 위해 광선 추적 방법론을 이용하는 이미지 처리 시스템은, 광선-경계 체적 교차를 빨리 판단하기 위해 공간 인덱스를 이용할 수 있다. 본 발명의 일 실시예에서, 작업부하 관리자는 공간 인덱스를 이용함으로써 광선-경계 체적 교차 테스트를 수행할 수 있다.
본 발명의 일 실시예에서, 다중 코어 처리 소자(100) 상의 다중 코어 처리 소자 BTE(105)들의 다른 스레드는 벡터 처리율 엔진일 수 있다. 작업부하 관리자가 광선-경계 체적 교차를 판단한 후에, 작업부하 관리자는 인박스(115)를 통해, 복수의 벡터 처리율 엔진들 중 하나에 광선을 방출(전송)할 수 있다. 그 다음, 벡터 처리율 엔진은 광선이 경계 체적 내에 포함된 프리미티브를 교차하는지 여부를 판단할 수 있다. 벡터 처리율 엔진은 또한, 광선이 통과한 픽셀의 컬러를 결정하는데 관련된 동작들을 수행할 수 있다.
도 2는 본 발명의 일 실시예에 따른 다중 코어 처리 소자(200)의 네트워크를 도시한 도면이다. 도 2는 또한, 다중 코어 처리 소자(100)의 BTE들 중 하나의 스레드가 작업부하 관리자(205)인 본 발명의 일 실시예를 도시한 도면이다. 다중 코어 처리 소자(200)의 네트워크의 각각의 다중 코어 처리 소자(2201-N)는 본 발명의 일 실시예에 따라, 하나의 작업부하 관리자(2051-N)를 포함할 수 있다. 다중 코어 처리 소자(200)의 네트워크의 각각의 다중 코어 처리 소자(2201-N)는 또한, 본 발명의 일 실시예에 따라, 복수의 벡터 처리율 엔진(210)을 포함할 수 있다.
작업부하 관리자(2051-N)는 본 발명의 일 실시예에 따라, 다른 작업부하 관리자(2051-N) 및/또는 다른 다중 코어 처리 소자(2201-N)의 벡터 처리율 엔진(210)과 통신하기 위해 고속 버스(225)를 이용할 수 있다. 벡터 처리율 엔진(210) 각각은 다 른 벡터 처리율 엔진(210) 또는 작업부하 관리자(2051-N)와 통신하기 위해 고속 버스(225)를 이용할 수 있다. 작업부하 관리자 프로세서(205)는 고속 버스(225)를 이용하여, 이미지 처리 관련 임무들을 수집하여 다른 작업부하 관리자(2051-N)에 분배하고, 및/또는 다른 벡터 처리율 엔진(210)에 임무들을 분배할 수 있다. 고속 버스(225)의 이용은, 작업부하 관리자(2051-N)가 작업부하 관리자 통신과 관련된 데이터 패킷들을 이용하여 캐시(230)에 영향을 주지 않고 통신하는 것을 허용할 수 있다.
예시적 3차원 장면
도 3은 이미지 처리 시스템에 의해 렌더링될 예시적 3차원 장면(305)이다. 3차원 장면(305) 내에는 물체(320)들이 존재할 수 있다. 도 3의 물체(320)는 상이한 기하학적 모양을 갖는다. 오직 4개의 물체(320)들만이 도 3에 도시되어 있지만, 전형적인 3차원 장면의 물체들의 수는 더 많거나 또는 더 적을 수도 있다. 보통, 3차원 장면들은 도 3에 도시된 것보다 훨씬 많은 물체들을 가질 것이다.
도 3에서 볼 수 있는 바와 같이, 물체들은 다양한 기하학적 모양 및 크기를 갖는다. 예를 들어, 도 3의 한 물체는 피라미드(320A)이고, 도 3의 다른 물체들은 상자들(320B-D)이다. 많은 현대의 이미지 처리 시스템에서, 물체들은 종종 더 작은 기하학적 모양들(예컨대, 정사각형, 원형, 삼각형 등)로 분해될 수 있다. 그 다음, 더 큰 물체들은 많은 수의 더 작은 간단한 기하학적 모양들에 의해 표시된다. 이러한 더 작은 기하학적 모양들을 종종 프리미티브(primitive)라 부른다.
장면(305)에는 또한 광원(325A-B)이 도시되어 있다. 광원들은 장면(305) 내에 위치한 물체(320)들을 조사할 수 있다. 더욱이, 장면(305) 내의 광원(325) 및 물체(320)의 위치에 따라, 광원들은 그림자들이 장면(305) 내의 물체들 상으로 드리워지게 할 수 있다.
3차원 장면(305)은 이미지 처리 시스템에 의해 2차원 화면으로 렌더링될 수 있다. 이미지 처리 시스템은 또한, 2차원 화면이 모니터(310) 상에 디스플레이되게 할 수 있다. 모니터(310)는 최종 2차원 화면을 렌더링하기 위하여 상이한 컬러의 많은 픽셀(330)들을 이용할 수 있다.
3차원 장면(320)을 2차원 화면으로 렌더링하기 위해 이미지 처리 시스템에 의해 사용되는 한 가지 방법을 광선 추적이라 부른다. 광선 추적은 관찰자(315)의 시야로부터의 광선들을 3차원 장면(320)으로 "방출" 또는 "슈팅"하는 이미지 처리 시스템에 의해 달성된다. 이 광선들은 광의 광선들과 유사한 특성 및 행동들을 갖는다.
관찰자(315)의 위치에서 시작하여 3차원 장면(305)을 통하여 가로지르는 하나의 광선(340)을 도 3에서 볼 수 있다. 광선(340)이 관찰자(315)로부터 3차원 장면(305)까지 가로지르면, 광선(340)은 최종 2차원 화면이 이미지 처리 시스템에 의해 렌더링될 평면을 통과한다. 도 3에서, 이 평면은 모니터(310)로 표시된다. 광 선(340)이 평면 또는 모니터(310)를 통과하는 지점은 픽셀(335)로 표시된다.
앞서 간단히 논의한 바와 같이, 대부분의 이미지 처리 시스템은 모니터(310) 상에 최종 장면을 렌더링하기 위하여 (수백만개는 아닐지라도) 수천개 픽셀들의 그리드(330)를 이용한다. 그리드(330)는 프레임으로서 언급될 수 있다. 각각의 개개의 픽셀은 모니터(310) 상에 최종 복합 2차원 화면을 렌더링하기 위하여 상이한 컬러를 디스플레이할 수 있다. 3차원 장면으로부터 2차원 화면을 렌더링하기 위하여 광선 추적 이미지 처리 방법론을 이용하는 이미지 처리 시스템은, 3차원 장면의 방출된 광선 또는 광선들이 직면하는 컬러들을 계산할 것이다. 그 다음, 이미지 처리 장면은 광선이 직면하는 컬러들을 광선이 관찰자로부터부터 3차원 장면까지 향하는 길에 통과하는 픽셀들에 할당할 것이다.
픽셀 당 방출되는 광선의 수는 변할 수 있다. 몇몇 픽셀들은 렌더링될 특정 장면을 위해 방출된 많은 광선들을 가질 수 있다. 이러한 경우, 픽셀의 최종 컬러는 픽셀에 대해 방출되었던 모든 광선으로부터의 각각의 컬러 기여도에 의해 결정된다. 다른 픽셀들은 2차원 화면의 픽셀의 결과 컬러를 결정하기 위해 방출된 하나의 광선만을 가질 수 있다. 몇몇 픽셀들은 이미지 처리 시스템에 의해 방출된 어떠한 광선도 갖지 않을 수 있는데, 이러한 경우, 이 픽셀들의 컬러는 이미지 처리 시스템 내의 알고리즘에 의해 결정되거나, 근사치가 구해지거나, 또는 할당될 수 있다. 2차원 화면의 픽셀(335)의 최종 컬러를 결정하기 위해, 이미지 처리 시스템은 광선(340)이 장면 내의 물체를 교차하는지 여부를 판단해야 한다. 광선이 장면 내의 물체를 교차하지 않는다면, 광선은 디폴트 배경색(예컨대, 낮 또는 밤 하늘을 나타내는 파란색 또는 검정색)에 할당될 수 있다. 반대로, 광선(340)이 3차원 장면을 가로지를 때, 광선(340)은 물체를 비출 수 있다. 광선들이 장면 내의 물체들을 비추면, 물체의 컬러는 광선이 통과한 픽셀에 할당될 수 있다. 그러나, 물체의 컬러는 픽셀에 할당되기 전에 결정되어야 한다.
많은 요인들이 최초 광선(340)에 의해 비춰진 물체의 컬러에 기여할 수 있다. 예를 들어, 3차원 장면 내의 광원들이 물체를 조사할 수 있다. 또한, 물체의 물리적 특성들이 물체의 컬러에 기여할 수 있다. 예를 들어, 물체가 반사성 또는 투과성이라면, 다른 비 광원 물체들이 그 물체의 컬러에 기여할 수 있다.
3차원 장면 내의 다른 물체들로부터의 효과를 결정하기 위하여, 최초 광선(340)이 물체를 교차한 지점으로부터 2차 광선이 방출될 수 있다. 예를 들어, 최초 광선(340)이 물체를 교차한 지점에 대한 광의 기여도를 결정하기 위하여 그림자 광선(341)들이 방출될 수 있다. 물체가 반투명 특성들을 갖는다면, 이미지 처리 시스템은 어떤 컬러 또는 광이 물체의 몸체를 통과하여 투과(transmitt)되는지 여부를 판단하기 위해 투과된 또는 굴절된 광선(344)을 방출할 수 있다. 물체가 반사 특성들을 갖는다면, 이미지 처리 시스템은 어떤 컬러 또는 광이 물체(320) 상으로 반사되는지 여부를 판단하기 위하여 반사된 광선을 방출할 수 있다.
한 종류의 2차 광선은 그림자 광선일 수 있다. 각각의 그림자 광선은 최초 광선과 물체의 교차 지점으로부터, 3차원 장면(305) 내의 광원까지 추적될 수 있다. 광선이 광원에 도달하기 전에 다른 물체와 직면하지 않고 광원에 도달한다면, 광원은 최초 광선이 물체를 비추는 지점에서 최초 광선에 의해 비춰진 물체를 조사 할 것이다.
예를 들어, 그림자 광선(341A)은 최초 광선(340)이 물체(320A)를 교차한 지점으로부터 방출될 수 있고, 광원(325A)을 향하는 방향으로 가로지를 수 있다. 그림자 광선(341A)은 장면(305) 내의 어떠한 다른 물체(320)와도 직면하지 않고 광원(325A)에 도달한다. 따라서, 광원(325A)은 최초 광선(340)이 물체(320A)를 교차한 지점에서 물체(320A)를 조사할 것이다.
다른 그림자 광선들은 최초 광선이 물체를 비추는 지점과 3차원 장면 내의 다른 물체에 의해 차폐된 광원 사이에 그들의 경로를 가질 수 있다. 최초 광선이 비춘 물체 상의 지점과 광원 사이의 경로를 차단하는 물체가 불투명하다면, 광원은 최초 광선이 물체를 비추는 지점에서 그 물체를 조사하지 않을 것이다. 따라서, 광원은 최초 광선의 컬러에 기여하지 않을 수 있고, 결과적으로, 2차원 화면 내에서 렌더링될 픽셀의 컬러에도 기여하지 않을 수 있다. 그러나, 물체가 반투명하거나 또는 투명하다면, 광원은 최초 광선이 물체를 비추는 지점에서 그 물체를 조사할 수 있다.
예를 들어, 그림자 광선(341B)은 최초 광선(340)이 물체(320A)와 교차한 지점으로부터 방출될 수 있고, 광원(325B)을 향하는 방향으로 가로지를 수 있다. 이 예에서, 그림자 광선(341B)의 경로는 물체(320D)에 의해 차폐된다. 물체(320D)가 불 투명하다면, 광원(325B)은 최초 광선(340)이 물체(320A)를 교차한 지점에서 그 물체(320A)를 조사하지 않을 것이다. 그러나, 물체(320D)가 반투명하거나 또는 투명하다면, 광원(325B)은 최초 광선(340)이 물체(320A)를 교차한 지점에서 그 물체(320A)를 조사할 수 있다.
다른 종류의 2차 광선은 투과된(transmitted) 광선 또는 굴절된 광선이다. 최초 광선이 교차한 물체가 투명 또는 반투명 특성들을 갖는다면(예컨대, 유리), 굴절된 광선이 이미지 처리 시스템에 의해 방출될 수 있다. 굴절된 광선은 최초 광선이 물체를 비추는 각도에 비례하는 각도로 물체를 가로지른다. 예를 들어, 굴절된 광선(344)은 최초 광선(340)이 교차한 물체(320A)를 가로지르는 것으로 보인다.
다른 종류의 2차 광선은 투과된 광선 또는 굴절된 광선이다. 최초 광선이 교차한 물체가 반사 특성들을 갖는다면(예컨대, 금속 마감재), 어떤 컬러 또는 광이 물체 상에서 반사될 수 있는지 여부를 판단하기 위하여 반사된 광선이 이미지 처리 시스템에 의해 방출될 것이다. 반사된 광선은 최초 광선이 물체를 교차한 각도에 비례하는 각도로 물체로부터 가로질러 나온다. 예를 들어, 최초 광선(340)이 교차한 물체(320A) 상으로 어떤 컬러 또는 광이 반사될 수 있는지 여부를 판단하기 위하여 반사된 광선(343)이 이미지 처리 시스템에 의해 방출될 수 있다.
모든 2차 광선들(예컨대, 그림자 광선, 투과된 광선, 반사된 광선 등)의 컬러 및 광의 총 기여도는 최초 광선이 통과한 픽셀의 최종 컬러를 가져올 것이다.
예시적 KD-트리
광선 추적을 수행할 때 직면하게 되는 한 가지 문제점은, 방출된 광선이 렌더링될 장면 내의 임의의 물체들을 가로지르는지 여부를 빠르고 효율적으로 판단하는 것이다. 당업자들이 알고 있는, 광선 교차 판단을 더욱 효율적으로 만들기 위한 하나의 방법론은 공간 인덱스를 이용하는 것이다. 공간 인덱스는 프리미티브들을 포함하거나 또는 포함하지 않을 수 있는 더 작은 체적들(전체 3차원 장면에 비하여 더 작은 체적들)로 3차원 장면 또는 세계를 나눈다. 그 다음, 이미지 처리 시스템은 광선이 더 작은 체적들 내에 포함된 프리미티브들을 교차할 수 있는지 여부를 판단하기 위하여 이러한 더 작은 체적들의 알려진 경계들을 이용할 수 있다. 광선이 프리미티브들을 포함하는 체적을 교차한다면, 그 체적 내에 포함된 프리미티브들의 알려진 위치 및 치수들에 대한 광선의 경로(trajectory)를 이용하여 광선 교차 테스트가 행해질 수 있다. 광선이 특정 체적을 교차하지 않는다면, 그 체적 내에 포함된 프리미티브들에 대한 광선-프리미티브 교차 테스트를 실행할 필요는 없다. 또한, 광선이 프리미티브들을 포함하지 않는 경계 체적을 교차한다면, 그 경계 체적에 대한 광선-프리미티브 교차 테스트를 실행할 필요는 없다. 따라서, 공간 인덱스의 이용은 필요할 수 있는 광선-프리미티브 교차 테스트의 횟수를 감소시킴으로써, 광선 추적 이미지 처리 시스템의 성능을 매우 증가시킨다. 상이한 공간 인덱스 가속 데이터 구조들의 몇몇 예들이 8진트리(octrees), k 차원 트리(kd-Tree), 및 2진 공간 분할 트리(BPS tree, binary space partitioning tree)이다. 몇몇 상 이한 공간 인덱스 구조들이 존재하지만, 본 발명의 실시예들을 용이하게 기술하기 위해, 후속하는 예들에서 kd-트리가 사용될 것이다. 그러나, 당업자들은 본 발명의 실시예들이 임의의 상이한 종류의 공간 인덱스들에도 적용될 수 있다는 것을 용이하게 인식할 것이다.
kd-트리는 전체 장면 또는 공간을 더 작은 체적들로 분할하기 위해 축 정렬된 경계 체적들을 이용한다. 즉, kd-트리는 알려진 축들에 평행한 분할 평면들을 이용함으로써 장면에 의해 둘러싸인 3차원 공간을 분할할 수 있다. 분할 평면들은 더 큰 공간을 더 작은 경계 체적들로 분할한다. 더 작은 경계 체적들은 장면 내의 전체 공간을 함께 구성한다. 더 큰 경계 체적을 2개의 더 작은 경계 체적들로 분할한다는(나눈다는) 결정은 kd-트리 구성 알고리즘을 이용함으로써 이미지 처리 시스템에 의해 행해질 수 있다.
언제 경계 체적을 더 작은 체적들로 분할할 것인지 결정하는 한 가지 기준은, 경계 체적 내에 포함된 프리미티브들의 개수일 수 있다. 즉, 경계 체적들이 미리 결정된 임계치보다 많은 프리미티브들을 포함하는 한, 트리 구성 알고리즘은 더 많은 분할 평면들을 그림으로써 체적들을 계속하여 분할할 수 있다. 언제 경계 체적을 더 작은 체적들로 분할할 것인지 결정하는 다른 기준은, 경계 체적 내에 포함된 공간의 크기일 수 있다. 또한, 경계 체적을 계속하여 분할한다는 결정도 경계 체적을 생성하는 평면에 의해 얼마나 많은 프리미티브들이 교차될 수 있는지에 기초할 수 있다.
장면 분할은 노드, 브렌치, 및 리프들로 구성된 2진 트리 구조에 의해 표시 될 수 있다. 트리 내의 각각의 내부 노드는 상대적으로 큰 경계 체적을 나타낼 수 있지만, 노드는 분할 평면에 의한 상대적으로 큰 경계 제척의 분할 후에 2개의 상대적으로 작게 분할된 체적들을 나타낼 수 있는 하위 노드로의 브렌치들을 포함할 수 있다. 축 정렬된 kd-트리에서, 각각의 내부 노드는 다른 노드들로의 오직 2개의 브렌치들만을 포함할 수 있다. 내부 노드는 하나 또는 두개의 리프 노드들로의 브렌치들(즉, 포인터들)을 포함할 수 있다. 리프 노드는, 더 작은 체적들로 추가로 더 분할되지 않는 노드이고, 프리미티브들로의 포인터들을 포함한다. 내부 노드는 또한, 추가로 더 분할되는 다른 내부 노드들로의 브렌치들을 포함할 수 있다. 내부 노드는 또한, 분할 평면이 따라서 그려진 축이 어떤 축이고, 분할 평면이 따라서 그려진 축이 어디에 있는지 판단하는데 필요한 정보를 포함할 수 있다.
예시적 경계 체적
도 4a 내지 도 4c는 이미지 처리 시스템 및 대응하는 kd-트리에 의해 렌더링될 2차원 공간을 도시한 도면이다. 명료함을 위해서, 2차원 장면을 사용하여 kd-트리의 빌딩을 도시하였지만, kd-트리는 또한, 3차원 장면들을 나타내는데 사용될 수 있다. 도 4a 내지 도 4c의 2차원 도면에서, 분할 평면 대신에 분할 선들이 도시되었고, 3차원 구조에서라면 사용되었을 경계 체적들 대신에 경계 영역들이 도시되었다. 그러나, 당업자는 이러한 개념이 물체들을 포함하는 3차원 장면에도 용이하게 적용될 수 있다는 것을 신속히 이해할 것이다.
도 4a는 모니터(310) 상에 디스플레이될 최종 화면에 렌더링될 프리미티 브(410)들을 포함하는 2차원 장면(405)을 도시한 도면이다. 장면의 전체 체적을 나타내는 가장 큰 체적은 경계 체적1(BV1)에 의해 둘러싸여 있다. 대응하는 kd-트리에서, 이는 루트 또는 세계 노드로서 또한 알려져 있는 최상위 레벨의 노드(450)에 의해 표시될 수 있다. 이미지 처리 시스템의 일 실시예에서, 경계 체적이 예컨대, 2개보다 많은 프리미티브들을 포함하는 경우, 이미지 처리 시스템은 경계 체적들을 더 작은 경계 체적들로 계속하여 분할할 수 있다. 앞서 언급한 바와 같이, 경계 체적을 더 작은 경계 체적들로 계속하여 분할한다는 결정은 많은 요인들에 기초할 수 있지만, 이 예에서는 설명의 용이함을 위해, 경계 체적을 계속하여 분할한다는 결정은 오직 프리미티브들의 개수에만 기초한다. 도 4a에서 볼 수 있는 바와 같이, BV1은 6개의 프리미티브들을 포함하고, 따라서, kd-트리 구성 알고리즘은 BV1을 더 작은 경계 체적들로 분할할 수 있다.
도 4b는 도 4a에 도시된 것과 동일한 2차원 장면(405)을 도시한 것이다. 그러나, 도 4b에서, 트리 구성 알고리즘은 BV1을 2개의 더 작은 경계 체적 BV2와 BV3으로 분할했다. BV1의 분할은 지점 x1에서 x-축을 따라 분할 평면 SP1(415)을 그림으로써 달성되었다. BV1의 분할은 또한, BV2와 BV3에 각각 대응하는 2개의 노드들(455 및 460)로서 kd-트리에도 반영된다. BV1을 나타내는 내부 노드는 이제 분할 평면이 따라서 그려진 축(예컨대, x-축)을 따라, 그리고 분할 평면이 그 축을 따라 그려진 지점(예컨대, 지점 x1)에서, BV1 아래의 2개의 노드들(예컨대, BV2 및 BV3)로 의 포인터들과 같은 정보를 저장할 수 있지만, 이에 한정되지는 않는다.
kd-트리 구성 알고리즘은 미리 결정된 임계치보다 많은 프리미티브들(예컨대, 두개보다 많은 프리미티브들)을 포함하기 때문에 경계 체적 BV3을 계속하여 분할할 수 있다. 그러나, 경계 체적 BV2가 프리미티브들의 수(예컨대, 오직 두개의 프리미티브(410A)들)보다 적거나 또는 그와 동일한 수의 프리미티브들을 포함하기 때문에, kd-트리 구성 알고리즘은 경계 체적 BV2를 계속하여 분할하지 않을 수 있다. BV2와 같이, 더이상 분할되지 않거나 또는 추가로 더 분할되지 않는 노드들을 리프 노드라 부른다.
도 4c는 도 4b에 도시된 것과 동일한 2차원 장면(405)을 도시한 도면이다. 그러나, 도 4c에서, kd-트리 구성 알고리즘은 BV3을 두개의 더 작은 경계 체적 BV4 와 BV5로 분할하였다. kd-구성 알고리즘은 지점 y1에서 y-축을 따라 분할 평면을 이용하여 BV3을 분할하였다. BV3이 두개의 하위 노드들로 분할되었기 때문에, 이제 BV3은 내부 노드로 불릴 수 있다. BV3의 분할은 또한, BV4 및 BV5에 각각 대응하는 2개의 리프 노드들(465 및 470)로서 kd-트리에 반영된다. BV4 및 BV5는 그들이 더 작은 경계 체적들로 더 이상 분할되지 않기 때문에 리프 노드들이다. 2개의 리프 노드들, BV4 및 BV5는 kd-트리에서 분할되었던 경계 체적을 나타내는 내부 노드 BV3 아래에 위치된다.
BV3을 나타내는 내부 노드는, 분할 평면이 따라서 그려진 축(즉, y-축)을 따라서, 그리고 분할 평면이 그 축을 따라서 그려진 지점(즉, 지점 y1)에서 2개의 리프 노드들(즉, BV4 및 BV5)로의 포인트들과 같은 정보를 포함할 수 있지만, 이에 한정되는 것은 아니다.
장면 내에 위치된 모든 경계 체적들이 경계 체적 내에 둘러싸일 수 있는 프리미티브의 미리 결정된 최대 갯수보다 적거나 또는 같은 수의 프리미티브들을 포함하기 때문에, kd-트리 구성 알고리즘은 이제 경계 체적들을 분할하는 것을 중단할 수 있다. 리프 노드들은 각각의 리프가 나타내는 경계 체적들 내에 둘러싸이는 프리미티브들로의 포인터들을 포함할 수 있다. 예를 들어, 리프 노드 BV2는 프리미티브들(410A)로의 포인터들을 포함할 수 있고, 리프 노드 BV4는 프리미티브들(410B)로의 포인터들을 포함할 수 있으며, 리프 노드 BV5는 프리미티브들(410C)로의 포인터들을 포함할 수 있다.
광선 추적 이미지 처리 시스템은 공간 인덱스(kd-트리)를 가로지르기 위하여 작업부하 관리자(205)를 이용할 수 있다. kd-트리를 가로지르는 단계는, 광선이 하위 노드 내에 포함된 임의의 프리미티브들을 가로지르는지 여부를 판단하기 위하여 취하거나 또는 진행할 kd-트리의 낮은 레벨(하위 노드) 상의 노드로의 브렌치를 선택하는 단계를 포함할 수 있다. 작업부하 관리자(205)는 kd-트리를 가로지르거나 또는 지나가기 위하여 방출된 광선의 좌표 및 경로를 이용할 수 있다. 광선-경계 체적 교차 테스트를 실행함으로써, 작업부하 관리자(205)는 kd-트리 구조 내의 노드들에 의해 표시된 경계 체적들의 평면을 광선이 교차하는지 여부를 판단할 수 있다. 광선이 오직 프리미티브(즉, 리프 노드)만을 포함하는 경계 체적을 교차한다면, 작업부하 관리자(205)는 광선-프리미티브 교차 테스트를 위하여 벡터 처리율 엔진(210)에 광선 및 연관 정보를 전송할 수 있다. 경계 체적 내의 프리미티브를 광선이 교차하는지 여부를 판단하기 위하여 광선-프리미티브 교차 테스트가 실행될 수 있다. 이 방법론은, 장면 내에 포함된 각각의 프리미티브에 대해 광선에 대한 광선-프리미티브 교차 테스트를 실행하는 것과 비교하여, 장면 내의 물체를 광선이 교차하는지 여부를 판단하는데 더 적은 광선-프리미티브 교차 테스트가 필요하다는 결론을 가져온다.
결과 kd-트리 구조, 또는 다른 공간 인덱스 구조가 프로세서 캐시(230)에 저장될 수 있다. kd-트리, 및 kd-트리를 포함하는 대응하는 데이터의 크기는 프로세서 캐시(230)에 저장되기 위해 최적화될 수 있다. 프로세서 캐시(230)의 kd-트리의 저장은, 이미지 처리 시스템에 의해 광선이 방출될 때마다 작업부하 관리자(205)가 메모리로부터 kd-트리를 검색해야할 필요 없이 이미지 처리 시스템에 의해 방출되었던 광선을 이용하여 kd-트리를 가로지르는 것을 허용할 수 있다.
픽셀 컬러 축적
본 발명의 일 실시예에 따라, 2차 광선에 기인하는 모든 컬러 기여도가 계산되었는지 또는 아닌지 여부에 관계없이, 이미지 처리 시스템에 의해 3차원 장면 내 에 먼저 방출된 광선이 픽셀의 컬러에 기여할 수 있도록, 컬러 기여도의 스케일링 인자를 이용하는 픽셀 컬러 축적 알고리즘이 이용될 수 있다.
도 3을 참조하여 기술된 바와 같이, 3차원 장면으로부터 렌더링된 최종 2차원 이미지는 수백만개는 아닐지라도, 수천개의 픽셀들을 포함할 수 있다. 이미지 처리 시스템은 픽셀에 할당될 컬러를 결정하기 위하여 픽셀들을 통하여 3차원 장면 내로 광선을 방출할 수 있다. 광선이 3차원 장면 내의 물체를 비추면, 물체의 컬러를 이용하여 광선이 방출된 후에 통과한 픽셀의 컬러를 결정할 수 있다. 또한, 3차원 장면 내의 (제1 광선으로부터 생성된 2차 광선이 비추는) 다른 물체들도 픽셀의 컬러에 기여할 수 있다.
예를 들어, 도 5는 3차원 장면(505) 내로 방출되는 최초 광선(540)을 도시한 도면이다. 최초 광선(540)은 관찰지점(515)으로부터 방출되고, 3차원 장면(505)으로 자신의 길을 만들면서 픽셀(535)을 가로지른다. 픽셀(535)은 이미지 처리 시스템에 의해 렌더링될 최종 2차원 이미지 또는 프레임(510)의 일부일 수 있다. 최초 광선(540)이 3차원 장면(505)을 가로지르면, 최초 광선(540)은 지점 A에서 제1 물체(545)를 비추거나 또는 교차할 수 있다. 최초 광선(540)이 통과한 픽셀(535)의 컬러를 결정하기 위해, 이미지 처리 시스템에 의해 교차된 제1 물체(545)의 컬러가 이용될 수 있다. 또한, 교차된 물체(545)가 특정한 특성들을 갖는다면, 다른 물체들(예컨대, 550, 560) 또한, 픽셀(535)의 컬러에 기여할 수 있다. 예를 들어, 물체(545)는 다른 물체들(예컨대, 550, 560)로 하여금 최초 광선(540)이 물체(545)를 교차한 지점(A)에서 교차된 물체(545)의 컬러에 기여하게 할 수 있는 반사 특성(예 컨대, 거울과 유사한 마감재) 및/또는 굴절 특성(예컨대, 반투명)을 가질 수 있다. 교차 지점(A)에서의 컬러의 기여도는 최초 광선(540)이 통과한 픽셀(535)의 컬러를 바꿀 수 있다.
다른 물체들이 최초 광선(540)에 의해 교차된 물체(545)의 반사 또는 굴절 특성들에 기인하여 픽셀에 컬러를 기여하는지 여부를 판단하기 위하여, 이미지 처리 시스템에 의해 2차 광선들(예컨대, 5401-3)이 방출될 수 있다. 광선 추적 방법론을 이용하는 이미지 처리 시스템은 실감나는 2차원 이미지들을 렌더링하기 위하여 모든 2차 광선들로부터의 컬러의 기여도를 계산할 수 있다.
도 4에 관하여 상술한 바와 같이, 광선 추적 방법론을 이용하는 이미지 처리 시스템에서, 작업부하 관리자(205)는 광선이 리프 노드를 교차하는지 여부를 판단하기 위하여 공간 인덱스(예컨대, kd-트리)를 가로지를 수 있다. 광선이 오직 프리미티브(즉, 리프 노드)만을 포함하는 경계 체적을 교차한다면, 작업부하 관리자(205)는 광선-프리미티브 교차 테스트를 위하여 광선을 정의하는 정보 및 교차된 리프 노드를 정의하는 정보를 벡터 처리율 엔진(210)에 전송할 수 있다. 리프 노드에 의해 정의된 경계 체적 내의 프리미티브들을 광선이 교차하는지 여부를 판단하기 위하여 광선-프리미티브 교차 테스트가 실행될 수 있다. 광선-프리미티브 교차 테스트를 수행하는 것과 더불어, 벡터 처리율 엔진(210)은, 광선이 프리미티브를 교차한다고 판단한 후에, 교차 지점에서의 프리미티브의 컬러가 광선이 통과한 픽셀에 기여하는 것으로 판단할 수 있다.
또한, 벡터 처리율 엔진(210)은 교차된 물체의 표면 특성들(예컨대, 반사, 굴절)에 기초하여 2차 광선 또는 2차 광선들을 방출 또는 생성할 수 있다. 벡터 처리율 엔진(210)은 2차 광선에 대한 경로를 계산하고, 공간 인덱스를 통하여 가로지르기 위한 광선을 작업부하 관리자에 전송함으로써 2차 광선을 생성할 수 있다. 작업부하 관리자(205)는 공간 인덱스를 통해 2차 광선을 추적할 수 있고, 벡터 처리율 엔진(210)은 2차 광선이 3차원 장면 내의 물체(프리미티브)를 교차하는지 여부를 판단하기 위한 계산을 수행할 수 있다. 또한, 2차 광선이 3차원 장면 내의 물체를 교차한다면, 벡터 처리율 엔진(210)은 최초 광선이 통과한 픽셀에 그 물체가 기여하는 컬러를 계산할 수 있다.
2차 광선으로부터의 픽셀에 대한 컬러 기여도는 이전의 일련의 광선들에 의해 교차된 물체 또는 물체들의 특성들에 의존적이다. 이전의 일련의 광선들은 2차 광선이 생성되게 하는, 2차 광선 이전의 모든 광선들일 수 있다.
예를 들어, 도 5에 도시된 2차 광선(5403)으로부터의 픽셀(535)에 대한 컬러 기여도는 2차 광선이 생성되게 하는 2차 광선 이전의 일련의 광선들(즉, 광선540, 광선5401, 및 광선 5402)에 의해 교차된 물체들(즉, 물체1, 물체2, 및 물체3)의 특성들에 의존적이다.
픽셀의 컬러를 결정하는 한 가지 방법은, 공간 인덱스를 통하여 최초 광선 및 픽셀(535)에 관련된 모든 2차 광선들을 가로지르게 함으로써 픽셀의 최종 컬러를 계산하고, 프레임(510)의 제2 픽셀 또는 상이한 픽셀을 통하여 후속하는 최초 광선을 방출하기 전에 그들의 픽셀(535)에 대한 모든 2차 광선들의 컬러 기여도를 계산하는 것일 수 있다. 이러한 방법으로, 2차 광선이 의존하는 물체의 특성들이 메모리(예컨대, 캐시 또는 로컬 데이터 레지스터)에 존재하고, 그 특성들을 이용하여 각각의 후속하여 생성되는 2차 광선에 대한 2차 광선 컬러 기여도를 결정할 수 있다.
그러나, 최초 광선 및 그에 후속하는 2차 광선들로부터 생성될 수 있는 많은 수의 2차 광선, 및 각각의 2차 광선의 컬러 기여도를 결정하는데 요구되는 많은 수의 계산에 기인하여, 3차원 장면으로 다른 광선을 방출하기 위해 대기하는 것은, 메모리 내의 2차 광선에 관련된 많은 수의 중간 계산 결과들을 불필요하게 유지하기 위한 처리 소자(예컨대, 작업부하 관리자(205) 또는 벡터 처리율 엔진(210))를 요구할 수 있다. 더욱이, 모든 2차 광선들이 공간 인덱스를 통해 가로질러 질때까지 3차원 장면으로 다른 광선을 방출하기 위해 대기하는 것은, 처리 소자가 상대적으로 긴 시간을 대기할 것을 요구할 수 있다. 결과적으로, 3차원 장면으로부터 2차원 이미지를 렌더링하는데 필요한 전체 시간이 증가할 수 있고, 광선 추적 이미지 처리 시스템의 성능이 감소된다.
그러나, 본 발명의 실시예들에 따라, 픽셀의 컬러를 결정하는 다른 방법은, 광선이 3차원 장면 내의 물체들을 교차할 때 픽셀의 컬러를 업데이트 또는 축적하는 것일 수 있다. 광선이 3차원 장면 내의 물체들을 교차할 때 픽셀의 컬러를 업데이트하기 위하여, 컬러 기여도의 스케일링 인자는 2차 광선 및 3차원 장면 내의 물체들과 연관될 수 있다. 아래에 더 기술되는 바와 같이, 컬러 기여도의 스케일링 인자는 이전에 교차된 물체들의 특성에 의존하는 계산들이 이전에 교차된 물체들과 관련된 계산들과 독립적으로 계산되는 것을 허용할 수 있다. 따라서, 픽셀의 컬러를 결정하기 위해 모든 계산을 마무리해야 하는 것과는 대조적으로, 광선이 3차원 장면 내의 물체들과 교차할 때 픽셀의 컬러가 업데이트될 수 있다.
독립적인 계산들이 2차 광선에 기인하는 픽셀에 대한 컬러 기여도를 결정할 수 있게 함으로써(즉, 컬러 기여도의 스케일링 인자를 이용함으로써), 별도의 처리 소자들에 의해 계산들이 수행될 수 있다. 또한, 본 발명의 실시예들에 따라, 2차 광선으로부터의 컬러 기여도가 별도의 처리 소자들에 의해 계산될 때, 별도의 처리 소자는 (예컨대 프레임 버퍼에 저장된) 픽셀의 컬러를 업데이트할 수 있다. 따라서, 모든 2차 광선으로부터 픽셀에 대한 컬러 기여도를 결정함으로써, 픽셀의 최종 컬러를 결정하는 하나의 처리 소자와 대조적으로, 픽셀에 할당될 컬러를 결정하기 위해 모든 2차 광선이 3차원 장면(505)을 통해 추적될 때까지 대기할 필요 없이, 2차 광선으로부터의 컬러 기여도가 복수의 처리 소자들에 의해 수행될 수 있다. 이러한 방법은 픽셀의 최종 컬러를 결정하기 위해 더 적은 시간을 요구할 수 있고, 따라서 광선 추적 이미지 처리 시스템의 성능을 향상시킬 수 있다.
도 6은 본 발명의 일 실시예에 따라, 2차원 이미지의 물체를 교차하는 최초 광선과 2차 광선에 기인하여 픽셀(535)의 컬러를 축적하는 방법(600)을 도시하는 흐름도이다. 방법(600)은 광선 추적 이미지 처리 시스템이 3차원 장면(505) 내로 최초 광선(540)을 방출할 때 단계(605)에서 시작된다. 광선이 3차원 장면(505) 내로 방출되기 때문에, 광선을 최초 광선이라 부를 수 있다. 이는 최초 광선 또는 2 차 광선이 물체를 비추는 지점에서 3차원 장면(505) 내의 위치로부터 방출 또는 생성될 수 있는 2차 광선과 대조적이다.
최초 광선(540)이 장면 내로 방출될 때, 이미지 처리 시스템은 컬리 기여도의 스케일링 인자를 최초 광선(540)과 연관시킬 수 있다. 2차 광선과 대조적으로, 이는 3차원 장면 내로 방출된 최초 광선이므로, 스케일링 인자는, 예컨대 1 또는 100% 일 수 있다. 단계(630)에 관하여 후에 설명되는 바와 같이, 컬러 기여도의 스케일링 인자는 교차된 물체들로부터 방출된 2차 광선들(예컨대 5401-3)과 상이할 수 있다. 최초 광선(540)이 3차원 장면(505)을 향해 가로지르면서 통과하는 픽셀(535)을 정의하는 정보 또한 최초 광선(540)과 연관될 수 있다.
다음 단계(610)에서, 이미지 처리 시스템은 작업부하 관리자(205)를 이용하여 공간 인덱스(예컨대, kd-트리)를 통하여 최초 광선(540)을 추적할 수 있다. 작업부하 관리자(205)는 리프 노드(즉, 오직 프리미티브만을 포함하는 경계 체적을 정의하는 노드)에 도달될 때까지 공간 인덱스를 통하여 광선을 계속해서 추적할 수 있다.
리프 노드에 도달된 후에, 단계(615)에서, 작업부하 관리자(205)는 광선-프리미티브 교차 테스트를 위하여 광선(540)을 정의하는 정보(예컨대, 경로, 컬러 기여도의 스케일링 인자, 픽셀(535)을 정의하는 정보 등)를 벡터 처리율 엔진(210)에 전송할 수 있다. 복수의 작업 부하 관리자들(2051-n) 및 복수의 벡터 처리율 엔진들(2101-n)을 이용하는 이미지 처리 시스템에서, 리프 노드로의 최초 광선(540)을 추적한 작업부하 관리자는, 예컨대 복수의 인박스(115)들 및 고속 버스(225)를 통하여, 광선 정보를 복수의 벡터 처리율 엔진들(2101-n) 중 임의의 것에 전송할 수 있다.
벡터 처리율 엔진(210)이 광선 정보를 수신한 후에, 단계(620)에서, 벡터 처리율 엔진(210)은 광선-프리미티브 교차 테스트를 시행 또는 실행할 수 있다. 광선-프리미티브 교차 테스트의 결과에 기초하여, 벡터 처리율 엔진(210)은 광선(540)이 리프 노드 내에 위치한 프리미티브를 교차했는지 여부를 판단할 수 있다. 지금은 광선(540)이 리프 노드 내에 포함된 하나의 프리미티브를 교차하였는지 여부를 판단하는 것처럼 기술되지만, 광선(540)은 복수의 프리미티브들을 교차했을 수 있고, 이러한 경우, 벡터 처리율 엔진(210)은 관찰지점(515)으로부터 교차된 프리미티브까지의 거리를 판단함으로써 어느 프리미티브가 맨처음 교차되었는지를 판단할 수 있는데, 여기서 가장 작은 거리는 제1 교차된 프리미티브, 따라서 관찰 가능한 프리미티브(즉, 픽셀(535)에 대해 컬러를 기여할 프리미티브) 이다.
단계(625)에서, 벡터 처리율 엔진(210)이 광선(540)이 리프 노드 내의 어떠한 프리미티브도 교차하지 않았다고 판단한다면, 이미지 처리 시스템은 벡터 처리율 엔진(210)이 광선이 통과한 픽셀의 컬러를 결정할 수 있는 단계(630)로 진행될 수 있다. 광선이 리프 노드에 대응하는 경계 체적 내의 어떠한 물체도 교차하지 않았기 때문에, 벡터 처리율 엔진(210)은 광선(540)이 통과한 픽셀(535)에 컬러를 할당할 수 없고, 작업부하 관리자(205)는 광선(540)이 프리미티브를 포함하는 다른 리프 노드를 교차하는지 여부를 판단하기 위해 공간 인덱스를 다시 가로지를 수 있다. 대안으로서, 벡터 처리율 엔진(210)은 3차원 장면(505)의 배경색을 광선(540)이 통과한 픽셀(535)에 할당할 수 있다.
그러나, 단계(625)에서, 벡터 처리율 엔진(210)이 광선(540)이 리프 노드 내의 물체(545)(즉, 물체(545)의 일부를 나타내는 프리미티브)를 교차하였다고 판단한다면, 이미지 처리 시스템은 단계(635)로 진행될 수 있다. 단계(635)에서, 벡터 처리율 엔진(210)은 최초 광선(540)이 물체(545)를 교차한 지점(예컨대, 지점 A)에서 물체(545)의 컬러를 결정할 수 있다. 교차 지점에 있는 물체(545)의 컬러는 최초 광선(540)이 통과한 픽셀(535)의 컬러로서 이용되거나 또는 픽셀(535)의 컬러에 할당될 수 있다. 그러나, 추적되는 광선(540)과 연관된 컬러 기여도의 스케일링 인자는 물체(545)가 픽셀에 대해 기여하는 컬러의 양을 변경할 수 있다. 추적되는 광선이 이미지 처리 시스템에 의해 방출된 최초 광선(540)이라면, 컬러 기여도의 스케일링 인자는, 예컨대 100%일 수 있다. 100%는, 교차된 물체(545)로부터 픽셀(535)에 기여한 컬러의 양을 스케일링하지 않고(즉, 감소시키지 않고), 광선이 가로지른 물체(545)의 컬러가 픽셀(535)에 할당되어야 한다는 것을 나타낼 수 있다.
컬러 기여도의 스케일링 인자를 이용하여, 교차된 물체가 최초 광선이 통과한 픽셀에 기여할 수 있는 컬러의 양을 결정할 수 있다. 2차 광선에 의해 교차된 물체로부터의 컬러의 기여도가 반사 또는 굴절을 통한 것이기 때문에, 물체가 기여하는 컬러의 양은 스케일링될 수 있다. 2차 광선에 의해 교차된 물체는 최초 광선 에 의해 교차된 물체와 동일한 양의 세기로 최초 픽셀에 자신의 컬러를 기여하지 않고, 오히려 2차 광선에 의해 교차된 물체는 최초 광선에 의해 교차된 물체 상으로의 반사 또는 굴절을 통해 더 적은 정도로 컬러를 기여한다. 따라서, 2차 광선이 생성된 물체의 물리적 특성들(예컨대, 반사, 굴절)에 기초하여 스케일링 인자는 2차 광선과 연관될 수 있다.
광선(540)이 통과한 픽셀(535)의 컬러가 교차된 물체(545)의 컬러 및 대응하는 스케일링 인자에 기초하여 업데이트된 후에, 단계(640)에서 이미지 처리 시스템은 (벡터 처리율 엔진(210)을 이용하여) 광선(540)이 물체(545)를 교차한 지점으로부터 2차 광선들을 생성 또는 방출할 수 있다. 예를 들어, 2차 광선(5401)은 최초 광선(540)이 물체1(545)을 교차한 지점 A로부터 방출될 수 있다. 2차 광선들(예컨대, 5401)은 도 3을 참조하여 상기 기술된 바와 같이 교차 각도에 의해 결정된 경로로 생성 또는 방출될 수 있다. 2차 광선들은 최초 광선(540)이 통과한 픽셀(535)에 추가의 컬러를 기여할 수 있다. 교차된 물체가 컬러를 반사한다면(예컨대, 금속 마감재 또는 거울처럼 비춰지는 마감재), 또는 적어도 부분적으로 투명하여(예컨대, 유리 조각 또는 물) 컬러가 그것을 통해 전파하는 것을 허용한다면, 2차 광선들은 교차된 물체(예컨대, 물체1(545))에 추가의 컬러를 기여할 수 있다. 2차 광선(예컨대, 5402 또는 5403)으로부터의 임의의 추가 컬러 기여도가 프레임(510)의 올바른 픽셀(535)에 할당될 수 있도록, 각각의 2차 광선(5401)을 정의하는 정보는 최초 광선이 통과한 픽셀(535)을 식별하는 정보 또한 포함할 수 있다.
벡터 처리율 엔젠(210)이 2차 광선들을 생성할 때, 컬러 기여도의 스케일링 인자는 각각의 2차 광선에 할당될 수 있다. 2차 광선(예컨대, 5401)에 대한 컬러 기여도의 스케일링 인자는 2차 광선(5401)이 생성되었던 물체(예컨대, 물체1(545))의 특성들에 기초하여 결정될 수 있다. 또한, 본 발명의 실시예들에 따라, 컬러 기여도의 스케일링 인자는 임의의 수의 특성들, 예컨대 물체의 표면 특성들, 광선과 교차된 물체 간의 교차 입사 각도, 및/또는 최초 광선이 통과한 픽셀에 대해 2차 광선이 가질 수 있는 컬러 기여도를 변경할 수 있는 3차원 장면의 환경적인 특성들에 기초하여 결정될 수 있다.
예를 들어, 물체가 금속 마감재를 갖고 높은 반사성을 갖는다면, 벡터 처리율 엔진(210)에 의해 생성된 반사된 2차 광선과 연관된 컬러 기여도의 스케일링 인자는 높을 수 있다(예컨대, 85% 또는 .85). 컬러 기여도의 높은 반사성 스케일링 인자는, 다른 교차된 물체들이 2차 광선이 생성된 물체에, 따라서 최초 광선에 통과한 픽셀에 상당한 양의 컬러를 기여할 수 있다는 것을 나타낼 수 있다. 대조적으로, 교차된 물체가 매트 마감재를 갖는다면, 그 물체에 대한 컬러 기여도의 반사성 스케일링 인자는 낮을 수 있다(예컨대, 35% 또는 .35). 컬러 기여도의 낮은 반사성 스케일링 인자는, 2차 광선에 의해 교차된 다른 물체들이 최초 광선이 통과한 픽셀에 상당한 양의 컬러를 기여할 수 없다는 것(즉, 물체 상으로 반사시킬 수 없다는 것)을 나타낼 수 있다. 도시의 복잡함을 줄이기 위해, 도 5는 오직 반사성 2차 광선들(즉, 5401-3)만을 도시하고 있다.
또한, 컬러 기여도의 굴절성 스케일링 인자는 굴절된 2차 광선과 연관될 수 있다. 컬러 기여도의 반사성 스케일링 인자와 유사하게, 컬러 기여도의 굴절성 스케일링 인자 또한, 이전의 광선(예컨대, 최초 광선(540))에 의해 교차된 물체의 특성들에 기초하여 결정될 수 있다. 예를 들어, 교차된 물체가 깨끗하다면, 컬러 기여도의 굴절 스케일링 인자는 그 물체에 대해 높을 수 있다(예컨대, 95% 또는 .95). 컬러 기여도의 높은 굴절성 스케일링 인자는, 2차 굴절 광선에 의해 교차된 물체는 이전의 광선(예컨대, 최초 광선(540))이 그 물체를 교차한 지점에서 그 물체에, 따라서 최초 광선이 통과한 픽셀에 상당한 양의 컬러를 기여할 수 있다는 것을 나타낸다. 대조적으로, 물체가 부분적으로 불투명하다면, 컬러 기여도의 굴절성 스케일링 인자는 그 물체에 대해 낮을 수 있는데(예컨대, 25% 또는 .25), 이는 굴절 2차 광선에 의해 교차된 물체가 이전의 광선(예컨대, 최초 광선(540))이 그 물체를 교차한 지점에서 그 물체에 상당한 양의 컬러를 기여할 수 없다는 것을 나타낸다.
컬러 기여도의 스케일링 인자가 2차 광선 또는 2차 광선들과 연관된 후에, 이미지 처리 시스템은 벡터 처리율 엔진(645)이 작업부하 관리자 또는 작업부하 관리자들에 생성된 2차 광선들을 전송 또는 전달할 수 있는 단계(645)로 진행될 수 있다. 예를 들어, 벡터 처리율 엔진(210)은 2차 광선을 정의하는 정보(예컨대, 경로, 컬러 기여도의 스케일링 인자, 최초 광선이 통과한 픽셀을 정의하는 정보)를 복수의 인박스(115)들 및/또는 고속 버스(225)를 통해 작업부하 관리자(205)에 전달할 수 있다. 또한, 복수의 2차 광선들이 생성되었다면(예컨대, 반사된 2차 광선 및 굴절된 2차 광선), 2차 광선들은 상이한 작업부하 관리자들에게 전송될 수 있다. 예를 들어, 반사된 2차 광선은 제1 작업부하 관리자(2051)에게 전송되고, 굴절된 2차 광선은 제2 작업부하 관리자(2053)에게 전송될 수 있다.
단계(645)에서 2차 광선 정보가 작업부하 관리자(205) 또는 작업부하 관리자들(2051-n)에게 전송된 후에, 이미지 처리 시스템은 작업부하 관리자(205) 또는 작업부하 관리자들(2051-n)이 3차원 장면(505)을 나타내는 공간 인덱스 또는 인덱스들을 통해 2차 광선(들)을 추적할 수 있는 단계(610)로 진행될 수 있다. 이미지 처리 시스템은 단계(610)로부터, 2차 광선들이 3차원 장면(505) 내의 물체들을 더 비추는지, 만일 그렇다면 새로운 컬러 기여도의 스케일링 인자들을 갖는 새로운 2차 광선들이 생성되는지 여부를 판단하고, 결과적으로 최초 광선(540)이 통과한 픽셀(535)에 대한 교차된 물체들의 컬러 기여도를 결정하기 위하여, 방법(600)의 나머지 단계들을 통해 진행될 수 있다.
최초 광선과는 대조적으로, 2차 광선(5401)이 3차원 장면(505) 내의 물체들을 교차한다면, 벡터 처리율 엔진(210)은 2차 광선(5401)에 의해 교차된 물체(550)가 최초 광선(540)이 통과한 픽셀(535)에 얼마나 많은 컬러를 기여할 수 있는지 여부를 판단하기 위해 2차 광선(5401)과 연관된 컬러 기여도의 스케일링 인자를 이용할 수 있다. 이는, 예컨대 이전에 교차된 물체(545)와 연관된 스케일링 인자를 현재 교차된 물체(550)의 컬러와 곱함으로써 달성될 수 있다. 그 다음, 이렇게 새로 스케일링된 컬러 기여도 값은 최초 광선(540)이 통과한 픽셀(535)의 컬러의 업데이트를 담당하는 작업부하 관리자(205)에 다시 전송될 수 있다. 그러면 작업부하 관리자(205)는 프레임 버퍼에 이미 저장된 픽셀의 컬러 값(예컨대, 최초 광선(540)이 물체를 교차할 때 결정된 컬러)에 (2차 광선이 물체를 교차할 때 결정된) 스케일링된 컬러 기여도를 합하거나 또는 추가할 수 있다.
2차 광선들에 의해 교차된 물체로부터의 컬러 기여도를 합하거나 또는 추가함으로써, 이미지 처리 시스템은 추가의 컬러 기여도가 결정되면 2차 광선들에 의해 교차된 물체들로부터의 픽셀들에 대한 컬러 기여도들을 축적할 수 있다. 또한, 컬러 기여도의 스케일링 인자를 물체들과 연관시키고, 따라서 물체들로부터 생성된 2차 광선들과 연관시킴으로써, 2차 광선/물체 교차에 기인하는 컬러 기여도는 최초 광선/물체 교차로부터의 컬러 기여도보다 나중에 계산될 수 있다. 따라서, 벡터 처리율 엔진(210) 및 궁극적으로 작업부하 관리자(205)는 픽셀의 컬러를 업데이트 하기 전에 모든 2차 광선/물체 교차들이 판단되기를 기다릴 필요가 없다.
본 발명의 일 실시예에 따라, 특정 작업부하 관리자(205)가 최초 광선(540)이 통과한 픽셀(535)의 컬러 업데이트의 유지를 담당할 수 있다. 또한, 3차원 장면(505)으로부터 렌더링된 최종 2차원 이미지(510)를 구성하는 모든 픽셀들에 대한 컬러 정보가 프레임 버퍼에 저장될 수 있다. 프레임 버퍼는 모니터(510)의 픽셀 레이아웃에 대응하는 2차원 메모리 공간일 수 있다. 프레임 버퍼는 작업부하 관리자(205)의 캐시에 저장될 수 있거나 또는 다중 코어 처리 소자(100)의 공유 캐시(110)에 저장될 수 있다. 작업부하 관리자(205)는 최초 광선(540)이 통과한 픽 셀(535)에 대응하는 프레임 버퍼의 메모리 위치에 컬러 정보를 기록함으로써 프레임 버퍼에 픽셀의 컬러를 업데이트할 수 있다.
벡터 처리율 엔진(210)은, 해당 작업부하 관리자(205)에게 최초 광선(540)이 통과한 픽셀(535)을 정의하는 정보와 함께 컬러 정보를 전송함으로써, 작업부하 관리자(205)에게 광선(540)이 통과한 픽셀(535)에 대한 컬러의 변화를 통지할 수 있다. 픽셀을 담당하는 작업부하 관리자(205)는 광선(540)을 정의한 정보와 함께 벡터 처리율 엔진(210)에 전송되었던 픽셀(535) 정보에 의해 결정될 수 있다. 일단 작업부하 관리자(205)가 픽셀(535)을 정의하는 정보 및 픽셀(535)과 연관된 벡터 처리율 엔진(210)으로부터의 컬러 업데이트를 수신하면, 작업부하 관리자(205)는 픽셀의 컬러를 업데이트할 수 있다. 픽셀의 컬러를 담당하는 하나의 작업부하 관리자를 가짐으로써, 물체들 및 2차 광선들과 관련된 추가의 판단을 기다릴 필요 없이 최초 광선들과 물체들 또는 2차 광선들과 물체들 간의 교차로부터 결정된 컬러들이 축적될 수 있다.
예시적 픽셀 컬러 축적
도 7은 본 발명의 일 실시예에 따라 이미지 처리 시스템에 의해 렌더링될 예시적 3차원 장면(505)을 도시한 도면이다. 도 7은 도 5에 도시된 3차원 장면(505)과 유사하다. 그러나, 도 7은 3차원 장면(505)의 각각의 물체와 연관된 스케일링 인자들을 도시하였다. 또한, 도 7은 광선이 3차원 장면(505)을 가로지를 때 최초 광선(545)이 통과한 픽셀(535)의 컬러를 업데이트하는 단계를 도시하였다.
도 7에 도시된 바와 같이, 최초 광선(540)은 3차원 장면(505) 내로 방출될 수 있다. 이미지 처리 시스템은 파란색 물체(545) 전체 또는 파란색 물체(545)의 일부를 둘러싸는 리프 노드에 의해 정의된 경계 체적을 광선(540)이 교차하는지 여부를 판단하기 위하여, 작업부하 관리자(205)를 이용함으로써 공간 인덱스(예컨대, kd-트리)를 통하여 광선(540)을 추적할 수 있다. 이러한 판단에 응답하여, 작업부하 관리자(205)는 광선(540) 및 교차된 리프 노드를 정의하는 정보를 벡터 처리율 엔진(210)에 전송할 수 있는데, 여기서 광선-프리미티브 교차 테스트가 수행될 수 있다. 광선-프리미티브 교차 테스트의 결과로서, 벡터 처리율 엔진(210)은 최초 광선(540)이 지점 A에서 파란색 물체(545)를 교차한다고 판단할 수 있다. 또한, 벡터 처리율 엔진(210)은 파란색 물체(545)가 최초 광선과 물체의 교차 지점에서(즉, 지점 A에서) 실제 파란색이라고 판단할 수 있다. 이에 따라, 벡터 처리율 엔진(210)은 픽셀 컬러 정보를 픽셀(535)을 담당하는 작업부하 관리자(205)에게 전송할 수 있다. 그러면, 해당 작업부하 관리자(205)는 픽셀에 대응하는 프레임 버퍼의 메모리 위치를 파란색으로 업데이트할 수 있다.
용이한 이해를 돕기 위하여, 3차원 장면(505) 내의 3개의 물체들 각각(즉, 파란색 물체(545), 빨간색 물체(550), 및 초록색 물체(560))은 반사 특성은 갖지만 굴절 특성은 갖지 않는다. 따라서, 각각의 물체와 광선의 교차에 응답하여, 이미지 처리 시스템은 굴절 2차 광선 없이 오직 반사 2차 광선만을 방출할 수 있다. 그러나, 당업자들에게는 본 발명의 실시예들이 굴절 2차 광선에도 적용될 수 있다는 것이 명백할 것이다.
따라서, 도 7에 도시된 바와 같이, 이미지 처리 시스템 또는 벡터 처리율 엔진(210)은 최초 광선(540)과 파란색 물체(545)의 교차 지점(즉, 지점 A)으로부터 반사된 2차 광선(5401)을 방출할 수 있다. 벡터 처리율 엔진(210)은 또한 컬러 기여도의 스케일링 인자를 반사된 2차 광선(5401)을 정의하는 정보와 연관시킬 수 있다. 컬러 기여도의 스케일링 인자는 이전의 광선에 의해 교차된 물체(즉, 파란색 물체(545))의 특성들에 기초할 수 있다. 따라서, 벡터 처리율 엔진(210)은 파란색 물체(545)에 대한 컬러 기여도의 반사성 스케일링 인자(즉, 0.50)를 반사된 2차 광선(5401)과 연관시킬 수 있다.
그 다음, 이미지 처리 시스템은 2차 광선(5401)이 3차원 장면(505)을 나타내는 공간 인덱스를 통하여 가로지르게 하기 위하여 작업부하 관리자(205)를 이용할 수 있다. 작업부하 관리자는 빨간색 물체(550)를 둘러싸는 리프 노드로 2차 광선(5401)을 가로지르게 할 수 있다. 그 다음, 작업부하 관리자는 2차 광선(5401)을 정의하는 정보(예컨대, 경로, 컬러 기여도의 스케일링 인자, 픽셀(535) 식별 정보) 및 리프 노드를 정의하는 정보를 벡터 처리율 엔진(210)에 전송할 수 있다.
그 다음, 벡터 처리율 엔진(210)은 리프 노드에 대응하는 경계 체적 내의 임의의 프리미티브/물체를 2차 광선이 교차하는지 여부를 판단하기 위하여, 광선-프리미티브 교차 테스트를 수행할 수 있다. 도 7에 도시된 바와 같이, 벡터 처리율 엔진은 반사된 2차 광선(5401)이 지점 B에서 빨간색 물체(550)를 교차한다고 판단할 수 있다. 2차 광선(5401)이 빨간색 물체(550)를 교차한다고 판단한 후에, 벡터 처리율 엔진(210)은 빨간색 물체(550)가 최초 광선(540)이 통과한 픽셀(535)에 추가하는 컬러 기여도를 결정할 수 있다.
도시된 바와 같이, 본 발명의 일 실시예에 따라, 벡터 처리율 엔진(210)은 파란색 물체 및 2차 광선(5401)과 연관된 컬러 기여도의 스케일링 인자를 빨간색 물체(550)의 컬러에 적용시킴으로써, 픽셀(535)에 대한 컬러 기여도를 계산할 수 있다. 예를 들어, 빨간색 물체(550)로부터의 스케일링된 컬러 기여도를 결정하기 위하여, 빨간색 물체의 컬러(즉, 빨간색)는 2차 광선(5401)과 연관된 스케일링 인자(즉, 0.50)와 곱해질 수 있다(0.5 * 빨간색). 스케일링된 컬러 기여도가 계산된 후에, 벡터 처리율 엔진(210)은 최초 광선(540)이 통과한 픽셀(535)에 대응하는 프레임 버퍼의 메모리 위치의 업데이트를 담당하는 작업부하 관리자(205)에 스케일링된 컬러 기여도를 전송할 수 있다.
도 7에 도시된 바와 같이, 작업부하 관리자(205)는 프레임 버퍼의 픽셀에 이미 할당된 컬러(파란색)에 추가의 스케일링된 컬러 기여도(0.5 * 빨간색)를 추가할 수 있다. 이는 아마도 파란색 물체가 빨간색 물체의 컬러의 스케일링된 부분들을 반사한다는 사실을 반영할 것이다. 따라서, 실제 생활에서처럼, 관찰자(515) 위치에 있는 사람은 파란색 물체(545)로부터의 파란색과 파란색 물체(545)에 의해 반사된 빨간색의 결합을 관찰할 것이다.
벡터 처리율 엔진(210)은 작업부하 관리자(205)에 스케일링된 컬러 기여도를 전송한 다음, 교차 지점 B로부터 반사된 2차 광선(5402)을 방출할 수 있다. 반사된 2차 광선(5402)을 정의하는 정보에는 스케일링 인자가 존재할 수 있다. 2차 광선(5402)에 대한 스케일링 인자는 파란색 물체에 대한 기여도의 스케일링 인자와 빨간색 물체의 스케일링 인자의 곱일 수 있다. 즉, 본 발명의 일 실시예에 따라, 2차 광선과 물체의 교차로부터 2차 광선이 발생될 때, 새로운 2차 광선에 대한 컬러 기여도의 스케일링 인자는 이전에 교차된 모든 물체들과 연관된 컬러 기여도의 스케일링 인자의 곱일 수 있다.
따라서, 2차 광선(5402)에 대한 컬러 기여도의 스케일링 인자는 파란색 물체(545)에 대한 컬러 기여도의 스케일링 인자와 빨간색 물체(550)에 대한 컬러 기여도의 스케일링 인자의 곱일 수 있다(즉, 0.50 * 0.75). 새로운 물체가 2차 광선에 의해 교차될 때마다 컬러 기여도의 스케일링 인자를 곱함으로써, 2차 광선에 의해 교차되는 물체로부터의 최초 광선(540)이 통과하는 픽셀(535)에 대한 컬러 기여도의 양은 물체들이 많이 교차될 수록 감소한다.
또한, 벡터 처리율 엔진(210)은 반사된 2차 광선(5402)이 지점 C에서 초록색 물체(560)와 교차한다고 판단할 수 있다. 그 다음, 벡터 처리율 엔진(210)은 초록색 물체의 컬러, 및 최초 광선(540)이 통과한 픽셀(535)에 초록색 물체(560)가 기여하는 컬러의 양을 결정할 수 있다.
벡터 처리율 엔진(210)은 컬러 기여도의 스케일링 인자와 교차된 초록색 물 체(560)의 컬러를 곱함으로써(예컨대, 0.50 * 0.75 * 초록색), 광선(5402)에 대해 픽셀(535)에 기여한 스케일링된 컬러를 결정할 수 있다. 그 다음, 벡터 처리율 엔진(210)은 픽셀(535)의 컬러의 업데이트를 담당하는 작업부하 관리자(205)에 스케일링된 컬러 기여도를 전송할 수 있다. 도 7에 도시된 바와 같이, 작업부하 관리자(205)는 프레임 버퍼에 이미 존재하는 컬러에 초록색 물체(560)로부터의 스케일링된 컬러 기여도를 추가함으로써 픽셀의 컬러를 업데이트할 수 있다(즉, 파란색 + 0.50 * 빨간색 + 0.50 * 0.75 * 초록색).
또한, 도시된 바와 같이, 이미지 처리 시스템은 교차 지점 C로부터 반사된 다른 2차 광선(5403)을 생성할 수 있다. 작업부하 관리자(205)는 2차 광선(5403)이 지점 D를 포함하는 리프 노드를 교차한다고 판단할 수 있고, 벡터 처리율 엔진(210)은 2차 광선(5403)은 리프 노드 내에 포함된 어떠한 프리미티브도 교차하지 않는다고 판단할 수 있다. 벡터 처리율 엔진(210)은 2차 광선(5403)이 어떠한 물체도 교차하지 않고 3차원 장면(505)에 존재한다고 판단할 수 있고, 따라서 픽셀(535)에 기여한 컬러를 결정하기 위해서는 배경색을 사용되어야 한다.
따라서, 벡터 처리율 엔진(210)은 이전에 교차된 물체에 의해 결정된 스케일링 인자를 배경색과 곱함으로써(예컨대, 0.50 * 0.75 * 0.25 * 배경색), 배경색으로부터 스케일링된 컬러 기여도를 결정할 수 있다. 그 다음, 벡터 처리율 엔진(210)은 프레임 버퍼의 픽셀(535)의 컬러의 업데이트를 담당하는 작업부하 관리자(205)에게 스케일링된 컬러 기여도를 전송할 수 있다. 결과적으로, 작업부하 관 리자(205)는 배경으로부터의 컬러 기여도를 프레임 버퍼의 픽셀의 컬러에 추가함으로써(즉, 파란색 + 0.50 * 빨간색 + 0.50 * 0.75 * 초록색 + 0.50 * 0.75 * 0.25 * 배경색), 프레임 버퍼의 픽셀(535)의 컬러를 업데이트할 수 있다.
2차 광선들에 의해 교차된 물체들로부터의 컬러 기여도를 합하거나 또는 추가함으로써, 이미지 처리 시스템은 추가 컬러 기여도가 결정되면 2차 광선들에 의해 교차된 물체들로부터의 픽셀들에 대한 컬러 기여도를 축적할 수 있다. 또한, 물체, 및 물체를 교차하는 2차 광선과 컬러 기여도의 스케일링 인자를 연관시킴으로써, 2차 광선/물체 교차에 기인하는 컬러 기여도는 최초 광선/물체 교차로부터의 픽셀에 대한 컬러 기여도보다 나중에 계산될 수 있다. 결과적으로, 벡터 처리율 엔진 또는 작업부하 관리자는 픽셀의 컬러를 업데이트하기 전에 모든 2차 광선/물체 교차가 판단되기를 기다릴 필요가 없다.
본 발명의 실시예들이 상술되었지만, 본 발명의 다른 실시예들 및 추가 실시예들도 본 발명의 기본 범위로부터 벗어나지 않고 고안될 수 있으며, 본 발명의 범위는 후속하는 청구항들에 의해 결정된다.

Claims (10)

  1. 광선 추적 이미지 처리 시스템의 픽셀 컬러를 결정하는 방법에 있어서,
    픽셀을 통하여 3차원 장면(scene)에 1차 광선을 방출하는 단계;
    상기 1차 광선에 의해 교차된 제1 프리미티브(primitive)의 컬러 값에 기초하여 상기 픽셀에 대한 초기 컬러 값을 결정하는 단계;
    상기 1차 광선에 의해 교차된 상기 프리미티브로부터의 적어도 하나의 2차 광선을 상기 장면에 방출하는 단계; 및
    상기 2차 광선에 의해 교차된 제2 프리미티브의 컬러 값 및 상기 1차 광선에 의해 교차된 상기 제1 프리미티브와 연관된 스케일링 인자(scaling factor)에 기초하여 상기 픽셀에 대한 컬러 값을 업데이트하는 단계
    를 포함하는 픽셀 컬러 결정 방법.
  2. 제1항에 있어서,
    상기 2차 광선에 의해 교차된 상기 프리미티브로부터의 적어도 하나의 추가 2차 광선을 상기 장면에 방출하는 단계; 및
    상기 추가 2차 광선에 의해 교차된 제3 프리미티브의 컬러 값에 기초하여 상기 픽셀에 대한 컬러 값을 업데이트하고, 상기 제1 프리미티브 및 상기 제2 프리미티브에 기초하여 제2 스케일링 인자를 업데이트하는 단계
    를 더 포함하는 픽셀 컬러 결정 방법.
  3. 제1항에 있어서, 상기 제1 프리미티브와 연관된 상기 스케일링 인자는 상기 제1 프리미티브의 반사 또는 굴절 특성 중 적어도 하나에 기초하여 결정되는 것인, 픽셀 컬러 결정 방법.
  4. 제2항에 있어서, 상기 제2 스케일링 인자는 상기 제1 프리미티브와 연관된 스케일링 인자와 상기 제2 프리미티브와 연관된 스케일링 인자의 결합에 기초하여 계산되는 것인, 픽셀 컬러 결정 방법.
  5. 제4항에 있어서, 상기 제2 프리미티브와 연관된 상기 스케일링 인자는 상기 제2 프리미티브의 반사 또는 굴절 특성 중 적어도 하나에 기초하여 결정되는 것인, 픽셀 컬러 결정 방법.
  6. 제4항에 있어서, 상기 결합은 상기 제1 프리미티브와 연관된 스케일링 인자를 상기 제2 프리미티브와 연관된 스케일링 인자와 곱함으로써 결정되는 것인, 픽셀 컬러 결정 방법.
  7. 이미지 처리 시스템에 있어서,
    메모리 캐시;
    픽셀을 통하여 3차원 장면 내에 최초 광선을 방출하고, 제1 리프 노드(leaf node)에 도달될 때까지 상기 최초 광선을 이용하여 공간 인덱스(spatial index)를 가로지르도록 구성된 제1 처리 소자; 및
    상기 제1 처리 소자로부터 상기 최초 광선 및 상기 제1 리프 노드를 정의하는 정보를 수신하고, 상기 최초 광선에 의해 교차된 제1 프리미티브의 컬러에 기초하여 상기 픽셀의 제1 컬러 기여도를 결정하며, 상기 제1 프리미티브에 기초하여 컬러 기여도의 제1 스케일링 인자를 결정하고, 상기 최초 광선과 상기 제1 프리미티브의 교차에 기초하여 적어도 하나의 2차 광선을 방출하며, 상기 컬러 기여도의 상기 제1 스케일링 인자를 상기 적어도 하나의 2차 광선과 연관시키도록 구성된 제2 처리 소자
    를 포함하는 이미지 처리 시스템.
  8. 제7항에 있어서,
    상기 픽셀에 대응하는 상기 메모리 캐시 내의 메모리 위치를 더 포함하고, 상기 제2 처리 소자는 제1 픽셀에 대응하는 메모리 위치에 상기 픽셀에 대한 제1 컬러 기여도를 저장하도록 구성되는 것인, 이미지 처리 시스템.
  9. 제8항에 있어서,
    상기 제1 처리 소자는 제2 리프 노드에 도달될 때까지 상기 2차 광선을 이용하여 상기 공간 인덱스를 가로지르도록 더 구성되고,
    상기 제2 처리 소자는 상기 제1 처리 소자로부터 상기 2차 광선 및 제2 리프 노드를 정의하는 정보를 수신하고, 상기 2차 광선에 의해 교차된 제2 프리미티브의 컬러에 기초하여 상기 픽셀에 대한 제2 컬러 기여도를 결정하며, 상기 제1 프리미티브 및 상기 제2 프리미티브에 기초하여 컬러 기여도의 제2 스케일링 인자를 결정하고, 상기 2차 광선과 제2 프리미티브의 교차에 기초하여 적어도 하나의 추가 2차 광선을 방출하며, 상기 컬러 기여도의 제2 스케일링 인자를 상기 적어도 하나의 추가 2차 광선과 연관시키도록 더 구성되는 것인, 이미지 처리 시스템.
  10. 실행시, 제1항 내지 제6항 중 어느 한 항의 단계들을 포함하는 동작을 수행하는 프로그램을 포함하는 컴퓨터 판독 가능한 매체.
KR1020097006118A 2006-09-27 2007-09-13 광선 추적 이미지 처리 시스템의 픽셀 컬러 결정 KR101054702B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US11/535,581 2006-09-27
US11/535,581 US7884819B2 (en) 2006-09-27 2006-09-27 Pixel color accumulation in a ray tracing image processing system
PCT/EP2007/059649 WO2008037599A1 (en) 2006-09-27 2007-09-13 Pixel color determination in a ray tracing image processing system

Publications (2)

Publication Number Publication Date
KR20090057994A true KR20090057994A (ko) 2009-06-08
KR101054702B1 KR101054702B1 (ko) 2011-08-08

Family

ID=38973622

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020097006118A KR101054702B1 (ko) 2006-09-27 2007-09-13 광선 추적 이미지 처리 시스템의 픽셀 컬러 결정

Country Status (5)

Country Link
US (1) US7884819B2 (ko)
EP (1) EP2076888B1 (ko)
JP (1) JP5063698B2 (ko)
KR (1) KR101054702B1 (ko)
WO (1) WO2008037599A1 (ko)

Families Citing this family (114)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8674987B2 (en) 2006-09-19 2014-03-18 Caustic Graphics, Inc. Dynamic ray population control
US9665970B2 (en) 2006-09-19 2017-05-30 Imagination Technologies Limited Variable-sized concurrent grouping for multiprocessing
US9478062B2 (en) 2006-09-19 2016-10-25 Imagination Technologies Limited Memory allocation in distributed memories for multiprocessing
US7830379B2 (en) * 2006-09-19 2010-11-09 Caustic Graphics, Inc. Architectures for parallelized intersection testing and shading for ray-tracing rendering
US7969434B2 (en) * 2006-09-19 2011-06-28 Caustic Graphics, Inc. Method, apparatus, and computer readable medium for accelerating intersection testing in ray-tracing rendering
US8018457B2 (en) * 2006-09-19 2011-09-13 Caustic Graphics, Inc. Ray tracing system architectures and methods
US7940266B2 (en) * 2006-10-13 2011-05-10 International Business Machines Corporation Dynamic reallocation of processing cores for balanced ray tracing graphics workload
US8139060B2 (en) * 2006-11-28 2012-03-20 International Business Machines Corporation Ray tracing image processing system
US7852336B2 (en) * 2006-11-28 2010-12-14 International Business Machines Corporation Dynamic determination of optimal spatial index mapping to processor thread resources
US8063902B2 (en) * 2007-10-12 2011-11-22 Caustic Graphics, Inc. Method and apparatus for increasing efficiency of transmission and/or storage of rays for parallelized ray intersection testing
US7932905B2 (en) * 2007-10-15 2011-04-26 Caustic Graphics, Inc. Method, apparatus, and computer readable medium for light energy accounting in ray tracing
US8159490B2 (en) 2007-10-16 2012-04-17 Dreamworks Animation Llc Shading of translucent objects
US8237711B2 (en) * 2007-11-19 2012-08-07 Caustic Graphics, Inc. Tracing of shader-generated ray groups using coupled intersection testing
US8127235B2 (en) 2007-11-30 2012-02-28 International Business Machines Corporation Automatic increasing of capacity of a virtual space in a virtual world
US8400448B1 (en) 2007-12-05 2013-03-19 The United States Of America, As Represented By The Secretary Of The Navy Real-time lines-of-sight and viewsheds determination system
US8325178B1 (en) 2007-12-05 2012-12-04 The United States Of America, As Represented By The Secretary Of The Navy Lines-of-sight and viewsheds determination system
US20090164919A1 (en) 2007-12-24 2009-06-25 Cary Lee Bates Generating data for managing encounters in a virtual world environment
KR101536197B1 (ko) * 2008-02-27 2015-07-13 삼성전자주식회사 3차원 영상 프로세서 및 프로세싱 방법
JP5159375B2 (ja) 2008-03-07 2013-03-06 インターナショナル・ビジネス・マシーンズ・コーポレーション メタバースにおけるオブジェクトの真贋判断システム、方法及びそのコンピュータ・プログラム
US8217935B2 (en) 2008-03-31 2012-07-10 Caustic Graphics, Inc. Apparatus and method for ray tracing with block floating point data
US8421801B2 (en) 2008-09-09 2013-04-16 Caustic Graphics, Inc. Ray tracing using ray-specific clipping
JP5244977B2 (ja) * 2008-09-22 2013-07-24 コースティック グラフィックス インコーポレイテッド レイトレーシングシェーダapiのためのシステム及び方法
US8963918B2 (en) * 2008-09-30 2015-02-24 Microsoft Corporation Ray tracing on graphics hardware using kd-trees
US8749552B2 (en) 2008-10-17 2014-06-10 Imagination Technologies Limited Synthetic acceleration shapes for use in ray tracing
US9483864B2 (en) 2008-12-05 2016-11-01 International Business Machines Corporation System and method for photorealistic imaging using ambient occlusion
KR101004110B1 (ko) 2009-05-28 2010-12-27 주식회사 실리콘아츠 레이 트레이싱 코어 및 이를 포함하는 레이 트레이싱 칩
KR101076807B1 (ko) * 2009-05-29 2011-10-25 주식회사 실리콘아츠 레이 트레이싱 장치 및 방법
US8797322B2 (en) 2009-06-24 2014-08-05 Imagination Technologies, Limited Systems and methods of defining rays for ray tracing rendering
US8952961B2 (en) 2009-06-29 2015-02-10 Imagination Technologies, Limited Systems and methods for photon map querying
US8441482B2 (en) 2009-09-21 2013-05-14 Caustic Graphics, Inc. Systems and methods for self-intersection avoidance in ray tracing
US9205328B2 (en) 2010-02-18 2015-12-08 Activision Publishing, Inc. Videogame system and method that enables characters to earn virtual fans by completing secondary objectives
US9682324B2 (en) 2010-05-12 2017-06-20 Activision Publishing, Inc. System and method for enabling players to participate in asynchronous, competitive challenges
US8619078B2 (en) * 2010-05-21 2013-12-31 International Business Machines Corporation Parallelized ray tracing
US8629867B2 (en) 2010-06-04 2014-01-14 International Business Machines Corporation Performing vector multiplication
US8692825B2 (en) 2010-06-24 2014-04-08 International Business Machines Corporation Parallelized streaming accelerated data structure generation
JP2012181825A (ja) * 2011-02-09 2012-09-20 Canon Inc 画像処理装置およびその方法
GB2529075A (en) 2011-06-16 2016-02-10 Imagination Tech Ltd Graphics processor with non-blocking concurrent architecture
US10061618B2 (en) 2011-06-16 2018-08-28 Imagination Technologies Limited Scheduling heterogenous computation on multithreaded processors
JP5839907B2 (ja) * 2011-09-15 2016-01-06 キヤノン株式会社 画像処理装置および画像処理方法
US10137376B2 (en) 2012-12-31 2018-11-27 Activision Publishing, Inc. System and method for creating and streaming augmented game sessions
US10789757B2 (en) * 2013-05-06 2020-09-29 Disney Enterprises Inc. Ray-mediated illumination control
KR102159262B1 (ko) 2014-03-14 2020-09-23 삼성전자 주식회사 레이 트레이싱에서의 오류 교차점 제거 방법 및 장치
WO2015167159A1 (en) * 2014-05-02 2015-11-05 Samsung Electronics Co., Ltd. Rendering system and method for generating ray
KR20150136348A (ko) * 2014-05-27 2015-12-07 삼성전자주식회사 레이 트레이싱 시스템에서의 가속 구조 탐색 장치 및 그 탐색 방법
US10286326B2 (en) 2014-07-03 2019-05-14 Activision Publishing, Inc. Soft reservation system and method for multiplayer video games
GB2528655B (en) 2014-07-24 2020-10-07 Advanced Risc Mach Ltd Graphics Processing Systems
US11351466B2 (en) 2014-12-05 2022-06-07 Activision Publishing, Ing. System and method for customizing a replay of one or more game events in a video game
US10118099B2 (en) 2014-12-16 2018-11-06 Activision Publishing, Inc. System and method for transparently styling non-player characters in a multiplayer video game
CN107430784B (zh) * 2015-02-27 2021-04-16 Arm有限公司 图形处理系统
US10286314B2 (en) 2015-05-14 2019-05-14 Activision Publishing, Inc. System and method for providing continuous gameplay in a multiplayer video game through an unbounded gameplay session
US10486068B2 (en) 2015-05-14 2019-11-26 Activision Publishing, Inc. System and method for providing dynamically variable maps in a video game
US10315113B2 (en) 2015-05-14 2019-06-11 Activision Publishing, Inc. System and method for simulating gameplay of nonplayer characters distributed across networked end user devices
US10086266B2 (en) 2015-06-15 2018-10-02 Activision Publishing, Inc. System and method for uniquely identifying physical trading cards and incorporating trading card game items in a video game
US10471348B2 (en) 2015-07-24 2019-11-12 Activision Publishing, Inc. System and method for creating and sharing customized video game weapon configurations in multiplayer video games via one or more social networks
KR102493461B1 (ko) * 2015-08-31 2023-01-30 삼성전자 주식회사 렌더링 시스템 및 방법
GB2541928B (en) 2015-09-04 2018-01-31 Advanced Risc Mach Ltd Graphics processing systems
US11185784B2 (en) 2015-10-08 2021-11-30 Activision Publishing, Inc. System and method for generating personalized messaging campaigns for video game players
US10099140B2 (en) 2015-10-08 2018-10-16 Activision Publishing, Inc. System and method for generating personalized messaging campaigns for video game players
US9679398B2 (en) * 2015-10-19 2017-06-13 Chaos Software Ltd. Rendering images using color contribution values of render elements
US10232272B2 (en) 2015-10-21 2019-03-19 Activision Publishing, Inc. System and method for replaying video game streams
US10245509B2 (en) 2015-10-21 2019-04-02 Activision Publishing, Inc. System and method of inferring user interest in different aspects of video game streams
US10376781B2 (en) 2015-10-21 2019-08-13 Activision Publishing, Inc. System and method of generating and distributing video game streams
GB2543766B (en) 2015-10-26 2018-02-14 Advanced Risc Mach Ltd Graphics processing systems
US10694352B2 (en) 2015-10-28 2020-06-23 Activision Publishing, Inc. System and method of using physical objects to control software access
GB2545226A (en) 2015-12-09 2017-06-14 Samsung Electronics Co Ltd Determining lighting in a 3D virtual scene
US10300390B2 (en) 2016-04-01 2019-05-28 Activision Publishing, Inc. System and method of automatically annotating gameplay of a video game based on triggering events
US10226701B2 (en) 2016-04-29 2019-03-12 Activision Publishing, Inc. System and method for identifying spawn locations in a video game
US10681325B2 (en) * 2016-05-16 2020-06-09 Google Llc Continuous depth-ordered image compositing
US10179289B2 (en) 2016-06-21 2019-01-15 Activision Publishing, Inc. System and method for reading graphically-encoded identifiers from physical trading cards through image-based template matching
US10573065B2 (en) 2016-07-29 2020-02-25 Activision Publishing, Inc. Systems and methods for automating the personalization of blendshape rigs based on performance capture data
US10709981B2 (en) 2016-11-17 2020-07-14 Activision Publishing, Inc. Systems and methods for the real-time generation of in-game, locally accessible barrier-aware heatmaps
US10463964B2 (en) 2016-11-17 2019-11-05 Activision Publishing, Inc. Systems and methods for the real-time generation of in-game, locally accessible heatmaps
US10500498B2 (en) 2016-11-29 2019-12-10 Activision Publishing, Inc. System and method for optimizing virtual games
US10055880B2 (en) 2016-12-06 2018-08-21 Activision Publishing, Inc. Methods and systems to modify a two dimensional facial image to increase dimensional depth and generate a facial image that appears three dimensional
US10861079B2 (en) 2017-02-23 2020-12-08 Activision Publishing, Inc. Flexible online pre-ordering system for media
US10818060B2 (en) 2017-09-05 2020-10-27 Activision Publishing, Inc. Systems and methods for guiding motion capture actors using a motion reference system
US10561945B2 (en) 2017-09-27 2020-02-18 Activision Publishing, Inc. Methods and systems for incentivizing team cooperation in multiplayer gaming environments
US11040286B2 (en) 2017-09-27 2021-06-22 Activision Publishing, Inc. Methods and systems for improved content generation in multiplayer gaming environments
US10974150B2 (en) 2017-09-27 2021-04-13 Activision Publishing, Inc. Methods and systems for improved content customization in multiplayer gaming environments
US10776995B2 (en) * 2017-10-17 2020-09-15 Nvidia Corporation Light fields as better backgrounds in rendering
US10463971B2 (en) 2017-12-06 2019-11-05 Activision Publishing, Inc. System and method for validating video gaming data
US10537809B2 (en) 2017-12-06 2020-01-21 Activision Publishing, Inc. System and method for validating video gaming data
US10981051B2 (en) 2017-12-19 2021-04-20 Activision Publishing, Inc. Synchronized, fully programmable game controllers
US10765948B2 (en) 2017-12-22 2020-09-08 Activision Publishing, Inc. Video game content aggregation, normalization, and publication systems and methods
US10596471B2 (en) 2017-12-22 2020-03-24 Activision Publishing, Inc. Systems and methods for enabling audience participation in multi-player video game play sessions
US11278813B2 (en) 2017-12-22 2022-03-22 Activision Publishing, Inc. Systems and methods for enabling audience participation in bonus game play sessions
US11192028B2 (en) 2018-11-19 2021-12-07 Activision Publishing, Inc. Systems and methods for the real-time customization of video game content based on player data
US11263670B2 (en) 2018-11-19 2022-03-01 Activision Publishing, Inc. Systems and methods for dynamically modifying video game content based on non-video gaming content being concurrently experienced by a user
US11115712B2 (en) 2018-12-15 2021-09-07 Activision Publishing, Inc. Systems and methods for indexing, searching for, and retrieving digital media
US11679330B2 (en) 2018-12-18 2023-06-20 Activision Publishing, Inc. Systems and methods for generating improved non-player characters
US11305191B2 (en) 2018-12-20 2022-04-19 Activision Publishing, Inc. Systems and methods for controlling camera perspectives, movements, and displays of video game gameplay
US10762695B1 (en) * 2019-02-21 2020-09-01 Electronic Arts Inc. Systems and methods for ray-traced shadows of transparent objects
US11344808B2 (en) 2019-06-28 2022-05-31 Activision Publishing, Inc. Systems and methods for dynamically generating and modulating music based on gaming events, player profiles and/or player reactions
KR102384304B1 (ko) * 2019-07-15 2022-04-07 레고 에이/에스 렌더링 방법 및 이를 수행하는 렌더링 장치
US11097193B2 (en) 2019-09-11 2021-08-24 Activision Publishing, Inc. Methods and systems for increasing player engagement in multiplayer gaming environments
US11423605B2 (en) 2019-11-01 2022-08-23 Activision Publishing, Inc. Systems and methods for remastering a game space while maintaining the underlying game simulation
US11712627B2 (en) 2019-11-08 2023-08-01 Activision Publishing, Inc. System and method for providing conditional access to virtual gaming items
US11537209B2 (en) 2019-12-17 2022-12-27 Activision Publishing, Inc. Systems and methods for guiding actors using a motion capture reference system
US11420122B2 (en) 2019-12-23 2022-08-23 Activision Publishing, Inc. Systems and methods for controlling camera perspectives, movements, and displays of video game gameplay
US11563774B2 (en) 2019-12-27 2023-01-24 Activision Publishing, Inc. Systems and methods for tracking and identifying phishing website authors
US11017581B1 (en) 2020-01-04 2021-05-25 Adshir Ltd. Method for constructing and traversing accelerating structures
US11276224B2 (en) 2020-04-17 2022-03-15 Samsung Electronics Co., Ltd. Method for ray intersection sorting
US11238640B2 (en) 2020-06-26 2022-02-01 Advanced Micro Devices, Inc. Early culling for ray tracing
US11524234B2 (en) 2020-08-18 2022-12-13 Activision Publishing, Inc. Multiplayer video games with virtual characters having dynamically modified fields of view
US11351459B2 (en) 2020-08-18 2022-06-07 Activision Publishing, Inc. Multiplayer video games with virtual characters having dynamically generated attribute profiles unconstrained by predefined discrete values
US11833423B2 (en) 2020-09-29 2023-12-05 Activision Publishing, Inc. Methods and systems for generating level of detail visual assets in a video game
US11724188B2 (en) 2020-09-29 2023-08-15 Activision Publishing, Inc. Methods and systems for selecting a level of detail visual asset during the execution of a video game
US11717753B2 (en) 2020-09-29 2023-08-08 Activision Publishing, Inc. Methods and systems for generating modified level of detail visual assets in a video game
CN114331800A (zh) * 2020-09-30 2022-04-12 想象技术有限公司 用于光线跟踪的相交测试
US11439904B2 (en) 2020-11-11 2022-09-13 Activision Publishing, Inc. Systems and methods for imparting dynamic and realistic movement to player-controlled avatars in video games
US11794107B2 (en) 2020-12-30 2023-10-24 Activision Publishing, Inc. Systems and methods for improved collision detection in video games
US11853439B2 (en) 2020-12-30 2023-12-26 Activision Publishing, Inc. Distributed data storage system providing enhanced security
WO2022261816A1 (en) * 2021-06-15 2022-12-22 Nvidia Corporation Ray tracing using reservoir resampling with spatial shift-mapping
US20230298212A1 (en) * 2022-03-17 2023-09-21 Advanced Micro Devices, Inc. Locking mechanism for image classification

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH04139591A (ja) * 1990-10-01 1992-05-13 Erumano Sumiwa Kk 画像生成装置
US6111582A (en) * 1996-12-20 2000-08-29 Jenkins; Barry L. System and method of image generation and encoding using primitive reprojection
JP4078716B2 (ja) 1998-06-29 2008-04-23 ソニー株式会社 画像処理装置および方法、並びに提供媒体
JP3889195B2 (ja) * 1999-02-03 2007-03-07 株式会社東芝 画像処理装置、画像処理システムおよび画像処理方法
JP3703073B2 (ja) * 1999-11-24 2005-10-05 日本ビクター株式会社 図形表示装置及びその方法
US7495664B2 (en) * 2000-06-19 2009-02-24 Mental Images Gmbh Instant ray tracing
US7126605B1 (en) * 2001-07-03 2006-10-24 Munshi Aaftab A Method and apparatus for implementing level of detail with ray tracing
US6853377B2 (en) * 2002-06-26 2005-02-08 Nvidia Corporation System and method of improved calculation of diffusely reflected light
DE10239672B4 (de) * 2002-08-26 2005-08-11 Universität des Saarlandes Verfahren und Vorrichtung zur Erzeugung einer zweidimensionalen Abbildung einer dreidimensionalen Struktur
US7012604B1 (en) 2002-09-12 2006-03-14 Advanced Micro Devices, Inc. System architecture for high speed ray tracing
US7623137B1 (en) * 2006-02-15 2009-11-24 Adobe Systems, Incorporated Successive-convolution-compositing technique for rendering translucent surfaces

Also Published As

Publication number Publication date
WO2008037599A1 (en) 2008-04-03
US7884819B2 (en) 2011-02-08
JP2010505164A (ja) 2010-02-18
KR101054702B1 (ko) 2011-08-08
US20080074420A1 (en) 2008-03-27
JP5063698B2 (ja) 2012-10-31
EP2076888A1 (en) 2009-07-08
EP2076888B1 (en) 2015-07-01

Similar Documents

Publication Publication Date Title
KR101054702B1 (ko) 광선 추적 이미지 처리 시스템의 픽셀 컬러 결정
US7940265B2 (en) Multiple spacial indexes for dynamic scene management in graphics rendering
JP5043939B2 (ja) 3次元シーンの境界ボリュームを定めるノードを有する空間インデックスを用いる光線追跡のための操作を行なうプログラムを含むコンピュータ可読媒体及びシステム
US8018453B2 (en) Deferred acceleration data structure optimization for improved performance
US7893936B2 (en) Generating efficient spatial indexes for predictably dynamic objects
US8085267B2 (en) Stochastic addition of rays in a ray tracing image processing system
US8022950B2 (en) Stochastic culling of rays with increased depth of recursion
US8004518B2 (en) Combined spatial index for static and dynamic objects within a three-dimensional scene
US7719532B2 (en) Efficient and flexible data organization for acceleration data structure nodes
US7808500B2 (en) Method for improving spatial index efficiency by jittering splitting planes
US8243081B2 (en) Methods and systems for partitioning a spatial index
US7773087B2 (en) Dynamically configuring and selecting multiple ray tracing intersection methods
US7940266B2 (en) Dynamic reallocation of processing cores for balanced ray tracing graphics workload
US7782318B2 (en) Method for reducing network bandwidth by delaying shadow ray generation
US8619078B2 (en) Parallelized ray tracing
US20080122838A1 (en) Methods and Systems for Referencing a Primitive Located in a Spatial Index and in a Scene Index
US8339398B2 (en) Integrated acceleration data structure for physics and ray tracing workload
US7737974B2 (en) Reallocation of spatial index traversal between processing elements in response to changes in ray tracing graphics workload
CN113808245B (zh) 用于遍历光线追踪加速结构的增强技术
CN113781626A (zh) 遍历在射线追踪中使用的数据的技术
US8102389B2 (en) Box casting using an integrated acceleration data structure

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: 20140723

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20150723

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20160721

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20170724

Year of fee payment: 7

FPAY Annual fee payment

Payment date: 20180726

Year of fee payment: 8

FPAY Annual fee payment

Payment date: 20190724

Year of fee payment: 9