분류 전체보기(220)
-
[vk] Drawing triangle - Drawing - Framebuffers
1. Framebuffers - swapchain image와 같은 포맷을 가지는 단일 framebuffer를 생각하며 render pass를 설정하였다. - 하지만 실제로만들지는 않음. - render pass 생성 동안에 명시된 attachments은 VkFramebuffer object로 래핑하여 바인딩됨. - framebuffer object는 attachments로 표현된 모든 VkImageView 객체를 참조한다. - 우리의 경우, 오직 하나의 color attachment만 가지고 있음. - 하지만, attachment를 위해 사용하는 image는 swapchain이 표시할 이미지를 검색할 때 swapchain이 반환하는 image에 따라 다름 - 이것은 swapchain에있는 모든 imag..
2021.08.11 -
[vk] Drawing triangle - graphics pipeline basics - Conclusion
1. Conclusion - 이전 챕터들에서 생성한 모든 구조체와 객체를 이제 결합하여 pipline 을 생성할 수 있게되었다. - 아래는 이때까지 생성한 객체의 타입을 요약해서 보여주는것. Shader stages: the shader modules that define the functionality of the programmable stages of the graphics pipeline Fixed-function state: all of the structures that define the fixed-function stages of the pipeline, like input assembly, rasterizer, viewport and color blending Pipeline layout..
2021.08.09 -
[vk] Drawing triangle - graphics pipeline basics - Render passes
Render passes 1. Setup - 파이프라인을 생성하기전에 Vulkan에게 렌더링 동안 사용될 framebuffer를 알려줘야함 (need to tell Vulkan about the framebuffer attachments) - 얼마나 많은 색상 과 깊이 버퍼가 있는지, - 각각에 대해 사용할 샘플 수 및 렌더링 작업 전체에서 내용을 처리하는 방법을 지정해야함. - 이러한 모든정보들은 render pass object에 래핑됨 - createRenderPass 함수를 새로 만들어 initVulkan에 createGraphicsPipeline전에 호출할것임 void initVulkan() { createInstance(); setupDebugMessenger(); createSurface()..
2021.08.09 -
[vk] Drawing triangle - graphics pipeline basics - Fixed functions
Fixed functions - 이전 그래픽 API는 그래픽 파이프라인의 대부분의 단계에 대해 기본 상태를 제공했음 - 하지만 Vulkan에서는 뷰포트 크기와 색상 혼합 등과 같은 모든것에 대해 명시적이어야함. - 이 장에서는 이런 fixed function operations에 대해 다룰것. 1. Vertex input - VkPipelineVertexInputStateCreateInfo 구조체를 기술해야함 - vertex shader로 넘길 vertex data의 format을 기술해야한다. - 대략 두가지를 기술해야함. Bindings: spacing between data and whether the data is per-vertex or per-instance (see instancing) At..
2021.08.09 -
[vk] Drawing triangle - graphics pipeline basics - Shader modules
1. Shader modules - 이전의 다른 API가 달리 Vulkan의 shader 코드는 GLSL 및 HLSL 같은 사람이 읽을 수 있는 구문과 달리 - 바이트 코드 형식으로 지정해야함 - 이 바이트 코드 형식은 SPIR-V 이며, Vulkan 과 OpenCL(둘다 Khronos API)을 위해 설계된것이다. - 그래픽을 작성하고, 셰이더를 계산하는데 사용할 수 있는 format이지만, - 이 튜토리얼에선, 그래픽 파이프라인에서 사용되는 shaders에만 중점을 둠. 1.1 bytecode format의 장점 - GPU 회사가 제공하는 compilers 가 덜 복잡함 (shader code를 native code로 변환하는게) - 과거는 GLSL과 같은 사람이 읽을 수 있는 구문을 사용, GPU공..
2021.08.09 -
[vk] Drawing triangle - graphics pipeline basics - introduction
- 그래픽 파이프라인을 설정해야함. - 그래픽 파이프라인은 vertices과 texture를 render targets의 pixels까지 가져오는 일련의 operations임. 1. Input assembler - raw vertex data를 수집함 (작성자가 명시한 buffers로부터) - index buffer를 사용하여, vertex data를 복제하지 않고 특정 요소를 반복할 수 있도록 함. - (메모리에서 기하 자료를 읽어 기본 도형 형성 2. vertex shader - 모든 vertex에 대해 실행. - transformations를 적용해 vertex positions을 model space에서 screen space로 변환 - 또한 per-vertex data를 다음 단계로 전달할 수 ..
2021.08.09