KR20230043717A - 양자화 및 인터벌 표현들을 갖는 광선 교차 테스트 - Google Patents

양자화 및 인터벌 표현들을 갖는 광선 교차 테스트 Download PDF

Info

Publication number
KR20230043717A
KR20230043717A KR1020220115377A KR20220115377A KR20230043717A KR 20230043717 A KR20230043717 A KR 20230043717A KR 1020220115377 A KR1020220115377 A KR 1020220115377A KR 20220115377 A KR20220115377 A KR 20220115377A KR 20230043717 A KR20230043717 A KR 20230043717A
Authority
KR
South Korea
Prior art keywords
representation
interval
ray
primitive
precision
Prior art date
Application number
KR1020220115377A
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
Priority claimed from US17/456,503 external-priority patent/US11830124B2/en
Priority claimed from US17/456,483 external-priority patent/US11734871B2/en
Application filed by 애플 인크. filed Critical 애플 인크.
Publication of KR20230043717A publication Critical patent/KR20230043717A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/005General purpose rendering architectures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • 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
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/06Ray-tracing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2200/00Indexing scheme for image data processing or generation, in general
    • G06T2200/28Indexing scheme for image data processing or generation, in general involving image processing hardware
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2210/00Indexing scheme for image generation or computer graphics
    • G06T2210/21Collision detection, intersection

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Graphics (AREA)
  • Image Generation (AREA)
  • Analysing Materials By The Use Of Radiation (AREA)

Abstract

그래픽 프로세서들에서의 광선 추적을 위한 프리미티브 교차 테스트에 관한 기법들이 개시된다. 일부 실시예들에서, 그래픽 프로세서는, 프리미티브의 제1 표현을 양자화하여 프리미티브의 감소된 정밀도의 인터벌 표현을 생성하도록 하는 것, 광선의 제1 표현을 양자화하여 광선의 감소된 정밀도의 인터벌 표현을 생성하도록 하는 것, 및 인터벌 연산을 사용하여, 프리미티브의 인터벌 표현의 좌표들 및 광선의 인터벌 표현의 좌표들에 기초하여 초기 교차 결과를 결정하도록 하는 것을 포함하는 교차 테스트를 수행하도록 구성된 광선 교차 회로부를 포함한다. 초기 교차 결과는 초기 교차 결과에 의해 표시된 누락부가 프리미티브의 제1 표현 및 광선의 제1 표현에 대한 히트가 아닌 것으로 보장되도록 하는 보수적 결과일 수 있다. 개시된 기법들은 전통적인 기법들에 비해 성능을 개선시키거나, 전력 소비를 감소시키거나, 둘 모두를 할 수 있다.

Description

