KR102651126B1 - 그래픽 프로세싱 장치 및 그래픽스 파이프라인에서 텍스처를 처리하는 방법 - Google Patents

그래픽 프로세싱 장치 및 그래픽스 파이프라인에서 텍스처를 처리하는 방법 Download PDF

Info

Publication number
KR102651126B1
KR102651126B1 KR1020160159419A KR20160159419A KR102651126B1 KR 102651126 B1 KR102651126 B1 KR 102651126B1 KR 1020160159419 A KR1020160159419 A KR 1020160159419A KR 20160159419 A KR20160159419 A KR 20160159419A KR 102651126 B1 KR102651126 B1 KR 102651126B1
Authority
KR
South Korea
Prior art keywords
rendering
target object
pass
dynamic texture
texture
Prior art date
Application number
KR1020160159419A
Other languages
English (en)
Other versions
KR20180060198A (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 KR1020160159419A priority Critical patent/KR102651126B1/ko
Priority to US15/628,085 priority patent/US10331448B2/en
Publication of KR20180060198A publication Critical patent/KR20180060198A/ko
Application granted granted Critical
Publication of KR102651126B1 publication Critical patent/KR102651126B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30076Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
    • G06F9/30079Pipeline control instructions, e.g. multicycle NOP
    • 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
    • G06T1/00General purpose image data processing
    • G06T1/60Memory management
    • 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
    • G06T11/002D [Two Dimensional] image generation
    • G06T11/40Filling a planar surface by adding surface attributes, e.g. colour or texture
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/10Geometric effects
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/136Incoming video signal characteristics or properties
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2210/00Indexing scheme for image generation or computer graphics
    • G06T2210/36Level of detail

Abstract

그래픽스 파이프라인에서 텍스처를 처리하는 방법 및 그래픽 프로세싱 장치는 타겟 객체의 사용 정보에 기초하는 동적 텍스처의 렌더링 수준을 결정하고, 렌더링 수준에 따라 렌더링된 동적 텍스처로 타겟 객체를 텍스처링함으로써 타겟 객체를 렌더링한다.

Description

그래픽 프로세싱 장치 및 그래픽스 파이프라인에서 텍스처를 처리하는 방법 {Graphic processing apparatus and method for processing texture in graphics pipeline}
그래픽 프로세싱 장치 및 그래픽스 파이프라인에서 텍스처를 처리하는 방법에 관한다.
3차원 그래픽 시스템에서 보다 현실감 있는 영상을 얻기 위한 방법의 일환으로 텍스처링 또는 텍스처 맵핑(texture mapping) 기술이 활용되고 있다. 텍스처링 또는 텍스처 맵핑이란, 3차원 물체의 표면에 질감을 주기 위해 2차원 이미지를 3차원 물체 표면에 입히는 것을 의미한다. 텍스처링(texturing)은 3D 렌더링 성능에 있어서 중요한 디자인 요소이고, 전체 프로세서 전력의 중요 부분을 차지할 수 있다. 텍스처링에 의한 메모리 액세스 또한 메모리 대역폭 및 메모리 전력에 영향을 미치므로, 프로세서와 메모리 간의 병목현상의 주요한 원인이 될 수 있다. 따라서, 텍스처링을 위한 연산량 감소는 그래픽스 프로세싱 유닛(GPU)의 효율적인 성능 발휘의 측면에 있어서 중요한 요소이다.
그래픽 프로세싱 장치 및 그래픽스 파이프라인에서 텍스처를 처리하는 방법을 제공하는데 있다. 본 실시예가 이루고자 하는 기술적 과제는 상기된 바와 같은 기술적 과제들로 한정되지 않으며, 이하의 실시예들로부터 또 다른 기술적 과제들이 유추될 수 있다.
일 측면에 따르면, 그래픽스 파이프라인에서 텍스처를 처리하는 방법은, 타겟 객체에 매핑될 동적 텍스처의 기하(geometry) 프로세싱을 수행하는 단계; 상기 타겟 객체의 기하 프로세싱을 수행함으로써 획득된 상기 타겟 객체의 사용 정보에 기초하는 상기 동적 텍스처의 렌더링 수준을 결정하는 단계; 상기 결정된 렌더링 수준에 따라 상기 동적 텍스처를 렌더링하는 단계; 및 상기 렌더링된 동적 텍스처로 상기 타겟 객체를 텍스처링함으로써 상기 타겟 객체를 렌더링하는 단계를 포함한다.
다른 측면에 따르면, 상기 방법을 컴퓨터에서 실행시키기 위한 프로그램을 기록한 컴퓨터로 읽을 수 있는 기록매체를 제공한다.
또 다른 측면에 따르면, 그래픽스 파이프라인에서 텍스처를 처리하는 그래픽 프로세싱 장치는, 적어도 하나의 캐시 메모리; 및 적어도 하나의 프로세서를 포함하고, 상기 적어도 하나의 프로세서는 타겟 객체에 매핑될 동적 텍스처의 기하(geometry) 프로세싱을 수행하고, 상기 타겟 객체의 기하 프로세싱을 수행함으로써 획득된 상기 타겟 객체의 사용 정보에 기초하는 상기 동적 텍스처의 렌더링 수준을 결정하고, 상기 결정된 렌더링 수준에 따라 상기 동적 텍스처를 렌더링하고, 상기 렌더링된 동적 텍스처로 상기 타겟 객체를 텍스처링함으로써 상기 타겟 객체를 렌더링한다.
도 1은 일 실시예에 따른 컴퓨팅 장치를 설명하기 위한 도면이다.
도 2는 일 실시예에 따른 GPU에 의해 처리되는 그래픽스 파이프라인을 설명하는 도면이다.
도 3은 일 실시예에 따른 GPU의 상세 하드웨어 구조를 도시한 블록도이다.
도 4는 일 실시예에 따른 동적 텍스처를 설명하기 위한 도면이다.
도 5는 일 실시예에 따른 동적 텍스처를 렌더링하여 타겟 객체를 텍스처링하기 위한 그래픽스 파이프라인을 설명하기 위한 도면이다.
도 6은 일 실시예에 따른 동적 텍스처를 렌더링하여 타겟 객체를 텍스처링하기 위한 그래픽스 파이프라인을 설명하기 위한 도면이다.
도 7은 일 실시예에 따른 동적 텍스처를 렌더링하여 타겟 객체를 텍스처링하기 위한 그래픽스 파이프라인을 설명하기 위한 도면이다.
도 8은 일 실시예에 따라 렌더링 수준에 기초하여 품질이 조정된 동적 텍스처를 이용하여 텍스처링을 수행하는 것을 설명하기 위한 도면이다.
도 9는 일 실시예에 따라 렌더링 수준에 기초하여 동적 이미지의 일부분만이 렌더링된 동적 텍스처를 이용하여 텍스처링을 수행하는 것을 설명하기 위한 도면이다.
도 10은 일 실시예에 따라 렌더링 수준에 기초하여 동적 텍스처의 렌더링 및 타겟 객체의 렌더링을 스킵하는 것을 설명하기 위한 도면이다.
도 11은 일 실시예에 따라 동적 텍스처를 렌더링하기 위한 패스를 설명하기 위한 흐름도이다.
도 12는 일 실시예에 따라 그래픽스 파이프라인에서 텍스처를 처리하는 방법의 흐름도이다.
본 실시예들에서 사용되는 용어는 본 실시예들에서의 기능을 고려하면서 가능한 현재 널리 사용되는 일반적인 용어들을 선택하였으나, 이는 당 기술분야에 종사하는 기술자의 의도 또는 판례, 새로운 기술의 출현 등에 따라 달라질 수 있다. 또한, 특정한 경우는 임의로 선정된 용어도 있으며, 이 경우 해당 실시예의 설명 부분에서 상세히 그 의미를 기재할 것이다. 따라서, 본 실시예들에서 사용되는 용어는 단순한 용어의 명칭이 아닌, 그 용어가 가지는 의미와 본 실시예들의 전반에 걸친 내용을 토대로 정의되어야 한다.
실시예들에 대한 설명들에서, 어떤 부분이 다른 부분과 연결되어 있다고 할 때, 이는 직접적으로 연결되어 있는 경우뿐 아니라, 그 중간에 다른 구성요소를 사이에 두고 전기적으로 연결되어 있는 경우도 포함한다. 또한 어떤 부분이 어떤 구성요소를 포함한다고 할 때, 이는 특별히 반대되는 기재가 없는 한 다른 구성요소를 제외하는 것이 아니라 다른 구성요소를 더 포함할 수 있는 것을 의미한다. 또한, 실시예들에 기재된 “...부”의 용어는 적어도 하나의 기능이나 동작을 처리하는 단위를 의미하며, 이는 하드웨어 또는 소프트웨어로 구현되거나 하드웨어와 소프트웨어의 결합으로 구현될 수 있다.
본 실시예들에서 사용되는 “구성된다” 또는 “포함한다” 등의 용어는 명세서 상에 기재된 여러 구성 요소들, 도는 여러 단계들을 반드시 모두 포함하는 것으로 해석되지 않아야 하며, 그 중 일부 구성 요소들 또는 일부 단계들은 포함되지 않을 수도 있고, 또는 추가적인 구성 요소 또는 단계들을 더 포함할 수 있는 것으로 해석되어야 한다.
하기 실시예들에 대한 설명은 권리범위를 제한하는 것으로 해석되지 말아야 하며, 해당 기술분야의 당업자가 용이하게 유추할 수 있는 것은 실시예들의 권리범위에 속하는 것으로 해석되어야 할 것이다. 이하 첨부된 도면들을 참조하면서 오로지 예시를 위한 실시예들을 상세히 설명하기로 한다.
도 1은 일 실시예에 따른 컴퓨팅 장치를 설명하기 위한 도면이다.
도 1을 참고하면, 컴퓨팅 장치(1)는 GPU(Graphic Processing Unit)(10), CPU(Central Processing Unit)(20), 메모리(30), 디스플레이(40) 및 Bus(50)를 포함한다. 도 1에 도시된 컴퓨팅 장치(1)에는 실시예들과 관련된 구성요소들만이 도시되어 있다. 따라서, 도 1에 도시된 구성요소들 외에 다른 범용적인 구성요소들이 더 포함될 수 있음을 당해 기술분야의 통상의 기술자라면 이해할 수 있다.
컴퓨팅 장치(1)는 데스크탑 컴퓨터, 노트북 컴퓨터, 스마트폰, PDA (personal digital assistants), 휴대형 미디어 플레이어, 비디오 게임용 콘솔, 텔레비젼 셋탑 박스, 태블릿 디바이스, 이북 리더, 웨어러블 디바이스, HMD(Head Mounted Display) 디바이스 등을 예로 들 수 있지만, 이에 제한되지 않는다. 즉, 컴퓨팅 장치(1)는 컨텐츠의 디스플레이를 위한 그래픽스 프로세싱 기능을 갖는 장치로서, 컴퓨팅 장치(1)의 범주에는 다양한 장치들이 포함될 수 있다.
CPU(20)는 컴퓨팅 장치(1)의 전반적인 동작들 및 기능들을 제어하는 하드웨어이다. 예를 들어, CPU(20)는 운영체제(Operating System, OS)를 구동하고, GPU(10)를 위한 그래픽스 API(Application Programming Interface)를 호출하고, GPU(10)의 드라이버를 실행시킬 수 있다. 또한, CPU(20)는 메모리(30)에 저장된 다양한 애플리케이션들, 예를 들어 웹 브라우징 애플리케이션, 게임 애플리케이션, 비디오 애플리케이션 등을 실행할 수 있다.
GPU(10)는 그래픽스 파이프라인(graphics pipeline)(100)을 수행하는 그랙픽 프로세싱 장치로서, 그래픽 전용 프로세서의 기능을 수행할 수 있다. 즉, GPU(10)는 3차원 이미지 상의 3차원 객체들을 디스플레이용의 2차원 이미지로 렌더링하기 위해 3차원 그래픽스 파이프라인을 실행하도록 구현된 하드웨어일 수 있다. 예를 들면, GPU(10)는 쉐이딩, 블렌딩, 일루미네이팅과 같은 다양한 기능들 및 디스플레이될 픽셀들에 대한 픽셀 값들을 생성하기 위한 다양한 기능들을 수행할 수도 있다.
GPU(10)가 수행할 수 있는 그래픽스 파이프라인(100)은 타일-기반 렌더링(tile-based rendering, TBR)을 위한 그래픽스 파이프라인, 또는 타일-기반이 아닌 IMR(immediate rendering)을 위한 그래픽스 파이프라인도 수행할 수 있다. 한편, GPU(10)가 수행할 수 있는 그래픽스 파이프라인(100)은 디퍼드(deferred) 렌더링을 위한 그래픽스 파이프라인일 수 있다.
도 1을 참고하면, GPU(10)에 의해 처리되는 그래픽스 파이프라인(100)은, 다양한 버전들의 DirectX, OpenGL API 등과 같은 그래픽스 API에 의해 정의된 그래픽스 파이프라인에 해당될 수 있다. 즉, 본 실시예에 따른 그래픽스 파이프라인(100)은 어느 하나의 버전 또는 어느 하나의 API 종류에 의해 제한되지 않고 다양한 API들에 적용될 수 있다.
메모리(30)는 컴퓨팅 장치(1) 내에서 처리되는 각종 데이터들을 저장하는 하드웨어로서, 예를 들어, 메모리(30)는 GPU(10) 및 CPU(20)에서 처리된 데이터들 및 처리될 데이터들을 저장할 수 있다. 또한, 메모리(30)는 GPU(10) 및 CPU(20)에 의해 구동될 애플리케이션들, 드라이버들 등을 저장할 수 있다. 메모리(30)는 DRAM(dynamic random access memory), SRAM(static random access memory) 등과 같은 RAM(random access memory), ROM(read-only memory), EEPROM(electrically erasable programmable read-only memory), CD-ROM, 블루레이 또는 다른 광학 디스크 스토리지, HDD(hard disk drive), SSD(solid state drive), 또는 플래시 메모리를 포함하며, 나아가서, 컴퓨팅 장치(1)에 액세스될 수 있는 외부의 다른 스토리지 디바이스를 포함할 수 있다.
디스플레이(40)는 GPU(10)에 의해 처리된 이미지를 표시하는 하드웨어이다. 예를 들어, 디스플레이(40)는 GPU(10)에 의해 렌더링된 이미지를 표시할 수 있다. 디스플레이(40)는 소정의 해상도의 스크린 픽셀들을 구비하고 있고, GPU(10)는 이 해상도에 맞는 이미지를 렌더링한다. 디스플레이(40)는 LCD, OLED 등과 같은 다양한 종류의 디스플레이 패널로 구현될 수 있다.
Bus(50)는 컴퓨팅 장치(1) 내의 하드웨어들 간에 데이터를 송수신할 수 있도록 하드웨어들을 연결시켜 주는 하드웨어로서, Bus(50)는 예를 들어 PCI bus, PCI Express bus 등과 같은 다양한 종류들을 포함할 수 있다.
컴퓨팅 장치(1), 특히 GPU(10)는 타겟 객체(target object)에 텍스처링될 동적 텍스처를 동적 이미지와 동일하도록 렌더링하지 않을 수 있다. 예를 들어, 타겟 객체에 텍스처링될 동적 텍스처는 현재 프레임 상의 타겟 객체의 상태에 따라 원본 동적 이미지보다 품질이 낮거나, 원본 동적 이미지의 일부분에 해당되도록 렌더링될 수 있다. 나아가서, 타겟 객체가 현재 프레임 상에 표시되지 않을 경우에는 동적 텍스처가 렌더링되지 않을 수도 있다. 이와 같이, 타겟 객체의 상태에 따라 동적 텍스처의 렌더링 수준을 조정함으로써 동적 텍스처의 렌더링에 필요한 연산량이 조절될 수 있고, 이로써 텍스처링을 위한 연산량 또한 효율적으로 조절될 수 있다.
도 2는 일 실시예에 따른 GPU에 의해 처리되는 그래픽스 파이프라인을 설명하는 도면이다.
도 2를 참고하면, 그래픽스 파이프라인(도 1의 100)의 전 과정은 크게 기하(geometry) 프로세싱, 래스터화(rasterization), 픽셀 쉐이딩(pixel shading)으로 구분될 수 있다.
201 단계는 버텍스들(vertices)을 생성하는 단계이다. 버텍스들은 3차원 그래픽스에 포함된 오브젝트(object)들을 나타내기 위해 생성된다.
202 단계는 생성된 버텍스들을 버텍스 쉐이딩(vertex shading)하는 단계이다. 버텍스 쉐이더는 201 단계에서 생성된 버텍스들의 위치들을 정의함으로써, 버텍스 쉐이딩을 수행할 수 있다.
203 단계는 프리미티브들을 생성하는 단계이다. 프리미티브는 하나 이상의 버텍스들을 이용하여 형성되는 점, 선, 다각형(polygon)등을 의미한다. 예를 들어, 프리미티브는 3개의 버텍스들이 연결된 삼각형일 수 있다.
204 단계는 프리미티브를 래스터라이징(rasterizing)하는 단계이다. 프리미티브의 래스터화(rasterization)는 프리미티브를 프레그먼트들(fragments)로 분할하는 것을 의미한다. 프레그먼트는 프리미티브에 대한 그래픽스 처리를 수행하기 위한 기본 단위일 수 있다. 프리미티브는 버텍스에 대한 정보만을 포함하므로, 래스터라이징을 통해 버텍스와 버텍스 사이의 프레그먼트들이 생성됨으로써, 3차원 그래픽스 처리가 수행될 수 있다.
205 단계는 픽셀들을 쉐이딩하는 단계이다. 래스터라이징에 의해 생성된, 프리미티브를 구성하는 프레그먼트들은 스크린 스페이스(screen space) 상의 픽셀들에 대응될 수 있다. 당해 분야에서, 프레그먼트와 픽셀이란 용어는 경우에 따라 혼용되어 사용되기도 한다. 예를 들어, 픽셀 쉐이더는 프레그먼트 쉐이더라고 호칭될 수도 있다. 일반적으로, 프리미티브를 구성하는 그래픽 처리의 기본 단위를 프레그먼트라고 지칭하고, 이후에 픽셀 쉐이딩에 의해 수행될 그래픽 처리의 기본 단위를 픽셀이라 지칭할 수 있다. 픽셀 쉐이딩에 의하여 픽셀들의 값들, 속성들 등(예를 들어 픽셀의 컬러)이 결정될 수 있다.
206 단계는 픽셀의 컬러를 결정하기 위한 텍스처링 단계이다. 텍스처링은 미리 준비된 텍스처들을 이용하여 픽셀들의 컬러들을 결정하는 과정을 의미할 수 있다. 다양한 컬러들과 패턴들이 픽셀들에서 표현되기 위해서는 모든 픽셀들의 컬러들이 각각 계산되고 결정되어야 한다. GPU(10)는 미리 준비된 텍스처들을 이용하여 픽셀들의 컬러들을 결정할 수 있다. 이때, 어느 픽셀들에 그려질 오브젝트의 크기에 적응적으로 대응할 수 있도록, 서로 다른 해상도들의 텍스처들이 미리 정의되어 준비될 수 있다. 서로 다른 해상도들을 갖는, 미리 정의된 텍스처들을 밉맵(mipmap)이라고 한다.
207 단계는 테스트 및 믹싱(testing and mixing) 단계이다. 깊이 테스트(depth test), 컬링(curling), 클리핑(clipping) 등을 통해 최종적으로 표시될 픽셀 값들이 결정된다.
208 단계는 201 단계 내지 207 단계를 통해 생성된 프레임을 프레임 버퍼에 저장하고, 프레임 버퍼에 저장된 프레임을 디스플레이(도 1의 40)를 통해 표시하는 단계이다.
도 2에서 설명된 위와 같은 그래픽스 파이프라인(100)의 일반적인 컨셉에 대한 설명은 개괄적인 것으로서, 보다 세부적인 과정들에 대해서는 당해 기술분야의 통상의 기술자에게 자명하다.
도 3은 일 실시예에 따른 GPU의 상세 하드웨어 구조를 도시한 블록도이다.
도 3을 참고하면, GPU(10)는 그래픽스 파이프라인(100)을 수행하는 적어도 하나의 프로세서(11)와, 컨트롤러(12) 및 적어도 하나의 캐시(cache)(13)를 포함할 수 있다. 프로세서(11)는 입력 어셈블러(input assembler)(110), 버텍스 쉐이더(vertex shader)(120), 프리미티브 어셈블러(primitive assembler)(130), 래스터라이저(rasterizer)(140) 및 픽셀 쉐이더(pixel shader)(150)를 포함할 수 있다.
한편, 프로세서(11) 내에서 그래픽스 파이프라인(100)을 수행하는 위의 구성들은, 아래 설명될 기능들에 기초하여 분류된 것들일 수 있다. 따라서, 그래픽스 파이프라인(100)을 수행하는 위의 구성들 각각은, 아래 설명될 기능들 각각을 실행시키는 프로그램 로직들 또는 소프트웨어 모듈들로 구현될 수 있다. 이와 다르게, 그래픽스 파이프라인(100)을 수행하는 위의 구성들은, 프로세서(11) 내에 구비된 서브(sub) 프로세싱 유닛들(또는 프로세서 코어들) 각각으로 구현될 수도 있다. 즉, 그래픽스 파이프라인(100)을 수행하는 위의 구성들의 구현 형태는, 어느 하나에 의해 제한되지 않는다. 나아가서, 그래픽스 파이프라인(100)을 수행하는 위의 구성들의 명칭들은 아래 설명될 기능들에 기초하여 부여된 것일 수 있으나, 이와 같은 명칭들은 다양하게 변경될 수도 있음을 당해 기술분야의 통상의 기술자라면 이해할 수 있다.
GPU(10)에서 그래픽스 파이프라인(100)을 수행하는 구성들의 명칭들은 설명의 편의를 위하여 사용된 것들일 뿐이므로, 이 구성들의 명칭들은 그래픽스 API의 종류, 버전 등에 따라 달라질 수 있다. 즉, 프로세서(11)에서 그래픽스 파이프라인(100)을 수행하는 구성들은, DirectX, CUDA, OpenGL 등과 같은 여러 종류의 API들에서 정의된 구성들의 명칭들에 다양하게 대응될 수 있다.
입력 어셈블러(110)는, 입력된 드로우콜들(drawcalls)에 기초하여, 메모리 어레이(도 1의 30)에 저장된 객체들에 관한 버텍스들의 데이터를 그래픽스 파이프라인(100)에 공급한다. 그래픽스 파이프라인(100)에 공급된 버텍스들은, 메쉬(mesh) 또는 표면(surface)의 표현인 패치(patch)에 관한 것일 수 있으나, 이에 제한되지 않는다. 드로우콜은 어떤 프레임에 어떤 객체를 렌더링할 것인지를 나타내는 커맨드이다. 예를 들어, 드로우콜은 이미지 또는 프레임에 사각형들 또는 삼각형들과 같은 프리미티브들을 그리기 위한 커맨드일 수 있다.
버텍스 쉐이더(120)는 프레임에 포함된 버텍스들의 위치, 버텍스들의 속성(attribute) 등에 관한 정보를 이용하여, 각 버텍스에 대한 3차원 공간 상의 좌표를 결정한다.
프리미티브 어셈블러(130)는 버텍스들을 프리미티브들로 변환한다.
래스터라이저(140)는 프리미티브들을 2차원 공간에서의 픽셀 값들로 변환하는 래스터라이징을 수행한다.
픽셀 쉐이더(150)는, 프리미티브에 의해 커버되는 픽셀들을 의미하는 프래그먼트를 생성하고, 프래그먼트에 대한 깊이 값, 스텐실 값, 컬러 값 등을 결정한다. 픽셀 쉐이더(150)는 텍스처링과 관련된 처리들을 수행하는 텍스처 유닛을 포함할 수 있고, 객체의 텍스처링을 수행한다. 픽셀 쉐이더(150)의 픽셀 쉐이딩 결과는 캐시(13)(예를 들어, 프레임 버퍼)에 저장된 후, 동영상의 프레임으로서 디스플레이될 수 있다.
컨트롤러(12)는 그래픽스 파이프라인(100)의 각 구성요소들(110 내지 150)과 캐시(13)의 전반적인 기능들 및 동작들을 제어한다.
캐시(13)는 그래픽스 파이프라인(100)이 수행되면서 처리된 결과들, 예를 들어 텍스처, 프레임 등을 저장할 수 있고, 그래픽스 파이프라인(100)의 수행에 필요한 데이터들, 예를 들어 버텍스 데이터, 프리미티브 데이터, 텍스처 데이터 등을 프로세서(11)에 제공할 수 있다.
도 4는 일 실시예에 따른 동적 텍스처를 설명하기 위한 도면이다.
도 4를 참고하면, 동적 텍스처(dynamic texture)는 실시간으로 렌더링된 동적 이미지가 텍스처로 활용되는 것을 의미한다. 예를 들어, 프레임(401) 상에 표시될 객체들 중에 전광판(411)에 해당되는 객체가 존재하는 경우, 전광판 객체의 화면 상에는 어느 장면의 이미지가 표시될 수 있다. 프레임 변화에 따라 전광판 화면 상에 표시될 이미지 또한 대응되도록 동적으로 변화될 수 있다.
유사하게, 프레임(402) 상에는 운전 중인 자동차의 장면이 렌더링될 수도 있다. 자동차의 사이드미러(412)에는 자동차 외부의 환경이 표시되므로, 프레임 변화에 따라 사이드미러(412)에 표시될 이미지 또한 대응되도록 동적으로 변화될 수 있다.
본 실시예에서 설명되는 동적 텍스처는 어느 프레임 내에 동적 이미지가 표시될 별개의 객체가 존재하는 경우, 그 객체에 텍스처링될 텍스처를 의미할 수 있다. 한편, 본 실시예에서는 동적 텍스처가 매핑될(또는 텍스처링될) 객체를 타겟 객체라는 용어로 정의하여 설명하도록 한다.
도 5는 일 실시예에 따른 동적 텍스처를 렌더링하여 타겟 객체를 텍스처링하기 위한 그래픽스 파이프라인을 설명하기 위한 도면이다.
도 5를 참고하면, 그래픽스 파이프라인(100)은 동적 텍스처를 렌더링하기 위한 N-1번째 패스(N-1 th pass)(예를 들어, 제 1 패스라고도 한다. 한편, 제 1 패스는 그래픽스 파이프라인의 초기(initial) 패스이거나 초기 패스가 아닐 수 있다.)(510) 및 렌더링된 동적 텍스처를 이용하여 타겟 객체를 렌더링하기 위한 N번째 패스(N th pass)(예를 들어, 제 2 패스라고도 함)(520)를 포함할 수 있다. N-1번째 패스(510)과 N번째 패스(520)는 서로 독립적인 패스들로서, N-1번째 패스(510)과 N번째 패스(520)에 포함된 세부 스테이지들은 프로세서(11)에 의하여 병렬적으로 수행되거나 또는 순차적으로 수행될 수 있다.
N-1번째 패스(510)가 수행되는 동안, 프로세서(11)는 타겟 객체에 매핑될 동적 텍스처의 기하(geometry) 프로세싱을 수행하고, 동적 텍스처를 렌더링(511)한다. 한편, N-1번째 패스(510)에서는 렌더링된 동적 텍스처(501)뿐만 아니라, 다른 텍스처들(502)도 함께 렌더링될 수 있다.
N번째 패스(520)가 수행되는 동안, 프로세서(11)는 타겟 객체의 기하 프로세싱(521)을 수행한다. 여기서, 타겟 객체의 기하 프로세싱(521)은 타겟 객체에 대한 버텍스 쉐이딩(vertex shading), 프리미티브 어셈블리(primitive assembly) 등을 포함할 수 있다. 나아가서, 기하 프로세싱(521)은 타겟 객체의 부분적 픽셀 쉐이딩(partial pixel shading)을 더 포함할 수도 있다. 그리고 나서, 프로세서(11)는 렌더링된 동적 텍스처(501)로 타겟 객체를 텍스처링함으로써 타겟 객체를 렌더링(522)한다. 렌더링(522)은 픽셀 쉐이딩을 포함할 수 있다. 그 결과, N번째 패스(520)가 완료되면, 텍스처링된(즉, 렌더링된) 타겟 객체(504)를 포함하는 출력 이미지(503)가 생성될 수 있다.
N-1번째 패스(510)에서 동적 텍스처의 렌더링(511)은, N번째 패스(520)에서 타겟 객체의 기하 프로세싱(521)을 수행함으로써 획득된 타겟 객체의 사용 정보(usage information)에 기초하는 동적 텍스처의 렌더링 수준(rendering level)이 N-1번째 패스(510)로 피드백(feedback)됨으로써 수행될 수 있다. 여기서, 사용 정보는, 현재 프레임에서 표시될 타겟 객체의 위치, 크기 또는 표시 범위 등에 대한 기하 정보(geometry information)를 포함할 수 있다. 하지만, 사용 정보는 이에 제한되지 않고, 타겟 객체의 기하 프로세싱(521)을 통해 획득될 수 있는, 타겟 객체가 현재 프레임에서 어떻게 표시되고 사용될 것인지를 나타내는 정보라면, 다른 어떠한 정보도 포함할 수 있다.
구체적으로, 프로세서(11)는 N-1번째 패스(510)에서 동적 텍스처의 렌더링(511)이 수행되기 전, N번째 패스(520)의 기하 프로세싱(521)을 먼저 수행하고, 기하 프로세싱(521)의 결과로서 타겟 객체의 사용 정보를 획득한다. 그리고, 프로세서(11)는 타겟 객체의 사용 정보에 기초하는 동적 텍스처의 렌더링 수준을 결정(530)한다. 렌더링 수준은 동적 텍스처의 품질(quality), 동적 텍스처의 렌더링 범위(rendering range), 또는 동적 텍스처의 사용 유무 등을 나타낼 수 있다. 동적 텍스처의 품질은 동적 텍스처의 크기, 해상도 등을 의미하고, 동적 텍스처의 렌더링 범위는 동적 텍스처의 전부 또는 일부분이 렌더링될 것인지를 의미한다. 동적 텍스처의 사용 유무는 동적 텍스처의 렌더링이 필요한지 또는 필요하지 않은지를 의미한다. 프로세서(11)는 동적 텍스처의 렌더링 수준이 결정(530)되면, 결정된 렌더링 수준에 따라 N-1번째 패스(510)에서 동적 텍스처의 렌더링(511)을 수행한다. 즉, 렌더링된 동적 텍스처(501)는 품질(해상도, 크기)이 조정되거나, 동적 이미지의 일부분에만 해당될 수 있다. 한편, 렌더링 수준이 동적 텍스처의 사용이 없는 것으로 결정된 경우에는, 프로세서(11)는 N-1번째 패스(510)에서 동적 텍스처의 렌더링(511)을 스킵할 수 있다.
위와 같이, 렌더링된 동적 텍스처(501)는 원본 동적 이미지와 비교하여, 품질이 낮아지거나(즉, 크기가 작아지는 경우 또는 해상도가 낮아지는 경우), 일부분만 렌더링될 수 있으므로, 원본 동적 이미지를 그대로 동적 텍스처로 렌더링할 때보다 프로세서(11)의 렌더링 연산량이 감소될 수 있다. 또는, 프로세서(11)는 동적 텍스처가 불필요한 경우 동적 텍스처의 렌더링(511) 및 타겟 객체의 렌더링(522)을 스킵할 수도 있으므로, 렌더링 연산량이 마찬가지로 감소될 수 있다. 결국, 이로써, 프로세서(11)의 연산량이 감소되고 메모리 액세스 빈도 또한 감소될 수 있으므로, GPU(10)는 보다 효율적인 성능으로 그래픽스 파이프라인(100)을 처리할 수 있게 된다.
한편, 그래픽스 파이프라인(100)은 앞서 설명된 바와 같이, 타일-기반 렌더링(TBR)을 위한 것이거나, 또는 IMR(immediate rendering)을 위한 것일 수 있다.
타일-기반 렌더링(TBR)을 위한 그래픽스 파이프라인은 알려진 바와 같이, 각각의 타일에 포함된 프리미티브를 판단하기 위한 타일 비닝(tile binning) 파이프라인 및 타일 비닝 파이프라인이 완료된 후 타일 비닝의 결과에 기초하여 타일 별로(per tile) 렌더링을 수행하기 위한 렌더링 파이프라인으로 구분될 수 있다. 즉, 타일-기반 렌더링(TBR)을 위한 그래픽스 파이프라인은 디퍼드 렌더링으로 고려될 수 있다. 본 실시예에 따른 그래픽스 파이프라인(100)이 타일-기반 렌더링(TBR)을 위한 것인 경우, N번째 패스(520)에서 타겟 객체의 기하 프로세싱(521)을 수행함으로써 획득된 타겟 객체의 사용 정보는, 타겟 객체에 대한 타일 비닝의 결과로부터 획득될 수 있다. 예를 들어, 타일 비닝의 결과는 각각의 타일마다 어떠한 프리미티브가 포함되었는지 여부를 비트들로 표현한 비트스트림일 수 있으나, 타일 비닝의 결과는 이에 제한되지 않는다.
본 실시예에 따른 그래픽스 파이프라인(100)이 IMR(immediate rendering)을 위한 것인 경우, 사용 정보는 타겟 객체에 대한 기하 프로세싱 스테이지의 결과로부터 획득될 수 있고, IMR의 기하 프로세싱 스테이지는 버텍스 쉐이딩 스테이지 및 프리미티브 어셈블리 스테이지를 포함할 수 있다. 또는 IMR의 기하 프로세싱 스테이지는 픽셀 쉐이딩 스테이지의 일부 프로세스를 더 포함할 수도 있다.
본 실시예에 따르면, 그래픽스 파이프라인(100)이 수행되는 동안 타겟 객체의 사용 정보를 획득할 수 있는 한, 기하 프로세싱에는 위와 같은 설명에 제한되지 않고 다양한 세부 스테이지들이 포함될 수 있다.
도 6은 일 실시예에 따른 동적 텍스처를 렌더링하여 타겟 객체를 텍스처링하기 위한 그래픽스 파이프라인을 설명하기 위한 도면이다.
도 6을 참고하면, N-1번째 패스(510) 및 N번째 패스(520)는 앞서 도 5에서 설명된 패스들에 해당된다.
동적 텍스처를 렌더링하기 위한 그래픽스 파이프라인(100)의 N-1번째 패스(510)(제 1 패스)는 제 1 버텍스 쉐이딩 스테이지(601), 제 1 프리미티브 어셈블리 스테이지(602) 및 제 1 픽셀 쉐이딩 스테이지(603)를 포함할 수 있다. 타겟 객체를 렌더링하기 위한 그래픽스 파이프라인(100)의 N번째 패스(520)(제 2 패스)는 제 2 버텍스 쉐이딩 스테이지(611), 제 2 프리미티브 어셈블리 스테이지(612) 및 제 2 픽셀 쉐이딩 스테이지(613)를 포함할 수 있다. 다만, 도 6에 도시된 스테이지들은 설명의 편의를 위하여 그래픽스 파이프라인(100)의 일부 스테이지들만 도시된 것일 뿐이고, 그래픽스 파이프라인(100)은 도시되지 않은 다른 일반적인 스테이지들을 더 포함할 수 있다.
도 6에서 제 1 버텍스 쉐이딩 스테이지(601) 및 제 1 프리미티브 어셈블리 스테이지(602)는 동적 텍스처의 기하 프로세싱을 위한 스테이지들일 수 있다. N-1번째 패스(510)와 독립적으로, GPU(10)는 N번째 패스(520)의 제 2 버텍스 쉐이딩 스테이지(611) 및 제 2 프리미티브 어셈블리 스테이지(612)로부터 타겟 객체의 사용 정보를 획득하고, 획득된 사용 정보에 기초한 렌더링 수준을 결정한다. 도 6에서 제 2 버텍스 쉐이딩 스테이지(611) 및 제 2 프리미티브 어셈블리 스테이지(612)는 타겟 객체의 기하 프로세싱을 위한 스테이지들일 수 있다.
제 1 픽셀 쉐이딩 스테이지(603)는 제 2 버텍스 쉐이딩 스테이지(611) 및 제 2 프리미티브 어셈블리 스테이지(612)를 포함하는 타겟 객체의 기하 프로세싱의 수행에 의해 획득된 사용 정보에 기초하여 결정된 렌더링 수준에 따라 동적 텍스처를 렌더링한다. 렌더링된 동적 텍스처가 생성되면, 제 2 픽셀 쉐이딩 스테이지(613)는 렌더링된 동적 텍스처로 타겟 객체를 텍스처링함으로써 타겟 객체를 렌더링한다.
도 7은 일 실시예에 따른 동적 텍스처를 렌더링하여 타겟 객체를 텍스처링하기 위한 그래픽스 파이프라인을 설명하기 위한 도면이다.
도 7을 참고하면, N-1번째 패스(510) 및 N번째 패스(520)는 앞서 도 5 및 도 6에서 설명된 패스들에 해당된다.
도 6과 마찬가지로, 동적 텍스처를 렌더링하기 위한 그래픽스 파이프라인(100)의 N-1번째 패스(510)(제 1 패스)는 제 1 버텍스 쉐이딩 스테이지(701), 제 1 프리미티브 어셈블리 스테이지(702) 및 제 1 픽셀 쉐이딩 스테이지(703)를 포함할 수 있다. 또한, 타겟 객체를 렌더링하기 위한 그래픽스 파이프라인(100)의 N번째 패스(520)(제 2 패스)는 제 2 버텍스 쉐이딩 스테이지(711), 제 2 프리미티브 어셈블리 스테이지(712), 일부(partial) 제 2 픽셀 쉐이딩 스테이지(713) 및 나머지(remaining) 제 2 픽셀 쉐이딩 스테이지(714)를 포함할 수 있다. 다만, 도 7에 도시된 스테이지들은 설명의 편의를 위하여 그래픽스 파이프라인(100)의 일부 스테이지들만 도시된 것일 뿐이고, 그래픽스 파이프라인(100)은 도시되지 않은 다른 일반적인 스테이지들을 더 포함할 수 있다.
도 7에서 제 1 버텍스 쉐이딩 스테이지(701) 및 제 1 프리미티브 어셈블리 스테이지(702)는 동적 텍스처의 기하 프로세싱을 위한 스테이지들일 수 있다. N-1번째 패스(510)와 독립적으로, GPU(10)는 N번째 패스(520)의 제 2 버텍스 쉐이딩 스테이지(711), 제 2 프리미티브 어셈블리 스테이지(712) 및 일부 제 2 픽셀 쉐이딩 스테이지(713)로부터 타겟 객체의 사용 정보를 획득하고, 획득된 사용 정보에 기초한 렌더링 수준을 결정한다. 한편, 일부 제 2 픽셀 쉐이딩 스테이지(713)는 전체의 픽셀 쉐이딩 프로세스 중에서 타겟 객체에서 타겟 객체의 전체에 텍스처링이 필요한지, 아니면 타겟 객체의 일부에만 텍스처링이 필요한지 여부를 나타내는 사용 정보를 획득하기 위한 프로세스만을 의미할 수 있다. 도 7에서 제 2 버텍스 쉐이딩 스테이지(611), 제 2 프리미티브 어셈블리 스테이지(612) 및 일부 제 2 픽셀 쉐이딩 스테이지(713)는 타겟 객체의 기하 프로세싱을 위한 스테이지들일 수 있다. 즉, 경우에 따라 타겟 객체의 기하 프로세싱에 포함되는 스테이지들은 달라질 수 있고, 어느 하나의 경우로만 고정 또는 제한되지 않는다.
제 1 픽셀 쉐이딩 스테이지(703)는 제 2 버텍스 쉐이딩 스테이지(711), 제 2 프리미티브 어셈블리 스테이지(712) 및 일부 제 2 픽셀 쉐이딩 스테이지(713)를 포함하는 타겟 객체의 기하 프로세싱의 수행에 의해 획득된 사용 정보에 기초하여 결정된 렌더링 수준에 따라 동적 텍스처를 렌더링한다. 렌더링된 동적 텍스처가 생성되면, 나머지 제 2 픽셀 쉐이딩 스테이지(714)는 렌더링된 동적 텍스처로 타겟 객체를 텍스처링함으로써 타겟 객체를 렌더링한다.
한편, 도 6 또는 도 7의 실시예들에 따르면, 도 6에서 설명된 타겟 객체의 기하 프로세싱(611 및 612) 또는 도 7에서 설명된 타겟 객체의 기하 프로세싱(711, 712 및 712)의 결과, 현재 프레임에서 타겟 객체가 표시되지 않는 사용 정보가 획득된 경우에는, 도 6의 제 1 픽셀 쉐이딩 스테이지(603) 또는 도 7의 나머지 제 2 픽셀 쉐이딩 스테이지(714)는 수행되지 않을 수(스킵될 수) 있다.
도 8은 일 실시예에 따라 렌더링 수준에 기초하여 품질이 조정된 동적 텍스처를 이용하여 텍스처링을 수행하는 것을 설명하기 위한 도면이다.
프로세서(11)는 타겟 객체(815) 사용 정보에 기초하여 타겟 객체(815)의 크기가 축소되는 것으로 판단된 경우 동적 텍스처(801)의 품질이 낮아지도록 렌더링 수준을 결정할 수 있다.
도 8을 참고하면, n × m 크기의 동적 텍스처(801)는 타겟 객체(815)의 사용 정보에 기초한 렌더링 수준을 고려하지 않은 텍스처를 나타내고, 원본 동적 이미지에 대응한다. 타겟 객체(815)의 기하 프로세싱의 결과 타겟 객체(815)의 크기가 동적 텍스처(801)와 달리, n/2 × m/2 크기인 경우, 프로세서(11)는 동적 텍스처(801)의 품질을 조정한다. 구체적으로, 프로세서(11)는 동적 텍스처(801)의 품질(즉, 해상도 또는 샘플링 정도)을 낮추어 n/2 × m/2 크기의 렌더링된 동적 텍스처(805)를 생성한다. 동적 텍스처(801)와 달리, 현재 프레임의 출력 이미지(810) 상에서 타겟 객체(815)가 상대적으로 작게 표시되는 경우에는 타겟 객체(815)의 텍스처 품질을 낮추더라도 사용자 입장에서 두드러지게 인식되지 않을 수 있다. 즉, 타겟 객체(815)의 텍스처 품질을 낮추더라도 출력 이미지(810) 전체적으로 렌더링 품질은 크게 저하되지 않지만, 동적 텍스처(801)의 렌더링 및 타겟 객체의 렌더링 측면에서는 프로세서(11)의 연산량이 감소될 수 있다.
도 9는 일 실시예에 따라 렌더링 수준에 기초하여 동적 이미지의 일부분만이 렌더링된 동적 텍스처를 이용하여 텍스처링을 수행하는 것을 설명하기 위한 도면이다.
프로세서(11)는 타겟 객체(915)의 사용 정보에 기초하여 현재 프레임의 출력 이미지(910(에서 타겟 객체(915)의 일부분(921)만이 표시되고 나머지 부분(922)는 표시되지 않는 것으로 판단되는 경우에는 타겟 객체(915)의 일부분(921)에 대응하는 동적 텍스처의 일부가 렌더링 범위에 해당되도록 렌더링 수준을 결정할 수 있다.
도 9를 참고하면, 동적 텍스처(901)는 타겟 객체(915)의 사용 정보에 기초한 렌더링 수준을 고려하지 않은 텍스처를 나타내고, 원본 동적 이미지에 대응한다. 타겟 객체(915)의 기하 프로세싱의 결과 타겟 객체(915)가, 동적 텍스처(901)와 달리, 현재 프레임의 출력 이미지(910) 내에서 일부분(921)만이 표시되는 경우, 프로세서(11)는 동적 텍스처(901)의 일부분만을 렌더링하여, 렌더링된 동적 텍스처(905)를 생성한다. 동적 텍스처(901)의 전체가 아닌 동적 텍스처(901)에서 필요한 일부분만이 렌더링됨으로써 동적 텍스처(901)의 렌더링 및 타겟 객체의 렌더링 측면에서는 프로세서(11)의 오버헤드가 감소될 수 있다.
도 10은 일 실시예에 따라 렌더링 수준에 기초하여 동적 텍스처의 렌더링 및 타겟 객체의 렌더링을 스킵하는 것을 설명하기 위한 도면이다.
프로세서(11)는 타겟 객체(1015)의 사용 정보에 기초하여 현재 프레임의 출력 이미지(1010)에서 타겟 객체(1015)가 표시되지 않는 것으로 판단되는 경우에는 동적 텍스처(1001)가 사용되지 않도록 렌더링 수준을 결정한다. 이에 따라, 프로세서(11)는 동적 텍스처(1001)의 렌더링 및 타겟 객체(1015)의 렌더링을 스킵할 수 있다. 따라서, 프로세서(11)의 오버헤드가 감소될 수 있다.
도 11은 일 실시예에 따라 동적 텍스처를 렌더링하기 위한 패스를 설명하기 위한 흐름도이다.
도 11을 참고하면, 동적 텍스처를 렌더링하기 위한 패스는 예를 들어, 앞서 설명된 N-1번째 패스(제 1 패스)(도 5의 510)에 해당될 수 있다.
1101 단계에서, 프로세서(11)는 동적 텍스처의 텍스처 렌더링을 위한 패스로 진입한다.
1102 단계에서, 프로세서(11)는 현재 진입된 패스가 동적 텍스처의 렌더링을 위한 패스인지 여부를 판단한다. 프로세서(11)는 현재 진입된 패스가 동적 텍스처의 렌더링을 위한 패스인 경우 1103 단계를 수행한다. 그러나, 프로세서(11)는 현재 진입된 패스가 동적 텍스처의 렌더링을 위한 패스가 아닌 경우 1106 단계를 수행한다.
1103 단계에서, 프로세서(11)는 동적 텍스처의 기하 프로세싱(pre-rendering)을 수행한다.
1104 단계에서, 프로세서(11)는 현재 진입된 패스와 독립적인, 타겟 객체의 렌더링을 위한 다른 패스(예를 들어, N번째 패스(제 2 패스))(도 5의 520)를 통해 렌더링 수준이 결정되었는지 여부를 판단한다. 프로세서(11)는 렌더링 수준이 결정되었다고 판단된 경우 1105 단계를 수행한다. 그러나, 아직 렌더링 수준이 결정되지 않은 경우에는, 프로세서(11)는 렌더링 수준이 결정될 때까지 1104 단계의 판단을 반복한다.
1105 단계에서, 프로세서(11)는 결정된 렌더링 수준에 따라 동적 텍스처의 렌더링(post-rendering)을 수행한다. 1105 단계의 렌더링은 동적 텍스처의 픽셀 쉐이딩을 나타낼 수 있다.
1106 단계에서, 프로세서(11)는 현재 진입된 패스가 동적 텍스처의 렌더링을 위한 패스가 아닌 경우에는 렌더링 수준을 이용한 텍스처 렌더링이 아닌, 렌더링 수준 없이 일반적인 텍스처 렌더링을 수행한다.
도 12는 일 실시예에 따라 그래픽스 파이프라인에서 텍스처를 처리하는 방법의 흐름도이다. 도 12를 참고하면, 텍스처 처리 방법은 앞서 설명된 컴퓨팅 장치(1)(GPU(10)) 내에서 시계열적으로 처리되는 과정들이므로, 이하 생략된 내용이라 하더라도 앞서 설명된 컴퓨팅 장치(1)(GPU(10))에 대해서 설명되었던 내용은 도 12의 텍스처 처리 방법에도 적용될 수 있다.
1201 단계에서, 프로세서(11)는 타겟 객체에 매핑될 동적 텍스처의 기하 프로세싱을 수행한다.
1202 단계에서, 프로세서(11)는 타겟 객체의 기하 프로세싱을 수행함으로써 획득된 타겟 객체의 사용 정보에 기초하는 동적 텍스처의 렌더링 수준을 결정한다.
1203 단계에서, 프로세서(11)는 결정된 렌더링 수준에 따라 동적 텍스처를 렌더링한다.
1204 단계에서, 프로세서(11)는 렌더링된 동적 텍스처로 타겟 객체를 텍스처링함으로써 타겟 객체를 렌더링한다.
한편, 상술한 본 발명의 실시예들은 컴퓨터에서 실행될 수 있는 프로그램으로 작성 가능하고, 컴퓨터로 읽을 수 있는 기록매체를 이용하여 상기 프로그램을 동작시키는 범용 디지털 컴퓨터에서 구현될 수 있다. 또한, 상술한 본 발명의 실시예에서 사용된 데이터의 구조는 컴퓨터로 읽을 수 있는 기록매체에 여러 수단을 통하여 기록될 수 있다. 상기 컴퓨터로 읽을 수 있는 기록매체는 마그네틱 저장매체(예를 들면, 롬, 플로피 디스크, 하드 디스크 등), 광학적 판독 매체(예를 들면, 시디롬, 디브이디 등)와 같은 저장매체를 포함한다.

Claims (20)

  1. 그래픽스 파이프라인에서 텍스처를 처리하는 방법에 있어서,
    제 1 패스가 동적 텍스처의 렌더링을 위한 패스인지 여부를 판단하는 단계;
    상기 제 1 패스가 상기 동적 텍스처의 상기 렌더링을 위한 패스인 것으로 판단된 경우, 타겟 객체에 매핑될 상기 동적 텍스처의 기하(geometry) 프로세싱을 상기 제 1 패스에서 수행하는 단계;
    제 2 패스에서, 상기 타겟 객체의 사용 정보(usage information) 를 획득하기 위하여 상기 타겟 객체의 기하 프로세싱을 수행하는 단계;
    상기 타겟 객체의 사용 정보에 기초하여 상기 타겟 객체에 매핑될 상기 동적 텍스처의 렌더링 수준을 결정하는 단계;
    상기 제 1 패스에서, 상기 결정된 렌더링 수준에 따라 상기 동적 텍스처를 렌더링하는 단계; 및
    상기 제 2 패스에서, 상기 렌더링된 동적 텍스처로 상기 타겟 객체를 텍스처링함으로써 상기 타겟 객체를 렌더링하는 단계를 포함하고,
    상기 사용 정보는 현재 프레임에서 표시될 상기 타겟 객체의 위치, 크기 및 표시 범위에 대한 기하 정보를 포함하고,
    상기 제 1 패스 및 상기 제 2 패스는 독립적인 렌더링 패스들인,
    방법.
  2. 제 1 항에 있어서,
    상기 렌더링 수준은
    상기 동적 텍스처의 품질, 상기 동적 텍스처의 렌더링 범위, 상기 동적 텍스처의 사용 유무 중 적어도 하나를 나타내는, 방법.
  3. 제 2 항에 있어서,
    상기 렌더링 수준을 결정하는 단계는
    상기 사용 정보에 기초하여 상기 타겟 객체의 크기가 축소되는 것으로 판단된 경우 상기 동적 텍스처의 상기 품질이 낮아지도록 상기 렌더링 수준을 결정하고,
    상기 사용 정보에 기초하여 현재 프레임에서 상기 타겟 객체의 일부분이 표시되는 것으로 판단되는 경우 상기 일부분에 대응하는 상기 동적 텍스처의 일부가 상기 렌더링 범위에 해당되도록 상기 렌더링 수준을 결정하는, 방법.
  4. 삭제
  5. 제 2 항에 있어서,
    상기 렌더링 수준을 결정하는 단계는
    상기 사용 정보에 기초하여 현재 프레임에서 상기 타겟 객체가 표시되지 않는 것으로 판단되는 경우 상기 동적 텍스처가 사용되지 않도록 상기 렌더링 수준을 결정하고,
    상기 동적 텍스처가 사용되지 않도록 상기 렌더링 수준이 결정된 경우, 상기 동적 텍스처의 상기 렌더링 및 상기 타겟 객체의 상기 렌더링은 스킵되는, 방법.
  6. 삭제
  7. 제 1 항에 있어서,
    상기 사용 정보는
    상기 그래픽스 파이프라인에서, 상기 타겟 객체에 대하여 버텍스 쉐이딩(vertex shading) 및 프리미티브 어셈블리(primitive assembly)를 포함하는 상기 기하 프로세싱을 수행함으로써 획득되는, 방법.
  8. 제 1 항에 있어서,
    상기 사용 정보는
    상기 그래픽스 파이프라인이 타일-기반 렌더링(tile-based rendering, TBR)을 위한 것인 경우, 상기 타겟 객체에 대한 타일 비닝(tile binning)의 결과로부터 획득되고,
    상기 그래픽스 파이프라인이 IMR(immediate rendering)을 위한 것인 경우, 상기 타겟 객체에 대한 기하(geometry) 프로세싱 스테이지의 결과로부터 획득되는, 방법.
  9. 삭제
  10. 삭제
  11. 삭제
  12. 제 1 항 내지 제 3 항, 제 5 항, 제 7 항, 제 8 항 중에 어느 한 항의 방법을 컴퓨터에서 실행시키기 위한 프로그램을 기록한 컴퓨터로 읽을 수 있는 기록매체.
  13. 그래픽스 파이프라인에서 텍스처를 처리하는 그래픽 프로세싱 장치에 있어서,
    적어도 하나의 캐시 메모리; 및
    적어도 하나의 프로세서를 포함하고,
    상기 적어도 하나의 프로세서는
    제 1 패스가 동적 텍스처의 렌더링을 위한 패스인지 여부를 판단하고, 상기 제 1 패스가 상기 동적 텍스처의 상기 렌더링을 위한 패스인 것으로 판단된 경우 타겟 객체에 매핑될 상기 동적 텍스처의 기하(geometry) 프로세싱을 상기 제 1 패스에서 수행하고, 제 2 패스에서 상기 타겟 객체의 사용 정보(usage information) 를 획득하기 위한 상기 타겟 객체의 기하 프로세싱을 수행하고, 상기 타겟 객체의 사용 정보에 기초하여 상기 타겟 객체에 매핑될 상기 동적 텍스처의 렌더링 수준을 상기 제 1 패스에서 결정하고, 상기 결정된 렌더링 수준에 따라 상기 동적 텍스처를 상기 제 2 패스에서 렌더링하고, 상기 렌더링된 동적 텍스처로 상기 타겟 객체를 텍스처링함으로써 상기 타겟 객체를 렌더링하고,
    상기 사용 정보는 현재 프레임에서 표시될 상기 타겟 객체의 위치, 크기 및 표시 범위에 대한 기하 정보를 포함하고,
    상기 제 1 패스 및 상기 제 2 패스는 독립적인 렌더링 패스들인,
    그래픽 프로세싱 장치.
  14. 삭제
  15. 삭제
  16. 삭제
  17. 삭제
  18. 삭제
  19. 제 13 항에 있어서,
    상기 적어도 하나의 프로세서는
    상기 동적 텍스처를 렌더링하기 위한 제 1 버텍스 쉐이딩 스테이지, 제 1 프리미티브 어셈블리 스테이지 및 제 1 픽셀 쉐이딩(pixel shading) 스테이지를 포함하는 상기 제 1 패스(pass), 및 상기 타겟 객체를 렌더링하기 위한 제 2 버텍스 쉐이딩 스테이지, 제 2 프리미티브 어셈블리 스테이지 및 제 2 픽셀 쉐이딩 스테이지를 포함하는 상기 제 2 패스를 수행하는 상기 그래픽스 파이프라인을 처리하고,
    상기 제 1 픽셀 쉐이딩 스테이지는
    상기 제 2 버텍스 쉐이딩 스테이지 및 상기 제 2 프리미티브 어셈블리 스테이지를 포함하는 상기 기하 프로세싱의 수행에 의해 획득된 상기 사용 정보에 기초하여 결정된 상기 렌더링 수준에 따라 상기 동적 텍스처를 렌더링하는, 그래픽 프로세싱 장치.
  20. 제 13 항에 있어서,
    상기 적어도 하나의 프로세서는
    상기 동적 텍스처를 렌더링하기 위한 제 1 버텍스 쉐이딩 스테이지, 제 1 프리미티브 어셈블리 스테이지 및 제 1 픽셀 쉐이딩(pixel shading) 스테이지를 포함하는 상기 제 1 패스(pass), 및 상기 타겟 객체를 렌더링하기 위한 제 2 버텍스 쉐이딩 스테이지, 제 2 프리미티브 어셈블리 스테이지 및 제 2 픽셀 쉐이딩 스테이지를 포함하는 상기 제 2 패스를 수행하는 상기 그래픽스 파이프라인을 처리하고,
    상기 제 1 픽셀 쉐이딩 스테이지는
    상기 제 2 버텍스 쉐이딩 스테이지, 상기 제 2 프리미티브 어셈블리 스테이지 및 일부의(partial) 상기 제 2 버텍스 쉐이딩 스테이지의 수행에 의해 획득된 상기 사용 정보에 기초하여 결정된 상기 렌더링 수준에 따라 상기 동적 텍스처를 렌더링하는, 그래픽 프로세싱 장치.
KR1020160159419A 2016-11-28 2016-11-28 그래픽 프로세싱 장치 및 그래픽스 파이프라인에서 텍스처를 처리하는 방법 KR102651126B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020160159419A KR102651126B1 (ko) 2016-11-28 2016-11-28 그래픽 프로세싱 장치 및 그래픽스 파이프라인에서 텍스처를 처리하는 방법
US15/628,085 US10331448B2 (en) 2016-11-28 2017-06-20 Graphics processing apparatus and method of processing texture in graphics pipeline

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020160159419A KR102651126B1 (ko) 2016-11-28 2016-11-28 그래픽 프로세싱 장치 및 그래픽스 파이프라인에서 텍스처를 처리하는 방법

Publications (2)

Publication Number Publication Date
KR20180060198A KR20180060198A (ko) 2018-06-07
KR102651126B1 true KR102651126B1 (ko) 2024-03-26

Family

ID=62192810

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020160159419A KR102651126B1 (ko) 2016-11-28 2016-11-28 그래픽 프로세싱 장치 및 그래픽스 파이프라인에서 텍스처를 처리하는 방법

Country Status (2)

Country Link
US (1) US10331448B2 (ko)
KR (1) KR102651126B1 (ko)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
RU2730435C1 (ru) 2017-04-21 2020-08-21 Зенимакс Медиа Инк. Системы и способы рендеринга с адаптируемым качеством под управлением кодировщика
CN113344797B (zh) * 2020-02-18 2024-01-26 北京字节跳动网络技术有限公司 特效处理的方法、装置、可读介质和电子设备
US20210287418A1 (en) * 2020-03-10 2021-09-16 Advanced Micro Devices, Inc. Graphics processing unit render mode selection system
CN111476858B (zh) * 2020-04-10 2023-03-14 浙江无端科技股份有限公司 一种基于WebGL的2d引擎渲染方法、装置及设备
CN111508051B (zh) * 2020-04-22 2023-03-14 浙江无端科技股份有限公司 一种纹理加载方法及相关装置
CN114757814A (zh) * 2020-12-25 2022-07-15 北京字跳网络技术有限公司 动态流体显示方法、装置、电子设备和可读介质
US20220212100A1 (en) * 2021-01-04 2022-07-07 Microsoft Technology Licensing, Llc Systems and methods for streaming interactive applications
CN113947657A (zh) * 2021-10-18 2022-01-18 网易(杭州)网络有限公司 目标模型的渲染方法、装置、设备及存储介质
CN116958375A (zh) * 2022-04-20 2023-10-27 象帝先计算技术(重庆)有限公司 图形处理器、系统、装置、设备及方法

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030058260A1 (en) 1997-10-23 2003-03-27 Hideaki Ohshima Image processing apparatus and method, and computer-readable memory
JP2011090648A (ja) 2009-10-26 2011-05-06 Sony Computer Entertainment Inc 画像処理装置および画像処理方法
US20110199377A1 (en) 2010-02-12 2011-08-18 Samsung Electronics Co., Ltd. Method, apparatus and computer-readable medium rendering three-dimensional (3d) graphics
JP2012216006A (ja) 2011-03-31 2012-11-08 Sony Computer Entertainment Inc 情報処理システム、情報処理装置、撮像装置、および情報処理方法
JP2015062089A (ja) 2011-12-15 2015-04-02 日本電気株式会社 映像処理システム、映像処理方法、携帯端末用またはサーバ用の映像処理装置およびその制御方法と制御プログラム

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB9501832D0 (en) * 1995-01-31 1995-03-22 Videologic Ltd Texturing and shading of 3-d images
GB2343601B (en) * 1998-11-06 2002-11-27 Videologic Ltd Shading and texturing 3-dimensional computer generated images
KR100747660B1 (ko) * 2005-12-26 2007-08-08 삼성전자주식회사 버스―대역폭에 적응적인 텍스처 품질 조절방법 및 텍스처품질 조절장치
JP4487959B2 (ja) * 2006-03-17 2010-06-23 ソニー株式会社 画像処理装置および画像処理方法、並びにプログラム
KR101349171B1 (ko) * 2007-01-17 2014-01-09 삼성전자주식회사 3차원 그래픽 가속기 및 그것의 픽셀 분배 방법
US8203564B2 (en) * 2007-02-16 2012-06-19 Qualcomm Incorporated Efficient 2-D and 3-D graphics processing
US20100220104A1 (en) 2007-09-13 2010-09-02 Shoji Tanaka Map drawing device
US7999819B2 (en) * 2007-11-20 2011-08-16 Via Technologies, Inc. Systems and methods for managing texture descriptors in a shared texture engine
JP2010033299A (ja) 2008-07-28 2010-02-12 Namco Bandai Games Inc 画像生成システム、プログラム及び情報記憶媒体
US8593475B2 (en) 2010-10-13 2013-11-26 Qualcomm Incorporated Systems and methods for dynamic procedural texture generation management
WO2012100373A1 (en) * 2011-01-28 2012-08-02 Intel Corporation Techniques to request stored data from memory
WO2013089684A2 (en) 2011-12-13 2013-06-20 Empire Technology Development, Llc Graphics render matching for displays
KR101851221B1 (ko) 2013-07-05 2018-04-25 삼성전자주식회사 초음파 영상 장치 및 그 제어 방법
US9232177B2 (en) 2013-07-12 2016-01-05 Intel Corporation Video chat data processing
KR102066659B1 (ko) 2013-08-13 2020-01-15 삼성전자 주식회사 그래픽 프로세싱 유닛, 이를 포함하는 그래픽 프로세싱 시스템 및 이의 동작 방법

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030058260A1 (en) 1997-10-23 2003-03-27 Hideaki Ohshima Image processing apparatus and method, and computer-readable memory
JP2011090648A (ja) 2009-10-26 2011-05-06 Sony Computer Entertainment Inc 画像処理装置および画像処理方法
US20110199377A1 (en) 2010-02-12 2011-08-18 Samsung Electronics Co., Ltd. Method, apparatus and computer-readable medium rendering three-dimensional (3d) graphics
JP2012216006A (ja) 2011-03-31 2012-11-08 Sony Computer Entertainment Inc 情報処理システム、情報処理装置、撮像装置、および情報処理方法
JP2015062089A (ja) 2011-12-15 2015-04-02 日本電気株式会社 映像処理システム、映像処理方法、携帯端末用またはサーバ用の映像処理装置およびその制御方法と制御プログラム

Also Published As

Publication number Publication date
KR20180060198A (ko) 2018-06-07
US20180150296A1 (en) 2018-05-31
US10331448B2 (en) 2019-06-25

Similar Documents

Publication Publication Date Title
KR102651126B1 (ko) 그래픽 프로세싱 장치 및 그래픽스 파이프라인에서 텍스처를 처리하는 방법
CN110663065B (zh) 用于中央凹形渲染的存储
KR102122454B1 (ko) 이전 타일의 이미지를 이용하여 현재 프레임을 렌더링하는 방법 및 장치
EP3008701B1 (en) Using compute shaders as front end for vertex shaders
JP6726946B2 (ja) レンダリング方法、レンダリング装置及び電子装置
CN106296565B (zh) 图形管线方法和设备
KR102646906B1 (ko) 타일 기반 렌더링 방법 및 장치
US10169839B2 (en) Method and apparatus for executing graphics pipeline
KR102381945B1 (ko) 그래픽 프로세싱 장치 및 그래픽 프로세싱 장치에서 그래픽스 파이프라인을 수행하는 방법
KR20180056316A (ko) 타일-기반 렌더링을 수행하는 방법 및 장치
US20160104458A1 (en) Graphics processing unit for adjusting level-of-detail, method of operating the same, and devices including the same
TWI786233B (zh) 關於以微磚為基礎之低解析度深度儲存之方法、器件與非暫時性電腦可讀儲存媒體
US10432914B2 (en) Graphics processing systems and graphics processors
EP3427229B1 (en) Visibility information modification
KR102477265B1 (ko) 그래픽스 프로세싱 장치 및 그래픽스 파이프라인의 텍스쳐링을 위한 LOD(level of detail)를 결정하는 방법
US10262391B2 (en) Graphics processing devices and graphics processing methods
JP6936689B2 (ja) カーブレンダリング方法
KR20230073222A (ko) 깊이 버퍼 프리-패스
KR20180037838A (ko) 텍스쳐를 처리하는 방법 및 장치
KR20180037839A (ko) 그래픽스 프로세싱 장치 및 인스트럭션의 실행 방법
KR102116976B1 (ko) 렌더링 방법 및 장치
US10311627B2 (en) Graphics processing apparatus and method of processing graphics pipeline thereof
KR102085701B1 (ko) 이미지를 렌더링하는 방법

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