본문 바로가기

Vulkan

Graphics Pipeline basics - Shader modules 이전 글 : Graphics Pipeline basics 다음 글 : Fixed functionShader modules쉐이더 모듈이전 API와 달리 Vulkan의 쉐이더 코드는 GLSL 및 HLSL과 같이 사람이 읽을 수 있는 구문이 아닌 바이트 코드 형식으로 준비 되어야 합니다. 이 바이트 코드 형식은 SPIR-V라고하며 Vulkan 및 OpenCL (둘 다 Khronos API)과 함께 사용하도록 설계되었습니다. 그래픽을 작성하고 셰이더를 계산하는 데 사용할 수 있는 형식이지만 이 튜토리얼에서는 Vulkan의 그래픽 파이프 라인에 사용 된 셰이더에 초점을 맞출 것입니다. 바이트 코드 형식을 사용하는 이점은 GPU 공급 업체가 쉐이더 코드를 이진코드로 바꾸기 위해 작성한 컴파일러가 훨씬 덜 복잡하다는.. 더보기
Graphics Pipeline basics - introduction 이전 글 : Image views 다음 글 : Shader modules Graphics Pipeline basicsIntroduction다음 몇 강좌를 통해 우리는 첫 번째 삼각형을 그리도록 구성된 그래픽 파이프 라인을 설정할 것입니다. 그래픽 파이프 라인은 렌더링 타겟의 픽셀까지 메쉬의 꼭지점과 텍스처를 가져 오는 일련의 작업입니다. 간략한 개요가 아래에 표시됩니다. 입력 어셈블러는 지정한 버퍼에서 원시 버텍스 데이터를 수집하고 인덱스 버퍼를 사용하여 버텍스 데이터 자체를 복제하지 않고도 특정 요소를 반복 할 수 있도록 합니다. 버텍스 쉐이더는 모든 버텍스에 대해 실행되며, 일반적으로 버텍스 위치를 모델 공간에서 스크린 공간으로 변환하는 작업을 합니다. 또한 버텍스 별 데이터를 다음 파이프 라인 스테.. 더보기
Presentation - Image views 이전 글 : Swap chain 다음 글 : Graphics Pipeline basics Image views스왑 체인의 렌더 파이프 라인을 포함하여 VkImage 를 사용하려면 렌더링 파이프 라인에서 VkImageView 객체를 만들어야 합니다. 이미지 뷰는 말 그대로 이미지에 대한 뷰입니다. 밉 매핑 을 사용하지 않고 2D 텍스처, 깊이 텍스처로 처리 해야하는 경우와 같이 이미지에 액세스하는 방법과 액세스 할 이미지 부분을 설명합니다. 이 장에서는 스왑 체인의 모든 이미지에 대한 기본 이미지 뷰를 생성하여 나중에 색상 대상으로 사용할 수있는 createImageViews 함수를 작성합니다. 먼저 이미지 뷰를 저장할 클래스 멤버를 추가합니다. std::vector swapChainImageViews; .. 더보기
Presentation - Swap chain 이전 글 : Window surface 다음 글 : Image views Swap chain스왑 체인Vulkan에는 "기본 프레임 버퍼" 개념이 없으므로 화면에서 시각화 하기 전에 렌더링 할 버퍼를 소유하는 인프라가 필요합니다. 이 인프라를 스왑 체인 이라고 하며 Vulkan에 명시 적으로 만들어야 합니다. 스왑 체인은 본질적으로 화면에 표시되기를 기다리는 이미지 대기열입니다. 우리의 응용 프로그램은 그와 같은 이미지를 가져 와서 그 이미지를 큐에 반환합니다. 대기열의 작동 방식과 대기열에서 이미지를 표시하기 위한 조건은 스왑 체인 설정 방법에 따라 다르지만 스왑 체인의 일반적인 목적은 이미지의 프레젠테이션을 화면 새로 고침 빈도와 동기화하는 것입니다. Checking for swap chain supp.. 더보기
Presentation - Window surface 이전 글 : Logical device and queue 다음 글 : Swap chain Window surface Vulkan은 플랫폼에 독립적인 API 이기 때문에 자체적으로 윈도우 시스템과 직접 인터페이스 할 수 없습니다. Vulkan 과 윈도우 시스템 간의 연결을 설정하여 결과를 화면에 표시 하려면 WSI (Window System Integration) 확장을 사용해야 합니다. 이 장에서는 VK_KHR_surface 의 첫 번째 항목에 대해 설명 합겠습니다.렌더링 된 이미지를 윈도우 화면에 나타내는 VkSurfaceKHR 객체에 대하여 살펴 보게 될 것 입니다.. 우리 프로그램의 윈도우 화면은 이미 GLFW로 만들어져 있습니다. VK_KHR_surface 확장 기능은 인스턴스 수준의 확장 기능이.. 더보기
Setup - Logical device and queue 이전 글 : Physical devices and queue families 다음 글 : Window surface Logical device and queue논리적 디바이스와 큐 Introduction 사용하려는 물리적 장치를 선택한 후에는 논리적 장치를 설정하여 인터페이스 할 필요가 있습니다. 논리적 디바이스 작성 프로세스는 인스턴스 작성 프로세스와 유사하며 사용 하려는 기능을 명시 해야 합니다. 또한 앞에서 어떤 대기열 패밀리를 사용할 수 있는지 검토 했으므로 그 검토에 의하여 , 지금 생성 할 대기열을 지정 해야 합니다. 다양한 요구 사항이 있는 경우 동일한 물리적 장치에서 여러 논리적 장치를 만들 수도 있습니다. 논리 장치 핸들을 저장할 새 클래스 멤버를 추가하는 것으로 시작 하십시오. VkDe.. 더보기
Setup - Physical devices and queue families 이전 글 : Validation layers 다음 글 : Logical device and queuePhysical devices and queue families물리적 장치 및 대기열 패밀리Selecting a hysical device물리적 장치 선택 VkInstance 를 통해 Vulkan 라이브러리를 초기화 한 후에는 시스템에서 필요한 기능을 지원하는 그래픽 카드를 찾아 선택해야 합니다. 실제로 여러 개의 그래픽 카드를 선택하여 동시에 사용할 수 있지만 이 튜토리얼에서는 우리가 필요로하는 첫 번째 그래픽 카드를 사용 할 것입니다. pickPhysicalDevice 함수를 추가하고 initVulkan 함수에서 이 함수에 대한 호출을 추가 합니다. void initVulkan() { createIns.. 더보기
Development environment 이전 글 : Overview다음 글 : Drawing Triangle - Base code Development environment 이 장에서는 Vulkan 응용 프로그램 개발을 위한 환경을 설정하고 유용한 라이브러리를 설치합니다. 컴파일러를 제외한 모든 도구는 Windows 및 Linux와 호환 되지만 설치 단계가 조금씩 다르므로 여기서는 별도로 설명합니다. Windows Windows 용으로 개발하는 경우 Visual Studio 2013 또는 2015를 사용하여 코드를 컴파일 한다고 가정 합니다. 단계는 두 버전에서 동일 하지만 Vulkan SDK에는 현재 Visual Studio 2013과 호환되는 디버그 기호 만 포함됩니다. 실제로는 문제가 아니지만 사용자가 고려해야 할 사항 입니다 Vulka.. 더보기
Introduction 다음 글 : Overview>> About 이 튜토리얼은 Vulkan 그래픽의 사용 및 API 계산의 기본 사항을 알려줍니다. Vulkan은 최신의 그래픽 카드를 훨씬 더 잘 추상화하는 Khronos 그룹 (OpenGL로 알려짐)의 새로운 API입니다. 이 새로운 인터페이스를 사용하면 응용 프로그램이 의도하는 바를 잘 기술 할 수 있으므로 OpenGL 및 Direct3D와 같은 기존 API와 비교하여 성능이 향상되고 과도한 드라이버 동작을 줄일 수 있습니다. Vulkan의 아이디어는 Direct3D 12 및 Metal의 아이디어와 유사하지만 Vulkan은 완벽한 크로스 플랫폼이라는 장점이 있으며 동시에 Windows, Linux 및 Android 용으로 개발할 수 있습니다. 그러나 이러한 이점에 대해 지.. 더보기