https://unitysquare.co.kr/growwith/resource/form?id=213
유니티 스퀘어에서 HDRP 셋팅에 대한 내용을 e-book PDF 자료로 배포함.
유니티 2021LTS / HDPR 12.x
기존 빌트인에 비해서 포스트프로세싱이나 그래픽 셋팅이 많이 세분화 되어있고 복잡해졌다
기본 HDRP 글로벌 셋팅값 에셋이 있고, 그래픽 퀄리티별로(high,medium,low) 에셋이 나눠지고, 각각 프로필 셋팅이 나눠진다.
하나의 기능을 끄거나 쓰려고 해도 관여하는 셋팅 에셋들이 많아서 복잡한 느낌이라서 그래픽 용어, 설정 방법에 대해 잘 익혀야 다룰수 있을거 같다.
HDRP Rendering에서 Lit Shader Mode를 설정할 수 있고 'Deffered', 'Forward', 'Both' 중에 선택 가능
HDRP는 유연성이 높아서 Both를 선택할수도 있지만 GPU를 많이 소모 하므로 하나만 선택 권장
포워드 렌더링(Forward Rendering)
포워드 렌더링에서 그래픽 카드는 화면의 지오메트리를 버텍스로 분할, 버텍스는 프래그먼트 or 픽셀로 세분화해서 화면에 최종 렌더링.
각 오브젝트는 한번에 하나씩 그래픽스API로 전달, 각 광원마다 리소스 소모, 광원이 많을 수록 렌더링 지연.
별도의 패스에서 광원을 드로우, 여러 광원이 있을 경우 오버드로우 유발.
성능이 중요할 경우 디퍼드 셰이딩 사용 권장
디퍼드 셰이딩(Deffered Shading)
조명이 오브젝트별로 계산되지 않는 방식.
무거운 렌더링을 후순위로 연기하고 두 개의 패스를 사용
첫번째 패스를 렌더링하고 끝나면 두번째 패스를 렌더
성능이 효율적
안티앨리어싱
픽셀 모서리가 들쭉날쭉한거를 부드럽게 처리
MSAA(멀티 샘플 안티앨리어싱) - Forward 렌더링에서 사용
개별 폴리곤 모서리를 다듬는 고품질 하드웨어 기술,일반적으로 PC게임에 쓰는 방식
유니티에서는 포워드 렌더링에서만 작동. 2x,4x,8x,MSAA 4가지 퀄리티로 나눠짐(뒤로 갈수록 고품질)
MSAA는 카메라 컴포넌트 안티앨리어싱 셋팅에 없음
사용하려면 HDRP 셋팅 에셋에서 Lit Shader Mode를 Forward로 설정하고
카메라 컴포넌트에 있는 Custom Frame Setting을 체크하고
Forward로 설정하면 그 밑에 MSAA 안티앨리어싱을 설정할수 있음
*MSAA 제약사항
-디퍼드 셰이딩에서는 못씀
-폴리곤 엣지만 처리하기 때문에 선명한 스페큘러을 받는 특정 텍스쳐&머테리얼은 사용 불가
포스트 프로세싱 안티앨리어싱(카메라 컴포넌트에서 설정 가능)
-TAA(Temporal Anti-aliasing)
지난 프레임과 현재 프레임의 정보를 통해 보정. 사용하려면 모션 벡터를 활성화.
가만 있어도 자글자글한 느낌, 빠르게 움직일때 잔상이 발생할수도 있음.
-FXAA(Fast Approximate Anti-aliasing)
고대비 영역 간에 픽셀을 블렌딩하는 스크린 공간 안티앨리어싱 알고리즘.
연산이 가볍고 빠르나 이미지 선명도가 떨어질수 있음.(모서리 아닌 부분도 약간 흐려짐)
-SMAA(Subpixel Morphologicla Anti-aliasing)
이미지 테두리를 감지하고 블렌딩할 특정 패턴을 찾는 방식. FXAA보다 선명함.
카툰 아트 스타일에 적합
*포스트 프로세싱 안티앨리어싱을 MSAA와 같이 쓸수 있긴 하지만 렌더링 비용이 많이 늘어남
볼륨(Volume)
포스트 프로세싱을 관리하는 컴포넌트
Blend Distance
Local에서만 사용, 볼륨 콜라이더 외부에서 얼마나 먼 위치부터 페이드가 시작되는지 결정
이 값이 0 이면 볼륨이 즉시 전환된다는 의미
ex) Blend Distance가 10이면 카메라가 해당 영역(박스 콜라이더) 밖 10거리에서 부터 효과 서서히 적용
Priority
볼륨에 우선 순위
노출(Exposure)
HDRP에서 노출은 실제 카메라와 동일한 원리를 사용
노출 3요소
-셔터 스피드
-f값 조리개
-ISO 센서의 감도
Fixed
노출 값을 고정해서 직접 설정
Automatic
사람 눈이 다양한 어둡기에 적응하듯 화면 밝기 수준에 따라 자동으로 조절하는 모드
최소 최대 노출값을 지정해서 일정 범위내로 설정 가능
Metering
노출값을 자동으로 조절하는데 반영할 프레임 영역
Average: 카메라 전체 프레임을 반영해서 노출 측정
Spot: 카메라 화면 중앙 부분만 반영해서 노출 측정
Center Weighted: 카메라 중앙부분을 높은 비율로 반영하고 모서리로 갈수록 적게 반영해서 노출 측정
Masked Weighted: 마스크로 사용할 커스텀 이미지 텍스쳐로 반영할 노출 영역 지정
Procedural Mask: 커스텀 가능한 셋팅 값으로 직접 마스크 영역을 지정해서 노출 측정
Automatic Histogram
Automatic 모드를 한단계 더 발전시킨 모드로 이미지에 대한 히토그램을 계산하고 가장 어둡고 가장 밝은 픽셀은 무시함
카메라로 얻는 프레임 이미지가 노출이 다양하고 복잡할 경우에 좀더 안정적인 노출 값을 얻을 수 있음
Histogram Percentages: 무시할 픽셀의 영역을 퍼센트로 지정
Curve Remapping: 노출 곡선 다시 맵핑
Curve Mapping
Automatic모드의 또 다른 버전
곡선을 활용해서 노출에 대한 반응을 더 디테일 하게 지정
Physical Camera
Physical Camera로 설정하면 카메라 컴포넌트의 Physical옵션에 대한 값을 적용해서 반영함
광원
LayerMask
라이트 컴포넌트 General의 오른쪽 점 3개를 클릭하면 나오는 메뉴 'Show Additional Properties'를 클릭하면 기능 표시 (이 처럼 몇몇 디테일한 기능은 더보기 메뉴에 숨겨져 있음)
라이팅을 적용할 레이어를 선택해주고, 메쉬 렌더러의 Rendering Layer Mask에서 레이어 적용해주면 작동
광원 앵커
Spot 라이트에 쓸수 있는 기능으로 'Light Anchor'라는 컴포넌트를 추가해서 사용
기존에 라이트 앵글을 맞추려면 직접 각도를 돌렸는데, 광원 앵커를 쓰면 피사체를 앵커 포인트로 두고 피사체와 조명의 관계에 중점을 둔 위치 조정이 가능한 느낌?
광원 단위 및 강도
HDRP는 PLU(물리 광원 단위)를 사용
칸델라, 루멘, 럭스, 니트를 사용 하고 조도의 실제 SI 측정값과 일치
1단위는 1m와 동일
-PLU
광속 단위와 조도를 모두 포함.
광속은 광원에서 방출되는 빛의 총량
조도는 오브젝트가 받는 광원의 총량(보통 단위 면적당 광속)
-칸델라
1칸델라는 양초 하나의 광속과 같음. 촉광이라고도 함
-루멘
광속의 SI 단위, 입체각에 대한 1칸델라로 정의
스폿,점,면 광원에 사용
-럭스
1제곱 미터의 면적에 1루멘을 방출하는 광원이 조도가 1럭스
디렉셔널 라이트에 자주 사용
-니트
제곱미터당 1칸델라에 해당하는 휘도 단위
디스플레이 기기와 LED 패널 밝기 등을 측정할때 주로 사용
-EV100
100 ISO 필름의 노출값인 EV100에 해당하는 강도를 의미
IES 프로파일 및 쿠키
점,스폿,면 광원 처럼 빛이 감쇠될때 감쇠의 형태(패턴)를 구성
IES프로파일을 가져와서 임포트 해주면 사용 가능
환경 조명
환경 조명은 그림자 영역을 채워 어두운 부분이 부자연스럽게 표현되지 않도록 함
볼륨 프로파일 Visual Environment에서 설정
Ambient Mode
-Static
Lighting 창의 Environment 탭에 있는 하늘 설정이 기본값
-Dynamic
Sky Type에서 설정한 내용으로 오버라이드
Sky Type
-HDRI Sky
HDR 사진으로 만든 큐브맵으로 하늘을 표현
-Gradient Sky
Top,Middle,Bottom 3가지 컬러를 사용한 그레디언트 스카이
-Physically Based Sky
그레디언트보다 훨씬 더 사실적인 하늘
미 산란(Mie Scattering), 레일리 산란(Rayleight Scattering) 등의 현상을 모두 포함하는 하늘이 절차적으로 생성
대기를 통해 분산되는 빛을 자연스러운 하늘 컬로 재현
정확한 빛 시뮬레이션을 하려면 디렉셔널 라이트가 필요
안개 및 대기 산란
Fog
-Base Height
일정하고 두꺼운 안개가 위쪽으로 갈수록 옅어지기 시작하는 경계
지정한 값을 넘어가면 Maximum Height에 도달할때까지 안개 밀도가 기하급수적으로 옅어짐
-Fog Attenuation Distance(안개 감쇠 거리)
거리에 따른 안개 감쇠를 설정, 값이 작을수록 멀리 안보이고, 값이 클수록 더 안개가 감쇠해서 더 잘보임
Fog Max Distance와 같이 사용해서 안개의 거리와 감쇠 기능을 설정
-Volumetric Fog
대기 산란 시뮬레이션
만약 작동이 안되면 Prject setting에 HDRP 관련 셋팅에서 Volumetric Fog 체크
볼류메트릭 조명
라이팅 컴포넌트 Volumetrics에 Enable이 체크되어 있어야함
면 광원을 제외한 모든 조명에서 사용가능
Real-time 혹은 Mixed에서는 '갓 레이(God Ray)' 효과를 생성함
-Multiplier
볼륨의 세기 조절
-Shadow Dimmer
그림자가 드리우는 표면에 의해 빛이 줄어드는 방식 제어
값이 0이면 메쉬를 통과해서 조명 볼륨이 생김
값이 1이면 메쉬에 가려진 부분은 조명 볼륨이 안생김
Local Volumetric Fog
일정 영역에만 볼류메트릭 포그를 생성하는 기능
볼륨 시스템 외부에 있는 별도의 컴포넌트(Volume에 오버라이드 해서 쓰는 방식이 아님)
빈 게임오브젝트에 'Local Volumetric Fog' 컴포넌트를 추가해서 사용해도 됌
Local Volumetric Fog에 사용할수 있는 샘플을 '패키지 매니저'의 HDRP 하단에 Sample카테고리에서 받을수 있음
구름
HDRP에서 구름은 2D텍스쳐 형태의 'Cloud Layer'와 'Volumetric Cloud' 2종류가 있다
Cloud Layer
Visual Environment의 Background Clouds에서 Cloud Layer를 선택해주고 Cloud Layer를 오버라이드 해서 사용
단순 2D텍스쳐 형태의 이미지이다 보니 볼륨 감은 크게 없는 구름의 형태
조명과의 상호작용이 크게 두드러지지 않고 부자연스러움
여러 채널로 나눠진 형태이다 보니 디렉셔널 라이트의 방향에 따라 음영의 방향 정도는 바뀌는거 처럼 보이긴 함
RGBA채널에 따라 '적운','층운','권운','성긴 구름'으로 구분함
구름 레이어를 2개 사용하면(구름 텍스쳐 2개) 최대 8개의 구름 풍경을 시뮬레이션 가능
구름 그림자도 표현 가능(구름의 색이 묻어나는 정도)
Volumetric Cloud
구름이 광원과 상호작용해야 하는 경우 적합함
Advanced옵션으로 설정하고자 하면 굉장히 세부적인 설정 가능
그림자
광원의 시점에서 뎁스 정보를 저장하는 섀도우 매핑 기술로 렌더링
섀도우 캐스케이드
방향 광원의 경우 섀도우 맵이 씬의 많은 부분을 덮기 때문에 원근 앨리어싱이라는 문제가 발생.
카메라에 가까울 수록 픽셀이 들쭉날쭉하고 뭉툭해보임
유니티는 '캐스케이디드 섀도우 맵'을 사용해서 이 문제를 해결
카메라에서 가까운거부터 단계별로 그림자 품질을 나눔
컨택트 섀도우
섀도우 맵은 작은 디테일을 캡처하지는 못함, 두 메시 표면이 이어지는 부분이 식별되는 엣지에서 활용.
Volume에서 Contact Shadows를 오버라이드 하고 광원에서 Contact Shadows도 Enable 체크해서 사용.
마이크로 섀도우
더 작은 미세한 그림자를 그릴때 사용
자잘한 지오메트리의 그림자까지 다 하나하나 연산하지 않고, 대신 노멀맵과 오클루전 맵을 이용해서 표현 지오메트리 사용 없이 매우 미세한 그림자를 렌더링
디렉셔널 라이트에서만 적용됌
노멀맵이나 오클루전맵 등이 없으면 효과 없음
반사
스크린 공간 반사(SSR - Screen Space Reflection)
스크린 공간 반사는 뎁스 버퍼와 컬러 버퍼를 사용해서 반사를 계산.
그렇기 때문에 카메라 뷰에 있는 오브젝트만 반사하며 특정 카메라 앵글에서는 렌더링이 되지 않음(부자연스럽게됌)
광택이 있는 바닥과 젖은 평면 표현에 쓰기 좋음
Volume에 오버라이드 해서 사용하려면 HDRP셋팅에서 체크해주어야함(기본값은 해제 상태임)
카메라에서 보인 정보만 가지고 반사를 표현하다보니 허공에 떠있는 사물의 뒷면나 아랫면(카메라에 잡히지 않는 부분)이 반사영역에 나타날수 없음(정보가 없음)
반사 프로브
이미지를 기반으로 반사를 생성하는 기법
프로브는 주변 모든 방향을 구형 뷰로 캡처하고 그 결과를 큐브맵 텍스쳐로 저장
큐브맵 텍스쳐를 사용해서 반사를 추정해서 표현(대략적인 주변 반사광 느낌만 가진거고 거울같은 느낌은 아님)
구 형태 오브젝트의 반사에는 어울림
평면 반사 프로브
평면 오브젝트의 거울 같은 반사 표현에 적합
카메라 앵글에 맞춰 반사각으로 이미지를 캡처해서 그대로 표현
(가상의 카메라가 반사각으로 비춘 화면을 렌더텍스쳐로 받아서 적용한거랑 비슷한 개념)
하늘 반사
하늘 큐브맵 정보를 받음
실시간 조명 효과
HDRP는 볼륨 시스템을 통해 몇가지 실시간 조명 효과를 제공
스크린 공간 앰비언트 오클루전(SSAO-Screen Space Ambient Occlusion)
앰비언트 오클루전은 서로 가까운 주름,구멍,표면에서 발생하는 어두워지는 현상을 시뮬레이션
SSAO는 스크린 공간의 정보만으로 앰비언트 오클루전을 표현하는 방식이기 때문에 효과적이긴 하지만 시야각 밖의 정보는 무시함
Volume에서는 그냥 'Ambient Occlusion'이라고 나옴
스크린 공간 전역 조명(SSGI-Screen Space Global Illumination)
화면의 뎁스 버퍼와 컬러 버퍼를 사용해 반사된 분산광을 계산
라이트매핑이 간접조명을 베이크 하는 것과 비슷하게, SSGI는 광자가 표면에 부딪히고 튕겨져 나갈때 컬러와 셰이딩을 전달하는 방식을 더 정확하게 시뮬레이션함
마찬가지로 화면에 보이는 오브젝트/정보 만으로 시뮬레이션 하기 때문에 카메라 밖 경계부분 부자연스럽게 됌
부자연스러운 카메라 밖 경계부분 SA(스크린 공간)방식이 아닌 반사 프로브 등을 같이 사용해서 보완
스크린 공간 굴절(Screen Space Refraction)
빛이 공기보다 밀도가 높은 매체를 통과할때 발생하는 굴절 시뮬레이션
뎁스 버퍼와 컬러 버퍼를 사용해서 유리와 같은 투명한 머테리얼을 통과하는 굴절을 계산
Volume에서 Screen Space Refraction을 오버라이드 하고
머테리얼 Surface Type을 Transparent로 설정하고 Transparent Input 설정에서 Refraction Model과 IOR(Index of Refraction)값을 설정
포스트 프로세싱
Tonemapping
HDR(High-Dynamic-Range 가장 밝은것과 어두운것의 차이를 극대화)컬러를 HDR 보다 제한된 화면의 다이내믹 레인지에 매핑하는 기술
렌더링 결과물의 콘트라스트와 디테일을 개선할수 있음
Shadows, Midtones, Highlights
각각 그림자, 중간 톤, 하이라이트의 색조와 컬러 범위를 제어
Bloom
광원 주변의 빛 번짐 효과
Depth of Field
카메라 초점 효과
White Balance
흰색이 올바르게 렌더링되도록 컬러를 조절하는 기능
Color Curves
색조,채도,광도에 대한 구체적인 범위 조절
Color Adjustments
최종 렌더링 이미지의 전반적인 톤, 밝기, 색조, 콘트라스트를 조정
Channel Mixer
RGB를 채널에 따라 다른 색상으로 믹스
Lens Distortion
렌즈 왜곡
Vignette
이미지의 가장자리를 어둡거나 채도가 낮게 만드는 필터같은 효과
Motion Blur
움직이는 물체에 블러 효과
렌즈플레어
카메라 렌즈에 밝은 빛을 비출때 나타나는 현상으로 카메라 조리개 모양과 일치하는 여러 색상의 다각형 플레어로 나타남
플레어는 렌더링 프로세스 후반에 렌더링되므로 기본적으로는 포스트 프로세싱 효과
패키지 관리자의 HDRP 하단에 Sample에서 렌즈플레어 샘플 다운로드 가능
사용하려면 오브젝트의 컴포넌트에 'Lens Flare(SRP)'를 추가해서 사용
렌즈 플레어의 앵커가 게임오브젝트가 되므로 라이팅 오브젝트의 컴포넌트에 추가해서 사용
디렉셔널라이트일때만 게임오브젝트의 위치와 상관없이 각도에 맞춰서만 반응
점,스폿,면 광원 일때만 게임 오브젝트의 위치와 각도에 맞춰서 반응
Occlusion
-Enable
켜져 있으면 광원이 다른 메쉬에 가려졌을때 렌즈 플레어가 렌더링 되지 않음
-Allow off Screen
카메라 앵글에 광원이 잡히지 않으면 렌즈플레어를 그리지 않는데, 체크해주면 카메라 앵글에 잡히지 않아도 항상 렌즈 플레어를 렌더링함. 카메라 뷰 경계에 렌즈플레어가 들어올때 갑자기 나타나는게 아닌 서서히 들어오는 자연스러운 연출 가능.
Lens Flare Data SRP
프로젝트에서 렌즈플레어 데이터를 인스펙터창으로 볼수 있음
Lens Flare Element로 구성되어 있으며 각 모양은 Polygon,Circle,커스텀 이미지로 고를수 있고 플레어 모양과 컬러 트랜스폼을 디테일하게 설정해줄수 있다
다이내믹 해상도(Dynamic Resolution)
해상도는 성능에 많은 영향을 줌. 다이내믹 해상도는 렌더링 해상도를 줄이고 결과를 출력 화면 해상도에 맞게 조절
2021LTS에서는 시각적 품질은 유지하되 70%이하의 해상도로 렌더링이 가능해짐
렌더링 성능 개선 기술
NVIDIA DLSS(NVIDIA RTX GPU 및 Windows용)
2021LTS HDRP에서 기본적으로 지원, DLSS(딥러닝 슈퍼샘플링)
고급 AI 렌더링을 사용해서 기본 해상도와 비슷한 화질이지만 픽셀의 일부만 렌더링
실시간 레이트레이싱과 NVIDIA DLSS를 사용하면 기존 래스터화 기반 그래픽스의 성능을 크게 개선
-설정방법
패키지 매니저에서 별도로 'NVIDIA'를 설치해주고
프로젝트에 Create - Rendering - HDRP Asset을 만들거나 HDRP 셋팅에서 Dynamic Resolution - DLSS enable을 체크해주고 카메라 컴포넌트에서 Dynamic Resolution 체크해서 사용
AMD FSR(크로스 플랫폼 용도)
FSR(AMD FidelityFX Super Resolution)
저해상도 입력으로부터 고해상도 프레임을 생성하는 오픈 소스 솔루션, 실질적인 성능 개선
별도로 설치하고 HDRP 셋팅 Dynamic Resolution에서 Upscale Filter에서 'AMD FSR 1.0' 선택
'카메라 컴포넌트' Rendering에 'AMD FSR 1.0' 항목에서 설정가능
TAA Upscale(크로스 플랫폼 용도)
TAA단계와 동시에 업스케일 필터를 실행, 다른 안티앨리어싱 기법과 호환되지 않음
HDRP 셋팅 Dynamic Resolution Upscale Filter에서 선택 가능
Upscale Filter에 있는 다른 설정으로 Catmull-Rom,Contrast Adaptive Sharpen가 있음
렌더링 디버거(Rendering Debugger)
Window - Analysis - Rendering Debugger에서 킴
조명,머티리얼,볼륨,카메라 등 관련된 문제를 따로 확인 가능
플레이 중이 게임뷰에서 Ctrl+Backspace키로 메뉴 열어볼수도 있음
Rendering Debugger - Lighting패널 - FullScreen Debug Mode를 고르면 특정 렌더링 화면만 볼수 있음
ex) Screen Space Global Illumination을 고르면 다른 오브젝트는 단색으로 표시되고 SSGI영역만 구분해서 확인가능
Lighting 패널 - Lighting Debug Mode에서 조명 관련해서 볼수 있고
Material 패널 - Common Material Properties에서 Albedo, Normal 등 텍스쳐만 따로 확인 가능
레이트레이싱(Ray Tracing)
기존 래스터화보다 더 현실감 있는 렌더링 구현
최근 하드웨어 가속을 통한 광선 교차가 발전하며 실시간 어플리케이션에서도 레이트레이싱 사용 가능
여전히 래스터화된 렌더링을 폴백으로 사용하는 하이브리드 시스템
몇몇 GPU 하드웨어와 DirectX12 API를 사용해서 프리뷰로 지원
Nvidia 그래픽카드에서 사용가능(자세한 내용은 공식 문서 참조 링크)
-사용방법
HDRP Wizard에서 HDPR + DXR 'Fix ALL' 클릭, 에디터 재시작
HDRP 셋팅에서 Ray Tracing 체크 됐는지 확인
빌드 셋팅에서 호환되는 64bit 아키텍처를 사용
Edit - Rendering - Check Scene Content for HDRP Ray Tracing 클릭
현재 씬이 Ray Tracing사용에 문제 없다면 레이트레이싱 사용에 문제 없다는 문구가 콘솔에 뜸
그러면 볼륨에서 Ray Tracing 오버라이드 해서 사용
레이트레이싱이 작동하면 에디터뷰와 게임뷰 밑에 반투명 흰색 게이지가 채워지면서 연산
에디터상에서 불필요하게 계속 레이트레이싱이 되지 않게 되어 있어서 에디터뷰 창이나 게임뷰창을 쓰지 않을때는 레이트레이싱을 끝까지 진행하지 않음.
Always Refresh를 체크해서 항상 새로고침되게 하거나 해당 창에 마우스 클릭한 상태로 움직여주면 끝까지 진행됌
플레이 중 게임뷰는 항시 연산
레이트레이싱 앰비언트 오클루전
스크린 공간 앰비언트 오클루전(SSAO)를 대체함
스크린 공간 방식이 아닌 광선 추적 방식임으로 SSAO의 문제점인 화면밖 오브젝트도 렌더링에 영향을 줄수 있게 됌
Ambient Occlusion 볼륨에 Ray tracing항목이 생김
광원 클러스트
볼륨에 Light Cluster를 오버라이드해서 사용
HDRP 카메라를 중심으로 하는 축 정렬 그리드로 씬을 나누고 이 구조를 사용해서 광선이 표면에 닿을때마다 조명에 영향을 줄수 있는 집합적인 로컬 조명을 결정
Camera Cluster Range를 조절해서 구조의 범위를 변경
레이트레이싱 전역 조명
스크린 공간 전역 조명(SSGI)과 반사된 간접 조명을 시뮬레이션 하는 라이트 프로브를 대체함
라이트맵을 베이킹하는 프로세스를 거치지 않고도 비슷한 결과를 얻음
Screen Space Global Illumination 볼륨에서 Ray tracing을 선택해서 사용
레이트레이싱 반사
반사 프로브나 스크린 공간 반사(SSR)를 사용하는 것보다 더 높은 품질 구현
화면 밖의 메시도 반사결과에 올바르게 적용
Screen Space Reflection 볼륨에서 Ray tracing을 선택해서 사용하며
Bounce Count를 조절해서 몇번 반사 시킬지 설정가능(거울을 마주보면 무한한 공간이 생기는 것과 비슷한 원리)
레이트레이싱 그림자
모든 종류의 광원은 불투명한 게임 오브젝트의 섀도우 맵을 대체할수 있음
디렉셔널 라이트의 경우 투명한 게임 오브젝트에도 레이트레이싱 그림자 생성가능
실제처럼 그림자가 멀어질수록 부드럽게 표현되는 그림자 생성 가능
-레이트레이싱 그림자 예시
불투명 노란색 구, 반투명 빨간색 구를 배치하고 조명에 따른 비교
피하 산란(Subsurface Scattering)
Subsurface Scattering을 볼륨에 오버라이드 해서 사용
시뮬레이션 하려면 머테리얼에서 Material Type을 'Subscattering'으로 바꿔주어야함
디테일한 피하산란 정보는 Diffusion Profile이라는 에셋으로 제어함
Create - Rendering - HDRP Diffusion Profile(이 파일을 Projectsetting - HDRP Global Settings - Diffusion Profile에 적용)
Volume에 Diffusion Profile Override가 있음
여기 내용은 적용이 잘 안되고 모르겠음
레이트레이싱 셋팅
레이트레이싱에 적용할 여러 기능 제어(공식 문서 참조)
재귀 렌더링(Recursive Rendering)
굴절 및 반사 광선을 재귀적으로 투사(빛이 굴절하고 반사하는 과정을 여러 표면에 걸쳐서 진행)
다중 레이어 투명 오브젝트를 렌더링하는데 좋음
볼륨에서 Recursive Rendering을 오버라이드해서 사용
시뮬레이션 하려면 머테리얼에 'Recursive Rendering(Preview)'를 체크해야함
*재귀적 렌더링은 독립적인 렌더 패스를 사용하므로 다른 레이트레이싱 효과를 렌더할수 없음
경로 추적(Path Tracing)
앞선 레이트레이싱 기법들(그림자,반사,굴절,전역조명 등) 하나로 합친 통합 프로세스
아직 실시간용으로는 적합하지 않음
레이트레싱의 제약사항
-정점애니메이션 지원 X
-데칼 지원 X
-테셀레이션 지원 X
-픽셀 변위 지원 X
-VFX & 지형 지원 X
-MSAA 지원 X
-반사 프로브 지원 X
-그림자에 대한 정확한 컬링이 없으므로 그림자가 누락될수도 있음
스튜디오 오버그래픽스
정준희 Technical Artist
ovgrps@gmail.com
'툴 > 유니티' 카테고리의 다른 글
HDRP 레이트레이싱 / NVIDIA X UNITY 웨비나 (1) | 2023.01.28 |
---|---|
HDRP Procedural Sky (0) | 2023.01.28 |
텍스쳐 압축/최적화 (0) | 2023.01.24 |
병목(Bottleneck) 간단 정리 (0) | 2023.01.24 |
IL2CPP,Mono,Burst (0) | 2023.01.24 |