본 글은 김정기 님의 발표를 토대로 남긴 후기 및 개인 복습 기록입니다.
보다 자세하고 정확한 내용은 셰이더 스터디 카페에 게시된 자료를 참조 부탁드립니다. (_ _)
자료: 유나이트 2020 Steaming Virtual Texture in Unity
https://www.youtube.com/watch?v=qqomQNsLdjA
후기
같은 날 있었던 구면 조화 함수 다음의 토픽이었습니다. 죄송스러운 이야기지만 깊게 집중할 수가 없었는데요, 회사에서 꽤 중요한 의사 결정이 이루어 지고 있었기에 슬랙을 자주 확인해야 했던 상황이었습니다. 그래도 나름 최선을 다해 내용을 흡수하려고 노력했고 복습과 실습도 마쳤습니다.
복습
4K 크기의 텍스쳐를 사용한 PBR 머티리얼을 사용하면, 3개의 BC Compress 텍스춰를 사용해야 하는데요, 그러면 총 48MB의 비디오 메모리를 사용합니다. 1GB의 텍스춰 버젯이 있으면 21개의 유니크한 4K PBR 머티리얼만 사용할 수 있습니다. 보통은 21개는 부족하죠. 물론 텍스처를 재활용해서 Unique 하지 않게 쓸 수는 있지만, 그렇다고 사용가능한 머티리얼 개수가 극적으로 늘어나지는 않습니다.
SVT는 텍스처 전체를 메모리에 직접 올려두지 않고, 중간 간접 텍스처를 한 번 거쳐 타일 방식으로 캐시된 텍스처에 액세스합니다. 유니티는 메쉬의 재질마다 타일 ID를 RT에 그리고, CPU 캐시를 거쳐서 각 텍스처의 일부 타일을 타일 캐시 텍스쳐에서 리매핑된 UV를 통해 읽어 옴으로서 사용됩니다. 그래서 일반 텍스쳐보다는 연산 ms를 조금 더 먹게 됩니다.
그러나 비디오 메모리에는 텍스쳐 전체가 들어가는게 아니고, 각 텍스쳐에 보이는 부분 일부만 비디오 메모리의 가상 텍스쳐에 로드되어 있는거죠. 제한된 비디오 메모리임에도 많은 유니크만 재질을 사용할 수 있는 장점을 가질 수 있습니다.
SVT는 텍스처의 일부만 보일 상황에서 4K 텍스처 전체가 비디오 메모리에 올라와야하는 제약을 줄이기 위해 고안되었기 때문에, 재질이 사용하는 텍스처 크기가 작거나 항상 화면에 보이는 텍스처에 대해 사용하는 것은 비효율적입니다.
'Studies > Shader' 카테고리의 다른 글
Shader Study 후기 - Flow Fields and Steering Behaviors [GDC 2022: AOE IV] (22/10/05) (0) | 2022.10.05 |
---|---|
Shader Study 후기 - Fourier transform (22/10/05) (0) | 2022.10.05 |
Shader Study 후기 - Spherical Harmonics (22/09/19) (0) | 2022.09.20 |