언리얼 렌더링 _ 03
쉐이더
쉐이더의 유형은 다양.
쉐이더란 간단한 작은 프로그램으로 입력변수를 계산해서 다양한 변수를 출력하는것
숫자를 받아 UE에서 계산해서 출력한다.
버텍스 쉐이더 -
하는일 3가지, 로컬에서 월드로변환, 쉐이딩을 처리, 오프셋적용
로컬 버텍스 포지션을 월드포지션으로 계산 버텍스를 렌더링할 위치를 정한다.
버텍스 쉐이더는 스무딩을 처리하고, 하드/소프트에지와 버텍스 컬러를 처리
UE의
World Position Offset
사용되는 예시
클로스(버텍스 쉐이더로 구동) 물 디스플레이스먼트에서 물결, 폴리지의 바람애니메이션
폴리지의 바람애니메이션을 버텍스 쉐이더로 처리하는 이유는
수많은 오브젝트들을 리깅애니메이션으로 처리 하게 되면
CPU가 위치값을 계산하고 버텍스를 움직여 야하는데
매 프레임마다 수많은 오브젝트를 계산해야되는 상황 (과부하)
하지만 버텍스 쉐이더는 최적화가 잘되어있다.
그래서 버텍스 쉐이더에서 이작업을 한다.
버텍스쉐이더는 실제로 모델링을 움직이는 것이 아니라. 그냥 시각 효과 이기때문에
버텍스 쉐이더의 포지션오프셋을 적용 시켯을때 CPU는계산을 하지 않음
피직스나 콜리전에 영향을 주지않는다.(이점을 유의해서 작업 해야한다.)
폴리지,초목 등 버텍스 쉐이더 효과를 사용하고 있다면.
일정 거리에서 월드 포지션 오프셋을 비활성화 해 주어야한다.(공부 해야 될부분)
멀리서 보이지 않는 거리에 있어도 계속 계산을 하기 때문이다.
하이폴리곤 오브젝트에는 버텍스 쉐이더가 단순해야 좋다.
폴리곤이 많은 나무 같은 경우에 단순하게 해주자
------------------------------------------------
이미지를 화면으로 가져오는 프로세스
래스터라이즈 프로세스
3D데이터를 픽셀로 변환하는것
레스터라이즈는 드로우콜 단위로 이루어진다.
---------------------------------------------------------
픽셀
픽셀 하나에는 하나의 폴리곤 만 표시된다.
한픽셀은 절대 폴리곤 둘이상을 표현하지 못한다.
폴리곤오브젝트가 10만개라도 1픽셀 크기로 보일만큼 먼 거리라면
실제 보이는 폴리곤은 딱하나. 하지만 처리하는 폴리곤수는 여전히 10만개라 퍼포먼스 차는 없다.
(극단적인예)
--------------------------------------------------------------------
오버쉐이딩
하드웨어 설계상 항상 2x2픽셀 퀘드를 사용하여처리
1픽셀만 보이도록 채우는 경우라도 쉐이딩은 4픽셀을(2X2로 계산) 채운다.
이것을 오버쉐이딩 이라고 한다.
오버쉐이딩은 래스터라이즈에 밀접한 관계와 영향이있다.
오브젝트를 멀리서 보게되면 렌더링이 느려지는데,
적은수의 픽셀에 더많은 폴리곤이 있기때문에
폴리곤은 밀도가 높으면 렌더링비용이 비싸짐
원거리 에서보면 밀도가 자동으로 높아진다.
엔진에서 이것을 시각적으로 볼수있는데.
엔진의 뷰포트에서
View mode - Optimization View modes-Quad Overdraw 를 선택해주면 시각적으로 볼수있다.
밀도가있는 오브젝트를 가까이서볼때는 good이지만 카메라를 뒤로 뺄수록 bad로 변하는걸 볼수있다.
(폴리곤수는 같은데 표시할 픽셀수가 적기때문에 즉 픽셀당 폴리곤 밀도가 높아 졌기 때문에)
LOD를 적용 시켜서 해결할 수 있다.
이것을 보고 어느 시점에서 LOD를 적용 시켜야 할지 알게 되었다.
디퍼드 렌더링의경우 오버쉐이딩의 영향을 많이 받지않는다고한다.
하지만 포워드 렌더링의경우(모바일,VR)에서는 퍼포먼스를 정말많이 신경써야함으로
이부분을 많이 신경써야한다고함.
얇은트라이앵글, 밀도가높은 폴리곤일수록 오버쉐이딩에 영향을 준다.
2X2픽셀 쿼드를 많이 통과(계산) 하기 때문에
예시로
(실린더 캡에 버텍스처리할때 실린더 캡에 버텍스를 하나로 몰아넣는 경우에 오버 쉐이딩이 발생 한다고 한다.)
쿼드작업으로 트라이앵글이 몰리지않게 작업을 해주는게 좋다.
하지만 요즘 하드웨어는 성능 이좋아서 그리 큰 차이가 없다고한다.
-----------------------------------
레스터 라이즈가 끝나고
이미지화 된다. 이이미지를 Gbuffer. 라고한다.
Gbuffer란 렌더링에서 출력하는 다양한 이미지 세트
머터리얼에서 라이팅 ,포그등 모든것의 합성에 사용된다.
이후에 계산은 지오메 트리가아닌 단순히 그림을 사용하여 계산된다.
(직설적으로 표현하자면 포토샵 필터링이다.)
최종적으로 언리얼 뷰포트 에서 보여진다.
--------------------------------------------------------------