양자화 및 인터벌 표현들을 갖는 광선 교차 테스트{RAY INTERSECTION TESTING WITH QUANTIZATION AND INTERVAL REPRESENTATIONS}
본 출원은 2021년 9월 24일자로 출원된 미국 가특허 출원 제63/248,143호에 대한 우선권을 주장하며, 이는 전체적으로 본 명세서에 참고로 포함된다.
기술분야
본 개시내용은 대체적으로 그래픽 프로세서들에 관한 것으로, 더 구체적으로는, 광선 추적(ray tracing)을 위한 프리미티브 교차 테스트(primitive intersection testing)에 관한 것이다.
컴퓨터 그래픽에서, 광선 추적은 이미지 평면 내의 픽셀들로서 광의 경로를 추적하고 가상 객체들과의 대면 효과들을 시뮬레이션함으로써 이미지를 생성하기 위한 렌더링 기법이다. 광선 추적은 장면 내의 임의의 2개의 포인트들 사이의 3차원의 가시성의 해상도를 허용할 수 있는데, 이는 또한 그의 대부분의 계산 비용의 소스이다. 전형적인 광선 추적기는 광원들로부터보다는, 카메라로부터 시작하여 장면으로 전파되는 광 전파의 역방향으로 장면을 관통하는 광의 경로들을 샘플링한다(이는 때때로 "역방향 광선 추적"으로 지칭됨). 카메라로부터 시작하는 것은 카메라에 가시적인 광선들만을 추적하는 이점을 갖는다. 이 시스템은 래스터라이저(rasterizer)를 모델링할 수 있으며, 여기서 광선들은 단순히 제1 표면에서 정지하고 (프래그먼트 셰이더(fragment shader)와 유사한) 셰이더를 호출하여 컬러를 컴퓨팅한다. 보다 대체적으로, 이차 효과들 - 장면 요소들 사이의 조명의 교환, 예컨대 확산 상호 반사 및 투과 교환 - 이 또한 모델링된다. 표면 반사 특성들을 평가하는 셰이더들은 다른 표면들로부터의 입사 조명을 캡처하기 위해 추가 교차 질의들을 호출할 수 있다(예컨대, 새로운 광선들을 생성할 수 있음). 이러한 재귀적 프로세스는 많은 표현들을 갖지만, 통상적으로 경로 추적으로 지칭된다.
광선 추적을 구현하는 그래픽 프로세서들은 전형적으로, 전통적인 래스터화 시스템들에 비해 더 현실적인 장면들 및 조명 효과들을 제공한다. 그러나, 광선 추적은 전형적으로 계산적으로 고가이다. 광선 추적 기법들에 대한 개선들은 그래픽 장면들에서 현실성을 개선하고, 성능을 개선하고(예를 들어, 프레임당 더 많은 광선들의 추적, 더 복잡한 장면들에서의 추적, 또는 둘 모두를 허용함), 전력 소비를 감소시키고(배터리 구동 디바이스들에서 특히 중요할 수 있음) 등등을 할 수 있다.
광선 교차 질의들은 셰이더들에 의해, 전용 하드웨어에 의해, 또는 둘의 조합에 의해 수행될 수 있다. 상이한 유형들의 교차 질의들은 상이한 유형들의 정보를 제공할 수 있다. 예를 들어, "가장 가까운 히트" 질의는 광선을 따라 그리고 광선이 유효한 파라미터 인터벌 내에 가장 가까이에서 교차된 기하구조를 위치확인할 수 있다(이는 가장 일반적인 유형의 질의일 수 있음). "애니-히트(any-hit)" 질의는 광선을 따라 그리고 파라미터 인터벌 내에 임의의 교차된 기하구조가 있는지의 여부를 나타낼 수 있다. 이러한 유형의 질의는, 예를 들어, 장면 내의 포인트가 광에 대한 가시성을 갖는지 아니면 폐색되는지를 결정하기 위해, 셰도우 광선들에 대해 사용될 수 있다. 일단 교차된 기하구조가 결정되었다면, 그 기하구조는 교차들에 기초하여 셰이딩될 수 있고, 이어서, 예컨대, 반사 표면들로부터, 교차 테스트를 위한 더 많은 광선들을 생성할 수 있다.
모션 블러(motion blur)는, 기록되고 있는 이미지가 단일 노출의 기록 동안 변할 때 발생하는 현상이다. 예를 들어, 충분히 긴 노출 시간을 갖는 움직이는 화물 열차의 사진은, 움직이지 않는 객체들이 블러링되지 않는 반면 열차는 블러링되는 것을 보여줄 수 있다. 컴퓨터 그래픽 맥락에서, 그래픽 프로세서는 그래픽 데이터의 프레임에 대한 모션 블러 효과를 시뮬레이션할 수 있다. 이러한 맥락에서, 애니메이션화된 그래픽 프리미티브(예를 들어, 삼각형)는 가상 카메라의 개방 셔터 인터벌(본 명세서에서 모션 블러 인터벌로도 지칭됨) 동안 다수의 상이한 포지션들로 모델링될 수 있고, 따라서 블러링 효과를 야기하도록 프레임의 다수의 포지션들에서의 픽셀 값들에 영향을 미칠 수 있다.
각각의 광선은 전형적으로, 예를 들어, 모션 블러 인터벌 내에서 정밀한 타임 스탬프를 배정받는다. 광선 추적 및 모션 블러 둘 모두를 구현할 때, 광선/프리미티브 교차에 대한 테스트는 프로세서 자원들 및 전력 소비의 관점에서 비싸다.
도 1a는 일부 실시예들에 따른, 예시적인 그래픽 프로세싱 동작들의 개요를 예시하는 도면이다.
도 1b는 일부 실시예들에 따른, 예시적인 그래픽 유닛을 예시하는 블록도이다.
도 2a는 일부 실시예들에 따른, 예시적인 저정밀 테스트 회로부를 예시하는 블록도이다.
도 2b는 일부 실시예들에 따른, 예시적인 교차 테스트 기법을 예시하는 블록도이다.
도 3은 일부 실시예들에 따른, 초기 교차 테스트에서 사용되는 다양한 값들에 대한 예시적인 인터벌 표현들을 예시하는 도면이다.
도 4는 일부 실시예들에 따른, 모션 블러 인터벌 내의 보간된 프리미티브의 인터벌 표현을 생성하도록 구성된 예시적인 보간 회로부를 예시하는 도면이다.
도 5는 일부 실시예들에 따른, 전단 인자 인터벌들을 생성하도록 구성된 예시적인 전단 인자 회로부를 예시하는 블록도이다.
도 6은 일부 실시예들에 따른, 전단 인자 인터벌들을 사용하여 정점들을 변환하고 전단하도록 구성된 예시적인 회로부를 예시하는 도면이다.
도 7은 일부 실시예들에 따른, 초기 교차 테스트 결과를 생성하도록 구성된 예시적인 회로부를 예시하는 회로도이다.
도 8은 일부 실시예들에 따른, 수정된 인터벌 곱셈(interval product)을 생성하도록 구성된 예시적인 회로부를 예시하는 블록도이다.
도 9는 일부 실시예들에 따른, 예시적인 삼각형 쌍 및 순차적 쌍 프로세싱 회로부를 예시하는 도면이다.
도 10은 일부 실시예들에 따른, 양자화된 프리미티브 표현의 예시적인 경계들 및 결정적 히트(conclusive hit)에 대한 영역을 예시하는 도면이다.
도 11은 일부 실시예들에 따른, 히트 또는 비결정적 출력(inconclusive output)을 생성하도록 구성된 예시적인 테스트 회로부를 예시하는 도면이다.
도 12는 일부 실시예들에 따른, 초기 교차 테스트 결과를 생성하도록 구성된 예시적인 회로부를 예시하는 회로도이다.
도 13은 일부 실시예들에 따른, 미들-아웃(middle-out) 순서화를 포함하는 상이한 순서화들에 따른 예시적인 프리미티브 테스트 시퀀스들을 예시하는 도면이다.
도 14는 일부 실시예들에 따른, 예시적인 방법을 예시하는 흐름도이다.
도 15는 일부 실시예들에 따른, 다른 예시적인 방법을 예시하는 흐름도이다.
도 16은 일부 실시예들에 따른, 예시적인 컴퓨팅 디바이스를 예시하는 블록도이다.
도 17은 일부 실시예들에 따른, 개시된 시스템들 및 디바이스들의 예시적인 응용들을 예시하는 도면이다.
도 18은 일부 실시예들에 따른, 회로 설계 정보를 저장하는 예시적인 컴퓨터 판독가능 매체를 예시하는 블록도이다.
개시된 실시예들에서, 더 낮은 저정밀 하드웨어 삼점 테스트(triangle test)가 필터로서 먼저 수행되며, 더 낮은 저정밀 테스트가 잠재적 히트를 결정하는 경우, 더 높은 고정밀 삼점 테스트가 수행된다. 이러한 저정밀 테스트는 보수적(conservative)일 수 있다(예컨대, 그것은 거짓 히트들을 생성할 수는 있지만 거짓 누락부(miss)들을 생성해서는 안 됨). 2020년 12월 29일자로 출원되고 발명의 명칭이 "Primitive Testing for Ray Intersection at Multiple Precisions"인 미국 특허 출원 제17/136,542호는 전체적으로 본 명세서에 참고로 포함된다. '542 출원은 상이한 정밀도들의 테스트들을 갖는 예시적인 기법들 및 입력들의 양자화로 인한 잠재적 에러가, 결과들이 보수적임을 보장하기 위해, 감소된 정밀도의 테스트 전체에 걸쳐 추적될 수 있는 방법을 설명한다.
본 개시내용은 인터벌 연산(interval arithmetic)을 사용하여, 하나 이상의 입력들의 양자화를 사용하는 하드웨어 프리미티브 테스트에 대한 잠재적 양자화 에러들을 추적하고 경계를 형성한다. 일부 실시예들에서, 개시된 기법들은 유리하게는, '542 출원의 실시예들보다 더 타이트한 에러 경계들을 제공할 수 있다. 또한, 개시된 기법들은, 일부 구현예들에서, 감소된 회로 면적을 사용하여, 특정 정밀도로 프리미티브 테스트들을 수행할 수 있다.
또한, 하기에서 상세히 논의되는 개시된 실시예들은 모션 블러 인터벌 내의 주어진 광선 시간에 대한 보존적 교차 테스트를 위한 움직이는 삼각형을 표현하도록 보간된 공간 좌표 인터벌을 생성한다. 또한, 개시된 기법들은 움직이는 그리고 움직이지 않는 삼각형 쌍들을 위한 효율적인 인코딩 및 프로세싱 기법들을 제공한다.
또한, 개시된 기법들은, (예를 들어, "애니-히트" 광선들에 대해) 오리지널 정밀도로 교차 테스트를 수행하지 않으면서, 더 낮은 저정밀 교차 테스트를 사용하여 확정적 히트 결과들을 제공할 수 있다.
마지막으로, 가속도 데이터 구조에 대한 개시된 순회 순서화 기법들(예를 들어, 전방-후방(front-to-back) 또는 후방-전방(back-to-front) 대신 "미들-아웃" 순서화)은 소정 유형들의 광선들에 대한 순회들을 위해, 성능을 개선시키거나, 전력 소비를 감소시키거나, 둘 모두를 할 수 있다.
그래픽 프로세싱 개요
도 1a를 참조하면, 그래픽 데이터를 프로세싱하기 위한 예시적인 프로세싱 흐름(100)을 예시하는 흐름도가 도시된다. 일부 실시예들에서, 변환 및 조명 절차(110)는 정의된 광원 위치들, 반사율 등에 기초하여 애플리케이션으로부터 수신된 정점들에 대한 조명 정보를 프로세싱하는 것, 정점들을 다각형들(예컨대, 삼각형들)로 어셈블링하는 것, 및 3차원 공간 내의 포지션에 기초하여 다각형들을 정확한 크기 및 배향으로 변환하는 것을 수반할 수 있다. 클립 절차(115)는 가시성 영역 외부에 있는 다각형들 또는 정점들을 폐기하는 것을 수반할 수 있다. 래스터화 절차(120)는 각각의 다각형 내의 프래그먼트들을 정의하는 것 및 예를 들어 다각형의 정점들의 텍스처 좌표들에 기초하여 각각의 프래그먼트에 대한 초기 색상 값들을 배정하는 것을 수반할 수 있다. 프래그먼트들은 이들이 중첩되는 픽셀들에 대한 속성들을 특정할 수 있지만, 실제 픽셀 속성들은 (예를 들어, 프레임 버퍼에서) 다수의 프래그먼트들을 조합하는 것, 하나 이상의 프래그먼트들을 무시하는 것(예를 들어, 그들이 다른 객체들에 의해 커버되는 경우), 또는 둘 모두에 기초하여 결정될 수 있다. 셰이딩 절차(130)는 조명, 셰도우들, 범프 맵핑, 반투명도 등에 기초하여 픽셀 컴포넌트들을 변경하는 것을 수반할 수 있다. 셰이딩된 픽셀들은 프레임 버퍼(135)에서 어셈블링될 수 있다. 현대의 GPU들은 전형적으로 애플리케이션 개발자들에 의한 셰이딩 및 다른 프로세싱 절차들의 맞춤화를 허용하는 프로그래밍가능 셰이더들을 포함한다. 따라서, 다양한 실시예들에서, 도 1a의 예시적인 요소들은 다양한 순서들로 수행되거나, 병렬로 수행되거나, 또는 생략될 수 있다. 추가적인 프로세싱 절차들이 또한 구현될 수 있다.
이제, 도 1b를 참조하면, 일부 실시예들에 따라, 그래픽 유닛(150)을 예시하는 단순화된 블록도가 도시된다. 예시된 실시예에서, 그래픽 유닛(150)은 프로그래밍가능 셰이더(160), 정점 파이프(185), 프래그먼트 파이프(175), 텍스처 프로세싱 유닛(texture processing unit, TPU)(165), 이미지 기록 유닛(170), 및 메모리 인터페이스(180)를 포함한다. 일부 실시예들에서, 그래픽 유닛(150)은, 프로그래밍가능 셰이더(160)를 사용하여 정점 및 프래그먼트 데이터 둘 모두를 프로세싱하도록 구성되며, 이는 다수의 실행 파이프라인들 또는 인스턴스들을 사용하여 그래픽 데이터를 병렬로 프로세싱하도록 구성될 수 있다.
정점 파이프(185)는, 예시된 실시예에서, 정점 데이터를 프로세싱하도록 구성된 다양한 고정 기능 하드웨어를 포함할 수 있다. 정점 파이프(185)는 정점 프로세싱을 조정하기 위해 프로그래밍가능 셰이더(160)와 통신하도록 구성될 수 있다. 예시된 실시예에서, 정점 파이프(185)는 추가 프로세싱을 위해 프로세싱된 데이터를 프래그먼트 파이프(175) 또는 프로그래밍가능 셰이더(160)로 전송하도록 구성된다.
프래그먼트 파이프(175)는, 예시된 실시예에서, 픽셀 데이터를 프로세싱하도록 구성된 다양한 고정 기능 하드웨어를 포함할 수 있다. 프래그먼트 파이프(175)는 프래그먼트 프로세싱을 조정하기 위해 프로그래밍가능 셰이더(160)와 통신하도록 구성될 수 있다. 프래그먼트 파이프(175)는 정점 파이프(185) 또는 프로그래밍가능 셰이더(160)로부터의 다각형들에 대한 래스터화를 수행하여 프래그먼트 데이터를 생성하도록 구성될 수 있다. 정점 파이프(185) 및 프래그먼트 파이프(175)는 그래픽 데이터에 액세스하기 위해 메모리 인터페이스(180)에 결합될 수 있다(결합은 도시되지 않음).
프로그래밍가능 셰이더(160)는, 예시된 실시예에서, 정점 파이프(185)로부터 정점 데이터를 그리고 프래그먼트 파이프(175) 및 TPU(165)로부터 프래그먼트 데이터를 수신하도록 구성된다. 프로그래밍가능 셰이더(160)는 정점 데이터의 다양한 변환들 및 조정들을 포함할 수 있는 정점 프로세싱 태스크들을 정점 데이터에 대해 수행하도록 구성될 수 있다. 프로그래밍가능 셰이더(160)는, 예시된 실시예에서, 또한 예를 들어 텍스처링(texturing) 및 셰이딩과 같은 픽셀 데이터에 대한 프래그먼트 프로세싱 태스크들을 수행하도록 구성된다. 프로그래밍가능 셰이더(160)는 데이터를 병렬로 프로세싱하기 위한 다수의 실행 파이프라인들의 다수의 세트들을 포함할 수 있다.
일부 실시예들에서, 프로그래밍가능 셰이더는 하나 이상의 상이한 SIMD 그룹들을 병렬로 실행하도록 구성된 파이프라인들을 포함한다. 각각의 파이프라인은 주어진 클록 사이클에서 페치, 디코딩, 발행, 실행 등과 같은 동작들을 수행하도록 구성된 다양한 스테이지들을 포함할 수 있다. 프로세서 "파이프라인"의 개념은 잘 이해되고, 프로세서가 명령어들에 대해 수행하는 "작업"을 다수의 스테이지들로 분할하는 개념을 지칭한다. 일부 실시예들에서, 명령어 디코딩, 디스패치, 실행(즉, 성능), 및 회수는 상이한 파이프라인 스테이지들의 예들일 수 있다. 요소들/부분들의 다양한 순서화들을 사용하는 많은 상이한 파이프라인 아키텍처들이 가능하다. 다양한 파이프라인 스테이지들은 하나 이상의 프로세서 클록 사이클들 동안 명령어에 대해 그러한 단계들을 수행하고, 이어서, 추가 프로세싱을 위해 명령어 또는 명령어와 연관된 동작들을 다른 스테이지들에 전달한다.
"SIMD 그룹"이라는 용어는 그의 잘 이해되는 의미에 따라 해석되도록 의도되는데, 이는, 프로세싱 하드웨어가 상이한 스레드들에 대해 상이한 입력 데이터를 사용하여 동일한 명령어를 병렬로 프로세싱하는 스레드들의 세트를 포함한다. 다양한 유형들의 컴퓨터 프로세서들은 SIMD 명령어들을 실행하도록 구성된 파이프라인들의 세트들을 포함할 수 있다. 예를 들어, 그래픽 프로세서들은 종종, SIMD 방식으로 관련 스레드들의 세트에 대한 명령어들을 실행하도록 구성된 프로그래밍가능 셰이더 코어(shader core)들을 포함한다. SIMD 그룹에 대해 사용될 수 있는 이름들의 다른 예들은, 파면, 클리크(clique) 또는 워프(warp)를 포함한다. SIMD 그룹은 컴퓨터의 병렬 프로세싱 능력들에 기초하여 다수의 SIMD 그룹들로 해체될 수 있는 더 큰 스레드 그룹의 일부일 수 있다. 일부 실시예들에서, 각각의 스레드는, 그 스레드에 대한 피연산자들을 페치하고 스레드들의 세트에 대한 다른 파이프라인들과 병렬로 특정된 동작들을 수행하는 하드웨어 파이프라인에 배정된다. 프로세서들은 다수의 별개의 SIMD 그룹들이 또한 병렬로 실행될 수 있도록 많은 수의 파이프라인들을 가질 수 있다는 점에 주목한다. 일부 실시예들에서, 각각의 스레드는, 예컨대 레지스터 파일에 개인 피연산자 저장소를 갖는다. 따라서, 레지스터 파일로부터의 특정 레지스터의 판독은 SIMD 그룹 내의 각각의 스레드에 대한 레지스터의 버전을 제공할 수 있다.
일부 실시예들에서, 다수의 프로그래밍가능 셰이더 유닛들(160)이 GPU에 포함된다. 이러한 실시예들에서, 전역 제어 회로부는 작업을 GPU의 상이한 하위 부분들에 배정할 수 있으며, 이는 이어서, 작업을 셰이더 코어들에 배정하여 셰이더 파이프라인들에 의해 프로세싱되게 할 수 있다.
TPU(165)는, 예시된 실시예에서, 프로그래밍가능 셰이더(160)로부터의 프래그먼트 프로세싱 태스크들을 스케줄링하도록 구성된다. 일부 실시예들에서, TPU(165)는 텍스처 데이터를 프리페치하도록, 그리고 (예를 들어, 메모리 인터페이스(180)를 통해) 프로그래밍가능 셰이더(160)에 의한 추가 프로세싱을 위해 초기 색상들을 프래그먼트들에 배정하도록 구성된다. TPU(165)는, 예를 들어 정규화된 정수 포맷들 또는 부동 소수점 포맷들로 프래그먼트 컴포넌트들을 제공하도록 구성될 수 있다. 일부 실시예들에서, TPU(165)는 프로그래밍가능 셰이더(160) 내의 4개의 실행 파이프라인들의 그룹에 의해 프로세싱될 2x2 포맷인 4개의 그룹("프래그먼트 쿼드(fragment quad)")들로 프래그먼트들을 제공하도록 구성된다.
이미지 기록 유닛(Image write unit, IWU)(170)은, 일부 실시예들에서, 이미지의 프로세싱된 타일들을 저장하도록 구성되고, 렌더링된 이미지가 디스플레이를 위해 또는 저장을 위해 메모리에 전송되기 전에 그에 대한 동작들을 수행할 수 있다. 일부 실시예들에서, 그래픽 유닛(150)은 타일 기반 지연 렌더링(tile-based deferred rendering, TBDR)을 수행하도록 구성된다. 타일 기반 렌더링에서, 스크린 공간의 상이한 부분들(예컨대, 픽셀들의 정사각형들 또는 직사각형들)은 별개로 프로세싱될 수 있다. 메모리 인터페이스(180)는, 다양한 실시예들에서 다양한 메모리 계층들 중 하나 이상과의 통신들을 용이하게 할 수 있다.
예시된 예에서, 그래픽 유닛(150)은 아래에서 상세히 설명되는 바와 같이, 다양한 광선 교차 동작들을 수행하도록 구성된 하드웨어를 포함할 수 있는 광선 교차 가속기(ray intersection accelerator, RIA)(190)를 포함한다.
인터벌 기반 교차 테스트의 개요
도 2a는 일부 실시예들에 따른, 예시적인 양자화 회로부 및 저정밀 교차 테스트 회로부를 예시하는 블록도이다. 예시된 실시예에서, 그래픽 프로세서는 테스트 회로부(220)를 포함한다.
일부 실시예들에서, 양자화 회로부는 광선 데이터를 양자화하도록 그리고 양자화된 값들의 인터벌 표현들을 생성하도록 구성된다. 다양한 실시예들에서, 생성된 인터벌들의 상한 및 하한은 입력 표현보다 더 낮은 저정밀도를 사용하여 표현되는 한편, 인터벌은 입력 정밀도의 초기 값을 커버하도록 보장된다. 프리미티브 데이터는 또한, (예를 들어, 가속도 데이터 구조의) 양자화된 인터벌 포맷으로 저장될 수 있다는 점에 주목한다.
인터벌 연산 기반 저정밀 테스트 회로부(220)는, 예시된 실시예에서, 인터벌 표현들에 대해 인터벌 연산을 수행함으로써 보수적 교차 결과를 생성하도록 구성된다. 보수적 교차 결과는, 회로부(220)에 의해 시그널링된 누락부가 (예를 들어, 양자화 전의 입력 정밀도로 값들에 대해 동작하는) 더 높은 고정밀 교차 테스트에 대해 히트를 초래하지 않을 것이라는 것을 보장할 수 있다. 이러한 실시예들에서, 회로부(220)로부터의 양의 출력은 잠재적 히트를 나타낸다.
다양한 실시예들에서, 더 낮은 저정밀 초기 교차 테스트들을 수행하는 것은 유리하게도, 전통적인 기법들에 비해 성능을 개선시키거나, 전력 소비를 감소시키거나, 둘 모두를 할 수 있다. 특히, 초기 테스트에 의해 생성된 누락부들 또는 확정적 히트들은 주어진 광선 및 프리미티브에 대해 더 높은 고정밀 테스트를 수행할 필요성을 회피할 수 있다. 따라서, 테스트의 정확도를 개선하는 것(예를 들어, 에러 경계들을 타이트(tight)하게 하는 것에 의함), 및 초기 테스트 자체의 성능 또는 전력 소비를 개선하는 것 둘 모두는 기술적 이점들을 가질 수 있다.
도 2b는 일부 실시예들에 따른, 전체의 예시적인 교차 테스트 기법을 예시하는 흐름도이다. 예시된 실시예에서, 요소(210)는 광선 방향을 더 낮은 저정밀 부동 소수점 인터벌 표현으로 변환한다. 요소(230)는 양자화 프레임 변환(하기에서 상세히 논의되는 바와 같이, 정점들의 양자화에 사용됨)에 기초하여 전단 인자들을 결정하고, 요소(244)는 전단 인자들을 고정 소수점 인터벌 표현으로 변환한다. 요소(242)는, 양자화 프레임 변환에 또한 기초하여, 광선 기점(ray origin)에 대한 고정 소수점 인터벌 표현을 생성한다. 요소(246)는 광선 시간의 고정 소수점 인터벌 표현을 생성한다. 모션 블러 프로세싱을 위해, 요소(250)는 광선 시간에 기초하여 양자화된 삼각형 정점들을 시간적으로 보간한다(이러한 요소는 모션 블러 동작들을 수행하지 않을 때 양자화된 삼각형 정점들을 바로 통과시킬 수 있거나 또는 생략될 수 있음). 요소(260)는 전단 인자들 및 광선 기점에 따라 정점들을 변환하고, 요소(270)는 누락부 또는 잠재적 히트가 있는지의 여부를 결정하기 위해 에지 수학식들을 평가한다. 도 2b의 다양한 요소들은 하기에서 더 상세히 설명된다. 도 2b의 특정 동작들은 예시의 목적들을 위해 포함되며, 본 개시내용의 범주를 제한하고자 하는 것은 아니다. 그러나, 일부 실시예들에서, 개시된 동작들은 유리하게는, 합리적인 회로 면적 및 전력 소비를 사용하여 타이트한 인터벌들을 제공할 수 있다.
교차 테스트 값들의 예시적인 양자화된 인터벌 표현들
도 3은 일부 실시예들에 따른, 초기 교차 테스트에서 사용되는 다양한 값들에 대한 예시적인 인터벌 표현들을 예시하는 도면이다. 예시된 예에서, 정점 포지션들, 광선 기점, 방향, 및 시간, 전단 인자들, 및 보간된 삼각형 정점들에 대해 인터벌들이 생성된다. 이러한 특정 인터벌 값들은 예시의 목적들을 위해 논의되지만, 본 개시내용의 범주를 제한하고자 하는 것은 아니라는 점에 주목한다. 다른 실시예들에서, 초기 교차 결과를 결정하는 데 사용되는 다양한 값들 중 임의의 값이 인터벌들을 사용하여 표현될 수 있다.
예시된 실시예에서, 각각의 양자화된 정점 포지션에 대해(예컨대, 삼각형의 3개의 정점들 각각에 대해), X 치수, Y 치수, 및 Z 치수에 대한 3개의 각자의 인터벌들이 결정된다. 광선 기점 및 광선 방향에 대해 유사한 인터벌들이 결정된다. 모션 블러를 지원하는 일부 실시예들에서, 광선 시간에 대한 상한 및 하한이 또한 결정된다.
광선-삼각형 교차 테스트의 일부로서 전단을 사용하는 일부 실시예들에서, 광선에 대한 비-우세 좌표 방향들에서의 2개의 전단 인자들에 대한 상한 및 하한이 결정된다.
모션 블러를 지원하는 일부 실시예들에서, 그래픽 프로세서는, 정점당, 모션 블러 인터벌 내의 광선 시간에 대응하는 보간된 삼각형에 대한 X, Y, 및 Z 인터벌들을 결정한다. 도 4는 하기에서 상세히 논의되고, 보간된 삼각형의 인터벌 표현을 생성하기 위한 예시적인 기법들을 제공한다. 대체적으로, 다양한 특정 인터벌들을 결정하기 위한 더 상세한 기법들이 하기에서 상세히 논의된다.
하기에서 상세히 논의되는 바와 같이, 데이터 구조들은 삼각형들, 움직이는 삼각형들, 삼각형 쌍들, 움직이는 삼각형 쌍들, 또는 이들의 일부 조합을 표현할 수 있다. 일부 실시예들에서, 삼각형은 3개의 정점들을 사용하여 표현되고, 움직이는 삼각형은 6개의 정점들을 사용하여 표현되고, 삼각형 쌍은 4개의 정점들을 사용하여 표현되고, 움직이는 삼각형 쌍은 8개의 정점들을 사용하여 표현된다.
일부 실시예들에서, 양자화된 삼각형 좌표들은 제한된 고정 소수점 정밀도의 부호화되지 않은 정수 값들로서 저장되고, 0으로 라운딩된다(rounded). 이러한 좌표들은, 예컨대 '542 출원에서 논의된 바와 같이, 가속도 데이터 구조(acceleration data structure, ADS)에 기록된 국소 좌표계에 대응할 수 있다. 양자화된 값들은 N-비트 값들일 수 있다. 일부 실시예에서, 각각의 좌표 값은 소정 크기의 필드 내에서 패킹을 용이하게 하는 다수의 비트들을 사용한다. 하나의 예로서, 단일 삼각형에 대한 양자화된 좌표 인터벌 값당 7-비트 값들이 2개의 64-비트 필드들(3개의 정점들에 대한 각각의 정점에 대한 X 상한/하한, Y 상한/하한, 및 Z 상한/하한 7-비트 값들 = 126 비트들)에 패킹될 수 있다. 다른 실시예들에서, 다양한 적절한 수의 비트들을 사용한 고정 소수점 인코딩들이 활용될 수 있다. 일부 실시예들에서, 부호화되지 않은 값들은, 값들이 부호화된 정수들이 되는 새로운 좌표 프레임으로 변환된다. 일부 상황들에서, 일정 인터벌의 하나의 경계만이 저장될 수 있고 다른 경계는 암시될 수 있다는 점에 주목한다. 이는 프로세서의 소정 부분들에 대한 저장 요건들을 감소시킬 수 있다.
이러한 맥락에서, p가 삼각형 좌표에 대한 양자화된 값인 경우, 국소 양자화된 좌표 공간에서 이러한 좌표를 표현하는 인터벌은
Figure pat00001
이며, 여기서
Figure pat00002
는 일부 실시예들에서, 양자화된 포맷의 하나의 최소 정밀도 단위(unit of least precision, ULP)를 표현한다. 양자화 이전의 오리지널 좌표 값은 이러한 인터벌 내에 놓이도록 보장된다. N-비트 고정 소수점 표현의 경우,
Figure pat00003
이다. 대체적으로, 본 명세서에서 논의되는 금지된 수량들은 인터벌들을 지칭한다.
따라서, 주어진 움직이지 않는 삼각형은 9개의 값들(각각의 정점에 대해 3개의 좌표 하한들을 갖는 3개의 정점들, 이때 상한이 하한보다 내재적으로 하나의 ULP만큼 더 큼)을 사용하여 인코딩될 수 있다.
일부 실시예들에서, 움직이는 삼각형들은 2개(이상)의 좌표 세트들, 예컨대 시간 t = 0에서의 포지션 p(0) 및 시간 t = 1에서의 포지션 p(1)로서 저장된다. 이는 정규화된 시간적 인터벌 [0,1] 내의 선형 모션의 인터벌을 정의할 수 있다. 서브-인터벌들 동안의 다수의 선형 움직임들이 또한, 더 큰 모션 블러 인터벌에 걸쳐 비선형 움직임을 인코딩하는 데 사용될 수 있다는 점에 주목한다. 이러한 경우, 움직이는 삼각형은 2개 초과의 좌표 세트들을 포함할 수 있다. 시간 t에서의 움직이는 삼각형 좌표는 인터벌
Figure pat00004
를 사용하여 표현될 수 있다.
일부 실시예들에서, 저정밀 교차 테스트의 일부로서, 광선 시간은 더 낮은 저정밀 인터벌
Figure pat00005
으로 양자화되며, 여기서 t는 서브-인터벌 해상도의 M개의 비트들로 인코딩된다(예컨대, 2M에서 내재적으로 1.0을 설정함). M은 삼각형의 공간 좌표들을 표현하는 데 사용되는 비트들의 수 N(또는 광선 공간 좌표들을 표현하는 데 사용되는 비트들의 수)에 대응할 수 있거나 또는 대응하지 않을 수 있다. 다른 양자화된 인터벌들과 마찬가지로, 오리지널 고정밀 값은 저정밀 인터벌 내에서 발견되도록 보장된다. 일부 실시예들에서, 시간은 x, y 및 z와 같은 다른 좌표들과는 독립적인 제4 좌표 축이다.
예시적인 인터벌 기반 모션 블러 프로세싱
일부 실시예들에서, 인터벌 보간 회로부는 광선의 양자화된 시간 인터벌
Figure pat00006
에 걸쳐 움직이는 삼각형 좌표들에 대한 보수적 공간 인터벌들을 재구성하도록 구성된다. 도 4는 일부 실시예들에 따른, 모션 블러 인터벌 내의 보간된 프리미티브의 인터벌 표현을 생성하도록 구성된 예시적인 보간 회로부를 예시하는 블록도이다. 회로부(410)는 도 2b의 요소(250)를 참조하여 상기에서 논의된 동작들을 수행할 수 있다.
예시된 실시예에서, 보간 회로부(410)는 광선 시간의 인터벌 표현 및 움직이는 삼각형의 인터벌 표현(예컨대, 6개의 정점들 각각에 대한 x, y, 및 z 인터벌들)을 수신하도록, 그리고 보간된 삼각형의 인터벌 표현(예컨대, 3개의 정점들 각각에 대한 x, y 및 z 인터벌들)을 생성하도록 구성된다.
하나의 예로서, 회로부(410)는 보간된 공간 좌표 인터벌을 하기로서 결정할 수 있다:
Figure pat00007
표기 p 0 = p(0) 및 p 1 = p(1)을 사용하여, 회로부(410)는 임의의
Figure pat00008
에 대한 양자화된 시간 인터벌
Figure pat00009
를 커버하도록 보장되는 보간된 포지션 좌표 인터벌
Figure pat00010
을 하기와 같이 결정할 수 있다:
Figure pat00011
여기서
Figure pat00012
이러한 수학식은 다양한 실시예들에서, 합리적인 성능 및 회로 면적을 갖는 양호한 피팅을 제공할 수 있다. 또한, 이러한 수학식에 의해 제공되는 인터벌은 보수적이라는 것이 결정되었다.
일부 실시예들에서, 회로부(410)는 이러한 수학식에 따라
Figure pat00013
인터벌을 결정하도록 구성된다. 다른 실시예들에서, 보수적인 보간된 삼각형 인터벌들을 결정하기 위해 컴퓨터 회로부에 의해 다른 수학식들이 구현될 수 있고; 개시된 수학식들은 예시의 목적들을 위해 포함되지만, 본 개시내용의 범주를 제한하고자 하는 것은 아니라는 점에 주목한다.
다양한 실시예들에서, 보간된 삼각형 인터벌은 적어도 모션 블러 동작 모드들에서 초기 저정밀 교차 테스트를 사용하여 테스트될 수 있다. 따라서, 하기에서 논의되는 다양한 프리미티브 입력들은, 예컨대 모션 블러가 활용되고 있는지의 여부에 따라, 전통적인 삼각형에 대한 것일 수 있거나 또는 보간된 삼각형에 대한 것일 수 있다. 또한, 본 명세서에서 논의된 다양한 기법들이 인터벌 연산을 사용하지만; 모션 블러에 대한 개시된 보간된 삼각형 기법들은 다른 양자화된 표현들 및 기법들, 예컨대 '542 출원의 기법들과도 함께 활용될 수 있다.
예시적인 전단 인자 결정
'542 출원에서 논의된 바와 같이, 전단 기법들은 교차 테스트를 구현하는 데 사용될 수 있다. 하기의 논의에서, 다음의 명명 규칙이 활용된다:
P 광선 기점, 부동 소수점 객체 공간
p 광선 기점, 고정 소수점 양자화 공간
Figure pat00014
광선 방향, 부동 소수점 객체 공간
v v 삼각형 정점 좌표들, 고정 소수점 양자화 공간
일부 구현예들에서, 2D 전단된 공간으로의 변환이 하기에 의해 주어진다:
Figure pat00015
고정 소수점 연산에 의해 이러한 계산들을 수행하기 위해, 디바이스는 객체 공간 광선 수량들 PD를 양자화 공간 pd로 하기와 같이 변환할 수 있다:
Figure pat00016
추가로 진행하기 전에, 디바이스는 스케일링된 광선 방향의 어느 축이 최대 크기를 갖는지를 확립할 수 있고, 최장 축이 제3 공간("z") 내에 있도록 축 명칭들을 회전시킬 수 있다. 또한, 이러한 방향 성분이 음(negative)인 경우, 디바이스는 핸디드니스(handedness)를 보존하기 위해 다른 2개의 축들을 교환할 수 있다. 하기의 논의의 경우, 이러한 재명명이 모든 좌표 수량들에 적용되었다고 가정한다.
다시 수학식 1로 치환하고 단순화하면, 하기와 같다:
Figure pat00017
개시된 인터벌 기법들의 맥락에서, 수학식 4에 표현된 다양한 값들은 상기에서 논의된 바와 같이, 인터벌 표현들이다. 일단 2D 전단 공간 내에 있다면, 광선 포지션은 이러한 좌표 프레임의 원점으로 감소하고, 그의 방향은 z 축과 정렬되며, 여기서 디바이스는 하기에 따라, 3개의 전단된 좌표들
Figure pat00018
에 의해 표현되는 2D 삼각형의 3개의 지향된 에지들에 대해 테스트할 수 있다:
Figure pat00019
u, v, w의 모두가 동일한 부호를 갖는 경우, 삼각형은 원점을 커버하고, 광선은 수치 정밀도(numerical precision) 이내까지 삼각형과 교차한다.
도 5는 일부 실시예들에 따른, 전단 인자 인터벌들을 생성하도록 구성된 예시적인 전단 인자 회로부를 예시하는 블록도이다. 예시된 실시예에서, (저정밀 테스트 회로부(220)에 포함될 수 있는) 전단 인자 회로부는 하향 변환 회로들(510A 내지 510C), 감산 회로들(520A, 520B), 역수 회로(reciprocal circuit)(530), 인터벌 곱셈 및 스케일 조정 회로들(540A, 540B), 및 부동 소수점-고정 소수점 인터벌 변환 회로들(550A, 550B)을 포함한다. 일부 실시예들에서, 도 5의 회로부는 도 2b의 요소(230)의 기능을 구현한다.
하향 변환 회로들(510)은, 예시된 실시예에서, x, y 및 z 방향들을 감소된 정밀도의 부동 소수점 인터벌 표현으로 변환하도록 (회전 후, 최장 축이 Z 방향이 되도록) 구성된다. 일부 실시예들에서, 하향 변환은 인터벌 하한을 생성하기 위해 음의 무한대로 라운딩하고(round toward negative infinity, RTNI), 인터벌 상한을 생성하기 위해 양의 무한대로 라운딩한다(round toward positive infinity, RTPI).
감산 회로들(520)은, 예시된 실시예에서, 각각, z 스케일 값으로부터 x 및 y 스케일 값들을 감산하여, 부호화되지 않은 정수 표현으로 Sz/Sx 및 Sz/Sy에 대한 부호화되지 않은 나눗셈 결과들을 생성하도록 구성된다. 일부 실시예들에서, 스케일 값들은 지수들의 감산이 나눗셈에 대응하도록 하는 2의 제곱들이다. 이러한 스케일 인자들은 프리미티브에 대한 양자화 프레임에 기초하여 결정될 수 있다. 대체적으로, 양자화된 값들의 세트는 그 값들에 대한 파라미터들을 정의하는 "양자화 프레임"을 공유할 수 있다. 일부 실시예들에서, 양자화된 값들은 공통 원점 및 스케일 인자에 대해 고정 소수점 오프셋들로서 표현된다. 따라서, 양자화 프레임은 (예컨대, x, y 및 z 좌표들에서의) 원점 및 (예컨대, z, y 및 z 치수들 각각에 대한 2의 제곱 스케일 인자들로서) 스케일 인자들을 특정할 수 있다. 본 명세서에서 논의되는 양자화된 프리미티브 인터벌들은 양자화 프레임의 맥락에서 해석되는 고정 소수점 좌표들을 사용하여 표현될 수 있다. 회로들(520)의 출력들은 도시된 예에서 인터벌들이 아니라는 점에 주목한다.
역수 회로(530)는, 예시된 실시예에서, 하향 변환된 z-방향 값의 역수를 생성하도록 구성된다.
인터벌 곱셈 회로들 및 스케일 조정 회로들(540)은, 예시된 실시예에서, 그들의 입력들에 대해 인터벌 곱셈 동작을 수행하여 감소된 정밀도의 부동 소수점 인터벌 포맷으로 출력들을 생성하도록 구성된다. 일부 실시예들에서, 회로들(540)은 그들의 출력들을 범위 [-1, 1]로 클램핑하도록 구성된다. 일부 실시예들에서, 회로들(540)은 또한, 지수 조정을 사용하여 2의 제곱만큼 곱함으로써 회로들(520)로부터의 스케일링을 적용한다.
부동 소수점-고정 소수점 인터벌 변환 회로들(550)은, 예시된 실시예에서, 감소된 정밀도의 부동 소수점 인터벌 표현들을 DxSz/DzSx 및 DySz/DzSy 전단 인자들(이들은 하기에서 논의되는 도 6의 회로부에 대한 입력임)에 대한 고정 소수점 인터벌 표현들로 변환하도록 구성된다.
도 6은 일부 실시예들에 따른, 전단 인자 인터벌들을 사용하여 정점들을 변환하고 전단하도록 구성된 예시적인 회로부를 예시하는 도면이다. 예를 들어, 도 6은 인터벌 연산을 사용하여, 상기의 수학식(4)의 동작들을 구현할 수 있다. 도 6은 도 2b의 요소(260)를 참조하여 상기에서 논의된 동작들을 구현할 수 있다. 예시된 실시예에서, 회로부는 인터벌 형태로 정점 및 광선 포지션 데이터를 수신하고, 인터벌 감산 및 곱셈 동작들을 수행하여, 도 5의 회로부에 의해 생성된 전단 인자 인터벌들을 사용하여 변환되고 전단된 정점들을 생성하도록 구성된다. 일부 실시예들에서, 도 6의 출력들 각각은 인터벌이며, 도 7에서, 그 하한은 마이너스 부호를 사용하여 표현될 수 있고(예컨대, ay-), 그 상한은 플러스 부호를 사용하여 표현될 수 있다(예컨대, ay+).
도 7은 일부 실시예들에 따른, 초기, 감소된 정밀도의 교차 테스트를 수행하도록 구성된 예시적인 회로부를 예시하는 블록도이다. 일부 실시예들에서, 도 7의 회로부는 도 2b의 요소(270)의 기능을 구현한다. 예를 들어, 도 7은 도 6의 출력들에 기초하여, 교차 결과를 생성하기 위해 u, v, w에 대해 상기의 수학식들에 대응하는 동작들을 수행할 수 있다. 도 7의 회로부는 그 수학식들에 대해 몇몇 차이들을 갖는다는 점에 주목한다. 첫째, 이러한 회로부는 감산 대신 비교(예컨대,
Figure pat00020
대신
Figure pat00021
Figure pat00022
)를 수행하는데, 그 이유는 부호가 필요할 뿐이기 때문이다. 둘째, 도 7의 회로부는 예시된 실시예에서, 보수적 테스트(예컨대, 에지 인터벌의 "외부" 부분만을 고려함)를 제공하기 위해, 곱셈들을 2회 수행하지만, 회로부는 "출력"되는 방향을 알지 못하는데, 그 이유는 그것이 삼각형의 시계방향 또는 반시계방향 면을 고려하고 있을 수 있기 때문이다. 회로들(710)은 수정된 인터벌 곱셈을 생성하도록 구성되고, 도 8을 참조하여 하기에서 상세히 논의된다.
도 7의 도시된 AND 및 OR 로직은 감소된 정밀도의 테스트가 결정적 누락부를 제공하는지의 여부를 나타내는 결과를 제공한다. 도시된 바와 같이, 6개의 양면 에지 테스트들은 12개의 곱셈기들 및 6개의 비교기들 - 모두가 고정 소수점임 - 을 사용할 수 있다. 다양한 회로부가 조합되거나 병합될 수 있는데, 예를 들어 가산기들 및 감산기들이 두 동작들 모두를 병렬로 수행하는 단일 컴포넌트에 의해 구현될 수 있고, 곱셈기들 및 비교기들이 단일 ab<=cd 동작을 구현하도록 병합될 수 있다는 점에 주목한다.
상기에서 논의된 바와 같이, 프로세서는 미결정적 결과(잠재적 히트)가 있는 경우에 (예컨대, 오리지널 부동 소수점 표현을 사용하여) 더 높은 고정밀 교차 테스트를 수행할 수 있다.
예시적인 수정된 인터벌 곱셈
보통, 부호가 있는 인터벌 곱셈은 4개의 곱셈기들을 요구하고, 하기와 같이 정의된다:
Figure pat00023
. 일부 실시예들에서, 인터벌 곱셈은 2개의 곱셈기들을 사용하여 구현된다. 인터벌 곱셈들의 합(interval sum-of-products)의 부호를 완전히 해결하기 위해, 각각의 인터벌 곱셈에 대한 두 종점들 모두의 부호를 정확하게 해결할 필요가 있다. 이는, 인터벌 곱셈에 대한 인터벌 입력들 둘 모두가 기점에 걸쳐 있을 때를 제외하면, 인터벌 곱셈당 2개의 곱셈기들만으로 행해질 수 있다. 이러한 예에서, 하드웨어는 예외를 발생시킬 수 있고, 교차 테스트는 잠재적 히트를 기록할 수 있다. 경험적 데이터는, 이것이 전형적인 작업부하들 하에서는 드문 것일 수 있는 예외적인 경우임을 보여준다. 코드 목록 1은 2개의 하드웨어 곱셈기들만을 사용하여 수정된 부호가 있는 인터벌 곱셈을 구현한다.
// Begin Code Listing 1: Modified Signed Interval Product
template <typename T>
struct Interval {
T lower, upper;
inline Interval (const T& l, const T& u) : lower(l), upper(u) {}
};
// T is assumed to be a signed integer (int8_t, int16_t, int32_t, int64_t)
// Exception is raised in the case where four multipliers are needed to resolve
// the sign of both end points of the interval - in all other cases signs are
// fully resolved.
template <typename T>
Interval<T> intervalProduct (Interval<T> a, Interval<T> b, bool& exception) {
uint8_t bit0_AB = a.upper >= 0;
uint8_t bit1_AB = a.lower >= 0;
uint8_t bit2_AB = b.upper >= 0;
uint8_t bit3_AB = b.lower >= 0;
uint8_t code_AB = (bit3_AB << 3) | (bit2_AB << 2) | (bit1_AB << 1) | bit0_AB;
Interval<T> p = { 0, 0 };
switch (code_AB) {
case 0xf: p.upper = a.upper * b.upper; p.lower = a.lower * b.lower; break;
case 0xd: p.upper = a.upper * b.upper; p.lower = a.lower * b.upper; break;
case 0xc: p.upper = a.upper * b.lower; p.lower = a.lower * b.upper; break;
case 0x7: p.upper = a.upper * b.upper; p.lower = a.upper * b.lower; break;
case 0x5:
p.upper = std::numeric_limits<T>::max();
p.lower = std::numeric_limits<T>::lowest();
exception = true;
break; // failure case - too close to call, need 4 multipliers
case 0x4: p.upper = a.lower * b.lower; p.lower = a.lower * b.upper; break;
case 0x3: p.upper = a.lower * b.upper; p.lower = a.upper * b.lower; break;
case 0x1: p.upper = a.lower * b.lower; p.lower = a.upper * b.lower; break;
case 0x0: p.upper = a.lower * b.lower; p.lower = a.upper * b.upper; break;
}
return p;
}
도 8은 일부 실시예들에 따른, 수정된 부호가 있는 인터벌 곱셈을 구현하도록 구성된 회로부(810)의 하나의 예를 도시한다. 일부 실시예들에서, 도 8의 회로부는 도 7의 각자의 요소들(710)에 포함된다. 이러한 실시예에서, 라우팅 회로부(810)는, 예컨대 코드 목록 1에서 설정된 바와 같이, 입력들의 4개의 부호들에 의해, 피연산자들을 2개의 곱셈기들로 라우팅하도록 구성된다. 회로부(810)는 또한, 이러한 예에서, 예외 조건을 검출하도록 구성된다.
삼각형 쌍들에 대한 예시적인 인코딩 및 프로세싱 기법들
도 9는 일부 실시예들에 따른, 예시적인 삼각형 쌍 및 순차적 쌍 프로세싱 회로부를 예시하는 도면이다. 도시된 바와 같이, 삼각형 쌍(910)은 2개의 정점들(예시된 예에서, 정점 1 및 정점 2)을 공유하는 2개의 삼각형들의 세트이다. 따라서, 2개의 삼각형들은 4개의 정점에 의해 정의될 수 있다. 삼각형 쌍들이 다양한 모델들에서 보편적이라는 점을 고려하면, 일부 실시예들에서, 프로세서는 저장 요건들을 감소시킬 수 있는 4개의 정점들을 갖는 삼각형 쌍 데이터 구조를 사용하여 삼각형들을 저장하도록 구성된다.
일부 실시예들에서, 프로세서는, 삼각형 쌍에 대해 하나 이상의 동작들을 순차적으로 수행하도록 - 예컨대 한 쌍 내의 제2 삼각형을 프로세싱하기 전에 한 쌍 내의 하나의 삼각형을 프로세싱함 - 구성된 순차적 쌍 프로세싱 회로부(920)를 포함한다. 동작은 하나의 예로서, 초기 교차 결과일 수 있지만, 다른 회로부는 유사한 순차적 기법들을 사용할 수 있다. 이는 동일한 삼각형 쌍 구조가 모든 삼각형들에 사용되는 구현예에서 효율적인 프로세싱을 제공할 수 있지만, 일부 구조들은 단지 단일 삼각형에 대한 데이터만을 가질 수 있다. 이러한 실시예들에서, 순차적 쌍 프로세싱 회로부(920)는, 데이터 구조가, 단지 하나의 삼각형만이 인코딩됨을 나타내는 경우, 한 쌍 내의 제2 삼각형에 대한 동작들을 스킵할 수 있다.
더 낮은 저정밀 교차 테스트를 사용한 예시적인 확정적 히트 검출
일부 실시예들에서, 양자화된 입력들에 대해 동작하는 교차 테스트 회로부는 광선에 대응하는 라인이 프리미티브와 교차하는지의 여부에 관한 확정적 정보를 여전히 제공할 수 있는데, 이는 소정 유형들의 광선들에 유용할 수 있다. 따라서, 도 7의 예를 다시 참조하면, 수정된 비교 회로부가 (도 7의 회로부에 추가로 또는 그 대신에) 구현되어, 결정적 히트를 나타내거나 또는 히트가 발생했는지의 여부가 미결정적이라는 결과를 제공할 수 있다.
도 10은 2차원 삼각형 프리미티브(예컨대, 사후-전단)의 양자화된 표현에 의해 둘러싸인 예시적인 영역들을 예시하는 도면이다. 예시된 예에서, 에지들(1010)은, 예컨대 오리지널 정밀도에 따라 표현되는 경우, 정밀한 에지를 보여준다. 외부 경계들(1020) 및 내부 경계들(1030)은, 예컨대 인터벌 표현을 사용하여, 양자화된 표현의 경계들을 보여준다.
도시된 바와 같이, 경계들(1020) 외부의 영역에 있는 광선은, 예컨대 도 7의 회로부에 의해 검출가능한 바와 같이, 결정적 누락부이다. 경계들(1020, 1030) 사이의 영역에 있는 광선은 미결정적이다(예를 들어, 이는 삼각형 에지들이 이러한 영역 내의 어디에 있는지가 정확하게 알려져 있지 않기 때문임). 이러한 영역에 있는 광선들은 더 높은 고정밀 테스트를 요구할 수 있다.
도시된 바와 같이, 경계(1030) 내의 영역에 있는 광선은 그 광선에 대응하는 라인에 대한 결정적 히트이다. 이러한 테스트에 의해 검출된 교차는, 예컨대 양자화로 인해, 히트가 어디에서 발생했는지를 정확하게 나타내지 않을 수 있다는 점에 주목한다. 또한, 이러한 테스트에 의해 검출된 교차는, 예컨대 광선이 유효한 인터벌의 양자화 동안, 광선에 대응하는 라인 상에서의 히트만을 나타낼 수 있다.
그러나, 일부 실시예들에서, 상기에서 논의된 한계들이 있음에도, 경계(1030) 내의 영역에서 확정적 히트를 결정하는 것은 유용할 수 있다.
도 11은 히트가 있는지의 여부, 또는 히트가 있는지의 여부가 미결정적인 경우를 나타내도록 구성된 예시적인 저정밀 테스트 회로부(1120)를 도시하는 블록도이다. 하기에서 상세히 논의되는 도 12는 그러한 회로부의 하나의 상세한 예를 제공한다. 회로부(1120)는 또한, 누락부가 있는지의 여부, 또는 누락부가 있는지의 여부가 미결정적인 경우, 예컨대 도 7 및 도 12의 회로부를 조합하는 경우를 나타내는 출력을 제공할 수 있다는 점에 주목한다.
일부 실시예들에서, 프로세서는 회로부(1120)의 출력이 확정적 히트를 나타내는 일부 시나리오들에서 더 높은 고정밀 교차 테스트를 스킵할 수 있다. 일부 실시예들에서, 그러한 광선 질의는 하기의 조건들 하에서 종료될 수 있다: 광선이 애니-히트 광선이고, 삼각형이 불투명하고, 활성 광선 인터벌은 이러한 삼각형을 완전히 둘러싸는 적어도 하나의 경계 볼륨을 완전히 커버함. 일부 실시예들에서, 삼각형 불투명도는 알파가 테스트에 맵핑되는지의 여부에 기초하여 결정될 수 있다. 활성 광선 인터벌이 삼각형을 완전히 둘러싸는 적어도 하나의 경계 볼륨을 완전히 커버하는지의 여부는 ADS(이는 어떤 경계 볼륨들이 ADS의 구조에 기초하여 삼각형을 완전히 둘러싸는지의 결정을 허용함) 및 순회를 위해 경계 볼륨들을 테스트하도록 구성된 슬랩 테스트 회로부의 순회에 기초하여 결정될 수 있다.
이러한 조건들 하에서, 프로세서는 더 높은 고정밀 테스트를 수행하지 않고서 광선-삼각형 교차 히트를 기록할 수 있다. 이는 유리하게도, 애니-히트 광선들을 프로세싱할 때, 성능을 개선시키거나, 전력 소비를 감소시키거나, 둘 모두를 할 수 있다. 상기에서 논의된 조건들이 예시의 목적들을 위해 포함되고; 다른 실시예들에서, 이러한 조건들의 서브세트만이 체크될 수 있고, 다른 조건들이 부과될 수 있고, 등등이라는 점에 주목한다.
도 12는 일부 실시예들에 따른, 확정적 히트 테스트 회로부를 도시하는 도 7의 도면과 유사한 회로도이다. 예시된 실시예에서, 회로부(710)는 도 7 및 도 8을 참조하여 전술된 바와 같이 구성된다. 그러나, 출력들은 비교기들로 상이하게 라우팅되어, 히트 또는 미결정적 결과를 제공한다. 일부 실시예들에서, 도 12에 도시된 비교기들, AND 게이트들, 및 OR 게이트는 도 7에 도시된 회로부에 더하여 포함되어, 양자화된 교차 테스트 회로부가 주어진 테스트에 대해 2개의 불(Boolean) 결과들을 출력하도록 한다.
하기의 코드 목록 2는 도 12의 회로부 또는 다른 유사한 회로부에 의해 구현될 수 있는 예시적인 동작들을 제공한다.
// Begin Code Listing 2: Edge Tests and Comparators
// 12 multipliers for the 6 interval products
bool intervalProductExceptionFlag = false;
Interval W_bx_ay = interval_product(bxInterval, ayInterval, intervalProductExceptionFlag);
Interval W_by_ax = interval_product(byInterval, axInterval, intervalProductExceptionFlag);
Interval U_cx_by = interval_product(cxInterval, byInterval, intervalProductExceptionFlag);
Interval U_cy_bx = interval_product(cyInterval, bxInterval, intervalProductExceptionFlag);
Interval V_ax_cy = interval_product(axInterval, cyInterval, intervalProductExceptionFlag);
Interval V_ay_cx = interval_product(ayInterval, cxInterval, intervalProductExceptionFlag);
// Inside/Outside Determination
// Handle back and front face possibilities
// Determine a guaranteed miss (successful rejection of ray-triangle intersection)
const bool outerEdgeTestSignsFrontU = U_cy_bx.lower < U_cx_by.upper;
const bool outerEdgeTestSignsFrontV = V_ay_cx.lower < V_ax_cy.upper;
const bool outerEdgeTestSignsFrontW = W_by_ax.lower < W_bx_ay.upper;
const bool outerEdgeTestSignsBackU = U_cx_by.lower < U_cy_bx.upper;
const bool outerEdgeTestSignsBac㎸ = V_ax_cy.lower < V_ay_cx.upper;
const bool outerEdgeTestSignsBackW = W_bx_ay.lower < W_by_ax.upper;
const bool insideOuterBackfacingTriangle = outerEdgeTestSignsBackU && outerEdgeTestSignsBac㎸ && outerEdgeTestSignsBackW;
const bool insideOuterFrontfacingTriangle = outerEdgeTestSignsFrontU && outerEdgeTestSignsFrontV && outerEdgeTestSignsFrontW;
const bool guaranteedRayMiss = !insideOuterBackfacingTriangle && !insideOuterFrontfacingTriangle;
// Determine a guaranteed hit (successful accept of line-triangle intersection)
const bool innerEdgeTestSignsFrontU = U_cy_bx.upper <= U_cx_by.lower;
const bool innerEdgeTestSignsFrontV = V_ay_cx.upper <= V_ax_cy.lower;
const bool innerEdgeTestSignsFrontW = W_by_ax.upper <= W_bx_ay.lower;
const bool innerEdgeTestSignsBackU = U_cx_by.upper <= U_cy_bx.lower;
const bool innerEdgeTestSignsBac㎸ = V_ax_cy.upper <= V_ay_cx.lower;
const bool innerEdgeTestSignsBackW = W_bx_ay.upper <= W_by_ax.lower;
const bool insideInnerBackfacingTriangle = innerEdgeTestSignsBackU && innerEdgeTestSignsBac㎸ && innerEdgeTestSignsBackW;
const bool insideInnerFrontfacingTriangle = innerEdgeTestSignsFrontU && innerEdgeTestSignsFrontV && innerEdgeTestSignsFrontW;
const bool guaranteedLineHit = insideInnerBackfacingTriangle || insideInnerFrontfacingTriangle;
if (intervalProductExceptionFlag) return TRIANGLE_FILTER_INCONCLUSIVE;
else if (guaranteedRayMiss) return
TRIANGLE_FILTER_CONSERVATIVE_RAY_MISS;
else if (guaranteedLineHit) return
TRIANGLE_FILTER_CONSERVATIVE_LINE_HIT;
else return TRIANGLE_FILTER_INCONCLUSIVE;
교차 테스트들을 잠재적으로 감소시키기 위한 예시적인 순회 기법들
광선 교차 계산들은 종종, 가속도 데이터 구조(ADS)들에 의해 용이하게 된다. 광선 교차 질의들을 효율적으로 구현하기 위해, 공간 데이터 구조는 광선-표면 교차 테스트들의 수를 감소시키고 이로써 질의 프로세스를 가속시킬 수 있다. ADS의 공통 클래스는, 표면 프리미티브들이 교차에 대해 테스트하기에 더 저렴한 기하학적 프록시 볼륨들(예를 들어, 박스들)의 계층구조로 봉입되는 경계 볼륨 계층구조(bounding volume hierarchy, BVH)이다. 이러한 볼륨들은 경계 영역들로 지칭될 수 있다. 데이터 구조를 순회하고 방법을 따라 프록시 교차 테스트들을 수행함으로써, 그래픽 프로세서는 주어진 광선에 대한 후보 교차 프리미티브들의 보수적 세트를 위치확인한다. BVH의 통상적인 형태는 3D 축-정렬 경계 박스들(Axis-Aligned Bounding Boxes, AABB)을 사용한다. 일단 구성되면, AABB BVH는 모든 광선 질의들에 대해 사용될 수 있고, 관점-독립적 구조이다. 일부 실시예들에서, 이들 구조들은 장면에서, 그 객체의 로컬 객체 공간 또는 모델 공간에서 각각의 별개의 메시에 대해 한번 구성되고, 광선들은 BVH를 순회하기 전에 세계 공간으로부터 로컬 공간으로 변환된다. 이는 (래스터화에서의 인스턴스화와 유사한) 많은 강성 변환들 및 재료 특성들을 갖는 단일 메시의 기하학적 인스턴스화를 허용할 수 있다. 애니메이션화된 기하구조는 전형적으로 (때때로, "재맞춤"으로 알려진 덜 비싼 업데이트 동작으로) 데이터 구조가 재구축될 것을 요구한다. 단일 프레임에서 단일 장면에 대해 수백만 또는 수십억 개의 광선들이 추적되는 비-실시간 사용 사례들의 경우, ADS 구성의 비용은 "자유로운" 포인트까지 완전히 상각된다. 그러나, 실시간 맥락에서, 전형적으로, 구축 비용들과 순회 비용들 사이에 섬세한 절충이 존재하며, 더 효율적인 구조들은 전형적으로 구축하는 데 더 많은 비용이 든다.
일부 실시예들에서, 교차 회로부는 그의 경계 볼륨들에 대해 3D 축-정렬 박스들을 사용하는 BVH ADS를 순회하도록 구성된다. ADS는 최대 분기 인자(예를 들어, 2, 4, 8, 16 등) 및 삼각형 기하구조를 가정하지 않는 유연한 사용자-정의 페이로드(예를 들어, 트리의 리프들에서의 콘텐츠들)를 가질 수 있다. 일부 실시예들에서, 예컨대, 2020년 11월 24일자로 출원되고 그 전체가 본 명세서에 참고로 포함되는 미국 특허 출원 제17/103,317호에서 논의된 바와 같이, 깊이-제1 검색이 수행된다.
일부 실시예들에서, RIA(190)는 소정 유형들의 깊이-제1 순회들을 위해 주어진 노드에 대한 자식 노드들의 수정된 순서화를 사용하도록 구성된다. 일부 실시예들에서, 개시된 기법들은 2차 광선들에 적용된다. 2차 광선들은 제1(이미 추적된) 광선과 표면 사이의 교차의 위치로부터 진행되는 광선들이다. 많은 애니-히트 광선들은 애니-히트 광선들로 보편적으로 구현되는 유형들의 효과들(예컨대, 음영들)로 인한 2차 광선들이다. 따라서, 이차 광선들은 교차된 표면 근처에서 시작하여 표면으로부터 멀어진다(그리고 따라서, 그 특정 표면과 교차하지 않음).
2차 광선들의 특성 때문에, 본 발명자(들)는 누락부들인 교차된 경계 볼륨들에 대한 자식 노드들의 전방-후방 또는 후방-전방 순회들이 전형적으로, 교차 테스트들을 초래할 수 있다는 것을 인식하였다. 전방-후방의 경우, 예를 들어, 광선은 2차 광선을 반사시킨 프리미티브에 대한 경계 볼륨과 교차할 가능성이 있지만(교차 테스트를 트리거함), 실제로는, 그 프리미티브와 교차하지 않을 것이다.
도 13은 일부 실시예들에 따른, 전방-후방 순서화를 가속도 데이터 구조의 교차된 자식 노드들에 대한 미들-아웃 순서화와 비교하는 도면이다. 도시된 예에서, 2차 광선은 다른 광선(도시되지 않음)과 프리미티브 A의 교차에 기초한 반사이다. 도시된 바와 같이, 광선은 광원에서 종단된다(이는, 관련없는 광선들을 프로세싱하는 것을 회피하기 위해 카메라로부터 광원까지 전형적으로 광선들을 역방향으로 추적하는 광선 추적으로 인한 것일 수 있음). 광선은 이러한 예에서, 애니-히트 광선이고, 프리미티브 C와 교차한다.
광선이 각각의 예시된 프리미티브에 대한 경계 볼륨들과 교차하고, 예시된 프리미티브들이 더 큰 경계 볼륨에 대응하는 노드의 모든 자식 노드들이라는 예시적인 상황을 고려한다. 이러한 예에서, 순회 회로부는 깊이-제1 검색으로 먼저 추구할 자식 노드들의 다양한 순서화들을 사용할 수 있다.
도시된 바와 같이, 광선 기점에 더 가까운 경계 볼륨들이 먼저 순회되는 전방-후방 순서화를 사용하여, 프리미티브들 A 및 B에 대한 교차 테스트들은 히트가 결국 프리미티브 C를 위해 검출되고 질의가 종료되기 전에 누락부들을 초래한다(그 이유는 이것이 애니-히트 광선이기 때문임). 프리미티브 A에 대한 누락부는 예시된 2차 광선을 낳은(spawn) 광선과 프리미티브 A의 교차를 고려할 때 놀랍지 않다.
미들-아웃 순서화를 사용하는 것은 유리하게도, 더 빠른 히트 검출을 제공하는데, 이는 이러한 예에서 전방-후방 순서화에 대해 2개의 더 적은 교차 테스트들을 요구한다. 도시된 바와 같이, 광선의 중간에서 시작하는 것은 프리미티브 C에 대한 히트를 초래하고, 질의는 프리미티브들 D, A, 또는 B를 테스트하지 않고서 종료될 수 있다.
일부 실시예들에서, 전/후 노드들에 대한 하나 이상의 중간 노드들에 우선적인 순서화를 제공하기 위해 다양한 기법들이 활용될 수 있다. 하나의 예로서, 분기 인자 N을 갖는 트리-유사 ADS를 고려한다. 교차 회로부는 경계 볼륨들이 전방-후방 순서로 교차되었던 자식 노드들을 먼저 분류할 수 있다. M ≤ N의 교차된 자식들(0 내지 M-1로 인덱싱됨)의 경우, 교차 회로부는 M이 홀수인지 아니면 짝수인지에 따라, 하기의 시퀀스들을 통해 교차들을 재순서화할 수 있다.
M이 홀수이고 나눗셈이 정수 나눗셈을 의미하는 경우(예컨대, 3/2 = 1), 하기는 자식 인덱스들의 예시적인 재순서화된 시퀀스이다:
M/2
M/2 + 1
M/2 - 1
M/2 + 2
M/2 - 2
...
M/2 + M/2 = M - 1
M/2 - M/2 = 0
M이 짝수인 경우, 하기는 예시적인 재순서화된 시퀀스이다:
M/2
M/2 - 1
M/2 + 1
M/2 - 2
M/2 + 2
...
M/2 + (M/2 - 1) = M - 1
M/2 - M/2 = 0
일부 하드웨어 구현예들에서, 최대 분기 인자 N의 경우, 회로부는 미들-아웃 순회를 위한 순서를 신속하게 결정하기 위해 1에서 N까지의 M의 각각의 값에 대한 재순서화 시퀀스들을 인코딩할 수 있다. 하나의 비제한적인 예로서, N=8인 경우, 표는 하기의 시퀀스들을 포함할 수 있다:
M = 1의 경우: [0]
M = 2의 경우: [1, 0]
M = 3의 경우: [1, 2, 0]
M = 4의 경우: [2, 1, 3, 0]
M = 5의 경우: [2, 3, 1, 4, 0]
M = 6의 경우: [3, 2, 4, 1, 5, 0]
M = 7의 경우: [3, 4, 2, 5, 1, 6, 0]
M = 8의 경우: [4, 3, 5, 2, 6, 1, 7, 0]
본 명세서에서 논의되는 특정 시퀀스들은 예시의 목적들을 위해 포함되지만, 본 개시내용의 범주를 제한하고자 하는 것은 아니라는 점에 주목한다. 다른 실시예들에서, 하나 이상의 내부 자식 노드들이 전/후 노드보다 우선순위화되는 다양한 순서화들이 구현될 수 있다.
이진 트리들(N=2)을 사용하는 실시예들에서, 순회 회로부는 (예컨대, 트리에서 홀수 깊이들의 경우에는 전방-후방을 그리고 트리에서 짝수 깊이들의 경우에는 후방-전방을 사용하여 또는 그 역으로) 트리의 상이한 레벨들의 자식 노드들을 검색할 때 후방-전방 순회 순서화와 전방-후방 선회 순서화 사이에서 교번할 수 있다.
예시적인 방법들
도 14는 일부 실시예들에 따른, 초기 교차 테스트를 수행하기 위한 예시적인 방법을 예시하는 흐름도이다. 도 14에 도시된 방법은 다른 것들 중에서도, 본 명세서에 개시되는 컴퓨터 회로부, 시스템들, 디바이스들, 요소들 또는 컴포넌트들 중 임의의 것과 함께 사용될 수 있다. 다양한 실시예들에서, 도시된 방법 요소들 중 일부는 동시에, 또는 도시된 바와는 상이한 순서로 수행될 수 있거나, 또는 생략될 수 있다. 부가적인 방법 요소들이 또한 원하는 대로 수행될 수 있다.
1410에서, 예시된 실시예에서, 그래픽 프로세서는 프리미티브의 제1 표현을 양자화하여 프리미티브의 감소된 정밀도의 인터벌 표현을 생성하며, 여기서 인터벌 표현은 프리미티브의 제1 표현에 의해 특정된 대응하는 값들을 커버하도록 보장되는 인터벌 값들을 포함한다. 일부 실시예들에서, 프리미티브의 제1 표현의 양자화는 인터벌의 하한에 대해 0으로 라운딩된 고정 소수점 양자화된 표현, 및 인터벌의 상한에 대해 상기 하한 플러스 하나의 최소 정밀도 단위(ULP)를 사용한다.
1420에서, 예시된 실시예에서, 그래픽 프로세서는 광선의 제1 표현을 양자화하여 광선의 감소된 정밀도의 인터벌 표현을 생성하며, 여기서 인터벌 표현은 광선의 제1 표현에 의해 특정된 대응하는 값들을 커버하도록 보장되는 인터벌 값들을 포함한다. 일부 실시예들에서, 광선의 감소된 정밀도의 인터벌 표현은 일정 인터벌로서 표현되는 양자화된 광선 시간을 포함한다. 일부 실시예들에서, 회로부는 모션 블러 시간 인터벌 내의 상이한 시점들에서의 프리미티브의 제1 및 제2 포지션들에 기초하여, 프리미티브의 감소된 정밀도의 인터벌 표현을 생성하여, 프리미티브의 감소된 정밀도의 인터벌 표현이, 양자화된 광선 시간을 표현하는 인터벌 동안, 프리미티브의 모든 가능한 위치들을 커버하도록 한다.
1430에서, 예시된 실시예들에서, 그래픽 프로세서는, 인터벌 연산을 사용하여, 광선의 인터벌 표현의 좌표들과 함께 프리미티브의 인터벌 표현의 좌표들에 기초하여 초기 교차 결과를 결정하며, 여기서 초기 교차 결과에 의해 표시된 누락부는 프리미티브의 제1 표현 및 광선의 제1 표현에 대한 히트가 아니도록 보장된다.
일부 실시예들에서, 잠재적 히트 초기 교차 결과에 응답하여, 그래픽 프로세서는 프리미티브의 제1 표현 및 광선의 제1 표현을 사용하여 교차 테스트를 수행하도록 구성된다.
일부 실시예들에서, 전단 인자 회로부는, 광선 방향 정보 및 스케일 정보에 기초하여 전단 인자들의 인터벌 표현들을 생성하고, 프리미티브의 양자화된 표현 및 전단 인자들의 인터벌 표현에 기초하여 전단된 정점 인터벌들을 생성한다. 일부 실시예들에서, 초기 교차 결과는 전단된 정점 인터벌들에 기초한다. 일부 실시예들에서, 전단 인자 회로부는, 광선 방향 벡터(예컨대, z-방향으로 재명명된 축)에 대한 임계(예컨대, 최대) 기여를 제공하는 좌표 방향에서 광선의 기점에 대한 제1 좌표를 표현하기 위한 제1 정밀도; 및 다른 방향들에서 광선의 기점에 대한 좌표들을 표현하기 위한 제2, 더 큰 정밀도를 사용하도록 구성된다.
일부 실시예들에서, 프리미티브의 제1 표현은 삼각형 쌍의 표현으로서, 표현은 삼각형 쌍 내의 2개의 삼각형 프리미티브들에 대한 최대 4개의 정점들을 포함하고, 그래픽 프로세서는 주어진 삼각형 쌍의 삼각형들을 순차적으로 프로세싱하도록 구성된 회로부를 포함한다.
도 15는 일부 실시예들에 따른, 초기 교차 테스트를 수행하기 위한 예시적인 방법을 예시하는 흐름도이다. 도 15에 도시된 방법은 다른 것들 중에서도, 본 명세서에 개시되는 컴퓨터 회로부, 시스템들, 디바이스들, 요소들 또는 컴포넌트들 중 임의의 것과 함께 사용될 수 있다. 다양한 실시예들에서, 도시된 방법 요소들 중 일부는 동시에, 또는 도시된 바와는 상이한 순서로 수행될 수 있거나, 또는 생략될 수 있다. 부가적인 방법 요소들이 또한 원하는 대로 수행될 수 있다.
1510에서, 예시된 실시예에서, 그래픽 프로세서는 교차 테스트들을 수행하며, 여기서, 교차 테스트들은 광선들의 초기 표현들을 양자화함으로써 생성된 광선들의 감소된 정밀도의 표현들, 및 프리미티브들의 초기 표현들을 양자화함으로써 생성된 프리미티브들의 감소된 표현들에 대해 동작한다. 예시된 실시예에서, 교차 테스트들은 제1 광선 및 제1 프리미티브에 대한 제1 결과를 생성하며, 여기서 제1 결과는, 제1 광선이 그들의 초기 표현들에 따라 제1 프리미티브와 교차함을 나타낸다. 일부 실시예들에서, 교차 테스트들은 또한, 제2 광선 및 제1 프리미티브에 대한 제2 결과를 생성할 수 있으며, 여기서 제2 결과는, 제2 광선이 제1 프리미티브와 교차하는지의 여부가 미결정적임을 나타낸다. 그래픽 프로세서는 제2 광선 및 제1 프리미티브의 초기 표현을 사용하여 제2 광선에 대한 교차 테스트를 수행할 수 있다. 교차 테스트들은 그래픽 장면의 적어도 일부분에 대한 계층구조적으로 배열된 경계 볼륨들을 포함하는 가속도 데이터 구조의 순회에 기초하여 수행될 수 있다.
1520에서, 예시된 실시예에서, 그래픽 프로세서는 제1 광선의 초기 표현 및 제1 프리미티브를 사용하여 제1 광선에 대한 교차 테스트를 수행하지 않고서, 제1 결과에 기초하여 제1 광선에 대한 제1 프리미티브와의 교차를 기록한다. 예시된 실시예에서, 교차는 제1 결과, 제1 프리미티브가 불투명하다는 결정, 및 제1 프리미티브의 전체를 둘러싸고 제1 광선의 둘러싸인 부분의 전체가 활성인 가속도 데이터 구조에 적어도 하나의 경계 볼륨이 있다는 결정에 기초하여 기록된다.
일부 실시예들에서, 그래픽 프로세서는 제1 광선에 대한 애니-히트 질의에 기초하여 제1 광선에 대한 교차를 기록하도록 구성된다(그리고 다른 유형들의 질의들에 대한 감소된 정밀도의 테스트들에 기초하여 확정적 교차 결과들을 기록하지 않을 수 있음).
일부 실시예들에서, 테스트 회로부는, 그들의 초기 표현들에 따라, 제1 광선이 제1 프리미티브를 누락시켰다는 것 또는 제1 광선이 제1 프리미티브를 누락시키는지의 여부가 미결정적이라는 것 중 어느 하나를 나타내는, 제1 광선 및 제1 프리미티브에 대한 결과를 출력하도록 추가로 구성된다. 예를 들어, 프로세서는 도 7 및 도 12 둘 모두의 비교기 및 로직 회로부를 포함할 수 있다. 제1 광선 및 제1 프리미티브의 경우, 상기에서 논의된 예에서, 이러한 출력은, 다른 출력이 확정적 히트를 나타냈기 때문에 제1 광선이 제1 프리미티브를 누락시키는지의 여부가 미결정적임을 나타낼 것이다.
일부 실시예들에서, 프로세서는 적어도 일부 유형들의 광선들에 대한 미들-아웃 순회 순서를 사용한다. 일부 실시예들에서, 프로세서는 계층구조적으로 배열된 경계 볼륨들에 대응하는 노드들을 포함하는 가속도 데이터 구조의 (예컨대, 순회 회로부에 의한) 순회에 기초하여 교차 테스트들을 수행하도록 구성된다. 특히, 프로세서는 가속도 데이터 구조의 깊이-제1 검색을 수행할 수 있고, 가속도 데이터 구조에서 제1 노드의 자식 노드들의 세트에 대해, 자식 노드들의 세트에 대한 교차된 경계 영역들의 순서화에 따라 깊이-제1 검색을 위한 다음 노드를 선택할 수 있으며, 여기서 순서화는 하나 이상의 전방 경계 볼륨들 및 하나 이상의 후방 경계 볼륨들보다 테스트되는 광선의 중간점에 더 가까운 경계 볼륨으로 시작한다.
일부 실시예들에서, 프로세서는, 순서화의 결정 전에, 자식 노드들의 세트 내의 노드들의 수를 결정하며, 여기서 자식 노드들의 세트는 테스트되는 광선에 의해 각각 교차되는 노드들에 대응한다. 예를 들어, 프로세서는, 일단 교차된 자식 노드들의 수가 결정되면 순서화를 결정하기 위해 룩업 테이블에 액세스할 수 있다. 일부 실시예들에서, 테스트되는 광선은 애니-히트 광선이고, 테스트되는 광선에 대한 순회는 교차의 검출에 응답하여 종료된다. 일부 실시예들에서, 시작 노드에 대해, 순서화는 전방 방향의 노드들과 후방 방향의 노드들 사이의 순서화에서 후속 노드들에 대해 교번한다. 본 명세서에서 사용되는 바와 같이, 광선의 "전방"에 더 가까운 노드는 광선의 종단에 더 가깝고, 광선의 "후방"에 더 가까운 노드는 광선의 기점에 더 가깝다. 도 13을 참조하여 상기에서 논의된 예시적인 순서화들은 중간 노드로부터 시작하여, 전방 방향의 노드들과 후방 방향의 노드들 사이에서 교번하는 예들이다.
예시적인 디바이스
이제, 도 16을 참조하면, 디바이스(1600)의 예시적인 실시예를 예시하는 블록도가 도시되어 있다. 일부 실시예들에서, 디바이스(1600)의 요소들은 시스템 온 칩 내에 포함될 수 있다. 일부 실시예들에서, 디바이스(1600)는 배터리 전력이 공급될 수 있는 모바일 디바이스 내에 포함될 수 있다. 따라서, 디바이스(1600)에 의한 전력 소비는 중요한 설계 고려사항일 수 있다. 예시된 실시예에서, 디바이스(1600)는 패브릭(1610), 계산 복합체(1620), 입력/출력(I/O) 브리지(1650), 캐시/메모리 제어기(1645), 그래픽 유닛(1675), 및 디스플레이 유닛(1665)을 포함한다. 일부 실시예들에서, 디바이스(1600)는 예시된 컴포넌트들, 예컨대 비디오 프로세서 인코더들 및 디코더들, 이미지 프로세싱 또는 인식 요소들, 컴퓨터 비전 요소들 등에 더하여 또는 그 대신에, 다른 컴포넌트들(도시되지 않음)을 포함할 수 있다.
패브릭(1610)은 다양한 상호접속부들, 버스들, MUX들, 제어기들 등을 포함할 수 있고, 디바이스(1600)의 다양한 요소들 사이의 통신을 용이하게 하도록 구성될 수 있다. 일부 실시예들에서, 패브릭(1610)의 부분들은 다양한 상이한 통신 프로토콜들을 구현하도록 구성될 수 있다. 다른 실시예들에서, 패브릭(1610)은 단일 통신 프로토콜을 구현할 수 있고, 패브릭(1610)에 결합된 요소들은 단일 통신 프로토콜로부터 다른 통신 프로토콜들로 내부적으로 변환할 수 있다.
예시된 실시예에서, 계산 복합체(1620)는 버스 인터페이스 유닛(bus interface unit, BIU)(1625), 캐시(1630), 및 코어들(1635, 1640)을 포함한다. 다양한 실시예들에서, 계산 복합체(1620)는 다양한 수들의 프로세서들, 프로세서 코어들 및 캐시들을 포함할 수 있다. 예를 들어, 계산 복합체(1620)는 1, 2, 또는 4개의 프로세서 코어들, 또는 임의의 다른 적합한 수를 포함할 수 있다. 일 실시예에서, 캐시(1630)는 세트 연관 L2 캐시이다. 일부 실시예들에서, 코어들(1635 및 1640)은 내부 명령어 및 데이터 캐시들을 포함할 수 있다. 일부 실시예들에서, 패브릭(1610), 캐시(1630), 또는 디바이스(1600) 내의 다른 곳에 있는 코히어런시 유닛(도시되지 않음)은 디바이스(1600)의 다양한 캐시들 사이의 코히어런시를 유지하도록 구성될 수 있다. BIU(1625)는 계산 복합체(1620)와 디바이스(1600)의 다른 요소들 사이의 통신을 관리하도록 구성될 수 있다. 코어들(1635, 1640)과 같은 프로세서 코어들은 운영 체제 명령어들 및 사용자 응용 명령어들을 포함할 수 있는 특정 명령어 세트 아키텍처(ISA)의 명령어들을 실행시키도록 구성될 수 있다.
캐시/메모리 제어기(1645)는 패브릭(1610)과 하나 이상의 캐시들 및 메모리들 사이의 데이터의 전송을 관리하도록 구성될 수 있다. 예를 들어, 캐시/메모리 제어기(1645)는 L3 캐시에 결합될 수 있고, 이는 이어서, 시스템 메모리에 결합될 수 있다. 다른 실시예들에서, 캐시/메모리 제어기(1645)는 메모리에 직접 결합될 수 있다. 일부 실시예들에서, 캐시/메모리 제어기(1645)는 하나 이상의 내부 캐시들을 포함할 수 있다.
본 명세서에 사용되는 바와 같이, 용어 "에 결합된"은 요소들 사이의 하나 이상의 연결부를 나타낼 수 있고, 결합은 개재 요소들을 포함할 수 있다. 예를 들어, 도 16에서, 그래픽 유닛(1675)은 패브릭(1610) 및 캐시/메모리 제어기(1645)를 통해 메모리"에 결합된" 것으로 기술될 수 있다. 대조적으로, 도 16의 예시된 실시예에서, 그래픽 유닛(1675)은 개재 요소들이 없기 때문에 패브릭(1610)에 "직접 결합"된다.
그래픽 유닛(1675)은 하나 이상의 프로세서들, 예컨대 하나 이상의 그래픽 프로세싱 유닛(GPU)들을 포함할 수 있다. 그래픽 유닛(1675)은, 예를 들어 OPENGL®, Metal, 또는 DIRECT3D® 명령어들과 같은 그래픽-지향 명령어들을 수신할 수 있다. 그래픽 유닛(1675)은 특수 GPU 명령어들을 실행하거나, 또는 수신된 그래픽-지향 명령어들에 기초하여 다른 동작들을 수행할 수 있다. 그래픽 유닛(1675)은 대체적으로, 데이터의 큰 블록들을 병렬로 프로세싱하도록 구성될 수 있고, 디바이스에 포함될 수 있거나 또는 별개의 디바이스일 수 있는 디스플레이로의 출력을 위해 프레임 버퍼 내에 이미지들을 구축할 수 있다. 그래픽 유닛(1675)은 하나 이상의 그래픽 프로세싱 파이프라인들에서 변환, 조명, 삼각형, 및 렌더링 엔진들을 포함할 수 있다. 그래픽 유닛(1675)은 디스플레이 이미지들에 대한 픽셀 정보를 출력할 수 있다. 그래픽 유닛(1675)은 다양한 실시예들에서, 픽셀 태스크들, 정점 태스크들, 및 계산 태스크들(이는, 그래픽 관련일 수 있거나 그렇지 않을 수 있음)을 포함할 수 있는 그래픽 프로그램들을 실행하도록 구성된 고도의 병렬 실행 코어들을 포함할 수 있는 프로그래밍가능 셰이더 회로부를 포함할 수 있다.
일부 실시예들에서, 그래픽 유닛(1175)은 전통적인 GPU들에 비해 전력 소비를 감소시키거나 성능을 증가시키거나 또는 둘 모두를 할 수 있는 회로부(220)를 포함한다.
디스플레이 유닛(1665)은 프레임 버퍼로부터 데이터를 판독하도록 그리고 디스플레이를 위한 픽셀 값들의 스트림을 제공하도록 구성될 수 있다. 디스플레이 유닛(1665)은, 일부 실시예들에서 디스플레이 파이프라인으로서 구성될 수 있다. 또한, 디스플레이 유닛(1665)은 출력 프레임을 생성하기 위해 다수의 프레임들을 혼합하도록 구성될 수 있다. 또한, 디스플레이 유닛(1665)은 사용자 디스플레이(예컨대, 터치스크린 또는 외부 디스플레이)에 결합하기 위한 하나 이상의 인터페이스들(예컨대, MIPI® 또는 임베디드 디스플레이 포트(eDP))을 포함할 수 있다.
I/O 브리지(1650)는, 예를 들어, 범용 직렬 버스(universal serial bus, USB) 통신, 보안, 오디오, 및 저전력 상시-온 기능을 구현하도록 구성된 다양한 요소들을 포함할 수 있다. I/O 브리지(1650)는 또한, 예를 들어, 펄스폭 변조(pulse-width modulation, PWM), 범용 입/출력(GPIO), 직렬 주변 인터페이스(SPI), 및 인터-집적 회로(I2C)와 같은 인터페이스들을 포함할 수 있다. 다양한 유형들의 주변기기들 및 디바이스들이 I/O 브리지(1650)를 통해 디바이스(1600)에 결합될 수 있다.
일부 실시예들에서, 디바이스(1600)는 패브릭(1610) 또는 I/O 브리지(1650)에 연결될 수 있는 네트워크 인터페이스 회로부(명시적으로 도시되지 않음)를 포함한다. 네트워크 인터페이스 회로부는 유선, 무선, 또는 둘 모두일 수 있는 다양한 네트워크를 통해 통신하도록 구성될 수 있다. 예를 들어, 네트워크 인터페이스 회로부는 유선 근거리 통신 네트워크, 무선 근거리 통신 네트워크(예컨대, WiFi를 통함), 또는 광역 네트워크(예컨대, 인터넷 또는 가상 개인 네트워크)를 통해 통신하도록 구성될 수 있다. 일부 실시예들에서, 네트워크 인터페이스 회로부는 하나 이상의 무선 액세스 기술들을 사용하는 하나 이상의 셀룰러 네트워크들을 통해 통신하도록 구성된다. 일부 실시예들에서, 네트워크 인터페이스 회로부는 디바이스-대-디바이스 통신(예를 들어, 블루투스 또는 WiFi 다이렉트) 등을 사용하여 통신하도록 구성된다. 다양한 실시예들에서, 네트워크 인터페이스 회로부는 다양한 유형들의 다른 디바이스들 및 네트워크들에 대한 접속성을 디바이스(1600)에 제공할 수 있다.
예시적인 애플리케이션들
이제 도 17을 참조하면, 다양한 유형들의 시스템은 상기에서 논의된 회로들, 디바이스들, 또는 시스템 중 임의의 것을 포함할 수 있다. 본 명세서에 기술된 기법들 중 하나 이상을 통합하거나 달리 활용할 수 있는 시스템 또는 디바이스(1700)는 광범위한 영역들에서 활용될 수 있다. 예를 들어, 시스템 또는 디바이스(1700)는 데스크톱 컴퓨터(1710), 랩톱 컴퓨터(1720), 태블릿 컴퓨터(1730), 셀룰러 또는 모바일 폰(1740), 또는 텔레비전(1750)(또는 텔레비전에 결합된 셋톱 박스)과 같은 시스템들의 하드웨어의 일부로서 활용될 수 있다.
유사하게, 개시된 요소들은 스마트워치 또는 건강 모니터링 디바이스와 같은 웨어러블 디바이스(1760)에서 활용될 수 있다. 많은 실시예들에서, 스마트 워치들은 다양한 상이한 기능들 - 예를 들어, 이메일에 대한 액세스, 셀룰러 서비스, 캘린더, 건강 모니터링 등을 구현할 수 있다. 웨어러블 디바이스는 또한 단지 건강 모니터링 기능들, 예를 들어, 사용자의 바이탈 사인을 모니터링하는 것, 접촉 추적과 같은 전염병성 기능들을 수행하는 것, 긴급 의료 서비스에 대한 통신을 제공하는 것 등을 수행하도록 설계될 수 있다. 목에 착용되는 디바이스들, 인체 내에 이식가능한 디바이스들, 증강 및/또는 가상 현실에 기초한 것들과 같이 컴퓨터 생성 현실 경험들을 제공하도록 설계된 안경 또는 헬멧 등을 포함하는 다른 유형들의 디바이스들이 또한 고려된다.
시스템 또는 디바이스(1700)는 또한, 다양한 다른 맥락들에서 사용될 수 있다. 예를 들어, 시스템 또는 디바이스(1700)는 전용 서버와 같은 서버 컴퓨터 시스템의 맥락에서 또는 클라우드-기반 서비스(1770)를 구현하는 공유 하드웨어 상에서 활용될 수 있다. 더 추가로, 시스템 또는 디바이스(1700)는 가정에서 일반적으로 발견되는 디바이스들(1780), 예를 들어, 냉장고들, 서모스탯들, 보안 카메라들 등을 포함하는 광범위한 전문화된 일상적인 디바이스들에서 구현될 수 있다. 그러한 디바이스들의 상호접속부는 종종 "사물 인터넷(Internet of Things)"(IoT)으로 지칭된다. 요소들은 또한 다양한 운송 모드들에서 구현될 수 있다. 예를 들어, 시스템 또는 디바이스(1700)는 다양한 유형들의 차량들(1790)의 제어 시스템들, 안내 시스템들, 엔터테인먼트 시스템들 등에서 채용될 수 있다.
도 17에 예시된 애플리케이션들은 단지 예시적이며, 개시된 시스템들 또는 디바이스들의 잠재적인 미래의 애플리케이션들을 제한하도록 의도되지 않는다. 다른 예시적인 애플리케이션들은 제한 없이 휴대용 게이밍 디바이스들, 음악 플레이어들, 데이터 저장 디바이스들, 무인 항공기들 등을 포함한다.
예시적인 컴퓨터 판독가능 매체
본 개시내용은 위에서 상세하게 다양한 예시적인 회로들을 기술하였다. 본 개시내용은 그러한 회로를 포함하는 실시예들뿐만 아니라, 그러한 회로를 특정하는 설계 정보를 포함하는 컴퓨터 판독가능 저장 매체도 포괄하고자 하는 것이다. 따라서, 본 개시내용은 개시된 회로를 포함하는 장치뿐만 아니라 개시된 회로를 포함하는 하드웨어(예를 들어, 집적 회로)를 생성하도록 구성된 제조 시스템에 의해 인식되는 포맷으로 회로를 특정하는 저장 매체를 포괄하는 청구범위를 지원하도록 의도된다. 그러한 저장 매체에 대한 청구범위는, 예를 들어 회로 설계를 생성하지만 그 자체가 설계를 제조하지는 않는 엔티티를 포괄하도록 의도된다.
도 18은 일부 실시예들에 따른, 회로 설계 정보를 저장하는 예시적인 비일시적 컴퓨터 판독가능 저장 매체를 예시하는 블록도이다. 예시된 실시예에서, 반도체 제조 시스템(1820)은 비일시적 컴퓨터 판독가능 매체(1810) 상에 저장된 설계 정보(1815)를 프로세싱하도록 그리고 설계 정보(1815)에 기초하여 집적 회로(1830)를 제조하도록 구성된다.
비일시적 컴퓨터 판독가능 저장 매체(1810)는 다양한 적절한 유형들의 메모리 디바이스들 또는 저장 디바이스들 중 임의의 것을 포함할 수 있다. 비일시적 컴퓨터 판독가능 저장 매체(1810)는, 설치 매체, 예컨대 CD-ROM, 플로피 디스크들, 또는 테이프 디바이스; DRAM, DDR RAM, SRAM, EDO RAM, 램버스(Rambus) RAM 등과 같은 컴퓨터 시스템 메모리 또는 랜덤 액세스 메모리; 플래시, 자기 매체들, 예를 들어, 하드 드라이브, 또는 광 저장소와 같은 비휘발성 메모리; 레지스터들, 또는 다른 유사한 유형들의 메모리 요소들 등일 수 있다. 비일시적 컴퓨터 판독가능 저장 매체(1810)는 또한 다른 유형들의 비일시적 메모리 또는 이들의 조합들을 포함할 수 있다. 비일시적 컴퓨터 판독가능 저장 매체(1810)는 상이한 위치들, 예컨대 네트워크를 통해 접속되는 상이한 컴퓨터 시스템들에 상주할 수 있는 둘 이상의 메모리 매체들을 포함할 수 있다.
설계 정보(1815)는, 제한 없이, VHDL, Verilog, SystemC, Syste㎷erilog, RHDL, M, MyHDL 등과 같은 하드웨어 설명 언어들을 포함하는 다양한 적절한 컴퓨터 언어들 중 임의의 것을 사용하여 특정될 수 있다. 설계 정보(1815)는 집적 회로(1830)의 적어도 일부분을 제조하기 위해 반도체 제조 시스템(1820)에 의해 사용가능할 수 있다. 설계 정보(1815)의 포맷은 적어도 하나의 반도체 제조 시스템(1820)에 의해 인식될 수 있다. 일부 실시예들에서, 설계 정보(1815)는 또한, 집적 회로(1830)의 합성, 레이아웃, 또는 둘 모두를 특정하는 하나 이상의 셀 라이브러리들을 포함할 수 있다. 일부 실시예들에서, 설계 정보는 셀 라이브러리 요소들 및 그들의 접속성을 특정하는 넷리스트(netlist)의 형태로 전체적으로 또는 부분적으로 특정된다. 단독으로 취해진 설계 정보(1815)는 대응하는 집적 회로의 제조를 위한 충분한 정보를 포함할 수 있거나 또는 포함하지 않을 수 있다. 예를 들어, 설계 정보(1815)는 제조될 회로 요소들을 특정하지만, 그들의 물리적 레이아웃을 특정하지 않을 수 있다. 이러한 경우에, 설계 정보(1815)는 특정된 회로부를 실제로 제조하기 위해 레이아웃 정보와 조합될 필요가 있을 수 있다.
다양한 실시예들에서, 집적 회로(1830)는 메모리들, 아날로그 또는 혼합 신호 회로들 등과 같은 하나 이상의 맞춤형 매크로셀들을 포함할 수 있다. 그러한 경우들에서, 설계 정보(1815)는 포함된 매크로셀들에 관련된 정보를 포함할 수 있다. 그러한 정보는, 제한 없이, 개략적 캡처 데이터베이스, 마스크 설계 데이터, 거동 모델들, 및 디바이스 또는 트랜지스터 레벨 넷리스트들을 포함할 수 있다. 본 명세서에 사용되는 바와 같이, 마스크 설계 데이터는 그래픽 데이터 시스템(GDSII), 또는 임의의 다른 적합한 포맷에 따라 포맷팅될 수 있다.
반도체 제조 시스템(1820)은 집적 회로들을 제조하도록 구성된 다양한 적절한 요소들 중 임의의 것을 포함할 수 있다. 이것은, 예를 들어, 반도체 재료들을 (예컨대, 마스킹을 포함할 수 있는 웨이퍼 상에) 침착시키는 것, 재료들을 제거하는 것, 침착된 재료들의 형상을 변경시키는 것, 재료들을 (예컨대, 재료들을 도핑하거나 또는 자외선 처리를 사용하여 유전 상수들을 수정함으로써) 수정하는 것 등을 위한 요소들을 포함할 수 있다. 반도체 제조 시스템(1820)은 또한, 정확한 동작을 위해 제조된 회로들의 다양한 테스트를 수행하도록 구성될 수 있다.
다양한 실시예들에서, 집적 회로(1830)는 설계 정보(1815)에 의해 특정된 회로 설계에 따라 동작하도록 구성되고, 이는 본 명세서에 기술된 기능 중 임의의 것을 수행하는 것을 포함할 수 있다. 예를 들어, 집적 회로(1830)는 도 1b, 도 2, 도 4 내지 도 9, 도 11, 도 12, 및 도 16에 도시된 다양한 요소들 중 임의의 것을 포함할 수 있다. 또한, 집적 회로(1830)는 다른 컴포넌트들과 함께 본 명세서에 기술된 다양한 기능들을 수행하도록 구성될 수 있다. 추가로, 본 명세서에 설명된 기능은 다수의 접속된 집적 회로들에 의해 수행될 수 있다.
본 명세서에 사용되는 바와 같이, "~하도록 구성된 회로의 설계를 특정하는 설계 정보"라는 형태의 문구는 요소가 충족되기 위해 해당 회로가 제조되어야 한다는 것을 의미하지 않는다. 오히려, 이러한 문구는 설계 정보가, 제조 시에, 표시된 액션들을 수행하도록 구성될 것이거나 특정된 컴포넌트들을 포함할 회로를 설명한다는 것을 나타낸다.
***
본 개시내용은 "실시예" 또는 "실시예들의 그룹들"(예를 들어, "일부 실시예들" 또는 "다양한 실시예들")에 대한 언급들을 포함한다. 실시예들은 개시된 개념들의 상이한 구현들 또는 인스턴스들이다. "실시예", "일 실시예", "특정 실시예" 등에 대한 언급들은 반드시 동일한 실시예를 지칭하는 것은 아니다. 구체적으로 개시된 것들 뿐만 아니라, 본 개시내용의 사상 또는 범주 내에 속하는 수정들 또는 대안들을 포함하는 많은 가능한 실시예들이 고려된다.
본 개시내용은 개시된 실시예들로부터 발생할 수 있는 잠재적인 이점들을 논의할 수 있다. 이들 실시예들의 모든 구현들이 반드시 잠재적인 이점들 중 임의의 또는 모든 것을 나타내는 것은 아닐 것이다. 특정 구현에 대해 이점이 실현되는지 여부는 많은 인자들에 의존하며, 이들 중 일부는 본 개시내용의 범위를 벗어난다. 실제로, 청구항들의 범위 내에 속하는 구현이 임의의 개시된 이점들 중 일부 또는 전부를 나타내지 않을 수 있는 많은 이유들이 있다. 예를 들어, 특정 구현은 개시된 실시예들 중 하나와 함께, 하나 이상의 개시된 이점들을 무효화하거나 약화시키는, 본 개시내용의 범주 밖의 다른 회로부를 포함할 수 있다. 더욱이, 특정 구현의 차선의 설계 실행(예를 들어, 구현 기법들 또는 도구들)은 또한 개시된 이점들을 무효화하거나 약화시킬 수 있다. 숙련된 구현을 가정하더라도, 이점들의 실현은 구현이 전개되는 환경 상황들과 같은 다른 인자들에 여전히 의존할 수 있다. 예를 들어, 특정 구현에 공급되는 입력들은 본 개시내용에서 해결되는 하나 이상의 문제들이 특정 기회에 발생하는 것을 방지할 수 있으며, 그 결과, 그 해결책의 이익이 실현되지 않을 수 있다. 본 개시내용 외부의 가능한 인자들의 존재를 고려할 때, 본 명세서에서 설명되는 임의의 잠재적인 이점들은, 침해를 입증하기 위해 충족되어야 하는 청구항 제한들로서 해석되지 않아야 한다는 것이 명백하게 의도된다. 오히려, 그러한 잠재적 이점들의 식별은 본 개시내용의 이익을 갖는 설계자들에게 이용가능한 개선의 유형(들)을 예시하도록 의도된다. 그러한 이점들이 허용가능하게 설명된다는 것(예를 들어, 특정 이점이 "발생할 수 있다"고 언급함)은 그러한 이점들이 실제로 실현될 수 있는지에 대한 의구심을 전달하도록 의도되는 것이 아니라, 그러한 이점들의 실현이 종종 부가적인 인자들에 의존한다는 기술적 현실을 인식하도록 의도된다.
달리 언급되지 않는 한, 실시예들은 비제한적이다. 즉, 개시된 실시예들은, 특정 특징에 대해 단일 예만이 설명되는 경우에도, 본 개시내용에 기초하여 작성되는 청구항들의 범위를 제한하도록 의도되지 않는다. 개시된 실시예들은, 이에 반하는 본 개시내용의 어떠한 진술도 없이, 제한적이기보다는 예시적인 것으로 의도된다. 따라서, 본 출원은 개시된 실시예들을 커버하는 청구항들뿐만 아니라, 본 개시내용의 이익을 갖는 당업자에게 명백할 그러한 대안들, 수정들 및 등가물들을 허용하도록 의도된다.
예를 들어, 본 출원에서의 특징들은 임의의 적합한 방식으로 조합될 수 있다. 따라서, 특징부들의 임의의 그러한 조합에 대해 본 출원(또는 그에 대한 우선권을 주장하는 출원)의 심사 동안에 새로운 청구범위가 작성될 수 있다. 특히, 첨부된 청구항들을 참조하면, 종속 청구항들로부터의 특징들은 다른 독립 청구항들로부터 의존하는 청구항들을 포함하여, 적절한 경우 다른 종속 청구항들의 특징들과 조합될 수 있다. 유사하게, 개개의 독립 청구항들로부터의 특징들은 적절한 경우 조합될 수 있다.
따라서, 첨부된 종속 청구항들은 각각이 단일의 다른 청구항들에 의존하도록 작성될 수 있지만, 부가적인 종속성들이 또한 고려된다. 본 개시내용과 일치하는 종속물에서의 특징들의 임의의 조합들이 고려되며, 이러한 또는 다른 애플리케이션에서 청구될 수 있다. 간단히 말하면, 조합들은 첨부된 청구항들에 구체적으로 열거된 것들로 제한되지 않는다.
적절한 경우, 하나의 포맷 또는 법정 유형(예를 들어, 장치)으로 작성된 청구항들은 다른 포맷 또는 법정 유형(예를 들어, 방법)의 대응하는 청구항들을 지원하도록 의도되는 것으로 또한 고려된다.
***
본 개시내용은 법적인 문서이기 때문에, 다양한 용어들 및 문구들은 행정적 및 사법적 해석의 대상이 될 수 있다. 본 개시내용 전반에 걸쳐 제공되는 정의들뿐만 아니라 다음의 단락들이 본 개시내용에 기초하여 작성되는 청구항들을 해석하는 방법을 결정하는 데 사용될 것이라는 공지가 본 명세서에 주어진다.
물품의 단수 형태(즉, "a", "an" 또는 "the"가 선행되는 명사 또는 명사 문구)에 대한 언급들은, 문맥상 명확하게 달리 지시되지 않는 한, "하나 이상"을 의미하는 것으로 의도된다. 따라서, 청구항에서 "항목"에 대한 언급은, 수반되는 상황 없이, 항목의 추가적인 인스턴스들을 배제하지 않는다. "복수"의 항목들은 항목들 중 2개 이상의 세트를 지칭한다.
"~할 수 있다"라는 단어는 본 명세서에서 강제적인 의미(즉, ~ 해야 하는)가 아니라 허용적인 의미(즉, ~할 가능성을 갖는, ~할 수 있는)로 사용된다.
용어들 "포함하는"("comprising" 및 "including") 및 이들의 형태는 개방형(open-ended)이며, "포함하지만 이로 한정되지 않는"을 의미한다.
용어 "또는"이 옵션들의 리스트에 관하여 본 개시내용에서 사용될 때, 문맥이 달리 제공하지 않는 한, 일반적으로 포괄적인 의미로 사용되는 것으로 이해될 것이다. 따라서, "x 또는 y"의 언급은 "x 또는 y, 또는 둘 모두"와 동등하고, 따라서 1) x지만 y 아님, 2) y지만 x 아님 및 3) x 및 y 둘 모두를 커버한다. 반면에, "둘 모두가 아니라 x 또는 y 중 어느 하나"와 같은 문구는 "또는"이 배타적인 의미로 사용되고 있다는 것을 명확하게 한다.
"w, x, y, 또는 z, 또는 이들의 임의의 조합" 또는 "... w, x, y, 및 z 중 적어도 하나"의 언급은 세트 내의 요소들의 총 개수까지 단일 요소를 수반하는 모든 가능성들을 커버하도록 의도된다. 예를 들어, 세트 [w, x, y, z]가 주어지면, 이러한 문구들은 세트의 임의의 단일 요소(예를 들어, w지만 x, y, 또는 z 아님), 임의의 2개의 요소들(예를 들어, w 및 x지만 y 또는 z 아님), 임의의 3개의 요소들(예를 들어, w, x 및 y지만, z 아님) 및 4개의 요소들 모두를 커버한다. 따라서, "... w, x, y, 및 z 중 적어도 하나"라는 문구는 세트 [w, x, y, z]의 적어도 하나의 요소를 지칭하고, 이로써 요소들의 이러한 리스트 내의 모든 가능한 조합들을 커버한다. 이 문구는 w의 적어도 하나의 인스턴스, x의 적어도 하나의 인스턴스, y의 적어도 하나의 인스턴스, 및 z의 적어도 하나의 인스턴스가 있음을 요구하도록 해석되지 않아야 한다.
본 개시내용에서 다양한 "라벨들"이 명사들 또는 명사 문구들에 선행할 수 있다. 문맥이 달리 제공하지 않는 한, 특징에 대해 사용되는 상이한 라벨들(예를 들어, "제1 회로", "제2 회로", "특정 회로", "주어진 회로" 등)은 특징의 상이한 인스턴스들을 지칭한다. 부가적으로, 특징에 적용될 때, "제1", "제2" 및 "제3" 라벨들은, 달리 언급되지 않는 한, 어떠한 유형의 순서화(예를 들어, 공간적, 시간적, 논리적 등)를 의미하지 않는다.
문구 "기초하여"는 결정에 영향을 주는 하나 이상의 인자들을 설명하기 위해 사용된다. 이러한 용어는 부가적인 인자들이 결정에 영향을 줄 수 있는 가능성을 배제하지 않는다. 즉, 결정은 단지 특정된 인자들에 기초하거나 또는 그 특정된 인자들뿐만 아니라 다른, 불특정된 인자들에 기초할 수 있다. "B에 기초하여 A를 결정한다"라는 문구를 고려한다. 이러한 문구는 B가 A를 결정하는 데 사용되거나 A의 결정에 영향을 주는 인자라는 것을 명시한다. 이러한 문구는 A의 결정이 C와 같은 일부 다른 인자에 또한 기초할 수 있음을 배제하지 않는다. 또한, 이 문구는 A가 B만에 기초하여 결정되는 실시예를 커버하도록 의도된다. 본 명세서에서 사용되는 바와 같이, "에 기초하여"라는 문구는 "적어도 부분적으로 기초하여"라는 문구와 동의어이다.
문구들 "~ 에 응답하여" 및 "~ 에 응답으로"는 효과를 트리거하는 하나 이상의 인자들을 설명한다. 이러한 문구는 부가적인 인자들이 특정 인자들과 공동으로 또는 특정 인자들과는 독립적으로 영향을 주거나 또는 달리 효과를 트리거할 수 있는 가능성을 배제하지 않는다. 즉, 효과는 단지 이들 인자들에만 응답할 수 있거나 또는 특정 인자들 뿐만 아니라 다른 불특정 인자들에 응답할 수 있다. "B에 응답하여 A를 수행한다"라는 문구를 고려한다. 이러한 문구는 B가 A의 수행을 트리거하는 또는 A에 대한 특정 결과를 트리거하는 인자라는 것을 명시한다. 이러한 문구는 A를 수행하는 것이 C와 같은 일부 다른 인자에 또한 응답할 수 있음을 배제하지 않는다. 이러한 문구는 또한 A를 수행하는 것이 B와 C에 응답하여 공동으로 수행될 수 있다는 것을 배제하지 않는다. 이러한 문구는 또한 A가 B에만 응답하여 수행되는 실시예를 커버하도록 의도된다. 본 명세서에서 사용되는 바와 같이, 문구 "응답하여"는 문구 "적어도 부분적으로 응답하여"와 동의어이다. 유사하게, 문구 "~ 에 응답하여"는 문구 "적어도 부분적으로 응답하여"와 동의어이다.
***
본 개시내용 내에서, 상이한 엔티티들(이는, "유닛들", "회로들", 다른 컴포넌트들 등으로 다양하게 지칭될 수 있음)은 하나 이상의 태스크들 또는 동작들을 수행하도록 "구성된" 것으로 설명되거나 또는 청구될 수 있다. 이러한 표현-[하나 이상의 태스크들을 수행]하도록 구성된 [엔티티]-은 본 명세서에서 구조(즉, 물리적인 것)를 지칭하는 데 사용된다. 더 상세하게는, 이러한 표현은 이러한 구조가 동작 동안 하나 이상의 태스크들을 수행하도록 배열됨을 나타내는 데 사용된다. 구조는 그 구조가 현재 동작되고 있지 않더라도 일부 태스크를 수행하도록 "구성된다"고 말할 수 있다. 따라서, 일부 태스크를 수행"하도록 구성된" 것으로 설명된 또는 언급된 엔티티는 디바이스, 회로, 태스크를 구현하도록 실행가능한 프로그램 명령어들을 저장하는 메모리 및 프로세서 유닛을 갖는 시스템 등과 같은 물리적인 것을 지칭한다. 이러한 문구는 본 명세서에서 무형인 것을 지칭하기 위해 사용되지는 않는다.
일부 경우들에서, 다양한 유닛들/회로들/컴포넌트들은 태스크들 또는 동작들의 세트를 수행하는 것으로 본 명세서에서 설명될 수 있다. 이들 엔티티들은, 구체적으로 언급되지 않더라도, 그러한 태스크들/동작들을 수행하도록 "구성"된다는 것이 이해된다.
용어 "~ 하도록 구성된"은 "~하도록 구성가능한"을 의미하도록 의도되지 않는다. 예를 들어, 프로그래밍되지 않은 FPGA는 특정 기능을 수행하도록 "구성된" 것으로 간주되지 않을 것이다. 그러나, 이러한 프로그래밍되지 않은 FPGA는 그 기능을 수행하도록 "구성가능"할 수 있다. 적절한 프로그래밍 후에, 이어서 FPGA는 특정 기능을 수행하도록 "구성된다"고 말할 수 있다.
본 개시내용에 기초한 미국 특허 출원들의 목적들을 위해, 구조가 하나 이상의 태스크들을 수행하도록 "구성"된다고 청구항에서 언급하는 것은 명백히 그 청구항 요소에 대하여 35 U.S.C. §(112)(f)를 적용하지 않도록 의도된다. 출원인이 본 개시내용에 기초하여 미국 특허 출원의 심사 동안 섹션 112(f)의 적용을 원하면, [기능을 수행]"하기 위한 수단" 구조를 이용하여 청구항 요소들을 열거할 것이다.
상이한 "회로들"이 본 개시내용에서 설명될 수 있다. 이러한 회로들 또는 "회로부"는 조합 로직, 클로킹된 저장 디바이스들(예를 들어, 플립-플롭들, 레지스터들, 래치들 등), 유한 상태 머신들, 메모리(예를 들어, 랜덤 액세스 메모리, 내장형 동적 랜덤 액세스 메모리), 프로그래밍가능 로직 어레이들 등과 같은 다양한 유형들의 회로 요소들을 포함하는 하드웨어를 구성한다. 회로부는 맞춤 설계되거나 표준 라이브러리들로부터 취해질 수 있다. 다양한 구현들에서, 회로부는 적절하게 디지털 컴포넌트들, 아날로그 컴포넌트들, 또는 둘 모두의 조합을 포함할 수 있다. 특정 유형들의 회로들은 일반적으로 "유닛들"(예를 들어, 디코딩 유닛, 산술 로직 유닛(ALU), 기능 유닛, 메모리 관리 유닛(MMU) 등)로 지칭될 수 있다. 그러한 유닛들은 또한 회로들 또는 회로를 지칭한다.
따라서, 도면들에 예시되고 본 명세서에서 설명된 개시된 회로들/유닛들/컴포넌트들 및 다른 요소들은 이전 단락에서 설명된 것들과 같은 하드웨어 요소들을 포함한다. 많은 경우들에서, 특정 회로 내의 하드웨어 요소들의 내부 배열은 그 회로의 기능을 설명함으로써 특정될 수 있다. 예를 들어, 특정 "디코딩 유닛"은 "명령어의 오피코드를 프로세싱하고 그 명령어를 복수의 기능 유닛들 중 하나 이상에 라우팅하는" 기능을 수행하는 것으로 설명될 수 있으며, 이는 디코딩 유닛이 이러한 기능을 수행하도록 "구성됨"을 의미한다. 이러한 기능의 규격은, 컴퓨터 분야의 당업자들에게, 회로에 대한 가능한 구조들의 세트를 암시하기에 충분하다.
다양한 실시예들에서, 이전 단락에서 논의된 바와 같이, 회로들, 유닛들, 및 다른 요소들은 이들이 구현하도록 구성된 기능들 또는 동작들에 의해 정의될 수 있다. 그러한 회로들/유닛들/컴포넌트들의 서로에 대한 배열 및 이들이 상호작용하는 방식은, 마이크로아키텍처 정의의 물리적 구현을 형성하도록 집적 회로에서 궁극적으로 제조되거나 FPGA로 프로그래밍되는 하드웨어의 마이크로아키텍처 정의를 형성한다. 따라서, 마이크로아키텍처 정의는 많은 물리적 구현들이 유도될 수 있는 구조로서 당업자들에 의해 인식되며, 이들 모두는 마이크로아키텍처 정의에 의해 설명된 더 넓은 구조에 속한다. 즉, 본 개시내용에 따라 공급되는 마이크로아키텍처 정의를 제공받는 당업자는, 과도한 실험 없이 그리고 통상의 기술의 적용으로, 회로들/유닛들/컴포넌트들의 디스크립션을 베릴로그 또는 VHDL과 같은 하드웨어 디스크립션 언어(HDL)로 코딩함으로써 구조를 구현할 수 있다. HDL 디스크립션은 종종, 기능적으로 보일 수 있는 방식으로 표현된다. 그러나, 당업자들에게, 이러한 HDL 디스크립션은 회로, 유닛 또는 컴포넌트의 구조를 다음 레벨의 구현 세부사항으로 변환하는 데 사용되는 방식이다. 그러한 HDL 디스크립션은 (통상적으로 합성가능하지 않은) 거동 코드, (거동 코드와는 대조적으로, 통상적으로 합성가능한) 레지스터 전송 언어(RTL) 코드, 또는 구조적 코드(예를 들어, 로직 게이트들 및 그들의 연결성을 특정하는 넷리스트)의 형태를 취할 수 있다. HDL 디스크립션은 주어진 집적 회로 제조 기술을 위해 설계된 셀들의 라이브러리에 대해 순차적으로 합성될 수 있고, 타이밍, 전력 및 다른 이유들로 인해 수정되어 최종 설계 데이터베이스를 생성할 수 있으며, 이는 파운드리(foundry)로 송신되어 마스크들을 생성하고 궁극적으로 집적 회로를 생성할 수 있다. 일부 하드웨어 회로들 또는 그의 부분들은 또한 회로도 편집기(schematic editor)로 맞춤 설계될 수 있고 합성된 회로부와 함께 집적 회로 설계 내로 캡처될 수 있다. 집적 회로는 트랜지스터들, 및 다른 회로 요소들(예를 들어, 커패시터들, 저항기들, 인덕터들 등과 같은 수동 요소들) 및 트랜지스터들과 회로 요소들 사이의 상호접속부를 포함할 수 있다. 일부 실시예들은 하드웨어 회로들을 구현하기 위해 함께 결합된 다수의 집적 회로들을 구현할 수 있고, 그리고/또는 일부 실시예들에서는 이산 요소들이 사용될 수 있다. 대안적으로, HDL 설계는 FPGA(Field Programmable Gate Array)와 같은 프로그래밍가능 로직 어레이로 합성될 수 있으며 FPGA에서 구현될 수 있다. 회로들의 그룹의 설계와 이들 회로들의 후속 저레벨 구현 사이의 이러한 디커플링은 일반적으로, 회로 또는 로직 설계자가 회로가 무엇을 하도록 구성되는지의 설명을 넘어서 저레벨 구현에 대한 특정 세트의 구조들을 특정하지 않는 시나리오를 도출하는데, 이는 이러한 프로세스가 회로 구현 프로세스의 상이한 스테이지에서 수행되기 때문이다.
회로 요소들의 많은 상이한 저-레벨 조합들이 회로의 동일한 규격을 구현하는 데 사용될 수 있다는 사실은 그 회로에 대한 다수의 등가 구조들을 초래한다. 언급된 바와 같이, 이러한 저레벨 회로 구현들은 제조 기술의 변화들, 집적 회로를 제조하기 위해 선택된 파운드리, 특정 프로젝트를 위해 제공된 셀들의 라이브러리 등에 따라 변할 수 있다. 많은 경우들에서, 이들 상이한 구현들을 생성하기 위해 상이한 설계 도구들 또는 방법론들에 의해 이루어지는 선택들은 임의적일 수 있다.
게다가, 회로의 특정 기능 규격의 단일 구현이 주어진 실시예에 대해 많은 수의 디바이스들(예를 들어, 수백만 개의 트랜지스터들)을 포함하는 것이 일반적이다. 따라서, 엄청난 볼륨의 이러한 정보는, 등가의 가능한 구현들의 방대한 어레이는 말할 것도 없이, 단일 실시예를 구현하는 데 사용되는 저레벨 구조의 완전한 설명을 제공하는 것을 비실용적으로 만든다. 이러한 이유로, 본 개시내용은 업계에서 일반적으로 사용되는 기능적 속기(shorthand)를 사용하여 회로들의 구조를 설명한다.

