KR100696198B1 - Embedded system of supporting graphics operation based on programmable shader - Google Patents

Embedded system of supporting graphics operation based on programmable shader Download PDF

Info

Publication number
KR100696198B1
KR100696198B1 KR1020050128563A KR20050128563A KR100696198B1 KR 100696198 B1 KR100696198 B1 KR 100696198B1 KR 1020050128563 A KR1020050128563 A KR 1020050128563A KR 20050128563 A KR20050128563 A KR 20050128563A KR 100696198 B1 KR100696198 B1 KR 100696198B1
Authority
KR
South Korea
Prior art keywords
shader
program
area
data
object
Prior art date
Application number
KR1020050128563A
Other languages
Korean (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 KR1020050128563A priority Critical patent/KR100696198B1/en
Application granted granted Critical
Publication of KR100696198B1 publication Critical patent/KR100696198B1/en

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING; 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/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • GPHYSICS
    • G06COMPUTING; CALCULATING; COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing

Abstract

An embedded system for supporting a graphic operation based on a programmable shader is provided to enable a user to develop a program for processing 3D(Dimensional) data and transfer the developed program to graphic hardware, and make the graphic hardware process vertexes/pixels with the received program. A system memory(500) stores one or more than one program and data generated by linking with one or more than one shader program inputted through an API(Application Program Interface). The graphic hardware(300) loads and executes the program/data selected by the API among the programs/data stored in the system memory. The system memory includes more than one shader object area(510a,510b) storing shader ID information, a shader program source, a compiled code compiling the shader program source, and a parameter declared in the shader program source, and a program object area(520) storing the shader ID information of the shader programs forming the program, the program generated by linking the compile codes, and the data referred when the program is executed.

Description

프로그래밍 가능한 쉐이더 기반의 그래픽 연산을 지원하는 임베디드 시스템{Embedded system of supporting graphics operation based on programmable shader} Embedded support for graphics operations of a programmable shader-based systems {Embedded system of supporting graphics operation based on programmable shader}

도 1은 고정된 파이프라인 구조를 가지는 3차원 데이터 처리과정을 나타낸 도면. Figure 1 is a view of the three-dimensional data processing, having a fixed pipeline architecture.

도 2는 임베디드 시스템의 그래픽스 하드웨어와 시스템 메모리의 메모리 구조를 나타낸 도면. Figure 2 is a view of the memory architecture of the embedded system, the graphics hardware and a system memory.

도 3은 본 발명에 따른 프로그래밍 가능한 쉐이더 구조를 가지는 3차원 데이터 처리과정을 나타낸 도면. Figure 3 is a view of the three-dimensional data processing, having a programmable shader architecture in accordance with the present invention.

도 4는 프로그래밍 가능한 쉐이더를 사용함에 있어 응용프로그램 인터페이스의 역할을 나타낸 도면. Figure 4 is a diagram showing the role of the application interface in the use of a programmable shader.

도 5는 본 발명의 바람직한 일 실시예에 따른 임베디드 시스템의 시스템 메모리와 그래픽스 하드웨어의 메모리 구조를 나타낸 도면. 5 is a view showing a memory structure of the system memory and the graphics hardware of the embedded system according to an embodiment of the present invention.

도 6은 본 발명의 바람직한 일 실시예에 따른 쉐이더 객체 영역의 생성 방법의 흐름도. 6 is a flowchart of generation of a shader object zone method according to one embodiment of the present invention.

도 7은 본 발명의 바람직한 일 실시예에 따른 프로그램 객체 영역의 생성 방 법의 흐름도. 7 is a flow diagram of a generation method of the program object region according to an embodiment of the present invention.

도 8은 본 발명의 바람직한 일 실시예에 따른 메모리 연산 방법의 흐름도. 8 is a flow chart of a memory operation process according to an embodiment of the present invention.

<도면의 주요부분에 대한 부호의 설명> <Description of the Related Art>

500 : 시스템 메모리 500: System Memory

510a, 510b : 쉐이더 객체 영역 510a, 510b: Shader object region

520 : 프로그램 객체 영역 520: program object area

300 : 그래픽스 하드웨어 300: Graphics Hardware

본 발명은 임베디드 시스템(embedded system)에 관한 것으로, 보다 상세하게는 3차원 그래픽스 연산을 처리하기 위한 3차원 그래픽스 연산을 처리하기 위한 프로그래밍 가능한 쉐이더 기반의 그래픽 연산을 지원하는 임베디드 시스템에 관한 것이다. The present invention relates to an embedded system for supporting the operation of the graphics-based programmable shader for processing three-dimensional graphics operations for processing, more particularly to a three-dimensional graphics operations relate to an embedded system (embedded system).

OpenGL ES(Open Graphics Library Embedded System)는 로열티없이 자동차와 각종 설비 및 휴대 장치를 포함하는 임베디드 시스템 상의 2차원/3차원 그래픽 기능을 위한 크로스 플랫폼(cross-platform) 응용프로그램 인터페이스(API; Application Program Interface)이다. OpenGL ES (Open Graphics Library Embedded System) is a cross-platform (cross-platform) application programming interface (API for 2D / 3D graphics features on embedded system that includes cars and various equipment and mobile devices without royalty; Application Program Interface )to be. 이는 PC 환경의 3차원 그래픽 표준인 OpenGL(Open Graphics Liabrary)의 부분집합으로, 소프트웨어 어플리케이션(application)과 하드웨어 또는 소프트웨어의 그래픽 엔진 간의 유연하면서도 강력한 저수준의 인터페이스를 제공한다. This is a subset of a 3D graphic standard OpenGL (Open Graphics Liabrary) of the PC environment, and provides a flexible and powerful low-level interface between software applications (application) and the graphics engine hardware or software.

OpenGL ES는 이동 통신 단말기, 개인 휴대 단말기(PDA : Personal Digital Assistant), 휴대형 멀티미디어 단말기(PMP : Portable Multimedia Player) 등의 모바일 장치, 자동차 제어장치, 냉장도 제어장치, 공장로봇 제어장치 등의 임베디드 시스템 하에서 3차원 게임과 다양한 고급 3차원 그래픽 기능을 제공하기 위해 3차원 그래픽 연산을 처리하는 소프트웨어 솔루션이다. OpenGL ES is a mobile communication terminal, a personal digital assistant (PDA: Personal Digital Assistant), a portable multimedia terminals (PMP: Portable Multimedia Player) embedded systems, such as mobile devices, automotive controls, cold FIG controller plant robot control device, such as a under a software solution that processes three-dimensional graphics operations to provide various advanced 3D games and 3D graphics capabilities.

OpenGL ES를 지원하는 그래픽스 하드웨어는 OpenGL ES가 제공하는 3차원 알고리즘을 하드웨어로 구현한 것으로, 3차원 그래픽 연산을 실시간으로 처리하기 위한 장치이다. The graphics hardware that supports OpenGL ES has to be an implementation of the 3-D algorithms provided by the OpenGL ES in hardware, an apparatus for processing the 3D graphic in real-time operation. 기존의 그래픽스 하드웨어는 고정된 알고리즘에 따라 3차원 데이터를 처리하였다. Existing graphics hardware were processed three-dimensional data according to a fixed algorithm.

도 1은 고정된 파이프라인(fixed function pipeline) 구조를 가지는 3차원 데이터 처리과정을 나타낸 도면이고, 도 2는 임베디드 시스템의 그래픽스 하드웨어와 시스템 메모리의 메모리 구조를 나타낸 도면이다. 1 is shown a three-dimensional data processing, having a fixed pipeline (fixed function pipeline) structure diagram, Figure 2 is a diagram showing a memory structure of the graphics hardware of the embedded system and system memory.

도 1을 참조하면, OpenGL ES 1.x에 따라 3차원 데이터를 처리하게 된다. 1, the process is a three-dimensional data based on the OpenGL ES 1.x.

응용프로그램 인터페이스(100)에 의해 그래픽스 하드웨어(200)는 3차원 데이터를 실시간으로 처리하고, 그 결과를 프레임 버퍼(290)로 출력한다. The graphics hardware 200 via the application interface 100 may process the 3D data in real time, and outputs the result to the frame buffer 290. 3차원 데이터는 위치(position), 법선 벡터(normal vector), 색상(color), 텍스처 좌표(texture coordinate) 등을 포함하는 정점 데이터(Vertex data)일 수 있다. 3D data may be a location (position), the normal vector (normal vector), color (color), texture coordinate (texture coordinate) vertex data (data Vertex), or the like.

응용프로그램 인터페이스(100)는 정점 데이터, 상태 데이터들을 지정하고 렌더링(rendering) 명령을 내리는 인터페이스이다. Application interface 100 is specified, the vertex data, status data, and make the interface rendering (rendering) command. 렌더링이라 함은 평면인 그림에 형태ㅇ위치ㅇ조명 등 외부의 정보에 따라 다르게 나타나는 그림자ㅇ색상ㅇ농도 등을 고려하면서 실감나는 을 만들어내는 과정 또는 그러한 기법을 의미한다. Rendering means the process or technique that produces such a realistic, taking into account the type o Location o shadows that appear differently depending on external information such as light colors o o concentration, etc. to the plane of the picture. 표현하고자 하는 사물의 모양을 삼각형 형태의 폴리곤 집합으로 구분하고, 폴리곤을 구성하는 3개의 정점 데이터를 후술할 과정을 거쳐 처리함으로써 3차원 화상을 만들어낸다. It creates a three-dimensional image by dividing the shape of the object as a set of polygons of triangular form, and the process through a process which will be described later the three vertex data constituting the polygon to be expressed.

정점 데이터는 버텍스 버퍼 객체(Vertex Buffer Objects; 205)에 저장되어 있다. Vertex data vertex buffer objects; is stored in the (Vertex Buffer Objects 205). 프리미티브 프로세싱(Primitive Processing) 모듈(210)은 버텍스 버퍼 객체(205)에 저장된 3차원 데이터로부터 변환 및 조명효과(Transform and Lighting)를 적용할 점들을 생성한다. Primitive processing (Primitive Processing) module 210 generates the point to apply the transform and lighting effects (Transform and Lighting) from the three-dimensional data stored in the vertex buffer objects (205). 각 점들은 폴리곤을 구성하는 삼각형의 세 꼭지점이다. Each point are the three vertices of a triangle that make up the polygon.

변환 및 조명 효과 모듈(215)은 프리미티브 프로세성 모듈(210)에서 생성한 점들에 대해 행렬연산을 통해 화면 상에서의 위치를 결정하고 조명 모델(예를 들어, phong illlumination model 등)에 따라 점의 밝기를 결정한다. Conversion and light effects module 215 determines the position on the screen through a matrix operation on the points generated by the primitive Pro washout module 210 and light model brightness of a point in accordance with (e.g., phong illlumination model, etc.) It determines.

그리고 프리미티브 어셈블리(Primitive Assembly) 모듈(220)은 변환 및 조명 계산이 끝난 점들을 모아서 삼각형을 구성한다. And primitive assembly (Primitive Assembly) module 220 is configured to collect the triangle point the end of the transform and lighting calculations. 래스터라이저(Rasterizer; 225)는 삼각형이 화면에서 차지하는 픽셀(pixel)들을 결정한다. Rasterizer (Rasterizer; 225) determines the pixel (pixel) on the screen occupied by the triangle.

그리고 지정된 상태 정보에 따라 텍스처 연산(Texture Environment) 모듈(230)은 텍스처 이미지에서 색상정보를 가져와 각 픽셀의 색상을 결정하고, 색상 합계(Color Sum) 모듈(235)은 확산(diffuse), 반사(specular) 색상값을 더하며, 안 개 효과(Fog) 모듈(240)은 거리가 멀수록 안개색을 섞는다. And texture calculated in accordance with the designated status information (Texture Environment) module 230 takes the color of the texture and determines the color of each pixel, color sum (Color Sum) module 235 is spread (diffuse), reflection ( specular) and more color values, no more effects (fog) module 240 the distance, mix the fog color. 이를 통해 각 픽셀은 최종 색상을 가지게 된다. You will have the final color of each pixel through.

이후 각 픽셀은 알파값(투명도)가 사용자가 지정한 기준 이하이면 처리를 하지 않는 알파 테스트(Alpha test), 거리 버퍼(depth buffer)에 저장된 거리보다 더 먼 픽셀들은 처리를 하지 않는 거리 스텐실(Depth Stencil), 색상 버퍼(color buffer)에 있는 색상과 현재 픽셀의 색상을 혼합하여 색상 버퍼에 저장될 색상을 결정하는 색상 버퍼 혼합(Color Buffer Blend), 현재 화면의 계조(bit depth)에 맞도록 변환하는 디더링(Dithering)을 거치고, 프레임 버퍼(Frame Buffer; 290)에 저장된다. After each pixel is not a process alpha (transparency) The Alpha Test (Alpha test), more distant pixels than the stored distance to the distance buffer (depth buffer), the user does not the process is at or below a specified are distance stencil (Depth Stencil ), the color buffer (color buffer) are mixed with the colors of the color to the current pixel in the conversion to match the mixed color buffer to determine the color to be stored in the color buffer (color buffer blend), the current gray level of the screen (bit depth) undergoes a dithering (dithering), the frame buffer; is stored in the (frame buffer 290).

도 2를 참조하면, 시스템 메모리(10)는 응용프로그램 인터페이스(100)에 의해 사용된다. 2, the system memory 10 is used by an application program interface 100. 시스템 메모리(10)는 변환 상태 영역(13), 색상 상태 영역(16), 조명 상태 영역(19) 등으로 분할될 수 있다. System memory 10 may be divided into a converted state region 13, a color state region 16, the illumination state region 19 and the like. 변환 상태 영역(13)을 보면, 모델 뷰 행렬(MODELVIEW_MATRIX), 투영 행렬(PROJECTION_MATRIX) 등 다양한 파라미터(parameter)들을 저장하고 있다. In the transformation state region 13, and stores various parameters (parameter), such as the model view matrix (MODELVIEW_MATRIX), the projection matrix (PROJECTION_MATRIX). 시스템 메모리(10)의 각 상태 영역(13, 16, 19)은 사용자에 의해 파라미터의 변경이 가능하다. Each status area of ​​the system memory 10 (13, 16, 19) is capable of changing the parameters by the user. 각 파라미터에 의해 변환 상태 데이터, 색상 상태 데이터, 조명 상태 데이터가 결정된다. A conversion status data, color data, status, light status data corresponding to a respective parameter is determined.

시스템 메모리(10)에 저장된 다양한 파라미터들의 값이 응용프로그램 인터페이스(100)의 지정에 따라 그래픽스 하드웨어(60)의 상태 영역(63)에 저장되고, 렌더링 명령에 따라 도 1에 도시된 각 모듈들이 상술한 바와 같이 각각의 동작을 수행한다. The values ​​of various parameters stored in the system memory 10 is stored in the status area 63 of the graphics hardware 60, as specified in the application interface 100, each module shown in Figure 1, in accordance with rendering instructions are described It performs each operation as a bar.

여기서, 변환 및 조명 효과 영역(66)에 저장된 미리 고정된 제1 함수(fixed function)(예를 들어, 연산을 위한 행렬 등)에 의해 변환 및 조명 효과 모듈(215)에서의 동작이 결정된다. Here, the operation in a stored pre-fixed to the conversion and light effects area 66 the first function (fixed function) (e.g., a matrix for the operation, and so on) conversion and light effects module 215 by is determined. 그리고 텍스처 연산/색상 합계/안개 효과 영역(69)에 저장된 미리 고정된 제2 함수에 의해 텍스처 연산 모듈(230), 색상 합계 모듈(235), 안개 효과 모듈(240)에서의 동작이 결정된다. And the operation of the texture arithmetic / color sum / texture calculated by the stored fixed second function in advance in the fog area 69 module 230, a color total module 235, fog module 240 is determined.

변환 및 조명 효과 모듈(210)에서 변환은 행렬로만 표현될 수 있으며, 조명 효과를 위한 식은 그래픽스 하드웨어마다 이미 고정되어 있다. The conversion and light effects module 210, conversion can be represented only as a matrix, and the expression has already been fixed for each graphics hardware for the light effects. 사용자는 단지 시스템 메모리(10)의 각 상태 영역(13, 16, 19)에 저장되는 파라미터의 변경이 가능할 뿐이다. The user merely be a change in the parameters to be stored in each of the status area (13, 16, 19) of the system memory 10.

따라서, 사용자는 그래픽스 하드웨어에서 제공하는 기능만을 이용하여 3차원 그래픽을 표현해야 하는 제약이 발생한다. Therefore, the user generates a constraint that must be expressed by using only the 3D graphic function provided by the graphics hardware. 그리고 사용자가 다른 변환 및 조명 효과를 얻고자 한다면 그래픽스 하드웨어 자체를 변경하거나 변환 및 조명 효과 영역(66)에 저장되는 제1 함수를 변경해야 하는 문제점이 있다. And there is a problem that if the user is to gain a different conversion and light effects to change the first function to change the graphics hardware by itself, or stored in the transformation and light effects region 66. 또한, 행렬 연산은 평면 상의 각 점을 또 다른 평면 상의 점으로 대칭시킬 뿐이며, 평면이 아닌 새로운 면(예를 들어, 깃발이 펄럭이거나 물이 일렁이는 때의 표면)으로는 대칭이 불가능한 문제점이 있다. Further, the matrix operation is to only be symmetrical to each point on the plane to another plane points on the new surface non-planar (e.g., a flag flapping or surface at which the water shimmer) has a problem that can not be symmetrical.

따라서, 사용자가 3차원 데이터를 처리하는 프로그램을 개발하고 그래픽스 하드웨어에 전송하며 그래픽스 하드웨어에서는 사용자가 전송한 프로그램을 사용하여 정점(vertex)과 픽셀들을 처리할 수 있도록 하고자 OpenGL ES 2.0에서는 프로그래밍 가능한 쉐이더(programmable shader) 구조를 제안하고 있다. Therefore, the user desires to develop a program for processing three-dimensional data, transmit, and process the vertices (vertex) and a pixel using the graphics hardware program they sent to the graphics hardware OpenGL ES 2.0 programmable shader ( offering a programmable shader) structure. OpenGL ES 2.0을 지원하는 그래픽스 하드웨어는 도 2에 도시된 메모리 구조가 적합하지 않으므로 새로운 메모리 구조가 필요하다. OpenGL ES 2.0 graphics hardware support does not have a suitable memory structure shown in Figure 2, which requires a new memory architecture.

따라서, 본 발명은 사용자가 3차원 데이터를 처리하는 프로그램을 개발하고 그래픽스 하드웨어에 전송하며 그래픽스 하드웨어에서는 사용자가 전송한 프로그램을 사용하여 정점과 픽셀들을 처리할 수 있는 임베디드 시스템을 제공한다. Thus, the present invention provides an embedded system that allows users to process the vertex and pixel develop a program for processing three-dimensional data and transmitted to the graphics hardware, and the hardware graphics using a program by the user is transmitted.

또한, 본 발명은 기본의 복잡한 조명 계산이나 좌표 변환 연산이 필요하지 않은 경우 이를 생략하여 3차원 그래픽 연산의 속도를 향상시킬 수 있는 임베디드 시스템을 제공한다. The present invention also provides an embedded system that may be the case that does not require complex lighting calculation and coordinate transformation operation to the base omitted to speed up the three-dimensional graphics operations.

본 발명의 이외의 목적들은 하기의 설명을 통해 쉽게 이해될 수 있을 것이다. For purposes other than the present invention it will be readily understood from the description below.

상기 목적들을 달성하기 위하여, 본 발명의 일 측면에 따르면, 프로그래밍 가능한 쉐이더(programmable shader) 기반의 그래픽 연산을 지원하는 임베디드 시스템(embedded system)에 있어서, 응용프로그램 인터페이스(Application Program Interface)를 통해 입력된 하나 이상의 쉐이더 프로그램을 링크(link)하여 생성된 하나 이상의 프로그램 및 데이터를 저장하는 시스템 메모리; In order to achieve the above object, the according to an aspect of the invention, a programmable shader (programmable shader) based embedded systems supporting graphics operations (embedded system), input through the application programming interface (Application Program Interface) system for storing one or more shader program link (link) to one or more programs and data that are generated from the memory; 및 상기 하나 이상의 프로그램 및 데이터 중에서 상기 응용프로그램 인터페이스에 의해 선택되는 프로그 램 및 데이터를 적재하여 실행하는 그래픽스 하드웨어(graphics hardware)를 포함하는 임베디드 시스템이 제공될 수 있다. And it may be an embedded system that includes a graphics hardware (graphics hardware) executing the loaded programs and data that are selected by the application programming interface provided from the one or more programs and data.

바람직하게는, 상기 시스템 메모리는 상기 쉐이더 프로그램을 구분짓는 쉐이더 식별정보, 상기 쉐이더 프로그램의 소스인 쉐이더 프로그램 소스(shader program source), 상기 쉐이더 프로그램 소스가 컴파일된 결과인 컴파일 코드 및 상기 쉐이더 프로그램 소스에 선언된 상수를 저장하는 하나 이상의 쉐이더 객체 영역; Advantageously, the system memory is a shader identification information, wherein the source of the shader program source of the shader program (shader program source), the shader program source is compiled result of the compiled code, and the shader program source that distinguishes the shader program. one or more shader object area storing a constant declaration; 및 상기 프로그램을 구성하는 하나 이상의 상기 쉐이더 프로그램의 각 상기 쉐이더 식별정보, 상기 쉐이더 식별정보에 상응하는 상기 하나 이상의 쉐이더 객체 영역의 컴파일 코드를 링크하여 생성되는 상기 프로그램 및 상기 프로그램의 실행시 참조되는 데이터를 저장하는 프로그램 객체 영역을 포함할 수 있다. And data that is referenced during execution of the program and the program that is generated to link each of the shader identification information, compiled code of the at least one shader object area corresponding to the shader identification information of one or more of the shader program constituting the program program may include an object region for storing.

여기서, 상기 쉐이더 객체 영역은 상기 쉐이더 식별정보를 저장하는 식별 영역; Here, the shader object area identification area storing the identification information shader; 상기 쉐이더 프로그램 소스를 저장하는 소스 영역; A source region which stores the shader program source; 상기 컴파일 코드를 저장하는 코드 영역; Code area for storing the compiled code; 및 상기 상수를 저장하는 상수 영역을 포함할 수 있다. And it may include a constant area for storing the constants.

상기 식별 영역은 정수형 저장영역이고, 상기 쉐이더 식별정보는 상기 쉐이더 객체 영역 간의 서로 중복되지 않는 정수값일 수 있다. And the identification area is an integer storage, the shader identification information may be a value integer that does not overlap each other between the shader object region. 그리고 상기 소스 영역은 문자열형 저장영역이고, 상기 쉐이더 프로그램 소스는 고수준 언어(high-level language)로 작성될 수 있다. And wherein the source region has a string-type storage region, and the shader program source may be written in high-level language (high-level language). 또한, 상기 코드 영역은 이진데이터형 저장영역이고, 상기 컴파일 코드는 기계어 코드일 수 있다. In addition, the above described code is a binary data type storage area, the compiled code may be machine code. 그리고 상기 상수 영역은 실수배열형 저장영역일 수 있다. And the constant region can be a real array type storage.

또한 여기서, 상기 프로그램 객체 영역은 하나 이상의 상기 쉐이더 식별정보 를 저장하는 쉐이더 식별 영역; Also here, the program object area shader identification area storing at least one shader the identification information; 상기 프로그램을 저장하는 프로그램 영역; A program area storing the program; 및 상기 데이터를 저장하는 데이터 영역을 포함할 수 있다. And it may comprise: a data area storing the data.

상기 쉐이더 식별 영역은 정수배열형 저장영역이고, 상기 쉐이더 식별정보는 각 쉐이더 간에 중복되지 않는 정수형 값일 수 있다. The shader identification area is an integer array type storage, the shader identification information may be a value integer that do not overlap between each shader. 그리고 상기 프로그램 영역은 이진데이터형 저장영역이고, 상기 프로그램은 상기 컴파일 코드가 링크된 기계어 코드일 수 있다. And wherein said program area is a binary type data storage, the program may be machine code on which the compiled code is linked. 또한, 상기 데이터 영역은 실수배열형 저장영역이고, 상기 데이터는 상기 쉐이더 객체 영역의 상수를 포함할 수 있다. In addition, the above described data region is a real array type storage, the data may comprise a constant region of the shader object.

여기서, 상기 프로그램 객체 영역은 둘 이상이고, 상기 프로그램 객체 영역 간의 서로 중복되지 않는 정수값인 프로그램 식별정보를 저장하는 프로그램 식별 영역을 포함할 수 있다. Here, the program object area may include two or more, program identification area storing the program identification information an integer value which does not overlap each other between the program object area.

바람직하게는, 상기 그래픽스 하드웨어는 상기 하나 이상의 프로그램 중에서 선택된 프로그램을 적재하는 응용프로그램 영역; Preferably, the application area for the graphics hardware is loaded with the program selected from among the one or more programs; 상기 선택된 프로그램에 상응하는 데이터를 적재하는 데이터 영역; Data area for loading the data corresponding to the selected program; 및 상기 응용프로그램 영역에 적재된 프로그램이 상기 데이터 영역에 적재된 데이터를 참조하여 정해진 동작을 수행한 결과를 외부로 출력하는 출력 데이터 영역을 포함할 수 있다. And has a program loaded in the application area may include a data output area for outputting the result of performing the predetermined operation with reference to the data loaded into the data area to the outside.

이하, 첨부된 도면을 참조하여 본 발명에 따른 프로그래밍 가능한 쉐이더 기반의 그래픽 연산을 지원하는 임베디드 시스템 및 메모리 연산 방법의 바람직한 실시예를 상세히 설명한다. With reference to the accompanying drawings, the preferred embodiment of the embedded system and the memory operation method for supporting programmable graphics operations based shader according to the present invention will be described in detail. 본 발명을 설명함에 있어서, 관련된 공지 기술에 대한 구체적인 설명이 본 발명의 요지를 불필요하게 흐릴 수 있다고 판단되는 경우 그 상 세한 설명을 생략한다. In the following description of the present invention, a detailed description of known techniques that are determined to unnecessarily obscure the subject matter of the present invention and will not be the detailed description. 본 명세서의 설명 과정에서 이용되는 숫자(예를 들어, 제1, 제2 등)는 동일 또는 유사한 개체를 순차적으로 구분하기 위한 식별기호에 불과하다. Numbers used in the described processes of the present disclosure (e.g., the first, second, etc.) is only a subfield to identify the same or similar object in order.

도 3은 본 발명에 따른 프로그래밍 가능한 쉐이더 구조를 가지는 3차원 데이터 처리과정을 나타낸 도면이다. 3 is a view showing a programming three-dimensional structure having a shader data processing procedure according to the present invention.

프로그래밍 가능한 쉐이더 구조는 OpenGL ES 2.0에서 제안하고 있다. Programmable shader architecture has been proposed in OpenGL ES 2.0. 도 1에 도시된 변환 및 조명 효과 모듈(215)을 버텍스 쉐이더(Vertex Shader; 310)로, 텍스처 연산 모듈(230), 색상 합계 모듈(235), 안개 효과 모듈(240)을 프래그먼트 쉐이더(Fragment Shader; 320)로 대체한다. The conversion and light effects module 215 shown in Figure 1 the vertex shader (Vertex Shader; 310) to the texture computation module 230, a color total module 235, fragments the fog module 240 shader (Fragment Shader ; is replaced by 320). 즉, 본 발명에 따르는 그래픽스 하드웨어(300)는 도 1에 도시된 그래픽스 하드웨어(200)와 달리 버텍스 쉐이더(310) 및 프래그먼트 쉐이더(320)를 적재한다. That is, the graphics hardware 300, according to the invention is loaded into the vertex shader 310 and fragment shader 320, unlike the graphics hardware 200 shown in Fig. 여기서, 버텍스 쉐이더(310), 프래그먼트 쉐이더(320)는 사용자가 고수준(high-level) 언어로 프로그래밍이 가능한 쉐이더 구조를 가진다. Here, the vertex shader 310, fragment shader 320 has a structure capable of shader user programming in a high-level (high-level) languages. 대체된 버텍스 쉐이더(310), 프래그먼트 쉐이더(320)는 그래픽스 하드웨어(300)의 고정된 기능 대신에 사용자가 개발한 프로그램을 수행함으로써 자유롭게 3차원 그래픽 표현을 할 수 있다. The alternate vertex shader 310, fragment shader 320 may be a three-dimensional graphical representation of freedom by performing the user-developed in place of the fixed-in program of the graphics hardware (300).

버텍스 쉐이더(310)는 3차원 상에 위치하는 정점 데이터를 입력받고, 사용자에 의한 효과가 적용된 각 정점의 화면 상에서의 위치, 색상 그리고 추가 정보를 출력한다. The vertex shader 310 outputs the position, color, and the additional information on the each vertex is applied, the effect of the user receives the vertex data located in the three-dimensional screen. 여기서, 정점 데이터는 3차원 데이터로서, 3차원 위치, 색상, 법선 벡터, 텍스처 좌표 등을 포함한다. Here, the vertex data includes a three-dimensional data, three-dimensional position, color, normals, texture coordinates, and so on.

사용자는 응용프로그램 인터페이스(100)를 통해 버텍스 쉐이더(310)를 그래픽스 하드웨어(200) 상의 미리 지정된 영역에 적재하고, 정점 데이터를 버텍스 버퍼 객체(205)에 저장한다. The user loads the vertex shader unit 310 via the application interface 100 to a pre-specified region on the graphics hardware (200), and stores the vertex data in the vertex buffer objects (205). 그리고 정점 데이터의 처리는 적재된 버텍스 쉐이더(310)에 의해 수행된다. And processing of the vertex data is performed by the loaded vertex shader 310.

프래그먼트 쉐이더(320)는 프래그먼트에 전달된 색상 및 텍스처 좌표 등의 정보를 이용하여 해당 프래그먼트의 색상을 결정한다. Fragment shader 320 by using information such as the color and texture coordinates passed to the fragment to determine the color of the fragments. 프래그먼트는 래스터라이저(225)에 의해 결정된 픽셀들의 집합이다. Fragment is a set of pixels determined by the rasterizer 225. 래스터라이저(225)는 3차원 화상이 표현될 화면 상에서 버텍스 쉐이더(310)에 의해 결정된 각 정점의 위치와 대응되는 각 픽셀들을 3개의 꼭지점으로 하는 삼각형 형태의 평면 내에 포함되는 픽셀들을 결정한다. Rasterizer 225 determines the pixel to be included within the triangular shape of each pixel to which each vertex corresponds to the position and determined by the vertex shader 310 on the screen is represented a three-dimensional image with three vertices plane.

프래그먼트 쉐이더(320)는 프래그먼트를 구성하는 3개의 꼭지점에 해당하는 정점 데이터에 포함된 색상, 텍스처 좌표 등을 이용하여 해당 프래그먼트의 색상을 결정하게 된다. Fragment shader 320 using the color, texture coordinates, etc. included in the vertex data corresponding to the three vertices constituting the fragments will determine the color of the fragment.

도 4는 프로그래밍 가능한 쉐이더를 사용함에 있어 응용프로그램 인터페이스의 역할을 나타낸 도면이다. 4 is a view showing the roles of the application interface in the use of a programmable shader.

도 4를 참조하면, 사용자는 3차원 데이터 즉, 정점 데이터를 처리하는 3차원 데이터 처리 프로그램(410)을 작성한다. 4, the user may create the three-dimensional data processing program 410 for processing a three-dimensional data, that is, the vertex data. 3차원 데이터 처리 프로그램(410)은 정점의 위치 변환 및/또는 조명 효과를 위해 다양한 효과가 적용되도록 프로그래밍될 수 있다. Three-dimensional data processing program 410 can be programmed so that the various effects applied to the position conversion and / or the lighting effect of the vertex.

깃발을 나타내는 평면 상의 정점 데이터들이 있는 경우를 예로 든다. If the costs are in a plane on the vertex data indicating the flag as an example. 기존에 는 행렬연산 밖에 되지 않아 평면은 또다른 평면으로만 변환이 이루어지게 되고, 따라서 깃발이 펄럭이는 형태의 3차원 형상을 구현할 수 없었다. Existing in the matrix does not only operation plane could not yet be in a different plane only and the conversion is performed, so implementing the three dimensional shape of the form is a flag flap. 하지만, 버텍스 쉐이더(310)를 이용하여 사인(sine) 함수, 코사인(cosine) 함수, 로그(log) 함수, 지수(exponential) 함수에 의해 각 정점 데이터들이 변환되도록 하면 기존과 달리 복잡한 형태의 변환이 가능하게 되어 깃발이 펄럭이는 형태의 3차원 형상이 구현될 수 있다. However, the if unlike the conventional complex of converting vertex shader 310 to each of the vertex data are converted by a sine (sine) functions, cosine (cosine) function, log (log) function, the exponent (exponential) function by using the is capable has a three-dimensional shape of the form is a flag fluttering can be implemented.

응용프로그램 인터페이스(410)는 3차원 데이터 처리 프로그램(410)을 그래픽스 하드웨어(420)가 처리할 수 있는 형태의 프로그램으로 번역한다. Application interface 410 translates the three-dimensional data processing program 410 in the form of a program capable of processing the graphics hardware (420). 그래픽스 하드웨어(420)가 처리할 수 있는 형태로는 이진데이터로 구성되는 기계어 코드(machine code)인 것이 바람직하다. In a form that the graphics hardware 420 can process is preferably in a machine code (machine code) consisting of a binary data. 응용프로그램 인터페이스(410)는 OpenGL ES 2.0을 기반으로 하고 있으나, 추후 OpenGL ES의 확장에 대해서도 적용가능함은 물론이다. An application interface 410, but is based on the OpenGL ES 2.0, OpenGL ES applies for the expansion of the later available as a matter of course.

OpenGL ES 2.0에 의할 때 프로그래밍 가능한 쉐이더를 사용하기 위해서 쉐이더 객체(shader object)와 프로그램 객체(program object)의 두 종류의 객체를 사용한다. When in the OpenGL ES 2.0 to use a programmable shader uses two kinds of objects of the shader object (shader object) and an object program (object program). 쉐이더 객체는 버텍스 쉐이더 또는 프래그먼트 쉐이더 모듈을 나타내고, 쉐이더 프로그램 소스(shader source)와 그 컴파일 결과를 저장한다. Shader object represents a vertex shader or fragment shader module, and stores the results compiled shader program source (source shader) and. 프로그램 객체는 버텍스 쉐이더와 프래그먼트 쉐이더로 이루어진 단일 실행 단위의 쉐이더 프로그램을 나타내고, 쉐이더 프로그램을 구성하는 하나 이상의 쉐이더 객체를 링크(link)시켜 단일 실행 단위의 실행 코드를 생성하고 저장한다. Program object that represents a shader program in a single execution unit consisting of the vertex shader and fragment shader, and a link (link) at least one shader objects constituting the shader program to generate executable code in a single execution unit and stored.

응용프로그램 인터페이스(410)는 쉐이더 객체, 프로그램 객체를 생성 및 관리하고, 그래픽스 하드웨어(300)에 적합한 데이터와 명령 즉, 쉐이더 프로그램을 전달하는 기능들로 이루어진다. Application interface 410 consists of the ability to create and manage the shader object and the program object, and passing the appropriate data and instructions i.e., the shader program to the graphics hardware (300).

그래픽스 하드웨어(300)는 응용프로그램 인터페이스(410)로부터 버텍스 쉐이더 및/또는 프래그먼트 쉐이더에 상응하는 쉐이더 프로그램을 전달받고, 각 쉐이더를 실행시켜 렌더링 동작이 수행되도록 한다. The graphics hardware 300 is informed of the shader program corresponding to the vertex shader and / or a fragment shader from the application interface 410, by executing each shader to perform the rendering operation. 본 발명에 따른 그래픽스 하드웨어(300)는 각 쉐이더 프로그램을 전달받아 실행시킬 수 있는 프로그래밍 가능한 쉐이더 기반의 하드웨어인 것이 바람직하다. The graphics hardware 300 in accordance with the present invention is preferably a programmable shader based on hardware that can be executed by receiving each shader programs. 또한, 그래픽스 하드웨어(300)는 쉐이더 프로그램을 실행시킬 때 필요한 데이터를 응용프로그램 인터페이스(410)로부터 전달받는다. In addition, the graphics hardware (300) and receives the required data when executing a shader program from the application program interface (410).

상술한 과정에 의해 사용자가 프로그래밍한 효과를 연출할 수 있는 프로그래밍 가능한 쉐이더 기반의 그래픽스 하드웨어(300), 응용프로그램 인터페이스(410) 등은 도 2에 도시된 시스템 메모리(10)와는 다른 메모리 구조를 필요로 한다. The user can produce a programmed effect programmable shader based on the graphics hardware 300, which by the above-described process, the application interface 410 and the like require a different memory architecture than system memory 10 shown in FIG. do. 도 5 이하의 도면을 참조하여 본 발명에 따른 그래픽스 하드웨어(300), 응용프로그램 인터페이스(410)에서 사용할 수 있는 시스템 메모리의 구조 및 메모리 연산 방법에 대해 설명한다. Referring to the drawings more than 5 will be described the structure and operation method of the memory system, the memory available in the graphics hardware 300, application interface 410 in accordance with the present invention.

도 5는 본 발명의 바람직한 일 실시예에 따른 임베디드 시스템의 시스템 메모리(500)와 그래픽스 하드웨어(300)의 메모리 구조를 나타낸 도면이다. 5 is a view showing a memory structure of the system memory 500 and the graphics hardware 300 of the embedded system according to an embodiment of the present invention.

임베디드 시스템은 시스템 메모리(500)와 그래픽스 하드웨어(300)를 포함한다. The embedded system includes a system memory 500 and the graphics hardware (300). 본 발명에서 임베디드 시스템은 이동 통신 단말기, 개인 휴대 단말기(PDA), 휴대형 멀티미디어 단말기(PMP) 등의 모바일 장치, 자동차 제어장치, 냉장도 제어장치, 공장로봇 제어장치 등을 의미한다. In the present invention, an embedded system refers to a mobile communication terminal, a personal digital assistant (PDA), a mobile device such as a portable multimedia device (PMP), vehicle control unit, also controls the refrigeration unit plant robot control apparatus and the like.

시스템 메모리(500)는 응용프로그램 인터페이스(410)에 의해 3차원 데이터 처리 프로그램(400)을 그래픽스 하드웨어(300)가 처리할 수 있도록 번역하고 번역한 코드를 저장하기 위해 활용된다. System memory 500 is utilized to store the translation and translation code to the graphics hardware 300 processes the three-dimensional data processing program 400 by the application program interface 410.

시스템 메모리(500)는 하나 이상의 쉐이더 객체 영역(510a, 510b)과 프로그램 객체 영역(520)을 포함한다. System memory 500 comprises one or more shader object region (510a, 510b) and the program object area 520. 도 5에서는 2개의 쉐이더 객체 영역(510a, 510b)이 있는 것으로 가정하지만, 이에 한정되지 않고 여러 개의 쉐이더 객체 영역이 있을 수 있다. In Figure 5 there can be multiple shader object regions without the two shader object region is assumed that the (510a, 510b), but not always limited thereto. 쉐이더 객체 영역(510a, 510b)은 모두 동일한 구조를 가지고 있는 바 이하에서는 쉐이더 객체 영역(510a)에 대해서 설명한다. The bars in both the shader object region (510a, 510b) have the same structure will be described below with respect to the shader object region (510a).

쉐이더 객체 영역(510a)는 식별 영역(512a), 소스 영역(514a), 코드 영역(516a) 및 상수 영역(518a)을 포함한다. Shader object region (510a) includes an identification region (512a), a source region (514a), the code area (516a) and a constant region (518a).

식별 영역(512a)은 각각의 쉐이더 객체를 구별할 수 있는 쉐이더 식별정보를 저장한다. Identification region (512a) stores the shader identification information that can distinguish each of the shader objects. 쉐이더 식별정보는 각 쉐이더 객체 간의 구분을 위해 서로 중복되지 않는 정수형 값이다. Shader identification information is an integer value which does not overlap with each other to distinguish between each shader object. 따라서, 식별 영역(512a)는 정수형 저장 영역인 것이 바람직하다. Thus, the identification region (512a) is preferably in a integer storage. 쉐이더 프로그램이 하나인 경우에는 구별이 필요없으므로, 식별 영역(512a)이 쉐이더 객체 영역(510) 내에 할당되지 않을 수 있다. If the shader program, one has no need to be able to distinguish, identify region (512a) can not be allocated within the shader object region 510.

소스 영역(514a)은 각각의 쉐이더 객체에 해당하는 쉐이더 프로그램의 소스인 쉐이더 프로그램 소스(shader program source)를 저장한다. A source region (514a) stores the shader program source (shader program source) the source of the shader program corresponding to each of the shader objects. 쉐이더 프로그램 소스는 사용자가 쉽게 작업가능한 고수준 언어(high-level language)로 작성될 수 있다. Source shader programs can be written to a user easily workable high-level languages ​​(high-level language). 쉐이더 프로그램 소스는 앞서 설명한 3차원 데이터 처리 프로그램(400) 자체이거나, 3차원 데이터 처리 프로그램(400)을 구성하는 다수의 쉐이더 프로그램 중 하 나일 수 있다. Shader program source may be a three-dimensional data processing program 400 itself described above, and may Nile of three-dimensional multiple shader programs constituting the data processing program 400. 따라서, 소스 영역(514a)은 고수준 언어로 작성된 쉐이더 프로그램 소스 데이터를 저장할 수 있는 문자열형 저장영역인 것이 바람직하다. Therefore, the source region (514a) is a high-level language program shader preferred that the string-shaped storage area for storing the source data written in.

코드 영역(516a)은 소스 영역(514a)에 저장된 쉐이더 프로그램 소스를 컴파일한 결과인 컴파일 코드(compiled code)를 저장한다. Code area (516a) stores the result of the compiled code (compiled code) compiled shader program sources are stored in the source region (514a). 컴파일 코드는 소스 영역(514a)에 저장된 쉐이더 프로그램 소스를 컴퓨터나 프로그램 실행 하드웨어, 디지털 장치에서 실행될 수 있도록 기계가 판독가능한 기계어 코드 즉, 이진데이터이다. Compiled code is a source region (514a) shader program source to the computer or program executing hardware, the machine-readable machine language code to run on a digital device that is stored in a binary data. 따라서, 코드 영역(516a)은 이진데이터형 저장영역인 것이 바람직하다. Thus, the code area (516a) is preferably in the form of binary data storage.

상수 영역(518a)은 쉐이더 프로그램 소스에서 선언되고 추후 쉐이더 프로그램이 실행될 때 참조되는 상수들을 저장한다. Constant region (518a) is declared in the shader program source stores a constant reference when a shader program to be executed later. 상수는 자연수, 정수, 실수 등이 가능하나, 가장 넓은 범위를 담당할 수 있는 실수형(floating type)인 것이 바람직하다. One constant can be natural, integers, real numbers, etc., it is preferable that the real number (floating type) that may be responsible for the widest range. 따라서, 상수 영역(518a)은 여러 개의 상수가 저장되도록 실수배열형 저장영역인 것이 바람직하다. Thus, the constant region (518a) is preferably in the real array type storage so that multiple constants are stored.

여기서, 코드 영역(516a) 및/또는 상수 영역(518a)은 소스 영역(514a)에 저장된 쉐이더 프로그램 소스의 내용을 기계가 판독가능하도록 컴파일한 결과물을 저장한다. Here, the code area (516a) and / or the constant region (518a) stores the compiled results to enable the machine reads the contents of a source shader programs stored on the source region (514a). 따라서, 코드 영역(516a) 및/또는 상수 영역(518a)은 미리 할당되지 않고 추후 해당 쉐이더 객체가 호출되어 프로그램을 구성하게 될 때 쉐이더 프로그램 소스를 컴파일하고 그 결과를 저장할 수 있도록 나중에 할당될 수도 있다. Thus, the code area (516a) and / or the constant region (518a) is not pre-assigned may be compiled shader program source when the configuration of the future program is the shader object is called and allocated later to store the result .

쉐이더 객체 영역(510a)은 앞서 상술한 정점 데이터의 처리를 위한 버텍스 쉐이더(310) 또는 프래그먼트의 색상을 결정하는 프래그먼트 쉐이더(320)를 위한 저장영역일 수 있다. Shader object area (510a) may be a storage area for the fragment shader 320, which determines the vertex shader 310, or the color of the fragment for the processing of the vertex data previously described. 그 외에도 OpenGL ES의 확장에 의해 고정된 기능을 하는 그래 픽스 하드웨어(300)의 모듈을 대체하는 쉐이더를 위한 저장영역일 수 있다. In addition, it may be a storage area for a shader to replace a module in a hardware Yes fixes 300 that the functions held by the expansion of OpenGL ES.

프로그램 객체 영역(520)은 그래픽스 하드웨어(300)에서 실행되는 프로그램을 저장한다. Program object area 520 stores a program that runs on the graphics hardware (300).

프로그램은 하나 이상의 쉐이더 프로그램으로 구성된다. The program is composed of one or more shader programs. 버텍스 쉐이더(310) 만을 대체하는 경우에는 버텍스 쉐이더 프로그램만으로 구성되고, 프래그먼트 쉐이더(320)만을 대체하는 경우에는 프래그먼트 쉐이더 프로그램만으로 구성되며, 버텍스 쉐이더(310)와 프래그먼트 쉐이더(320)를 모두 대체하는 경우에는 버텍스 쉐이더 프로그램과 프래그먼트 쉐이더 프로그램의 링크에 의해 구성된다. When replacing only the vertex shader 310 of only the vertex shader program, when replacing only a fragment shader 320. There is constituted only by the fragment shader program, if the replace all the vertex shader 310 and fragment shader 320 There is constituted by a link of the vertex shader program and a fragment shader program. 여기서, 버텍스 쉐이더 프로그램 및/또는 프래그먼트 쉐이더 프로그램은 사용자가 원하는 효과의 종류에 따라 하나 이상이 존재할 수 있다. Here, the vertex shader program and / or the fragment shader programs may be in one or more according to the type of effect desired by the user.

프로그램 객체 영역(520)은 프로그램 식별 영역(522), 쉐이더 식별 영역(524), 프로그램 영역(526) 및 데이터 영역(528)을 포함한다. The object program area 520 comprises a program identification area 522, shader identification area 524, program area 526 and data area 528.

프로그램 식별 영역(522)은 각각의 프로그램 객체를 구별할 수 있도록 하는 프로그램 식별정보를 저장한다. Program identification area 522 stores the program identification information to distinguish the respective program object. 프로그램 식별정보는 각 프로그램 객체 간의 구분을 위해 서로 중복되지 않는 정수형 값이다. Program identification information is an integer value which does not overlap with each other to distinguish between the respective program object. 따라서, 프로그램 식별 영역(522)는 정수형 저장 영역인 것이 바람직하다. Thus, the program identification area 522 is preferably in a integer storage.

쉐이더 식별 영역(524)은 프로그램 객체 영역(520)에 상응하는 프로그램을 구성하는 하나 이상의 쉐이더 프로그램에 상응하는 하나 이상의 쉐이더 객체(510a 또는 510b)를 구별할 수 있는 쉐이더 식별정보를 저장한다. Shader identification area 524 stores the shader identification information that separates at least one shader object (510a or 510b) corresponding to one or more shader programs constituting the program corresponding to the program object area 520. 쉐이더 식별정보는 앞서 설명한 바와 같이 쉐이더 객체 간의 구분을 위해 중복되지 않는 정수값이 할당 되는 바, 쉐이더 식별 영역(524)은 정수배열형 저장영역인 것이 바람직하다. Shader identification information is a bar, shader identification region 524 which does not overlap the integer values ​​assigned to distinguish between the shader object is preferably an integer array type storage as described above.

프로그램 영역(526)은 그래픽스 하드웨어(300)에서 실행가능한 프로그램을 구성하는 각 쉐이더 객체 영역(510a 또는 510b)의 코드 영역(516a 또는 516b)에 저장된 컴파일 코드들을 링크하여 생성된 기계어 코드인 프로그램을 저장한다. A program area 526 stores each shader object region code area (516a or 516b), the machine code program is generated by linking the compiled code stored in the (510a or 510b) that make up the executable program in the graphics hardware (300) do. 프로그램은 기계에서 판독가능한 이진데이터이고, 프로그램 영역(524)은 이진데이터형 저장영역인 것이 바람직하다. The program is readable binary data from a machine, the program area 524 is preferably a binary type data storage. 프로그램 객체 영역(520)의 쉐이더 식별 영역(524)에 저장된 쉐이더 식별정보로부터 해당 쉐이더 객체 영역(510a 또는 510b)에 억세스하여 코드 영역(516a 또는 516b)에 저장된 컴파일 코드를 읽어와 링크한다. From the program information stored in the identified object regions shader shader identification area 524 of the (520) access to the shader object area (510a or 510b) is linked to read the compiled code stored in the code area (516a or 516b).

데이터 영역(528)은 프로그램을 구성하는 각 쉐이더 객체 영역(510a 또는 510b)의 상수 영역(518a 또는 518b)에 저장된 상수들 및/또는 프로그램이 그래픽스 하드웨어(300)에서 동작시에 참조하는 데이터를 저장한다. Data area 528 stores data that is referred to in the constant and / or program is operating in a graphics hardware (300) stored in the constant area (518a or 518b) of each shader object area (510a or 510b) that make up the program do. 상수들 또는 데이터는 자연수, 정수, 실수 등이 가능하나, 가장 넓은 범위를 담당할 수 있는 실수형인 것이 바람직하다. Constant or data is of an accidental to one possible natural numbers, integers, real numbers, etc., responsible for the wide range. 따라서, 데이터 영역(528)은 여러 개의 상수 또는 데이터가 저장되도록 실수배열형 저장영역인 것이 바람직하다. Thus, the data area 528 is preferably a real number so that the number of array type storage or constant data are stored. 프로그램 객체 영역(520)의 쉐이더 식별 영역(524)에 저장된 쉐이더 식별정보로부터 해당 쉐이더 객체 영역(510a 또는 510b)에 억세스하여 상수 영역(518a 또는 518b)에 저장된 상수들을 읽어온다. Access from the shader identification stored in the identification area shaders 524 of the program object area 520, information on the shader object area (510a or 510b) and reads the constant stored in the constant area (518a or 518b).

그래픽스 하드웨어(300)는 데이터 영역(552), 응용프로그램 영역(554), 출력 데이터 영역(556)을 포함한다. The graphics hardware 300 comprises a data area 552, the application region 554, the output data area 556. 출력 데이터 영역(556)은 응용프로그램 영역(554)에 적재된 프로그램이 동작 수행한 결과를 저장하고 외부로 출력한다. Output data area 556 stores a result of the loading in the application zone 554, the program performs the operation and outputs it to the outside.

데이터 영역(552)은 시스템 메모리(500)에 저장된 하나 이상의 프로그램 객 체 영역 중에서 선택된 프로그램 객체 영역(520)의 데이터 영역(528)에 저장된 상수 및/또는 데이터를 적재한다. A data area 552 loads the constants and / or data stored in the data area 528 of the system memory area, a program object 520 selected from one or more programs stored in the object region (500). 상수 및/또는 데이터는 그래픽스 하드웨어(300)에서 프로그램을 실행시키기 위해 참조하는 값이기 때문에 그래픽스 하드웨어(300)의 메모리에 저장될 필요가 있다. Since the constant and / or data values ​​that refer to running the program on the graphics hardware (300) it needs to be stored in the memory of the graphics hardware (300).

응용프로그램 영역(554)은 시스템 메모리(500)에 저장된 하나 이상의 프로그램 객체 영역 중에서 선택된 프로그램 객체 영역(520)의 프로그램 영역(526)에 저장된 프로그램 즉, 기계어 코드를 적재한다. Applications area 554 is a program that is loaded, the machine language code stored in system memory 500, a program area 526 of the selected program object area 520 from one or more programs stored in the object region. 이후 적재된 기계어 코드는 그래픽스 하드웨어(300) 상에서 데이터 영역(552)에 저장된 값을 참조하며 정해진 동작(예를 들어, 렌더링)을 수행한다. After the loading machine code, refer to the values ​​stored in the data area 552 on the graphics hardware 300 and performs a predetermined action (e.g., rendering).

도 6은 본 발명의 바람직한 일 실시예에 따른 쉐이더 객체 영역의 생성 방법의 흐름도이고, 도 7은 본 발명의 바람직한 일 실시예에 따른 프로그램 객체 영역의 생성 방법의 흐름도이며, 도 8은 본 발명의 바람직한 일 실시예에 따른 메모리 연산 방법의 흐름도이다. 6 is a flowchart of generation of a shader object zone method according to one embodiment of the present invention, is 7 is a flow diagram of a method of generating to a preferred program object area according to the embodiment of the present invention, and FIG. 8 according to the present invention a flow chart of a memory operation process according to a preferred embodiment.

도 6을 참조하면, 단계 S610에서 시스템 메모리(500) 내에 응용프로그램 인터페이스(100)를 통해 입력된 쉐이더 프로그램 소스에 상응하는 쉐이더 식별정보 및 쉐이더 객체 영역(510a) 공간을 생성한다. 6, to generate a corresponding identification information and the shader shader object region (510a) to the space in the shader program source input via the application interface 100 into the system memory 500 in step S610. 쉐이더 식별정보는 이전에 시스템 메모리(500) 상에 존재하는 쉐이더 객체 영역(510a)의 식별정보와는 중복되지 않아야 한다. Shader identification information must be unique and is the identification information of the shader object region (510a) existing on the previous system memory 500 to the. 쉐이더 객체 영역(510a)이 생성되면, 내부에 식별 영역(512a), 소스 영역(514a), 코드 영역(516a) 및 상수 영역(518a)이 자동 할당된다. When the shader object region (510a) is generated, the identification region (512a) therein and a source region (514a), the code area (516a) and a constant region (518a) is automatically assigned. OpenGL ES 2.0 응용프로그램 인터페이스에서는 glCreateShader이 이에 해당한다. The OpenGL ES 2.0 application interface glCreateShader the equivalent.

단계 S620에서 소스 영역(514a)에 입력된 쉐이더 프로그램 소스를 저장한다. In step S620 and stores the shader program source input to the source region (514a). OpenGL ES 2.0 응용프로그램 인터페이스에서는 glShaderSource이 이에 해당한다. The OpenGL ES 2.0 application interface glShaderSource the equivalent.

단계 S630에서 쉐이더 프로그램 소스를 컴파일하여 생성되는 컴파일 코드 및 상수를 각각 코드 영역(516a) 및 상수 영역(518a)에 저장한다. The compiled code and constants that are generated by compiling a source shader program in step S630, respectively stored in the code area (516a) and a constant region (518a). OpenGL ES 2.0 응용프로그램 인터페이스에서는 glCompileShader이 이에 해당한다. The OpenGL ES 2.0 application interface glCompileShader the equivalent.

상술한 단계 S610 내지 S630을 통해 특정 쉐이더 프로그램이 해당하는 하나의 쉐이더 객체 영역(510a)이 생성된다. The single shader object region (510a) in which a particular shader program corresponding with the above-described steps S610 to S630 is generated. 사용자가 입력하는 쉐이더 프로그램 소스마다 단계 S610 내지 S630을 반복하여 다수의 쉐이더 객체 영역(510a 또는 510b)을 생성할 수 있다. Each shader program source that the user enters repeat steps S610 to S630 and it is possible to generate a plurality of shader objects area (510a or 510b).

도 7을 참조하면, 단계 S710에서 응용프로그램 인터페이스(100)의 명령에 따라 시스템 메모리(500) 내에 특정 3차원 효과를 내는 프로그램에 상응하는 프로그램 식별정보 및 프로그램 객체 영역(520) 공간을 생성한다. 7, and it generates an application corresponding program identification information and the program object area 520, the space for the program that a specific three-dimensional effect in the system memory 500 according to a command of the interface 100 in step S710. 프로그램 식별정보는 이전에 시스템 메모리(500) 상에 존재하는 프로그램 객체 영역(520)의 식별정보와는 중복되지 않아야 한다. Program identification information must be unique to the identification information of the previously present on the system memory 500 to the program object area 520. 프로그램 객체 영역(520)이 생성되면, 내부에 프로그램 식별 영역(522), 쉐이더 식별 영역(524), 프로그램 영역(526) 및 데이터 영역(528)이 자동 할당된다. When the program object area 520 is generated, the program identification area 522 therein, shader identification area 524, program area 526 and data area 528 is automatically assigned. OpenGL ES 2.0 응용프로그램 인터페이스에서는 glCreateProgram이 이에 해당한다. The OpenGL ES 2.0 application interface glCreateProgram the equivalent.

단계 S720에서 쉐이더 식별 영역(524)에 해당 프로그램을 구성하는 쉐이더 프로그램이 저장된 쉐이더 객체 영역(510a 또는 510b)의 쉐이더 식별정보를 저장한다. And it stores the identification information of the shader shader identification region 524 shader program is stored shader object area (510a or 510b) that make up the program in step S720. OpenGL ES 2.0 응용프로그램 인터페이스에서는 glAttachShader이 이에 해당한 다. The OpenGL ES 2.0 application interface, one glAttachShader the equivalent.

단계 S730에서 프로그램 영역(526)에 쉐이더 식별 영역(524)에 저장된 쉐이더 식별정보에 상응하는 쉐이더 객체 영역(510a 또는 510b)의 코드 영역(516a 또는 516b)에 저장된 컴파일 코드를 링크하여 생성된 프로그램을 저장한다. In step S730 the program area 526 to the shader object area code area of ​​the program generated by linking the compiled code stored in the (516a or 516b) of the (510a or 510b) corresponding to the shader identification information stored in the shader identification region 524 stores. OpenGL ES 2.0 응용프로그램 인터페이스에서는 glLinkProgram이 이에 해당한다. The OpenGL ES 2.0 application interface glLinkProgram the equivalent.

단계 S740에서 데이터 영역(528)에 쉐이더 식별 영역(524)에 저장된 쉐이더 식별정보에 상응하는 쉐이더 객체 영역(510a 또는 510b)의 상수 영역(518a 또는 518b)에 저장된 상수들 및/또는 프로그램이 동작 수행시 참조하는 데이터를 저장한다. The constants stored in the constant area (518a or 518b) of the shader object area (510a or 510b) in step S740 corresponding to the shader identification information stored in the shader identification region 524 in the data area 528 and / or program to perform the operation when store data referenced. OpenGL ES 2.0 응용프로그램 인터페이스에서는 glGetUniformLocation과 glUniform{1234}{if}[v]이 이에 해당한다. OpenGL ES 2.0, the application interface and glGetUniformLocation glUniform {1234} {if} [v] This corresponds to this.

상술한 단계 S710 내지 S740을 통해 특정 프로그램이 해당하는 하나의 프로그램 객체 영역(520)이 생성된다. The above-described steps S710 through S740 to a program object region 520 in which a particular program that is generated. 단계 S710 내지 S740을 반복하여 다수의 프로그램 객체 영역(520)을 생성할 수 있다. Repeating the steps S710 to S740 and it is possible to generate a plurality of program objects area 520.

도 8을 참조하면, 단계 S810에서 하나 이상의 쉐이더 객체 영역(510a 또는 510b)을 생성한다. 8, and generates one or more shader object area (510a or 510b) in step S810. 이에 대해서는 앞서 설명한 바와 같이 도 6에 상세히 도시되어 있다. Thus, as described above for detail and is shown in Fig.

단계 S820에서 하나 이상의 프로그램 객체 영역(520)을 생성한다. In step S820 to generate one or more program objects area 520. 이에 대해서도 앞서 설명한 바와 같이 도 7에 상세히 도시되어 있다. Thus, as described above it is also shown in detail in FIG.

단계 S830에서 특정 렌더링에 사용할 프로그램 객체를 선택한다. Select a program to use for a particular object rendering in step S830. 프로그램 객체의 선택은 프로그램 식별정보를 시스템 메모리(500) 또는 그래픽스 하드웨어 (300)의 미리 지정된 주소(address)에 기록하는 등의 동작으로 가능하다. Selection of a program object, it is possible to operate such as to record the program identification information in the address (address) specified in advance in the system memory 500 or graphics hardware 300. OpenGL ES 2.0 응용프로그램 인터페이스에서는 glUseProgram이 이에 해당한다. The OpenGL ES 2.0 application interface glUseProgram the equivalent.

단계 S840에서 선택된 프로그램 객체에 해당하는 프로그램 객체 영역(520)의 프로그램을 그래픽스 하드웨어(300)의 응용프로그램 영역(554)에 적재한다. It loads the program of the program object area 520 corresponding to the selected program object in step S840 to the application region 554 of the graphics hardware (300). 단계 S850에서 선택된 프로그램 객체에 해당하는 프로그램 객체 영역(520)의 상수 및/또는 데이터를 그래픽스 하드웨어(300)의 데이터 영역(552)에 적재한다. It loads the constant and / or data of the program object area 520 corresponding to the selected program object in step S850 in the data area 552 of the graphics hardware (300). 단계 S840과 단계 S850은 순서에 상관없이 진행되며, 동시에 진행될 수 있다. Step S840 and step S850 are conducted in any order, it can be carried out simultaneously.

단계 S860에서 그래픽스 하드웨어(300)는 적재된 프로그램과 데이터를 이용하여 렌더링을 시작한다. The graphics hardware 300 in step S860 starts the rendering by using the loaded program and data. OpenGL ES 2.0 응용프로그램 인터페이스에서는 glDrawArray, glDrawElement 등이 이에 해당한다. The OpenGL ES 2.0 application interface and the like glDrawArray, glDrawElement thereto.

상술한 바와 같이, 본 발명에 따른 임베디드 시스템은 사용자가 3차원 데이터를 처리하는 프로그램을 개발하고 그래픽스 하드웨어에 전송하며 그래픽스 하드웨어에서는 사용자가 전송한 프로그램을 사용하여 정점과 픽셀들을 처리할 수 있다. As described above, the embedded system according to the present invention, the user can process the vertex and pixel develop a program for processing three-dimensional data and transmitted to the graphics hardware, and the hardware graphics using a program by the user is transmitted.

또한, 본 발명은 기본의 복잡한 조명 계산이나 좌표 변환 연산이 필요하지 않은 경우 이를 생략하여 3차원 그래픽 연산의 속도를 향상시킬 수 있다. The invention may also be the case that does not require complex lighting calculation and coordinate transformation operation to the base omitted to speed up the three-dimensional graphics operations.

또한, 버텍스 변환 과정에 있어서 사인 함수, 코사인 함수, 로그 함수, 지수 함수 등의 적용이 가능함에 따라, 평면 상의 정점 데이터들을 이용하여 다양한 면 을 표현할 수 있다. In addition, it is possible to express a variety of surfaces using the vertex data in the plane in accordance with the application, such as the sine function, the cosine function, a logarithmic function, an exponential function is possible in the vertex transformation.

또한, OpenGL ES 2.0 고수준 쉐이더 응용프로그램 인터페이스 구조에 따라 시스템 메모리의 구조를 개발하여, 버텍스 쉐이더, 프래그먼트 쉐이더 이외에 그래픽스 하드웨어의 고정된 기능을 대체할 수 있는 쉐이더 또는 OpenGL ES의 확장에 대해서도 적용이 가능하다. Also, OpenGL ES 2.0 High Level Shader to develop a structure of a system memory in accordance with the application interface structure, the vertex shader, fragment shader addition can be applied to a shader, or an extension of OpenGL ES that can replace the fixed capabilities of graphics hardware .

상기에서는 본 발명의 바람직한 실시예를 참조하여 설명하였지만, 해당 기술 분야에서 통상의 지식을 가진 자라면 하기의 특허 청구의 범위에 기재된 본 발명의 사상 및 영역으로부터 벗어나지 않는 범위 내에서 본 발명을 다양하게 수정 및 변경시킬 수 있음을 이해할 수 있을 것이다. Wherein the varying of the invention within that range departing from the spirit and scope of the invention as set forth in the claims below has been described with reference to a preferred embodiment of the invention, those skilled in the art it will be appreciated that modifications and can be changed.

Claims (11)

  1. 프로그래밍 가능한 쉐이더(programmable shader) 기반의 그래픽 연산을 지원하는 임베디드 시스템(embedded system)에 있어서, In a programmable shader (programmable shader) based embedded systems supporting graphics operations (embedded system),
    응용프로그램 인터페이스(Application Program Interface)를 통해 입력된 하나 이상의 쉐이더 프로그램을 링크(link)하여 생성된 하나 이상의 프로그램 및 데이터를 저장하는 시스템 메모리; Application Program Interface (Application Program Interface) system for storing one or more programs and data generated by one or more shader program input to link (link) through a memory; And
    상기 하나 이상의 프로그램 및 데이터 중에서 상기 응용프로그램 인터페이스에 의해 선택되는 프로그램 및 데이터를 적재하여 실행하는 그래픽스 하드웨어(graphics hardware)를 포함하는 임베디드 시스템. An embedded system that includes a graphics hardware (graphics hardware) executing the loaded programs and data that are selected by the application program interface from the one or more programs and data.
  2. 제1항에 있어서, 상기 시스템 메모리는 The method of claim 1 wherein the system memory includes
    상기 쉐이더 프로그램을 구분짓는 쉐이더 식별정보, 상기 쉐이더 프로그램의 소스인 쉐이더 프로그램 소스(shader program source), 상기 쉐이더 프로그램 소스가 컴파일된 결과인 컴파일 코드 및 상기 쉐이더 프로그램 소스에 선언된 상수를 저장하는 하나 이상의 쉐이더 객체 영역; At least one for storing the constant declarations in shader identification information, wherein the source of the shader program source of the shader program (shader program source), the shader program source is compiled result of the compiled code, and the shader program source that distinguishes the shader program. shader object region; And
    상기 프로그램을 구성하는 하나 이상의 상기 쉐이더 프로그램의 각 상기 쉐이더 식별정보, 상기 쉐이더 식별정보에 상응하는 상기 하나 이상의 쉐이더 객체 영역의 컴파일 코드를 링크하여 생성되는 상기 프로그램 및 상기 프로그램의 실행 시 참조되는 데이터를 저장하는 프로그램 객체 영역을 포함하는 임베디드 시스템. The program and data that is referenced during execution of the program that is generated to link each of the shader identification information, compiled code of the at least one shader object area corresponding to the shader identification information of one or more of the shader program constituting the program embedded system that includes a storage area for the program object.
  3. 제2항에 있어서, 상기 쉐이더 객체 영역은 The method of claim 2, wherein the shader object region
    상기 쉐이더 식별정보를 저장하는 식별 영역; Identification area storing the identification information shader;
    상기 쉐이더 프로그램 소스를 저장하는 소스 영역; A source region which stores the shader program source;
    상기 컴파일 코드를 저장하는 코드 영역; Code area for storing the compiled code; And
    상기 상수를 저장하는 상수 영역을 포함하는 임베디드 시스템. An embedded system including a constant area for storing the constants.
  4. 제3항에 있어서, 4. The method of claim 3,
    상기 식별 영역은 정수형 저장영역이고, 상기 쉐이더 식별정보는 상기 쉐이더 객체 영역 간의 서로 중복되지 않는 정수값인 임베디드 시스템. The identification area is an integer storage, the shader identification information is an integer value of embedded systems that do not overlap each other between the shader object region.
  5. 제3항에 있어서, 4. The method of claim 3,
    상기 상수 영역은 실수배열형 저장영역인 임베디드 시스템. The constant region is a real array type storage area of ​​embedded systems.
  6. 제2항에 있어서, 상기 프로그램 객체 영역은 The method of claim 2, wherein the program object area
    하나 이상의 상기 쉐이더 식별정보를 저장하는 쉐이더 식별 영역; Shader identification area storing at least one shader the identification information;
    상기 프로그램을 저장하는 프로그램 영역; A program area storing the program; And
    상기 데이터를 저장하는 데이터 영역을 포함하는 임베디드 시스템. Embedded system comprising: a data area storing the data.
  7. 제6항에 있어서, 7. The method of claim 6,
    상기 쉐이더 식별 영역은 정수배열형 저장영역이고, 상기 쉐이더 식별정보는 각 쉐이더 간에 중복되지 않는 정수형 값인 임베디드 시스템. The shader identification area is an integer array type storage area, and wherein the shader identification information is an integer value of embedded systems that do not overlap between each shader.
  8. 제6항에 있어서, 7. The method of claim 6,
    상기 프로그램 영역은 이진데이터형 저장영역이고, 상기 프로그램은 상기 컴파일 코드가 링크된 기계어 코드인 임베디드 시스템. The program area has a binary data type, storage area, and the program is embedded machine code system to which the compiled code link.
  9. 제6항에 있어서, 7. The method of claim 6,
    상기 데이터 영역은 실수배열형 저장영역이고, 상기 데이터는 상기 쉐이더 객체 영역의 상수를 포함하는 임베디드 시스템. And the data area is a real array type storage, the data is an embedded system that includes a constant of the shader object region.
  10. 제6항에 있어서, 7. The method of claim 6,
    상기 프로그램 객체 영역은 둘 이상이고, 상기 프로그램 객체 영역 간의 서로 중복되지 않는 정수값인 프로그램 식별정보를 저장하는 프로그램 식별 영역을 포함하는 임베디드 시스템. The program object area is two or more, embedded systems, including a program identification area for storing a program identification integer values ​​do not overlap each other between the program object area information.
  11. 제1항에 있어서, 상기 그래픽스 하드웨어는 The method of claim 1, wherein the graphics hardware is
    상기 하나 이상의 프로그램 중에서 선택된 프로그램을 적재하는 응용프로그램 영역; Application areas for loading the selected program from among the one or more programs;
    상기 선택된 프로그램에 상응하는 데이터를 적재하는 데이터 영역; Data area for loading the data corresponding to the selected program; And
    상기 응용프로그램 영역에 적재된 프로그램이 상기 데이터 영역에 적재된 데이터를 참조하여 정해진 동작을 수행한 결과를 외부로 출력하는 출력 데이터 영역을 포함하는 임베디드 시스템. An embedded system in which a program is loaded in the application area includes an output data area and outputting the result of performing the predetermined operation with reference to the data loaded into the data area to the outside.
KR1020050128563A 2005-12-23 2005-12-23 Embedded system of supporting graphics operation based on programmable shader KR100696198B1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020050128563A KR100696198B1 (en) 2005-12-23 2005-12-23 Embedded system of supporting graphics operation based on programmable shader

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020050128563A KR100696198B1 (en) 2005-12-23 2005-12-23 Embedded system of supporting graphics operation based on programmable shader

Publications (1)

Publication Number Publication Date
KR100696198B1 true KR100696198B1 (en) 2007-03-20

Family

ID=41563470

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020050128563A KR100696198B1 (en) 2005-12-23 2005-12-23 Embedded system of supporting graphics operation based on programmable shader

Country Status (1)

Country Link
KR (1) KR100696198B1 (en)

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004054891A (en) 2002-07-16 2004-02-19 Microsoft Corp System and method for providing intermediate targets in graphics system
KR20040059241A (en) * 2002-12-28 2004-07-05 원태영 System and method of three and two dimensional graphic display for lcd simulation
KR20050054730A (en) * 2003-12-05 2005-06-10 한국전자통신연구원 Hdri-based shaders with color temperature control
KR20050064580A (en) * 2003-12-24 2005-06-29 한국전자통신연구원 3d graphic plug-in system and the method using hardware shader

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004054891A (en) 2002-07-16 2004-02-19 Microsoft Corp System and method for providing intermediate targets in graphics system
KR20040059241A (en) * 2002-12-28 2004-07-05 원태영 System and method of three and two dimensional graphic display for lcd simulation
KR20050054730A (en) * 2003-12-05 2005-06-10 한국전자통신연구원 Hdri-based shaders with color temperature control
KR20050064580A (en) * 2003-12-24 2005-06-29 한국전자통신연구원 3d graphic plug-in system and the method using hardware shader

Similar Documents

Publication Publication Date Title
EP1594091B1 (en) System and method for providing an enhanced graphics pipeline
JP4890638B2 (en) Method and apparatus for processing a direct and indirect texture in a graphics system
US8698837B2 (en) Path rendering with path clipping
US7646388B2 (en) Systems and methods for reducing redundant checks on graphics memory
US6891533B1 (en) Compositing separately-generated three-dimensional images
US8154554B1 (en) Unified assembly instruction set for graphics processing
KR101784671B1 (en) Patched shading in graphics processing
EP1485874B1 (en) System, method and computer program product for generating a shader program
US6664958B1 (en) Z-texturing
EP2033085B1 (en) Fast reconfiguration of graphics pipeline state
EP1070301B1 (en) System and method for high-speed execution of graphics application programs including shading language instructions
US7034828B1 (en) Recirculating shade tree blender for a graphics system
US5808620A (en) System and method for displaying shadows by dividing surfaces by occlusion into umbra penumbra, and illuminated regions from discontinuity edges and generating mesh
US10089774B2 (en) Tessellation in tile-based rendering
Fuchs et al. Pixel-planes 5: a heterogeneous multiprocessor graphics system using processor-enhanced memories
US7015909B1 (en) Efficient use of user-defined shaders to implement graphics operations
US7728841B1 (en) Coherent shader output for multiple targets
Rost et al. OpenGL shading language
US7006101B1 (en) Graphics API with branching capabilities
US7952583B2 (en) Quasi-monte carlo light transport simulation by efficient ray tracing
US6741259B2 (en) Applying multiple texture maps to objects in three-dimensional imaging processes
US7659902B2 (en) API communications for vertex and pixel shaders
CN103959337B (en) Switching between graphics processing and the sub-grid is presented directly
JP3966832B2 (en) Drawing processor, and, drawing processing method
JP4658378B2 (en) Method and apparatus for bump mapping imprinted environmental in graphics system

Legal Events

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

Payment date: 20130221

Year of fee payment: 7

FPAY Annual fee payment

Payment date: 20140303

Year of fee payment: 8

FPAY Annual fee payment

Payment date: 20150302

Year of fee payment: 9

FPAY Annual fee payment

Payment date: 20180226

Year of fee payment: 12

FPAY Annual fee payment

Payment date: 20190225

Year of fee payment: 13