// 셰이더 특징
셰이더는 스크린 위에 낱개의 픽셀마다 실행된다.
실행은 모두 한번에 일어난다.
즉, 픽셀마다 연산이 다르다.
색을 출력하는 하나의 프로그램이자 함수인셈이다.
그리고 컴파일되어 굉장히 빠르다.
// 쉐이더가 빠른 이유
parallel processing 개념에 대해 알아야한다.
CPU는 하나의 큰 공장같은 파이프이다.
각 파이프는 thread라고도 부른다.
문제는 작은 작업들이 스크린 위에 픽셀개수만큼 반복되어야 한다는 점이다.
800x600 레졸루션의 게임이라고 하면 480,000개의 픽셀들이 매 프레임 계산되어야 한다.
이 문제를 풀기위해 등장하는 솔루션이 있다.
바로 parellel processing이다.
강력한 마이크로 프로세서를 몇개 또는 큰 파이프를 쓰는대신,
매우 작은 마이크로 프로세서들을 한번에 돌리는 것이다.
그것이 바로 Graphic Processor Unit. GPU이다.
GPU의 또 다른 슈퍼파워 중 하나는, 하드웨어지원으로 가속된 수학 함수 연산이다.
즉, 소프트웨어상에서가 아닌, 마이크로칩상에서 바로 연산이 진행된다는 이야기다.
이말은 더 많은 삼각함수 연산, 매트릭스 연산이 가능하다.
// 쉐이더가 어려운 이유
GPU의 강력한 컴퓨테이션 능력은 이것을 쓰기위해 따라야할 제약과 제한이 있다.
파이프상에서 병렬처리를 하기위해서는, 각 쓰레드마다, 서로에 대해 철저히 개별적이여야 한다.
쓰레드는 다른 쓰레드에 대해 "실명" 되어 있다고 표현하기도 한다.
서로의 데이터에 대해 엑세스가 없다는 말이다.
그래서 각각의 프로세스들은 서로 데이터를 주고 받고 처리하는것이 불가능하다.
'셰이더 (Shader) > The Book of Shaders (완)' 카테고리의 다른 글
[GLSL] 5 - Shaping functions (0) | 2023.04.17 |
---|---|
[GLSL] 4 - Running your shader (세부내용 생략) (0) | 2023.04.17 |
[GLSL] 3 - Uniforms, gl_FragCoord (0) | 2023.04.14 |
[GLSL] 2 - Hello World (0) | 2023.04.14 |
[GLSL] 0 - 참고사항 (0) | 2023.04.14 |
댓글