Graphics
-
[29] - (C++) For each, Move Semantics, Lambdas, Uniform Initialization - 1Graphics 2021. 8. 3. 16:32
For each 단순히 Loop를 이르는 말이기도 하지만 Function Template의 기능도 존재합니다. std::for_each의 형태로써 어떤 범위의 요소에 함수를 적용시킬 수 있습니다. 이것 말고 에 정의되어 있는 std::for_each를 이르는 말일 수도 있습니다. 이곳에 구체적으로 설명되어 있습니다. 더 구체적인 정보는 여기에도 있습니다. Parameter에는 함수만이 들어갈 수 있는 것이 아닙니다. 다음과 같이 Class의 Instance를 집어 넣을 수도 있습니다. 그런데 Function Object라는 개념을 알아야 합니다. 어떤 Range의 Dereferencing 한 iterator의 결과에 Function Object를 적용한다는 것이 첫 번째 정의이기 때문입니다. (Deref..
-
[28] - Bindable/Drawable System - 2Graphics 2021. 8. 2. 14:30
(28) C++ 3D DirectX Tutorial [Bindable / Drawable System Part 2] - YouTube planetchili/hw3d at T21.2-End (github.com) GitHub - planetchili/hw3d: C++ 3D graphics engine under Direct3D 11. Developed in a Planet Chili video tutorial series that can C++ 3D graphics engine under Direct3D 11. Developed in a Planet Chili video tutorial series that can be found on YouTube. https://youtu.be/_4FArgOX1I4 -..
-
[27] - Bindable/Drawable SystemGraphics 2021. 8. 1. 22:36
(26) C++ 3D DirectX Tutorial [Bindable / Drawable System Part 3] - YouTube planetchili (chili) (github.com) planetchili - Overview planetchili has 36 repositories available. Follow their code on GitHub. github.com hw3d/hw3d at T21.1-End · planetchili/hw3d (github.com) 개념에 대한 좋은 강의를 제공하는 채널입니다. 이번엔 어떤 개념을 배우기 보다는 Architecture에 대한 것을 배웁니다. DrawTestTriangle이라는 함수에 너무 많은 것들을 넣었으니 이 부분을 개선하려는 겁니다. 매 ..
-
[26] - Z-bufferGraphics 2021. 7. 31. 18:19
코드 hw3d/hw3d at T19-End · planetchili/hw3d (github.com) 강의 (26) C++ 3D DirectX Tutorial [3D Cube / Z-buffer] - YouTube 지금껏 그린 것은 이차원 Mesh입니다. 삼차원 Mesh로 넘어가도록 합니다. 만들어 두었던 Vertex Structure에는 z axis가 반영되어 있지 않습니다. 또한, Projection Matrix등의 개념도 도입되어 있지 않습니다. 그래서 문제를 하나씩 해결합니다. z축을 추가하고 Vertex를 큐브를 만들 수 있게 해줍니다. 그럼 Index의 값도 함께 바꿔주어야 합니다. 그리고 PerspectiveLH 행렬을 끝에 곱해주면 될 것 같습니다. 그런데 회전을 z축으로만 하면 돌고 있는지..
-
[25] - DirectXMathGraphics 2021. 7. 31. 01:09
hw3d/hw3d at T19-End · planetchili/hw3d (github.com) (26) C++ 3D DirectX Tutorial [Introduction] 0 - YouTube 큰 도움이 되는 강의입니다. D3D에는 여러 수학 기법들을 제공합니다. 보통 D3D Library에 포함이 되어 있습니다. [24]에서 행렬을 손으로 다 기입했던 것처럼 해도 큰 상관은 없습니다. 그런데 귀찮습니다. 행렬 간의 연산, 행렬과 벡터의 연산 등을 일일이 구현하기도 귀찮습니다. 그래서 선택할 수 있는 것이 DirectXMath입니다. 추가적으로 DirectXMath는 SIMD[Single Instruction Multiple Data] Optimization을 제공합니다. 가령, Row vector [..
-
[24] - Constant BufferGraphics 2021. 7. 30. 22:03
(24) C++ 3D DirectX Tutorial [Constant Buffers] - YouTube hw3d/hw3d at T17-End · planetchili/hw3d (github.com) 이번에는 Vertex들의 Transformation을 실질적으로 구현해보도록 합니다. 이전에 귀엽고 엉성한 육각형을 만들었습니다. 그리고 이전에 이론으로 어떤 Mesh의 Rotation, Translation, Scailing을 배웠습니다. 여기에 추가로 배워야 할 것이 있는데 바로 Constant Buffer라는 것입니다. 이 과정은 GPU가 아닌 CPU쪽에 처리하게 됩니다. 왜 CPU가 아닌 GPU 쪽에서 이 Transformation을 처리하게 되는 것일까요? 사실 CPU에서 모조리 처리를 할 수 있긴 ..
-
[23] - Pipeline experimentsGraphics 2021. 7. 30. 20:24
[22]에서 드디어 삼각형을 만들 수 있게 되었습니다. 기본적인 디버그, 파이프 라인의 구성까지 구현했습니다. 이번엔 여태 만든 것을 토대로 다양한 것들을 해보도록 합니다. 가장 먼저 삼각형을 하나 더 그려보는 작업을 해보도록 합니다. 이전에 Graphics.h의 DrawTestTriangle 함수를 만들 때, 정점[Vertex/Vertices]을 함께 만들었습니다. 거기에 삼각형을 하나 더 만들 것이니 다른 정점을 추가해줍니다. 될 것 같으나 막상 실행을 해보면 화면에는 똑같이 단 하나의 삼각형만이 보입니다. 출력이 되지 않는 이유 중 하나는 두 번째로 정의한 정점들은 방향이 반시계 방향이라는 점입니다. 그것부터 고쳐봅시다. 두 개의 삼각형이 보입니다. 한 가지 뿌듯한 것은 코드를 상당 Reactive..
-
[22] - Viewport and clip spaceGraphics 2021. 7. 23. 21:51
이제 삼각형 정도는 어렵게 출력할 수 있게 되었습니다. 다시 배경 지식을 떠올릴 차례입니다. 가장 최신의 GPU Rendering Pipeline은 D3D9과 조금 차이가 있을 수 있습니다. 설계된 목적도 서로 상이합니다. OpenGL Wiki에서 가져온 Rendering Pipeline은 다음과 같습니다. Rendering Pipeline Overview - OpenGL Wiki (khronos.org) 다음은 Microsoft의 MSDN 홈페이지에서 갖고 온 Rendering pipeline입니다.Graphics Pipeline - Win32 apps | Microsoft Docs 둘이 약간의 차이는 있으나 개념은 비슷합니다. Tessellator의 경우엔 Hull Shader + Tessellato..