본문 바로가기
3D웹 프로그래밍/WebGl

웹지엘 ? WebGL ?? 기본원리 -1

by 디찌s 2020. 4. 27.
728x90
반응형

WebGL

웹지엘이란 웹상에서 고급 3D 그래픽구현에 필요한 응용 프로그래밍 인터페이스이다.

 

오픈지엘 ES 2.0을 기반으로 HTML과 자바스크립트를 이용해 ES와 유사한 렌더링 기능을 제공하며, 웹지엘의 렌더링 결

 

과는 애플에 의해 처음 선보여 웹킷 오픈소스 브라우저 엔진에 내장된 HTML5 캔버스 엘리먼트에 그려진다.

 

 

 

그래픽 API 설계

그래픽 API는 2개의 방법이 존재

 

웹지엘은 즉시 모드 API를 사용하고있음.

 


 

즉시 모드 API

즉시 모드 API는 장면(scene)에 변화 여부에 관계없이 매 프레임마다 전체 장면이 다시 그려진다.

 

API를 노출하는 그래픽 라이브러리는 장면에 그려지는 내부 모델에 대한 어떠한 정보도 유지하지 않는다.

 

대신에 애플리케이션이 메모리에 해당 정보를 유지하며, 이는 애플리케이션에 많은 유연성과 제어권을 부여한다.

 

그러나 이러한 방법은 애플리케이션이 초기화와 클린업 과정을 수행하고, 장면에 그려질 모델에 대한 정보를 추적해야 

 

하는 비용이 추가된다.

 

 

보류 모드 API

보류 모드 API를 사용하는 그래픽 라이브러리는 렌더링할 내부 모델과 장면 그래프에 데한 정보를 유지한다.

 

애플리케이션이 API를 호출할 때 내보 모델이 갱신되고, 라이브러리가 어떤 장면을 렌더링할지 결정된다.

 

이는 애플리케이션이 매 프레임마다 완전한 장면을 그리기 위한 명령을 실행하지 않아도 됨을 의미한다.

 

보류 모드 API를 사용한다는것은 그래픽 라이브러리가 사용자를 대신해 애플리케이션상의 많은 작업을 수행 하는것을 

 

의미한다.

 

 

 

그래픽 장치 컴퓨터 시스템

 

 

간략히 설명하자면 애플리케이션은 CPU에 의해 실행되며 메인 메모리(RAM)을 사용한다. 애플리케이션이 3D그래픽을

 

표현하려면 로우 레벨 소프트웨어 드라이버를 호출하는 API를 호출해 그래픽 데이터를 버스를 거쳐 그래픽 처리 장치로

 

전송한다.

 

 

GPU

GPU는 파이프라인을 통과해 여러 단계별로 데이터가 이동하는 방식으로 작동한다.

 

프레임버퍼

그래픽 데이터가 GPU의 파이프라인을 돌아다닐때, 마지막으로 도착하는 곳이 프레임 버퍼이다.

 

프레임 버퍼는 화면에 그려지는 최종 이미지 정보를 담고 있는 메모리이다.

 

프레임 버퍼로 이용되는 물리적인 메모리는 GPU와 이격되어 있을 수 있다.

 

간단한 그래픽 시스템에서 프레임 버퍼는 메인 메모리의 일부를 사용하기도 하지만, 현대의 그래픽 시스템은 보통 프레

 

임 버퍼를 GPU에 부착된 매우 빠른 메모리를 사용하거나, GPU와 매우 근접한 별도의 칩으로 분리시키기도 한다.

 

프레임버퍼는 세개의 하부버퍼들로 구성된다.

 -색상 버퍼

색상 버퍼는 RGB나 RGBA 포맷으로 표현되는 색상 정보를 담고 있는 스크린상의 각 픽셀 정보를 저장하는 직사각형 형

 

태의 메모리 구조이다. 색상 버퍼는 RGB(Red,Green,Blue)의 조합으로 표현되는 색상 저보를 저장하는 비트로 구성된다.

 

또한 프레임 버퍼의 투명도,불투명도 표현에 이용되는 알파채널이라 불리는 비트도 일정 부분 할당 하고 있다.

 

하나의 픽셀의 색상 결정에 필요한 비트의 총합을 프레임 버퍼의 색상 깊이라 부른다.

 

-Z 버퍼

색상 버퍼는 일반적으로 특정 시점에 관측 가능한 3D 장면의 오브젝트를 표현하는 색상 정보를 담고 있다.

 

3D 장면에서 특정 오브젝트는 때때로 다른 오브젝트에 의해 가려지며 이렇게 가려진 오브젝트에 해당하는 픽셀에 대한 

 

이용되지 않는다.

 

 가려진 오브젝트를 판별하기 위해 그래픽 하드웨어는 deep buffer라고 불리는 z버퍼의 지원을 받는다.

 

Z 버퍼는 각 필셀마다 관찰자와 가장 가까운 Primitive의 거리를 저장한다.

 

-스텐실 버퍼

색상 버퍼와 Z 버퍼(프레임 버퍼에서 가장 많이 이용되는 두 개의 버퍼)에 더불어 현대의 그래픽 하드웨어는 스텐실 버

 

퍼도 포함하고 있다.

 

스텐실 버퍼란

 

색상 버퍼의 특정 위치에 오브젝트가 그려지는 모양을 조정한다. 대표적으로 그림자를 표현하는데 사용된다.

 

텍스처 메모리

3D 그래픽의 매우 중요한 기능은 바로 표면에 텍스처를 입히는 것이다.

 

텍스처를 입힌다는 것을 접착제를 이용해 기하 오브젝트의 표면에 이미지를 붙이는 것으로 생각해보자.

 

여기에 사용되는 이미지를 텍스처라 하며, 빠르고 효율적으로 접근 가능하도록 GPU안에 저장될 필요가 있다.

 

따라서 일반적으로 GPU는 텍스처를 위한 특수한 메모리를 포함한다.

 

비디오 컨트롤러

비디오 컨트롤러(혹은 비디오 제네레이터)는 색상 버퍼를 라인 단위로 일정 주기로 훑으며 화면을 갱신한다. LCD 디스플

 

레이에서 전체 화면은 보통 초당 60회 개싱된다. 이를 60Hz의 주사율을 가지고 있다고 한다.

 

 

 


 

 

- 계속 -

728x90
반응형

댓글