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
program
shader
area
data
storing
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 OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Image Generation (AREA)

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 system of supporting graphics operation based on programmable shader

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

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

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

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

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

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

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

도 8은 본 발명의 바람직한 일 실시예에 따른 메모리 연산 방법의 흐름도.8 is a flow chart of a memory operation method in accordance with one preferred embodiment of the present invention.

<도면의 주요부분에 대한 부호의 설명><Description of the symbols for the main parts of the drawings>

500 : 시스템 메모리500: system memory

510a, 510b : 쉐이더 객체 영역510a, 510b: shader object area

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

300 : 그래픽스 하드웨어300: graphics hardware

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

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

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

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

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

도 1을 참조하면, OpenGL ES 1.x에 따라 3차원 데이터를 처리하게 된다. Referring to FIG. 1, 3D data is processed according to OpenGL ES 1.x.

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

응용프로그램 인터페이스(100)는 정점 데이터, 상태 데이터들을 지정하고 렌더링(rendering) 명령을 내리는 인터페이스이다. 렌더링이라 함은 평면인 그림에 형태ㅇ위치ㅇ조명 등 외부의 정보에 따라 다르게 나타나는 그림자ㅇ색상ㅇ농도 등을 고려하면서 실감나는 을 만들어내는 과정 또는 그러한 기법을 의미한다. 표현하고자 하는 사물의 모양을 삼각형 형태의 폴리곤 집합으로 구분하고, 폴리곤을 구성하는 3개의 정점 데이터를 후술할 과정을 거쳐 처리함으로써 3차원 화상을 만들어낸다.The application program interface 100 is an interface for specifying vertex data and state data and giving a rendering command. Rendering refers to a process or a technique for creating realistic images while considering shadows and color concentrations that appear differently depending on external information such as shape, position, and lighting in a flat picture. The shape of the object to be expressed is divided into triangular polygon sets, and the three vertex data constituting the polygon is processed through a process to be described later to create a three-dimensional image.

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

변환 및 조명 효과 모듈(215)은 프리미티브 프로세성 모듈(210)에서 생성한 점들에 대해 행렬연산을 통해 화면 상에서의 위치를 결정하고 조명 모델(예를 들어, phong illlumination model 등)에 따라 점의 밝기를 결정한다. The transform and light effects module 215 determines the location on the screen through matrix operations for the points generated by the primitive processor module 210 and the brightness of the points according to the lighting model (eg, phong illlumination model, etc.). Determine.

그리고 프리미티브 어셈블리(Primitive Assembly) 모듈(220)은 변환 및 조명 계산이 끝난 점들을 모아서 삼각형을 구성한다. 래스터라이저(Rasterizer; 225)는 삼각형이 화면에서 차지하는 픽셀(pixel)들을 결정한다. The primitive assembly module 220 collects the converted points and the lighting calculations to form a triangle. Rasterizer 225 determines the pixels that the triangle occupies on the screen.

그리고 지정된 상태 정보에 따라 텍스처 연산(Texture Environment) 모듈(230)은 텍스처 이미지에서 색상정보를 가져와 각 픽셀의 색상을 결정하고, 색상 합계(Color Sum) 모듈(235)은 확산(diffuse), 반사(specular) 색상값을 더하며, 안 개 효과(Fog) 모듈(240)은 거리가 멀수록 안개색을 섞는다. 이를 통해 각 픽셀은 최종 색상을 가지게 된다. The texture environment module 230 obtains color information from the texture image and determines the color of each pixel according to the designated state information, and the color sum module 235 diffuses and reflects the color information. specular) color values, and the fog module 240 mixes fog colors as the distance increases. This ensures that each pixel has a final color.

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

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

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

여기서, 변환 및 조명 효과 영역(66)에 저장된 미리 고정된 제1 함수(fixed function)(예를 들어, 연산을 위한 행렬 등)에 의해 변환 및 조명 효과 모듈(215)에서의 동작이 결정된다. 그리고 텍스처 연산/색상 합계/안개 효과 영역(69)에 저장된 미리 고정된 제2 함수에 의해 텍스처 연산 모듈(230), 색상 합계 모듈(235), 안개 효과 모듈(240)에서의 동작이 결정된다. Here, the operation in the transform and light effect module 215 is determined by a first fixed function (eg, a matrix for operation, etc.) stored in the transform and light effect area 66. Then, the operations in the texture calculation module 230, the color sum module 235, and the fog effect module 240 are determined by the second fixed function stored in the texture calculation / color sum / fog effect area 69.

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

