Particle System을 활용하여 공격 시 발생하는 파티클 구현
- 몇몇 스컬의 경우 공격 시 공격한 반대 방향으로 여러 개의 먼지 입자가 튀는데, 이 부분을 Particle System으로 구현했다.
- Particle System은 먼지가 날리는 것 같은 다수의 객체를 한꺼번에 그릴 수 있는데 이 먼지 하나 하나를 객체로 취급한다면 프레임이 상당히 떨어졌을 것이다.
(1회 공격당 50개의 파티클이 생성됨)
- 구현은 Structured Buffer로 파티클 배열만큼의 메모리를 GPU에 할당한 후에, Compute Shader에서 값을 이리저리 옮겨주고, 그 값을 Geometry Shader에서 사각형으로 만들어준다.
(파티클 각각은 점으로 이루어져 있고 Geometry Shader에서 이 점을 기준으로 삼각형 2개를 그려서 사각형을 만들어준다. 물론 uv값도 같이 설정해주기 때문에 텍스쳐를 매핑할 때 아무런 문제가 없다)
- 그 후엔 마찬가지로 Pixel Shader에서 해당 사각형에 텍스쳐를 매핑해서 화면에 뿌려준다.
- 먼지를 구현하기 전에 200프레임 전후를 유지하고 있었는데, 구현한 후에도 200프레임 전후에서 왔다갔다 하는 것을 보고, 문제 없이 구현되었다는 것을 확인할 수 있었다.
- 방법은 몬스터가 공격당했을 때, 가지고 있는 파티클 제너레이터에 생성할 파티클의 갯수를 넘겨주면 해당 갯수만큼 Compute Shader에서 스레드를 깨워서 초기값을 주고 움직이게 한다.
- DeltaTime과 중력을 상수 버퍼로 같이 넘겨서 마치 파티클이 중력을 받는 듯한 효과를 주었다.
(처음에는 상승하다가 일정 시간이 지나면 중력에 의해 바닥으로 떨어짐)
내일 할 일
- Town Scene 배경 이미지 변경
- Dungeon Scene 기초 작업 및 Scene 간 이동 구현
'게임 개발 > [D2D_Portfolio] DirectX2D 포트폴리오 작업일지' 카테고리의 다른 글
33. Player Hit Effect 구현 & Town Map 이미지 교체 (0) | 2023.04.24 |
---|---|
32. HighWarlock Attack Method 구현 및 카메라 움직임 부드럽게 변경 (0) | 2023.04.23 |
30. Physic Event 추가 & Particle System 구현 중 (0) | 2023.04.20 |
29. Monster Factory 추가 & RigidBody 및 충돌 개선 (0) | 2023.04.19 |
28. 몬스터 파티클 추가 (0) | 2023.04.17 |
댓글