3D Web Developer/computer_graphics

[ 컴퓨터 그래픽스 ] 웹 그래픽이란 무엇인가? ( WebGL, OpenGL, WebGPU )

안다미로 : 담은 것이 그릇에 넘치도록 많게. 2024. 10. 13. 21:08

[ 컴퓨터 그래픽스 ] 웹 그래픽이란 무엇인가? ( WebGL, OpenGL, WebGPU ) 

 

 


∇ Web Graphic (웹 그래픽 )

목 차 

1. 웹 그래픽스의 기초
2. OPen Gl & WebGl
3. 개선된 API
4. WebGPU

 

 


 

1. 웹 그래픽스의 기초.


      웹 그래픽스는 웹 브라우저에서 2D 및 3D 그래픽을 렌더링하는 기술을 의미합니다.

 

       이 기술은 유저들의 웹 브라우저가 GPU(그래픽 처리 장치)를 활용하여 

                    그래픽 요소를 화면에 표시합니다.

 

 

            ∇ 하드웨어 가속( Hardware Acceleration )의 중요성.

                  - 하드웨어 가속은 그래픽 처리를 CPU에서 GPU로 이전시키는 기술입니다.  

                      이 기술을 활용하면

 

                          ∂ 그래픽 작업의 처리 속도가 향상됩니다.

                          ∂ 더 복잡한 그래픽 효과와 애니메이팅을 원활하게 렌더링할 수 있습니다.

                          ∂ CPU는 다른 작업에 할당/집중 할 수 있게 됩니다.

 

        

            ∇ GPU [ Graphics Proccessing Unit ] 를 사용하는 이유 : 성능과 효율성.

 

                 - 컴퓨터가 60fps에서 그래픽을 렌더링하려면,

                   수많은 linear algebra( 선형 대수) 혹은 matrix multipliction(행렬곱셉) 계산을 필요로 합니다.

 

                          ♧ 성능과 효율성.

                                  - 그래픽 렌더링은 상당한 양의 데이터(버텍스값, 텍스처데이터, 라이팅*쉐이딩 정보 등)를 처리하고

                                        복잡한 그래픽 알고리즘을 수행해야 합니다.

 

                                 - 이렇게 복잡한 작업들은 '병렬 처리'와 '고성능 벡터 연산'을 필요로 합니다.

 

                                 - CPU는 일반적으로 코어 수가 제한되어 있고,

                                   직렬적인 작업에서 더 적합한 설계구조를 가지고 있습니다.

                                 - 반면에, GPU는 많은 수의 병렬 처리 유닛을 가지고 있어 동시에 많은 작업을 처리 가능합니다.

 

                                 - 이와 같은 이유로 GPU는 그래픽 렌더링 작업 환경에 특화된 아키텍처 구조를 가지고 있어서

                                        동시에 데이터를 처리하는데 적합하므로 CPU보다 더 높은 성능과 효율성을 제공 가능 합니다.

 

 

 

 

 

 


∇ 주요 웹 그래픽스 API

 

 

      ∇ Open GL & WebGL


 

   WebGL은 HTML5와 함께 등장했으며,  대부분의 주요 웹 브라우저(Chrome, Firefox, Safari, Whale ) 상에서 지원됩니다.

 

       OpenGL과 WebGL은 "크로노스 그룹(Khronos Group)에서 운용담당하고 있습니다.

 

 

 

 

           ∞ OpenGL [ Open Graphic Library ]

                 

Open GL

                 - 92년도부터 사용해온 OpenGL은 2D 및 3D 그래픽 애플리케이션을 개발하기 위한

                       크로노스 그룹의 플랫폼 API입니다. (라이브러리가 아닌 API)

 

                 - 주로 C++로 작성*구성되어있으며,

                    컴퓨터의 그래픽 카드(GPU)를 사용하여 그래픽 작업을 수행가능하도록 합니다.

                   웹 환경상에서 사용하기 위해서는 외부 플러그인을 필요로 합니다.

 

 

 

 

           ∞ WebGL [ Web Graphic Library ]