따라서, 사용자는 그래픽스 하드웨어에서 제공하는 기능만을 이용하여 3차원 그래픽을 표현해야 하는 제약이 발생한다. 그리고 사용자가 다른 변환 및 조명 효과를 얻고자 한다면 그래픽스 하드웨어 자체를 변경하거나 변환 및 조명 효과 영역(66)에 저장되는 제1 함수를 변경해야 하는 문제점이 있다. 또한, 행렬 연산은 평면 상의 각 점을 또 다른 평면 상의 점으로 대칭시킬 뿐이며, 평면이 아닌 새로운 면(예를 들어, 깃발이 펄럭이거나 물이 일렁이는 때의 표면)으로는 대칭이 불가능한 문제점이 있다. Therefore, the user is limited to expressing 3D graphics using only functions provided by the graphics hardware. In addition, if the user wants to obtain another transformation and lighting effect, there is a problem of changing the graphics hardware itself or changing the first function stored in the transformation and lighting effect area 66. In addition, the matrix operation only mirrors each point on the plane to a point on another plane, and there is a problem that symmetry is not possible with a new plane that is not a plane (for example, when a flag is fluttering or water is waving).

따라서, 사용자가 3차원 데이터를 처리하는 프로그램을 개발하고 그래픽스 하드웨어에 전송하며 그래픽스 하드웨어에서는 사용자가 전송한 프로그램을 사용하여 정점(vertex)과 픽셀들을 처리할 수 있도록 하고자 OpenGL ES 2.0에서는 프로그래밍 가능한 쉐이더(programmable shader) 구조를 제안하고 있다. OpenGL ES 2.0을 지원하는 그래픽스 하드웨어는 도 2에 도시된 메모리 구조가 적합하지 않으므로 새로운 메모리 구조가 필요하다. Therefore, in OpenGL ES 2.0, you can develop a program that processes three-dimensional data, send it to graphics hardware, and in graphics hardware, use a program that you send to process vertices and pixels. We propose a programmable shader structure. Graphics hardware that supports OpenGL ES 2.0 requires a new memory structure because the memory structure shown in FIG. 2 is not suitable.

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

또한, 본 발명은 기본의 복잡한 조명 계산이나 좌표 변환 연산이 필요하지 않은 경우 이를 생략하여 3차원 그래픽 연산의 속도를 향상시킬 수 있는 임베디드 시스템을 제공한다.In addition, the present invention provides an embedded system that can improve the speed of the three-dimensional graphics operation by eliminating the basic complex lighting calculation or coordinate conversion calculation if it is not necessary.

본 발명의 이외의 목적들은 하기의 설명을 통해 쉽게 이해될 수 있을 것이다. Other objects of the present invention will be readily understood through the following description.

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

바람직하게는, 상기 시스템 메모리는 상기 쉐이더 프로그램을 구분짓는 쉐이더 식별정보, 상기 쉐이더 프로그램의 소스인 쉐이더 프로그램 소스(shader program source), 상기 쉐이더 프로그램 소스가 컴파일된 결과인 컴파일 코드 및 상기 쉐이더 프로그램 소스에 선언된 상수를 저장하는 하나 이상의 쉐이더 객체 영역; 및 상기 프로그램을 구성하는 하나 이상의 상기 쉐이더 프로그램의 각 상기 쉐이더 식별정보, 상기 쉐이더 식별정보에 상응하는 상기 하나 이상의 쉐이더 객체 영역의 컴파일 코드를 링크하여 생성되는 상기 프로그램 및 상기 프로그램의 실행시 참조되는 데이터를 저장하는 프로그램 객체 영역을 포함할 수 있다.Preferably, the system memory includes shader identification information for identifying the shader program, a shader program source that is a source of the shader program, compiled code that is a result of the shader program source being compiled, and the shader program source. One or more shader object areas that store declared constants; And the program generated by linking each of the shader identification information of the one or more shader programs constituting the program and the compilation code of the one or more shader object regions corresponding to the shader identification information, and data referenced when the program is executed. It may include a program object area for storing the.

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

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

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

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

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

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

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

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

