일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 게임 수학
- Cartoon Rendering
- 벡터
- 개인 바이트
- ASW(Application SpaceWarp)
- Windows Build
- ColorGradingLutPass
- URP
- Specular
- working set
- OculusMotionVectorPass
- VR
- 작업 집합
- 가상 바이트
- AppSW
- 3d
- Cell Look
- Three(Two) Tone Shading
- Toon Shader
- C언어
- Rim Light
- Virtual Byte
- 프로그래밍 기초
- URP로 변경
- 메모리 누수
- Private Bytes
- Cell Shader
- Today
- Total
목록분류 전체보기 (258)
WinCNT
2D Two-Dimensional Space 3D Game Programming이 나오기 이전의 프로그래밍 2차원 배열, 수가 2개인 벡터 Arcade 오락실 전성기 비즈니스 모델이 고객의 회전이 빨라야하기에 레벨 디자인이 기가 막혔음 (배우기는 쉽게 잘하기는 어렵게) 당시에도 줌인, 줌아웃, 페스펙티브 등의 기술 등이 있었다 Console 슈퍼 마리오, 夢大陸, 젤다의 전설(슈퍼 패미콤) 비즈니스 모델 - 플레이 타임이 길다, 엔딩에 감동을 줄 수 있게 PC 상당히 독특하다 PC의 스펙이 일정하지 않다는 특징이 있어서 다양한 기법들이 게임에 사용됨 예시) 원숭이 섬의 비밀, 워크2 2D Game 제작에 사용되는 기술 Sprite - 캐릭터를 찍을 때 필요한 이미지의 모음 KeyColor = 특정 색만 ..
로컬 좌표계(= OpenGL에서는 모델 좌표계) 오브젝트의 좌표계 월드 좌표계 3차원 공간 좌표에 오브젝트들을 배치 오브젝트를 배치하기 위한 월드 행렬 각각의 오브젝트마다 필요하다 변환행렬(TM)이 없으면 각각의 오브젝트는 원점에 겹쳐서 보일 것이다 변환행렬을 각각의 오브젝트마다 적용해서 월드 좌표에 배치할 수 있다 월드 행렬이라고도 하고 Transform 행렬(TM)이라고도 한다 월드 좌표계로 보내기 위한 TM이 필요함 카메라 좌표계 월드 좌표계에 카메라 행렬을 곱하면 나오는 좌표계 그것을 보기 위한 카메라가 필요하다 (실제 렌더링에는 하나의 카메라만 작동) 카메라의 변환 행렬(View 행렬이라고도 함)은 월드 행렬의 역변환으로 구할 수 있다 (카메라 행렬 - 카메라를 원점으로 위치시키는 행렬) 카메라..
해시 색인(Index)에 해시값을 사용하는 자료 구조 정렬을 하지 않고도 빠른 검색, 빠른 삽입이 가능하다 해시 함수 Key를 해시(값)로 매핑하는 함수를 말한다 문제점 해시 함수는 보통 입력값의 범위보다 출력값의 범위가 좁은 경우가 많기 때문에 입력이 다름에도 불구하고 드물게 동일한 값이 출력되는 경우도 존재한다 (이러한 경우를 해시 충돌이라고 함) 해시 충돌에 대비하는 방법으로는 개별 체이닝(Separate Chaining)과 오픈 어드레싱(Open Addressing) 등이 있다 개별 체이닝(Separate Chaining) 리스트의 각각의 색인을 연결 리스트로 만든다 새로 입력이 될 때마다 같은 해시를 가진다 하더라도 색인이 연결리스트로 구현되어 있기 때문에 원하는 데이터의 접근이 가능해진다 오픈..
페이지 교체 알고리즘은 왜 필요한가 프로그램을 실행(프로세스)시키거나 저장된 데이터를 오픈하거나 결국은 모두 메모리에 로드해야 한다 기준 - 실행 코드, 데이터 코드를 관리하는 메모리 영역과 데이터를 관리하는 메모리 영역은 다르다 메모장을 두 번 실행하면 OS가 각각 다른 프로세스 영역을 만든다 그리고 CPU 내부 메모리 영역(레지스터)에 가져와서 실제로 처리를 한다 레지스터도 실행(수행), 버퍼(데이터)로 나눠진다 하드 디스크는 느리고 크다 메모리는 프로세스 실행에 필요한 것을 자져온다 CPU는 당장 수행에 필요한 데이터를 가져온다 CPU가 메모리에서 데이터를 가져오는 데에도 시간이 걸린다 그래서 메모리보다 빠른 Cache라는 곳에 미리 필요한, 혹은 최근에 사용한 코드나 데이터를 넣어둬서 데이터를 가..
컬리전에는 여러가지 종류가 있다 ① 충돌 반응 (Collision Responses) 컬리전 컴포넌트 사이의 반응 충돌 관련 로직을 사용해서 충돌이 일어났을 때 어떻게 반응하는지 세팅 ② 추적 반응 (Trace Responses) 월드에 존재하는 컬리전 컴포넌트에 대한 질의 각각 자신의 유형(Type)을 설정하고 다른 유형(Type)들과 어떻게 반응할지 설정한다. 반응의 조합으로 최종 반응이 결정된다. 반응 통과 무시(Ignore) O 겹침(Overlap) O 블록(Block) X 충돌 오브젝트 간의 설정에 따른 결과 무시 겹침 블록 무시 무시 무시 무시 겹침 무시 겹침 겹침 블록 무시 겹침 블록 기본 충돌 오브젝트 유형 (Collision Object Type) WorldStatic 월드 스태틱 - 이..
보호되어 있는 글입니다.
직교 좌표계 일반적으로 알고 있는 평범한 좌표계 3D 그래픽스에서도 일반적으로 사용된다 원기둥 좌표계 충돌 처리할 때 많이 사용되는 좌표계 구면 좌표계 충돌 처리할 때 많이 사용되는 좌표계 직교 좌표계로 변환하는 식 오브젝트에 대해서는 공통된 좌표계를 써야 해야 한다 그래야 같은 공간에 오브젝트들을 같이 올릴 수 있다 3대 변환 이동, 회전, 크기 변환 – 이동(Translation) 변환 – 회전(Rotation) 변환 - 전치행렬 행렬의 기저벡터가 직교일 때 전치행렬 = 역행렬이므로 연산량을 줄일 수 있다 변환 적용 D3D 방식으로 계산하면 v'은 다음과 같다 변환 결합(concatenation) 행렬의 특징은 결합법칙이 성립한다는 것이다. 즉, 다음 두 수식은 동치다 회전 변환 - 오일러 변환 회전..
자료 구조를 선택할 때에는 그 목적을 확실히 할 필요가 있다 목적은 W(Insert, Update)과 R(Search)가 있다 자료 구조(Data Structure)는 선형적/비선형적으로 나뉜다 하지만 선형/비선형은 물리적인 구조 외에도 논리적인 구조도 포함할 수 있다 즉, List는 물리적으로는 비선형적이나 논리적으로는 선형적인 구조으로 볼 수 있다 (물리적인 구조로만 보면 Array만 선형적인 자료구조일 것이다...) 가장 자주 쓰는 것은 Quick Sort, 정확히는 STL의 std::sort (부분을 나눠서(Partial) 정렬하는 분할 정렬) Don't reinvent the WHEEL 하지만 툴을 제대로 사용하기 위해서는 제대로 알아야 한다 Tree는 논리적으로 비선형적인 자료 구조이다 트리는..
일반화 프로그래밍(Generic Programming) C#, JAVA에서는 Generic이라도 한다 특정 타입에 상관 없이 동작을 만든다 템플릿은 사용하는 것은 쉽고, 만드는 것은 어렵고, 모던 C++이 얽히면 읽는 것도 어려워진다... 어디에 필요할까? 대표적인 예로는 자료 구조를 만들 때 Linked List의 예 List의 대상이 되는 자료형마다 클래스를 만들어야 한다 (int의 Linked List, char의 Linked List 등등) 자료형에 무관하게 만들 순 없을까? => 일반화 프로그래밍으로 가능! Template의 예제 template T minimum(const T& lhs, const T& rhs) { return lhs < rhs ? lhs : rhs; } 템플릿 특수화, 명시적..
각각의 오브젝트에 대해 월드 행렬이 따로 존재해야 한다 월드 행렬이란 각각의 오브젝트가 월드 좌표계에 위치하기 위해 사용하는 행렬 로컬 좌표계 월드 행렬 => 월드 좌표계 카메라 행렬 => 카메라 좌표계 투영 행렬 => 투영 좌표계 해상도 처리 => 뷰포트 좌표계 언프로젝션이란? 화면에서 클릭한 지점을 3차원 공간의 좌표로 바꾸는 것 뷰포트 좌표계에서 클릭 해상도에서 역산해서 투영좌표계 구하기 투영좌표계에 투영 행렬의 역행렬 => 카메라 좌표계 카메라 좌표계에 카메라 행렬의 역행렬 => 월드 좌표계 월드 좌표계에서 월드 행렬의 역행렬 => 로컬 좌표계 4차원 공간에서 연산 3차원 공간으로 표시 2차원 화면에 그리기 사용하는 것은 항상 정방행렬이다 단위 행렬 중요함 행렬이란 벡터들의 모임이라고 생각할 수 ..