KR20160142166A - 그래픽 프로세서 - Google Patents

그래픽 프로세서 Download PDF

Info

Publication number
KR20160142166A
KR20160142166A KR1020150078166A KR20150078166A KR20160142166A KR 20160142166 A KR20160142166 A KR 20160142166A KR 1020150078166 A KR1020150078166 A KR 1020150078166A KR 20150078166 A KR20150078166 A KR 20150078166A KR 20160142166 A KR20160142166 A KR 20160142166A
Authority
KR
South Korea
Prior art keywords
ray
raster
tracing
rendering
hit point
Prior art date
Application number
KR1020150078166A
Other languages
English (en)
Other versions
KR102397001B1 (ko
Inventor
박진홍
서영득
신철호
Original Assignee
엘지전자 주식회사
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 엘지전자 주식회사 filed Critical 엘지전자 주식회사
Priority to KR1020150078166A priority Critical patent/KR102397001B1/ko
Publication of KR20160142166A publication Critical patent/KR20160142166A/ko
Application granted granted Critical
Publication of KR102397001B1 publication Critical patent/KR102397001B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • 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/04Texture mapping
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/06Ray-tracing

Abstract

본 발명의 일실시예에 따른 그래픽 프로세서는, 래스터(Raster) 렌더링 파이프파인(pipeline)의 스테이지들 중 적어도 하나의 스테이지(stage)를 수행하는 래스터 전용부와 레이-트레이싱(Ray-tracing) 렌더링 파이프파인(pipeline)의 스테이지들 중 적어도 하나의 스테이지를 수행하는 레이-트레이싱 전용부, 및, 래스터 렌더링과 레이-트레이싱 렌더링 파이프파인의 스테이지들 중 적어도 하나의 스테이지를 수행하는 동작하는 공통 처리부를 포함하고, 래스터 전용부와 공통 처리부가 레스터 렌더링을 수행하고, 레이-트레이싱 전용부와 공통 처리부가 레이-트레이싱 렌더링을 수행하는 것을 특징으로 한다. 이에 따라, 하나의 그래픽 프로세서로 래스터 렌더링과 레이-트레이싱 렌더링을 모두 처리할 수 있다.

Description

그래픽 프로세서{Graphic Processor}
본 발명은 그래픽 프로세서(Graphics Processor)에 관한 것으로서, 더욱 상세하게는 래스터(Raster) 렌더링(rendering)과 레이-트레이싱(Ray-tracing) 렌더링을 모두 처리할 수 있는 그래픽 프로세서에 관한 것이다.
3D 그래픽 기술은 기하 데이터(Geometric Data)의 3D 표현을 사용하는 그래픽 기술로, 이를 위한 다양한 방식들이 제안되고 있다.
대표적으로, 3D 객체를 화면(screen)에 투영(projection)하고, 벡터 데이터를 픽셀 패턴 이미지로 변환하여 렌더링하는 래스터(raster) 렌더링과 카메라의 시점에서부터 영상의 각 픽셀을 향해 발사된 광선(ray)을 따라 입사하는 빛의 경로를 추적함으로써 렌더링하는 레이-트레이싱(Ray-tracing) 렌더링 방식이 있다.
래스터(또는 래스터라이제이션(Rasterization)) 렌더링 방식은 가장 많이 사용되고 있지만, 다른 그래픽 기술에 비하여 고품질의 영상을 생성하는데 한계가 있다.
레이-트레이싱(Ray-tracing) 렌더링 방식은 고품질의 영상을 생성할 수 있지만, 광선 추적을 위해 사용되는 연산양이 많아, 하드웨어 자원을 많이 소모하고 처리 속도가 느려질 수 있다.
일반적으로 3차원 그래픽기술은 많은 연산량으로 인하여 별개의 고성능 그래픽 프로세서를 요구할 수 있다. 특히, 레이-트레이싱 렌더링의 경우 더 높은 성능의 그래픽 프로세서를 요구할 수 있다. 이는 하드웨어 자원이 비효율적으로 이용되거나, 비용이 증가하는 문제점이 발생할 수 있다.
본 발명의 목적은, 적은 비용으로 래스터 렌더링과 레이-트레이싱 렌더링을 모두 처리할 수 있는 통합 그래픽 프로세서 및 그 동작 방법을 제공함에 있다.
상기 목적을 달성하기 위한 본 발명의 실시예에 따른 그래픽 프로세서는, 래스터(Raster) 렌더링(rendering) 파이프파인(pipeline)의 스테이지들 중 적어도 하나의 스테이지(stage)를 수행하는 래스터 전용부와 레이-트레이싱(Ray-tracing) 렌더링 파이프파인(pipeline)의 스테이지들 중 적어도 하나의 스테이지를 수행하는 레이-트레이싱 전용부, 및, 래스터 렌더링과 레이-트레이싱 렌더링 파이프파인의 스테이지들 중 적어도 하나의 스테이지를 수행하는 동작하는 공통 처리부를 포함하고, 래스터 전용부와 공통 처리부가 레스터 렌더링을 수행하고, 레이-트레이싱 전용부와 공통 처리부가 레이-트레이싱 렌더링을 수행하는 것을 특징으로 한다.
본 발명에 따르면, 하나의 그래픽 프로세서로 래스터 렌더링과 레이-트레이싱 렌더링을 모두 처리할 수 있다.
도 1은 통상적인 래스터 렌더링 파이프라인의 일예를 도시한 도면이다.
도 2는 종래 레이-트레이싱 렌더링 파이프라인의 일예를 도시한 도면이다.
도 3은 본 발명의 일실시예에 따른 그래픽 프로세서의 블록도이다.
도 4는 본 발명의 실시예에 따른 래스터 렌더링 파이프라인의 일예를 도시한 도면이다.
도 5는 본 발명의 실시예에 레이-트레이싱 렌더링 파이프라인의 일예를 도시한 도면이다.
도 6 내지 도 9는 본 발명의 실시예에 따른 그래픽 프로세서의 동작을 설명하기 위해 참조되는 도면이다.
이하에서는 첨부한 도면을 참조하여 본 발명의 실시예를 상세하게 설명한다. 그러나 본 발명이 이러한 실시예에 한정되는 것은 아니며 다양한 형태로 변형될 수 있음은 물론이다.
도면에서는 본 발명을 명확하고 간략하게 설명하기 위하여 설명과 관계 없는 부분의 도시를 생략하였으며, 명세서 전체를 통하여 동일 또는 극히 유사한 부분에 대해서는 동일한 도면 참조부호를 사용한다.
한편, 이하의 설명에서 사용되는 구성요소에 대한 접미사 "모듈" 및 "부"는 단순히 본 명세서 작성의 용이함만이 고려되어 부여되는 것으로서, 그 자체로 특별히 중요한 의미 또는 역할을 부여하는 것은 아니다. 따라서, 상기 "모듈" 및 "부"는 서로 혼용되어 사용될 수도 있다.
단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한 복수의 표현을 포함하는 것으로 이해되어야 하고, "포함하다" 또는 "가지다" 등의 용어는 설시된 특징, 숫자, 단계, 동작, 구성요소, 부분품 또는 이들을 조합한 것이 존재함을 지정하려는 것이지, 하나 또는 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성요소, 부분품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다.
각 단계들은 문맥상 명백하게 특정 순서를 기재하지 않은 이상 명기된 순서와 다르게 일어날 수 있다. 즉, 각단계들은 명기된 순서와 동일하게 일어날 수도 있고 실질적으로 동시에 수행될 수도 있으며 반대의 순서대로 수행될 수도 있다.
도 1은 통상적인 래스터 렌더링 파이프라인(Pipeline)의 일예를 도시한 도면으로, 전형적인 3D 그래픽(Graphics) 하드웨어(H/W)의 형태를 도시한 것이다.
벡터 데이터를 픽셀 패턴 이미지로 변환하여 렌더링하는 래스터 렌더링 파이프라인은 3차원 입력을 받아 2차원으로 변환 후 색상(color) 값을 계산하게 된다.
도 1을 참조하여 래스터 렌더링 파이프라인의 스테이지들(Stages)을 간략히 살펴보면, 먼저, 3차원 입력의 씬 데이터(Scene data)의 구성 단위인 프리미티브들(primitives)을 받아 라이팅(lighting)과 변환(transform)을 수행하고 결과물인 쉐이디드 프리미티브(shaded primitives)를 메모리에 저장하는 버텍스 셰이딩(Vertex Shading) 스테이지를 수행한다.
여기서, 프리미티브(primitive)는 그래픽 화상의 기본 구성요소로서, 예컨대, 꼭지점이나 다각형 등을 말하며, 대표적으로 삼각형이 이용될 수 있고, 이들 프리미티브들을 조합하여 렌더링된 영상을 구성할 수 있다.
한편, 타일링(tiling) 스테이지에서 화면 전체를 작은 크기의 타일(tile)로 나누고 해당 타일(tile)에 포함되는 프리미티브(primitive)들의 리스트를 만들어 메모리에 저장할 수 있다.
이후, 타일 단위의 프리미티브(primitive)들을 받아 삼각형을 구성하고 이를 2차원 형태로 변환하여 프래그먼트(fragment)를 생성하여 래스터화(Rasterization)한다.
이후, 텍스처링(Texturing) 등의 기법을 사용하여 프래그먼트(fragment)의 색상(color)을 계산하고(Fragment Shading), 알파 블렌딩(Alpha blending), 안티-앨리어싱(Anti-aliasing) 등의 기법을 추가적으로 적용한다.(Pixel Processing)
한편, 파이프라인을 거친 데이터는 타일 버퍼(Tile buffer)를 거쳐 프레임 버퍼(Frmae buffer)에 저장될 수 있다.
도 2는 종래 레이-트레이싱 렌더링 파이프라인의 일예를 도시한 도면이다.
레이-트레이싱 렌더링은 현실감은 래스터(Raster) 방식보다 연산량이 많은 방식의 고급 그래픽(Graphics) 기법으로, 가상적인 광원에서 나온 빛이 여러 물체의 표면에서 반사되는 경로를 추적하면서 각 물체의 모양을 형성하는 기법으로, 광원이 내보내는 빛의 방향을 세분하여 추적하는 정방향 광선추적법(Forward Ray Tracing)과 관찰자의 눈에서 광원방향으로 시선을 추적하는 역방향 광선추적법(Backward Ray Tracing)이 있다.
레이-트레이싱은 카메라로부터 광선을 발생 시키고 반사를 추적하여 색상(color) 값을 계산해 나가는 방식으로, 성능 향상을 위해 프리미티브(primitive) 데이터(data)를 가속 구조(Acceleration Structure, AS)의 형태로 재구성하여 이용하게 된다.
프리미티브는 씬(scene) 객체의 프리미티브일 수 있다. 예를 들어, 프리미티브는 삼각형일 수 있다.
도 2를 참조하여 레이-트레이싱 렌더링 파이프라인의 스테이지들(Stages)을 간략히 살펴보면, 먼저, 3차원 입력의 씬 데이터(Scene data)의 구성 단위인 프리미티브들(primitives)을 받아 쉐이디드 프리미티브(shaded primitives)를 생성하여 메모리에 저장한다.(transform)
AS는 광선 추적의 전처리 과정으로, AS Builder는 Traverse & Intersection (이하 T&I) 가속을 위해 쉐이디드 프리미티브(shaded primitives)를 Bounding Volume Hierarchy(BVH) 또는 k-d 트리(tree) 형태의 데이터 구조(data structure)로 생성할 수 있다.
한편, 해상도만큼의 광선(ray)을 생성한 후(Ray Generation), 발생된 광선에 대해서 어떤 폴리곤(Polygon) 광선과 교차하는지 탐색하기 위해, 생성된 광선을 캐스트(cast)하고 AS를 탐색(traverse), 교차점(intersection point)을 반복적으로 검색한다.(T&I)
즉, 화면의 각 픽셀(Pixel)에 대해 광선을 생성하고(Ray Generation), 생성된 광선들에 대한 3차원 모델(Geometry)의 탐색(traverse), 교차점(intersection point) 테스트를 수행한다. 교차점 데이터에는, 교차점의 좌표, 법선, 컬러, 텍스처 좌표 등이 포함될 수 있다
이에 따라 히트 포인트(Hit Point)를 계산하고, 교차점(Intersection point)에 대해 색상(color)을 계산한다.
한편, 프레임 버퍼(Frame Buffer)는 연산된 픽셀(Pixel)의 색상 정보를 저장할 수 있다.
도 3은 본 발명의 일실시예에 따른 그래픽 프로세서의 블록도이다.
도 3을 참조하면, 본 발명의 일실시예에 따른 그래픽 프로세서는, 래스터(Raster) 렌더링(rendering) 파이프파인(pipeline)의 스테이지들 중 적어도 하나의 스테이지(stage)를 수행하는 래스터 전용부(310, 320, 330)와 레이-트레이싱(Ray-tracing) 렌더링 파이프파인(pipeline)의 스테이지들 중 적어도 하나의 스테이지를 수행하는 레이-트레이싱 전용부(500, 710, 720), 및, 상기 래스터 렌더링과 상기 레이-트레이싱 렌더링 파이프파인(pipeline)의 스테이지들 중 적어도 하나의 스테이지를 수행하는 동작하는 공통 처리부(100, 400, 600, 810)를 포함할 수 있다.
본 발명은 래스터 그래픽(Raster graphics)과 레이-트레이싱(Ray-tracing)의 처리가 모두 가능한 통합 그래픽 프로세서(Graphics processor) 구조에 관한 것으로, 단일 그래픽 프로세서만으로 인스트럭션(instruction)에 따라 래스터 또는 레이-트레이싱 방식으로 3D 그래픽(Graphics) 영상을 생성할 수 있다.
본 발명은. 래스터(Raster) GPU와 레이-트레이싱(Ray-tracing)의 공통 부분을 공유하여 단일 프로세서 만으로도 두 가지 방식 모두 처리할 수 있도록 한다.
즉, 상기 래스터 전용부와 상기 공통 처리부가 상기 레스터 렌더링을 수행하고, 상기 레이-트레이싱 전용부와 상기 공통 처리부가 상기 레이-트레이싱 렌더링을 수행할 수 있다.
만약 래스터 그래픽(Raster Graphics) 입력이 들어오면 래스터 렌더링 파이프파인의 형태로 작업을 수행하고, 레이-트레이싱 그래픽(Ray-tracing Graphics) 입력이 들어오면, 래스터 렌더링 파이프파인의 일부분을 공유하고, 레이-트레이싱 렌더링에 필수적인 스테이지의 경우에는 전용 상기 레이-트레이싱 전용부를 통해 처리할 수 있다.
따라서, 두 방식의 전용 프로세서를 개별적으로 구비하는 경우나, 두 방식의 프로세서를 통합하지만 각 방식별로 다른 파이프라인으로 동작하는 경우에 발생할 수 있는 자원의 낭비나 비용 증가를 방지할 수 있다.
한편, 도 3의 본 발명의 일실시예에 따른 그래픽 프로세서 구조는 예시적인 것으로 본 발명은 이에 한정되지 않는다.
한편, 상기 래스터 전용부는, 화면 전체를 작은 크기의 타일(tile)로 나누고, 해당 타일에 포함되는 프리미티브(primitive)들의 리스트를 만들어 메모리에 저장하는 타일링 유닛(Tiling Unit, 310), 래스터화(Rasterization) 작업을 수행하는 래스터라이저(Rasterizer, 320)와 깊이 검사와 스텐실(Stencil) 검사를 수행하는 뎁스 앤 스텐실 유닛(Depth & Stencil Unit, 330)을 포함할 수 있다.
상기 타일링 유닛(310)은 래스터 렌더링 파이프라인의 타일링(Tiling) 스테이지를 수행할 수 있다.
상기 래스터라이저(320)는 버텍스(Vertex) 데이터를 수신하고, 수신된 버텍스 테이터를 타일기반으로 처리하여 처리하여 픽셀 및 그 관련된 정보를 포함하는 프래그먼트(fragment) 데이터를 생성할 수 있다.
상기 뎁스 앤 스텐실 유닛(Depth & Stencil Unit, 330)은 깊이 검사와 스텐실(Stencil) 검사를 수행할 수 있다.
깊이 검사는 렌더링하고자 하는 프래그먼트의 깊이값을, 소정 버퍼 또는 기타 저장부에 저장된 프래그먼트에 대응된 픽셀의 깊이값과 비교함으로써, 그 프래그먼트가 화면상에 픽셀로서 표시될 수 있는지 검사하는 작업을 의미하고, 스텐실 검사는 해당 프래그먼트와 관련하여 사용자에 의해 지정된 참조값과 소정 버퍼 또는 기타 저장부에 저장된 스텐실 값을 비교하는 것을 의미할 수 있다.
상기 뎁스 앤 스텐실 유닛(Depth & Stencil Unit, 330)은 프래그먼트 데이터의 각 픽셀에 대하여 저장된 스텐실 값을 레퍼런스 값에 비교하고, 각 픽셀들의 깊이 값을 저장된 대응되는 깊이 값과 비교하여, 비교 결과에 따라 픽셀을 패스하거나 폐기할 수 있다.
한편, 도 3에서는 상기 뎁스 앤 스텐실 유닛(Depth & Stencil Unit, 330)이 통합되어 있으나, 실시예에 따라서는 깊이 검사 유닛과 스텐실 검사 유닛을 별도로 구비될 수도 있다.
한편, 본 발명의 일실시예에 따른 그래픽 프로세는 스레드 컨트롤 유닛(200)을 포함할 수 있다.
스레드 컨트롤 유닛(200)는 그래픽 애플리케이션들이 원하는 결과를 달성하기 위해 스레드들을 생성하거나 수신하거나 관리할 수 있다.
한편, 스레드 컨트롤 유닛(200)은 래스터 렌더링 파이프 라인과 관련된 버텍스 스레드(Vertex Thread, 211)와 프래그먼트 스레드(Fragment Thread, 212)를 포함할 수 있다.
또한, 스레드 컨트롤 유닛(200)은 레이-트레이싱 렌더링 파이프 라인과 관련된 레이-트레이싱 스레드(Ray-Tracing Thread, 213)를 포함할 수 있다.
상기 레이-트레이싱 전용부는, 레이-트레이싱 유닛(Ray-Tracing Unit, 500)과 히트 포인트(Hit Point)들의 리스트를 생성하는 히트 포인트 리스트 크리터(Hit Point List Creator, 710) 및 상기 생성된 히트 포인트들의 리스트를 저장하는 히트 포인트 리스트 버퍼(Hit Point List Buffer, 720)를 포함할 수 있다.
한편, 상기 레이-트레이싱 유닛(500)은 가속 구조(AS)를 생성하는 AS-Builder(510)와 생성된 광선(ray)을 캐스트(cast)하고 상기 가속 구조(AS)를 상기 광선에 방향에 따라 탐색하고, 교차점(intersection point)을 반복적으로 검색하는 탐색 & 교차(Traverse & Intersection :T&I) 엔진 (520)을 포함할 수 있다.
한편, 실시예에 따라서는 T&I 엔진(520)이 광선(ray)을 생성할 수 있다.
또는 상기 레이-트레이싱 유닛(500)이 별도의 광선 생성부를 더 포함할 수 있다.
T&I 엔진(520)은 생성된 광선(ray)을 캐스트(cast)하고 상기 가속 구조(AS)를 상기 광선의 방향에 따라 탐색(travers)하고, 상기 가속 구조(AS)에서 광선과 교차되는 삼각형이 있는지 여부를 검색한다.
한편, 비용 효율을 고려하여, 히트 포인트의 계산은 T&I 엔진(520)에서 수행되도록 구현될 수 있다. 또는, 별도로 구비되는 히트 포인트 계산부에서 수행될 수 있다.
본 발명의 일실시예에 따르면, T&I시 히트 포인트(hit point) 정보를 각 광선(ray)의 레벨(level)에 따라 분리하여 저장할 수 있다.
한편, 상기 히트 포인트 리스트 크리터는, 히트 포인트 연산의 출력을 셰이더의 입력으로 변환할 수 있다.
한편, 상기 히트 포인트 리스트 버퍼는 타일 하나의 모든 히트 포인트 리스트를 저장할 수 있고, 상기 히트 포인트 리스트 버퍼는 하나의 타일에 대한 히트 포인트 연산이 끝나게 되면, 연산 결과를 버퍼링하여 데이터를 셰이더로 전송할 수 있다.
한편, 히트 포인트 리스트 크리터(Hit Point List Creator, 710) 및 히트 포인트 리스트 버퍼(Hit Point List Buffer, 720)는 도 7 내지 도 9를 참조하여 후술한다.
한편, 상기 공통 처리부는, 픽셀에 대한 색상 정보를 결정하고, 셰이딩(shading) 작업을 수행하는 통합 셰이더(Unified Shader, 500), 상기 픽셀에 대한 추가 그래픽 처리를 수행하는 픽셀 처리부(Pixel Processing Unit, 600)와 상기 결정된 색상 정보를 저장하는 타일 버퍼(810)를 포함할 수 있다.
상기 통합 셰이더(500)는 교차점의 색상을 계산하고(Lighting Calculation), 교차점의 텍스처(Texture) 값을 계산하여(Texture Mapping) 픽셀(Pixel)의 색상 정보를 결정, 생성할 수 있고, 추적이 처리된 광선의 데이터에 기반하여 추적된 광선에 대한 셰이딩을 처리할 수 있다.
상기 통합 셰이더(500)는 히트 포인트 정보(Hit Point information)을 이용하여 사용자에 의해 선택된 효과에 대응되는 색상 값으로 처리되도록 할 수 있다.
한편, 통합 셰이더(500)는 산술 연산들을 수행할 수 있는 복수의 연산 유닛(alithematic unit : ALU)을 포함할 수 있다.
한편, 통합 셰이더(500)는 실시예에 따라 정점의 위치가 어떻게 적용될 지 결정하는 버텍스 셰이더, 픽셀의 컬러값을 결정하는 픽셀 셰이더, 프래그먼트 셰이더 등을 포함할 수 있다.
한편, 상기 픽셀 처리부(600)는 2개의 프리미티브의 컬러를 하나의 컬러로 합성하는 컬러 블렌딩(Color blending), 안티-앨리어싱(Anti-Aliasing) 등의 추가 그래픽 처리를 수행할 수 있다.
이 경우에 추가 그래픽 처리의 수행으로 최종 픽셀(Pixel)의 색상 정보가 결정될 수 있다.
한편, 결정된 최종 픽셀(Pixel)의 색상 정보를 타일 단위로 타일 버퍼(810)에 저장할 수 있다.
한편, 상기 공통 처리부는 실시예에 따라서 커맨드들을 처리하는 커맨드 유닛(100), L1 캐시(Cache)(820), L2 캐시(830) 등을 더 포함할 수 있다.
그래픽 프로세서는 표준화된 커맨드들을 포함하는 소정 애플리케이션 프로그래밍 인터페이스(application programming interface : API)에 따라 동작을 수행하도록 구성될 수도 있다.
API 커맨드들은 사용자가 하드웨어 컴포넌트들의 사양에 대한 사용자 지식 없이 커맨드들을 실행하도록 그래픽 프로세서의 하드웨어 컴포넌트들에게 명령하는 것을 허용할 수 있다.
한편, 그래픽 프로세서는, API호출 및 카맨드들에 응답하여, 렌더링 동작을 수행할 수 있고, 프리미티브는 애플리케이션으로부터 수신된 그래픽스 커맨드에 따라 생성될 수 있다.
본 발명에 따른 그래픽 프로세서는 래스터(Raster)와 레이-트레이싱(Ray-tracing) 두 가지 렌더링 방식을 모두 지원하고, 래스터 그래픽(Raster Graphics) 입력이 들어오면 래스터 렌더링 파이프파인의 형태로 작업을 수행하고, 레이-트레이싱 그래픽(Ray-tracing Graphics) 입력이 들어오면, 래스터 렌더링 파이프파인의 일부분을 공유하고, 레이-트레이싱 렌더링에 필수적인 스테이지의 경우에는 전용 상기 레이-트레이싱 전용부를 통해 처리할 수 있다.
도 4는 본 발명의 실시예에 따른 래스터 모드에서의 래스터 렌더링 파이프라인의 일예를 도시한 도면이고, 도 5는 본 발명의 실시예에 레이-트레이싱 모드에서의 레이-트레이싱 렌더링 파이프라인의 일예를 도시한 도면이다.
도 4를 참조하면, 본 발명의 실시예에 따른 그래픽 프로세서는 래스터 모드에서는 도 1을 참조하여 설명한 래스터 파이프라인과 실질적으로 동일하게 동작하는 것을 확인할 수 있다.
도 5를 참조하면, 레이-트레이싱 모드에서 버텍스 셰이딩(Vertex shading), 프래그먼트 셰이딩(Fragment shading), 픽셀 프로세싱(Pixel processing), 타일 버퍼(Tile buffer) 등의 블럭을 공통으로 공유(share)하며 타일(tile) 단위로 레이-트레이싱(ray-tracing) 처리를 진행할 수 있다.
따라서, 래스터(Raster)와 레이-트레이싱(Ray-tracing)의 공통 부분을 공유하여 단일 프로세서만으로도 두 가지 방식 모두 처리할 수 있도록 한다.
도 5를 참조하면, 먼저, 3차원 입력의 씬 데이터(Scene data)의 구성 단위인 프리미티브들(primitives)을 받아 라이팅(lighting)과 변환(transform)을 수행하고 결과물인 쉐이디드 프리미티브(shaded primitives)를 메모리에 저장하는 버텍스 셰이딩(Vertex Shading) 스테이지를 수행한다.
이후, 타일링(tiling) 스테이지와 유사하게 화면 전체를 작은 크기의 타일(tile)로 나누고, 어떤 타일에 대하여 광선(Ray) 처리할 지에 대한 타일 인덱스를 생성하여(Tile Index Generation), 타일(tile) 단위로 레이-트레이싱(ray-tracing) 처리를 진행할 수 있다.
이후, 도 2를 참조하여 설명한 것과 같이, 레이-트레이싱(ray-tracing) 처리를 진행하다가, 히트 포인트를 계신한 후 히트 포인트 리스트를 생성(Hit Point List Generation)하고, 셰이딩 동작을 수행하게 된다.
셰이딩 동작도 타일(tile) 단위로 래스터 모드의 블럭을 공통으로 공유(share)하며 공통 처리부에서 수행할 수 있다.
이후, 타일 단위의 프리미티브(primitive)들을 받아 삼각형을 구성하고 이를 2차원 형태로 변환하여 프래그먼트(fragment)를 생성하고, 텍스처링(Texturing) 등의 기법을 사용하여 프래그먼트(fragment)의 색상(color)을 계산하고(Fragment Shading), 알파 블렌딩(Alpha blending), 안티-앨리어싱(Anti-aliasing) 등의 기법을 추가적으로 적용할 수 있다.(Pixel Processing)
한편, 파이프라인을 거친 데이터는 타일 버퍼(Tile buffer)를 거쳐 프레임 버퍼(Frmae buffer)에 저장될 수 있다.
도 6 내지 도 9는 본 발명의 실시예에 따른 그래픽 프로세서의 동작을 설명하기 위해 참조되는 도면이다.
도 6은 본 발명의 일실시예에 따른 그래픽 프로세서의 동작 방법의 순서도를 도시한 것이다.
도 6을 참조하면, 3차원 입력의 씬 데이터(Scene data)의 구성 단위인 프리미티브들(primitives)을 받아 라이팅(lighting)과 변환(transform)을 수행하고 결과물인 쉐이디드 프리미티브(shaded primitives)를 메모리에 저장하는 버텍스 셰이딩(Vertex Shading) 스테이지를 수행할 수 있다.(S610)
이후, 래스터 그래픽 입력인지 레이-트레이싱 그래픽 입력인지 여부(S620)에 따라 해당되는 동작을 수행하게 된다.
먼저, 래스터 그래픽 입력인 경우에, 화면 전체를 작은 크기의 타일(tile)들로 나누고 해당 타일(tile)에 포함되는 프리미티브(primitive)들의 리스트를 만들어 메모리에 저장할 수 있다.(S631)
이후, 타일 단위의 프리미티브(primitive)들을 2차원 형태로 변환하여 프래그먼트(fragment)를 생성하여 래스터화(Rasterization)한다.(S632)
이후, 텍스처링(Texturing) 등의 기법을 사용하여 프래그먼트(fragment)의 색상(color)을 계산할 수 있고(S650), 알파 블렌딩(Alpha blending), 안티-앨리어싱(Anti-aliasing) 등의 기법을 추가적으로 적용할 수 있다.(S660)
결정된 최종 픽셀 값들을 타일 버퍼(Tile buffer)에 저장하고(S670), 타일 버퍼(Tile buffer)를 거쳐 프레임 버퍼(Frmae buffer)에 저장할 수 있다.
레이-트레이싱 그래픽 입력인 경우에, 가속 구조(AS)를 생성하고(S641), 현재 타일의 인덱스를 생성한다.(S642) 이에 따라, 이후에 타일(tile) 단위로 레이-트레이싱(ray-tracing) 처리를 진행할 수 있다.
이후, 어느 하나의 타일을 위한 광선(Ray)을 생성하여(S643), T&I 동작을 타일 단위로 수행할 수 있다.(S644, S645)
한편, 히트 포인트의 색상을 계산하고(S646), 히트 포인트의 색상과 텍스터 좌표 등을 포함하는 히트 포인트 리스트를 생성하여 히트 포인트 리스트 버퍼에 저장한다.(S647)
한편, 광선의 깊이(depth)와 타일 당 광선의 개수를 체크하여 그 결과에 따라 상기 단계를 반복할 수 있다.(S648, S649)
한편, 타일(tile) 단위로 래스터 모드의 블럭을 공통으로 공유(share)하며 텍스처링(Texturing) 등의 기법을 사용하여 프래그먼트(fragment)의 색상(color)을 계산할 수 있고(S650), 알파 블렌딩(Alpha blending), 안티-앨리어싱(Anti-aliasing) 등의 기법을 추가적으로 적용할 수 있다.(S660)
통합 셰이더(500)는 광선 추적 결과에 따른 각 픽셀의 다양한 컬러 값을 누적 계산하여 픽셀별 컬러 값을 결정할 수 있다.
결정된 최종 픽셀 값들을 타일 버퍼(Tile buffer)에 저장하고(S670), 타일 버퍼(Tile buffer)를 거쳐 프레임 버퍼(Frmae buffer)에 저장할 수 있다.
본 발명의 일실시예에 따른 그래픽 프로세서는 T&I시 히트 포인트(hit point) 정보를 각 광선(ray)의 레벨(level)에 따라 분리하여 저장할 수 있다.
도 7은 멀티-레이어(Multi-Layer)로 히트 포인트를 동작하는 방법에 관한 순서도이고, 도 8은 멀티-레이어(Multi-Layer) 히트 포인트의 일예를 도시한 것이다.
도면들을 참조하면, 소정 광선(ray)에 대응하는 T&I가 수행되고,(S710) 소정 광선(ray)에 대응하는 히트 포인트 정보가 저장된다.(S720)
오브젝트 또는 백그라운드가 히트되었는 지를 판별하여(S730), 오브젝트가 히트된 경우에는 현재 광선의 깊이(depth)가 최대값보다 작고 이차 광선이 발생한 경우에는 상기 과정을 반복하여 수행하면서, 그 결과를 레벨(level)에 따라 분리하여 각각 멀티 레벨의 멀티 레이어로 저장할 수 있다.
도 8을 참조하면, 소정 광선(#n)을 생성하여 광선(#n)과 만나는 오브젝트를 찾기 위한 계산을 수행한다. 해당 광선(#n)과 만나게 되는 오브젝트가 반사 또는 굴절의 성질을 가지는 경우에는, 해당 광선(#n)이 오브젝트와 반사 또는 굴절되는 위치에서 반사 또는 굴절 광선(#n+1)을 생성할 수 있다.
또한 반사 또는 굴절 광선(#n+1)도 다시 오브젝트와 만나 반사 또는 굴절 광선(#n+x)를 생성할 수 있다. 이러한 광선(#n, #n+1, #n+x)에 대한 히트 포인트 정보를 각 광선의 레벨에 따라 분리하여 저장할 수 있다.
한편, 도 8에서는 16*16 타일을 예시하였지만 본 발명은 이에 한정되지 않는다.
도 9는 본 발명의 일실시예에 따른 히트 포인트 리스트 크리터(Hit Point List Creator, 710)와 히트 포인트 리스트 버퍼(Hit Point List Buffer, 720)를 이용한 히트 포인트 리스트(hit point list) 관리 방법에 대한 설명에 참조되는 도면이다.
상기 히트 포인트 리스트 크리터(Hit Point List Creator, 710)는 히트 포인트 연산의 출력을 셰이더의 입력으로 변환할 수 있다.
또한, 상기 히트 포인트 리스트 버퍼(Hit Point List Buffer, 720)는 타일 하나의 모든 히트 포인트 리스트를 저장할 수 있고, 하나의 타일에 대한 히트 포인트 연산이 끝나게 되면, 연산 결과를 버퍼링하여 데이터를 소정 셰이더, 예를 들어, 통합 셰이더(500)로 전송할 수 있다.
상기 히트 포인트 리스트 크리터(710)는 히트 포인트(Hit Point)들의 리스트(list)를 만들고 관리할 수 있다.
상기 히트 포인트 리스트 크리터(710)는 히트 포인트 연산(Hit Point Calculation)의 출력을 통합 셰이더(500)의 입력 또는 프래그먼트 셰이더(fragment shader)가 구비되는 실시예에서는 프래그먼트 셰이더의 입력으로 변환할 수 있다.
이 경우에, 상기 히트 포인트 리스트 크리터(710)는 히트 포인트의 스크린 좌표, 프리미티브의 스크린 좌표, 색상 텍스쳐 정보 등을 입력받아 히트 포인트의 색상, 히트 포인트의 텍스처 정보 등을 출력할 수 있다.
한편, 상기 히트 포인트 리스트 버퍼(Hit Point List Buffer, 720)는 타일(Tile) 하나의 모든 히트 포인트 리스트(hit point list)를 저장하기 위한 버버퍼(buffer)일 수 있다.
레이-트레이싱(Ray-tracing) 시 통합 셰이더(500)의 입력 또는 프래그먼트 셰이더(fragment shader)가 구비되는 실시예에서는 프래그먼트 셰이더의 입력은 1 타일(tile)의 히트 포인트 리스트(hit point list)로 이를 저장하기 위해 버퍼를 구비하는 것이다.
하나의 매크로 타일(macro tile)에 대한 히트 포인트 연산(hit point calculation)이 모두 끝나게 되면 이를 버퍼링(buffering)하여 데이터를 통합 셰이더(500)로 전송하거나 프래그먼트 셰이더(fragment shader)가 구비되는 실시예에서는 프래그먼트 셰이더로 전송할 수 있다.
이에 따라, 텍스쳐링(Texturing)이나 안티-앨리어싱(anti-aliasing) 시에 로컬티(locality) 증대로 성능을 향상시킬 수 있다.
한편, 본 발명의 일실시예에 따른 히트 포인트 리스트 크리터(710)와 히트 포인트 리스트 버퍼(720)는 본 발명에 따른 통합 그래픽 프로세서 뿐만 아니라, 통상적인 레이-트레이싱(Ray-tracing) 그래픽 시스템에도 적용할 수 있다.
본 발명에 따른 그래픽 프로세서 및 그 동작 방법은 상기한 바와 같이 설명된 실시예들의 구성과 방법이 한정되게 적용될 수 있는 것이 아니라, 상기 실시예들은 다양한 변형이 이루어질 수 있도록 각 실시예들의 전부 또는 일부가 선택적으로 조합되어 구성될 수도 있다.
한편, 본 발명의 실시예에 따른 그래픽 프로세서의 동작 방법은, CPU 등 프로세서가 읽을 수 있는 기록매체에 프로세서가 읽을 수 있는 코드로서 구현하는 것이 가능하다. 프로세서가 읽을 수 있는 기록매체는 프로세서에 의해 읽혀질 수 있는 데이터가 저장되는 모든 종류의 기록장치를 포함한다. 프로세서가 읽을 수 있는 기록매체의 예로는 ROM, RAM, CD-ROM, 자기 테이프, 플로피디스크, 광 데이터 저장장치 등이 있으며, 또한, 인터넷을 통한 전송 등과 같은 캐리어 웨이브의 형태로 구현되는 것도 포함한다. 또한, 프로세서가 읽을 수 있는 기록매체는 네트워크로 연결된 컴퓨터 시스템에 분산되어, 분산방식으로 프로세서가 읽을 수 있는 코드가 저장되고 실행될 수 있다.
또한, 이상에서는 본 발명의 바람직한 실시예에 대하여 도시하고 설명하였지만, 본 발명은 상술한 특정의 실시예에 한정되지 아니하며, 청구범위에서 청구하는 본 발명의 요지를 벗어남이 없이 당해 발명이 속하는 기술분야에서 통상의 지식을 가진자에 의해 다양한 변형실시가 가능한 것은 물론이고, 이러한 변형실시들은 본 발명의 기술적 사상이나 전망으로부터 개별적으로 이해되어져서는 안될 것이다.
타일링 유닛(Tiling Unit) : 310
래스터라이저(Rasterizer) : 320
Depth & Stencil Unit : 330
통합 셰이더 : 500
AS-Builder : 510
T&I 엔진 : 520
Pixel Processing Unit : 600
Hit Point List Creator : 710
Hit Point List Buffer : 720
타일 버퍼 : 810

Claims (10)

  1. 래스터(Raster) 렌더링(rendering) 파이프파인(pipeline)의 스테이지들 중 적어도 하나의 스테이지(stage)를 수행하는 래스터 전용부;와
    레이-트레이싱(Ray-tracing) 렌더링 파이프파인(pipeline)의 스테이지들 중 적어도 하나의 스테이지를 수행하는 레이-트레이싱 전용부; 및,
    상기 래스터 렌더링과 상기 레이-트레이싱 렌더링 파이프파인(pipeline)의 스테이지들 중 적어도 하나의 스테이지를 수행하는 동작하는 공통 처리부;를 포함하고,
    상기 래스터 전용부와 상기 공통 처리부가 상기 레스터 렌더링을 수행하고,
    상기 레이-트레이싱 전용부와 상기 공통 처리부가 상기 레이-트레이싱 렌더링을 수행하는 것을 특징으로 하는 그래픽 프로세서.
  2. 제1항에 있어서,
    래스터 그래픽(Raster Graphics) 입력이 들어오면 래스터 렌더링 파이프파인의 형태로 작업을 수행하고,
    레이-트레이싱 그래픽(Ray-tracing Graphics) 입력이 들어오면, 래스터 렌더링 파이프파인의 일부분을 공유하고, 레이-트레이싱 렌더링에 필수적인 스테이지의 경우에는 전용 상기 레이-트레이싱 전용부를 통해 처리하는 것을 특징으로 하는 그래픽 프로세서.
  3. 제1항에 있어서,
    상기 래스터 전용부는,
    화면 전체를 작은 크기의 타일(tile)로 나누고, 해당 타일에 포함되는 프리미티브(primitive)들의 리스트를 만들어 메모리에 저장하는 타일링 유닛(Tiling Unit), 래스터화(Rasterization) 작업을 수행하는 래스터라이저(Rasterizer)와 깊이 검사와 스텐실(Stencil) 검사를 수행하는 뎁스 앤 스텐실 유닛(Depth & Stencil Unit)을 포함하는 것을 특징으로 하는 그래픽 프로세서.
  4. 제1항에 있어서,
    상기 공통 처리부는,
    픽셀에 대한 색상 정보를 결정하고, 셰이딩(shading) 작업을 수행하는 통합 셰이더,
    상기 픽셀에 대한 추가 그래픽 처리를 수행하는 픽셀 처리부와
    상기 결정된 색상 정보를 저장하는 타일 버퍼를 포함하는 것을 특징으로 하는 그래픽 프로세서.
  5. 제1항에 있어서,
    상기 레이-트레이싱 전용부는,
    가속 구조을 생성하는 가속 구조 생성기(Acceleration Structure-Builder:AS-Builder), 생성된 광선(ray)을 cast 하고 상기 가속 구조를 상기 광선에 방향에 따라 탐색하고, 교차점(intersection point)을 반복적으로 검색하는 탐색 & 교차(Traverse & Intersection :T&I) 엔진, 히트 포인트(Hit Point)들의 리스트를 생성하는 히트 포인트 리스트 크리터, 및 상기 생성된 히트 포인트들의 리스트를 저장하는 히트 포인트 리스트 버퍼를 포함하는 것을 특징으로 하는 그래픽 프로세서.
  6. 제5항에 있어서,
    탐색 & 교차(T&I)시 히트 포인트(hit point) 정보를 각 광선(ray)의 레벨(level)에 따라 분리하여 저장시키는 것을 특징으로 하는 그래픽 프로세서.
  7. 제5항에 있어서,
    상기 히트 포인트 리스트 크리터는, 히트 포인트 연산의 출력을 셰이더의 입력으로 변환하는 것을 특징으로 그래픽 프로세서.
  8. 제5항에 있어서,
    상기 히트 포인트 리스트 버퍼는 타일 하나의 모든 히트 포인트 리스트를 저장하는 것을 특징으로 하는 그래픽 프로세서.
  9. 제5항에 있어서,
    상기 히트 포인트 리스트 버퍼는 하나의 타일에 대한 히트 포인트 연산이 끝나게 되면, 연산 결과를 버퍼링하여 데이터를 셰이더로 전송하는 것을 특징으로 하는 그래픽 프로세서.
  10. 제1항에 있어서,
    상기 레이-트레이싱 렌더링을 타일 단위로 수행하는 것을 특징으로 하는 그래픽 프로세서.

KR1020150078166A 2015-06-02 2015-06-02 그래픽 프로세서 KR102397001B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020150078166A KR102397001B1 (ko) 2015-06-02 2015-06-02 그래픽 프로세서

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020150078166A KR102397001B1 (ko) 2015-06-02 2015-06-02 그래픽 프로세서

Publications (2)

Publication Number Publication Date
KR20160142166A true KR20160142166A (ko) 2016-12-12
KR102397001B1 KR102397001B1 (ko) 2022-05-11

Family

ID=57574253

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020150078166A KR102397001B1 (ko) 2015-06-02 2015-06-02 그래픽 프로세서

Country Status (1)

Country Link
KR (1) KR102397001B1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102151443B1 (ko) * 2019-04-11 2020-09-03 주식회사 실리콘아츠 하이브리드 gpu 아키텍처 기반의 그래픽 처리 장치

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20100035622A (ko) * 2008-09-26 2010-04-05 엔비디아 코포레이션 하이브리드 광선 추적 시스템을 위한 프래그먼트 쉐이더 및 동작 방법
KR20100128493A (ko) * 2009-05-28 2010-12-08 박우찬 레이 트레이싱 코어 및 이를 포함하는 레이 트레이싱 칩
US20140063016A1 (en) * 2012-07-31 2014-03-06 John W. Howson Unified rasterization and ray tracing rendering environments

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20100035622A (ko) * 2008-09-26 2010-04-05 엔비디아 코포레이션 하이브리드 광선 추적 시스템을 위한 프래그먼트 쉐이더 및 동작 방법
KR20100128493A (ko) * 2009-05-28 2010-12-08 박우찬 레이 트레이싱 코어 및 이를 포함하는 레이 트레이싱 칩
US20140063016A1 (en) * 2012-07-31 2014-03-06 John W. Howson Unified rasterization and ray tracing rendering environments

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102151443B1 (ko) * 2019-04-11 2020-09-03 주식회사 실리콘아츠 하이브리드 gpu 아키텍처 기반의 그래픽 처리 장치
US10846908B2 (en) 2019-04-11 2020-11-24 Siliconarts, Inc. Graphics processing apparatus based on hybrid GPU architecture

Also Published As

Publication number Publication date
KR102397001B1 (ko) 2022-05-11

Similar Documents

Publication Publication Date Title
TWI497447B (zh) 以移動及散焦模糊來渲染鑲嵌幾何之技術
US8013857B2 (en) Method for hybrid rasterization and raytracing with consistent programmable shading
McGuire et al. Hardware-accelerated global illumination by image space photon mapping
US11804002B2 (en) Techniques for traversing data employed in ray tracing
Liktor et al. Decoupled deferred shading for hardware rasterization
US10049486B2 (en) Sparse rasterization
US20130271465A1 (en) Sort-Based Tiled Deferred Shading Architecture for Decoupled Sampling
US11816783B2 (en) Enhanced techniques for traversing ray tracing acceleration structures
CN113808241B (zh) 共享顶点的射线追踪图元的硬件加速
US10068366B2 (en) Stereo multi-projection implemented using a graphics processing pipeline
TW201142743A (en) Image processing techniques
CA2744504A1 (en) Optimal point density using camera proximity for point-based global illumination
Broecker et al. Adapting ray tracing to spatial augmented reality
WO2013101167A1 (en) Five-dimensional rasterization with conservative bounds
WO2022143367A1 (zh) 一种图像渲染方法及其相关设备
KR20180023856A (ko) 그래픽 처리 시스템 및 그래픽 프로세서
CN103679786A (zh) 图形处理单元可编程着色器的纹元数据结构和其操作方法
US20150084952A1 (en) System, method, and computer program product for rendering a screen-aligned rectangle primitive
US8872827B2 (en) Shadow softening graphics processing unit and method
KR102397001B1 (ko) 그래픽 프로세서
Arvo Alias-free shadow maps using graphics hardware
US20240095996A1 (en) Efficiency of ray-box tests
Yuan et al. Tile pair-based adaptive multi-rate stereo shading
US20240009226A1 (en) Techniques for traversing data employed in ray tracing
JP6487578B1 (ja) プログラム、記録媒体、及び影描画方法

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