일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- DirectX11
- directx
- 백준
- 티스토리챌린지
- Frustum
- baekjoon
- 팰린드롬 만들기
- DeferredRendering
- RootMotion
- RVO
- UnrealEngine5
- 2294
- 줄 세우기
- const
- algorithm
- Unreal Engine5
- C
- NRVO
- 프로그래머스
- 1563
- Programmers
- 언리얼엔진5
- 오블완
- C++
- IFileDialog
- UnrealEngine4
- winapi
- UE5
- softeer
- GeeksForGeeks
- Today
- Total
목록ComputerGraphics (26)
Game Develop
현재 작업중인 프레임워크는 학원에서 배우고 사용했던 프레임워크를 기반으로 내 포트폴리오에 맞춰서 최적화시킬수 있는건 최적화하고 기능 추가하고 하는중이였는데 터레인에디터부분에서 최적화가 많이 필요한걸 느꼈다. 일단 터레인맵의 크기가 클수록 프레임이 기하급수적으로 떨어졌다. 피킹을 하면 터레인크기가 클수록 프레임이 더 떨어지는건 정상이긴하지만 좀 많이 떨어졌다. 떨어졌던 원인 2가지는 아래와 같다. 1. 터레인피킹 2. 터레인피킹으로 좌표를 받아와서 좌표주변의 버텍스 y값 조절을 통해 지형을 수정하는 과정. 피킹자체는 학원에서 배울 때 컴퓨트쉐이더를 이용해서 gpu쪽연산으로 돌렸기 때문에 최적화가 됐다. 그러나 렌더함수쪽에서 피킹으로 값받아오는 연산이 프레임단위로 수행되고 있었기 때문에 터레인크기를 늘리자마..
그냥 어느정도의 영역만큼 컬링하는지 표현하려고 해봤다. 혹시 크기를 알아내는게 복잡한가? 싶어서 투영행렬 유도식까지 공부하고 정리했는데 굳이 필요는 없었다. 물론 공부자체는 매우 유익했는데 절두체크기 구하는건 단순히 탄젠트공식 하나만 알면 되는 부분이긴했다. 절두체크기 구하는 부분에 대해선 다른 카테고리에 포스팅했으니 참고할사람은 했으면 좋겠다. 결과물은 아래와 같다.
정확히는 현재 카메라의 절두체의 근평면(Near)과 원평면(Far)의 너비(Width), 높이(Height)를 구하는 과정이다. 포폴제작중에 프러스텀컬링이 어느영역만큼 컬링하고있는지 컬라이더를 이용해서 시각적으로 표현하고싶어서 관련 내용에 대해 공부를 했다. 편한이해를 위해 최종적으로 구하려는 결과물이 어떤것인지 먼저 보여주고 시작하겠다. - 구하려는 결과물 위와같은 절두체컬라이더를 만드려면 어떻게해야할까? 버텍스 찍어주는거자체는 그냥 근평면 찍어주고 원평면 찍어주고 이어주면 된다. 꼭짓점과 근평면 찍어주는거는 선택사항이니 알아서 하면된다. 버텍스는 아래와 같이 찍어야 할 것이다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 void Frustum..
Normal Mapping 이란? 노멀 매핑(Normal Mapping)은 폴리곤의 법선 벡터(Normal Vector)의 값을 사용하여 로우 폴리곤의 그래픽 환경에서 하이 폴리곤의 입체감 및 질감을 구현하는 방법이다. 물체의 질감을 있는 그대로 폴리곤으로 표현하면 삼각형의 양이 많아지고 결국 연산이 많이 필요하게 되는데 폴리곤을 무척 적게 사용하고도 비슷한 효과를 낼 수 있는 기술이다. 90년대까지는 논문에서나 존재하던 기술이었으나 하드웨어의 속도가 빨라지고 프로그래머블 셰이더가 일반화되는 2000년대 중반부터 널리 사용되기 시작하였다. - 나무위키 - 정의에 대해서는 나무위키가 설명을 잘해놔서 복붙했다. 좀 더 설명을 덧붙이자면 기존에는 디퓨즈연산을 할 경우, 각 폴리곤의 법선벡터로만 라이팅 연산을 ..
WVP변환이란? WVP변환은 컴퓨터그래픽스에서 최종적으로 2D모니터에 출력하기 위한 위치변환과정 중 하나이고, 그중에서 Clip Space로 변환하기위한 과정이다. (DirectX 기준) World 어떤 공허한 공간이 있고 여기에 정사면체 하나가 있다고 가정하자.이 정사면체의 (..
A* 알고리즘 길찾기 알고리즘. 터레인에 임의의 개수,위치의 노드를 배치하고 알고리즘을 적용하여 벡터에(벡터든 다른 컨테이너든) 타겟까지의 노드들을 순서대로 저장 후 참고하여 이동. PatrolState는 목표지점이 한번 정해지면 그 지점에 갈때까지 목표지점이 바뀔일이 없기 때문에(다른 State로 바뀌는게 아니라면) 목표지점에 도착할 때마다 새 목표지점에 대해 한번만 경로갱신해주면 된다. 그러나 StalkingState같은 경우는 실시간으로 움직이는 대상에 대해 이동하기 때문에 경로갱신도 일정주기로 해줘야한다. 그냥 프레임단위로 실행해버리면 바로바로 경로가 업데이트되니 보기엔 좋아보이지만, 당연히 그만큼 cpu자원을 많이 먹기 때문에 프레임이 떨어진다. 그래서 개발자가 원하는 임의의 시간단위로 경로갱신..
임시방편예외처리로 해결한 버그목록 1. PatrolState에서 실제이동부분코드. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 if (Timer::Get()->GetFPS() > 10) // 초기실행시 FPS값이 순간적으로 1이 되는것에 따른 버그로 인한 예외처리. { monster->MoveToDestUsingAStar(mDest); monster->SetAnimation(eAnimation::Run); // Run. } if (fabs(mPatrolDestPos.x - monster->position.x) position.z) GetPath().pop_back(); mbPatrolMove = false; mPatrolRandomNum = GameMath::Rando..
곱 순서 Scaleing : 크기 Rotation X,Y,Z : 자전 Translation : 이동 D3DXMatrixRotationAxis(공전) Parent : 부모행렬 ( 다른 사물에 종속되어있다면, 그 사물이 움직일 때 동일한 연산을 한다. 자식한테 물려줄때는 스케일링은 포함시키지 않는다. 뷰의 위치에서(카메라의 위치에서) 정점으로 향하는 방향과 반사각의 cos값을 구해야한다. 카메라의 위치를 따로 안넘기고 카메라의 트랜스폼의 뷰의 역행렬을 넘겨준다. 노말맵 : 울퉁불퉁하게 보이려고하는거. 법선벡터들(버텍스든 픽셸이든) 조절해서 흉내낸다. 대부분의 노말맵은 푸른빛을 많의 띈다. rgb중 빛값이 높기 때문. r,g,b 중 세번째인 b값이 높다는건데 벡터는 x,y,z로 표시한다. 즉 서로 세번째 값이..