본문 바로가기

GameStudy488

5. Dynamic Programming, Backtracking 5.1 Dynamic Programming 5.1-1 Memoization  Note) 기존의 피보나치 수열 코드#pragma onceint fibo(int n){ if (1 == n) { return 1; } if (2 == n) { return 1; } return fibo(n - 1) + fibo(n - 2);}   Note) 기존 피보나치 수열의 코드를 도식화하면 아래와 같음.    이 경우, n의 크기가 커지면 커질수록 재귀함수의 호출 횟수가 비약적으로 늘어남.    그래서 한 번 계산된 피보나치 값은 저장해둔다면, 꽤나 큰 효과를 얻을 수 있음.    즉, 재귀함수만 사용하는 것이 아닌 저장을 위한 메모리를 적절하게 함께 사용함.    이때 저장을 위한 메모리 사용 기법을 Me.. 2022. 12. 1.
Post Process Effects 1. 클래스 구조 1.1 현재의 랜더링 구조 - 카메라가 랜더링을 담당함. 카메라에는 메인 카메라와 UI 카메라가 있음. - 각 카메라가 Render Target을 가지고 있음. 즉, 메인 카메라도 본인만의 Render Target을 UI 카메라도 본인만의 Render Target을 가지고 있음. 그래서 마지막에 Back Buffer의 Render Target->Merge(MainCameraRenderTarget) 또 Merge(UICameraRenderTarget)을 실행해서 합치는 것. - GameEngineLevel::Render()에서 카메라에 종속된 랜더러들을 모두 그린뒤, 각 카메라의 Post Process Effects가 적용되게끔 코드가 작성되어 있음. 대략 이런식으로 Post Proces.. 2022. 11. 24.
4. Graph, DFS, BFS 4.1 Graph4.1-1 그래프  Def) 그래프(Graph)    개체 간의 연결 관계를 표현할 수 있는 비선형 자료구조    ex. 도시들 간의 연결, 지하철 노선도, SNS 친구 관계도 등   Note) 결국 트리는 그래프의 한 종류이다.    즉, 트리를 추상화하면 그래프가 됨.   Note) 그래프의 구성 요소    - 그래프 G = (V, E)    - 정점 V(Vertex, Node)      그래프를 구성하는 기본 단위. 노드.      데이터를 저장하거나 상태를 표현    - 엣지 E(Edge, Link)      정점과 정점을 잇는 선. 간선.      방향을 가질 수도 있음.      가중치(Weight)를 가질 수도 있음.   Note) 그래프 관련 용어가중치(Weight)엣지에 .. 2022. 11. 22.
프로젝트 내의 셰이더 구조 고찰 1. 클라 팀원이 에디터에서 셰이더의 종류를 고르고, 해당 셰이더의 세기, 횟수 등을 조절할 수 있게끔 하고자 함. 근데 문제는 여러가지 셰이더를 동시에 적용 되게끔 하는 것. 1.1 셰이더 조절 관련 랜더러 클래스를 셰이더마다 만들고자 함. 그럼 에디터에서 다양한 랜더러 클래스 관련 코드와의 동기화?가 필요함. 즉, 코드 제너레이터 같은 느낌의 기능이 필요해져서 너무 배꼽이 큰듯하여 포기했음. 1.2 셰이더 조절 관련 랜더러 클래스는 딱 하나만 만듦. 셰이더 파일도 한 개만 작성해서, 거기에 셰이더별 코드를 모아둔다? 너무 길어지고, 가독성이 낮아질듯. 1.3 셰이더 조절 관련 랜더러 클래스도 딱 하나, 셰이더 헤더 파일을 여러 개. 셰이더 조절 관련 랜더러 클래스에서의 멤버 값을 보고 해당 셰이더 함.. 2022. 11. 21.