KR101719485B1 - 그래픽 처리 유닛에서의 사전 픽셀 제거를 위한 장치 및 방법 - Google Patents

그래픽 처리 유닛에서의 사전 픽셀 제거를 위한 장치 및 방법 Download PDF

Info

Publication number
KR101719485B1
KR101719485B1 KR1020100092377A KR20100092377A KR101719485B1 KR 101719485 B1 KR101719485 B1 KR 101719485B1 KR 1020100092377 A KR1020100092377 A KR 1020100092377A KR 20100092377 A KR20100092377 A KR 20100092377A KR 101719485 B1 KR101719485 B1 KR 101719485B1
Authority
KR
South Korea
Prior art keywords
pixel
dispatch
shader
depth
processing
Prior art date
Application number
KR1020100092377A
Other languages
English (en)
Other versions
KR20120030700A (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 KR1020100092377A priority Critical patent/KR101719485B1/ko
Priority to US13/067,411 priority patent/US8624894B2/en
Publication of KR20120030700A publication Critical patent/KR20120030700A/ko
Application granted granted Critical
Publication of KR101719485B1 publication Critical patent/KR101719485B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/10Geometric effects
    • G06T15/40Hidden part removal
    • 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
    • G06T7/00Image analysis
    • G06T7/50Depth or shape recovery
    • G06T7/507Depth or shape recovery from shading

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Geometry (AREA)
  • Computer Graphics (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Image Generation (AREA)

Abstract

그래픽 처리 유닛에서의 사전 픽셀 제거를 위한 장치 및 방법이 제공된다. 디스카드 명령어에 의해 디스카드될 수 있는 픽셀에 대해서는 깊이 값을 갱신하지 않는 사전 깊이 검사가 수행되고, 디스카드 명령어에 의해 디스카드되지 않는 픽셀에 대해서는 깊이 값을 갱신하는 사전 깊이 검사가 수행된다. 사전 깊이 검사에 의해 픽셀 쉐이딩 처리 대상이 되는 픽셀의 수가 감소된다.

Description

그래픽 처리 유닛에서의 사전 픽셀 제거를 위한 장치 및 방법{APPARATUS AND METHOD FOR EARLY FRAGMENT DISCARDING IN GRAPHIC PROCESSING UNIT}
아래의 실시예들은 그래픽 처리 유닛에서 사전 픽셀 제거를 하기 위한 방법 및 장치에 관한 것이다.
3D 렌더링 연산 과정에서, 불필요한 픽셀을 사전에 제거함으로써 렌더링 성능을 향상시키는 장치 및 방법이 개시된다.
3D(Dimension) 렌더링(Rendering)은 3 차원 객체(Object) 데이터를 주어진 카메라 시점(View Point)에서 보이는 영상으로 합성(Synthesis)하는 영상 처리이다.
이 중, 실시간으로 3D 영상을 생성하기 위하여 3 차원 객체를 화면에 투영(Projection)하면서 영상을 생성하는 레스터화(Rasterization) 방법이 널리 사용된다.
본 발명의 일측에 따르면, 깊이 값을 유지하는 사전 깊이 검사를 수행하고 디스카드 쉐이더를 처리함으로써 픽셀을 선택적으로 제거하는 디스카드 쉐이딩 처리부 및 깊이 값을 갱신하는 사전 깊이 검사를 수행함으로써 상기 픽셀을 선택적으로 제거하고 픽셀 쉐이더를 사용함으로써 상기 픽셀을 처리하는 픽셀 쉐이딩 처리부를 포함하고, 상기 디스카드 쉐이딩 처리부는 제거되지 않은 상기 픽셀을 상기 픽셀 쉐이딩 처리부로 출력하는, 3D 렌더링 장치가 제공된다.
상기 디스카드 쉐이더는 상기 픽셀을 처리하는 전체 픽셀 쉐이더 중 디스카드 명령어에 연관된 일부에 대응할 수 있고, 상기 픽셀 쉐이더는 상기 전체 픽셀 쉐이더 중 상기 디스카드 쉐이더에 대응하는 일부를 제외한 다른 일부에 대응할 수 있다.
상기 디스카드 쉐이딩 처리부는, 상기 픽셀에 대한 깊이 검사를 처리함으로써 상기 픽셀을 선택적으로 제거하는 제1 깊이 검사부 및 상기 디스카드 쉐이더로 제1 깊이 검사부에 의해 제거되지 않은 상기 픽셀을 처리하며, 상기 픽셀에 대한 디스카드 명령어를 처리함으로써 상기 픽셀을 선택적으로 제거하는 디스카드 쉐이더부를 포함할 수 있고, 상기 제1 깊이 검사부는 상기 픽셀에 대응하는 깊이 버퍼의 깊이 값을 유지할 수 있다.
상기 픽셀 쉐이딩 처리부는, 상기 픽셀에 대한 깊이 검사를 처리함으로써 상기 픽셀을 선택적으로 제거하는 제2 깊이 검사부 및 상기 픽셀 쉐이더로 상기 제2 깊이 검사부에 의해 제거되지 않은 상기 픽셀을 처리하는 픽셀 쉐이더부를 포함할 수 있고, 상기 제2 깊이 검사부는 상기 픽셀이 제거될 때 상기 픽셀에 대응하는 깊이 버퍼의 깊이 값을 상기 제거되는 픽셀의 깊이 값으로 갱신할 수 있다.
상기 3D 렌더링 장치는, 상기 픽셀이 상기 디스카드 쉐이딩 처리부의 처리 대상인지 여부를 판단하는 디스카드 판단부를 더 포함할 수 있고, 상기 디스카드 판단부는 상기 픽셀이 디스카드 처리부의 처리 대상인 경우 상기 픽셀을 상기 디스카드 쉐이딩 처리부로 출력할 수 있고, 상기 픽셀이 디스카드 쉐이딩 처리부의 처리 대상이 아닌 경우 상기 픽셀을 상기 픽셀 쉐이딩 처리부로 출력할 수 있다.
상기 3D 렌더링 장치는, 상기 픽셀에 대한 레스터화를 처리하여 상기 디스카드 판단부로 출력하는 레스터라이저부 및 상기 픽셀 쉐이딩 처리부로부터 상기 픽셀을 입력받아 상기 픽셀에 대한 컬러 블랜딩을 수행하는 컬러 블랜딩부를 더 포함할 수 있다.
상기 디스카드 판단부는 상기 픽셀을 처리하는 픽셀 쉐이더가 상기 디스카드 명령어를 포함하면 상기 픽셀을 상기 디스카드 쉐이딩 처리부로 출력하고, 상기 픽셀 쉐이더가 상기 디스카드 명령을 포함하지 않으면 상기 픽셀을 상기 픽셀 쉐이딩 처리부로 출력할 수 있다.
상기 3D 렌더링 장치는, 픽셀에 대한 전체 픽셀 쉐이더 코드를 디스카드 쉐이더 코드 및 픽셀 쉐이더 코드로 분리하고, 상기 디스카드 쉐이더 코드를 컴파일하여 상기 디스카드 쉐이더를 생성하고, 상기 픽셀 쉐이더 코드를 컴파일하여 상기 픽셀 쉐이더를 생성하는 컴파일러부를 더 포함할 수 있고, 상기 디스카드 쉐이더 코드는 상기 전체 픽셀 쉐이더 코드 중 디스카드 명령어 코드 및 상기 디스카드 명령어의 이전 코드에 대응할 수 있고, 상기 픽셀 쉐이더 코드는 상기 전체 픽셀 쉐이더 코드 중 상기 디스카드 명령어의 이후 코드에 대응할 수 있다.
상기 픽셀에 대한 정보는 상기 디스카드 쉐이더 코드의 베링 변수에 의해 상기 디스카드 쉐이더 코드로부터 상기 픽셀 쉐이더 코드로 전달될 수 있다.
본 발명의 다른 일측에 따르면, 깊이 값을 유지하는 사전 깊이 검사를 수행하고 디스카드 쉐이더를 처리함으로써 픽셀을 선택적으로 제거하는 디스카드 쉐이딩 처리 단계 및 깊이 값을 갱신하는 사전 깊이 검사를 수행함으로써 상기 픽셀을 선택적으로 제거하고 픽셀 쉐이더를 사용함으로써 상기 픽셀을 처리하는 픽셀 쉐이딩 처리 단계를 포함하고, 상기 디스카드 쉐이딩 처리 단계에서 제거되지 않은 상기 픽셀은 상기 픽셀 쉐이딩 처리 단계에서 처리되는, 3D 렌더링 방법이 제공된다.
상기 디스카드 쉐이딩 처리 단계는, 상기 픽셀에 대한 깊이 검사를 수행함으로써 상기 픽셀을 선택적으로 제거하는 제1 깊이 검사 단계 및 상기 디스카드 쉐이더로 제1 깊이 검사부에 의해 제거되지 않은 상기 픽셀을 처리하며, 상기 픽셀에 대한 디스카드 명령어를 처리함으로써 상기 픽셀을 선택적으로 제거하는 디스카드 쉐이딩 단계를 포함할 수 있고, 상기 제1 깊이 검사 단계는 상기 픽셀에 대응하는 깊이 버퍼의 깊이 값을 유지할 수 있다.
상기 픽셀 쉐이딩 처리 단계는, 상기 픽셀에 대한 깊이 검사를 처리함으로써 상기 픽셀을 선택적으로 제거하는 제2 깊이 검사 단계 및 상기 픽셀 쉐이더로 상기 제2 깊이 검사부에 의해 제거되지 않은 상기 픽셀을 처리하는 픽셀 쉐이딩 단계를 포함할 수 있고, 상기 제2 깊이 검사 단계는, 상기 픽셀에 대응하는 깊이 버퍼의 깊이 값을 상기 제거되는 픽셀의 깊이 값으로 갱신하는 깊이 버퍼 갱신 단계를 포함할 수 있다.
상기 3D 렌더링 방법은 상기 픽셀이 상기 디스카드 쉐이딩 처리 단계의 처리 대상인지 여부를 판단하는 디스카드 판단 단계를 더 포함할 수 있고, 상기 픽셀이 디스카드 처리 단계의 처리 대상인 경우 상기 디스카드 쉐이딩 처리 단계가 수행될 수 있고, 상기 픽셀이 디스카드 처리 단계의 처리 대상이 아닌 경우 픽셀 쉐이딩 처리 단계가 수행될 수 있다
상기 3D 렌더링 방법은, 상기 픽셀에 대한 레스터화를 처리하는 레스터라이저 단계 및 상기 픽셀에 대한 컬러 블랜딩을 수행하는 컬러 블랜딩 단계를 더 포함할 수 있다.
상기 픽셀을 처리하는 픽셀 쉐이더가 상기 디스카드 명령어를 포함하면 상기 디스카드 판단 단계 이후 상기 디스카드 쉐이딩 처리 단계가 수행될 수 있고, 상기 픽셀 쉐이더가 상기 디스카드 명령을 포함하지 않으면 상기 픽셀 쉐이딩 처리 단계가 수행될 수 있다.
상기 디스카드 쉐이더 처리 단계는 디스카드 쉐이더 코드가 나타내는 처리를 수행할 수 있고, 상기 픽셀 쉐이더 처리 단계는 픽셀 쉐이더 코드가 나타내는 처리를 수행할 수 있다.
상기 디스카드 쉐이더 코드는 픽셀에 대한 전체 픽셀 쉐이더 코드 중 디스카드 명령어 코드 및 상기 디스카드 명령어의 이전 코드에 대응할 수 있고, 상기 픽셀 쉐이더 코드는 상기 전체 픽셀 쉐이더 코드 중 상기 디스카드 명령어의 이후 코드에 대응할 수 있다.
상기 디스카드 쉐이더 단계는, 상기 디스카드 쉐이더 코드의 베링 변수에 기반하여 상기 픽셀에 대한 정보를 추출하는 제1 베링 데이터 패치 단계를 포함할 수 있고, 상기 패치 쉐이더 단계는, 상기 픽셀 쉐이더 코드의 베링 변수에 기반하여 상기 픽셀에 대한 정보를 추출하는 제2 베링 데이터 패치 단계를 포함할 수 있다.
깊이 값을 갱신하지 않는 사전 깊이 검사 및 깊이 값을 갱신하는 사전 깊이 검사를 수행함으로써 픽셀 쉐이더의 처리 대상이 되는 픽셀들의 개수를 감소시키는 3D 렌더링 장치 및 방법이 제공된다.
디스카드 명령을 포함하는 디스카드 쉐이더 및 디스카드 명령을 포함하지 않는 픽셀 쉐이더를 분리하여 처리함으로써 성능을 향상시키는 3D 렌더링 장치 및 방법이 제공된다.
도 1은 본 발명의 일 예에 따른 레스터화 기반의 3D 그래픽스(Graphics) 렌더링 기법의 파이프라인(Pipeline)을 도시한다.
도 2는 본 발명의 일 예에 따른 픽셀 단계의 파이프라인을 도시한다.
도 3은 본 발명의 일 예에 따른 단순 사전 깊이 검사(Simple Early Depth Test)를 수행하는 파이프라인을 도시한다.
도 4는 본 발명의 일 예에 따른 객체들의 깊이에 따른 결과 이미지를 설명한다.
도 5는 본 발명의 일 예에 따른 객체의 렌더링 파이프 라인 처리를 설명한다.
도 6은 본 발명의 일 예에 따른 사전 깊이 검사 및 디스카드 명령어의 처리에 따른 문제점을 설명한다.
도 7은 본 발명의 일 실시예에 따른 3D 렌더링 장치의 구조도이다.
도 8은 본 발명의 일 예에 따른 컴파일러의 코드 생성을 설명한다.
도 9는 본 발명의 일 실시예에 따른 3D 렌더링 방법의 흐름도이다.
도 10은 본 발명의 일 예에 따른 3D 렌더링 처리 결과를 도시한다.
이하에서, 본 발명의 일 실시예를, 첨부된 도면을 참조하여 상세하게 설명한다. 그러나, 본 발명이 실시예들에 의해 제한되거나 한정되는 것은 아니다. 각 도면에 제시된 동일한 참조 부호는 동일한 부재를 나타낸다.
도 1은 본 발명의 일 예에 따른 레스터화 기반의 3D 그래픽스(Graphics) 렌더링 기법의 파이프라인(Pipeline)을 도시한다.
파이프라인은 각각의 단계에서 서로 다른 픽셀에 대한 연산이 병렬적으로 수행될 수 있음을 의미한다.
파이프라인(100)은 기하 단계(Geometry Stage)(110) 및 픽셀 단계(Pixel Stage)(150)를 포함한다.
기하 단계(110)는 공간 상 버텍스(Vertex)의 위상 변화(Transformation) 및 은면 제거(Back-Face Culling)를 수행하고, 버텍스의 좌표를 스크린(Screen)으로 투영(Projection)한다.
픽셀 단계(150)는 버텍스들의 투영된 좌표를 기준으로, 버텍스들이 이루는 삼각형(또는, 다른 다각형일 수 있다)의 내부의 픽셀들을 생성하고, 픽셀들 각각의 색상 값을 계산한다.
기하 단계(110)는 프리미티브 프로세싱(120), 버텍스 쉐이더(130) 및 프리미티브 어셈블리 (140)를 포함한다.
픽셀 단계(150)는 레스터라이저(Rasterizer)(150), 픽셀 쉐이더(160) 및 레스터 오퍼레이션(170)을 포함한다.
도 1 하단의 도형들은 각 단계에서의 버텍스 또는 픽셀의 처리를 개념적으로 나타낸다.
프리미티브 프로세싱(120)은 애플리케이션으로부터 애플리케이션-특유(Application-Specific) 데이터 및 데이터 구조들(Data Structures)을 취하고, 버텍스들을 생성한다.
쉐이더(Shader)는 소프트웨어 명령어들(Instructions)의 집합이다. 쉐이더는 주로 그래픽스 하드웨어(Hardware) 상에서의 렌더링 효과들(Effects)의 계산을 위해 사용된다. 쉐이더는 그래픽스 프로세싱 유닛(Graphics Processing Unit; GPU) 프로그램가능한(Programmable) 렌더링 파이프라인을 프로그램하기 위해 사용된다.
버텍스 쉐이더(130)는 GPU에게 주어진 버텍스들 각각을 위해 한 번씩 사용되며, 각각의 버텍스들의 가상 공간(Virtual Space) 내의 3D 위치(Position)를 화면에서 나타날 2D 좌표(Coordinate) 및 Z-버퍼(Buffer)의 깊이 값(Depth Value)으로 변환(Transform)한다.
프리미티브 어셈블리(140)는 버텍스 쉐이더(130)로부터 출력되는 버텍스 데이터의 런(Run)을 수집(Collect)하여, 이를 실행 가능한(Viable) 프리미티브(Primitive)(예컨대, 선(Line), 점(Point) 및 삼각형(Triangle))로 구성한다.
레스터라이저(160)는 프리미티브 내의 각 꼭지점에 정의된 스크린 좌표, 텍스쳐(Texture) 좌표 등을 보간함으로써 내부 픽셀의 정보를 생성한다.
픽셀 쉐이더(170)는 쉐이더 프로그래머(Programmer)에 의해 구현된 코드를 수행함으로써 생성된 내부 픽셀들 각각에 대해 복잡한(Complex) 픽셀-당(Per-Pixel) 효과들(Effects)을 수행한다. 픽셀 쉐이더는 텍스쳐 매핑(Mapping) 및 빛의 반사 등을 계산함으로써 픽셀의 색상을 계산하거나, 디스카드(Discard) 명령어를 사용함으로써 특정한 픽셀을 제거한다. 디스카드 명령어는 픽셀 쉐이더 내부에서 특정한 픽셀을 파이프라인에서 제거시키는 명령어이다. 제거된 픽셀은 더 이상 렌더링 처리의 대상이 되지 아니한다.
레스터 오퍼레이션(180)은 후술된 깊이 검사(Depth Test) 및 컬러 블랜딩(Color Blending)을 수행함으로써 픽셀의 정보에 기반하여 레스터 이미지(픽셀들 또는 도트들(Dots))를 생성한다. 생성된 레스터 이미지는 프레임 버퍼로 복사된다.
프레임 버퍼는 완전한(Complete) 데이터 프레임(Frame)을 포함하는 메모리 버퍼로부터 비디오 출력(Video Display)을 구동(Drive)하는 비디오 출력 장치(Device)이다.
도 2는 본 발명의 일 예에 따른 픽셀 단계의 파이프라인을 도시한다.
픽셀 단계의 파이프라인(200)은 레스터라이저(210), 픽셀 쉐이더(220), 깊이 검사(230) 및 컬러 플랜딩(240)를 포함한다.
레스터라이저(210)는 도 1의 레스터라이저(150)에 대응하고, 픽셀 쉐이더(220)는 도 1의 픽셀 쉐이더(160)에 대응한다. 중복되는 설명은 생략한다.
도 1의 레스터 오퍼레이션(170)은 깊이 검사(230) 및 컬러 블랜딩(240)에 대응한다.
깊이 검사(230)는 최종 영상에서, 좌표 값이 중복되는 픽셀들에 대해서, 카메라로부터 먼 픽셀들을 제거함으로써 상기 카메라에 가장 가까운 물체만이 보여지도록 하는 단계이다. 카메라에 가장 가까운 물체가 투명한 경우, 그 다음 물체가 보여진다.
깊이 검사는 카메라에서 가까운 물체만을 영상으로서 표현하면서, 상기 영상에 표시되지 않는 픽셀을 사전에 제거함으로써 3D 렌더링의 연산량을 줄일 수 있다.
컬러 블랜딩(240)은 계산된 픽셀들(예컨대, 좌표 값이 중복되는 반투명 또는 알파(Alpha) 값을 갖는 픽셀들)의 색상을 혼합함으로써 최종 영상의 색상을 계산한다.
3D 렌더링 과정에서, 디스카드 또는 깊이 검사에 의해 제거될 픽셀들이 픽셀 쉐이더의 수행 전에 검출될 수 있으면, 픽셀 쉐이더의 연산을 최소화함으로써 3D 렌더링의 성능이 향상될 수 있다.
도 3은 본 발명의 일 예에 따른 단순 사전 깊이 검사(Simple Early Depth Test)를 수행하는 파이프라인을 도시한다.
픽셀들이 픽셀 쉐이더에 의해 처리되기 전에, 깊이 검사에 의해 선택적으로 제거되면, 픽셀 쉐이더의 처리 대상이 되는 픽셀들의 개수가 감소되고 3D 렌더링 처리 성능이 향상될 수 있다.
단순 사전 깊이 검사를 수행하는 파이프라인(300)은 레스터라이저(310), 사전 깊이 검사(320), 픽셀 쉐이더(330) 및 컬러 블랜딩(340)을 포함한다.
레스터라이저(310) 및 컬러 블랜딩(340)은 각각 도 2의 레스터라이저(210) 및 컬러 블랜딩(240)에 대응한다. 중복되는 설명은 생략한다.
사전 깊이 검사(320)는 도 2의 깊이 검사(230)에 대응하나, 픽셀 쉐이더(330) 이전에 수행된다. 픽셀 쉐이더(330)는 도 2의 픽셀 쉐이더(220)에 대응하나, 사전 깊이 검사(320)에 의해 제거되지 않은 픽셀만을 처리한다.
픽셀 쉐이더의 디스카드 명령에 의해 카메라에서 가장 가까운 제1 픽셀이 제거되는 경우, 상기 제1 픽셀의 뒤에 있는 제2 픽셀이 그려져야 한다. 그러나, 깊이 검사를 픽셀 쉐이더 이전에 수행함으로써 픽셀을 제거하는 경우, 상기 제2 픽셀은 이미 깊이 검사에 의해 제거되었기 때문에 그려질 수 없다.
도 4 내지 도 6은 본 발명의 일 예에 따른 깊이 검사 및 사전 깊이 검사의 문제점을 설명한다.
도 4는 본 발명의 일 예에 따른 객체들의 깊이에 따른 결과 이미지를 설명한다.
도 4에서 3개의 객체(410, 420 및 430)가 도시되었다.
제1 객체(410) 및 제2 객체(420)는 불투명 객체이고 제3 객체(430)는 투명(Transparent) 객체이다.
카메라(또는 관찰자)의 시점을 기준으로, 제3 객체(430)가 가장 가깝게 위치한다. 제2 객체(420)가 제3 객체(430) 및 제1 객체(410)의 사이에 있고, 제1 객체(410)가 가장 멀리 있다. 즉, 제3 객체(430)의 깊이 값은 3이고, 제2 객체(420)의 깊이 값은 2이며, 제3 객체(410)의 깊이 값은 1이다.
렌더링이 수행되면, 카메라로부터 가장 가까운 객체가 결과 이미지(440)로서 표시되어야 한다. 그러나, 본 예에서 가장 가까운 객체는 투명하므로 그 다음으로 가까운 제2 객체(420)가 결과 이미지(440)로서 표시된다. 이 때, 결과 이미지(440)의 깊이 값은 제2 객체(420)의 깊이 값인 2가 아니라 그 앞에 있는 투명한 제3 객체(430)의 깊이 값인 3이다.
도 5는 본 발명의 일 예에 따른 객체의 렌더링 파이프 라인 처리를 설명한다.
도 5에서 도 4에서 도시된 3개의 객체(410, 430 및 420)가 순차적으로 렌더링 파이프라인에 의해 처리된다. 제1 객체(410)가 제일 먼저 처리되고, 그 다음으로 제3 객체(430)가 처리되며, 마지막으로 제2 객체(420)가 처리된다.
도시된 것처럼, 객체들 간의 처리 순서는 객체들의 깊이 값들에 따른 순서와는 일치하지 않을 수 있다.
도 6은 본 발명의 일 예에 따른 사전 깊이 검사 및 디스카드 명령어의 처리에 따른 문제점을 설명한다.
깊이 검사(640)는 도 3의 사전 깊이 검사(320)에 대응한다. 픽쉘 쉐이더(650)는 도 3의 픽셀 쉐이더(330)에 대응한다.
깊이 버퍼(660)는 깊이 값을 저장한다. 상기 깊이 값은 특정 좌표에 표시되는 객체의 깊이 값일 수 있다. 깊이 버퍼(660)의 깊이 값은 가장 먼 거리를 나타내는 값(예컨대, "0")으로 초기화될 수 있다.
도 6에서 깊이 값을 갖는 3개의 객체(410, 430 및 420)(예컨대, 픽셀)가 순차적으로 파이프라인(640 및 650)에 의해 처리된다. 각각의 객체가 처리되는 과정들(610, 620 및 630)을 분리하여 설명한다.
첫 번째 과정(610)에서 제1 객체(410)가 처리된다.
제1 객체(410)의 깊이 값 1은 깊이 버퍼(660)에 저장된 초기 값보다 크다. 따라서, 제1 객체(410)는 깊이 검사(640)에서 제거되지 않고 통과한다. 이 때, 깊이 버퍼(660)의 깊이 값은 제1 객체(410)의 깊이 값인 1로 갱신(Update)된다.
또한, 제1 객체(410)는 픽셀 쉐이더(650)에서도 디스카드 되지 않고 통과한다. 따라서, 결과 이미지(440)는 제1 객체(410)이다.
두 번째 과정(620)에서 제3 객체(430)가 처리된다.
제3 객체(430)의 깊이 값 3은 깊이 버퍼(660)에 저장된 깊이 값인 1보다 크다. 따라서, 제3 객체(430)는 깊이 검사(640)에서 제거되지 않고 통과한다. 이 때, 깊이 버퍼(660)의 깊이 값은 제3 객체(430)의 깊이 값인 3으로 갱신된다.
그러나, 제3 객체(430)는 투명 객체이기 때문에 픽셀 쉐이더(650)를 통과하지 못하고 디스카드된다. 따라서, 결과 이미지(440)는 여전히 제1 객체(410)이다.
세 번째 과정(630)에서 제2 객체(420)가 처리된다.
제2 객체(420)의 깊이 값 2은 깊이 버퍼(660)에 저장된 깊이 값인 3보다 작다. 따라서, 제3 객체(430)는 깊이 검사(640)를 통과하지 못하고 제거된다.
따라서, 결과 이미지(440)는 여전히 제1 객체(410)이다. 이는 도 4에서 설명된 바른 결과와 어긋난다.
즉, 임의의 순서로 처리되는 복수 개의 객체들 각각에게 사전 깊이 검사가 적용되고, 상기 복수 개의 객체들 중 일부가 디스카드 명령어에 의해 제거될 경우, 잘못된 이미지가 생성될 수 있다..
도 7은 본 발명의 일 실시예에 따른 3D 렌더링 장치의 구조도이다.
3D 렌더링 장치(700)는 렌더링 파이프라인부(710), 컴파일러부(770) 및 프레임 버퍼(780)를 포함한다.
렌더링 파이프라인부(710)는 레스터라이저부(720), 디스카드 판단부(730), 디스카드 쉐이딩 처리부(740), 픽셀 쉐이딩 처리부(750) 및 컬러 블랜딩부(760)를 포함한다. 렌더링 파이프라인(710)은 도 1에서 도시된 프리미티브 프로세싱(120), 버텍스 쉐이더(130) 및 프리미티브 어셈블리(140)를 더 포함할 수 있으며, 또는 상기 구성 요소들(120, 130 및 140)에 대응하는 구성 요소를 더 포함할 수 있다.
레스터라이저부(720)는 렌더링 파이프라인(710)으로 입력된 픽셀에 대한 레스터화를 처리하여 상기 픽셀을 디스카드 판단부(730)로 출력한다.
디스카드 판단부(730)는 입력 픽셀이 디스카드 처리부의 처리 대상인 경우 상기 입력 픽셀을 디스카드 쉐이딩 처리부(740)로 출력하고, 상기 입력 픽셀이 디스카드 쉐이딩 처리부의 처리 대상이 아닌 경우 상기 입력 픽셀을 픽셀 쉐이딩 처리부(750)로 출력한다.
즉, 디스카드 판단부(730)는 입력된 픽셀에 대한 스위치 역할을 한다.
디스카드 판단부(730)는 입력된 픽셀을 처리하는 픽셀 쉐이더가 디스카드 명령어를 포함하면, 입력된 픽셀을 디스카드 쉐이딩 처리부(740)로 출력할 수 있다. 디스카드 판단부(730)는 입력된 픽셀을 처리하는 픽셀 쉐이더가 디스카드 명령어를 포함하지 않으면, 입력된 픽셀을 픽셀 쉐이딩 처리부(750)로 출력할 수 있다.
컬러 블랜딩부(760)는 픽셀 쉐이딩 처리부(750)로부터 픽셀을 입력받아 입력 받은 픽셀에 대한 컬러 블랜딩을 수행한다. 수행된 결과는 프레임 버퍼(780)로 출력된다.
디스카드 쉐이딩 처리부(740)는 깊이 값을 유지하는 사전 깊이 검사를 수행하고 디스카드 쉐이더를 처리함으로써 입력 픽셀을 선택적으로 제거한다. 디스카드 쉐이딩 처리부(740)는 제거되지 않은 입력 픽셀을 픽셀 쉐이딩 처리부(750)로 출력한다.
즉, 입력된 일련의 픽셀들 중 사전 깊이 검사 및 픽셀에 대한 디스카드 명령어에 의해 일부가 제거되고, 나머지 일부가 픽셀 쉐이딩 처리부(750)로 출력된다.
디스카드 쉐이딩 처리부(740)는 사전 깊이 검사를 수행하나, 깊이 버퍼의 깊이 값을 갱신하지 않는다.
픽셀 쉐이딩 처리부(750)는 깊이 값을 갱신하는 사전 깊이 검사를 수행함으로써 상기 픽셀을 선택적으로 제거하고 픽셀 쉐이더를 사용함으로써 상기 픽셀을 처리한다. 즉, 입력된 일련의 픽셀들 중 사전 깊이 검사에 의해 일부가 제거된다. 픽셀 쉐이더에 의해 나머지 일부 픽셀의 최종적인 색상이 결정되고, 색상이 결정된 픽셀들은 컬러 블랜딩부(760)로 출력된다.
디스카드 쉐이더는 입력 픽셀을 처리하는 전체 픽셀 쉐이더 중 디스카드 명령어에 연관된 일부에 대응하고, 픽셀 쉐이더는 전체 픽셀 쉐이더 중 디스카드 쉐이더에 대응하는 일부를 제외한 다른 일부에 대응할 수 있다.
입력 픽셀을 처리하는 전체 픽셀 쉐이더가 디스카드 명령어를 포함하지 않는 경우, 입력 픽셀은 디스카드 판단부(730)에 의해 디스카드 쉐이딩 처리부(740)를 거치지 않고 픽셀 쉐이딩 처리부(750)로 바로 입력된다.
픽셀 쉐이딩 처리부(750)에 의해 깊이 버퍼의 깊이 값이 갱신됨으로써, 이 후 디스카드 쉐이딩 처리부(740) 및 픽셀 쉐이딩 처리부(750)에서 사전 깊이 검사가 수행되는 픽셀에게 영향을 미친다. 즉, 깊이 값을 갱신시킨 픽셀보다 더 먼 픽셀은 사전 깊이 검사에 의해 제거된다. 이러한 깊이 버퍼의 깊이 값의 갱신은, 입력 픽셀이 디스카드 명령어에 제거될지 여부가 결정된 직후에 발생한다.
또한, 픽셀의 컬러가 계산되기 이전에 깊이 버퍼가 갱신됨으로써, 파이프라인 병렬 처리시, 다른 픽셀들은 보다 최신의 깊이 값에 대해서 비교될 수 있다. 따라서, 사전 깊이 검사의 효율이 향상될 수 있으며, 렌더링 파이프라인부(710)의 병렬 처리 성능이 향상된다. 또한, 3D 렌더링 장치(700)의 연산량이 감소될 수 있고, 더 적은 메모리 대역폭이 3D 렌더링 장치(700) 내에서 사용될 수 있다.
픽셀 쉐이딩 처리부(750)가 사용하는 픽셀 쉐이더는 디스카드 명령어를 포함하지 않는다. 따라서, 도 6을 참조하여 전술된 것과 같은 사전 깊이 검사로 인한 문제가 발생하지 않는다. 따라서, 디스카드 명령어를 포함하지 않는 쉐이더에 의해 처리되는 픽셀의 경우, 디스카드 쉐이딩 처리부(740)를 거치지 않기 때문에, 픽셀 쉐이딩 처리부(750)에 의한 일반적인 사전 깊이 검사에 의해 제거될 수 있다.
디스카드 쉐이딩 처리부(740)는 제1 깊이 검사부(742) 및 디스카드 쉐이더부(744)를 포함할 수 있다.
제1 깊이 검사부(742)는 입력 픽셀에 대한 사전 깊이 검사를 처리함으로써 입력 픽셀을 선택적으로 제거한다. 제1 깊이 검사부(742)는 깊이 버퍼의 깊이 값을 변경하지 않는다. 즉, 제1 깊이 검사부(742)는 입력 픽셀에 대응하는 깊이 버퍼의 깊이 값을 유지한다.
디스카드 쉐이더부(744)는 입력 픽셀에 대한 디스카드 명령어를 처리함으로써 입력 픽셀을 선택적으로 제거한다.
픽셀 쉐이딩 처리부(750)는 제2 깊이 검사부(752) 및 픽셀 쉐이더부(754)를 포함할 수 있다.
제2 깊이 검사부(752)는 입력 픽셀에 대한 깊이 검사를 처리함으로써 상기 입력 픽셀을 선택적으로 제거한다. 제2 깊이 검사부(752) 입력 픽셀이 깊이 검사를 통과할 때, 상기 입력 픽셀에 대응하는 깊이 버퍼의 깊이 값을 상기 입력 픽셀의 깊이 값으로 갱신한다.
픽셀 쉐이더부(754)는 픽셀 쉐이더를 사용하여 제2 깊이 검사부(752)에 의해 제거되지 않은 픽셀을 처리한다. 픽셀들은 픽셀 쉐이더부(754)의 처리 대상이 되기 이전에, 제1 깊이 검사부(742), 디스카드 쉐이더부(794) 및 제2 깊이 검사부(752)에 의해 선택적으로 제거된다. 따라서, 픽셀 쉐이더부(754)가 처리할 픽셀들의 개수는 감소된다. 따라서, 픽셀 쉐이더부(754)의 연산량 및 픽셀 쉐이더부(754)에 의해 요구되는 메모리 대역폭이 감소한다. 일반적으로, 픽셀 쉐이더부(754)는 전체 3D 렌더링 장치(700)의 병목(Bottle Neck)이므로, 픽셀 쉐이더부(754)의 성능이 향상됨으로써 3D 렌더링 장치(700)의 전체 성능이 향상되며, 소모 전력이 감소된다.
픽셀에 대한 처리가 효율적으로 수행되기 위해서는, 디스카드 쉐이딩 처리부(740)를 거처야하는 픽셀 및 픽셀 쉐이딩 처리부(750)로 바로 입력되어야 하는 픽셀이 구분되어야 하며, 픽셀을 처리할 일반적인 픽셀 쉐이더 코드 중 디스카드 명령어에 대응하는 부분 및 그렇지 않은 부분이 구분되어야 한다.
일반 픽셀 쉐이더의 코드를 프로그래밍하는 프로그래머는 디스카드 명령어에 대응하는 부분인 디스카드 쉐이더 코드 및 그렇지 않은 부분인 변형된(Modified) 픽셀 쉐이더 코드를 별개로 프로그래밍할 수 있다.
컴파일러부(770)는 픽셀에 대한 일반 픽셀 쉐이더 코드를 디스카드 쉐이더 코드 및 변형된 픽셀 쉐이더 코드로 분리할 수 있다. 컴파일러부(770)는 디스카드 쉐이더 코드를 컴파일하여 디스카드 쉐이더를 생성할 수 있고, 상기 변형된 픽셀 쉐이더 코드를 컴파일하여 픽셀 쉐이더를 생성할 수 있다. 이러한 작업은 프로그래머에게 투명하게 수행될 수 있다.
디스카드 쉐이더 코드는 일반 픽셀 쉐이더 코드 중 디스카드 명령어 코드 및 상기 디스카드 명령어의 이전 코드에 대응할 수 있고, 상기 픽셀 쉐이더 코드는 일반 픽셀 쉐이더 코드 중 상기 디스카드 명령어의 이후 코드에 대응할 수 있다.
디스카드 쉐이더 및 픽셀 쉐이더의 중복된 계산을 방지하기 위해서는, 디스카드 쉐이더에 의해 연산된 결과가 픽셀 쉐이더로 전달될 필요가 있다.
연산의 결과(즉, 픽셀에 대한 정보 또는 속성(Attribute))는 디스카드 쉐이더 코드의 베링(Varing) 변수에 의해 디스카드 쉐이더 코드로부터 픽셀 쉐이더 코드로 전달될 수 있다. 디스카드 쉐이더에 베링 변수가 추가됨으로써 3D 렌더링 장치(700)의 연산량이 감소될 수 있다. 픽셀의 속성은 픽셀의 위치 값 또는 픽셀의 노말 값 등을 포함할 수 있다.
상기 구성 요소(710 내지 780)의 기능은 단일한 제어부(도시되지 않음)에서 수행될 수 있다. 이때, 상기 제어부는 단일(Single) 또는 복수(Multi) 프로세서(Processor)를 나타낼 수 있다. 상기 구성 요소(710 내지 780)는 상기 제어부에서 수행되는 서비스(Service), 프로세스(Process), 쓰레드(Thread) 또는 모듈(Module)을 나타낼 수 있다.
도 8은 본 발명의 일 예에 따른 컴파일러의 코드 생성을 설명한다.
컴파일러부(770)는 원래의(Original) 일반 픽셀 쉐이더 코드(810)에 기반하여 디스카드 픽셀 쉐이더 코드(820) 및 변형된 픽셀 쉐이더 코드(830)를 생성한다.
컴파일러부(770)는 원래의 픽셀 쉐이더 코드(810)를 분석하여 내부의 디스카드 명령어를 기준으로, 원래의 픽셀 쉐이더 코드(810)를 2개의 코드(820 및 830)로 구분하여 생성한다.
원래의 픽셀 쉐이더 코드(810)는 사각형을 기준으로 생성된 픽셀들에 대해서 원형 내부의 픽셀만 색상 값을 계산하고, 상기 원형 외부의 픽셀들은 모두 디스카드하는 쉐이더이다.
디스카드 픽셀 쉐이더 코드(820)는 원형 외부의 픽셀을 제거하는 쉐이더이고, 변형된 픽셀 쉐이더 코드(830)는 원형 내부의 픽셀의 색상을 계산하는 쉐이더이다.
디스카드 픽셀 쉐이더 코드(820)에 의해 사각형 당 (4 - π)r2개의 픽셀들이 사전에 제거될 수 있다. 제거된 픽셀들에 대해서는 변형된 픽셀 쉐이더 코드에 의한 픽셀 쉐이딩이 수행되지 않는다. 따라서, 3D 렌더링 장치(700)의 연산량이 감소될 수 있고, 더 적은 데이터 대역폭이 3D 렌더링 장치(700) 내에서 사용될 수 있다.
디스카드 픽셀 쉐이더에 의한 계산 결과(예컨대, 픽셀에 대한 정보)는 새로운 베링 변수에 의해 픽셀 쉐이더로 전달될 수 있다. 베링 변수를 사용하는 계산 결과의 전달은 중복된 계산을 방지하고, 두 개의 쉐이더를 사용함에 따른 오버헤드(Overhead)를 최소화한다.
따라서, 디스카드 픽셀 쉐이더 코드(820) 및 변형된 픽셀 쉐이더 코드(830)는 베링 변수의 선언부(840)를 포함할 수 있다. 디스카드 픽셀 쉐이더 코드(820)는 베링 변수의 값을 설정하는 부분(850)을 포함할 수 있으며, 변형된 픽셀 쉐이더 코드(830)는 베링 변수의 값을 추출하는 부분(860)을 포함할 수 있다.
불필요한 베링 변수들은 메모리에 로드되지 않을 수 있으므로, 더 적은 메모리 대역폭이 3D 렌더링 장치(700) 내에서 사용될 수 있다.
도 9는 본 발명의 일 실시예에 따른 3D 렌더링 방법의 흐름도이다.
단계(S910)에서, 입력 픽셀에 대한 레스터화가 처리된다.
디스카드 판단 단계(S920)에서, 픽셀이 디스카드 쉐이딩 처리 단계(S930 내지 S960)의 처리 대상인지 여부가 판단된다. 단계(S920)에서, 픽셀이 디스카드 처리 단계(S930 내지 S960)의 처리 대상인 경우 후술될 디스카드 쉐이딩 처리 단계(S920)가 수행되고, 픽셀이 디스카드 처리 단계(S930 내지 S960)의 처리 대상이 아닌 경우 후술될 픽셀 쉐이딩 처리 단계(S970 내지 S982)가 수행된다.
디스카드 쉐이더는 픽셀을 처리하는 전체 픽셀 쉐이더 중 디스카드 명령어에 연관된 일부에 대응할 수 있다. 픽셀 쉐이더는 전체 픽셀 쉐이더 중 디스카드 쉐이더에 대응하는 일부를 제외한 다른 일부에 대응할 수 있다.
픽셀을 처리하는 픽셀 쉐이더가 디스카드 명령어를 포함하면 디스카드 판단 단계(S920) 이후 상기 디스카드 쉐이딩 처리 단계(S930 내지 S960)가 수행될 수 있고, 픽셀 쉐이더가 디스카드 명령을 포함하지 않으면 픽셀 쉐이딩 처리 단계(S970 내지 S982)가 수행될 수 있다.
디스카드 쉐이더 처리 단계(S930 내지 S960)는 디스카드 쉐이더 코드가 나타내는 처리를 수행할 수 있고, 픽셀 쉐이더 처리 단계(S970 내지 S982)는 픽셀 쉐이더 코드가 나타내는 나타내는 처리를 수행할 수 있다.
디스카드 쉐이더 코드는 픽셀에 대한 전체 픽셀 쉐이더 코드 중 디스카드 명령어 코드 및 디스카드 명령어의 이전 코드에 대응할 수 있고, 픽셀 쉐이더 코드는 전체 픽셀 쉐이더 코드 중 디스카드 명령어의 이후 코드에 대응할 수 있다.
디스카드 쉐이딩 처리 단계(S930 내지 S960)에서, 깊이 값을 유지하는 사전 깊이 검사를 수행하고 디스카드 쉐이더를 처리함으로써 픽셀이 선택적으로 제거된다.
단계(S930)에서 픽셀의 위치 및 깊이 데이터가 패치된다.
다음으로, 제1 깊이 검사 단계(S932)에서, 픽셀에 대한 깊이 검사가 수행된다. 픽셀이 깊이 검사를 통과할 경우(즉, 깊이 버퍼의 값보다 픽셀의 깊이 값이 더 큰 경우), 단계(S940)가 수행되고, 그렇지 않을 경우 픽셀을 디스카드하는 단계(S960)가 수행된다. 따라서, 제1 깊이 검사 단계(S932)는 픽셀에 대한 깊이 검사를 수행함으로써 픽셀을 선택적으로 제거한다.
제1 깊이 검사 단계(S932)는 디스카드 쉐이딩 단계(S942 내지 S950)보다 먼저 실행되기 때문에 제1 깊이 검사 단계(S932)에서의 깊이 검사는 사전 깊이 검사이다.
제1 깊이 검사 단계(S932)는 깊이 버퍼의 깊이 값을 갱신하는 단계를 포함하지 않는다. 따라서, 제1 깊이 검사 단계(S932)에서는 픽셀에 대응하는 깊이 버퍼의 깊이 값이 유지된다.
제1 베링 데이터 패치 단계(S940)에서, 픽셀의 베링 데이터가 패치된다. 제1 베링 데이터 패치 단계(S940)에서 디스카드 쉐이더 코드의 베링 변수에 기반하여 픽셀에 대한 정보가 추출된다.
디스카드 쉐이딩 단계(S942 내지 S950)에서, 제1 깊이 검사부에 의해 제거되지 않은 픽셀이 디스카드 쉐이더에 의해 처리되며, 픽셀에 대한 디스카드 명령어를 처리함으로써 픽셀이 선택적으로 제거된다.
단계(S942)에서 픽셀에 대한 디스카드 쉐이딩이 수행된다.
단계(S950)에서 픽셀이 디스카드될 지 여부가 판단된다. 픽셀이 디스카드될 경우 단계(S960)가 수행되고, 그렇지 않을 경우 픽셀 쉐이딩 처리 단계(S970 내지 S972)가 수행된다.
픽셀 쉐이딩 처리 단계(S970 내지 S972)에서, 깊이 값을 갱신하는 사전 깊이 검사를 수행함으로써 픽셀이 선택적으로 제거되고, 픽셀 쉐이더를 사용함으로써 픽셀이 처리된다. 상기 디스카드 쉐이딩 처리 단계(S930 내지 S960)에서 제거되지 않은 상기 픽셀은 상기 픽셀 쉐이딩 처리 단계(S970 내지 S972)에서 처리된다.
단계(S970)에서 픽셀의 위치 및 깊이 데이터가 패치된다.
다음으로, 제2 깊이 검사 단계(S732 내지 S974)에서 픽셀에 대한 깊이 검사를 처리함으로써 픽셀이 선택적으로 제거된다.
단계(S972)에서, 픽셀에 대한 깊이 검사가 수행된다. 픽셀이 깊이 검사를 통과할 경우(즉, 깊이 버퍼의 값보다 픽셀의 깊이가 더 큰 경우), 단계(S974)가 수행되고, 그렇지 않을 경우 픽셀을 디스카드하는 단계(S960)가 수행된다.
깊이 버퍼 갱신 단계(S974)에서 깊이 버퍼의 깊이 값이 깊이 테스트를 통과한 픽셀의 깊이 값으로 갱신된다. 이러한 갱신은 이후 수행되는 제1 깊이 검사 단계(S932) 및 제2 깊이 검사 단계(S732 내지 S974)에서 바로 반영된다.
제2 깊이 검사 단계(S972 내지 S974) 는 픽셀 쉐이딩 단계(S982)보다 먼저 실행되기 때문에 제2 깊이 검사 단계(S732 내지 S974)에서의 깊이 검사는 사전 깊이 검사이다.
제2 베링 데이터 패치 단계(S980)에서, 픽셀의 베링 데이터가 패치된다. 제2 베링 데이터 패치 단계(S980)에서 픽쉘 쉐이더 코드의 베링 변수에 기반하여 픽셀에 대한 정보가 추출된다.
픽셀 쉐이딩 단계(S982)에서, 제2 깊이 검사 단계(S972 내지 S974)에서 제거되지 않은 픽셀이 픽셀 쉐이더에 의해 처리된다.
컬러 블랜딩 단계(S990), 픽셀에 대한 컬러 블랜딩이 수행된다.
단계(S992)에서, 픽셀의 컬러 값이 프레임 버퍼에 기입(Write)된다.
앞서 도 1 내지 도 8을 참조하여 설명된 본 발명의 일 실시예에 따른 기술 적 내용들이 본 실시예에도 그대로 적용될 수 있다. 따라서 보다 상세한 설명은 이하 생략하기로 한다.
도 10은 본 발명의 일 예에 따른 3D 렌더링 처리 결과를 도시한다.
디스카드 명령어를 포함하지 않는 픽쉘 쉐이더 처리부(740)에 의해서만 처리된 영상(1010) 및 디스카드 명령어를 포함하는 디스카드 쉐이더 처리부(750)에 의해 처리된 영상(1020)이 도시되었고, 두 영상(1010 및 1020)이 합쳐진 결과 영상(1030)이 도시되었다.
본 발명의 일 실시예에 따른 방법은 다양한 컴퓨터 수단을 통하여 수행될 수 있는 프로그램 명령 형태로 구현되어 컴퓨터 판독 가능 매체에 기록될 수 있다. 상기 컴퓨터 판독 가능 매체는 프로그램 명령, 데이터 파일, 데이터 구조 등을 단독으로 또는 조합하여 포함할 수 있다. 상기 매체에 기록되는 프로그램 명령은 본 발명을 위하여 특별히 설계되고 구성된 것들이거나 컴퓨터 소프트웨어 당업자에게 공지되어 사용 가능한 것일 수도 있다. 컴퓨터 판독 가능 기록 매체의 예에는 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체(Magnetic Media), CD-ROM, DVD와 같은 광기록 매체(Optical Media), 플롭티컬 디스크(Floptical Disk)와 같은 자기-광 매체(Magneto-Optical Media), 및 롬(ROM), 램(RAM), 플래시 메모리 등과 같은 프로그램 명령을 저장하고 수행하도록 특별히 구성된 하드웨어 장치가 포함된다. 프로그램 명령의 예에는 컴파일러에 의해 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터 등을 사용해서 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드를 포함한다. 상기된 하드웨어 장치는 본 발명의 동작을 수행하기 위해 하나 이상의 소프트웨어 모듈로서 작동하도록 구성될 수 있으며, 그 역도 마찬가지이다.
이상과 같이 본 발명은 비록 한정된 실시예와 도면에 의해 설명되었으나, 본 발명은 상기의 실시예에 한정되는 것은 아니며, 본 발명이 속하는 분야에서 통상의 지식을 가진 자라면 이러한 기재로부터 다양한 수정 및 변형이 가능하다.
그러므로, 본 발명의 범위는 설명된 실시예에 국한되어 정해져서는 아니 되며, 후술하는 특허청구범위뿐 아니라 이 특허청구범위와 균등한 것들에 의해 정해져야 한다.
700: 3D 렌더링 장치
710: 렌더링 파이프라인부
770: 컴파일러부

Claims (19)

  1. 깊이 값을 유지하는 사전 깊이 검사를 수행하고 디스카드 쉐이더를 처리함으로써 픽셀을 선택적으로 제거하는 디스카드 쉐이딩 처리부; 및
    깊이 값을 갱신하는 사전 깊이 검사를 수행함으로써 상기 픽셀로부터 제거되지 않고 남은 제1 잔여 픽셀(first remaining pixel)을 선택적으로 제거하는 제2 깊이 검사부와, 픽셀 쉐이더를 사용함으로써 상기 제1 잔여 픽셀로부터 제거되지 않고 남은 제2 잔여 픽셀(second remaining pixel)을 처리하는 픽셀 쉐이더부를 포함하는 픽셀 쉐이딩 처리부
    를 포함하고,
    상기 디스카드 쉐이딩 처리부는 상기 제1 잔여 픽셀을 상기 픽셀 쉐이딩 처리부로 출력하는, 3D 렌더링 장치.
  2. 제1항에 있어서,
    상기 디스카드 쉐이더는 디스카드 명령어에 연관된 일부에 대응하고, 상기 픽셀 쉐이더는 상기 디스카드 쉐이더에 대응하는 일부를 제외한 다른 일부에 대응하는, 3D 렌더링 장치.
  3. 제1항에 있어서,
    상기 디스카드 쉐이딩 처리부는,
    상기 픽셀에 대한 깊이 검사를 처리함으로써 상기 픽셀을 선택적으로 제거하는 제1 깊이 검사부; 및
    상기 디스카드 쉐이더로 상기 제1 깊이 검사부에 의해 제거되지 않고 남은 픽셀을 처리하며, 상기 남은 픽셀에 대한 디스카드 명령어를 처리함으로써 상기 픽셀을 선택적으로 제거하는 디스카드 쉐이더부
    를 포함하고,
    상기 제1 깊이 검사부는 상기 픽셀에 대응하는 깊이 버퍼의 깊이 값을 유지하는, 3D 렌더링 장치.
  4. 제1항에 있어서,
    상기 제2 깊이 검사부는 상기 제1 잔여 픽셀이 제거될 때, 상기 제2 잔여 픽셀에 대응하는 깊이 버퍼의 깊이 값을 상기 제거되는 제1 잔여 픽셀의 깊이 값으로 갱신하는, 3D 렌더링 장치.
  5. 제1항에 있어서,
    상기 픽셀이 상기 디스카드 쉐이딩 처리부의 처리 대상인지 여부를 판단하는 디스카드 판단부
    를 더 포함하고,
    상기 디스카드 판단부는 상기 픽셀이 상기 디스카드 쉐이딩 처리부의 처리 대상인 경우 상기 픽셀을 상기 디스카드 쉐이딩 처리부로 출력하고, 상기 픽셀이 상기 디스카드 쉐이딩 처리부의 처리 대상이 아닌 경우 상기 픽셀을 상기 픽셀 쉐이딩 처리부로 출력하는, 3D 렌더링 장치.
  6. 제5항에 있어서,
    상기 픽셀에 대한 레스터화를 처리하여 상기 디스카드 판단부로 출력하는 레스터라이저부; 및
    상기 픽셀 쉐이딩 처리부로부터 상기 픽셀을 입력받아 상기 픽셀에 대한 컬러 블랜딩을 수행하는 컬러 블랜딩부
    를 더 포함하는, 3D 렌더링 장치.
  7. 제5항에 있어서,
    상기 디스카드 판단부는 상기 픽셀을 처리하는 상기 픽셀 쉐이더가 디스카드 명령어를 포함하면 상기 픽셀을 상기 디스카드 쉐이딩 처리부로 출력하고, 상기 픽셀 쉐이더가 상기 디스카드 명령어를 포함하지 않으면 상기 픽셀을 상기 픽셀 쉐이딩 처리부로 출력하는, 3D 렌더링 장치.
  8. 제5항에 있어서,
    픽셀에 대한 전체 픽셀 쉐이더 코드를 디스카드 쉐이더 코드 및 픽셀 쉐이더 코드로 분리하고, 상기 디스카드 쉐이더 코드를 컴파일하여 상기 디스카드 쉐이더를 생성하고, 상기 픽셀 쉐이더 코드를 컴파일하여 상기 픽셀 쉐이더를 생성하는 컴파일러부
    를 더 포함하고, 상기 디스카드 쉐이더 코드는 상기 전체 픽셀 쉐이더 코드 중 디스카드 명령어 코드 및 디스카드 명령어의 이전 코드에 대응하고, 상기 픽셀 쉐이더 코드는 상기 전체 픽셀 쉐이더 코드 중 상기 디스카드 명령어의 이후 코드에 대응하는, 3D 렌더링 장치.
  9. 제8항에 있어서,
    상기 픽셀에 대한 정보는 상기 디스카드 쉐이더 코드의 베링 변수에 의해 상기 디스카드 쉐이더 코드로부터 상기 픽셀 쉐이더 코드로 전달되는, 3D 렌더링 장치.
  10. 깊이 값을 유지하는 사전 깊이 검사를 수행하고 디스카드 쉐이더를 처리함으로써 픽셀을 선택적으로 제거하는 디스카드 쉐이딩 처리 단계; 및
    깊이 값을 갱신하는 사전 깊이 검사를 수행함으로써 상기 픽셀로부터 제거되지 않고 남은 제1 잔여 픽셀(first remaining pixel)을 선택적으로 제거하는 제2 깊이 검사 단계와, 픽셀 쉐이더를 사용함으로써 상기 제1 잔여 픽셀로부터 제거되지 않고 남은 제2 잔여 픽셀(second remaining pixel)을 처리하는 픽셀 쉐이딩 단계를 포함하는 픽셀 쉐이딩 처리 단계
    를 포함하는 3D 렌더링 방법.
  11. 제10항에 있어서,
    상기 디스카드 쉐이더는 디스카드 명령어에 연관된 일부에 대응하고, 상기 픽셀 쉐이더는 상기 디스카드 쉐이더에 대응하는 일부를 제외한 다른 일부에 대응하는, 3D 렌더링 방법.
  12. 제10항에 있어서,
    상기 디스카드 쉐이딩 처리 단계는,
    상기 픽셀에 대한 깊이 검사를 수행함으로써 상기 픽셀을 선택적으로 제거하는 제1 깊이 검사 단계; 및
    상기 디스카드 쉐이더로 제1 깊이 검사부에 의해 제거되지 않고 남은 픽셀을 처리하며, 상기 남은 픽셀에 대한 디스카드 명령어를 처리함으로써 상기 픽셀을 선택적으로 제거하는 디스카드 쉐이딩 단계
    를 포함하고,
    상기 제1 깊이 검사 단계는 상기 픽셀에 대응하는 깊이 버퍼의 깊이 값을 유지하는, 3D 렌더링 방법.
  13. 제10항에 있어서,
    상기 제2 깊이 검사 단계는 상기 제1 잔여 픽셀이 제거될 때,
    상기 제2 잔여 픽셀에 대응하는 깊이 버퍼의 깊이 값을 상기 제거되는 제1 잔여 픽셀의 깊이 값으로 갱신하는 깊이 버퍼 갱신 단계
    를 포함하는, 3D 렌더링 방법.
  14. 제10항에 있어서,
    상기 픽셀이 상기 디스카드 쉐이딩 처리 단계의 처리 대상인지 여부를 판단하는 디스카드 판단 단계
    를 더 포함하고,
    상기 픽셀이 상기 디스카드 쉐이딩 처리 단계의 처리 대상인 경우 상기 디스카드 쉐이딩 처리 단계를 수행되고, 상기 픽셀이 상기 디스카드 쉐이딩 처리 단계의 처리 대상이 아닌 경우 상기 픽셀 쉐이딩 처리 단계가 수행되는, 3D 렌더링 방법.
  15. 제14항에 있어서,
    상기 픽셀에 대한 레스터화를 처리하는 레스터라이저 단계; 및
    상기 픽셀에 대한 컬러 블랜딩을 수행하는 컬러 블랜딩 단계
    를 더 포함하는, 3D 렌더링 방법.
  16. 제14항에 있어서,
    상기 픽셀을 처리하는 상기 픽셀 쉐이더가 디스카드 명령어를 포함하면 상기 디스카드 판단 단계 이후 상기 디스카드 쉐이딩 처리 단계가 수행되고, 상기 픽셀 쉐이더가 상기 디스카드 명령어를 포함하지 않으면 상기 픽셀 쉐이딩 처리 단계가 수행되는, 3D 렌더링 방법.
  17. 제14항에 있어서,
    상기 디스카드 쉐이더 처리 단계는 디스카드 쉐이더 코드가 나타내는 처리를 수행하고, 상기 픽셀 쉐이더 처리 단계는 픽셀 쉐이더 코드가 나타내는 처리를 수행하고,
    상기 디스카드 쉐이더 코드는 픽셀에 대한 전체 픽셀 쉐이더 코드 중 디스카드 명령어 코드 및 디스카드 명령어의 이전 코드에 대응하고, 상기 픽셀 쉐이더 코드는 상기 전체 픽셀 쉐이더 코드 중 상기 디스카드 명령어의 이후 코드에 대응하는, 3D 렌더링 방법.
  18. 제17항에 있어서,
    상기 디스카드 쉐이더 단계는,
    상기 디스카드 쉐이더 코드의 베링 변수에 기반하여 상기 픽셀에 대한 정보를 추출하는 제1 베링 데이터 패치 단계를 포함하고,
    상기 픽셀 쉐이더 단계는,
    상기 픽셀 쉐이더 코드의 베링 변수에 기반하여 상기 픽셀에 대한 정보를 추출하는 제2 베링 데이터 패치 단계를 포함하는, 3D 렌더링 방법.
  19. 제10항 내지 제18항 중 어느 한 항의 3D 렌더링 방법을 수행하는 프로그램을 수록한 컴퓨터 판독 가능 기록 매체.
KR1020100092377A 2010-09-20 2010-09-20 그래픽 처리 유닛에서의 사전 픽셀 제거를 위한 장치 및 방법 KR101719485B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020100092377A KR101719485B1 (ko) 2010-09-20 2010-09-20 그래픽 처리 유닛에서의 사전 픽셀 제거를 위한 장치 및 방법
US13/067,411 US8624894B2 (en) 2010-09-20 2011-05-31 Apparatus and method of early pixel discarding in graphic processing unit

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020100092377A KR101719485B1 (ko) 2010-09-20 2010-09-20 그래픽 처리 유닛에서의 사전 픽셀 제거를 위한 장치 및 방법

Publications (2)

Publication Number Publication Date
KR20120030700A KR20120030700A (ko) 2012-03-29
KR101719485B1 true KR101719485B1 (ko) 2017-03-27

Family

ID=45817334

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020100092377A KR101719485B1 (ko) 2010-09-20 2010-09-20 그래픽 처리 유닛에서의 사전 픽셀 제거를 위한 장치 및 방법

Country Status (2)

Country Link
US (1) US8624894B2 (ko)
KR (1) KR101719485B1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI810389B (zh) * 2018-12-11 2023-08-01 南韓商三星電子股份有限公司 由電腦實施的冗餘覆蓋捨棄方法

Families Citing this family (26)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20130271465A1 (en) * 2011-12-30 2013-10-17 Franz P. Clarberg Sort-Based Tiled Deferred Shading Architecture for Decoupled Sampling
US9165399B2 (en) 2012-11-01 2015-10-20 Nvidia Corporation System, method, and computer program product for inputting modified coverage data into a pixel shader
US9224227B2 (en) * 2012-12-21 2015-12-29 Nvidia Corporation Tile shader for screen space, a method of rendering and a graphics processing unit employing the tile shader
US9292898B2 (en) * 2013-03-15 2016-03-22 Intel Corporation Conditional end of thread mechanism
KR102116708B1 (ko) 2013-05-24 2020-05-29 삼성전자 주식회사 그래픽스 프로세싱 유닛
US9710957B2 (en) 2014-04-05 2017-07-18 Sony Interactive Entertainment America Llc Graphics processing enhancement by tracking object and/or primitive identifiers
JP6392370B2 (ja) 2014-04-05 2018-09-19 ソニー インタラクティブ エンタテインメント アメリカ リミテッド ライアビリテイ カンパニー 様々なレンダリング及びラスタライゼーション・パラメータ下でビューポートを変化させるための、オブジェクトの効率的再レンダリング方法
US11302054B2 (en) 2014-04-05 2022-04-12 Sony Interactive Entertainment Europe Limited Varying effective resolution by screen location by changing active color sample count within multiple render targets
US9836816B2 (en) 2014-04-05 2017-12-05 Sony Interactive Entertainment America Llc Varying effective resolution by screen location in graphics processing by approximating projection of vertices onto curved viewport
US10068311B2 (en) 2014-04-05 2018-09-04 Sony Interacive Entertainment LLC Varying effective resolution by screen location by changing active color sample count within multiple render targets
US9710881B2 (en) 2014-04-05 2017-07-18 Sony Interactive Entertainment America Llc Varying effective resolution by screen location by altering rasterization parameters
US9652882B2 (en) 2014-04-05 2017-05-16 Sony Interactive Entertainment America Llc Gradient adjustment for texture mapping for multiple render targets with resolution that varies by screen location
US10783696B2 (en) 2014-04-05 2020-09-22 Sony Interactive Entertainment LLC Gradient adjustment for texture mapping to non-orthonormal grid
US9865074B2 (en) 2014-04-05 2018-01-09 Sony Interactive Entertainment America Llc Method for efficient construction of high resolution display buffers
US9495790B2 (en) 2014-04-05 2016-11-15 Sony Interactive Entertainment America Llc Gradient adjustment for texture mapping to non-orthonormal grid
US9824412B2 (en) * 2014-09-24 2017-11-21 Intel Corporation Position-only shading pipeline
KR20160074154A (ko) 2014-12-18 2016-06-28 삼성전자주식회사 컴파일러
GB2534567B (en) * 2015-01-27 2017-04-19 Imagination Tech Ltd Processing primitives which have unresolved fragments in a graphics processing system
GB2537137B (en) * 2015-04-08 2021-02-17 Advanced Risc Mach Ltd Graphics processing systems
US9824458B2 (en) * 2015-09-23 2017-11-21 Qualcomm Incorporated Dynamically switching between late depth testing and conservative depth testing
US9659371B2 (en) * 2015-10-08 2017-05-23 Christie Digital Systems Usa, Inc. System and method for online projector-camera calibration from one or more images
US10078883B2 (en) * 2015-12-03 2018-09-18 Qualcomm Incorporated Writing graphics data from local memory to system memory
US10186076B2 (en) * 2016-03-29 2019-01-22 Intel Corporation Per-sample MSAA rendering using comprehension data
US10540808B2 (en) * 2016-09-16 2020-01-21 Intel Corporation Hierarchical Z-culling (HiZ) optimization for texture-dependent discard operations
US10417815B2 (en) * 2017-01-27 2019-09-17 Advanced Micro Devices, Inc. Out of order pixel shader exports
GB2590748B (en) * 2020-06-30 2022-02-02 Imagination Tech Ltd Method and graphics processing system for rendering one or more fragments having shader-dependent properties

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008123520A (ja) 2006-11-10 2008-05-29 Sony Computer Entertainment Inc グラフィックス処理装置
JP2009295166A (ja) * 2008-06-05 2009-12-17 Arm Ltd グラフィックス処理システム

Family Cites Families (27)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0855239A (ja) * 1994-07-21 1996-02-27 Internatl Business Mach Corp <Ibm> グラフィカル・オブジェクトの可視性を判定するための方法および装置
AU5686199A (en) * 1998-08-20 2000-03-14 Apple Computer, Inc. Deferred shading graphics pipeline processor
US6771264B1 (en) 1998-08-20 2004-08-03 Apple Computer, Inc. Method and apparatus for performing tangent space lighting and bump mapping in a deferred shading graphics processor
US6819332B2 (en) * 2001-02-27 2004-11-16 3Dlabs Inc. Ltd. Antialias mask generation
KR100420857B1 (ko) * 2001-07-12 2004-03-02 학교법인연세대학교 3차원 렌더링 프로세서의 픽셀 레스터라이재이션 처리방법 및 장치
US6700581B2 (en) * 2002-03-01 2004-03-02 3D Labs Inc., Ltd. In-circuit test using scan chains
US7187383B2 (en) * 2002-03-01 2007-03-06 3D Labs Inc., Ltd Yield enhancement of complex chips
US7227556B2 (en) * 2002-03-01 2007-06-05 O'driscoll Gerard High quality antialiased lines with dual sampling pattern
US7159212B2 (en) 2002-03-08 2007-01-02 Electronic Arts Inc. Systems and methods for implementing shader-driven compilation of rendering assets
US6930684B2 (en) * 2002-09-27 2005-08-16 Broadizon, Inc. Method and apparatus for accelerating occlusion culling in a graphics computer
KR100510131B1 (ko) * 2003-01-29 2005-08-26 삼성전자주식회사 픽셀 캐쉬 및 이를 이용한 3차원 그래픽 가속 장치 및 방법
US7385608B1 (en) * 2003-12-31 2008-06-10 3Dlabs Inc. Ltd. State tracking methodology
US7978194B2 (en) 2004-03-02 2011-07-12 Ati Technologies Ulc Method and apparatus for hierarchical Z buffering and stenciling
US20050195198A1 (en) * 2004-03-03 2005-09-08 Anderson Michael H. Graphics pipeline and method having early depth detection
US7218291B2 (en) 2004-09-13 2007-05-15 Nvidia Corporation Increased scalability in the fragment shading pipeline
KR20060044124A (ko) * 2004-11-11 2006-05-16 삼성전자주식회사 3차원 그래픽 가속을 위한 그래픽 시스템 및 메모리 장치
US8933933B2 (en) * 2006-05-08 2015-01-13 Nvidia Corporation Optimizing a graphics rendering pipeline using early Z-mode
US9076265B2 (en) * 2006-06-16 2015-07-07 Ati Technologies Ulc System and method for performing depth testing at top and bottom of graphics pipeline
US7952588B2 (en) * 2006-08-03 2011-05-31 Qualcomm Incorporated Graphics processing unit with extended vertex cache
TWI320913B (en) * 2006-08-30 2010-02-21 Via Tech Inc Methods, systems and computer-readable storage medium for shading process compiling of 3d computer graphics
KR101239965B1 (ko) * 2006-11-08 2013-03-06 연세대학교 산학협력단 렌더링 장치 및 방법
US8203564B2 (en) 2007-02-16 2012-06-19 Qualcomm Incorporated Efficient 2-D and 3-D graphics processing
US8325184B2 (en) 2007-09-14 2012-12-04 Qualcomm Incorporated Fragment shader bypass in a graphics processing unit, and apparatus and method thereof
US8094152B1 (en) * 2007-11-26 2012-01-10 Nvidia Corporation Method for depth peeling and blending
GB0801812D0 (en) 2008-01-31 2008-03-05 Arm Noway As Methods of and apparatus for processing computer graphics
US8698818B2 (en) * 2008-05-15 2014-04-15 Microsoft Corporation Software rasterization optimization
US20100091018A1 (en) * 2008-07-11 2010-04-15 Advanced Micro Devices, Inc. Rendering Detailed Animated Three Dimensional Characters with Coarse Mesh Instancing and Determining Tesselation Levels for Varying Character Crowd Density

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008123520A (ja) 2006-11-10 2008-05-29 Sony Computer Entertainment Inc グラフィックス処理装置
JP2009295166A (ja) * 2008-06-05 2009-12-17 Arm Ltd グラフィックス処理システム

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI810389B (zh) * 2018-12-11 2023-08-01 南韓商三星電子股份有限公司 由電腦實施的冗餘覆蓋捨棄方法

Also Published As

Publication number Publication date
US20120069021A1 (en) 2012-03-22
KR20120030700A (ko) 2012-03-29
US8624894B2 (en) 2014-01-07

Similar Documents

Publication Publication Date Title
KR101719485B1 (ko) 그래픽 처리 유닛에서의 사전 픽셀 제거를 위한 장치 및 방법
US8952962B2 (en) Graphics processing method and apparatus using post fragment shader
JP4877636B2 (ja) ハイブリッドレイトレーシングシステムのためのフラグメントシェーダ、及び操作方法
US10497085B2 (en) Graphics processing method and system
JP4116648B2 (ja) オクルージョンカリング方法および描画処理装置
KR100790892B1 (ko) 투명 객체의 화질 향상을 위한 3차원 그래픽스 데이터렌더링 방법 및 장치
KR101609266B1 (ko) 타일 기반의 랜더링 장치 및 방법
JP2018049603A (ja) グラフィックス処理システム及びグラフィックスプロセッサ
US8339413B2 (en) Multiplied occluding transparency graphics processing
US20200226828A1 (en) Method and System for Multisample Antialiasing
KR102547879B1 (ko) z-컬링 후 중첩 단편들 식별 또는 제거
JP4142065B2 (ja) 縮小zバッファ生成方法、隠面消去方法、およびオクルージョンカリング方法
US20100231588A1 (en) Method and apparatus for rendering instance geometry
US9639971B2 (en) Image processing apparatus and method for processing transparency information of drawing commands
CN107784622B (zh) 图形处理***和图形处理器
US20090058848A1 (en) Predicted geometry processing in a tile based rendering system
US20160379381A1 (en) Apparatus and method for verifying the origin of texture map in graphics pipeline processing
EP3046079B1 (en) Rendering device
KR20230073222A (ko) 깊이 버퍼 프리-패스
US10621774B2 (en) Systems and methods for rendering reflections
US10796474B2 (en) Systems and methods for rendering reflections
US20170178279A1 (en) Graphics processing systems
US10297067B2 (en) Apparatus and method of rendering frame by adjusting processing sequence of draw commands
US20240087078A1 (en) Two-level primitive batch binning with hardware state compression

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E90F Notification of reason for final refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20200225

Year of fee payment: 4