우선 글 앞에 밝힐건 제 사견이니까 반박 들어올시
반박의견이 무조건 맞음을 깔고 가겠습니다.
기존 렌더 파이프라인은 화면에 보이지 않고 성능만 잡아먹는 부분을 없애버리는
작업을 하게되는데, 데이터에 따른 3D세계를 모두 만들어 놓고 2D 이미지를 그리는
래스터라이저 앞 부분에서 제거작업 - Culling이 일어나게 됩니다.
출처 - 위키피디아 https://en.wikipedia.org/wiki/Graphics_pipeline
그림의 우측 도형이 헷갈리게 표현되긴 했는데 베가의 프리미티브 쉐이더는
파이프라인 초기 즉 3D월드 구축 단계에서 보이지 않는 부분을 제거하는
Culling 작업을 수행하기에 이후 파이프라인에서 처리할 데이터 부담이 줄어들게 됩니다.
다른 부분인 쉐이더의 통합도 부각되지만, 성능의 핵심은 Early Culling이 되겠습니다.
비유로 설명하면 광산에서 원석을 한 번에 100KG만 나를 수 있는 차에 실어 공장에 보내고
공장에서 쓸모없는 부분 60KG정도 떼어내고 40KG의 완제품을 만들었다 치면
Early Culling이 적용될경우 차에 실어보내기 전에 쓸모없는 부분을 제거하기 때문에
차량 한 번 수송으로 95~98KG 정도의 완제품을 만들수가 있습니다.
자세한 이야기는 이쪽에서 읽으시면 됩니다. https://gigglehd.com/gg/hard/1533856
이번엔 메쉬 쉐이더입니다. 마찬가지로 앞단계에서 Early Culling을 수행한다고 써있습니다.
대신 프리미티브 쉐이더의 언급에는 없던 LOD 계산이 붙어있습니다.
Nvidia는 저 선행작업을 Task 쉐이더라고 부르고 MS는 Amplification 쉐이더라고 부르네요..
MS 블로그에서도 선행단계의 쉐이더가 Culling을 위한 쉐이더라고 설명합니다.
https://devblogs.microsoft.com/directx/coming-to-directx-12-mesh-shaders-and-amplification-shaders-reinventing-the-geometry-pipeline/
마지막으로 언리얼 엔진의 Nanite입니다. 원래는 언리얼 홈페이지에 내나이트
파이프라인을 설명한 게시글이 있었는데, 다시 알아보려니 사라지고 없네요
다른곳에서 퍼온 짤로 갈음합니다.
https://www.thecandidstartup.org/2023/04/03/nanite-graphics-pipeline.html
마찬가지로 내나이트 마저도 Early Culling을 실시하는데
이 녀석은 GPU를 가리지 않습니다. 아마도 GPGPU방식의 소프트웨어를 이용한
우회구현으로 추측됩니다. 다만 네이티브 메쉬 쉐이더가 아니니 약간의 성능 차이나
활용의 제약이 있을거라 예상됩니다.
튜링이든 베가든 나왔을때 프리미티브 쉐이더/메쉬 쉐이더 보고 이건 근본을
뒤집어 엎을 개선이다 생각하며 쭉 지켜보고 있었습니다.
인터넷 게시글 보다 보면 메쉬 쉐이더와 함께 프리미티브 쉐이더가 같이 언급되고
내나이트를 찾다보면 메쉬 쉐이더가 높은 확률로 언급되는 게시글을 종종 봤습니다.
구현 방식이나 기능의 세부사항만 다르지 비슷한 기능의 연장선상에 있다고 생각이 됩니다.
출처 - https://en.wikipedia.org/wiki/Shader
심지어 위키피디아조차도 둘을 같은 기능을 하는 쉐이더로 묶어서 설명하고 있습니다.
그리고 그 뿌리는 DX10의 실패한 기능인 지오메트리 쉐이더에서 나왔습니다.
지오메트리 쉐이더가 입력받은 3D 데이터를 늘리고 없애거나 줄일 수 있기에
테셀레이션,LOD처리,Culling등을 보조할수 있었습니다.
다만 너무 만능을 추구했기에 처참한 성능뿐이 나오질 않아 망하게 되었구요
망해서 안쓰던 기능이 먼길을 돌고 돌아 드디어 메쉬 쉐이더로 돌아왔고
이제 그걸 사용하는 게임이 나오게 되는군요
적어도 5년후에나 볼까 말까 생각하고 있었는데 말입니다.
메쉬 쉐이더로 좋아진 성능은 다시 그래픽 품질 향상으로 쓰일가능성이 높아서
그래픽이 더 좋은 게임이 나오지, 프레임이 남아도는 게임이 나오지 않을 가능성이 높겠죠