본문 바로가기

Vulkan14

10 - 1. Descriptor 추가 이해 디스크립터 세트 레이아웃과 디스크립터 세트는 위의 맞물리는 물체라고 보시면 됩니다.서로 각각 만들어 놓고 나중에 런타임에 바인딩 되죠..코드로만 봐서는 헷갈립니다.그래서 따로 따로 생각하시고, 절차적으로 생각하시는게 정신건강에 좋습니다.  그림 1 > 위 그림에서는 좌측과 우측은 분리 되어있습니다.  좌측의 디스크립터 세트 레이아웃은 3개 있구요 첫번째 디스크립터 세트 레이아웃 내부에는 3개의 디스크립터 세트 레이아웃 바인딩이 있습니다.- 여기선 바인딩이 3개가 너무 많으니 2개로 합니다두번째 디스크립터 세트 레이아웃 내부에는 한개의 디스크립트 세트 레이아웃 바인딩이 있습니다.세번째 디스크립터 세트 레이아웃 내부에는 한개의 디스크립트 세트 레이아웃 바인딩이 있습니다.총 4 개의 디스크립터 세트 레이아웃 .. 2024. 8. 5.
12. Image layout and Staging Buffer 이미지 리소스를 마저 생성하고최적 타일링으로 이미지 리소스를 생성하는 방법도 알아봅니다.그리고 최적화에 필요한 스테이징 버퍼에 대해서도 알아보자. 이미지 리소스 생성하는 과정은 다음과 같습니다.1. 이미지 개체를 생성한다.2. 이미지 데이터 할당 및 내용 채우기3. 이미지 샘플러 생성4. 이미지 뷰 생성5. 적절한 레이아웃으로 설정 6. 셰이더 수정과 업데이트 디스크립터5. 적절한 이미지 레이아웃으로 설정이미지 레이아웃이란 이미지 메모리에 이미지를 저장하는 방식이다.위에서 메모리 타일 종류인 최적 타일과 리니어 타일에 대해서 설명했었다.읽기 / 쓰기를 목적으로 최적 레이아웃의 메모리에 직접 액세스를 할수가 없다.최적 레이아웃의 불투명한 성질로 인하여 한 유형의 레이아웃을 다른 유형의 레이아웃으로 변경이 .. 2024. 7. 25.
11. Image 벌칸은 기본적으로 버퍼와 이미지라는 두 가지 유형의 리소스를 갖고있다.이전 챕터에서 버퍼에 대해서 알아보았고,  이미지 리소스 개념에 대해서 알아본다. 이미지리소스는 1D, 2D 또는 3D 형식으로 저장된 연속적인 바이트 배열이다.이미지는 버퍼 리소스와는 달리 메모리에 특수한 형식으로 포매팅된 정보의 조각이다. 이미지 개체는 VkImage 개체로 표현을 하고 vkCreateImage API를 사용하여 생성한다.장치 메모리를 할당하고 이미지 내용을 할당된 메모리에 저장하는 과정을 수행해야 한다.그러기 위해 메모리와 생성된 이미지 개체와 바인딩을 해야한다. 셰이더 스테이지에서 생성된 이미지 개체를 활용하기 위해 이미지 뷰로 변환을 해야한다. 이미지를 이미지 뷰로 변환하기 전에 이미지 레이아웃을 사용하는 드라.. 2024. 7. 21.
10. Descriptor set and Descriptor set layout 이전 챕터에서는 버텍스 버퍼를 생성하고 메모리를 생성하고 둘을 바인딩했었다.이때 메모리 생성시 " VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT " 을 사용해서 CPU GPU 공유가 가능했다.  ( R/W 빈번하게 일어남 ) https://graphicsimon.tistory.com/63 8. Vulkan Vertex Buffer & Memory이전 챕터 [ SPIR-V ] 에서 GLSL 셰이더를 SPIR-V로 변환하고 셰이더 모듈을 만들었다. 이번 챕터 "Vulkan Buffer & Memory " 에서는셰이더 모듈에 정점 데이터를 넘겨주는 부분을 구현할 예정이다. OpenGL에graphicsimon.tistory.com 유니폼 버퍼를 생성할때도 R/W 빈번하게 발생하기 때문에 " .. 2024. 7. 12.