그래픽스(34)
-
[vk] Drawing triangle - setup - Validation layers
What are validation layers? - Vulkan API 는 드라이버 오버 헤드를 최소화하자는 목표를 바탕으로 설계됨. - 이 목표중 하나는 API에서 기본적으로 오류검사를 하지않는다는것 - 간단한 실수조차 명시적으로 처리 x => will simply result in crashes or undefined behavior - vulkan은 모든것에대해 명시해줘야하기 때문에 실수하기 쉬움 - 이러한 검사를 API에 추가할 수 있음 "validation layers" - 우아한 vulkan의 멋진 시스템 - 유효성 검사 계층은 선택적 구성요소 - Vulkan 함수를 후킹하여 추가적인 동작을 수행하도록함 - 일반적인 operations은 다음과 같다 Checking the values of ..
2021.08.05 -
[vk] Drawing triangle - setup - Instance
1. Creating an instance - instance 는 소프트웨어 구조체, 응용프로그램의 상태를 다른 앱이나 현재앱의 문맥에서 수행되는 라이브러리부터 논리적으로 분리시킴 - 시스템의 물리 장치는 인스턴스의 구성원으로 표현, 각각 특정 능력을 가지고, 가용한 큐의 선택을 포함 - vulkan은 앱의 하위시스템, vulkan라이브러리에 한번 연결하고 초기화하면 일부 상태를 추적 -> 추적하기 위해서는 객체들을 저장해야함. 이를 인스턴스 장치, Vkinstance 객체로 표현. - 인스턴스를 생성, vulkan 라이브러리를 초기화해야함 - 인스턴스는 응용프로그램과 vk 라이브러리간의 연결 - 이를 작성하려면 응용 프로그램에 대한 세부정보를 드라이버에 지정해야함 2. vkCreateInstance -..
2021.08.05 -
[vk] Drawing triangle - setup - base code
General structure #include #include #include #include class HelloTriangleApplication { public: void run() { initVulkan(); mainLoop(); cleanup(); } private: void initVulkan() { } void mainLoop() { } void cleanup() { } }; int main() { HelloTriangleApplication app; try { app.run(); } catch (const std::exception& e) { std::cerr free) 최신 c++ 헤더 - RAII or smart pointers 를 사용해서 자동으로 관리할 수 있긴함 - 하지만, 튜토..
2021.08.04 -
[vk] Vulkan Tutorial: 삼각형을 그리기 위한 단계
Summary 실제 프로그램은 더 많은 단계를 수행해야함 - 정점 버퍼 할당 (allocating vertex buffers) - 유니폼 버퍼 생성 (creating uniform buffers) - 텍스처 이미지 업로드 (uploading texture images) 하지만 여기선 "삼각형"을 생성하기위해, 정점버퍼대신 정점 셰이더에 정점좌표를 포함시킴. (정점 버퍼를 관리하기 위해선 먼저 명령버퍼부터 익숙해져야함) 아래는 vulkan에서 삼각형 만들기 과정. Create a VkInstance Select a supported graphics card (VkPhysicalDevice) Create a VkDevice and VkQueue for drawing and presentation Create..
2021.08.04 -
[learn-OpenGL] Transformations
벡터, 내적, 외적, 행렬 은 생략 1. 그래픽스 변환 1) 강체 변환(rigifbody transformation) = 이동변환 + 회전변환 = 모습은 불변 2) 유사변환(similarity transformation) = 강체변환 + 균등크기조절변환 + 반사변환 = 물체사이의 각이 유지 = 물체내부 정점간의 거리가 일정한 비율로 유지 3) 어파인 변환(affine transformation) = 유사변환 + 차등 크기조절 + 전단 : 물체의 타입이 유지, 변환행렬의 마지막 행이 (0, 0, 0, 1) 4) 원근 변환(perspective transformation) = 평행선이 만남, 소실점에서 만남, 마지막행이 (0, 0, 0, 1) 이 아님 5) 선형 변환(linear transformation)..
2021.07.26 -
[learn-OpenGL] Textures
1. Textures = 각 모델에는 더많은 vertex들이 필요, 각 vertex는 컬러 attributes이 필요 => 오버헤드 = 텍스처 : 2D, 1D, 3D image = vertex를 추가하지 않아도 오브젝트가 매우 세밀하게 묘사된것처럼 = 텍스쳐는 많은 양의 데이터를 저장하여 shader에 보낼 수 있음. 삼각형에 매핑 = 각 vertex에 텍스처의 어느 부분이 해당하는지 알려주어야함. = 각 vertex에는 샘플링할 texture coorfinate 가 있어야함 = fragment 보간을 통해 텍스처 좌표 를 보간 텍스처 좌표의 범위 = x와 y축상의 0~1 = 텍스쳐 좌표를 사용하여 텍스쳐 컬러를 가져오는것을 sampling이라고 함. = 좌측하단 vertex : (0, 0) = 우측하단..
2021.07.25