일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- UnrealEngine4
- baekjoon
- UnrealEngine5
- IFileDialog
- Programmers
- softeer
- 2294
- directx
- C++
- C
- NRVO
- DirectX11
- GeeksForGeeks
- 언리얼엔진5
- Frustum
- winapi
- Unreal Engine5
- const
- DeferredRendering
- 프로그래머스
- 티스토리챌린지
- algorithm
- 백준
- 줄 세우기
- 팰린드롬 만들기
- 1563
- 오블완
- RootMotion
- UE5
- RVO
- Today
- Total
목록ComputerGraphics/My Project (15)
Game Develop
사실 아직도 도저히 이해가 안가는 일이긴 하다. 씬에서 직접 fbx파일을 추출해서 Asset창에 보여주고 렌더시키는 툴을 만드는 중인데 fbx파일 선택을 위해 공용대화상자를 여는 winapi를 찾게 되었다. 먼저 사용한건 commdlg.h에 있는 GetOepnFileName()이라는 함수를 이용해서 파일대화상자(FileDialog)를 여는건데, 비교적 사용법은 쉬웠다. (사용법에 대해선 따로 정리해놨다) 근데 이상하게, 저 대화상자를 열고 파일 선택하고 확인을 누른 다음에 ModelExporter을 실행하면 도통 파일을 읽어오질 못한다. 이것저것 시도하다 하루를 날렸는데 멘탈이 조금 깨졌었다. 그냥 한창 구현만 하면 되는 작업이였어서 딱히 막히는일이 없을줄알았는데 생각치도못한곳에서 작업이 멈추니까 짜증도..
fxc.exe가 종료되었습니다.(CODE 1) => FXC는 셰이더 컴파일도구종류중 하나인거같은데, 갑자기 잘되던게 이 에러뜨면서 빌드가 안된다. 이건 좀 사연이 길다 사실 잘되던건 아니고, UV피킹 구현중에 DEVICE설정 좀 건드리느라 혹-시나(전혀 걱정할필요없지만) 기존 컴퓨트피킹에 뭐 영향이 갔나 싶어서 컴퓨트피킹으로 바꿔놓고 빌드했는데 피킹이 갑자기 잘 안된다. 정말로 많이 당황했다. 셰이더파일 설정같은거 뭐 건드렸나싶어서 다 살펴보고했지만 아무리생각해봐도 전혀 뭘 건드린게 없었다. 이걸로 하루넘게 날렸다. 뭐 UV피킹 구현하는걸로 시간을 쓴것도아니고, 기존에 잘 되던게 갑자기 안되버리니 미치는줄알았다. 결국 원인을 찾았는데, cbuffer 레지스터 등록이나 구조체,함수 선언을 따로 Heaer에..
현재 작업중인 프레임워크는 학원에서 배우고 사용했던 프레임워크를 기반으로 내 포트폴리오에 맞춰서 최적화시킬수 있는건 최적화하고 기능 추가하고 하는중이였는데 터레인에디터부분에서 최적화가 많이 필요한걸 느꼈다. 일단 터레인맵의 크기가 클수록 프레임이 기하급수적으로 떨어졌다. 피킹을 하면 터레인크기가 클수록 프레임이 더 떨어지는건 정상이긴하지만 좀 많이 떨어졌다. 떨어졌던 원인 2가지는 아래와 같다. 1. 터레인피킹 2. 터레인피킹으로 좌표를 받아와서 좌표주변의 버텍스 y값 조절을 통해 지형을 수정하는 과정. 피킹자체는 학원에서 배울 때 컴퓨트쉐이더를 이용해서 gpu쪽연산으로 돌렸기 때문에 최적화가 됐다. 그러나 렌더함수쪽에서 피킹으로 값받아오는 연산이 프레임단위로 수행되고 있었기 때문에 터레인크기를 늘리자마..
그냥 어느정도의 영역만큼 컬링하는지 표현하려고 해봤다. 혹시 크기를 알아내는게 복잡한가? 싶어서 투영행렬 유도식까지 공부하고 정리했는데 굳이 필요는 없었다. 물론 공부자체는 매우 유익했는데 절두체크기 구하는건 단순히 탄젠트공식 하나만 알면 되는 부분이긴했다. 절두체크기 구하는 부분에 대해선 다른 카테고리에 포스팅했으니 참고할사람은 했으면 좋겠다. 결과물은 아래와 같다.
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..