본문 바로가기

전체 글92

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.
9. Pipeline and Pipeline State Vulkan 그래픽 파이프라인은 OpenGL과 동일 합니다.차이점은 그래픽 파이프라인의 모든 단계를 개발자가 명시적으로 설정 해야합니다. 파이프라인을 생성하고 바인딩 하면 파이프라인을 사용할수 있습니다. Vulkan 렌더링 오버뷰는 다음과 같습니다. 파이프라인은 입력 데이터가 흘러가는 일련의 고정된 스테이지를 의미합니다.위 그림 " 노랑색 영역 Grpahic Pipeline " 에 대해서 좀 더 자세히 보면 아래와 같습니다. 좌측에 해당하는 영역의 빨강색에 해당하는 영역은 "프로그램 스테이지" 라고 칭하며좌측에 해당하는 나머지지 영역은 "고정 기능 스테이지" 라고 합니다.프로그램 스테이지는 셰이더 프로그래밍 영역이라고 보면되고 고정 기능 스테이지의 경우 그외 나머지 입니다.이 둘의 가장 큰 차이는 프로그.. 2024. 7. 8.