UE4 포스트 프로세스에서 재 작성

2894 단어 위 4UnrealEngine
작년, UE4 경력 3개월 정도밖에 없을 때에 포스트의 학습이 어려운 일을 씁니다.

리라이트란?



포스트상에서 자전으로 디퍼드 렌더링하는 것과 같은 것으로, 미리 렌더링된 법선이나 월드 위치 정보를 바탕으로, 포스트 프로세스상에서 라이팅을 실시합니다.
UE4에 존재하지 않는 라이팅 모델의 적용이나 디폴트의 라이트 채널이나 마스크로는 어려운 표현을 할 수 있습니다.
완전히 바꿀 때도 있고 기존의 라이팅 결과에 라이트를 더할 수도 있습니다.

구현



작년 연습이 온 UE4에서의 리라이트, 왼쪽 UE4 표준, 오른쪽, 포스트로 리라이트 피 c. 라고 r. 코 m/ZFw6→0lbl


<script async=""src="https://platform.twitter.com/widgets.js"/>

이번에는 기존 결과에 추가하지 않고 대체하는 구현을하고 있습니다. 알기 쉽게 화면의 절반보다 왼쪽이 UE4의 표준 출력, 오른쪽이 G 버퍼 시작, 포스트 프로세스에서 얻을 수 있는 정보를 바탕으로 라이팅한 것입니다.

준비



포스트 머티리얼을 하나만 준비하면 됩니다.

라이팅을 하기 때문에, 톤 맵 적용 전의 패스로 설정합시다.

10월 20, 2019



게시물에서 재 작성을 위해 얻을 수 있는 정보



카메라 위치, 월드 좌표는 전용 노드에서 얻을 수 있습니다.

다음은 SceneTexture 노드에서 얻을 수 있습니다.

- 머티리얼 AO, AO, 월드 법선, 메탈릭, 러프니스, 베이스 컬러



취득, 구현이 어려운 일



그림자



그림자 맵을 생성할 수 없는 것이 단점입니다. 만약, 아무래도 그림자를 갖고 싶은 경우는, 레이마치 여자하는 실장을 하는지, 같은 위치, 방향의 라이트가 씬상에 있다면 딜라이트 해 사용할 수가 있습니다.



이미시브



포스트 머티리얼에서는 이미시브를 취할 수 없습니다.

원하는 경우는 미리 다른 RT에 렌더링 해 두는 등의 대응을 할 필요가 있습니다.



조명



직접 빛



이번에는 평행광만 GGX로 맞춤 노드를 구현했습니다.

viewDir에는 월드 좌표로부터 카메라 위치를 뺀 것을, lightDir에는 벡터 파라미터로서 밖으로 내고 있는 것을 건네주고, 마찬가지로 벡터 파라미터의 lightColor에는 α성분에 인텐시티를 팩해 넣고 있습니다.



환경광



환경 빛 주위에 준비한 것은 프레넬 함수와 큐브 맵 2개입니다.

radiance 큐브는 거칠기에 따라 참조하는 Mip 레벨을 변경합니다. 이 소재는 사전에 cmft나 IBLBaker등의 툴로 필터 처리해 작성해 둡니다.

irradiance 큐브에 대해서는 텍스처가 아니라 SH의 계수인 경우가 많지만, 이번에는 손을 뽑아 텍스처를 그대로 참조하고 있습니다.



이 AO, 머티리얼 AO의 영향을 적용하고 직접 빛의 결과와 합성하면 완성됩니다



요약



아무래도 표준의 라이팅만으로는 표현이 어렵거나 멀리 되어 버리는 때가 있습니다. 그럴 때, 가려운 곳에 손이 닿는 경우가 많기 때문에 리라이트용의 함수 등 정비해 두면 좋을지도 모릅니다.

다만, 앞서 했던 대로, 그림자나 이미시브의 문제는 있으므로, 그 근처 유의한 후에 사용해 가는 것이 좋을 것입니다.


좋은 웹페이지 즐겨찾기