프로그래밍 가능한 쉐이더 구조는 OpenGL ES 2.0에서 제안하고 있다. 도 1에 도시된 변환 및 조명 효과 모듈(215)을 버텍스 쉐이더(Vertex Shader; 310)로, 텍스처 연산 모듈(230), 색상 합계 모듈(235), 안개 효과 모듈(240)을 프래그먼트 쉐이더(Fragment Shader; 320)로 대체한다. 즉, 본 발명에 따르는 그래픽스 하드웨어(300)는 도 1에 도시된 그래픽스 하드웨어(200)와 달리 버텍스 쉐이더(310) 및 프래그먼트 쉐이더(320)를 적재한다. 여기서, 버텍스 쉐이더(310), 프래그먼트 쉐이더(320)는 사용자가 고수준(high-level) 언어로 프로그래밍이 가능한 쉐이더 구조를 가진다. 대체된 버텍스 쉐이더(310), 프래그먼트 쉐이더(320)는 그래픽스 하드웨어(300)의 고정된 기능 대신에 사용자가 개발한 프로그램을 수행함으로써 자유롭게 3차원 그래픽 표현을 할 수 있다. Programmable shader structures are proposed in OpenGL ES 2.0. The transform and light effect module 215 shown in FIG. 1 is a vertex shader 310, and the texture calculation module 230, the color sum module 235, and the fog effect module 240 are fragment shaders. ; 320). That is, the graphics hardware 300 according to the present invention, unlike the graphics hardware 200 illustrated in FIG. 1, loads the vertex shader 310 and the fragment shader 320. Here, the vertex shader 310 and the fragment shader 320 have a shader structure that the user can program in a high-level language. The replaced vertex shader 310 and the fragment shader 320 may freely express 3D graphics by executing a user-developed program instead of the fixed function of the graphics hardware 300.

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

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

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

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

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

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

깃발을 나타내는 평면 상의 정점 데이터들이 있는 경우를 예로 든다. 기존에 는 행렬연산 밖에 되지 않아 평면은 또다른 평면으로만 변환이 이루어지게 되고, 따라서 깃발이 펄럭이는 형태의 3차원 형상을 구현할 수 없었다. 하지만, 버텍스 쉐이더(310)를 이용하여 사인(sine) 함수, 코사인(cosine) 함수, 로그(log) 함수, 지수(exponential) 함수에 의해 각 정점 데이터들이 변환되도록 하면 기존과 달리 복잡한 형태의 변환이 가능하게 되어 깃발이 펄럭이는 형태의 3차원 형상이 구현될 수 있다.For example, there is vertex data on a plane representing a flag. Conventionally, only the matrix operation is used, so that the plane is transformed into another plane only, and thus the three-dimensional shape of the flag fluttering could not be realized. However, if the vertex shader 310 is used to transform each vertex data by a sine function, cosine function, log function, and exponential function, a complex form of conversion It is possible to implement a three-dimensional shape in the form of a flag fluttering.

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

OpenGL ES 2.0에 의할 때 프로그래밍 가능한 쉐이더를 사용하기 위해서 쉐이더 객체(shader object)와 프로그램 객체(program object)의 두 종류의 객체를 사용한다. 쉐이더 객체는 버텍스 쉐이더 또는 프래그먼트 쉐이더 모듈을 나타내고, 쉐이더 프로그램 소스(shader source)와 그 컴파일 결과를 저장한다. 프로그램 객체는 버텍스 쉐이더와 프래그먼트 쉐이더로 이루어진 단일 실행 단위의 쉐이더 프로그램을 나타내고, 쉐이더 프로그램을 구성하는 하나 이상의 쉐이더 객체를 링크(link)시켜 단일 실행 단위의 실행 코드를 생성하고 저장한다. When using OpenGL ES 2.0, two kinds of objects are used, shader objects and program objects, to use programmable shaders. The shader object represents a vertex shader or fragment shader module and stores the shader program source and its compilation result. A program object represents a shader program of a single execution unit consisting of vertex shaders and fragment shaders. Linking one or more shader objects forming a shader program generates and stores execution code of a single execution unit.

응용프로그램 인터페이스(410)는 쉐이더 객체, 프로그램 객체를 생성 및 관리하고, 그래픽스 하드웨어(300)에 적합한 데이터와 명령 즉, 쉐이더 프로그램을 전달하는 기능들로 이루어진다. The application program interface 410 is composed of functions for creating and managing shader objects and program objects, and for delivering data and instructions, that is, shader programs suitable for the graphics hardware 300.

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

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

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

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

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

