일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
- noise
- WOOD
- Ice
- post process
- character
- vignette
- raymarching
- normal
- texture
- bug fix
- UV
- 오블완
- Swamp
- accumulation
- particle simulation
- dissolve
- ghost
- particle
- sphere mask
- Vertex Animation
- 티스토리챌린지
- UI
- burn
- vertex offset
- optimization
- world position
- pivot painter
- snow
- Liquid
- sampling
- Today
- Total
SuHong Log
셰이더? 쉐이더? Shader 란 무엇인가 본문
제가 매일 읽고, 쓰는 것임에도 불구하고, 셰이더가 무엇인지 정확하게 설명하려면 어디서부터 시작해야 할지 난감하더군요. 그래서 이 참에 한 번 간략하게 정리하고자 이 포스팅을 쓰게 되었습니다.
정의
그래서 셰이더란 무엇일까요?
셰이더(Shader)는 컴퓨터 그래픽스 분야에서 화면에 출력되는 색상, 명암, 조명 효과 등을 정의하고 처리하는 프로그램입니다. 화면의 각 픽셀에 어떤 값을 부여할지 결정하고, 이를 빠르게 처리하기 위해 그래픽 처리 장치(GPU)에서 병렬 연산(Parallel Processing)으로 처리됩니다. 게임, 영상, 애니메이션, 3D 소프트웨어 등 컴퓨터 그래픽이 필요한 분야에는 전부 쓰인다고 보면 됩니다.
셰이더? 쉐이더?
더 자세히 설명하기에 앞서서, 작은 문제가 있습니다. '셰이더'가 맞는 표기일까요? 아니면 '쉐이더'가 맞는 걸까요?
Shader라는 단어는 그림자, 빛깔을 뜻하는 Shade에서 파생되었습니다. 위에서 설명한 것처럼 화면에 색을 칠하는 역할을 하기 때문인 것으로 보이는데요.
국립국어원에서 제시한 한국어의 외래어 표기법에 따르면 어말의 [ʃ]는 '시'로 적고, 자음 앞의 [ʃ]는 '슈'로, 모음 앞의 [ʃ]는 뒤따르는 모음에 따라 '샤', '섀', '셔', '셰', '쇼', '슈', '시'로 적어야 하기 때문에 셰이더가 올바른 표기 방식입니다.
한국어 어문 규범
이 누리집은 대한민국 공식 전자정부 누리집입니다.
korean.go.kr
유니티와 언리얼 공식 문서에서는 현재 셰이더라고 표기하고 있습니다.
얼마 전까지도 셰이더와 쉐이더가 많이 혼용되었고, 지금도 혼용되고 있습니다. 하지만 공식문서에서나 최근 출간된 서적에서도 점점 셰이더로 굳어지고 있는 것으로 보입니다.
구조
셰이더는 크게 버텍스 셰이더(Vertex Shader)와 픽셀 셰이더(Pixel Shader)라는 두 가지 부분으로 구성되어 있습니다. 이 외에도 지오메트리 셰이더(Geometry Shader) , 컴퓨트 셰이더(Compute Shader) 등이 있지만 이런 심화 과정은 나중에 다루어 보도록 하겠습니다.
정점 셰이더라고도 부르는 버텍스 셰이더는 3D 모델의 정점(vertex) 데이터를 처리합니다. 공간 상에서 물체가 회전하거나 이동할 때의 정점 위치를 계산하고 각 정점에 상응하는 텍스처 좌표를 전달합니다. 래스터라이저(Rasterizer)는 이 값들을 전달받아서 각 정점을 모아 삼각형 면을 만들고, 그 안에 들어갈 2D 화면의 픽셀로 변환합니다. 래스터라이저에서의 연산이 끝나면 픽셀 셰이더로 넘어갑니다.
프래그먼트 셰이더(Fragment Shader)라고도 부르는 픽셀 셰이더는 화면의 각 픽셀의 최종 색상을 계산합니다. 텍스처 색상, 그림자, 조명을 계산해서 물체 표면의 질감, 빛 반사 효과를 표현합니다. 버텍스 셰이더와는 다르게, 색상 값으로 계산하기 때문에 포스트 프로세스 효과와 2D 환경에서도 사용됩니다.
셰이더와 머티리얼
셰이더가 화면에 그리는 역할을 한다면 머티리얼(Material)은 또 대체 뭘까요? (Material도 머티리얼, 메터리얼 등 표기 방식이 혼용되고 있지만 셰이더와 비슷한 이유로 머티리얼이라고 표기하겠습니다)
흔히 셰이더는 밑에서 돌아가는 코드, 머티리얼은 인터페이스 자체라고도 말합니다. 언리얼 엔진에서는 둘이 거의 같은 것으로 보기도 하지만, 여기서는 유니티 공식 문서를 인용하겠습니다. 셰이더는 사용할 속성과 종류를 정의하는 코드를 포함합니다. 머티리얼은 이러한 속성을 조정하고 텍스처, 색상 등을 할당할 수 있도록 해줍니다.
Unity - Manual: Materials and Shaders
Materials and Shaders There is a close relationship between Materials and Shaders in Unity. Shaders contain code that defines what kind of properties and assets to use. Materials allow you to adjust properties and assign assets. A Shader is implemented thr
docs.unity3d.com
셰이더와 머티리얼의 관계는 레시피와 요리에 비유할 수 있습니다. 셰이더는 요리를 만드는 레시피이고, 머티리얼은 레시피를 실행할 때 쓰는 재료와 도구(텍스처, 값)를 정합니다. 덕분에 셰이더를 재활용하면서도 다양한 머티리얼을 만들 수 있는 것입니다.
참고문서
The Book of Shaders
Gentle step-by-step guide through the abstract and complex universe of Fragment Shaders.
thebookofshaders.com
[포프의 쉐이더 입문강좌] 01. 쉐이더란 무엇이죠? Part 1 | 포프머신
TOP 개발자에게 배우는 컴공수업 | 수업료는 최저시급, 난 최고연봉 | 프로그래밍 공부순서 야근 없이 오직 실력으로 대우받는 프로그래머가 되고 싶다고요? POCU 아카데미에서 시작하세요!
blog.popekim.com
[Graphics] Rendering Pipeline
The Minimal Light is a simple and elegant jekyll theme for academic personal homepage.
leeyngdo.github.io
'Tech Art' 카테고리의 다른 글
Normal Map 텍스처 제작하는 법 (2) Painting (2) | 2024.11.30 |
---|---|
Normal Map 텍스처 제작하는 법 (1) Baking (2) | 2024.11.24 |
Normal Map의 방향 구분하는 법 (1) | 2024.11.23 |
게임 엔진의 좌표계 (0) | 2024.11.11 |