Vulkan 튜토리얼: 그래픽스 파이프라인 생성하기
이번 튜토리얼에서는 그래픽스 파이프라인 생성을 위한 버텍스 및 프라그멘트 셰이더 코드를 작성하고, 그래픽스 파이프라인에 어떤 상태(state)가 있는지를 알아보겠습니다. 그래픽스 파이프라인 개요 간략히 나타낸 그래픽스 파이프라인, 버텍스 버퍼와 인덱스 버퍼는 위 파이프라인을 거쳐 이미지의 픽셀로 대응합니다. (Vulkan Tutorial) 프리...
이번 튜토리얼에서는 그래픽스 파이프라인 생성을 위한 버텍스 및 프라그멘트 셰이더 코드를 작성하고, 그래픽스 파이프라인에 어떤 상태(state)가 있는지를 알아보겠습니다. 그래픽스 파이프라인 개요 간략히 나타낸 그래픽스 파이프라인, 버텍스 버퍼와 인덱스 버퍼는 위 파이프라인을 거쳐 이미지의 픽셀로 대응합니다. (Vulkan Tutorial) 프리...
이번 튜토리얼에서는 드디어 컴퓨트 파이프라인이 아닌 그래픽스 파이프라인(graphics pipeline)을 이용해 삼각형을 렌더링하는 소주제에 돌입합니다. 이는 이전까지의 과정과 판이한 구조를 가집니다. 이 과정을 전반적으로 요약하면 다음과 같습니다. 그래픽스 파이프라인 생성. 컴퓨트 파이프라인과 달리 이는 버텍스 셰이더(vertex shade...
이번 튜토리얼에서는 어떻게 GPU 파이프라인에 맞게 이미지의 레이아웃을 변경하고, 적절히 변경한 레이아웃을 바탕으로 이미지를 호스트 단으로 복사하여 저장할 것입니다. GPU가 상당히 파이프라인화(pipelined)된 기기임은 잘 알려진 사실입니다. 이 말인 즉슨, 큐에 제출된 어떤 커맨드는 다음과 같은 각 파이프라인의 스테이지를 거쳐가며 필요한 부분...
안녕하세요, 지난 번 튜토리얼에서 예고했듯 이번에는 새로운 소주제를 시작해보겠습니다. 이번 소주제의 주제는 바로 우리가 볼 수 있는 “이미지”입니다. 이제 본격적으로 Vulkan의 그래픽스 API적 면모를 볼 수 있겠군요. 사실 Vulkan에서 이미지를 바라보는 관점은 버퍼와 비슷합니다. 이 둘은 결국 바이트 데이터를 소유하는 디바이스 메모리를 가르...
이번 튜토리얼에서 소주제였던 버퍼 입출력을 완료할 것입니다. 이를 수행하기 위해, 다음의 네 과정을 순차적으로 수행해야 합니다: 컴퓨트 파이프라인을 완성했기 때문에, 이젠 이 파이프라인을 실행하기만 하면 됩니다. 다만 앞서 설명했듯 파이프라인은 사용할 디스크립터 셋에 대한 정보만을 담고 있을 뿐, 아직은 우리가 만든 버퍼를 파이프라인에 바인딩하...
이번 튜토리얼에서는 버퍼 원소의 두 배를 계산하는 과정을 어떻게 GPU 코드로 나타낼 수 있는지에 대해 알아보겠습니다. 앞선 C++의 코드로 GPU를 조작하는 과정은 호스트에서 실행되는 것과 달리, 이번에는 디바이스에서 병렬적으로 실행될 수 있는 셰이더를 사용할 것입니다. 셰이더는 GPU에 포함된 수많은 코어에서 병렬적으로 실행됩니다. 이 코어의 수...
목표 설정 소주제의 목표인 버퍼를 조작하고 입출력하는 과정을 구체화하겠습니다. GPU라는 병렬 연산 장치의 능력을 돋보이기 위해, 우리는 0부터 1,023까지 총 1,024개의 float을 담고 있는 버퍼를 만들고, 컴퓨트 파이프라인을 이용해 그 두 배의 값을 계산해 채워 넣겠습니다. CPU라면 총 1,024번의 곱셈 연산이 필요한 이 과정을 GPU...
목표 설정 앞선 튜토리얼을 끝냈다면 이제 본격적으로 이 튜토리얼, 그 중에서도 소주제의 목표를 설정하겠습니다. 우리는 처음부터 그래픽스 렌더링을 위해 창을 띄우고, 삼각형을 그리는 Hello Triangle을 만들지 않을 것입니다. 그 이유는 다음과 같습니다: Vulkan 창을 띄우는 것은 굉장히 복잡합니다. 우리는 크로스플랫폼에서 창을 띄우...
Hello! Welcome to the world of Vulkan. Vulkan is the next-generation graphics framework following OpenGL by the Khronos Group, providing better abstraction and performance for modern GPUs. Unlike ...