본문 바로가기
셰이더 (Shader)/The Book of Shaders (완)

[GLSL] 1 - What is shader?

by Minkyu Lee 2023. 4. 14.

// 셰이더 특징
셰이더는 스크린 위에 낱개의 픽셀마다 실행된다.
실행은 모두 한번에 일어난다.

즉, 픽셀마다 연산이 다르다.
색을 출력하는 하나의 프로그램이자 함수인셈이다.
그리고 컴파일되어 굉장히 빠르다.

// 쉐이더가 빠른 이유

parallel processing 개념에 대해 알아야한다.

CPU는 하나의 큰 공장같은 파이프이다.
각 파이프는 thread라고도 부른다.

문제는 작은 작업들이 스크린 위에 픽셀개수만큼 반복되어야 한다는 점이다.
800x600 레졸루션의 게임이라고 하면 480,000개의 픽셀들이 매 프레임 계산되어야 한다.

이 문제를 풀기위해 등장하는 솔루션이 있다.
바로 parellel processing이다. 
강력한 마이크로 프로세서를 몇개 또는 큰 파이프를 쓰는대신, 
매우 작은 마이크로 프로세서들을 한번에 돌리는 것이다. 
그것이 바로 Graphic Processor Unit. GPU이다.

GPU의 또 다른 슈퍼파워 중 하나는, 하드웨어지원으로 가속된 수학 함수 연산이다.
즉, 소프트웨어상에서가 아닌, 마이크로칩상에서 바로 연산이 진행된다는 이야기다. 
이말은 더 많은 삼각함수 연산, 매트릭스 연산이 가능하다.

// 쉐이더가 어려운 이유
GPU의 강력한 컴퓨테이션 능력은 이것을 쓰기위해 따라야할 제약과 제한이 있다.
파이프상에서 병렬처리를 하기위해서는, 각 쓰레드마다, 서로에 대해 철저히 개별적이여야 한다. 
쓰레드는 다른 쓰레드에 대해 "실명" 되어 있다고 표현하기도 한다.
서로의 데이터에 대해 엑세스가 없다는 말이다. 
그래서 각각의 프로세스들은 서로 데이터를 주고 받고 처리하는것이 불가능하다.

댓글