KR20190001209A - Toys for infant learning using 3D printer and learning method using it - Google Patents

Toys for infant learning using 3D printer and learning method using it Download PDF

Info

Publication number
KR20190001209A
KR20190001209A KR1020170080847A KR20170080847A KR20190001209A KR 20190001209 A KR20190001209 A KR 20190001209A KR 1020170080847 A KR1020170080847 A KR 1020170080847A KR 20170080847 A KR20170080847 A KR 20170080847A KR 20190001209 A KR20190001209 A KR 20190001209A
Authority
KR
South Korea
Prior art keywords
pipeline
shader
microcode
opengl
api
Prior art date
Application number
KR1020170080847A
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 KR1020170080847A priority Critical patent/KR20190001209A/en
Publication of KR20190001209A publication Critical patent/KR20190001209A/en

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/20Processor architectures; Processor configuration, e.g. pipelining
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/60Memory management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T19/00Manipulating 3D models or images for computer graphics
    • G06T19/20Editing of 3D images, e.g. changing shapes or colours, aligning objects or positioning parts
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2200/00Indexing scheme for image data processing or generation, in general
    • G06T2200/28Indexing scheme for image data processing or generation, in general involving image processing hardware

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Architecture (AREA)
  • Computer Graphics (AREA)
  • Computer Hardware Design (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Image Generation (AREA)
  • Image Processing (AREA)

Abstract

Disclosed are a device and a method for three-dimensional (3D) graphic processing which can simultaneously support a fixed pipeline and a programmable pipeline. A graphic processor includes: a fixed pipeline code generation unit for converting an application programming interface (API) supplying the fixed pipeline into a first micro code; a shader pipeline code generation unit for converting an API supporting the programmable pipeline into a second micro code; and a shader pipeline for processing the first micro code or the second micro code using a shader program.

Description

[3D 프린터를 이용한 유아 학습용 완구장치 및 이를 이용한 학습방법{Toys for infant learning using 3D printer and learning method using it}[Toys for infant learning using a 3D printer and learning method using the same]

본 발명은 3D(3-dimensional) <1> 그래픽스 처리에 관한 것이다.The present invention relates to 3D (3-dimensional) <1> graphics processing.

다양한 3D 그래픽스 애플리케이션들이 휴대폰(mobile phone), PDA(personal digital assistant), 포터블 게임콘솔과 같은 모바일 환경상에 실행되고 있다. 3D 애플리케이션들을 처리하기 위해, 모바일 환경을 위한 3D 그래픽스 API(Application Programming Interface)가 제공되고 있다. 몇몇 3D 그래픽스 API는 고정된 파이프라인(fixed pipeline)을 지원하지만, 다른 3D 그래픽스 API는 프로그래머블 파이프라인(programmable pipeline)을지원한다.Various 3D graphics applications are being implemented in mobile environments such as mobile phones, personal digital assistants (PDAs), and portable game consoles. To handle 3D applications, a 3D graphics API (Application Programming Interface) is provided for mobile environments. Some 3D graphics APIs support a fixed pipeline, while other 3D graphics APIs support a programmable pipeline.

고정된 파이프라인과 프로그래머블 파이프라인을 동시에 지원하는 3D 그래픽스 처리 장치 및 방법이 제공된다.A 3D graphics processing apparatus and method for simultaneously supporting a fixed pipeline and a programmable pipeline are provided.

일 양태에 있어서, 3D 그래픽 처리를 위한 그래픽 프로세서가 제공된다. 상기 그래픽 프로세서는 고정된 파이프라인을 지원하는 API(Application Programming Interface)를 제1 마이크로 코드로 변환하는 고정 파이프라인코드 생성부, 프로그래머블 파이프라인을 지원하는 API를 제2 마이크로 코드로 변환하는 쉐이더 파이프라인 코드 생성부, 및 상기 고정 파이프라인 코드 생성부 및 상기 쉐이더 파이프라인 코드 생성부와 연결되어, 쉐이더프로그램을 이용하여 상기 제1 마이크로 코드 및 상기 제2 마이크로 코드 중 적어도 어느 하나를 처리하는 쉐이더 파이프라인을 포함한다. 상기 그래픽 프로세서는 상기 고정 파이프라인 코드 생성부 및 상기 쉐이더 파이프라인 코드 생성부와 연결되어, 입력 API를 입력받아 고정된 파이프라인 또는 프로그래머블 파이프라인의 지원 여부를 판단하는 API선택부를 더 포함할 수 있다. 상기 쉐이더 파이프라인은 버텍스 쉐이더와 단편 쉐이더를 포함할 수 있다. 상기 고정 파이프라인 코드 생성부는 수신한 입력 API의 객체의 속성을 파싱(parse)하고, 파싱된 속성에 따른 상태 정보를 출력하는 상태부, 상기출력된 상태 정보를 기반으로 상기 제1 마이크로 코드를 생성하는 코드 생성기, 및 상기 제1 마이크로 코드를저장하는 코드 버퍼를 포함할 수 있다.In an aspect, a graphics processor for 3D graphics processing is provided. The graphics processor includes a fixed pipeline code generation unit for converting an application programming interface (API) supporting a fixed pipeline into a first microcode, a shader pipeline for converting an API supporting a programmable pipeline to a second microcode, And a shader pipeline processing unit coupled to the fixed pipeline code generation unit and the shader pipeline code generation unit to process at least one of the first microcode and the second microcode using a shader program, . The graphics processor may further include an API selection unit connected to the fixed pipeline code generation unit and the shader pipeline code generation unit and receiving an input API to determine whether a fixed pipeline or a programmable pipeline is supported . The shader pipeline may include a vertex shader and a fragment shader. Wherein the fixed pipeline code generation unit comprises: a state unit parsing an attribute of an object of the received input API and outputting state information according to a parsed attribute; a state code generation unit generating the first microcode based on the output state information; A code generator for storing the first microcode, and a code buffer for storing the first microcode.

상기 그래픽 프로세서는 상기 고정 파이프라인 코드 생성부 및 상기 쉐이더 파이프라인 코드 생성부와 연결되어, 스톨(stall)을 나타내는 해저드(hazard)의 발생을 구분하기 위해 상기 제1 마이크로 코드 및 상기 제2 마이크로 코드 중 적어도 어느 하나의 처리 순서와 실행 시간을 확인하고, 상기 해저드의 발생에 따른 처리를Wherein the graphics processor is connected to the fixed pipeline code generation unit and the shader pipeline code generation unit to generate the first microcode and the second microcode to distinguish generation of a hazard representing a stall, And a process according to the occurrence of the hazard

수행하는 해저드 제어기를 더 포함할 수 있다. 상기 해저드 제어기는 각 마이크로 코드의 처리 순서와 실행 시간을 확인하여, 상기 해저드의 발생 여부를 확인하는 해저드 확인부, 및 상기 제어기는 상기 해저드가 발생한마이크로 코드의 처리 순서를 재정렬하는 재정렬부를 포함할 수 있다. 상기 해저드 제어기는 상기 해저드가 발생한 마이크로 코드의 이전 마이크로 코드의 결과값을 다른 마이크로 코드의 실행을 위해 포워딩하는 포워딩부를 더 포함할 수 있다.And may further include a hazard controller to perform the operation. The hazard controller may include a hazard identification unit for confirming the processing order and the execution time of each microcode and confirming whether the hazard is generated, and the controller may include a rearrangement unit for rearranging the processing order of the microcode generated by the hazard have. The hazard controller may further include a forwarding unit for forwarding the result of the previous microcode of the microcode generated by the hazard for execution of another microcode.

상기 고정된 파이프라인을 지원하는 API는 OpenGL ES 1.x이고, 상기 프로그래머블 파이프라인을 지원하는 API는 OpenGL ES 2.x 일 수 있다.The API supporting the fixed pipeline is OpenGL ES 1.x, and the API supporting the programmable pipeline may be OpenGL ES 2.x.

다른 양태에 있어서, 그래픽 프로세서에 의해 수행되는 3D 그래픽 프로세싱 <9> 방법이 제공된다. 상기 방법은 고정된 파이프라인을 지원하는 API(Application Programming Interface)로부터 프로그래머블 파이프라인을 지원하는 쉐이더가 인식할 수 있는 제1 마이크로 코드로 변환하는 단계, 및 상기 제1 마이크로 코드를 처리하여 3D 그래픽 처리를 수행하는 단계를 포함한다. 처리된 3D 그래픽스는 버퍼와 같은 메모리에 저장될 수 있다. 또한, 처리된 3D 그래픽스는 모바일 환경의 디스프레이상으로 표시될 수도 있다. 상기 방법은 프로그래머블 파이프라인을 지원하는 API로부터 상기 쉐이더가 인식할 수 있는 제2 마이크로 코드로 변환하는 단계를 더 포함할 수 있다. 상기 고정된 파이프라인을 지원하는 API를 상기 제1 마이크로 코드 변환하는 단계와 상기 프로그래머블 파이프라인을 지원하는 API를 상기 제2 마이크로 코드 변환하는 단계는 입력 API의 객체의 속성에 따른 상태 정보를 획득하는 단계, 및 상기 상태 정보를 기반으로 상기 제1 및 제2 마이크로 코드를 생성하는 단계를 포함할 수 있다. 상기 고정된 파이프라인을 지원하는 API를 상기 제1 마이크로 코드 변환하는 단계와 상기 프로그래머블 파이프라인을 지원하는 API를 상기 제2 마이크로 코드 변환하는 단계는 각 마이크로 코트에 후속하는 마이크로 코드의 실행이 스톨(stall)되는 해저드의 발생하는지 여부를 확인하는 단계를 더 포함할 수 있다. 상기 고정된 파이프라인을 지원하는 API를 상기 제1 마이크로 코드 변환하는 단계와 상기 프로그래머블 파이프라인을 지원하는 API를 상기 제2 마이크로 코드 변환하는 단계는 상기 해저드가 발생하는 경우 상기 해저드가 발생한 마이크로 코드를 재정렬하는 단계를 더 포함할 수 있다. 상기 고정된 파이프라인을 지원하는 API를 상기 제1 마이크로 코드변환하는 단계와 상기 프로그래머블 파이프라인을 지원하는 API를 상기 제2 마이크로 코드 변환하는 단계는 상기 해저드가 발생하는 경우 해저드가 발생한 마이크로 코드의 이전 마이크로 코드의 결과 값을 다른 마이크로코드로 포워딩하는 단계를 더 포함할 수 있다. 또 다른 양태에 있어서, 컴퓨터 장치는 CPU(central processing unit); 및 상기 CPU와 연결되어, 3D 그래픽을 처리하는 그래픽 프로세서를 포함한다. 상기 그래픽 프로세서는 고정된 파이프라인을 지원하는 API를 제1 마이크로 코드로 변환하는 고정 파이프라인 코드 생성부, 프로그래머블 파이프라인을 지원하는 API를 제2 마이크로 코드로 변환하는 쉐이더 파이프라인 코드 생성부, 및 상기 고정 파이프라인 코드 생성부 및 상기 쉐이더 파이프라인 코드 생성부와 연결되어, 쉐이더 프로그램을 이용하여 상기 제1 마이크로 코드 및 상기 제2 마이크로 코드 중 적어도 어느 하나를 처리하는 쉐이더 파이프라인을 포함한다.In another aspect, a 3D graphics processing method performed by a graphics processor is provided. The method includes converting an application programming interface (API) supporting a fixed pipeline to a first microcode that can be recognized by a shader that supports a programmable pipeline, and processing the first microcode to perform 3D graphics processing . The processed 3D graphics can be stored in a memory such as a buffer. In addition, the processed 3D graphics may be displayed on a display in a mobile environment. The method may further include converting from an API supporting a programmable pipeline to a second microcode recognizable by the shader. The step of performing the first microcode conversion of the API supporting the fixed pipeline and the step of performing the second microcode conversion of the API supporting the programmable pipeline may include obtaining status information according to an attribute of an object of the input API And generating the first and second microcode based on the status information. Wherein the step of performing the first microcode conversion of the API supporting the fixed pipeline and the step of performing the second microcode conversion of the API supporting the programmable pipeline include the steps of: stalled < / RTI > Wherein the step of performing the first microcode conversion of the API supporting the fixed pipeline and the step of performing the second microcode conversion of the API supporting the programmable pipeline include the steps of: And rearranging the data. Wherein the step of performing the first microcode conversion of the API supporting the fixed pipeline and the step of performing the second microcode conversion of the API supporting the programmable pipeline include the steps of transferring the microcode generated by the hazard when the hazard occurs, And forwarding the result of the microcode to another microcode. In yet another aspect, a computer device includes a central processing unit (CPU); And a graphics processor connected to the CPU for processing 3D graphics. The graphics processor includes a fixed pipeline code generator for converting an API supporting a fixed pipeline into a first microcode, a shader pipeline code generator for converting an API supporting a programmable pipeline into a second microcode, And a shader pipeline coupled to the fixed pipeline code generator and the shader pipeline code generator to process at least one of the first microcode and the second microcode using a shader program.

제안된 3D 그래픽스 처리 방법 및 장치에 의하면, 작은 하드웨어 크기 및 낮은 전력 소모가 제공된다. 고정된 파이프라인 또는 프로그래머블 파이프라인에 따라 추가적인 명령이나 컴파일이 필요하지 않고, 필요한 메모리가 최소화할 수 있다. 또한, 해저드로 인한 쉐이더의 스톨을 완화하여 3D 그래픽스의 성능을 향상시킬 수 있다.The proposed 3D graphics processing method and apparatus provides a small hardware size and low power consumption. Fixed pipelines or programmable pipelines do not require additional instructions or compilations, and can minimize memory requirements. In addition, the performance of 3D graphics can be improved by mitigating the stall of the shader due to the hazards.

이것은 3D 프린터에 관한 설명입니다.This is a description of the 3D printer.

OpenGL ES(OpenGL for Embedded Systems)는 휴대폰(mobile phone), PDA(personal digital assistant), 콘솔과 같은 임베디드(embedded) 장치을 위해 설계된 OpenGL 3D 그래픽스 API(Application Programming Interface)의 부집합이다. OpenGL ES는 비영리 기술 그룹인 "Khronos Group"에 의해 관리되고 있다.OpenGL for Embedded Systems is a subset of the OpenGL 3D graphics application programming interface (API) designed for embedded devices such as mobile phones, personal digital assistants (PDAs), and consoles. OpenGL ES is managed by the non-profit technology group "Khronos Group".

<16> OpenGL ES의 몇몇 버전(verstion)이 있다. 예를 들어, OpenGL ES 1.0는 OpenGL 1.3 버전을 기초로 작성되었다.<16> There are several versions of OpenGL ES. For example, OpenGL ES 1.0 is based on OpenGL 1.3.

OpenGL ES 1.0는 OpenGL 1.5 버전과 관련되어 작성되었다. OpenGL ES 2.0는 OpenGL 2.0 버전과 관련되어 작성 되었다. 2007년 5월에 반포된 OpenGL ES 2.0은 고정된 렌더링 파이프라인을 없애고 프로그래머블 파이프라인을 도입하고 있다. 고정된 기능 API(fixed-function API)에 의해 기술된 매체(material)나 광원 파라미터들의 명세와 같은 변환 및 광원 파이프라인의 대부분의 렌더링 특징들이 그래픽스 프로그래머에 의해 씌어지는 쉐이더(shader)로 교체되었다. OpenGL ES 1.x는 OpenGL ES 1.0, 1.1, 1.5 중 적어도 하나의 버전을 포함하고, OpenGL ES 2.x는 OpenGL ES 2.0OpenGL ES 1.0 was written in conjunction with OpenGL 1.5. OpenGL ES 2.0 was written in conjunction with the OpenGL 2.0 version. Published in May 2007, OpenGL ES 2.0 removes the fixed rendering pipeline and introduces a programmable pipeline. Most rendering features of the transformation and light source pipeline, such as the specification of the material or light source parameters described by the fixed-function API, have been replaced by shaders written by the graphics programmer. OpenGL ES 1.x includes at least one version of OpenGL ES 1.0, 1.1, 1.5, OpenGL ES 2.x includes OpenGL ES 2.0

을 포함한다. OpenGL ES 1.x는 고정된 기능 하드웨어를 위해 설계되고, 가속, 화상 품질 및 성능을 제공한다. 또한, OpenGL ES 1.x는 API의 하드웨어 가속을 강조한다. OpenGL ES 1.x와 달리, OpenGL ES 2.x는 완전한 프로그래머블 3D 그래픽스를 가능케한다. 또한, OpenGL ES 2.x는 쉐이더 및 프로그램 객체를 생성하기 위한 능력과 버텍스(vertex) 및 단편 쉐이더(fragment shader)의 능력을 강조한다. OpenGL ES 2.x는 OpenGL ES 1.x의 고정된 기능 변환 및 단편 파이프라인을 지원하지 않는다. 따라서, OpenGL ES 2.x는 OpenGL ES 1.x과 하위 호환되지 않는다.. OpenGL ES 1.x is designed for fixed-function hardware and provides acceleration, image quality, and performance. Also, OpenGL ES 1.x highlights the hardware acceleration of the API. Unlike OpenGL ES 1.x, OpenGL ES 2.x enables full programmable 3D graphics. In addition, OpenGL ES 2.x emphasizes the ability to create shaders and program objects, as well as the ability of vertices and fragment shaders. OpenGL ES 2.x does not support fixed feature translation and short pipelines in OpenGL ES 1.x. Therefore, OpenGL ES 2.x is not backward compatible with OpenGL ES 1.x.

상술한 바와 같이, OpenGL ES 1.x는 고정된 파이프라인을 지원하지만, OpenGL <19> ES 2.x는 프로그래머블 파이프라인(programmable pipeline)을 지원한다. OpenGL ES 2.x에 의해 지원되는 프로그래머블 파이프라인은 쉐이더를 사용한다. 쉐이더는 높은 유연성을 갖는 그래픽스 하드웨어 상에서 주로 렌더링 효과를 연산하기 위해 사용되는 소프트웨어 명령들의 집합이다.As mentioned above, OpenGL ES 1.x supports a fixed pipeline, while OpenGL ES 2.x supports a programmable pipeline. The programmable pipeline supported by OpenGL ES 2.x uses shaders. A shader is a set of software instructions that are used primarily to compute rendering effects on graphics hardware with high flexibility.

예를 들어, Direct3D, OpenGL 및 OpenGL ES 그래픽스 라이브러리는 다음과 같은 3가지 유형의 쉐이더를 사용한다.For example, the Direct3D, OpenGL, and OpenGL ES graphics libraries use three types of shaders:

(1) 버텍스 쉐이더(vertex shader)는 그래픽 프로세서에서 각 버텍스마다 한번씩 실행된다. 이는 각 버텍스의 가상 공간상의 3D 위치를 스크린상에 표시되는 3D 위치인 2D 좌표(Z-버퍼의 깊이 값(depth value)과 같이)로 변환하는 것이다. 버텍스 쉐이더는 위치, 색상 및 텍스쳐 좌표와 같은 특성들을 다룰 수 있다. 버텍스 쉐이더의 출력은 기하 쉐이더(geometry shader)나 래스터라이저(rasterizer)와 같은 다음 단계의 파이프라인으로 제공된다. (2) 기하 쉐이더(geometry shader)는 메쉬(mesh)로부터 버텍스를 추가하거나 제거할 수 있다. 기하 쉐이더는 절차적으로 기하를 생성하는데 사용되거나, CPU(central processing unit)에 의해 처리되기에 무거운 현재 메쉬들에 부피 상세(volumetric detail)를 추가하는데 사용된다. 기하 쉐이더가 사용되는 경우 그 출력은 래스터라이저로 제공된다. (1) The vertex shader is executed once for each vertex in the graphics processor. This translates the 3D position on the virtual space of each vertex to the 2D coordinates (such as the depth value of the Z-buffer), which is the 3D location displayed on the screen. Vertex shaders can handle properties such as position, color, and texture coordinates. The output of the vertex shader is provided in the next stage pipeline, such as a geometry shader or rasterizer. (2) A geometry shader can add or remove vertices from a mesh. The geometry shader is used to create geometry procedurally or to add volumetric detail to heavier current meshes to be processed by the central processing unit (CPU). If a geometry shader is used, its output is provided as a rasterizer.

(3) 단편 쉐이더(fragment shader)는 픽셀 쉐이더(pixel shader)라고도 하며, 각 단편(또는 픽셀)의 색상을 연산할 수 있다. 이 단계의 입력은 그래픽스 파이프라인을 통해 보내지는 폴리곤(polygon)을 채우는 래스터라이저로부터 제공된다. 단편 쉐이더는 범프 맵핑(bump mapping)이나 색상 토닝(color toning)과 같은 효과와 경관 조명(scene lighting)에 사용될 수 있디. 고정된 파이프라인은 고정된 구조에 유한한(finite) 상태 변수들을 조정함으로써 단지 제한된 유형의 연산만을 제공한다. 하지만, 단편 쉐이더는 프로그래밍을 통한 일반적이고 복잡한 연산을 가능케하고, 이론적으로 무한한 상태 변수들을 제공할 수 있다.(3) A fragment shader, also called a pixel shader, can calculate the color of each fragment (or pixel). The input to this stage is provided by a rasterizer that fills the polygons sent through the graphics pipeline. The short shader can be used for effects such as bump mapping or color toning and for scene lighting. A fixed pipeline provides only limited types of operations by adjusting finite state variables to a fixed structure. However, the short shader allows general and complex operations through programming, and it can provide infinite state variables in theory.

도 1은 쉐이더를 이용한 프로그래머블 파이프라인(programmable pipeline)의 구조를 나타낸다. 버텍스 쉐이더 (110)는 사용자 정의 속성 값들(user defined attribute variables)을 입력받아, 좌표 변환 및/또는 조명을 계산한다. 버텍스 쉐이더(110)의 출력은 래스터라이저(120)에 의해 래스터 포맷(raster format)으로 변환된다. 단편 쉐이더(130)는 텍스쳐 연산과 색상 토닝(color toning)과 같은 처리를 수행한다. 단편 쉐이더(130)의 출력은프레임 버퍼(140)로 보내져 디스플레이를 위한 처리가 수행된다. OpenGL ES 2.x가 OpenGL ES 1.x와 하위 호환되지 않는 것은 고정된 파이프라인과 프로그래머블 파이프라인의 차이에 기인한다. 프로그래머블 파이프라인은 사용자에게 유연성을 제공할 수 있지만, 고정된 파이프라인도 처리 Figure 1 shows the structure of a programmable pipeline using a shader. The vertex shader 110 receives user defined attribute variables and calculates coordinate transformations and / or illumination. The output of the vertex shader 110 is transformed by the rasterizer 120 into a raster format. The fragment shader 130 performs processing such as texture operation and color toning. The output of the fragment shader 130 is sent to the frame buffer 140 to perform processing for display. OpenGL ES 2.x is not backward compatible with OpenGL ES 1.x due to the difference between fixed and programmable pipelines. Programmable pipelines can provide flexibility to the user, but also handle fixed pipelines

속도의 면에서 잇점이 있다. 그래픽의 한 장면(scene)에 포함되는 모든 객체(object)가 쉐이더를 필요로 하는 것은 아니며, 화려한 그래픽효과가 상대적으로 필요하지 않은 부분이나 연산 처리의 신속성이 요구되는 부분에서는 OpenGL ES 1.x을 기준으로 표현될 수 있다. 그러므로, 제안된 기술, 장치 및 방법은 프로그래머블 파이프라인와 고정된 파이프라인을 동시에 지원하는 데 사용될 수 있다. 프로그래머블 파이프라인와 고정된 파이프라인을 동시에 지원함으로써, 하드웨어 크기와 파워 소모가 감소되고, 특정 모바일 환경에 효율적일 수 있다. 이하의 기술은 Direct3D, OpenGL, OpenGL ES 등과 같은 다양한 3D 그래픽스 API를 처리하기 위한 하드웨어 및/또는 소프트웨어로 구현될 수 있다. OpenGL ES 1.x는 OpenGL ES 1.0, 1.1, 1.5 중 적어도 하나의 버전을 포함하고, OpenGL ES 2.x는 OpenGL ES 2.0을 포함한다. 설명을 명확히 하기 위해, 고정된 파이프라인을 지원하는 그래픽스 API(Application Programming Interface)로 OpenGL ES 1.x를 기술하고, 프로그래머블 파이프라인을 지원하는 그래픽스 API로 OpenGL ES 2.x를 기술하나 이는 예시에 불과하고, 제한이 아니다. 본 발명의 기술적 사상은 고정된 파이프라인 또는 프로그래머블 파이프라인을 지원하는 다른 그래픽스 API에도 적용될 수 있다. 다음 문서들의 내용들이 참조될 수 있다. http://www.khronos.org/registry/gles/specs/1.1/es_full_spec.1.1.12.pdf로부터 얻어지는 "OpenGL ES 1.1 공개특허 10-2009-0097816 Specification"; 및 http://www.khronos.org/registry/gles/specs/2.0/es_full_spec_2.0.23.pdf로부터 얻어지는"OpenGL ES 2.0 Specification". 도 2는 3D 그래픽스 처리를 구현할 수 있는 컴퓨터 장치의 블록도를 나타낸다. 컴퓨터 장치(200)는 휴대폰, PDA, 콘솔, 모바일 PC(personnel computer) 등과 같은 휴대용 기기(mobile device) 일 수 있다. 컴퓨터 장치(200)는 CPU(central processing unit, 210), 메모리(220), 그래픽 프로세서(230) 및 인터페이스부(interfaceunit, 240)를 포함한다. 컴퓨터 장치(200)의 각 요소는 시스템 버스(290)를 통해 연결될 수 있다. CPU(210)는 소프트웨어 애플리케이션을 실행한다. 메모리(220)는 CPU(220)에 의해 사용되는 애플리케이션과 데이터를 저장한다. 그래픽 프로세서(230)는 3D 그래픽스 처리를 수행한다. 그래픽 프로세서(230)는 고정된 파이프라인을 지원하는 그래픽스 API 및 프로그래머블 파이프라인을 지원하는 그래픽스 API를 처리할 수 있다. 예를 들어, 그래픽 프로세서(230)는 OpenGL ES 1.x 및/또는 OpenGL ES 2.x를 지원하는 API를 처리할 수 있다. 그래픽 프로세서(230)에 관해서는 이하 도 3 내지 8을 참조하여 자세히 기술한다. 도 3은 본 발명의 일 실시예에 따른 그래픽 프로세서의 블록도의 일 예를 나타낸다. 그래픽 프로세서(300)는 API 선택부(310), 고정 파이프라인 코드 생성부(330), 쉐이더 파이프라인 코드 생성부(340), 해저드 제어기(350) 및 쉐이더 파이프라인(360)을 포함한다. API 선택부(310)는 API를 입력받아 고정된 파이프라인 및/또는 프로그래머블 파이프라인의 지원 여부를 판단한다. API 선택부(310)는 입력되는 API가 고정된 파이프라인을 지원한다고 판단되면 고정 파이프라인 코드 생성부(330)로 보내고, 프로그래머블 파이프라인을 지원한다고 판단되면 쉐이더 파이프라인 코드 생성부(340)로 보낸다. 고정 파이프라인 코드 생성부(330)는 고정된 파이프라인을 지원하는 API를 쉐이더 파이프라인(360)이 인식할 수 있는 마이크로 코드(micro code, 즉 제1 마이크로 코드)로 변환한다. 제1 마이크로 코드는 쉐이더 파이프라인(360)에서 어떠한 연산을 수행할 지를 나타내는 코드이다. 예를 들어, 고정 파이프라인 코드 생성부(330)는OpenGL ES 1.x에 기반하는 API를 쉐이더 기반의 마이크로 코드로 변환할 수 있다. 쉐이더 파이프라인 코드 생성부(340)는 프로그래머블 파이프라인을 지원하는 API를 쉐이더 파이프라인(360)이 인식할 수 있는 다른 마이크로 코드(즉, 제2 마이크로 코드)로 변환한다. 제2 마이크로 코드는 쉐이더 파이프라인(360)에서 어떠한 연산을 수행할 지를 나타내는 코드이다. 예를 들어, 쉐이더 파이프라인 코드 생성부(340)는 OpenGL ES 2.x에 기반하는 API를 쉐이더 기반의 마이크로 코드로 변환할 수 있다. 해저드 제어기(350)는 고정 파이프라인 코드 생성부(330)에 의해 생성된 제1 마이크로 코드 및/또는 쉐이더 파이프라인 코드 생성부(340)에 의해 생성된 제2 마이크로 코드로부터 쉐이더 파이프라인(360)에서의 실행시 스톨(stall)이 발생하는지 여부에 관한 해저드를 검사한다. 해저드가 발생할 경우 스톨을 완화시킬 수 있는 처리를 수행한다. 해저드 제어기(350)는 해저드(hazard)가 발생하면, 상기 제1 및 제2 마이크로 코드의 재정렬(reordering), 포워딩(forwarding) 및/또는 인터락(inter-lock)을 수행할 수 있다. 쉐이더 파이프라인(360)은 제1 및 제2 마이크로 코드를 읽고(fetch), 해독하여(decoding) 실행하는(execute) 과정을 통해 쉐이더 프로그램을 처리한다. 쉐이더 파이프라인(360)은 도 1의 예에 나타난 바와 같이 버텍스 쉐이더 및 단편 쉐이더로 구성될 수 있다. 버텍스 쉐이더는 각 버텍스 및 버텍스 계산에 필요한 상수들을 입력받아 좌표 변환 및 조명을 계산하여, 변환된 값을 출력한다. 변환된 값은 클리핑(clipping)과 래스터라이제이션(rasterization) 과정을 거쳐 단편 쉐이더로 입력될 수 있다. 단편 쉐이더는 텍스쳐 연산과 색상 토닝(toning)을 처리한다.There is an advantage in terms of speed. Not all the objects in a scene in the graphics need shaders, but where graphics graphics are not needed or where computational processing is required to be fast, OpenGL ES 1.x Can be expressed by reference. Therefore, the proposed techniques, apparatuses, and methods can be used to support a programmable pipeline and a fixed pipeline simultaneously. Supporting both programmable pipelines and fixed pipelines reduces hardware size and power consumption, and can be efficient for specific mobile environments. The following techniques may be implemented in hardware and / or software for processing various 3D graphics APIs such as Direct3D, OpenGL, OpenGL ES, and the like. OpenGL ES 1.x includes at least one version of OpenGL ES 1.0, 1.1, 1.5, and OpenGL ES 2.x includes OpenGL ES 2.0. For clarity, we describe OpenGL ES 1.x as a graphics API (application programming interface) that supports a fixed pipeline, and OpenGL ES 2.x as a graphics API that supports a programmable pipeline. It is not, and is not a limitation. The technical spirit of the present invention may be applied to other graphics APIs that support fixed pipelines or programmable pipelines. The contents of the following documents may be referenced. "OpenGL ES 1.1 Open Patent 10-2009-0097816 Specification" obtained from http://www.khronos.org/registry/gles/specs/1.1/es_full_spec.1.1.12.pdf; And "OpenGL ES 2.0 Specification" obtained from http://www.khronos.org/registry/gles/specs/2.0/es_full_spec_2.0.23.pdf. Figure 2 shows a block diagram of a computing device capable of implementing 3D graphics processing. The computer device 200 may be a mobile device such as a cell phone, PDA, console, personnel computer, or the like. The computer device 200 includes a central processing unit (CPU) 210, a memory 220, a graphics processor 230, and an interface unit 240. Each element of the computer device 200 may be connected via a system bus 290. The CPU 210 executes a software application. The memory 220 stores applications and data used by the CPU 220. The graphics processor 230 performs 3D graphics processing. Graphics processor 230 may process graphics APIs that support fixed pipelines and graphics APIs that support programmable pipelines. For example, the graphics processor 230 may process APIs that support OpenGL ES 1.x and / or OpenGL ES 2.x. The graphics processor 230 will be described in detail with reference to FIGS. 3 to 8 below. 3 shows an example of a block diagram of a graphics processor according to an embodiment of the present invention. The graphic processor 300 includes an API selector 310, a fixed pipeline code generator 330, a shader pipeline code generator 340, a hazard controller 350, and a shader pipeline 360. The API selection unit 310 receives the API and determines whether or not the fixed pipeline and / or programmable pipeline is supported. If it is determined that the input API supports the fixed pipeline, the API selection unit 310 sends the pipeline code to the fixed pipeline code generation unit 330. If it is determined that the API supports the programmable pipeline, the API selection unit 310 outputs the pipeline code to the shader pipeline code generation unit 340 send. The fixed pipeline code generation unit 330 converts the API supporting the fixed pipeline into a microcode (i.e., a first microcode) that can be recognized by the shader pipeline 360. The first microcode is a code that indicates what operation to perform in the shader pipeline 360. For example, the fixed pipeline code generation unit 330 may convert an API based on OpenGL ES 1.x into shader-based microcode. The shader pipeline code generator 340 converts the API supporting the programmable pipeline into another microcode (i.e., a second microcode) that the shader pipeline 360 can recognize. The second microcode is a code indicating what operation is to be performed in the shader pipeline 360. For example, the shader pipeline code generation unit 340 may convert APIs based on OpenGL ES 2.x into shader-based microcode. The hazard controller 350 receives the shader pipeline 360 from the first microcode generated by the fixed pipeline code generator 330 and / or the second microcode generated by the shader pipeline code generator 340, And checks whether or not a stall occurs at the execution of the program. If a hazard occurs, it performs a process to mitigate the stall. The hazard controller 350 may perform reordering, forwarding, and / or inter-locking of the first and second microcodes when a hazard occurs. The shader pipeline 360 processes the shader program by reading and decoding the first and second microcode. The shader pipeline 360 may be composed of a vertex shader and a fragment shader as shown in the example of Fig. The vertex shader receives constants necessary for each vertex and vertex calculation, calculates coordinate transformations and illumination, and outputs the transformed values. The transformed value can be input to the fragment shader through clipping and rasterization. The fragment shader handles texture operations and color toning.

프로그래머블 파이프라인을 지원하는 OpenGL ES 2.x은 기본적으로 쉐이더 프로그램을 이용한다. 따라서, 쉐이더파이프라인 코드 생성부(330)는 쉐이더 파이프라인(360)을 위한 제2 마이크로 코드를 생성할 수 있다. 그러나, 고정된 파이프라인을 지원하는 OpenGL ES 1.x로부터 쉐이더 기반의 마이크로 코드를 생성하는 것은 용이하지 않다. OpenGL ES 1.x을 지원하기 위해 객체의 속성이 변할 때마다 실시간으로 컴파일을 수행할 수 있지만 이는 하드웨어에 추가적인 코드 메모리가 요구될 수 있다. 만약 하나의 코드 메모리만을 사용한다면, OpenGLES 2.x로부터 OpenGL ES 1.x로의 전환 및/또는 OpenGL ES 1.x로부터 OpenGL ES 2.x로의 전환이 발생할 때 마다 이전 코드 메모리의 명령을 지우고 새로 컴파일된 명령어들을 삽입하는 오버헤드가 발생할 수 있다. 공개특허 10-2009-0097816 모바일 환경에서 추가적인 메모리 또는 오버헤드의 증가는 하드웨어 면적의증가, 추가적인 파워 소모를 가져올 수 있다. 따라서, 작은 하드웨어 크기, 낮은 전력, 높은 성능 향상을 갖도록 그래픽 프로세서(300)를 설계할 필요가 있다. 도 4는 본 발명의 일 실시예에 따른 고정 파이프라인 코드 생성부의 블록도를 나타낸다. 고정 파이프라인 코드생성부(330)는 상태부(state unit, 331), 코드 생성기(332), 코드 버퍼(333) 및 제어기(334)를 포함한다. 상태부(331)는 입력되는 객체의 속성을 파싱(parse)하고, 파싱된 속성에 따른 상태 정보를 출력한다. 상태부(331)는 유한 상태 머신(finite state machine)으로, 사용자 정의된 속성에 따라 상태를 변경한다. 각 상태는OpenGL ES 2.x, which supports the programmable pipeline, uses shader programs by default. Thus, the shader pipeline code generator 330 may generate a second microcode for the shader pipeline 360. [ However, it is not easy to generate shader-based microcode from OpenGL ES 1.x that supports a fixed pipeline. To support OpenGL ES 1.x, compilation can be done in real time whenever an object's attributes change, but this may require additional code memory in the hardware. If you use only one code memory, clear the old code memory command every time you switch from OpenGL ES 2.x to OpenGL ES 1.x and / or switch from OpenGL ES 1.x to OpenGL ES 2.x, The overhead of inserting the instructions may occur. The increase in additional memory or overhead in a mobile environment can result in increased hardware area, additional power consumption. Therefore, it is necessary to design the graphics processor 300 to have a small hardware size, low power, and high performance improvement. 4 is a block diagram of a fixed pipeline code generation unit according to an embodiment of the present invention. The fixed pipeline code generation unit 330 includes a state unit 331, a code generator 332, a code buffer 333, and a controller 334. [ The state unit 331 parses an attribute of an input object, and outputs state information according to the parsed attribute. The state unit 331 is a finite state machine, and changes state according to a user-defined attribute. Each state

복수의 서브-상태를 포함한다. 코드 생성기(332)는 상태 정보에 따른 마이크로 코드를 생성한다. 각 상태는 마이크로 코드 멀티플렉서(미도시)로 입력되어 적어도 하나의 마이크로 코드를 선택하여 출력한다. 하나의 마이크로 코드는 64비트일 수 있다. 코드 버퍼(333)는 생성된 마이크로 코드를 저장하고, 제어기(334)의 지시에 따라 쉐이더로 저장된 마이크로 코드를 보낸다. 제어기(334)는 상태부(311), 코드 생성기(332) 및 코드 버퍼(333)를 관리한다. 제어기(334)는 객체의 속성에 따라 상태부(331)의 상태의 변경 또는 유지(hold)를 제어할 수 있다. 상기와 같이 구성된 고정 파이프라인 코드 생성부(330)의 크기는 일반적인 코드 메모리의 5%에 불과한 크기를 가진다. 따라서, 하드웨어의 크기가 작아지고 낮은 전력 소모를 제공할 수 있다. 이제 고정 파이프라인 코드 생성부(330)의 동작에 대해 보다 구체적인 예를 들어 기술한다. 도 5는 속성에 따른 상태들의 일 예를 나타낸다. 입력되는 속성에 따라, 현재 상태는 초기화 상태(initial state), 버텍스 상태(vertex state), 텍스쳐 상태(texture state), 라이트 상태(light state) 및 포그 상태(fog state) 중 적어도 어느 하나의 상태로 변경된다. 각 상태는 상호 계층적으로 연계되는 50 내지 170 개의 서브-상태를 포함할 수 있다. 예를 들어, OpenGL ES 1.1에서의 포그 상태를 고려하자. 설정되면, 포그 상태는 포그 색상을 블렌딩 팩터(blending factor) f를 이용하여 래스터라이즈된 단편의 포스트 텍스쳐(post-texture) 색상으로 블렌딩한다. 블렌딩 팩터 f는 다음 3개의 식들 중 하나로 계산된다.And includes a plurality of sub-states. The code generator 332 generates microcode based on the status information. Each state is input to a microcode multiplexer (not shown) to select and output at least one microcode. One microcode may be 64 bits. The code buffer 333 stores the generated microcode, and sends the microcode stored in the shader according to an instruction from the controller 334. [ The controller 334 manages the state machine 311, the code generator 332 and the code buffer 333. The controller 334 can control the change or hold of the state of the state unit 331 according to the attribute of the object. The size of the fixed pipeline code generator 330 configured as described above is only 5% of the size of a general code memory. Thus, the size of the hardware can be reduced and low power consumption can be provided. Now, a more specific example of the operation of the fixed pipeline code generation unit 330 will be described. Figure 5 shows an example of states according to attributes. Depending on the input attribute, the current state may be a state of at least one of an initial state, a vertex state, a texture state, a light state, and a fog state Is changed. Each state may include 50 to 170 sub-states that are mutually hierarchically associated. For example, consider the fog state in OpenGL ES 1.1. Once set, the fog state blends the fog color with the post-texture color of the rasterized fragment using a blending factor f. The blending factor f is calculated by one of the following three equations.

유아 학습용 3D 프린터에 관한 설명입니다.A description of 3D Printers for Early Learning.

Claims (1)

3D 그래픽 처리를 위한 그래픽 프로세서에 있어서, 고정된 파이프라인을 지원하는 API(Application Programming Interface)를 제1 마이크로 코드로 변환하는 고정
파이프라인 코드 생성부; 프로그래머블 파이프라인을 지원하는 API를 제2 마이크로 코드로 변환하는 쉐이더 파이프라인 코드 생성부; 및 상기 고정 파이프라인 코드 생성부 및 상기 쉐이더 파이프라인 코드 생성부와 연결되어, 쉐이더 프로그램을 이
용하여 상기 제1 마이크로 코드 및 상기 제2 마이크로 코드 중 적어도 어느 하나를 처리하는 쉐이더 파이프라인을 포함하는 그래픽 프로세서.
A graphics processor for 3D graphics processing, the method comprising: fixing (API) an application programming interface (API) supporting a fixed pipeline to a first microcode
A pipeline code generation unit; A shader pipeline code generator for converting an API supporting a programmable pipeline to a second microcode; And a shader pipeline code generation unit coupled to the fixed pipeline code generation unit and the shader pipeline code generation unit,
And a shader pipeline for processing at least one of the first microcode and the second microcode.
KR1020170080847A 2017-06-27 2017-06-27 Toys for infant learning using 3D printer and learning method using it KR20190001209A (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020170080847A KR20190001209A (en) 2017-06-27 2017-06-27 Toys for infant learning using 3D printer and learning method using it

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020170080847A KR20190001209A (en) 2017-06-27 2017-06-27 Toys for infant learning using 3D printer and learning method using it

Publications (1)

Publication Number Publication Date
KR20190001209A true KR20190001209A (en) 2019-01-04

Family

ID=65017941

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020170080847A KR20190001209A (en) 2017-06-27 2017-06-27 Toys for infant learning using 3D printer and learning method using it

Country Status (1)

Country Link
KR (1) KR20190001209A (en)

Similar Documents

Publication Publication Date Title
US9978115B2 (en) Sprite graphics rendering system
KR102442487B1 (en) Graphics processing systems and graphics processors
JP6309620B2 (en) Use a compute shader as the front end for a vertex shader
US9916674B2 (en) Baking path rendering objects into compact and efficient memory representations
KR102651126B1 (en) Graphic processing apparatus and method for processing texture in graphics pipeline
KR102381945B1 (en) Graphic processing apparatus and method for performing graphics pipeline thereof
US10432914B2 (en) Graphics processing systems and graphics processors
KR101057977B1 (en) 3D graphics processing with fixed pipelines
US8907979B2 (en) Fast rendering of knockout groups using a depth buffer of a graphics processing unit
US10262391B2 (en) Graphics processing devices and graphics processing methods
KR102482874B1 (en) Apparatus and Method of rendering
JP5864474B2 (en) Image processing apparatus and image processing method for processing graphics by dividing space
US10062140B2 (en) Graphics processing systems
KR101227155B1 (en) Graphic image processing apparatus and method for realtime transforming low resolution image into high resolution image
KR20190001209A (en) Toys for infant learning using 3D printer and learning method using it
Sawicki et al. 3D mesh viewer using HTML5 technology
KR100691846B1 (en) Method and apparatus for processing 3d graphic data
CN115769264A (en) Load instruction for multi-sampling anti-aliasing
EP4168976A1 (en) Fine grained replay control in binning hardware
KR20160077559A (en) Real time interal imaging method