분류 전체보기(8)
-
[VULKAN]4. Window Surface
어제 레데리2 깨느라 새벽 3시에 잤다. 졸음을 참고 오늘 다시 진도를 나간다.. 오늘은 window surface를 다룬다. 이제 Vulkan 드라이버를 로더로 불러 와서 무언가는 이제 그릴 수 있다. 근데 그 무언가를 어디에 그리는지를 설정해야 한다. WSI(Window System Integration) Vulkan은 플랫폼에 구애받지 않는 API이기 때문에 자체적으로 윈도우 시스템과 직접 인터페이스 할 수 없다. Vulkan과 윈도우 간의 연결을 설정하려면 WSI 확장판을 사용해야 한다. WSI는 Linux, MS Windows, Android와 같은 다양한 플랫폼에서 프레젠테이션 계층을 통합하기 위한 크로노스 그룹의 확장판 세트이다. WSI는 디스플레이와 응요 프로그램 간의 인터페이스로서 작동하..
2023.01.17 -
[VULKAN] 3. Device 초기화
약속 갔다와서 피곤하고 게임이 너무 하고 싶지만 이악물고 시작한다. 오늘은 장치 초기화를 다룬다. 인스턴스 생성 후 대기열과 장치를 통해 상호작용 할 수 있다. Vulkan은 물리적 장치와 논리적 장치 개념을 분리한다. 물리적 장치는 시스템의 단일 구성 요소이며, 함께 작동하는 여러 구성 요소 일 수 있다. 논리적 장치는 기본적으로 물리적 장치와의 인터페이스이다. 물리적 장치(Physical Device) 물리적 장치는 시스템이 제출된 작업을 수행하는데 도움이 되도록 함께 작동하는 다른 하드웨어 부품과 단일 GPU로 구성될 수 있든 단일 개체다. vulkan은 높은 호환성으로 다양한 플랫폼에서 실행될 수 있다. 데스크탑, 노트북, 스마트폰같은 각 장치는 다른 구성과 다른 성능, 또는 다른 그래픽 하드웨어..
2023.01.16 -
[Lighting] 빛의 인식
렌더링 엔진을 구현함에 앞서 빛에 대한 이론을 몇가지 공부하고 넘어가려고 한다. 내가 시뮬레이션하려는게 정확히 무엇인지는 알고 해야 할 것 같다. 나한테 가장 재밌는걸 먼저 포스팅해본다. 오늘의 주제는 빛을 인식하는 인간의 시각이다. 빛은 파장이며 입자이지만, 오늘은 파장으로서의 빛에 주목해본다. 우리는 빛을 다 볼 수 있는게 아니다. 우리는 저 전자기파의 아주 작은 범위만 인식할 수 있다. 그 범위를 가시광선이라 부른다. 가시광선보다 파장이 더 긴 영역은 빨간색의 바깥에 있다고 해서 적외선, 가시광선보다 파장이 더 짧은 영역은 자주색의 바깥에 있다고 해서 자외선이다. 우리 주변의 불투명한 물체는 자기 스스로 빛을 내는 것이 아니다. 사과가 빨간 이유는 사과의 표면에 다른 빛은 흡수되고 빨간 색만 반사되..
2023.01.11 -
[VULKAN] 2. Instance 초기화
오늘은 Instance 초기화와 validation layer를 한번에 본다 DirectX12를 공부할때 사실 장치 초기화하는 부분은 솔직히 대충봤다. 재미없기 때문이다. 하지만 이번엔 다를것이다. VKInstance 가장 먼저 인스턴스를 생성해 응용 프로그램과 Vulkan 라이브러리를 연결한다. Vulkan은 물리적 장치, 메모리 유형, 커맨드 버퍼 큐와 확장판을 공개하는데, 이러한 방식으로 실제 하드웨어에 근접하게 제어할 수 있는 많은 제어권을 제공한다. 하드웨어는 자신의 GPU 아키텍처에 맞춰 Vulkan 표준을 구현한 드라이버를 제공한다. 이 드라이버는 고수준의 기능을 응용 프로그램에 제공하여 장치와 교환할 수 있게 한다. 응용프로그램은 초기화 단계에서 로더와 통신하여 Vulkan 드라이버를 활성..
2023.01.10 -
[VULKAN] 1. GLFW 초기화
12시가 넘은 이 시간.. 내일은 출근이지만.. 설치만 하고 잠들기가 아쉬워 좀 더 진행을 해본다. 예제 코드 및 원문 튜토리얼은 여기서 확인 가능하다. vulkan/vulkan.h를 직접 포함시켜도 되지만 GLFW 포함하기 전에 GLFW_INCLUDE_VULKAN을 선언하면 자동으로 vulkan.h를 로드한다. #define GLFW_INCLUDE_VULKAN #include 또 나는 main.cpp가 지저분해지는게 싫어서 define.h 를 따로 만들었다. // // Define.h // #ifndef Define_h #define Define_h #pragma once #include #include #include #endif /* Define_h */ 아직은 다 오류 리포팅을 위한 헤더만 추가되..
2023.01.09 -
[VULKAN] 0. 시작하기
프로젝트 목표 vulkan 튜토리얼 이해하면서 진도 나가기 튜토리얼 다 끝나면 그 다음부터 머할지 생각해보기 일단 시작은 해보지만 얼마나 꾸준히 올릴지 나도 모르겠다. 좀 긴 여정이 될것 같다. vulkan을 고른 이유는 단지 호환성 때문이다. 집에서 윈도우 데스크탑으로도 하다가 답답하면 카페나가서 맥북으로도 하고 싶다 (아직 안샀지만) 스타벅스에서 맥북으로 그래픽스 프로그래밍을 하는 나.. 왠지 간지날 것 같다. 일단 셋팅부터 시작해보자. Window SDK를 다운받는다. 왠만하면 찾기쉽게 기본경로로 설치하자. LunarXchange LunarG uses cookies on our site to help us deliver the best user experience. Review our Privacy..
2023.01.08