Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- Toon Shader
- 벡터
- ASW(Application SpaceWarp)
- Three(Two) Tone Shading
- VR
- ColorGradingLutPass
- 프로그래밍 기초
- 개인 바이트
- URP
- Specular
- 메모리 누수
- Private Bytes
- 게임 수학
- Virtual Byte
- 가상 바이트
- Rim Light
- C언어
- 3d
- Cell Shader
- AppSW
- Cartoon Rendering
- 작업 집합
- OculusMotionVectorPass
- Cell Look
- working set
- Windows Build
- URP로 변경
Archives
- Today
- Total
WinCNT
SSAO(Screen-Space Ambient Occlusion) 본문
게임 프로그래밍(학습 내용 정리)/3D Graphic Engine
SSAO(Screen-Space Ambient Occlusion)
WinCNT_SSS 2022. 6. 29. 18:07Ambient Light
주변광, 빛의 성분 중 하나
Legacy Model
Ambient를 색 하나로 표현함
N dot L로 계산이 불가능한 영역을 그냥 색 하나로 처리했음
Ambient 표현의 발전
이후 Ambient에 대해서 여러 발전이 있었음
Ambient Occlusion(주변광 차폐)
차폐도를 계산하는 아이디어
기하적으로 얼마나 들어가(가려져) 있는가로 Ambient를 구성하는 방법
Ambient Occlusion을 그대로 계산한다면?
페이스(혹은 버텍스)마다 n개(모든 공간에 다 쏠 수는 없으니)의 레이를 쏴서
해당 페이스(혹은 버텍스)가 얼마나 차폐되어 있는가를 계산해야 한다
물론 이 방식은 계산하면 계산량이 어마어마하기 때문에 실시간 렌더링에서는 불가능하다
(1프레임 - 0.167초를 넘는 코스트가 발생함)
그래도 정적인 오브젝트에서는 유용한 방법
SSAO
AO 연산을 NDC(정확히는 Screen-Space)로 가져와서 Pixle Shader에서 처리하는 기법
필요한 것 Deferred Rendering에서 추출한 Normal 값과 Depth 값
시점과 Far평면, 그리고 Depth로 특정 픽셀의 3D 위치(벡터)를 알 수 있다
그리고 특정 픽셀의 위치(벡터)에 n개의 랜덤 벡터(미리 만들어 둘 수도 있음)를 더하면
랜덤한 n개의 가까운 픽셀(의 위치)을 찾을 수 있다
그 n개의 가까운 픽셀(의 위치)가 특정 조건(벡터와 노멀 벡퍼, 그리고 깊이 등등)을
만족하는 픽셀들로 SSAO 맵을 만들 수 있다
물론 SSAO은 어디까지나 근사치이며,
실제로 만들면 자글자글한 경우가 많아서 Blur를 적용하기도 한다
SSS
'게임 프로그래밍(학습 내용 정리) > 3D Graphic Engine' 카테고리의 다른 글
PBR(Physically Based Rendering) 개론 (0) | 2022.07.13 |
---|---|
PBR(Physically Based Rendering) - Regacy Model 복습 (0) | 2022.07.13 |
Deferred Rendering (0) | 2022.06.22 |
Shader (0) | 2022.06.15 |
Subsystems (0) | 2022.06.10 |