webgl

 

                 - WebGL이란, 인터렉티브한 환경의 2D 및 3D 벡터 그래픽을 구현하기 위한 자바스크립트(JS) API입니다.

 

                 - 클라이언트의 GPU를 사용하며, 외부 플러그인(ex 플래시) 없이 

                    직접적으로 웹 애플리케이션 Canvas에 하드웨어 가속 그래픽을 적용 할 수 있습니다.

 

 

                - 사용 예시 : 3D Web Design, Games engine( unity, unreal), Data Visulization, Physics simulations

 

 


 

      ∇ 개선된 (네이티브 그래픽) API


          2014년~2016년 사이에는 점점 상향되는 그래픽 렌더링 수준과, 머신 러닝 등의 새로운 렌더링 알고리즘을 위한

             새로운 네이티브 GPU API 들이 발표되었습니다.

 

 

            이 기간중에 시중에 릴리즈된  GPU API로는 

                   크로노스 그룹이 개발한 " Vulkan"과 

                    OpenGL 및 WebGl을 대체하는 목적으로 만들어진 애플의 Metal,

                   그리고 MS의 Direct3D 12가 있습니다.

 

 

                    ∞ Vulkan.

 

                           - 크로노스 그룹이 개발한 저레벨 GPU API

                           - 높은 성능과 다양한 플랫폼에서의 크로스 플랫폼 지원을 목표로 합니다.

 

                           - Vulkan은 렌더링, 컴퓨팅 및 가속화된 그래픽 작업을 위한 기능을 제공하며,

                                개발자가 하드웨어의 세부 사항(내부 코드)를 직접 제어할 수 있는 저수준 API입니다.

 

                     ∞ Metal

 

                           - 애플이 macOS 및 ios에서 OpenGL을 대체하기 위해 도입한 자체 그래픽 API 입니다.

 

                           - Metal은 빠른 성능과 저전력 소모, 낮은 오버헤드 등을 특장점으로 하며

                                 애플의 하드웨어 및 소프트웨어 통합에 최적화된 설계구조를 가지고 있습니다.

 

                     ∞ Direct3D 12

 

                           - ms가 윈도우 운영 체제용으로 개발한 저수준 GPU API입니다.

 

                           - 다중 스레딩 및 병렬 처리를 지원하여, CPU 및 GPU 간의 효율적인 작업 분배를 가능하게 합니다.

                              이를 통해 높은 성능과 최적화된 그래픽 렌더링을 제공합니다.

 

                    새로운 GPU API들이 더 나은 성능과 제어력을 제공함으로써 더 복잡하고 현실성 있는 그래픽 렌더링 결과를

                            구현할 수 있게 되었습니다

 

                       개발자들은 이러한 API들을 활용하여 높은 수준의 그래픽 품질과 성능을 달성할 수 있으며,

                           머신 러닝 및 새로운 알고리즘을 적용한 혁신적인 그래픽 앱을 개발할 수 있습니다.

 

 


      ∞ 저수준 GPU API & 고수준 GPU API


                - 저수준 GPU API는 그래픽 처리를 위한 하드웨어 인터페이스를 제공하는 프로그랭밍 API

 

                 - 개발자에게 하드웨어 세부 사항에 직접적으로 접근하고 제어할 수 있는 기능을 제공합니다.

                     고수준 API 보다 더 낮은 수준의 추상화를 제공하여 더 많은 제어와 최적화를 가능하게 합니다.

 

 

                 - 고수준 API( Opengl, Direct X 11)는 개발자가 그래픽 작업을 추상화된 인터페이스를 통해서 

                      수행하도록 설계되었습니다.

                      - 개발자가 그래픽 작업을 더 간단하게 처리가능하도록 하지만,

                               하드웨어 세부 사항이나 최적화 옵션에 대한 직접적은 접근은 제한됩니다.

 

               

 

 

 


      ∇ WebGPU : 차세대 웹 그래픽스 API


   webGPu는 최신 GPU API를 웹 환경에서 사용 가능 하도록 해주는 새로운 웹 그래픽 API입니다.

 

WebGPU의 특징:

  • Vulkan, Metal, DirectX 12와 같은 현대적 API를 웹에서 사용 가능하게 합니다.
  • 웹사이트가 사용자의 GPU를 직접 제어할 수 있게 해줍니다.
  • 그래픽 렌더링뿐만 아니라 머신 러닝에도 활용될 수 있습니다