시스템 메모리(500)는 하나 이상의 쉐이더 객체 영역(510a, 510b)과 프로그램 객체 영역(520)을 포함한다. 도 5에서는 2개의 쉐이더 객체 영역(510a, 510b)이 있는 것으로 가정하지만, 이에 한정되지 않고 여러 개의 쉐이더 객체 영역이 있을 수 있다. 쉐이더 객체 영역(510a, 510b)은 모두 동일한 구조를 가지고 있는 바 이하에서는 쉐이더 객체 영역(510a)에 대해서 설명한다. The system memory 500 includes one or more shader object areas 510a and 510b and a program object area 520. In FIG. 5, it is assumed that there are two shader object regions 510a and 510b, but the present invention is not limited thereto and there may be several shader object regions. The shader object regions 510a and 510b have the same structure. Hereinafter, the shader object regions 510a will be described.

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

식별 영역(512a)은 각각의 쉐이더 객체를 구별할 수 있는 쉐이더 식별정보를 저장한다. 쉐이더 식별정보는 각 쉐이더 객체 간의 구분을 위해 서로 중복되지 않는 정수형 값이다. 따라서, 식별 영역(512a)는 정수형 저장 영역인 것이 바람직하다. 쉐이더 프로그램이 하나인 경우에는 구별이 필요없으므로, 식별 영역(512a)이 쉐이더 객체 영역(510) 내에 할당되지 않을 수 있다. The identification area 512a stores shader identification information for distinguishing each shader object. The shader identification information is an integer value that does not overlap each other to distinguish between shader objects. Therefore, the identification area 512a is preferably an integer storage area. If there is only one shader program, no distinction is required, and thus the identification area 512a may not be allocated in the shader object area 510.

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

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

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

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

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

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

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

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

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

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

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

데이터 영역(528)은 프로그램을 구성하는 각 쉐이더 객체 영역(510a 또는 510b)의 상수 영역(518a 또는 518b)에 저장된 상수들 및/또는 프로그램이 그래픽스 하드웨어(300)에서 동작시에 참조하는 데이터를 저장한다. 상수들 또는 데이터는 자연수, 정수, 실수 등이 가능하나, 가장 넓은 범위를 담당할 수 있는 실수형인 것이 바람직하다. 따라서, 데이터 영역(528)은 여러 개의 상수 또는 데이터가 저장되도록 실수배열형 저장영역인 것이 바람직하다. 프로그램 객체 영역(520)의 쉐이더 식별 영역(524)에 저장된 쉐이더 식별정보로부터 해당 쉐이더 객체 영역(510a 또는 510b)에 억세스하여 상수 영역(518a 또는 518b)에 저장된 상수들을 읽어온다.The data area 528 stores constants stored in the constant area 518a or 518b of each shader object area 510a or 510b constituting the program and / or data that the program refers to when operating in the graphics hardware 300. do. Constants or data can be natural numbers, integers, real numbers, etc., but are preferably real numbers that can cover the widest range. Therefore, the data area 528 is preferably a real array storage area so that several constants or data can be stored. The shader identification information stored in the shader identification area 524 of the program object area 520 is accessed to read the constants stored in the constant area 518a or 518b by accessing the corresponding shader object area 510a or 510b.

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

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

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

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

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

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

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

상술한 단계 S610 내지 S630을 통해 특정 쉐이더 프로그램이 해당하는 하나의 쉐이더 객체 영역(510a)이 생성된다. 사용자가 입력하는 쉐이더 프로그램 소스마다 단계 S610 내지 S630을 반복하여 다수의 쉐이더 객체 영역(510a 또는 510b)을 생성할 수 있다. One shader object area 510a corresponding to a specific shader program is generated through the above-described steps S610 to S630. A plurality of shader object areas 510a or 510b may be generated by repeating steps S610 to S630 for each shader program source input by a user.

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

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

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

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

상술한 단계 S710 내지 S740을 통해 특정 프로그램이 해당하는 하나의 프로그램 객체 영역(520)이 생성된다. 단계 S710 내지 S740을 반복하여 다수의 프로그램 객체 영역(520)을 생성할 수 있다. One program object area 520 corresponding to a specific program is generated through the above-described steps S710 to S740. The plurality of program object areas 520 may be generated by repeating steps S710 to S740.

도 8을 참조하면, 단계 S810에서 하나 이상의 쉐이더 객체 영역(510a 또는 510b)을 생성한다. 이에 대해서는 앞서 설명한 바와 같이 도 6에 상세히 도시되어 있다. Referring to FIG. 8, in operation S810, one or more shader object regions 510a or 510b are generated. This is illustrated in detail in FIG. 6 as described above.

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

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

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

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

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

