1P by neo 8달전 | favorite | 댓글 1개

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 툴킷 렌더러보다 몇 세대 앞서 있는 렌더러를 개발한 많은 그래픽 엔진 개발자들이 있지만, 대부분 게임 개발 회사에서 일하고 있어 오픈소스 스택에 기여할 시간이 없음. 커뮤니티가 정기적인 예산을 조직하여 이러한 개발자들에게 지불할 수 있다면, 오픈소스 데스크톱에 상당한 렌더링 및 툴킷 업데이트를 볼 수 있을 것임.
  • 특정 댓글이 신고되어 내용이 숨겨짐.