Claims (20)

  1. 장치로서,
    광선이 그래픽 장면 내의 프리미티브(primitive)와 교차하는지 여부를 결정하도록 구성된 그래픽 프로세서
    를 포함하고, 상기 그래픽 프로세서는,
    상기 프리미티브의 제1 표현을 양자화하여 상기 프리미티브의 감소된 정밀도의 인터벌 표현을 생성하도록 하는 것 - 상기 인터벌 표현은 상기 프리미티브의 제1 표현에 의해 특정된 대응하는 값들을 커버하도록 보장되는 인터벌 값들을 포함함 -;
    상기 광선의 제1 표현을 양자화하여 상기 광선의 감소된 정밀도의 인터벌 표현을 생성하도록 하는 것 - 상기 인터벌 표현은 상기 광선의 제1 표현에 의해 특정된 대응하는 값들을 커버하도록 보장되는 인터벌 값들을 포함함 -; 및
    인터벌 연산(interval arithmetic)을 사용하여, 상기 프리미티브의 인터벌 표현의 좌표들 및 상기 광선의 인터벌 표현의 좌표들에 기초하여 초기 교차 결과를 결정하도록 하는 것 - 상기 초기 교차 결과에 의해 표시된 누락부(miss)는 상기 프리미티브의 제1 표현 및 상기 광선의 제1 표현에 대한 히트(hit)가 아니도록 보장됨 - 을 포함하는 교차 테스트를 수행하도록 구성된 광선 교차 회로부를 포함하는, 장치.
  2. 제1항에 있어서, 전단 인자 회로부를 추가로 포함하고, 상기 전단 인자 회로부는,
    광선 방향 정보 및 스케일 정보에 기초하여 전단 인자들의 인터벌 표현들을 생성하도록; 그리고
    상기 프리미티브의 양자화된 표현 및 상기 전단 인자들의 인터벌 표현에 기초하여 전단된 정점 인터벌들을 생성하도록 구성되고,
    상기 초기 교차 결과는 상기 전단된 정점 인터벌들에 기초하는, 장치.
  3. 제2항에 있어서, 상기 전단 인자 회로부는,
    광선 방향 벡터에 대한 임계 기여를 제공하는 좌표 방향에서 상기 광선의 기점(origin)에 대한 제1 좌표를 표현하기 위한 제1 정밀도; 및
    다른 방향들에서 상기 광선의 기점에 대한 좌표들을 표현하기 위한 제2, 더 큰 정밀도를 사용하도록 구성되는, 장치.
  4. 제1항에 있어서, 상기 프리미티브의 제1 표현의 양자화는 인터벌의 하한에 대해 0으로 라운딩된(rounded) 고정 소수점 양자화된 표현, 및 상기 인터벌의 상한에 대해 상기 하한 플러스 하나의 최소 정밀도 단위(one unit of least precision, ULP)를 사용하는, 장치.
  5. 제1항에 있어서, 상기 프리미티브의 제1 표현은 삼각형 쌍의 표현이고, 상기 표현은 상기 삼각형 쌍 내의 2개의 삼각형 프리미티브들에 대한 최대 4개의 정점들을 포함하고, 상기 그래픽 프로세서는 주어진 삼각형 쌍의 삼각형들을 순차적으로 프로세싱하도록 구성된 회로부를 포함하는, 장치.
  6. 제1항에 있어서, 상기 광선의 감소된 정밀도의 인터벌 표현은 일정 인터벌로서 표현되는 양자화된 광선 시간을 포함하는, 장치.
  7. 제6항에 있어서,
    모션 블러 시간 인터벌 내의 상이한 시점들에서의 상기 프리미티브의 제1 및 제2 포지션들에 기초하여, 상기 프리미티브의 감소된 정밀도의 인터벌 표현을 생성하여, 상기 프리미티브의 감소된 정밀도의 인터벌 표현이, 상기 양자화된 광선 시간을 표현하는 인터벌 동안, 상기 프리미티브의 모든 가능한 위치들을 커버하게 하도록 구성되는 회로부를 추가로 포함하는, 장치.
  8. 제1항에 있어서, 잠재적 히트 초기 교차 결과에 응답하여, 상기 그래픽 프로세서는 상기 프리미티브의 제1 표현 및 상기 광선의 제1 표현을 사용하여 교차 테스트를 수행하도록 구성되는, 장치.
  9. 제1항에 있어서, 상기 장치는 컴퓨팅 디바이스이고, 상기 컴퓨팅 디바이스는,
    중앙 프로세싱 유닛;
    디스플레이; 및
    네트워크 인터페이스 회로부를 추가로 포함하는, 장치.
  10. 방법으로서,
    그래픽 프로세서에 의해, 프리미티브의 제1 표현을 양자화하여 상기 프리미티브의 감소된 정밀도의 인터벌 표현을 생성하는 단계 - 상기 인터벌 표현은 상기 프리미티브의 제1 표현에 의해 특정된 대응하는 값들을 커버하도록 보장되는 인터벌 값들을 포함함 -;
    상기 그래픽 프로세서에 의해, 광선의 제1 표현을 양자화하여 상기 광선의 감소된 정밀도의 인터벌 표현을 생성하는 단계 - 상기 인터벌 표현은 상기 광선의 제1 표현에 의해 특정된 대응하는 값들을 커버하도록 보장되는 인터벌 값들을 포함함 -; 및
    상기 그래픽 프로세서에 의해 인터벌 연산을 사용하여, 상기 프리미티브의 인터벌 표현의 좌표들 및 상기 광선의 인터벌 표현의 좌표들에 기초하여 초기 교차 결과를 결정하는 단계 - 상기 초기 교차 결과에 의해 표시된 누락부는 상기 프리미티브의 제1 표현 및 상기 광선의 제1 표현에 대한 히트가 아니도록 보장됨 - 를 포함하는, 방법.
  11. 제10항에 있어서,
    상기 그래픽 프로세서에 의해, 광선 방향 정보 및 스케일 정보에 기초하여 전단 인자들의 인터벌 표현들을 생성하는 단계; 및
    상기 그래픽 프로세서에 의해, 상기 프리미티브의 양자화된 표현 및 상기 전단 인자들의 인터벌 표현에 기초하여 전단된 정점 인터벌들을 생성하는 단계를 추가로 포함하고,
    상기 초기 교차 결과는 상기 전단된 정점 인터벌들에 기초하는, 방법.
  12. 제10항에 있어서, 상기 프리미티브의 제1 표현을 양자화하는 단계는 인터벌의 하한에 대해 0으로 라운딩된 고정 소수점 양자화된 표현, 및 상기 인터벌의 상한에 대해 상기 하한 플러스 하나의 최소 정밀도 단위(ULP)를 사용하는, 방법.
  13. 설계에 따른 회로를 생성하기 위해 설계 정보를 사용하도록 구성되는 반도체 제조 시스템에 의해 인식되는 포맷으로 하드웨어 집적 회로의 적어도 일부분의 설계를 특정하는 상기 설계 정보를 저장하는 비일시적 컴퓨터 판독가능 저장 매체로서, 상기 설계 정보는,
    상기 회로가, 광선이 그래픽 장면 내의 프리미티브와 교차하는지 여부를 결정하도록 구성된 그래픽 프로세서를 포함하는 것
    을 특정하고, 상기 그래픽 프로세서는,
    상기 프리미티브의 제1 표현을 양자화하여 상기 프리미티브의 감소된 정밀도의 인터벌 표현을 생성하도록 하는 것 - 상기 인터벌 표현은 상기 프리미티브의 제1 표현에 의해 특정된 대응하는 값들을 커버하도록 보장되는 인터벌 값들을 포함함 -;
    상기 광선의 제1 표현을 양자화하여 상기 광선의 감소된 정밀도의 인터벌 표현을 생성하도록 하는 것 - 상기 인터벌 표현은 상기 광선의 제1 표현에 의해 특정된 대응하는 값들을 커버하도록 보장되는 인터벌 값들을 포함함 -; 및
    인터벌 연산을 사용하여, 상기 프리미티브의 인터벌 표현의 좌표들 및 상기 광선의 인터벌 표현의 좌표들에 기초하여 초기 교차 결과를 결정하도록 하는 것 - 상기 초기 교차 결과에 의해 표시된 누락부는 상기 프리미티브의 제1 표현 및 상기 광선의 제1 표현에 대한 히트가 아니도록 보장됨 - 을 포함하는 교차 테스트를 수행하도록 구성된 광선 교차 회로부를 포함하는, 비일시적 컴퓨터 판독가능 저장 매체.
  14. 제13항에 있어서, 상기 설계 정보는,
    상기 회로가 전단 인자 회로부를 포함하는 것
    을 추가로 특정하고, 상기 전단 인자 회로부는,
    광선 방향 정보 및 스케일 정보에 기초하여 전단 인자들의 인터벌 표현들을 생성하도록; 그리고
    상기 프리미티브의 양자화된 표현 및 상기 전단 인자들의 인터벌 표현에 기초하여 전단된 정점 인터벌들을 생성하도록 구성되고,
    상기 초기 교차 결과는 상기 전단된 정점 인터벌들에 기초하는, 비일시적 컴퓨터 판독가능 저장 매체.
  15. 제14항에 있어서, 상기 전단 인자 회로부는,
    광선 방향 벡터에 대한 임계 기여를 제공하는 좌표 방향에서 상기 광선의 기점에 대한 제1 좌표를 표현하기 위한 제1 정밀도; 및
    다른 방향들에서 상기 광선의 기점에 대한 좌표들을 표현하기 위한 제2, 더 큰 정밀도를 사용하도록 구성되는, 비일시적 컴퓨터 판독가능 저장 매체.
  16. 제13항에 있어서, 상기 프리미티브의 제1 표현의 양자화는 인터벌의 하한에 대해 0으로 라운딩된 고정 소수점 양자화된 표현, 및 상기 인터벌의 상한에 대해 상기 하한 플러스 하나의 최소 정밀도 단위(ULP)를 사용하는, 비일시적 컴퓨터 판독가능 저장 매체.
  17. 제13항에 있어서, 상기 프리미티브의 제1 표현은 삼각형 쌍의 표현으로서, 상기 표현은 상기 삼각형 쌍 내의 2개의 삼각형 프리미티브들에 대한 최대 4개의 정점들을 포함하고, 상기 그래픽 프로세서는 주어진 삼각형 쌍의 삼각형들을 순차적으로 프로세싱하도록 구성된 회로부를 포함하는, 비일시적 컴퓨터 판독가능 저장 매체.
  18. 제13항에 있어서, 상기 광선의 감소된 정밀도의 인터벌 표현은 일정 인터벌로서 표현되는 양자화된 광선 시간을 포함하는, 비일시적 컴퓨터 판독가능 저장 매체.
  19. 제18항에 있어서, 상기 설계 정보는,
    상기 회로가, 모션 블러 시간 인터벌 내의 상이한 시점들에서의 상기 프리미티브의 제1 및 제2 포지션들에 기초하여, 상기 프리미티브의 감소된 정밀도의 인터벌 표현을 생성하여, 상기 프리미티브의 감소된 정밀도의 인터벌 표현이, 상기 양자화된 광선 시간을 표현하는 인터벌 동안, 상기 프리미티브의 모든 가능한 위치들을 커버하게 하도록 구성되는 회로부를 포함하는 것
    을 추가로 특정하는, 비일시적 컴퓨터 판독가능 저장 매체.
  20. 제13항에 있어서, 잠재적 히트 초기 교차 결과에 응답하여, 상기 그래픽 프로세서는 상기 프리미티브의 제1 표현 및 상기 광선의 제1 표현을 사용하여 교차 테스트를 수행하도록 구성되는, 비일시적 컴퓨터 판독가능 저장 매체.
