본문 바로가기

분류 전체보기73

3D Scenes With Ray Marching https://inspirnathan.com/posts/52-shadertoy-tutorial-part-6 2024. 6. 27.
5. Presentation And Synchronize ( Fence, Semaphore, Event ) 이번 챕터에서는 세마포어와 펜스를 살펴본다. 세마포어와 펜스를 활용하는 화면출력 (Presentation) 부분을 먼저 확인합니다.동기화를 적용할때, 더 큰 범위의 동기화를 사용하게 되면 최적화의 문제가 있다.예를 들어 큐와 큐의 동기화 할수있는 부분을 펜스를 사용하게 되면, cpu time을 낭비할 수 있다.그렇기에 적절한 동기화 방법을 선택해서 구현하자. 1. 표현 (Presentation)화면 출력할때 사용하는 단계 입니다.화면 출력은 3가지로 정의 된다.1) 화면에 표시할 이미지 인덱스 얻어오기2) 커맨드 버퍼 큐에 제출3) 이미지 인덱스 참조하여 이미지 출력  다음 화면 해당하는 이미지 인덱스 가져오기커맨드 버퍼가 색칠 작업에 사용할 프레젠테이션 이미지를 가져오고,타깃 프레젠테이션 이미지가 변경.. 2024. 6. 27.
4. Pipeline Barrier And Image Layout 파이프라인 배리어란 ?파이프 라인인 내부 장벽을 설치하여 장벽 전의 명령을 완료하는 동기화하는 메커니즘이다.함수 이름이 vkCmdPipelineBarrier 를 사용하여 일반적으로 파이프 라인 배리어 라고 불리고,이미지 레이아웃을 진행할때, 메모리를 동기화 하는데 사용을 해야 하기 때문에메모리 장벽이라고도 불린다.  메모리 장벽 (MemoryBarrier) 이란 ? 메모리 장벽은 데이터와 읽기와 쓰기를 동기화 하는데 도움이 된다. 메모리 장벽은 메모리 장벽 전 후 지정한 작업이 동기화 되도록 보장한다.즉 메모리 장벽을 삽입하면 메모리 지시를 실행하기 앞서 메모리 장벽이 실행되기 전메모리 작동이 완료 됐는지를 확인한다. 메모리 장벽 종류1) 전역 메모리 장벽 - 이 유형의 메모리 장벽은 모든 종류의 실행 .. 2024. 6. 24.
3. Command buffer 이전 챕터에서 스왑체인을 생성하고 스왑체인에 사용될 이미지와 이미지 뷰를 생성했었다.이번 시간에는 커맨드 버퍼와 풀에 대해서 알아보자. 0. 커맨드 풀과 버퍼 란 ?커맨드는 Vulkan API 명령어 들이며,커맨드 버퍼는 커맨드들이 레코딩이 되어 들어가는 공간이다.커맨드 풀에서 커맨드 버퍼를 관리를 하며, 커맨드 버퍼를 미리 생성해놓고 사용을 한다. 커맨드 풀을 통해서 커맨드 버퍼를 할당 받고, 연속된 커맨드를 커맨드 버퍼에 레코딩을 하며,커맨드 버퍼에서 꺼낸 커맨드를 실행을 함으로써 이미지에 렌더링 과정이 이루어진다.  커맨드 버퍼 라이프사이클  Initial 단계는 커맨더 버퍼를 할당한다.Begin 단계는 vkCmdBeginCommandBuffer() 실행, Recording 과정이 진행된다.End .. 2024. 6. 21.