[Linux] Converting Video (MP4) File to Image (Frames) Files (동영상 파일을 프레임 단위로 변환)

동영상 파일(MP4)을 구성하고 있는 모든 Frame을 이미지 형식으로 변경하는 방법에 대해서 정리해 보았다. Ubuntu 18.04에서 아래 CMD를 실행하면 영상의 모든 Frame을 이미지 파일(jpg)로 변환해준다. $ ffmpeg -i SampleVideo.mp4 SampleVideoFrame%04d.jpg -hide_banner -i : -i 옵션 다음에는 Input Video 파일 이름을 작성한다. SampleVideoFrame%04d.jpg: Output Image 파일 이름을 작성한다. 파일 이름 뒤에 있는 %04d 는 4자리 숫자를 사용하여… Read More »

[CUDA RT Series 4] Classing Up the GPU (Single vs. Double Precision)

목차: Series 1 – Index + Methodology (Link) 이전 글: Series 3 – Adding Vectors (Link) 다음 글: Series 5 – Manage Your Memory (Link) 이번에는 GPU가 사용할 Class를 생성한다. GPU에서 연산할 Class는 기존 CPU 코드와 동일하게 작성한다. Series 3 (Adding Vecotrs)에서 작성한 것과 같이 GPU에서 호출할 함수 앞에 “__device__”를 추가하면 된다.  아래 코드 1은 GPU에서 호출할 수 있도록 작성한… Read More »

[CUDA RT Series 3] Adding Vectors

목차: Series 1 – Index + Methodology (Link) 이전 글: Series 2 –First Image (Link) 다음 글: Series 4 –Classing Up the GPU (Link) 이번 장에서는 “__global__”, “__host__”, “__device__” 사용에 관해서 설명한다. 앞에서 작성한 코드 중 GPU에서 실행될 Function에 “__global__”을 함수 이름 앞에 작성하였다. “__global__”의 경우 GPU에서 실행할 함수를 의미한다. 보통 CPU에서 처음 호출할 함수 앞에 작성한다. “__global__”로 작성된 함수를… Read More »

[Linux] “TOP” 명령어 설명

리눅스를 사용하다 보면 “Top” 명령어를 자주 사용하게 된다. 해당 명령어를 사용하면 현재 실행 중인 프로세스의 정보를 확인할 수 있다. 다양한 정보가 출력되는데 정확한 의미를 몰라서 정리해보았다. 우선 개인적으로 필요한 부분만 정리하였다. 더 필요한 정보가 있는 경우 추가로 정리할 예정이다   “Top” 명령어 (출처 1) 처음 실행 시 $top -b: 모든 정보를 한번에 출력함 $top -n… Read More »

[CUDA RT Series 2] First Image

목차: Series 1 – Index + Methodology (Link) 이전 글: Series 1 – Index + Methodology (Link) 다음 글: Series 3 – Adding Vector (Link) 출처 1에서 가장 처음 그리는 이미지는 초록색/빨간색/파란색을 적당히 혼합한 이미지이다. 아래 그림 1은 우리가 그릴 이미지이다. 우리가 그리게 될 이미지는 크기는 1200 x 600 이다. 기존 CPU 코드는 For Loop을 여러 번(Nested For Loops) 사용해서… Read More »

[GPU] Occlusion Culling (Early-Z vs. Occlusion Queries)

What is Occlusion Culling? (출처 1) 간단히 설명하면 필요 없는 Geometry(지형, 물체 등)를 그리지 않도록 불필요한 연산을 제거하는 기술이다. 보통 모니터에 보이는 화면에 벗어난 물체 또는 다른 물체에 의해서 가려지는 물체(Occlusion) 등에 대한 연산을 수행하지 않게 하여서 Rendering 성능을 향상하는 방법을 의미한다. Occlusion Culling은 크게 “Occlusion Query”와 “Early-Z” 방법을 사용하여서 필요 없는 Rendering 연산을 제거한다.… Read More »

[CUDA RT Series 1] Index + Methodology

CUDA RT Series Index Ray Tracing (RT) in One Weekend(출처2)의 내용을 혼자 공부하면서 번역(출처 1)을 해보았다. 지난 RT 시리즈를 작성하면서 CUDA를 사용한 병렬화에 아주 적합한 코드인듯하여서 인터넷에 검색해 보니 역시나 병렬화 코드가 공개되어 있다 (출처 3). 개인적으로 CUDA 코드를 작성하는 방법에 대한 시리즈를 한번 작성해보고 싶었는데 출처 3에 좋은 내용이 있어서 역시나 공부를 하면서 번역을 해볼… Read More »

[RT in One Weekend Series 13] Where Next? (번역)

목차: Series 1: Index and Overview (Link) 이전 글: Series 12: Defocus Blur (Link) 먼저 Random 하게 많은 Sphere(구)를 그려서 이번 글에 사용할 표지 이미지를 만들어본다. 아래 코드 1은 Random 하게 많은 구를 그리기 위한 Main 코드이다. 코드 1: 많은 수의 구를 그리기 위한 Main 코드

위 코드를 실행하면 아래 그림 1과 같은 결과 이미지를 확인… Read More »

[RT in One Weekend Series 12] Defocus Blur (번역)

목차: Series 1: Index and Overview (Link) 이전 글: Series 11: Poisionable Camera (Link) 다음 글: Series 13: Where Next? (Link) 이번 RT 시리즈의 마지막 Feature는 Defocus Blur이다. Photographers(사진사?)는 Defocus Blur Feature를 보통 “Depth of Field”라고 한다. 실제 카메라를 사용해서 사진을 찍으면 Defocus Blur 현상이 나타나는 이유는 카메라 렌즈가 구멍(Big Hole)으로 만들어져있기 때문이다 (현재 우리가 구현한 코드는 아주 작은… Read More »

[RT in One Weekend Series 11] Positionable Camera (번역)

목차: Series 1: Index and Overview (Link) 이전 글: Series 10: Dielectrics (Link) 다음 글: Series 12: Defocus Blur (Link) 이전 글에서 작성한 Diselectrics와 동일하게 Camera 역시 Debugging 하는데 어려움이 많다고 한다. 그래서 출처 1에서는 Camera 코드를 순차적으로 작성하여서 Debugging Overhead를 최소화하였다. 가장 먼저 FOV (Field Of View/Field Of Vision)을 조절하는 코드를 작성한다. 대부분의 게임과 동일하게 우리가 그리는… Read More »