Hacker News 의견들
  • 이 글은 VulkanDX12의 불필요한 부분을 잘 보여주는 훌륭한 글임
    요즘 DX12는 버퍼 포인터조차 지원하지 않아 사실상 방치된 느낌이고, Vulkan도 2.0으로 정리되지 않아 확장 기능이 제대로 구현되지 않은 드라이버가 많음
    만약 이런 새로운 API가 존재한다면, OpenGL을 그 위에서 훨씬 빠르게 에뮬레이션할 수 있고, SDL3 GPU 같은 것도 3~4배 성능 향상을 얻을 수 있을 것 같음

    • 현재 DirectX 문서화 상태가 너무 안 좋음
      Frank Luna의 책도 최신 기능을 다루지 않고, Learn 사이트나 GitHub 샘플, 레퍼런스 문서를 뒤져야 함
      Vulkan도 마찬가지로 복잡한데, 설령 2.0이 나와도 특히 Android 같은 주요 플랫폼에서 실제로 어떻게 쓸 수 있을지 의문임
    • 이 모든 게 PCI Resizable BAR 요구사항 때문이 아닐까 생각함
      Intel Arc를 제외하면 대부분의 GPU가 reBAR 없이도 동작하지만, Microsoft나 Intel이 이를 UEFI에서 강제해야 bindless texture 같은 기능을 안정적으로 쓸 수 있을 것 같음
      다만 이 경우 지원 가능한 하드웨어의 하한선이 생기고, 2020년 이전 메인보드에서는 지원이 들쭉날쭉함
  • 글의 핵심 동기가 빠져 있음
    블로그 인덱스에 따르면 “지난 10년간 그래픽스 API와 셰이더 언어의 복잡성이 급격히 증가했으며, 이제는 추상화 계층을 단순화해 개발 효율과 성능을 높이고 미래 GPU 워크로드에 대비해야 한다”는 취지임

    • 이건 마치 NVMe가 등장한 이유와 비슷함
      SSD가 처음엔 IDE/SATA 인터페이스를 재활용했지만, 회전식 디스크 전제를 버리고 새 전송 방식을 만들어야 진정한 성능을 낼 수 있었음
      그래픽스 API도 그런 레거시 제약을 버려야 할 시점이라는 비유로 보임
  • 나는 Sebastian Aaltonen의 작업을 오래 지켜봐서 편향이 있을 수도 있지만, 이번 글은 정말 훌륭함
    앞으로의 방향은 소프트웨어 렌더링으로의 회귀라고 생각함
    다만 이번에는 그 알고리즘과 데이터 구조가 하드웨어 가속을 받는다는 점이 다름
    이미 VFX 업계에서는 이런 흐름이 진행 중이며, 약 5년 전 OTOY가 OctaneRender를 CUDA 기반으로 포팅한 것도 그 예임

    • GPU 내부에는 고정 기능 하드웨어가 많아, 이를 버리면 성능이 크게 떨어질 것임
      셰이더 타입들은 이런 파이프라인 사이를 메우는 역할을 하므로 완전한 소프트웨어화는 현실적이지 않음
    • 사실 이런 변화는 이미 일부 일어나고 있음
      예를 들어 Unreal Engine의 Nanite는 작은 삼각형을 처리할 때 GPU의 compute shader로 동작하는 소프트웨어 래스터라이저를 사용함
  • 글의 디테일이 인상적이었음
    일부만 이해했지만, 앞으로의 그래픽스 API 설계 참고서가 될 것 같음
    대부분의 게이머에게 Vulkan/DX12는 큰 이득이 아니었고, PSO 문제로 여러 게임이 고생했음
    Vulkan이 개선 중이지만 WebGPU는 초기 Vulkan 설계의 제약을 그대로 물려받았음
    하드웨어가 빠르게 진화하는 상황에서 너무 저수준 API로 간 게 실수였을 수도 있음
    오히려 CUDA처럼 범용 컴퓨팅 중심의 접근이 더 나은 방향일지도 모름

  • Mantle이 그립다는 생각이 듦
    단점도 있었지만, 하드웨어를 직접 다루는 느낌이 있었고, Xbox 360 개발 때가 가장 즐거웠음

    • Switch의 그래픽스 API도 비슷하게 훌륭함
      Nvidia와 Nintendo가 설계했는데, 콘솔 중 가장 직관적인 API라고 생각함
  • 이 글을 읽고 나니 역사적인 순간을 목격한 기분이 듦

  • 관련된 프로젝트로 보이는 Google Toucan을 떠올림

  • 이 글이 예전 기억을 많이 떠올리게 함
    API 설계자들이 고려하는 추가 요소로는

    • GPU 가상화 — 여러 애플리케이션이 GPU 리소스를 공유할 수 있게 하는 기능 (예: D3D residency API)
    • 정의되지 않은 동작(Undefined Behavior) — 애플리케이션이 의도치 않게 이를 의존할 경우, 새로운 API로의 이식이 어려워짐
  • 왜 Microsoft가 새로운 DirectX 버전을 내지 않는지 궁금함
    DirectX Ultimate이나 12.2도 사실상 DX12와 동일함
    Unreal Engine 같은 미들웨어의 영향으로 자체 API의 중요성이 줄어든 걸까, 아니면 EPIC이 새로운 API를 제안해야 할까 생각함

    • 이런 논의는 주로 FOSS 커뮤니티에서만 활발함
      실제 게임 개발자는 RHI(Rendering Hardware Interface)를 만들어 게임 개발에 집중함
      레이 트레이싱메시 셰이더가 가장 큰 혁신이었지만, 여전히 활용이 적어 더 나아가지 않는 듯함
    • 어느 정도는 둘 다 맞음
      Unreal, Unity 같은 엔진의 중앙집중화로 API 혁신에 대한 관심이 줄었고, GPU 쪽에서만 발전이 이어짐
      CPU API는 여전히 단순한 버퍼 매핑 수준임
      과거 테셀레이션 셰이더가 등장했을 때처럼, 새로운 하드웨어 변화가 있어야 진전이 있을 것 같음
  • Valve가 SteamOS용 자체 그래픽스 API를 만들 가능성이 있을지 궁금함

    • 사실 Vulkan의 복잡성에는 Valve의 책임도 큼
      Vulkan 초기 개발 단계에서 Valve가 주요 주도자 중 하나였다고 들었음