또한, 본 발명은 기본의 복잡한 조명 계산이나 좌표 변환 연산이 필요하지 않은 경우 이를 생략하여 3차원 그래픽 연산의 속도를 향상시킬 수 있다. In addition, the present invention can improve the speed of the three-dimensional graphics operation by omitting this if the basic complex lighting calculation or coordinate transformation operation is not necessary.

또한, 버텍스 변환 과정에 있어서 사인 함수, 코사인 함수, 로그 함수, 지수 함수 등의 적용이 가능함에 따라, 평면 상의 정점 데이터들을 이용하여 다양한 면 을 표현할 수 있다. In addition, as the sine function, cosine function, logarithmic function, and exponential function can be applied in the vertex transformation process, various planes can be represented using vertex data on a plane.

또한, OpenGL ES 2.0 고수준 쉐이더 응용프로그램 인터페이스 구조에 따라 시스템 메모리의 구조를 개발하여, 버텍스 쉐이더, 프래그먼트 쉐이더 이외에 그래픽스 하드웨어의 고정된 기능을 대체할 수 있는 쉐이더 또는 OpenGL ES의 확장에 대해서도 적용이 가능하다. In addition, by developing the structure of system memory according to the OpenGL ES 2.0 high-level shader application program interface, it is possible to apply to extensions of OpenGL ES or shaders that can replace fixed functions of graphics hardware in addition to vertex shaders and fragment shaders. .

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

Claims (11)

