01. 매쉬의 종류와 행렬연산
스태틱 매쉬 스켈레톤 매쉬의 차이는 본을 통해서 움직이는 매쉬냐 아니냐에 따라서 달라지는데
엔진에서는 아주아주 큰 차이가 있다.
두 매쉬 다 쉐이더에서 버텍스위치나 크기를 수정할 순 있으나 원리 자체는 다르다
본이 잡힌 매쉬는 완전히 다르게 잡힌다고 생각하면 된다.
(TA를 목표로 한다면 테크리깅은 정말로 중요하게 생각해야만 한다.)
행렬연산이라는 것은 매 프레임마다 캐릭터가 가진 본의 갯수만큼 변한 행렬을 연산을 하게 된다
본이 움직였으니까 어떻게 움직였는지 연산을 해야한다는 소리
버텍스만큼 뼈에 영향을 받고, 그 부분은 웨이트에 따라서 본의 움직임을 따라간다.
02. 텍스쳐 종류와 용법 배우기
베이스 컬러나 러프니스 등 그런것들을 텍스쳐들을 사용해야만 구현할 수 있는건 아니다.
다만 우리가 UV, 그러니까 텍스쳐를 사용해서 하나의 모델에 여러재질을 모아둘 때 한장의 UV로 영역을 지정할 수 있어 적용하기 수월하기 때문에 이용한다고 생각하면 된다.
폴리곤, 엘레멘탈 단위로 지정할 수 있다면 제작이나 수정이 더 수월하다고 생각하면 된다.
파라곤 리소스같은걸 뜯어보면서 에픽이 어떤 방식으로 PBR을 바라봤는가? 연구해봐도 좋을 것이다.
텍스쳐는 재질 표현소재로써, 하나의 비용으로써, 어떤식으로 적용하는 적용방식에서 차이가 있다.
- sheen은 천 재질을 표현할 때 꽤나 중요한 영역이다.
-
코드에서는 UV나 이런것들을 Semantic이라고 부르는데
의미의 종류에 따라서 구조를 선언하고 응용하는 것들이 많다.
노드에서는 그것들을 선언하지 않아도 빠른 테스트를 할 수 있다
코드는 빠른 테스트가 힘든게 단점이다.
-
쉐이더에서 일반적으로 한번에 사용 가능한 텍스쳐를 16장 정도로 규정하고 있다.
정확히는 텍스쳐가 16장이 아니라 샘플러가 선언하는걸 16개로 제한하는데
텍스쳐는 배열형식으로 116장까지 사용할 수 있긴 하다.
터레인은 최적화하기 조금 어렵다.
샘플러를 많이 쪼개서 만들기에는 리소스 제작방식이 너무 힘들어지고
제작방식을이나 시간을 줄이기 위해서 합치기에는 텍스쳐 샘플이 부족한 딜레마를 가지고 있다.
쉐이더에서 16개를 사용할 수 있다고 해도 몇개를 예약을 하둔 것들도 있다.
스태틱 라이트 같은 라이트 맵을 위해 두개를 예약을 하는 등 말이다.
반투명이면 조금 더 복잡해진다.
텍스쳐는 사용 자체가 비용이기에 적을수록 최적화에 도움이 된다.
-
보통 쉐이더만 놓고보면
인스트럭션이라는 계산과 텍스쳐 샘플 위주로 무겁냐 가볍냐 판단을 하게 된다.
연산을 줄이기 위해선 항상 줄여나가야 한다.
최적화는 항상 미리 설계가 되어있어야만 한다.
모바일에서는 3장도 좀 무거운 정도다.
꼭 POT 사이즈로만 사용해야한다 (2의 배수)
Open GL ES 3.1 = 16 Texture Samplers
SM 5.0(DX11) = 16 Texture Samplers
예전에 최적화를 위해 아틀라스라는걸 사용했는데
텍스쳐 하나에 여러가지를 몰아서 한장으로 만들어버리고 UV편집으로 나눠서 사용하는 개념이라고 생각하면 된다.
-
플랫폼이라는 것의 명확한 뜻은 하드웨어를 뜻하는 거고
거기서 더 딥하게 가면 하드웨어가 가진 GPU, 그 GPU가 지원하는 쉐이더 모델을 얘기하는 것이다.
각 버전마다 허용하는 것이 조금씩 다르다.
근데 상용엔진은 알아서 다 해주니 감사하며 사용하도록 하자.
-
메탈릭같은 경우는 딱히 감마보정을 받지 않아도 되는 데이터 텍스쳐기 때문에 sGRB를 사용하지 않고 Linear를 사용한다고 생각하면 된다
03. 마스크맵 활용과 버텍스 컬러 활용
우리는 쉐이더를 제작할 때 많은 수학공식을 사용하기 때문에 명시성이 아주 중요하다.
모든 수치가 0과 1사이 일 수 없다.
우리가 어떤 의도를 가지고 싶을 때 그 의도를 uv로 영역을 지정하고 강도를 지정하는 것이 마스크 맵인 것이다.
마스크맵으로 가장 많이 쓰는 것은 alpha mask라고 생각하면 된다.
thickness mask 처럼 가짜 SSS를 만들 때에도 사용할 수 있다고 생각할 수도 있겠다.
-
모든 매쉬에는 인덱스 버퍼라는 것을 가지고 기본적으로 포함되는 정보가 있다.
그중 버텍스 컬러값이 포함되어 있는데
버텍스 컬러는 텍스쳐를 쓰지않고 특정 영역을 마스크 할 수 있는 거의 공짜인 마스크다!
단점은 폴리곤 단위로만 지정할 수 있는 것
배경에는 조금 기하급수적으로 무거워지는데 캐릭터에는 꽤 득이많다.
픽셀을 그리기 전 단계에서 이미 영역을 알고 들어오기 때문에 참 좋다!
폴리곤이 적으면 점과 점사이에 보간이 생겨 퀄리티가 조금 떨어져보일 수도 있다.
'언리얼 > Shader Study' 카테고리의 다른 글
06. 재질의 기본 이해와 쉐이더 제작 (0) | 2023.05.30 |
---|---|
05. 언리얼 머터리얼 설명과 쉐이더의 특징 (0) | 2023.05.29 |
04. 캐릭터와 언리얼 쉐이더의 구조, 그리고 반투명에 대해 (0) | 2023.05.29 |
02.언리얼 렌더링 파이프라인 (0) | 2023.05.28 |
01. 모바일 환경의 특수성 (0) | 2023.05.27 |