KR1020220115377A 2021-09-24 2022-09-14 양자화 및 인터벌 표현들을 갖는 광선 교차 테스트 KR20230043717A (ko)

Applications Claiming Priority (6)

Application Number Priority Date Filing Date Title
US202163248143P 2021-09-24 2021-09-24
US63/248,143 2021-09-24
US17/456,503 US11830124B2 (en) 2021-09-24 2021-11-24 Quantized ray intersection testing with definitive hit detection
US17/456,503 2021-11-24
US17/456,483 US11734871B2 (en) 2021-09-24 2021-11-24 Ray intersection testing with quantization and interval representations
US17/456,483 2021-11-24

Publications (1)

Publication Number Publication Date
KR20230043717A true KR20230043717A (ko) 2023-03-31

Family

ID=83933384

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020220115377A KR20230043717A (ko) 2021-09-24 2022-09-14 양자화 및 인터벌 표현들을 갖는 광선 교차 테스트

Country Status (5)

Country Link
KR (1) KR20230043717A (ko)
CN (2) CN115861518B (ko)
DE (1) DE102022122793A1 (ko)
GB (2) GB202318608D0 (ko)
TW (2) TWI822330B (ko)

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101297325B (zh) * 2005-12-29 2013-04-24 英特尔公司 用于射线跟踪的方法和装置
US8139060B2 (en) * 2006-11-28 2012-03-20 International Business Machines Corporation Ray tracing image processing system
KR20140023615A (ko) * 2012-08-16 2014-02-27 삼성전자주식회사 병렬 파이프라인을 사용하는 그래픽 처리 방법 및 장치
US9805498B2 (en) * 2015-02-06 2017-10-31 Intel Corporation Method and apparatus for direct and interactive ray tracing of a subdivision surface
US10297068B2 (en) * 2017-06-06 2019-05-21 Adshir Ltd. Method for ray tracing augmented objects
US10290143B2 (en) * 2017-06-14 2019-05-14 Imagination Technologies Limited Compressed ray direction data in a ray tracing system
US10438397B2 (en) * 2017-09-15 2019-10-08 Imagination Technologies Limited Reduced acceleration structures for ray tracing systems
US10699465B1 (en) * 2018-12-28 2020-06-30 Intel Corporation Cluster of scalar engines to accelerate intersection in leaf node
US11321910B2 (en) * 2019-04-04 2022-05-03 Intel Corporation Apparatus and method for reduced precision bounding volume hierarchy construction
US10970914B1 (en) * 2019-11-15 2021-04-06 Imagination Technologies Limited Multiple precision level intersection testing in a ray tracing system
US11157238B2 (en) * 2019-11-15 2021-10-26 Intel Corporation Use of a single instruction set architecture (ISA) instruction for vector normalization
US11663777B2 (en) * 2020-03-15 2023-05-30 Intel Corporation Apparatus and method for motion blur with a dynamic quantization grid

