개요이번 시간에는 DirectX12의 GPU 동기화에 대해서 알아보겠습니다. DirectX12는 기존 버전의 DirectX나 OpenGL과는 다르게 CPU와 GPU의 동기화를 위해 별도의 명시적인 작업을 해주어야 합니다. 기존 DirectX에서는 관련 작업을 driver가 자동으로 해주어서 그래픽 프로그래머가 좀 더 간편하게 코딩할 수 있었지만, DirectX12부터는 프로그래머가 직접 컨트롤 할 수 있게 되어서 어플리케이션에 좀 더 알맞는 코딩을 할 수 있게 되었습니다. 하지만 프로그래머가 더 신경써야 할 부분이 많아지기는 했습니다. 어찌됐든 GPU 동기화는 DirectX12에서 꼭 필요한 요소입니다. GPU 동기화를 하지 않은 경우 CPU와 GPU가 코드로 의도한 순서대로 동작하지 않고, GPU에서 ..
DirectX12 프로그래밍을 하다 보면 디버깅이 필요한 시점이 있습니다.Visual Studio로 디버깅을 해서 중단점이 잡히면 그나마 다행이지만, 화면이 그냥 까맣게 나오는 경우도 있습니다.의심되는 코드를 수정해보거나 의심되는 데이터를 따로 뽑아서 출력해봄으로써 확인해 볼 수도 있습니다.하지만 이렇게 파악한 데이터는 한정적이고, 문제가 생길 때마다 테스트 코드를 작성하면 매우 많은 시간이 소요될 것입니다.대신 Microsoft에서 제공하는 디버깅 툴인 PIX를 활용하면 그래픽 관련 디버깅을 매우 간편하고 빠르게 할 수 있습니다. 툴은 이곳에서 다운 받을 수 있습니다.https://devblogs.microsoft.com/pix/download/ 다음으로는 PIX를 통해 DirectX12 프로그램을 디..
이번 시간에는 DirectX12를 활용해서 PostProcessing을 하는 예제를 살펴보겠습니다. 여기서 Post란 "~이후에"를 뜻하고, Processing이란 "처리"를 뜻합니다, 따라서 합쳐서 "후처리"라고 표현을 합니다.그래픽스에서는 보통 씬을 렌더링한 후 생성된 이미지에 별도 효과를 주는 것을 말합니다.PostProcessing으로 줄 수 있는 효과는 매우 다양하지만 이번 시간에는 가장 기본적인 GrayScale에 대해서만 다루겠습니다. 먼저 예제에서 생성된 이미지는 아래와 같습니다.PostProcessing 개요PostProcessing은 일반적으로 2개의 Pass를 사용합니다.1) 3D World를 Texture에 렌더링하는 Pass2) 만들어진 Texture를 input으로 별도 효과를 ..
1. 개인정보의 처리 목적 'Colight' 는 다음의 목적을 위하여 개인정보를 처리하고 있으며, 다음의 목적 이외의 용도로는 이용하지 않습니다. 'Colight'는 고객의 사생활을 현저하게 침해할 우려가 있는 민감한 개인정보(인종 및 민족, 사상 및 신조, 출신지 및 본적지, 정치적 성향 및 범죄기록, 건강상태 및 성생활 등)는 수집하지 않습니다. 다만, 서비스 제공을 위해 일부 민감정보를 필요최소한으로 수집, 처리할 필요가 있는 경우 관련 법령의 제한에 따라 고객의 동의 등 필요한 조치를 거쳐 개인정보를 수집, 처리할 수 있습니다. - 고객 가입의사 확인, 고객에 대한 서비스 제공에 따른 본인 식별.인증, 회원자격 유지.관리, 물품 또는 서비스 공급에 따른 금액 결제, 물품 또는 서비스의 공급.배송 ..
반응성 좋은 프로그램을 만들려면 병렬/비동기 프로그래밍은 거의 필수입니다. 병렬 프로그래밍은 작업이 오래 걸리는 부분을 여러 곳에서 동시에 처리하는 것이고 비동기 프로그래밍은 작업이 오래 걸리는 부분은 일단 다른 곳에서 처리하도록 해서 현재의 흐름을 방해하지 않고 진행하다가 처리가 끝나면 다시 돌아와서 처리하는 것을 뜻합니다. 어찌됐든 병렬/비동기 프로그래밍 모두 Thread와 밀접한 연관이 있습니다. 따라서 이번 시간에서는 C#에서 Thread를 사용하는 여러 가지 방법에 대해 알아보겠습니다. C#에서 Thread를 사용하는 방법은 여러 가지 있습니다. 오늘 소개할 방법은 총 3가지입니다. 각각은 Thread와 ThreadPool 그리고 Task입니다. 각각에 대해서 깊게 살펴보지는 않을 것이고 각각의..
0. 들어가기 앞서 이전 포스팅에서는 Bounding Volume Hierarchy에 대한 개념과 생성하는 법에 대해서 알아보고 Depth에 해당하는 Bounding Box들을 가시화 해보았습니다. https://mathmakeworld.tistory.com/108?category=454083 TMI(Triangle Mesh Information) Project #7.1 - Bounding Volume Hierarchy 0. 들어가기 앞서 이전 포스팅에서는 OBB에서는 Collision Detection을 어떻게 하는지 알아본 뒤 Collision 됐을 시에 VTK를 활용해 Bounding Box의 색을 변경해 가시화 해보았습니다. https://mathmakeworld.t.. mathmakeworld...
0. 들어가기 앞서 이전 포스팅에서는 OBB에서는 Collision Detection을 어떻게 하는지 알아본 뒤 Collision 됐을 시에 VTK를 활용해 Bounding Box의 색을 변경해 가시화 해보았습니다. https://mathmakeworld.tistory.com/107 TMI(Triangle Mesh Information) Project #6.3 - OBB Collision Detection 0. 들어가기 앞서 이전 포스팅에서 AABB, Sphere Bounding Box의 Collision Check 하는 방법에 대해서 알아본 뒤 Collision 됐을 시에 VTK를 활용해 Bounding Box의 색을 변경해 가시화 해보았습니다. https://m.. mathmakeworld.tisto..
0. 들어가기 앞서 이전 포스팅에서 AABB, Sphere Bounding Box의 Collision Check 하는 방법에 대해서 알아본 뒤 Collision 됐을 시에 VTK를 활용해 Bounding Box의 색을 변경해 가시화 해보았습니다. https://mathmakeworld.tistory.com/106 TMI(Triangle Mesh Information) Project #6.2 - AABB, Sphere Bounding Box Collision Detection 0. 들어가기 앞서 이전 포스팅에서 Collision Detection의 기준이 되는 Bounding Box의 종류(AABB, OBB, Sphere)와 각 Bounding Box의 특징에 대해서 알아보고, VTK를 활용해 가시화까지 ..
이번 시간에는 저번 포스팅에 이어서 MakeConst 튜토리얼을 더 진행해 보겠습니다. 저번 포스팅 링크는 아래와 같습니다. https://mathmakeworld.tistory.com/103 이번 포스팅에서는 Unit Test를 통해서 빠르게 원하는 기능을 테스트하는 코드를 만들어 보겠습니다. Unit Test 솔루션에 존재하는 프로젝트 중 MakeConst.Test를 열고 내부의 MakeConstUnitTests.cs 파일을 엽니다. 그후 아래 이미지와 같이 MakeConstUnitTest 클래스 내부에 함수들을 만들면 Unit Test를 할 수 있습니다. Unit Test를 돌리려면 함수를 작성할 때 TestMethod라는 Attribute를 붙이면 됩니다. Test를 하는 함수로는 총 2가지가 있..
0. 들어가기 앞서 이전 포스팅에서 Collision Detection의 기준이 되는 Bounding Box의 종류(AABB, OBB, Sphere)와 각 Bounding Box의 특징에 대해서 알아보고, VTK를 활용해 가시화까지 해보았습니다. https://mathmakeworld.tistory.com/102 TMI(Triangle Mesh Information) Project #6.1 - Collision Detection 에 사용되는 여러가지 Bounding Box, Sphere 이전 포스팅에서는 VTK Collision Detection Filter를 활용하여 Collision을 Check하고 Rendering 해보았습니다. https://mathmakeworld.tistory.com/99 TM..
- Total
- Today
- Yesterday
- reference type
- normalized device coordinate
- 값 형식
- perspective projection
- opengl
- 참조 형식
- 루빅스큐브
- Bounding Box
- 유니티
- DirectX12
- collision detection
- value type
- CollisionDetection
- C#
- VTK
- Unreal
- Mesh Processing
- Bounding Volume Hierarchy
- NDC
- Unity
- 강화학습
- Mesh
- Scriptable Render Pipeline
- SRP
- AABB
- transform
- Transformation
- RL
- RubiksCube
- MeshProcessing
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |