GN⁺: GTK용 새로운 렌더러
(blog.gtk.org)GTK의 새로운 렌더러
- GTK에 GL과 Vulkan을 위한 두 가지 새로운 렌더러가 추가됨.
- 이들은 "ngl"과 "vulkan"이라는 기존 이름을 재사용하여 명명됨.
- 같은 소스에서 구축되어 "통합" 렌더러라고도 불림.
단일 소스
- 두 렌더러는 동일한 소스에서 구축되며 Vulkan API를 따르는 모델로 설계됨.
- Vulkan과 GL 사이의 차이점을 커버하기 위한 추상화를 포함함.
- 장면 그래프 탐색, 변환 유지, 텍스처 및 글리프 캐싱 등의 인프라 공유가 가능함.
- macOS의 Metal 기반 렌더러나 Windows의 DirectX 기반 렌더러로 확장 가능성이 있음.
구현 세부사항
- 기존 GL 렌더러는 간단한 셰이더를 사용하고 복잡한 내용에 대해서는 오프스크린 렌더링에 의존함.
- 통합 렌더러는 각 노드별 셰이더를 가지고 있으며, 오프스크린 대신 버퍼에서 데이터를 해석하는 복잡한 셰이더를 사용함.
- 통합 렌더러는 최적화가 덜 되어 있지만, 정확성과 유지보수에 중점을 두어 더 다양한 렌더 노드 트리를 정확하게 처리할 수 있음.
새로운 기능
- 안티앨리어싱: 기존 GL 렌더러는 세부 사항을 잃어버리는 문제가 있었으나, 통합 렌더러는 안티앨리어싱을 통해 이를 개선함.
- 분수 스케일링: 통합 렌더러는 분수 스케일을 제대로 처리할 수 있음.
- 임의의 그라데이션: 통합 렌더러는 무제한 색상 정지점을 가진 그라데이션을 처리할 수 있음.
- Dmabufs: Vulkan 렌더러는 render_texture API를 통해 텍스처를 생성할 때 dmabufs를 생성할 수 있음.
주의할 점
- glshader 노드는 더 이상 지원되지 않음.
- 분수 위치: 새 렌더러는 정확한 위치에 객체를 배치함.
- 드라이버 문제: 새 렌더러는 그래픽 드라이버를 새롭고 다른 방식으로 사용하므로 문제가 발생할 수 있음.
속도는 더 빠른가?
- 아직은 새 렌더러가 더 빠르지 않음.
- 기존 GL 렌더러는 속도에 최적화되어 있으나, 새 렌더러는 새로운 기능과 정확성을 제공함.
- Vulkan 렌더러는 비공식 벤치마크에서 기존 GL 렌더러와 비슷한 성능을 보임.
새로운 기본값
- 최근 발표된 4.13.6 스냅샷에서 ngl 렌더러를 새로운 기본값으로 설정함.
- 이는 시험적인 조치이며, 문제가 발생하면 기존 GL 렌더러로 되돌릴 수 있음.
미래 계획 및 가능성
- 새 렌더러는 HDR을 포함한 적절한 색상 처리, GPU에서의 경로 렌더링, 메인 스레드 외부 렌더링, 성능 향상 등을 구현하기 위한 좋은 기반이 됨.
요약
- 새 렌더러는 흥미로운 기능을 가지고 있으며, 더 많은 기능이 추가될 예정임.
- 새 렌더러를 시도해보고, 작동 여부에 대한 피드백을 요청함.
GN⁺의 의견
- 새로운 렌더러는 개발자들에게 더 정확하고 다양한 렌더링 옵션을 제공하는 중요한 발전임.
- Vulkan과 GL의 통합 접근 방식은 향후 다양한 플랫폼에서의 렌더링 호환성을 향상시킬 잠재력을 가짐.
- 이러한 기술적 진보는 사용자 경험을 개선하고, 애플리케이션의 시각적 품질을 높이는 데 기여할 것임.
Hacker News 의견
- 2010년경에 HTML과 CSS만을 사용하여 브라우저에서 GTK 애플리케이션의 UI를 구현할 수 있는 실험적인 HTML 렌더러가 있었음. 당시에는 Atom, VS Code, Electron, 아마도 NodeJS가 등장하기 전이라 매우 인상적이었음. 현재 그 HTML 렌더러의 존재 여부는 불명.
- GTK가 타이틀바에 위젯을 허용하는 추세를 따르는 것에 대한 아쉬움. 일부는 드래그가 가능하고 일부는 불가능하여 애플리케이션과 파일 이름에 할당된 공간이 줄어듦. 이는 GTK에만 국한된 문제가 아님.
- 리눅스의 데스크톱 환경 작동 원리에 대한 이해 부족. 점점 더 복잡하고 추가된 것처럼 느껴짐.
- 픽셀 단위의 정밀한 분수 스케일링에 대한 흥분.
- wgpu.rs를 사용하면 DirectX와 Metal을 무료로 얻을 수 있음을 언급.
- ANSI 텍스트 렌더러에 대한 관심, 이를 통해 xterm 내에서 GTK 프로그램을 실행할 수 있음. 선택적으로 sixel 기능도 추가될 수 있음.
- 성능 저하가 받아들여지는 이유에 대한 의문. 구형 하드웨어에서 대부분의 컴퓨팅을 수행하며, 이러한 기능은 비활성화하거나 GPU에서 지원하지 않을 수도 있음.
- GTK 작업이 재미있고 멋진 것으로 보임. 안티앨리어싱에 대한 언급과 게임 엔진에서 폰트 렌더링에 사용되는 서명 거리 필드 기술의 적용 가능성에 대한 기대감. 게임 렌더러에서 사용되는 다양한 기술이 GUI 코드에도 유용할 수 있음.
- 오픈소스 GUI 툴킷 렌더러보다 몇 세대 앞서 있는 렌더러를 개발한 많은 그래픽 엔진 개발자들이 있지만, 대부분 게임 개발 회사에서 일하고 있어 오픈소스 스택에 기여할 시간이 없음. 커뮤니티가 정기적인 예산을 조직하여 이러한 개발자들에게 지불할 수 있다면, 오픈소스 데스크톱에 상당한 렌더링 및 툴킷 업데이트를 볼 수 있을 것임.
- 특정 댓글이 신고되어 내용이 숨겨짐.