Auto-VK-Toolkit은 최신 C ++로 구현 된 Vulkan 그래픽 API의 프레임 워크입니다. 그것은 프로그래머-대결과 효율성 사이의 달콤한 지점을 강타하는 동시에 여전히 완전한 Vulkan 기능을 지원하는 것을 목표로합니다. 이 목표를 달성하기 위해이 프레임 워크는 Vulkan-HPP 꼭대기의 편의성 및 생산성 계층 인 Auto-VK를 사용합니다.
Auto-VK-Toolkit은 빠른 프로토 타이핑, 연구 (예 : 피부 메시의 강력한 컬링, 현대 GPU에 대한 파라 메트릭 객체의 빠른 렌더링) 및 교육 (예 : 실시간 렌더링을위한 알고리즘)에 성공적으로 사용되었습니다.

이 이미지는 Auto-VK-Toolkit (왼쪽에서 오른쪽으로)를 사용하여 개발 된 일부 작업을 보여줍니다. 뇌 스캔에서 19,600 개의 구형 고조파 글리프의 시각화; 메시를 메시 릿으로 분할하고 세분화 된 뷰 프러스트와 뒷면 컬링으로 작업 및 메쉬 셰이더로 렌더링합니다. Ray는 하드웨어로 인한 실시간 Ray 추적 장치 확장을 사용하여 그림자와 반사를 추적했습니다. 358K 파라 메트로 정의 된 섬유 곡선의 렌더링.
Auto-VK 의 멋진 기능 외에도 주요 기능은 다음과 같습니다.
update() 및 render() 콜백을 사용하여 렌더 루프 프레임 워크를 렌더링하여 다양한 업데이트 시간으로 또는 고정 된 업데이트 시간으로 콜백합니다.avk::root 구현, 스왑 체인 처리 및 자동 자원 수명 관리..fscene 파일로드 : Open Research Content Archive.avk:buffer 또는 avk::image 인스턴스 및 사용자 정의 유형과 같은 Vulkan 리소스를 직렬화 할 수있는 다목적 세리어 라이저 지원; 시리얼을 기반으로합니다. Auto-VK-Toolkit은 Visual Studio 또는 Cmake와 함께 갈 준비가되었습니다. 시스템이 시스템 요구 사항을 충족하는 경우 모든 것이 상자 밖에서 런을 구축하기 위해 설정됩니다. 예를 들어, Visual Studio의 경우 Open visual_studio/auto_vk_toolkit.sln 은 예제 프로젝트 중 하나를 시작 프로젝트, 빌드 및 실행으로 설정하십시오!
힌트 : 개발 지점 의 버전은 최신 상태 일 수 있으며 추가 기능과 수정 사항이 포함되어 있습니다. 특히 문제가 발생하는 경우 해당 버전 사용을 고려하십시오.
참고 : 첫 번째 실행에서 Post Build 도우미 도구가 구축되고 있습니다. 상태 메시지 및 가능한 지침에 대한 Visual Studio의 "출력"탭을 시청하십시오.
Windows의 Visual Studio 2022에는 미리 구성된 프로젝트 설정이 제공됩니다.
visual_studio/README.md 를 참조하십시오).git submodule update --init auto_vk 에 서브 모드로 추가되는 자동 VK 프레임 워크를 가져 오십시오.Vulkan Memory Allocator header. VMA (Vulkan Memory Allocator) 라이브러리가 설치되도록 옵션.maintenancetool.exe )를 통해 VMA를 설치할 수 있습니다 Vulkan Memory Allocator header. 옵션.Desktop development with C++ 선택하십시오!Tools -> Options -> GLSL language integration 으로 이동하십시오. Vulkan Shader Development의 경우 Live compiling False 로 설정하거나 External compiler executable file glslangValidator.exe 로가는 경로로 설정하십시오!visual_studio/auto_vk_toolkit.sln 열고 솔루션을 작성하십시오.Output -TAB의 Post 빌드 헬퍼 도구의 메시지, 일부 팝업 메시지 및 시스템 트레이의 아이콘을 인식합니다. 추가 정보는 Section Resource Mangement와 Post Build 도우미를 살펴보십시오.git submodule add https://github.com/cg-tuwien/Auto-Vk-Toolkit.git auto_vk_toolkit 실행하여 directory auto_vk_toolkit 에서 submodule으로 자동 vk-toolkit을 추가하십시오.git submodule update --init --recursive 실행하십시오.DOCS/CMAKE.MD를 참조하십시오!
| 안녕하세요 세계 | 여러 대기열 | 이미지 처리를 계산합니다 | 오카 로더 |
|---|---|---|---|
![]() | ![]() | ![]() | ![]() |
이 저장소에는 몇 가지 예제 응용 프로그램이 포함되어 있습니다.
.fscene 파일을로드하여 렌더링하는 방법; 또한 시리얼 라이저 사용 방법| 피부 메쉬 렛 | 레이 쿼리 및 레이 추적 | RTX 사용자 정의 교차로 | 텍스처 큐브 맵 |
|---|---|---|---|
![]() | ![]() | ![]() | ![]() |
Visual Studio Projects의 경우 visual_studio/tools/executables/ 이 도구는 기존 프로젝트 (예 create_new_project.exe 예제 응용 프로그램 중 하나)를 복사하여 새 프로젝트를 신속하게 설정하는 데 도움이 될 수 있습니다.
기존 프로젝트의 사본을 만들려면 다음과 같이 사용하십시오.
create_new_project.exe 열고 예제 애플리케이션 중 하나를 선택하거나 수동으로 복사 할 프로젝트 경로를 입력하십시오.auto_vk_toolkit.vxcproj 에 대한 참조를 수동으로 추가하고 새로 만든 프로젝트 사본이 참조하는지 확인하십시오.main() 함수가 포함 된 최소한 .cpp 파일을 추가해야합니다.#include <auto_vk_toolkit.hpp> 추가하십시오. 좋은 전략은 저장소에 auto-vk-toolkit을 git 하위 모듈 로 추가하고 create_new_project.exe 사용하고 위의 단계를 사용하여 하위 모듈 외부의 디렉토리에서 올바르게 구성된 프로젝트를 작성하는 것입니다. Auto-VK-Toolkit 의 master 브랜치에서 가져와 최신 업데이트를 얻어 서브 모드를 자주 업데이트하십시오.
Auto-VK-Toolkit 의 Visual Studio 프로젝트는 Visual Studio 자체가 리소스 관리에 우아하게 사용할 수 있도록 구성됩니다. 즉, 필수 자산 (3D 모델, 이미지, ORCA 장면 파일) 및 셰이더 파일 및 "솔루션 탐색기"보기에서 Visual Studio의 필터에 추가 할 수 있으며 스마트 포스트 빌드 헬퍼 도구는 해당 리소스가 응용 프로그램의 대상 디렉토리에 배포되도록합니다.
간단히/ tl; dr :
assets 필터에 추가하고shaders 필터에 필요한 셰이더 파일을 추가하십시오. 그런 다음 응용 프로그램을 작성하고 Post 빌드 헬퍼가 이러한 리소스를 대상 디렉토리에 배포하고 응용 프로그램을 실행할 때까지 기다리십시오! 필터 assets 과 shaders 위에서 힌트 한 바와 같이 특별한 의미를 갖는 다음과 같이 보일 수 있습니다. 
보다 자세한 설명과 추가 지침은 visual_studio/README.md 에 나와 있습니다.
트레이 아이콘을 통해 포스트 빌드 헬퍼 활동을 알 수 있습니다.
. 배포가 두 가지 주요 이유로 완료된 후이 도구는 활성화 될 것입니다.
Post Build Helper에 대한 자세한 내용은 Post Build Helper 섹션을 참조하고 Shader Hot Reloading에 대한 자세한 내용은 아래의 자동 리소스 업데이트 섹션을 참조하십시오.
Auto-VK 는 Vulkan-HPP 꼭대기에 플랫폼 공유 편의성 및 생산성 계층입니다.
Auto-VK-Toolkit은 창 처리와 같은 운영 체제에 대한 누락 된 링크를 설정하고 추가 기능을 추가합니다.
VK_KHR_ray_tracing_pipeline 이 사용되면 적절한 물리적 장치를 선택하고 필요한 플래그 및 확장을 활성화합니다).avk::invokee initialize() , update() , render() 통해 콜백 메소드를 사용하기 편리한 게임 루프/렌더 루프 처리 처리avk::transformavk::quake_camera 및 avk::orbit_camera ( avk::transform 및 avk::invokee 파생)avk::material 및 a vk::material_gpu_data )avk::lightsource 및 avk::lightsource_gpu_data )[->VS] 버튼을 제공합니다.추가 정보가 포함 된 문서 페이지가 있습니다.
avk::updater 클래스를 통한 자동 리소스 업데이트, Shwapchain 레크리에이션 및 셰이더 Hot Reloading 활성화 Q : Linux에서 Auto-VK-Toolkit을 사용할 수 있습니까?
A : 그렇습니다. DOCS/CMAKE.MD의 CMAKE 문서를 참조하십시오!
Q : 포스트 빌드 도우미 없이 자동 VK-Toolkit을 사용할 수 있습니까?
A : 그렇습니다. Post Build Helper는 리소스 배포, 자산 종속성 및 파일 업데이트를 처리하는 편의 도구입니다 (프로젝트 구조에 따라 셰이더 핫로드에 유용함). 사용하지 않는 경우 리소스 배포 및 셰이더 파일을 SPIR-V로 수동으로 컴파일해야합니다.
Q : Visual Studio에서 자산 관리에 문제가 있습니다. 조언이 있습니까?
A : 알려진 문제 및 WRT 자산 처리 문제 해결을 확인하십시오.이 경우에 대한 지침을 제공합니다.
Q : Visual Studio 필터에 추가 한 것보다 더 많은 리소스가 배포되었습니다. 무슨 일이야?
A : 일부 자산은 내부적으로 다른 자산을 참조합니다. 예를 들어, 3D 모델은 종종 이미지 또는 재료 파일을 참조합니다 ( .obj 모델의 경우). 이러한 "종속 자산"은 포스트 빌드 헬퍼 에 의해 대상 디렉토리에 배치됩니다. 자세한 내용은 의존 자산 배치를 참조하십시오.
Q : 디버그 , 릴리스 및 게시 빌드 구성의 차이점은 무엇입니까?
A : 컴파일 설정 측면에서 릴리스 및 게시 구성은 동일합니다. 그들은 라이브러리의 릴리스 빌드와 연결됩니다. 디버그 구성에는 비주얼 스튜디오 프로젝트에 대해 구성된 전형적인 디버그 설정과 라이브러리의 디버그 빌드에 대한 링크가 있습니다. 그러나 Publish Builds와 Non Publish Build에는 자원 배포가 발생하는 것에 차이가 있습니다. 자세한 내용은 빌드 구성에 따라 기호 링크/사본을 참조하십시오.
Q : Post Build 도우미 와 문제가 있습니다. 무엇을해야합니까?
A : 다음 사례에 대한 지침을 제공하는 Post Build Helper를 확인하십시오.
can't fopen !RUNTIME ERROR! Couldn't load image from '...' Q : 응용 프로그램은 3D 모델 및 이미지와 같은 자산을로드하는 데 오랜 시간이 걸립니다. 가속화 될 수 있습니까?
A : 디버그 빌드를 참조하는 경우 포스트 빌드 헬퍼를 구성하여 디버그 빌드의 일부 외부 종속성 릴리스 DLL을 배포 할 수 있습니다. 그들은 자산로드를 많이 가속화해야합니다. 릴리스 DLL을 배포하려면 Post Build Helper 의 설정을 열고 "항상 배포 릴리스 DLLS"옵션을 활성화하십시오.
Q : cereal::Exception cereal::loadBinary 또는 Unhandled exception at 0x00007FFE82204FD9 in ...exe: Microsoft C++ exception: cereal::Exception at memory location ...
A : 직렬화 된 캐시 파일 (예 : sponza_and_terrain.fscene 의 경우 sponza_and_terrain.fscene.cache 일 수 있음)이 손상되었을 수 있습니다 (아마도 응용 프로그램에서 이전에 발생한 오류로 인해 또는 실행이 발생했기 때문에 완전히 작성되지 않았기 때문에). 캐시 파일 (예 : sponza_and_terrain.fscene.cache )을 삭제하고 새 제품을 생성하도록하십시오!