리플렉션
리플렉션은 실시간으로 처리하기 정말어렵다. 가장 어려운 부분중 하나이다.
라이트와 쌍벽을 이룬다.
어려운 이유는 씬에 존재하는 리플렉션마다 전체씬을 다시 렌더하기때문.
퍼포먼스나 하드웨어 성능상 불가능 하기때문에 일종의 속임수를 사용하여 난제를 해결
처음 실행하는 우선순위가 가장낮은것은 리플렉션 캡쳐이다. 기본적인시스템
(리플렉션 캡쳐란 특정위치에서 스태틱 큐브맵을 캡처 미리 계산한다
매우빠르기 때문에 부정확하고 국소적이다. )
여기에선 세가지 시스템이 사용되며, 서로 같이 사용한다.
여러가지 기법을 조합하여 당면한 문제를 해결하고 실시간 렌더링을 이루어낸다.
----------------------------------------------------------------------------------------------------
리플렉션 캡쳐의 특징
뷰포트에 캡쳐를 움직이는 순간 카메라의 위치와 캡처한 위치가 달라진다. (업데이트 해주어야함)
360도 캡처한 사진을 모델에 블렌딩 하는기능
완성된 결과물을 보면 캡쳐를 올려놓고 설정한대로 보이지않는다.
SSR및 복잡한 머터리얼,라이팅과 블렌딩되기 때문에
미리 계산한다는 말은 레벨을 여는 순간 계산하고 다시 캡처한다.
툴바 빌드메뉴에 리플렉션 캡처 업데이트 버튼 혹은 디테일페널에서 업데이트를 할 수 있다.
앱을 패키지하면 실제로 텍스처를 구워서 게임에 넣는다
-------------------------------------------------------------------------------------------------------
리플렉션 액터 유형3가지
(스피어, 박스, 플레이너)
스피어와 박스리플렉션은 비용이 가장 저렴(정적)하다. 플레이너(동적)가 가장 비싸다.
-------------------------------------------------------------------------------------------------
스피어 리플렉션 캡쳐(정적이다)
구체의 영향권에있는 범위내에 리플렉션을 캡쳐한다.
끝으로 갈수록 페이드 블러처리가 되는 특징이 있다.
스피어형태로 캡쳐가 외곡이되는 단점(부정확하다)
미리 계산해서 빠르다(정적)
거이 모든 콘텐츠에 기본 구성으로 사용
이것을 기본으로 토대를 만들고 거기에서 추가 작업 을한다.
2개의 캡처가 겹치면 페이드가 되기 때문에 블렌딩이된다.(크로스 페이드라고 한다.)
더 가까운쪽의 페이드 비율을 결정한다.
큐브맵을 등록하여 리플렉션을 캡쳐할수도있지만 일반적으론 씬에서 캡쳐해 사용한다.
사용요령
전체 영역을 커버할 스피어리플렉션을 하나 설치하고, 중요 포지션에 리플렉션 캡처를
추가해가면서 리플렉션을 다듬는다.(리플렉션 뷰모드로 전환하여 시각적으로 관찰하며 배치한다)
너무 많이 겹치면 비용이 비싸짐으로@@@@ 과용하면 안된다.
뷰모드로 스피어리플렉션을보면 원형이기때문에 리플렉션이 구형태로 외곡 되어 보인다.
이것은 스피어 캡쳐액터를 활용한 최적의 작업방식.
---------------------------------------------------------------------------------------------------
박스 리플렉션 캡쳐(정적이다)
박스형태의 리플렉션을 캡쳐
박스 리플렉션 캡쳐는 모서리에서 약간의 오류가 있다.
매우 네모난 레벨이나. 네모난 오브젝트(사각거울)등을 캡쳐할때 쓰는게 좋다.
사용해보면 박스가끈기는지점에 칼같이 캡쳐가 되는걸 볼수있다.
반면 스피어캡쳐는 구형태의영역이기때문에 리플렉션이 끈기는 부분에 블러가생겨
작업자의 의도대로 작업을 하기 편하다.
일반적으로는 스피어 리플렉션을 사용하게될것.
플레너 리플렉션 (동적이다)
그리많이 사용되지 않은신기능.
지정한 위치에서 캡처
세팅에따라 무거워질 수 있다.
정확한 리플렉션이 필요한 표면에 좋다.
제한된 영역에서 작동하기 좋다.
- 세팅에서 활성화해주어야 사용할 수 있다.
프로젝트세팅 - Rendering - Lighting - Support global clip plane for Planar Reflections
를 활성화 해 주어야 한다.
레벨과 모든메시와 텍스처의 사본을 취해서 이를 위 아래로 뒤집은 다음 그걸 리플렉션으로 사용한다.
매우 좋은 리플렉션이 나오지만 그비용은 메시와 머티리얼의 비용에 직접적으로 연관이된다.
거울같은 리플렉션을 캡쳐할수 있다.
플레너 리플렉션 의 비용은 자신의 메시와 메테리얼비용에 직접 연관된다.
옵션
디테일 페널에서 Render Scene Two sided
위 아래 캡처를 보이게 설정
플레너 리플렉션의 다양한 옵션 들이있다.
이 옵션들을 조정해서 저렴하게도 이용할 수 있다.
비용이 비싸기 때문에 렌더링 시간이 더해질수가 있다.
----------------------------------------------------------------------------------
스크린스페이스 리플렉션(SSR)
모든것을 실시간으로 처리
정확 하지만 노이즈가 있고 무겁다
현재 보이는것만 반사한다.
(카메라로 보이는것 만을 렌더링을 한다.)
카메라의 모서리를 보면 리플렉션이 끈기는 현상이보 인다.
퍼포먼스가 매우 중요한 상황이라면 끄는것을 추천
포스트 프로세스 볼륨에 있다.
Rendering Features에
Screen Space Reflections
(영상에서는 수치를 100을주어서 활성화를 하였다.)
스피어, 박스에서는 레벨의 모든 다이나믹이 리플렉션 캡처로 고려되지 않는다.
뭔가 역동적으로 리플렉션이 되어야 한다면 스크린스페이스나 플레이너 리플렉션을 사용
스피어,박스캡처는 정적이므로 다이나믹한 설정이 필요한 경우에 켜준다.
------------------------------------------------------------------------------------
모두 저마다의 장단점이 있기 때문에 세가지 시스템을 함께 사용하여
혼합된결과를 만들어낸다.
위에 모든것을 꼭 사용할 필요가 없다, 반대로 다 사용할 수도있다.
상황에 맞게 사용 하는 것이 중요
-------------------------------------------------------------------------------------
캡쳐시 리플렉션의 전반적인 퀄리티를 올리는 방법으로는
프로젝트세팅- 렌더링 - 리플렉션 - 리플렉션 캡쳐 레졸루션 을 올리면된다.
주의해서 올려야 한다. 기본 64설정 대부분의 프로젝트에서는 꽤좋긴하나
더나은 해상도를 원한다면 숫자를 조금실 올려가며 원하는 결과가 나오는지 확인
스카이 라이트의 큐브맵 레졸루션을 올려주는 방법도있다.
메시 전체에 더나은 보간을 주도록 하는방법
반사될 오브젝트를 선택해 옵션을 켜준다.
High Precision Static Mesh Normal & Tangent Encoding 활성화
이옵션과 같이 설정되어야 하는부분이
프로젝트세팅 - 렌더링 - GBuffer Format -Default 를
High Precision Normals - 8비트 높은정밀도
Force 16 Bits Per Channel -16비트
G버퍼 포멧을 8비트 정밀도로 설정하거나 16비트로 설정할 수 있다.
이역할은 메시전체에 더나은 보간을 주도록 하는것
마지막으로 메시가 높게 테셀레이트 되었는지 확인하는 방법.
메시에서 버텍스를 많이 사용할 수록 픽셀간에 더나은 보간을 하게된다.