- 2022.08.25 과제디지털 블리자드출처 : https://blog.koriel.kr/modern-cpp-lambdayi-teugjinggwa-sayongbeob/ 위의 블로그의 정보를 좀더 간략히 정리하였습니다. lambda는 람다 표현식 또는 람다 함수, 익명 함수(anonymous function)로 불립니다. 그 성질은 함수 객체(functor)와 동일합니다. 람다 함수는 이름이 없는 함수입니다. lambda로 생성된 함수 객체는 타입을 가지고 있긴 하지만 decltype이나 sizeof를 사용할 수 없습니다. 1. 함수 객체와 lambda C++ 프로그래밍을 하다 보면 함수 포인터나 함수 객체가 필요한 시점이 있습니다. 함수 포인터는 상태를 가질 수 없기 때문에 상태를 가져야하는 함수가 필요할 땐 함수 객체를 사용합니다. 둘 다 ..
- 2022-08-26 02:13:10
- 2022.08.23 과제디지털 블리자드임계 영역 (Critical Section) 임계 구역(critical section) 또는 공유변수 영역은 병렬컴퓨팅에서 둘 이상의 스레드가 동시에 접근해서는 안되는 공유 자원(자료 구조 또는 장치)을 접근하는 코드의 일부를 말합니다. 임계 구역은 지정된 시간이 지난 후 종료됩니다. 때문에 어떤 스레드(태스크 또는 프로세스)가 임계 구역에 들어가고자 한다면 지정된 시간만큼 대기해야 합니다. 임계 영역이란 어느 한 순간 반드시 프로세스 하나만 진입해야 하는데, 프로그램에서 임계 자원을 이용하는 부분으로 공유 자원의 독점을 보장하는 코드 영역을 의미합니다. 임계 영역은 지정된 시간이 지난 후 종료됩니다. 교착 상태 (Dead Lock) 둘 이상의 프로세스가 다른 프로세스가 점유하고 있는 자원을 서로 기다릴..
- 2022-08-24 00:06:24
- 2022.08.22 과제디지털 블리자드프로세서 : CPU나 Microprocessor 라는 하드웨어를 의미합니다.(cpu 코어를 의미) 프로세스 : 실제 메모리에 적재되어 프로세서에의해 실행되고 있는 프로그램을 의미합니다. 멀티 프로세싱(Multi-processing) 멀티 프로세싱은 한 개 이상의 컴퓨터 프로세서들이 협력하여 프로그램들을 처리하는 것 입니다. 보통, 멀티코어시스템(multi-core system)을 포함한다. 멀티 프로세싱의 장점은 하나의 프로세서가 고장이 나더라도 해당 프로세서가 진행 중인 작업은 다른 프로세서에서 수행하고 있기 때문에 작업이 정지되지 않습니다. 또한, 여러 개의 프로세스가 처리되어야 할 때 동일한 데이터를 사용한다면 각 데이터를 각 프로세서에게 할당할 필요 없이 하나의 공간에 데이터를 저장한 후 이를..
- 2022-08-23 00:05:59
- 2022.08.18디지털 블리자드gpgpu란? GPGPU(General-Purpose computing on Graphics Processing Units, GPU 상의 범용 계산)는 일반적으로 컴퓨터 그래픽스를 위한 계산만 맡았던 그래픽 처리 장치(GPU)를, 전통적으로 중앙 처리 장치(CPU)가 맡았던 응용 프로그램들의 계산에 사용하는 기술입니다. 이를 가능하게 한 것은 프로그램 가능한 층과 고정도 연산을 그래픽 파이프라인에 연결하는 것으로, 이를 통하여 소프트웨어 개발자들이 그래픽이 아닌 데이터에 스트림 프로세싱을 사용할 수 있게 됩니다. gpgpu를 직역하면 'GPU의 범용 연산'입니다. CPU가 맡았던 연산을 GPU에도 사용해 연산 속도를 향상 시키는 기술입니다. 흔히 '하드웨어 가속'이라고 하면 GPU를 가리키는 경우가 많습..
- 2022-08-19 01:47:01
- 2022.07.26 과제디지털 블리자드Yaw Pitch Roll (오일러회전) , 짐벌락(김벌락), 사원수 (쿼터니언) 정리하세요 Yaw Pitch Roll (오일러회전) Yaw Pitch Roll은 상대적인 회전축입니다. 얼리얼 엔진처럼 Z 축이 Up일 때 Roll : X축 , pitch : Y축 , Yaw : Z축 입니다. Direct X에서 처럼 Y 축이 Up일 때 Pitch : X축 , Yaw : Y축 , Roll : Z축 입니다. Yaw Pitch Roll를 회전 공식으로 만들면 다음과 같습니다. Z축이 Up일 때는 Z축 -> Y축 -> X축 순서로 곱해주게 됩니다. Y축이 Up일 때는 Y축 -> X축 -> Z축 순서로 곱합니다. 아래 그림 처럼 항공기가 수평한 땅에 놓여져 있다고 합시다. 항공기 머리부터 꼬리까지 가로지르는 종축(..
- 2022-07-27 02:07:01
- 2022.07.25 과제디지털 블리자드키 프레임 애니메이션 (key frame animation) 전체 애니메이션중에서 중요한 몇개의 프레임에 애니메이션 키 값을 등록하고, 나머지 들은 자동으로 생성하는 방법입니다. 프레임은 애니메이션에서 출력될 한 장면 한 장면을 말한다. (1) (2) ◆ ◇ ◇ ◇ ◇ ◆ (-10,0,0) (10,0,0) 전체 6프레임짜리 애니메이션이 있습니다. 검은색 마름모가 처음1번에서부터 2번까지 이동하는 애니메이션입니다. 여기서 검은색 점이 키값이라 하면 그 지점에서의 좌표라고 생각하면됩니다. 프레임은 (1)번 프레임 (2)번 프레임 두개만 만들어놓고 나머지 4개의 중간프레임( ◇ ) 들은 보간(interpolate)하여 자동으로 생성합니다. 애니메이션이 여러장의 그림을 나열하는 것은 알고 있을 것입니다. 그런데..
- 2022-07-25 22:18:44
- 2022.07.20. 정리디지털 블리자드래이 캐스팅, 래이 트레이싱 정리하기 래이 캐스팅 레이캐스팅은 2차원 맵에서 3차원의 원근감을 만드는 렌더링 기술입니다. 레이캐스팅은 스크린의 모든 수직선에 대해 계산만 하면 돼서 속도가 빠릅니다. 예전의 컴퓨터는 현재보다 느려서 3D 엔진을 실시간으로 실행할 수 없던 과거에는 레이캐스팅이 최초의 해결책이였습니다. 레이캐스팅과 레이트레이싱은 다릅니다. 레이캐스팅은 저사양에서도 실시간으로 작동하는 빠른 semin-3D 기술인 반면, 레이트레이싱은 실제 3D장면의 반사와 그림자를 지원해서 고사양이 필요한 현실감있는 렌더링 기술입니다. 레이 케스팅 기본적인 원리 2차원 정사각형 그리드로 된 맵이 있다고 합시다. 맵의 한 칸은 0 또는 양수 값을 갖습니다.(0은 벽이 없음을 의미하고, 양수값은 특정 벽을 의미합..
- 2022-07-21 09:55:12
- 2022.07.18 정리디지털 블리자드텍스처 매핑(texture mapping) 텍스처 매핑(texture mapping)은 컴퓨터 그래픽스 분야에서 가상의 3차원 물체의 표면에 세부적인 질감의 묘사를 하거나 색을 칠하는 기법입니다. 일반적으로는 수식이나 2차원의 그림을 3차원 물체의 표면에 여러 가지 방법을 통하여 적용하고 이에 따라 컴퓨터 그래픽 화면을 만들어 나갈 때 마치 실제의 물체처럼 느껴지게 끔 그 세부 묘사를 하는 것입니다. 이는 사실적인 3D 장면을 구성하는 데 필요한 다각형 및 조명 계산의 수를 대폭 줄이게 해줍니다. 예를 들면, 2차원 지도를 제작할 때 입체인 지구표면을 평면으로 바꾸는 방법을 쓰지만, 텍스처 매핑의 경우에는 그 반대로 2차원 지도를 3차원 구에 적용하면, 지구본을 그린 영상을 얻을 수 있습니다. 텍스쳐 매..
- 2022-07-18 15:38:21
- 22.07.12 과제디지털 블리자드Forward Rendering 광원과 오브젝트를 일일히 일대일 매칭시켜 연산하는 기법입니다. 광원A에서 나오는 빛효과를 일일히 오브젝트에 연산하고 광원B에서 나오는 빛을 일일히 오브젝트에 연산합니다. 보통 우리가 눈으로 확인하는 1개의 Frame을 그리기 위해서는 여러 개의 Drawcall을 사용합니다. 각 Drawcall은 Vertex Shader, Geometry Shader (옵션), Fragment Shader 순서에 따라서 연산을 수행하여 최종 Frame을 생성합니다. Forward Rendering은 하나의 Drawcall 계산을 할 때마다 Light (빛) 연산을 수행하여 Object의 색상을 결정하게됩니다. 매번 Drawcall 연산이 완료될 때마다 Framebuffer에 결과값을 업데이..
- 2022-07-13 01:11:52
- 22.06.29 과제디지털 블리자드스마트포인터 정리하기 스마트 포인터(smart pointer)란? 자바의 경우 garbage collector를 통해 메모리를 관리하지만 c++은 사용자가 스스로 메모리를 할당 해제를 통해 관리해야 합니다. c에서는 malloc, free로 메모리를 할당및 해제를 수행하고 c++은 new, delete를 사용합니다. C++ 프로그램에서 new 키워드를 사용하여 동적으로 할당받은 메모리는, 반드시 delete 키워드를 사용하여 해제해야 합니다. 이때 할당받은 메모리를 해제하지 않을경우 프로그램은 계속 사용하고 있는 메모리로 인지하고 해당 메모리를 사용하지 않는 메모리 누수(memory leak)가 발생하게됩니다. C++에서는 메모리 누수(memory leak)로부터 프로그램의 안전성을 보장하기 위해 스마트..
- 2022-06-30 01:43:38
스킨 업데이트 안내
현재 이용하고 계신 스킨의 버전보다 더 높은 최신 버전이 감지 되었습니다. 최신버전 스킨 파일을 다운로드 받을 수 있는 페이지로 이동하시겠습니까?
("아니오" 를 선택할 시 30일 동안 최신 버전이 감지되어도 모달 창이 표시되지 않습니다.)