일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 29 | 30 | 31 |
- Virtual Byte
- Cartoon Rendering
- 가상 바이트
- 개인 바이트
- 벡터
- 프로그래밍 기초
- 게임 수학
- working set
- ColorGradingLutPass
- AppSW
- Windows Build
- Private Bytes
- Three(Two) Tone Shading
- Specular
- URP로 변경
- OculusMotionVectorPass
- Cell Shader
- Cell Look
- Toon Shader
- 3d
- C언어
- ASW(Application SpaceWarp)
- Rim Light
- URP
- 메모리 누수
- VR
- 작업 집합
- Today
- Total
목록전체 글 (258)
WinCNT
템플릿(Template) 템플릿은 매개변수의 타입(의 타입)에 따라 함수나 클래스를 생성한다 (템플릿은 타입이 매개변수에 의해 표현되므로, 매개변수화 타입(parameterized type)이라고도 함) 템플릿을 사용하면 타입마다 별도의 함수나 클래스를 만들지 않고, 여러 타입에서 동작할 수 있는 단 하나의 함수나 클래스를 작성하는 것이 가능해진다 용어 정리 템플릿 메타프로그래밍(template metaprogramming) 템플릿을 사용하는 프로그래밍 기법으로, 컴파일러에게 프로그램 코드를 생성하도록 하는 방식이다. 이러한 기법은 컴파일 시점에 많은 것을 결정하도록 하여, 실행 시점의 계산을 줄여준다. 이 기법은 C++ 프로그래밍 언어에서 주로 사용된다. https://ko.wikipedia.org/w..
참고 사이트) https://ozt88.tistory.com/48 Exception Filter Exception Filter Exception이란 내 생각엔 버그다. 프로세스가 정상적인 동작을 할 수 없을 때, 예외 이벤트가 발생하여 운영체제에서 프로세스를 강제 종료시켜버린다. 좀 규모가 있는 프로그램을 만 ozt88.tistory.com Exception Filter의 예제 코드 #include #include #include "dbghelp.h" #pragma comment(lib, "Dbghelp.lib") LONG WINAPI MyExceptionFilter(struct _EXCEPTION_POINTERS* pExceptionInfo); int main() { // 함수 포인터를 등록해준는 함수..
자신의 구분자 얻기 실제 핸들과 허위 핸들(Pseudo Handle) GetCurrentProcess()와 GetCurrentThread() 등의 함수는 특별하게도 해당 함수를 호출한 프로세스나 스레스의 실제 핸들을 얻어 오는 것이 아니라, 허위 핸들(Pseudo Handle)을 얻어온다 이러한 함수는 프로세스의 커널 오브젝트 핸들 테이블에 어떠한 영향도 미치치 않고 프로세스나 스레드 커널 오브젝트의 사용 카운트(Usage Count)에도 영향을 미치지 않는다 그리고 허위 핸들을 CloseHandle 하면 함수 호출 자체를 무시하고 FALSE를 반환한다 프로세스나 스레드의 핸들을 필요로 하는 윈도우 함수에 허위 핸들을 이용하면 현재 프로세스나 스레드에 대해 자신의 기능을 수행할 수 있다 (물론 실제 핸들..
실제 작업하는 것은 스레드 그래서 worker thread라는 용어가 존재한다 스레드는 왜 필요한가? 모든 프로세스는 적어도 하나 이상의 스레드를 사용한다 스레드는 프로세스의 주소 공간 내에 있는 코드를 수행한다 스레드는 프로세스와 유사하게 두 개의 요소로 구성되어 있다 운영체제가 스레드를 다루기 위해 사용하는 스레드 커널 오브젝트 스레드가 코드를 수행할 때 함수의 매개변수와 지역변수를 저장하기 위한 스레드 스택 실행 코드와 데이터는 한 세트 함수 스택, 콜 스택 - 스레드 스택 함수 내부가 실행되는 건 스레드가 기반 비동기를 구현하기 위해 만들어진 것은 스레드 이외에도 존재한다 Co-routine 등 본격적으로 스레드가 사용되기 시작한 것은 하드웨어(CPU)의 개수가 2개 이상이 될 때부터 하지만 CP..
3D 애니메이션이란? 3D 그래픽 공간 내에서 만들어지는 모든 움직임 또는 그 움직임을 만들어 내는 작업 셀 애니메이션와는 제작 방식의 원리가 다르다 3D 애니메이션 작업 순서 본(Born) 세팅 작업 캐릭터의 수 만개의 Vertex를 일일이 애니메이션을 적용할 수는 없다 하지만 하나의 애니메이션을 적용할 대표를 정해서 나머지 버텍스는 그 대표를 따라서 움직이도록 해서 해결할 수 있다 그 대표를 설정하는 작업을 본(Born) 세팅 작업이라고 한다 Vertex 작업 Vertex를 해당 뼈대에 속하게 하고 그 속한 뼈대를 움직여서 애니메이션 구현한다 관절 등을 부드럽게 애니메이션을 하기 위해서는 관절에 해당하는 버텍스에게는 뼈대들에 대한 가중치를 조절해줘야 한다 애니메이션 작업 본 세팅과 버텍스 작업이 끝나..
렌더링 파이프라인에서 중요한 부분을 차지하는 것이 변환(Transform)이다 선수요목 좌표계(Coordinate) 주로 3차원 데카르트 좌표계를 사용함 좌표 공간(Coordinate space) 왼손 좌표계, 오른속 좌표계가 존재한다 유니티가 특이하게 Y-Up을 사용함 X는 빨간색 Y는 녹색 Z는 파란색 벡터(Vector) 행렬과 더불어 3D 그래픽스에서 필수적인 과목 행렬(Matrix) 학문 자체는 깊다... 하지만 게임 제작에 필요한 내용은 그다지 많지 않을 수 있다 사원수(Quaternion) 오일러 각의 문제점(짐벌락 현상)을 해결하기 위해 도입한 체계 직관적인 이해가 어려워서 악명이 높다 간단히 말해 기존의 X축 회전 => Y축 회전 => Z축 회전 등의 방식이 아닌, 따로 X, Y, Z의 축..
커널 오브젝트 커널 오브젝트란 커널에 의해 할당된 간단한 메모리 블록!! 커널이 소유하며, 커널에 의해서만 접근 가능(사용 카운트로 관리함) API(여기서는 Windows가 제공)로 커널 오브젝트를 생성하면 커널 오브젝트의 핸들 값을 반환 핸들 값은 프로세스별로 독립적으로 유지 운영 프로세스는 하나이며, 하드웨어에 접근할 수 있는 것은 오직 운영 프로세스!! 사용자 프로세스는 하드웨어에 접근할 수 없다 프로세스란 실행 코드, 데이터의 조합, 즉 메모리가 필요하다 커널도 프로세스이므로 메모리가 필요하다 프로세스와 커널 오브젝트 프로세스의 커널 오브젝트: 프로세스가 소유한 커널 오브젝트(의 핸들 값) 프로세스 간의 커널 오브젝트: 프로세스 간에 공통적으로 접근이 가능한 커널 오브젝트(의 핸들 값) 프로세스 ..
참고 서적) DirectX 11을 이용한 3D 게임 프로그래밍 입문 Direct3D 초기화 과정 4X 멀티 샘플링을 사용하는 전형적인 Direct3D 11 응용 프로그램의 초기화 과정은 크게 8단계로 구성된다 D3D11CreateDevice 함수를 사용해서 장치(Device)와 장치 문맥(DeviceContext)을 생성한다 장치 = ID3D11Device 인터페이스, 장치 문맥 = ID3D11DeviceContext 인터페이스 4X MSAA(멀티 샘플링 안티 알리아싱) 품질 수준 지원 여부를 체크한다 (사용하는 함수는 ID3DllDevice::CheckMultisampleQualityLevels) 생성할 Swap Chain의 특성을 서술하는 DXGI_SWAP_CHAIN_DESC 구조체를 초기화한다 IC..
참고 서적) DirectX 11을 이용한 3D 게임 프로그래밍 입문 화면에 뭔가 오브젝트를 띄우려면 기본적으로 알아야 할 것이 많다 (이 글의 내용 외에도 Shader, Effect, HLSL 등이 있다) DirectX 원래는 게임을 위한 모든 것을 모아두었던 것 Input, Sound 등등 DirectX9 - 과거에 쓰였으나 현재는 거의 사용되지 않는 라이브러리 DirectX11 - 오랜 기간 쓰였고, 현재도 사용 중인 라이브러리 DirectX12 - 앞으로 많이 쓰이게 될 것으로 보이는 라이브러리 Direct3D 초기화 공정 전에 미리 알아야 할 것 Direct3D Direct3D는 어플리케이션이 3차원 그래픽 가속 기능을 이용해서 3차원 그래픽를 렌더링할 수 있게 하는 저수준 API(applicat..
3가지의 3대 행렬이 반드시 필요함 월드 행렬, 카메라 행렬, 투영 행렬 셰이더 안에서 프로그래머가 직접 연산을 하게 해줘야 한다 버텍스 셰이더, 픽셀 셰이더를 가장 많이 사용하고 최신작으로는 컴퓨팅 셰이더까지 존재한다 버텍스 셰이더로 공간을 연산하고 거기에 어떤 색으로 픽셀를 찍을 것인지 픽셀 셰이더로 정한다 다른 셰이더가 없어도 화면상에 표시할 수 있지만 버텍스 셰이더랑 픽셀 셰이더가 없으면 아예 그려지지 않는다 버텍스 셰이더는 월드 행렬, 카메라 행렬, 투영 행렬를 반드시 곱해야 한다 카툰 렌더링 꿀팁 ramp shader의 기법 중 하나 펙셀 셰이더는 if문(분기) 등의 효율이 떨어지는 코드는 피해야 한다 모니터의 모든 픽셀에 대해서 연산하니 엄청난 비용이 드는데 분기를 타게 되면 캐시 히트율이 ..