[Graphics] 그래픽스 트러블 슈팅
모델이 검게 나오는 경우
1. 조명
- 광원이 없는가
- 광원이 너무 멀거나 약한가
- 모델이 그림자 안에 있는가
2. 머티리얼/쉐이터
- 알베도 색이 검정인가
- 텍스처 누락, 에러
- 노말 맵 강도가 이상한가
- 쉐이더 오류
3. 노말 벡터 방향 확인
- 노말 벡터가 반전되어 있는가 (조명이 반대 방향으로 계산됨)
- 모델이 뒤집혀 있는가
4. 라이트맵, 전역 조명(GI) 관련
- 라이트맵이 깨졌는가
- GI 데이터 손상
- Light Probe 관련
5. 카메라 후처리 영향
6. 기타
- UV 오류
- 카메라 클리핑
- 백페이스 컬링
물체가 깜빡거리는 Z-figting 문제 원인과 해결책
두 개의 표면이 화면 상 거의 같은 깊이에 있을 때 발생, 렌더링 시 GPU가 어떤 면을 그릴지 결정하지 못해 생기는 오류
깊이 버퍼 상에서 서로 싸우듯 렌더링 순서가 뒤섞이는 현상임
원인
- 깊이 값이 거의 같은 두 면
- 카메라 near/far 비율 이상
- 중복 지오메트리 (똑같은 위치에 두 개의 면이 있으면 순서가 랜덤해짐)
해결 방법
- 오브젝트를 살짝 띄우기
- ZBias / Offset: 쉐이더나 머티리얼에서 깊이 편향 설정
- 카메라 near값 너무 작게 하지 않기
- Decal 전용 시스템 사용
- 중복 메시 제거
그래픽스 버그 디버깅 툴
- RenderDoc
- NVIDIA Nsight Graphics
- MS PIX
- Unity Frame Debugger
- Unreal View Modes & Debug Tools
쉐이더와 성능 저하
Vertex Shader: 정점 위치 계산
Fragment Shader: 픽셀 당 색 계산
복잡한 수학 연산, 분기문(GPU는 분기에 약함), 과다한 텍스처 샘플링, 불필요한 연산, 루프, 과한 반투명 오브젝트, ..
GPU 프로파일링 도구로 쉐이더 병목 찾기 가능
유니티: 프레임 디버거, 프로파일러,..
언리얼: Profile GPU, stat scenerendering ..
기타 그래픽스 디버깅 툴
부드러운 애니메이션 구현을 위해 고려할 사항
1.FPS
- 일관된 FPS
- 목표 프레임 설정
2. Delta Time 기반 애니메이션
- 모든 움직임, 회전, 변환은 DeltaTime을 곱해서 프레임 독립적으로 처리
3. 보간, 블렌딩
4. 입력 처리의 지연 최소화
5. CPU, GPU 병목 제거
6. 모션 블러와 같은 후처리