본문 바로가기

분류 전체보기119

7. SPIR-V SPIR는 Standard Portable Immediate Representation의 약어 이며,SPIR-V는 SPIR로 부터 파생 되었다. SPIR-V가 Vulkan과 OpenCL을 지원하면서 벤더 들은 드라이버 개발과 최적화에 집중을 할 수 있게 되었다. 사람이 읽을수 있는 코드 형식으로 된 OpenGL의 셰이딩 언어와는 달리 Vulkan은 하위 계층의 이진 중간 표현 (IR) 언어인SPIR-V만을 사용한다. SPIR의 좌측을 보면GLSL, HLSL, OpenCL 컴포넌트를 빌드하기 위해서는 DXC, Clang, LLVM 같은 컴파일러가 필요하다.다양한 언어들이 각 각의 컴파일러 필요 없이 하나의 포맷인 SPIR-V로 컴파일하여, 우측의 언어에서 사용할수 있게 한다. SPIR-V 장점은 다음과 같.. 2024. 7. 4.
6. RenderPass 렌더 패스는 하나 이상의 서브패스와 첨부로 구성 되어있습니다.렌더 패스의 목적은 프레임 버퍼의 메모리 접근을 최적화 합니다. 서브패스는 여러 종류의 첨부에 컬러, 뎁스 렌더링을 합니다.그리고 첨부를 읽어서 스왑체인 이미지에 최종 결과물을 렌더링 합니다.서브 패스는 프레임 버퍼와 연결 되어있으며,  연결된 첨부를 읽고 씁니다.                                                               은  2개의 서브패스와 2개의 첨부로 이루어져 있습니다.첫 번째 서브 패스는 인덱스 1> 컬러 첨부에 렌더링을 하고,인덱스 2> 뎁스 첨부에 렌더링을 합니다.두번째 서브패스는 첫 번째의 결과물을 읽고, 스왑체인 이미지 인덱스 0번 이미지에 렌더링을 합니다. 그럼 우리는 첨부.. 2024. 7. 1.
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.