728x90
반응형
728x90
반응형
728x90
반응형
728x90
반응형
728x90
반응형
728x90
반응형
728x90
반응형
728x90
반응형
728x90
반응형
728x90
반응형
728x90
반응형
728x90
반응형
728x90
반응형
728x90
반응형
728x90
반응형
728x90
반응형
728x90
반응형
728x90
반응형

'Qt' 카테고리의 다른 글

Qt 6으로 포팅  (0) 2023.02.15
C++는 2022년 올해의 프로그래밍 언어입니다  (0) 2023.01.30
CMake를 사용하여 Linux에 배포  (0) 2023.01.02
Qt Quick Effect Maker 소개  (0) 2022.11.04
보안 권고: Qt의 zlib  (0) 2022.09.16
728x90
반응형
728x90
반응형
728x90
반응형

Qt Quick Effect Maker 소개

지난 몇 달 동안 함께 작업한 프로젝트인 Qt Quick Effect Maker(QQEM)에 대해 마침내 이야기하게 되어 매우 기쁩니다. 이 블로그 게시물은 이 새로운 도구에 대한 소개이며 가까운 시일 내에 더 많은 관련 게시물이 제공될 예정입니다. 그래서 그것은 무엇입니까? QQEM은 다음과 같은 단일 목적을 위해 설계된 맞춤형 도구입니다.

높은 생산성과 성능으로 Qt Quick에 대한 셰이더 효과를 생성합니다.

사진은 천 마디 말보다 가치가 있고, 영상은 훨씬 더 가치가 있으므로, 다음의 짧은 비디오로 소개합니다.

https://youtu.be/5BQ_VDqL42o

접근

Qt Quick Effect Maker는 노드 편집기와 코드 편집기를 모두 제공하는 하이브리드 편집기입니다. 이것은 생산적이고 사용하기 쉬우면서도 셰이더 코드를 자유롭게 작성하고 조정할 수 있는 도구를 원했기 때문에 초기에 선택한 접근 방식이었습니다. 노드만으로 효과를 만들 수 있는 "셰이더 그래프" 노드 편집기가 많이 있습니다. 이러한 도구의 코드 없는 접근 방식은 셰이더 코드를 작성하지 않고도 복잡한 효과를 수행할 수 있으므로 매력적일 수 있습니다. 그러나 셰이더를 자유롭게 조정하고 최적화할 수 없고 시각적 프로그래밍 언어를 생성하는 노드 집합을 배워야 하는 것과 같은 단점도 있습니다. 이것은 처음 80%는 쉽지만 마지막 20%는 달성하기가 불가능한 것처럼 보이는 80-20 규칙으로 귀결될 수 있습니다. 이러한 이유로 우리는 하이브리드 접근 방식과 단순화된 노드 편집기를 진행했습니다. QQEM 노드는 차례로 연결된 개별 효과 구성 요소이므로 단일 입력 및 출력 연결만 있습니다. 커스텀 노드와 빌트인 노드를 포함한 모든 노드의 셰이더 소스 코드는 자유롭게 수정할 수 있습니다. 그런 다음 노드가 결합되고 Qt 셰이더 도구는 모든 RHI 백엔드(OpenGL, Vulkan, Metal, Direct3D)에 대해 최적화된 바이너리 셰이더를 생성합니다.

QQEM의 주요 대상 사용자는 일부 GLSL 코드를 이해하는 개발자 및 기술 아티스트입니다. 하지만 그렇게 하지 않더라도 내장 효과 노드를 결합하고 속성을 수정하는 데 계속 사용할 수 있습니다. 개발자 또는 디자이너에 관계없이 효과를 개발하는 동안 DESIGN(노드 편집기) 모드와 CODE(소스 편집기) 모드 사이를 전환하는 것이 좋습니다.

주요 특징

