KR100696198B1 - Embedded system of supporting graphics operation based on programmable shader - Google Patents
Embedded system of supporting graphics operation based on programmable shader Download PDFInfo
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/445—Program loading or initiating
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T1/00—General 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
Description
도 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
응용프로그램 인터페이스(100)는 정점 데이터, 상태 데이터들을 지정하고 렌더링(rendering) 명령을 내리는 인터페이스이다. 렌더링이라 함은 평면인 그림에 형태ㅇ위치ㅇ조명 등 외부의 정보에 따라 다르게 나타나는 그림자ㅇ색상ㅇ농도 등을 고려하면서 실감나는 을 만들어내는 과정 또는 그러한 기법을 의미한다. 표현하고자 하는 사물의 모양을 삼각형 형태의 폴리곤 집합으로 구분하고, 폴리곤을 구성하는 3개의 정점 데이터를 후술할 과정을 거쳐 처리함으로써 3차원 화상을 만들어낸다.The
정점 데이터는 버텍스 버퍼 객체(Vertex Buffer Objects; 205)에 저장되어 있다. 프리미티브 프로세싱(Primitive Processing) 모듈(210)은 버텍스 버퍼 객체(205)에 저장된 3차원 데이터로부터 변환 및 조명효과(Transform and Lighting)를 적용할 점들을 생성한다. 각 점들은 폴리곤을 구성하는 삼각형의 세 꼭지점이다. Vertex data is stored in Vertex
변환 및 조명 효과 모듈(215)은 프리미티브 프로세성 모듈(210)에서 생성한 점들에 대해 행렬연산을 통해 화면 상에서의 위치를 결정하고 조명 모델(예를 들어, phong illlumination model 등)에 따라 점의 밝기를 결정한다. The transform and
그리고 프리미티브 어셈블리(Primitive Assembly) 모듈(220)은 변환 및 조명 계산이 끝난 점들을 모아서 삼각형을 구성한다. 래스터라이저(Rasterizer; 225)는 삼각형이 화면에서 차지하는 픽셀(pixel)들을 결정한다. The
그리고 지정된 상태 정보에 따라 텍스처 연산(Texture Environment) 모듈(230)은 텍스처 이미지에서 색상정보를 가져와 각 픽셀의 색상을 결정하고, 색상 합계(Color Sum) 모듈(235)은 확산(diffuse), 반사(specular) 색상값을 더하며, 안 개 효과(Fog) 모듈(240)은 거리가 멀수록 안개색을 섞는다. 이를 통해 각 픽셀은 최종 색상을 가지게 된다. The
이후 각 픽셀은 알파값(투명도)가 사용자가 지정한 기준 이하이면 처리를 하지 않는 알파 테스트(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
도 2를 참조하면, 시스템 메모리(10)는 응용프로그램 인터페이스(100)에 의해 사용된다. 시스템 메모리(10)는 변환 상태 영역(13), 색상 상태 영역(16), 조명 상태 영역(19) 등으로 분할될 수 있다. 변환 상태 영역(13)을 보면, 모델 뷰 행렬(MODELVIEW_MATRIX), 투영 행렬(PROJECTION_MATRIX) 등 다양한 파라미터(parameter)들을 저장하고 있다. 시스템 메모리(10)의 각 상태 영역(13, 16, 19)은 사용자에 의해 파라미터의 변경이 가능하다. 각 파라미터에 의해 변환 상태 데이터, 색상 상태 데이터, 조명 상태 데이터가 결정된다. Referring to FIG. 2,
시스템 메모리(10)에 저장된 다양한 파라미터들의 값이 응용프로그램 인터페이스(100)의 지정에 따라 그래픽스 하드웨어(60)의 상태 영역(63)에 저장되고, 렌더링 명령에 따라 도 1에 도시된 각 모듈들이 상술한 바와 같이 각각의 동작을 수행한다. The values of various parameters stored in the
여기서, 변환 및 조명 효과 영역(66)에 저장된 미리 고정된 제1 함수(fixed function)(예를 들어, 연산을 위한 행렬 등)에 의해 변환 및 조명 효과 모듈(215)에서의 동작이 결정된다. 그리고 텍스처 연산/색상 합계/안개 효과 영역(69)에 저장된 미리 고정된 제2 함수에 의해 텍스처 연산 모듈(230), 색상 합계 모듈(235), 안개 효과 모듈(240)에서의 동작이 결정된다. Here, the operation in the transform and
변환 및 조명 효과 모듈(210)에서 변환은 행렬로만 표현될 수 있으며, 조명 효과를 위한 식은 그래픽스 하드웨어마다 이미 고정되어 있다. 사용자는 단지 시스템 메모리(10)의 각 상태 영역(13, 16, 19)에 저장되는 파라미터의 변경이 가능할 뿐이다. In the transformation and
따라서, 사용자는 그래픽스 하드웨어에서 제공하는 기능만을 이용하여 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
따라서, 사용자가 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
버텍스 쉐이더(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
프래그먼트 쉐이더(320)는 프래그먼트에 전달된 색상 및 텍스처 좌표 등의 정보를 이용하여 해당 프래그먼트의 색상을 결정한다. 프래그먼트는 래스터라이저(225)에 의해 결정된 픽셀들의 집합이다. 래스터라이저(225)는 3차원 화상이 표현될 화면 상에서 버텍스 쉐이더(310)에 의해 결정된 각 정점의 위치와 대응되는 각 픽셀들을 3개의 꼭지점으로 하는 삼각형 형태의 평면 내에 포함되는 픽셀들을 결정한다. The
프래그먼트 쉐이더(320)는 프래그먼트를 구성하는 3개의 꼭지점에 해당하는 정점 데이터에 포함된 색상, 텍스처 좌표 등을 이용하여 해당 프래그먼트의 색상을 결정하게 된다. The
도 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
깃발을 나타내는 평면 상의 정점 데이터들이 있는 경우를 예로 든다. 기존에 는 행렬연산 밖에 되지 않아 평면은 또다른 평면으로만 변환이 이루어지게 되고, 따라서 깃발이 펄럭이는 형태의 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
응용프로그램 인터페이스(410)는 3차원 데이터 처리 프로그램(410)을 그래픽스 하드웨어(420)가 처리할 수 있는 형태의 프로그램으로 번역한다. 그래픽스 하드웨어(420)가 처리할 수 있는 형태로는 이진데이터로 구성되는 기계어 코드(machine code)인 것이 바람직하다. 응용프로그램 인터페이스(410)는 OpenGL ES 2.0을 기반으로 하고 있으나, 추후 OpenGL ES의 확장에 대해서도 적용가능함은 물론이다. The
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
그래픽스 하드웨어(300)는 응용프로그램 인터페이스(410)로부터 버텍스 쉐이더 및/또는 프래그먼트 쉐이더에 상응하는 쉐이더 프로그램을 전달받고, 각 쉐이더를 실행시켜 렌더링 동작이 수행되도록 한다. 본 발명에 따른 그래픽스 하드웨어(300)는 각 쉐이더 프로그램을 전달받아 실행시킬 수 있는 프로그래밍 가능한 쉐이더 기반의 하드웨어인 것이 바람직하다. 또한, 그래픽스 하드웨어(300)는 쉐이더 프로그램을 실행시킬 때 필요한 데이터를 응용프로그램 인터페이스(410)로부터 전달받는다. The
상술한 과정에 의해 사용자가 프로그래밍한 효과를 연출할 수 있는 프로그래밍 가능한 쉐이더 기반의 그래픽스 하드웨어(300), 응용프로그램 인터페이스(410) 등은 도 2에 도시된 시스템 메모리(10)와는 다른 메모리 구조를 필요로 한다. 도 5 이하의 도면을 참조하여 본 발명에 따른 그래픽스 하드웨어(300), 응용프로그램 인터페이스(410)에서 사용할 수 있는 시스템 메모리의 구조 및 메모리 연산 방법에 대해 설명한다. Programmable shader-based
도 5는 본 발명의 바람직한 일 실시예에 따른 임베디드 시스템의 시스템 메모리(500)와 그래픽스 하드웨어(300)의 메모리 구조를 나타낸 도면이다. 5 is a diagram illustrating a memory structure of the
임베디드 시스템은 시스템 메모리(500)와 그래픽스 하드웨어(300)를 포함한다. 본 발명에서 임베디드 시스템은 이동 통신 단말기, 개인 휴대 단말기(PDA), 휴대형 멀티미디어 단말기(PMP) 등의 모바일 장치, 자동차 제어장치, 냉장도 제어장치, 공장로봇 제어장치 등을 의미한다.The embedded system includes
시스템 메모리(500)는 응용프로그램 인터페이스(410)에 의해 3차원 데이터 처리 프로그램(400)을 그래픽스 하드웨어(300)가 처리할 수 있도록 번역하고 번역한 코드를 저장하기 위해 활용된다. The
시스템 메모리(500)는 하나 이상의 쉐이더 객체 영역(510a, 510b)과 프로그램 객체 영역(520)을 포함한다. 도 5에서는 2개의 쉐이더 객체 영역(510a, 510b)이 있는 것으로 가정하지만, 이에 한정되지 않고 여러 개의 쉐이더 객체 영역이 있을 수 있다. 쉐이더 객체 영역(510a, 510b)은 모두 동일한 구조를 가지고 있는 바 이하에서는 쉐이더 객체 영역(510a)에 대해서 설명한다. The
쉐이더 객체 영역(510a)는 식별 영역(512a), 소스 영역(514a), 코드 영역(516a) 및 상수 영역(518a)을 포함한다. The
식별 영역(512a)은 각각의 쉐이더 객체를 구별할 수 있는 쉐이더 식별정보를 저장한다. 쉐이더 식별정보는 각 쉐이더 객체 간의 구분을 위해 서로 중복되지 않는 정수형 값이다. 따라서, 식별 영역(512a)는 정수형 저장 영역인 것이 바람직하다. 쉐이더 프로그램이 하나인 경우에는 구별이 필요없으므로, 식별 영역(512a)이 쉐이더 객체 영역(510) 내에 할당되지 않을 수 있다. The
소스 영역(514a)은 각각의 쉐이더 객체에 해당하는 쉐이더 프로그램의 소스인 쉐이더 프로그램 소스(shader program source)를 저장한다. 쉐이더 프로그램 소스는 사용자가 쉽게 작업가능한 고수준 언어(high-level language)로 작성될 수 있다. 쉐이더 프로그램 소스는 앞서 설명한 3차원 데이터 처리 프로그램(400) 자체이거나, 3차원 데이터 처리 프로그램(400)을 구성하는 다수의 쉐이더 프로그램 중 하 나일 수 있다. 따라서, 소스 영역(514a)은 고수준 언어로 작성된 쉐이더 프로그램 소스 데이터를 저장할 수 있는 문자열형 저장영역인 것이 바람직하다. The
코드 영역(516a)은 소스 영역(514a)에 저장된 쉐이더 프로그램 소스를 컴파일한 결과인 컴파일 코드(compiled code)를 저장한다. 컴파일 코드는 소스 영역(514a)에 저장된 쉐이더 프로그램 소스를 컴퓨터나 프로그램 실행 하드웨어, 디지털 장치에서 실행될 수 있도록 기계가 판독가능한 기계어 코드 즉, 이진데이터이다. 따라서, 코드 영역(516a)은 이진데이터형 저장영역인 것이 바람직하다. The
상수 영역(518a)은 쉐이더 프로그램 소스에서 선언되고 추후 쉐이더 프로그램이 실행될 때 참조되는 상수들을 저장한다. 상수는 자연수, 정수, 실수 등이 가능하나, 가장 넓은 범위를 담당할 수 있는 실수형(floating type)인 것이 바람직하다. 따라서, 상수 영역(518a)은 여러 개의 상수가 저장되도록 실수배열형 저장영역인 것이 바람직하다. The
여기서, 코드 영역(516a) 및/또는 상수 영역(518a)은 소스 영역(514a)에 저장된 쉐이더 프로그램 소스의 내용을 기계가 판독가능하도록 컴파일한 결과물을 저장한다. 따라서, 코드 영역(516a) 및/또는 상수 영역(518a)은 미리 할당되지 않고 추후 해당 쉐이더 객체가 호출되어 프로그램을 구성하게 될 때 쉐이더 프로그램 소스를 컴파일하고 그 결과를 저장할 수 있도록 나중에 할당될 수도 있다. Here, the
쉐이더 객체 영역(510a)은 앞서 상술한 정점 데이터의 처리를 위한 버텍스 쉐이더(310) 또는 프래그먼트의 색상을 결정하는 프래그먼트 쉐이더(320)를 위한 저장영역일 수 있다. 그 외에도 OpenGL ES의 확장에 의해 고정된 기능을 하는 그래 픽스 하드웨어(300)의 모듈을 대체하는 쉐이더를 위한 저장영역일 수 있다. The
프로그램 객체 영역(520)은 그래픽스 하드웨어(300)에서 실행되는 프로그램을 저장한다. The
프로그램은 하나 이상의 쉐이더 프로그램으로 구성된다. 버텍스 쉐이더(310) 만을 대체하는 경우에는 버텍스 쉐이더 프로그램만으로 구성되고, 프래그먼트 쉐이더(320)만을 대체하는 경우에는 프래그먼트 쉐이더 프로그램만으로 구성되며, 버텍스 쉐이더(310)와 프래그먼트 쉐이더(320)를 모두 대체하는 경우에는 버텍스 쉐이더 프로그램과 프래그먼트 쉐이더 프로그램의 링크에 의해 구성된다. 여기서, 버텍스 쉐이더 프로그램 및/또는 프래그먼트 쉐이더 프로그램은 사용자가 원하는 효과의 종류에 따라 하나 이상이 존재할 수 있다. A program consists of one or more shader programs. When only the
프로그램 객체 영역(520)은 프로그램 식별 영역(522), 쉐이더 식별 영역(524), 프로그램 영역(526) 및 데이터 영역(528)을 포함한다. The
프로그램 식별 영역(522)은 각각의 프로그램 객체를 구별할 수 있도록 하는 프로그램 식별정보를 저장한다. 프로그램 식별정보는 각 프로그램 객체 간의 구분을 위해 서로 중복되지 않는 정수형 값이다. 따라서, 프로그램 식별 영역(522)는 정수형 저장 영역인 것이 바람직하다. The
쉐이더 식별 영역(524)은 프로그램 객체 영역(520)에 상응하는 프로그램을 구성하는 하나 이상의 쉐이더 프로그램에 상응하는 하나 이상의 쉐이더 객체(510a 또는 510b)를 구별할 수 있는 쉐이더 식별정보를 저장한다. 쉐이더 식별정보는 앞서 설명한 바와 같이 쉐이더 객체 간의 구분을 위해 중복되지 않는 정수값이 할당 되는 바, 쉐이더 식별 영역(524)은 정수배열형 저장영역인 것이 바람직하다.The
프로그램 영역(526)은 그래픽스 하드웨어(300)에서 실행가능한 프로그램을 구성하는 각 쉐이더 객체 영역(510a 또는 510b)의 코드 영역(516a 또는 516b)에 저장된 컴파일 코드들을 링크하여 생성된 기계어 코드인 프로그램을 저장한다. 프로그램은 기계에서 판독가능한 이진데이터이고, 프로그램 영역(524)은 이진데이터형 저장영역인 것이 바람직하다. 프로그램 객체 영역(520)의 쉐이더 식별 영역(524)에 저장된 쉐이더 식별정보로부터 해당 쉐이더 객체 영역(510a 또는 510b)에 억세스하여 코드 영역(516a 또는 516b)에 저장된 컴파일 코드를 읽어와 링크한다. The
데이터 영역(528)은 프로그램을 구성하는 각 쉐이더 객체 영역(510a 또는 510b)의 상수 영역(518a 또는 518b)에 저장된 상수들 및/또는 프로그램이 그래픽스 하드웨어(300)에서 동작시에 참조하는 데이터를 저장한다. 상수들 또는 데이터는 자연수, 정수, 실수 등이 가능하나, 가장 넓은 범위를 담당할 수 있는 실수형인 것이 바람직하다. 따라서, 데이터 영역(528)은 여러 개의 상수 또는 데이터가 저장되도록 실수배열형 저장영역인 것이 바람직하다. 프로그램 객체 영역(520)의 쉐이더 식별 영역(524)에 저장된 쉐이더 식별정보로부터 해당 쉐이더 객체 영역(510a 또는 510b)에 억세스하여 상수 영역(518a 또는 518b)에 저장된 상수들을 읽어온다.The
그래픽스 하드웨어(300)는 데이터 영역(552), 응용프로그램 영역(554), 출력 데이터 영역(556)을 포함한다. 출력 데이터 영역(556)은 응용프로그램 영역(554)에 적재된 프로그램이 동작 수행한 결과를 저장하고 외부로 출력한다.
데이터 영역(552)은 시스템 메모리(500)에 저장된 하나 이상의 프로그램 객 체 영역 중에서 선택된 프로그램 객체 영역(520)의 데이터 영역(528)에 저장된 상수 및/또는 데이터를 적재한다. 상수 및/또는 데이터는 그래픽스 하드웨어(300)에서 프로그램을 실행시키기 위해 참조하는 값이기 때문에 그래픽스 하드웨어(300)의 메모리에 저장될 필요가 있다.The data area 552 loads constant and / or data stored in the
응용프로그램 영역(554)은 시스템 메모리(500)에 저장된 하나 이상의 프로그램 객체 영역 중에서 선택된 프로그램 객체 영역(520)의 프로그램 영역(526)에 저장된 프로그램 즉, 기계어 코드를 적재한다. 이후 적재된 기계어 코드는 그래픽스 하드웨어(300) 상에서 데이터 영역(552)에 저장된 값을 참조하며 정해진 동작(예를 들어, 렌더링)을 수행한다. The
도 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
단계 S620에서 소스 영역(514a)에 입력된 쉐이더 프로그램 소스를 저장한다. OpenGL ES 2.0 응용프로그램 인터페이스에서는 glShaderSource이 이에 해당한다. In operation S620, the shader program source input to the
단계 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
상술한 단계 S610 내지 S630을 통해 특정 쉐이더 프로그램이 해당하는 하나의 쉐이더 객체 영역(510a)이 생성된다. 사용자가 입력하는 쉐이더 프로그램 소스마다 단계 S610 내지 S630을 반복하여 다수의 쉐이더 객체 영역(510a 또는 510b)을 생성할 수 있다. One
도 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
단계 S720에서 쉐이더 식별 영역(524)에 해당 프로그램을 구성하는 쉐이더 프로그램이 저장된 쉐이더 객체 영역(510a 또는 510b)의 쉐이더 식별정보를 저장한다. OpenGL ES 2.0 응용프로그램 인터페이스에서는 glAttachShader이 이에 해당한 다.In operation S720, the shader identification information of the
단계 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
단계 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
상술한 단계 S710 내지 S740을 통해 특정 프로그램이 해당하는 하나의 프로그램 객체 영역(520)이 생성된다. 단계 S710 내지 S740을 반복하여 다수의 프로그램 객체 영역(520)을 생성할 수 있다. One
도 8을 참조하면, 단계 S810에서 하나 이상의 쉐이더 객체 영역(510a 또는 510b)을 생성한다. 이에 대해서는 앞서 설명한 바와 같이 도 6에 상세히 도시되어 있다. Referring to FIG. 8, in operation S810, one or more
단계 S820에서 하나 이상의 프로그램 객체 영역(520)을 생성한다. 이에 대해서도 앞서 설명한 바와 같이 도 7에 상세히 도시되어 있다.In operation S820, one or more
단계 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
단계 S840에서 선택된 프로그램 객체에 해당하는 프로그램 객체 영역(520)의 프로그램을 그래픽스 하드웨어(300)의 응용프로그램 영역(554)에 적재한다. 단계 S850에서 선택된 프로그램 객체에 해당하는 프로그램 객체 영역(520)의 상수 및/또는 데이터를 그래픽스 하드웨어(300)의 데이터 영역(552)에 적재한다. 단계 S840과 단계 S850은 순서에 상관없이 진행되며, 동시에 진행될 수 있다.The program of the
단계 S860에서 그래픽스 하드웨어(300)는 적재된 프로그램과 데이터를 이용하여 렌더링을 시작한다. OpenGL ES 2.0 응용프로그램 인터페이스에서는 glDrawArray, glDrawElement 등이 이에 해당한다.In operation S860, the
상술한 바와 같이, 본 발명에 따른 임베디드 시스템은 사용자가 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)
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)
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 |
-
2005
- 2005-12-23 KR KR1020050128563A patent/KR100696198B1/en active IP Right Grant
Patent Citations (4)
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 |