프로그래밍 가능한 쉐이더(programmable shader) 기반의 그래픽 연산을 지원하는 임베디드 시스템(embedded system)에 있어서,In an embedded system that supports graphical shader-based graphics operations, 응용프로그램 인터페이스(Application Program Interface)를 통해 입력된 하나 이상의 쉐이더 프로그램을 링크(link)하여 생성된 하나 이상의 프로그램 및 데이터를 저장하는 시스템 메모리; 및A system memory configured to store one or more programs and data generated by linking one or more shader programs input through an application program interface; And 상기 하나 이상의 프로그램 및 데이터 중에서 상기 응용프로그램 인터페이스에 의해 선택되는 프로그램 및 데이터를 적재하여 실행하는 그래픽스 하드웨어(graphics hardware)를 포함하는 임베디드 시스템.Embedded graphics comprising graphics hardware to load and execute a program and data selected by the application program interface from among the one or more programs and data. 제1항에 있어서, 상기 시스템 메모리는 The system of claim 1, wherein the system memory is 상기 쉐이더 프로그램을 구분짓는 쉐이더 식별정보, 상기 쉐이더 프로그램의 소스인 쉐이더 프로그램 소스(shader program source), 상기 쉐이더 프로그램 소스가 컴파일된 결과인 컴파일 코드 및 상기 쉐이더 프로그램 소스에 선언된 상수를 저장하는 하나 이상의 쉐이더 객체 영역; 및At least one shader identification information for identifying the shader program, a shader program source that is a source of the shader program, compiled code that is a result of the shader program source being compiled, and a constant declared in the shader program source Shader object area; And 상기 프로그램을 구성하는 하나 이상의 상기 쉐이더 프로그램의 각 상기 쉐이더 식별정보, 상기 쉐이더 식별정보에 상응하는 상기 하나 이상의 쉐이더 객체 영역의 컴파일 코드를 링크하여 생성되는 상기 프로그램 및 상기 프로그램의 실행 시 참조되는 데이터를 저장하는 프로그램 객체 영역을 포함하는 임베디드 시스템.The program generated by linking the shader identification information of the one or more shader programs constituting the program and the compilation code of the one or more shader object regions corresponding to the shader identification information, and data referred to when the program is executed. Embedded system that includes a program object area for storing. 제2항에 있어서, 상기 쉐이더 객체 영역은 The method of claim 2, wherein the shader object area is 상기 쉐이더 식별정보를 저장하는 식별 영역;An identification area for storing the shader identification information; 상기 쉐이더 프로그램 소스를 저장하는 소스 영역;A source area for storing the shader program source; 상기 컴파일 코드를 저장하는 코드 영역; 및 A code area for storing the compiled code; And 상기 상수를 저장하는 상수 영역을 포함하는 임베디드 시스템.Embedded system including a constant region for storing the constant. 제3항에 있어서, The method of claim 3, 상기 식별 영역은 정수형 저장영역이고, 상기 쉐이더 식별정보는 상기 쉐이더 객체 영역 간의 서로 중복되지 않는 정수값인 임베디드 시스템.And the identification area is an integer storage area, and the shader identification information is an integer value that does not overlap each other between the shader object areas. 제3항에 있어서, The method of claim 3, 상기 상수 영역은 실수배열형 저장영역인 임베디드 시스템.And the constant region is a real array storage region. 제2항에 있어서, 상기 프로그램 객체 영역은 The method of claim 2, wherein the program object area is 하나 이상의 상기 쉐이더 식별정보를 저장하는 쉐이더 식별 영역;A shader identification area for storing one or more shader identification information; 상기 프로그램을 저장하는 프로그램 영역; 및A program area for storing the program; And 상기 데이터를 저장하는 데이터 영역을 포함하는 임베디드 시스템.Embedded system comprising a data area for storing the data. 제6항에 있어서, The method of claim 6, 상기 쉐이더 식별 영역은 정수배열형 저장영역이고, 상기 쉐이더 식별정보는 각 쉐이더 간에 중복되지 않는 정수형 값인 임베디드 시스템.The shader identification area is an integer array type storage area, and the shader identification information is an integer value that does not overlap between each shader. 제6항에 있어서,The method of claim 6, 상기 프로그램 영역은 이진데이터형 저장영역이고, 상기 프로그램은 상기 컴파일 코드가 링크된 기계어 코드인 임베디드 시스템.The program region is a binary data type storage region, and the program is a machine language code to which the compiled code is linked. 제6항에 있어서, The method of claim 6, 상기 데이터 영역은 실수배열형 저장영역이고, 상기 데이터는 상기 쉐이더 객체 영역의 상수를 포함하는 임베디드 시스템.And the data area is a real array storage area, and the data includes constants of the shader object area. 제6항에 있어서, The method of claim 6, 상기 프로그램 객체 영역은 둘 이상이고, 상기 프로그램 객체 영역 간의 서로 중복되지 않는 정수값인 프로그램 식별정보를 저장하는 프로그램 식별 영역을 포함하는 임베디드 시스템.And at least two program object regions, and a program identification region for storing program identification information which is an integer value which does not overlap each other between the program object regions. 제1항에 있어서, 상기 그래픽스 하드웨어는The system of claim 1, wherein the graphics hardware is 상기 하나 이상의 프로그램 중에서 선택된 프로그램을 적재하는 응용프로그램 영역;An application program area for loading a program selected from the one or more programs; 상기 선택된 프로그램에 상응하는 데이터를 적재하는 데이터 영역; 및A data area for loading data corresponding to the selected program; And 상기 응용프로그램 영역에 적재된 프로그램이 상기 데이터 영역에 적재된 데이터를 참조하여 정해진 동작을 수행한 결과를 외부로 출력하는 출력 데이터 영역을 포함하는 임베디드 시스템.And an output data area configured to output a result of performing a predetermined operation by the program loaded in the application program area with reference to the data loaded in the data area.
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
CN108701366B (en) Method, apparatus, and readable storage medium for start node determination for tree traversal of shadow rays in graphics processing
WO2022193941A1 (en) Image rendering method and apparatus, device, medium, and computer program product
CN110084875B (en) Using a compute shader as a front-end for a vertex shader
EP3489907B1 (en) Shader program execution techniques for use in graphics processing
Wolff OpenGL 4.0 shading language cookbook
US7394464B2 (en) Preshaders: optimization of GPU programs
US9251551B2 (en) Bindless memory access in direct 3D
US8289341B2 (en) Texture sampling
CN108701367B (en) Single pass bounding volume level rasterization
US10417791B2 (en) Multi-step texture processing with feedback in texture unit
CN111986279A (en) Techniques for efficiently accessing memory and avoiding unnecessary computations
CN113256764A (en) Rasterization device and method and computer storage medium
Angel et al. An interactive introduction to WEBGL and three. JS
CN113838180A (en) Rendering instruction processing method and related equipment thereof
CN116863052A (en) Map drawing method and device based on distributed operating system
KR100696198B1 (en) Embedded system of supporting graphics operation based on programmable shader
WO2023241210A1 (en) Method and apparatus for rendering virtual scene, and device and storage medium
CN118799471A (en) Material attribute storage method, device and equipment of BIM lightweight engine
Oliveira et al. Game Engine with 3D Graphics
Malizia Introduction to Mobile 3D Graphics with OpenGL® ES
Chen et al. Vertex Shading, Pixel Shading, and Parallel Processing
Golba Deferred rendering using Compute shaders

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

FPAY Annual fee payment

Payment date: 20200225

Year of fee payment: 14