Also Published As

Publication number Publication date
GB202318608D0 (en) 2024-01-17
GB202212912D0 (en) 2022-10-19
GB2612681B (en) 2024-01-31
TWI822330B (zh) 2023-11-11
CN117593439A (zh) 2024-02-23
TW202403671A (zh) 2024-01-16
CN115861518B (zh) 2023-12-08
GB2612681A (en) 2023-05-10
TW202314645A (zh) 2023-04-01
CN115861518A (zh) 2023-03-28
DE102022122793A1 (de) 2023-03-30

Similar Documents

Publication Publication Date Title
US11107266B2 (en) Method and apparatus for the proper ordering and enumeration of multiple successive ray-surface intersections within a ray tracing architecture
KR102668120B1 (ko) 병렬 광선 테스트를 갖는 광선 교차 회로
US20220375155A1 (en) Node Encoding for Spatially-Organized Ray Tracing Acceleration Data Structure
CN113743573A (zh) 用于访问和利用压缩数据及其状态信息的技术
US11830124B2 (en) Quantized ray intersection testing with definitive hit detection
US11734871B2 (en) Ray intersection testing with quantization and interval representations
TWI822330B (zh) 用量化及區間表示之射線相交測試
US11676327B2 (en) Temporal split techniques for motion blur and ray intersection
US12002190B2 (en) Primitive testing for ray intersection at multiple precisions
US11210761B1 (en) Circuitry to determine set of priority candidates
KR100791478B1 (ko) 정점 처리를 위한 인코딩 장치, 디코딩 장치 및 그 방법
TW202416229A (zh) 用以偵測射線與圖形基元之間的相交的設備及方法,以及非暫時性電腦可讀儲存媒體

Legal Events

Date Code Title Description
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right