정말 좋은 글이었음. 셰이더 처리 방식 설명이 너무 놀라웠음
서드파티 플러그인 셰이더를 여러 백엔드에서 동작시키려면 정말 저런 과정을 거쳐야 하는지, 아니면 하위 호환성 유지 때문에 그렇게 된 건지 궁금했음
외부 개발자에게 “모든 셰이더 언어로 각각 작성하라”고 하는 건 코어 팀 입장에서는 쉽겠지만, 현실적으로는 바람직하지 않음
대부분의 게임 엔진은 이미 10년 넘게 셰이더 트랜스파일링을 해왔음
다들 비효율적이라고 생각하지만, 현실적으로 대안이 없음
기사 제목이 핵심을 숨기고 있음
“OBS Studio가 새로운 렌더러를 도입함: Metal 채택 과정” 정도로 바뀌어야 함
다만 이건 Mac 전용 이야기라, Mac을 안 쓰는 사람은 Metal이 뭔지 모를 수도 있음
이건 명확히 Apple이 Vulkan 대신 자사 생태계 보호용 API를 만든 대가를 보여줌
OBS Studio는 2020년 3월, 버전 25.0에서 Vulkan 지원을 추가했음. 벌써 5년 반이 지남
Vulkan은 Switch를 제외한 콘솔에서는 지원되지 않음. Windows에서도 공식 지원이 아니라 GPU 벤더가 자체 드라이버 스택을 올려서 동작시키는 구조임
임베디드 환경에서는 여전히 OpenGL ES 중심임
Metal은 Vulkan보다 먼저 나왔고, 어떤 사람들은 Metal이 더 사용하기 쉽다고 평가함
하지만 이런 독자 생태계 전략은 Microsoft의 DirectX나 대부분의 콘솔 제조사도 해왔던 일임
나는 이 주제의 전문가는 아님. 읽은 내용의 5% 정도밖에 이해 못했지만, 이런 기술적 세부 설명이 담긴 글이 더 많아졌으면 좋겠음
단순 발표문은 마케팅처럼 느껴짐
개인적으로는 다가올 VST3 지원이 더 기대되지만, 이번 소식도 반가움
Rockchip SoC에서 하드웨어 인코딩을 세팅하는 것보다 훨씬 쉬움
Metal이 Direct3D의 객체지향적 접근을 한 단계 더 발전시켜, Objective-C와 Swift의 “말 많은” API 디자인을 결합했다는 설명이 흥미로웠음
OS 수준의 3D 그래픽 API가 이렇게 동적 언어 기반으로 만들어질 수 있다는 게 놀라움
이는 objc_msgSend() 최적화 덕분이라고 생각함
최신 그래픽 API들은 OpenGL보다 훨씬 적은 호출을 사용함 Vulkan/Metal/DirectX 12는 개별 호출 대신 명령 버퍼에 여러 명령을 담아 전달함
사실 이런 접근은 오래전부터 가능했음
2000년대 초 Direct3D를 C#으로 사용하는 책이 있었는데, GC 언어에서도 고성능 그래픽이 가능하다는 인식을 바꿨음
핵심은 미리 할당된 버퍼를 참조하는 배치 처리 구조로 런타임 오버헤드를 최소화하는 것임
Hacker News 의견들
정말 좋은 글이었음. 셰이더 처리 방식 설명이 너무 놀라웠음
서드파티 플러그인 셰이더를 여러 백엔드에서 동작시키려면 정말 저런 과정을 거쳐야 하는지, 아니면 하위 호환성 유지 때문에 그렇게 된 건지 궁금했음
외부 개발자에게 “모든 셰이더 언어로 각각 작성하라”고 하는 건 코어 팀 입장에서는 쉽겠지만, 현실적으로는 바람직하지 않음
다들 비효율적이라고 생각하지만, 현실적으로 대안이 없음
기사 제목이 핵심을 숨기고 있음
“OBS Studio가 새로운 렌더러를 도입함: Metal 채택 과정” 정도로 바뀌어야 함
이건 명확히 Apple이 Vulkan 대신 자사 생태계 보호용 API를 만든 대가를 보여줌
OBS Studio는 2020년 3월, 버전 25.0에서 Vulkan 지원을 추가했음. 벌써 5년 반이 지남
임베디드 환경에서는 여전히 OpenGL ES 중심임
나는 이 주제의 전문가는 아님. 읽은 내용의 5% 정도밖에 이해 못했지만, 이런 기술적 세부 설명이 담긴 글이 더 많아졌으면 좋겠음
단순 발표문은 마케팅처럼 느껴짐
개인적으로는 다가올 VST3 지원이 더 기대되지만, 이번 소식도 반가움
Rockchip SoC에서 하드웨어 인코딩을 세팅하는 것보다 훨씬 쉬움
Metal이 Direct3D의 객체지향적 접근을 한 단계 더 발전시켜, Objective-C와 Swift의 “말 많은” API 디자인을 결합했다는 설명이 흥미로웠음
OS 수준의 3D 그래픽 API가 이렇게 동적 언어 기반으로 만들어질 수 있다는 게 놀라움
이는
objc_msgSend()최적화 덕분이라고 생각함Vulkan/Metal/DirectX 12는 개별 호출 대신 명령 버퍼에 여러 명령을 담아 전달함
2000년대 초 Direct3D를 C#으로 사용하는 책이 있었는데, GC 언어에서도 고성능 그래픽이 가능하다는 인식을 바꿨음
핵심은 미리 할당된 버퍼를 참조하는 배치 처리 구조로 런타임 오버헤드를 최소화하는 것임
Cocoa 이후로는 대부분 제한된 C++ 서브셋(예: IOKit)으로 작성됨
나는 현대 GPU API들이 더 단순한 무언가로 가는 과도기적 단계이길 바람
OpenGL은 사랑과 증오가 공존하지만, 새 API들을 써본 후에는 오히려 OpenGL의 단순함이 그리워졌음
Metal이 구형 Intel Mac에서도 성능을 개선할지, 아니면 M 시리즈 전용 최적화인지 궁금함
하지만 Metal 3는 여전히 여러 Intel Mac에서도 지원되는데, 왜 제한했는지는 의문임
Mac Mini로 스트리밍 장비를 구성하려고 생각 중이었음
이번 성능 향상으로 충분히 가능할지 궁금함
2D 아케이드 게임이나 개발 화면 정도면 문제없음
최신 AAA 게임이라면 캡처 카드로 PC 화면을 받아오는 게 나음
2017년쯤엔 macOS로 스트리밍이 힘들었지만, 지금은 M 시리즈면 충분함
이번 개선으로 효율성이 더 높아질 것으로 기대함
Apple이 Metal의 외부 성공 사례를 늘리기 위해 더 많은 리소스를 투자했으면 함
Metal은 Apple 내부 외에는 아직 큰 성공을 못 거둠