다음은 가장 주목할만한 QQEM 기능에 대한 요약입니다.

  • 실시간 미리보기: 효과를 편집하는 동안 셰이더는 자동으로 RHI qsb에 구워지고 라이브 미리 보기에 표시됩니다. 셰이더 변경이 필요하지 않은 속성을 조정할 때 미리보기가 즉시 표시됩니다. 또한 셰이더에 대한 변경 사항은 거의 즉각적입니다.

  • 노드 보기: QQEM에는 구성 요소에서 셰이더를 시각적으로 빌드하기 위한 노드 보기가 포함되어 있습니다. 이러한 노드에는 대부분의 Qt 그래픽 효과가 포함됩니다. 현재 30개 이상의 노드가 제공되어 사용자 지정 효과의 기반으로 사용할 수 있으며 앞으로 더 많이 사용할 수 있습니다.

  • 셰이더 코드 편집기: QQEM은 노드와 코드 편집기를 모두 결합한 "하이브리드 편집기"입니다. 모든 효과 노드 셰이더는 자유롭게 편집할 수 있습니다. 코드 편집기에는 생산성을 위한 GLSL 구문 강조, 자동 들여쓰기, 찾기 등의 기능이 포함되어 있습니다.

  • 다중 효과: Qt Quick Graphical Effects와 비교하여 QQEM은 모든 효과를 단일 셰이더로 결합합니다. 이것은 성능에 좋은 추가 FBO를 방지합니다.

  • JSON 파일 형식: QQEM은 프로젝트(qep) 및 노드(qen)를 JSON 형식으로 저장합니다. 이러한 파일은 생산성을 위해 다른 사람과 쉽게 공유할 수 있습니다.

  • 셰이더토이 호환성: QQEM의 변수 이름은 대부분 Shadertoy와 호환됩니다. 즉, Shadertoy로 만든 셰이더를 QQEM으로 쉽게 이식할 수 있으며 그 반대도 마찬가지입니다. 모든 Shadertoy 기능(예: 멀티패스, 큐브맵, 오디오)이 지원되는 것은 아니지만 QQEM은 성능 향상을 위해 정점 셰이더, 사용자 정의 텍스처, 속성과 같은 몇 가지 추가 기능을 지원합니다.

  • 순수한 Qt Quick: QQEM 자체는 Qt Quick(QWidget 없음) 및 Qt Quick Control로 구현되므로 데스크탑 UI 제공을 개선하는 데 도움이 됩니다. 또한 전체 사용 흐름은 Qt Quick 및 Qt RHI가 가능한 한 통합되도록 설계되었습니다.

할 이야기가 훨씬 더 많지만 이 블로그 게시물을 간략하고 요점으로 유지하겠습니다.

현재 상태 및 다음 단계는 무엇입니까?

QQEM에는 Qt 6.4(또는 dev 브랜치)가 필요하므로 먼저 설치하십시오. 그런 다음 소스 저장소에서 직접 최신 QQEM을 빌드할 수 있습니다. 이것은 여전히 진행 중인 작업이며 사전 빌드된 바이너리가 아직 없지만 더 많은 사용자와 피드백을 받기 시작하기 위해 지금 사용 가능한 QQEM 소스 코드를 출시하고 싶었습니다. 지금까지 일부 고객 프로젝트 및 예제 프로젝트에서 내부적으로 사용했으며 응답은 매우 긍정적이었습니다.

우리가 현재 작업하고 있는 또 다른 것은 QQEM을 위한 Qt Design Studio 통합입니다. 이렇게 하면 QDS에서 직접 QQEM 프로젝트를 열고 QQEM에서 수정하고 내보낸 구성 요소를 다시 QDS 프로젝트로 가져올 수 있습니다. 올해 말까지 QDS 빌드에서 사용할 수 있습니다.

따라서 QQEM을 사용하여 발견된 모든 문제 및 기능 요청에 대한 티켓(구성 요소: "Quick: Effect Maker")을 자유롭게 만드십시오. 나중에 더 많은 블로그 게시물이 올라올 예정이니 계속 지켜봐 주세요!

728x90
반응형
728x90
반응형
728x90
반응형
728x90
반응형
728x90
반응형

+ Recent posts