(전글이 너무 진지했나? 걍 재미로 보도록 나도 잘 아는게 아니라서 틀린게 많을거임)

전 글에서 제로 드라이버 오버헤드 라고만 표시하고 설명이 없어서 뭔소린가 했을꺼야 오늘 추가 설명들어간다

나온지쫌 되긴했지만 주목할 만한 슬라이드가있어: 

https://gdcvault.com/play/1020791/

모던 api의 방향을 제시한 것으로 보면 흥미로울것임

나는 이걸보고 공부했거든 전부 중요한 내용이지만 몇개 간추려서 얘기해볼께 

(그림) azdo

persistent-mapped buffers; 이건 리소스-버퍼 바인딩 방식의 제안

mdi; 전에 멀티쓰레딩으로 커맨드를 만든다 했지? 그렇게 만든 커맨드를 큐에 집어넣는 방법임

packing 2d textures into arrays; meh 갠적으로 별로 관심없음

bindless textures; 리소스-이미지 바인딩 방식의 제안

sparse textures; 버추얼 텍스처라 부르는것 과거id엔진에서 선보였던거 있지? 지금은 관련 api가 제공되고있지

전체적으로 관통하는 아이디어는 리소스를 "다이나믹"하게 바인딩 해서 사용하면 얼마나 좋을까 이거임

보통 유연하게 (다이나믹)  처리한다는건 연산이 느리다는 얘기도 되니까 hw에서 빨리 되게 지원해 달라고 하는거.

(그림) 다이나믹 하게 해줘

dx9 디자인은 당시 hw를 가지고 빠르게 렌더링 하기위해 유연함을 포기한 방식 이었다고 생각해도 됨

다 좋은데 그럼 어따가 쓰느냐? 한다면 렌더링 루프 최적화 해서 더 많이 더 다채롭게 그리는데 쓴다고 할 수 있지

(그림) set 이라는게 바인딩 하는부분임 이 바인딩을 최적화 하고 싶어함

바인딩을 유연하면서 적은 비용으로 할 방법이 없을까? -> bindless & 디스크립터 인덱싱을 살펴보도록: VK_EXT_descriptor_indexing

큰 텍스처 하나만 박아놓고 그것만 쓸 수 없나? ->버추얼 텍스처는 ARB_sparse_texture2.txt 를 검색해보길 권함

관련 데모를 만들어 본적이 있는데 페이지 폴트 처리를 간단하게 할 수 있어서 좋았음

https://github.com/SaschaWillems/Vulkan/blob/master/data/shaders/glsl/texturesparseresidency/sparseresidency.frag#L18

최근에 다이렉트 스토리지랑 샘플러 피드백 스트리밍 용 api가 공개되었는데 이건 나도 아직 다 못봤어...

전에 하드웨어 큐가 하나라고 했었지? 더 자세히 말하면 그래픽용이 하나고 컴퓨트용 카피용 이렇게 더 있음 거기에

다이렉트 스토리지는 리소스 로딩용 큐가 추가된것으로 볼 수 있고

https://github.com/microsoft/DirectStorage/blob/main/Samples/HelloDirectStorage/HelloDirectStorage.cpp#L77

샘플러 피드백은 아직 자세히 안살펴봤지만 내가 했던거랑 비교해 보니까 엄청 초라해지는군

https://github.com/GameTechDev/SamplerFeedbackStreaming

(그림)내가 했던건 조잡한 수준이네ㅋ :

추가적으로 메쉬쉐이더도 봐둬 이건 ass_ass_in 크리드 개발하면서 선보인 방식을 컴퓨트 쉐이더를 사용하도록 일반화 한것

https://advances.realtimerendering.com/s2015/aaltonenhaar_siggraph2015_combined_final_footer_220dpi.pdf

https://github.com/KhronosGroup/Vulkan-Docs/blob/main/proposals/VK_EXT_mesh_shader.adoc

데모도 한번 해봐 난 토깽이를 만들어서 넣어봤음

https://github.com/microsoft/DirectX-Graphics-Samples/blob/master/Samples/Desktop/D3D12MeshShaders/readme.md


이같은 아이디어들을 훌륭한 엔지니어들이 사용하기 쉽게(?) 조립한게 언리얼 엔진5.0 임

요즘은 기술 격차가 너무 벌어지고 있는것 같음 공부하기도 어렵고... 

뭐 암튼 고마운 소붕이들 맛이라도 봤으면 좋겠다하고 귀찮은걸 마다하고 썼다.

렌더링 파이프라인(쉐이더), 레이트레이싱, 물리엔진, 서버는 다음에 시간나면 썰을 풀어볼께