Featured image of post 최적화 시스템 제 3부 \

최적화 시스템 제 3부 "파티클"

파티클(Particle)

파티클은 각종 마법 이펙트, 연기, 물보라등의 입자 효과를 나타내는 통칭입니다.
거의 모든 파티클은 빌보드 (Billboard) 로 이루어져서, 카메라쪽을 바라보는 많은 2폴리곤 평면들의 집합입니다.

- 전반 그리기 작업 (Start 3D Process)

전체 부하 중 22% 를 차지하는 부분입니다

그리고 그 중에서도 알파 오브젝트의 처리가 30%를 차지하며,
파티클 이펙트는 알파 오브젝트 처리의 큰 축입니다.
근본적으로 화면에 ‘그려야’ 하기 때문에 start3Dprocess를 줄이는 것은 불가능합니다.
그러나 부하가 큰 편인 파티클을 손보는 것은 일부의 경우 효과가 있을 수 있습니다.

여기서 분석된 파티클은, 사실상 겜브리오 엔진 기본 파티클 시스템 자체의 문제입니다.
보통 다른 엔진에서 파티클을 사용할 때, 4개의 버텍스를 이용한 평면 오브젝트 파티클 덩어리를 생성하지 않고,
1개의 버텍스에 텍스쳐만 가져다 붙이는 ‘sprite’ 기능을 이용하고 있습니다.
그렇지만 애석하게도 겜브리오 기본 파티클은 각 파티클 하나하나마다 4개의 버텍스를 모두 그리고, 심지어 매 프레임 업데이트까지 하는 비효율적인 방식이기 때문에 파티클 개수 하나하나는 마치 ‘오브젝트’ 하나처럼 추가되어서
파티클이 300개가 뿜어져 나오는 화산이 있다 치면 300개의 집이 움직이는 것과 같은 부하를 유발하게 된 것입니다 (사실상 폴리곤이 작다보니 그만큼의 부하는 아니겠지만요)

이 부분에 대한 근본적인 해결책은 ‘겜브리오 엔진을 욕하고 난 후 파티클 시스템을 다시 만드는 것’ 입니다

그렇지만 지금 현재 그럴 수 없는 상태이기 때문에, 선택한 대안은 ‘파티클 제거 옵션’ 입니다.
이 옵션은 난청 김 철홍 선생께서 작업하고 계시며, 옵션에 따르면 필드의 파티클과, 캐릭터의 파티클이 제거됩니다.
즉 전투 화면에서도 파티클이 제거됨으로써, 저사양 옵션에서 파티클 제거를 켜면 전투에서도 다소 빨라질 것으로 보입니다.
그리고 파티클이 상대적으로 많은 용궁이나 콘스에서도 이 옵션으로 파티클 부하를 줄일 수 있게 됩니다.
그러나 한계도 있습니다. 바로 하드코딩된 (소스에 직접 코딩된) 파티클은 제거할 수 없다는 것인데요. 그래서 완벽한 제거는 불가능하고 몇몇 파티클은 남아 있게 됩니다 .(ex. 죽었을 때 나타나는 파티클 덩어리 )

거기에 추가로 제작된 기능이 ‘Firedance Shader’  입니다.
이 쉐이더는 파티클을 사용하지 않고, ‘흘러가는 에니메이션이 적용되어 있는 소스’와 ‘가만히 있는 마스킹소스’  두 장의 텍스쳐의 블렌딩을 이용해 불이나 연기같은 흘러가는 입자를 흉내낼 수 있는 기능입니다.
이미 언리얼 등에는 있는 쉐이더입니다만 우리 게임에서는 쉐이더를 쉽게 추가할 수 없는 구조였기 때문에 그동안
추가하기가 쉽지 않았습니다. 기본 제작은 제가 했고 김철홍 선생이 정리해 주셨습니다.
효과는 무척 괜찮습니다. 무엇보다 파티클을 사용하지 않고 2폴리곤짜리 평면 한 장만을 사용하기 때문에 거의 부하를 주지 않습니다.

  • 현재 적용 내역:
    테스트 후 외부 테섭에 적용되기 직전입니다. 프로그램팀에서 옵션을 만들어 주어야 활성화 될 것입니다.
    현재 옵션 ‘하’ 에서 이 기능이 적용되는 것이 어떨까 생각하고 있습니다.

  • 이 기능으로 개선될 수 있는 사항:
    이 기능을 적용하면 개선될 수 있는 사항은, 파티클이 많이 나오는 지역에서 옵션을 ‘하’ 로 주거나 파티클 옵션을 끄면 속도가 증가할 것이 예상됩니다.
    또한, 불 등이 Firedance shader 로 교체되면 파티클을 사용하지 않고도 효과가 좋은 불이나 연기를 이펙트 팀에서 만들어 낼 수 있을 것으로 예상됩니다.

  • 이 기능으로 문제될 수 있는 사항:

  1. 새로운 쉐이더 시스템이 Fog와 충돌을 일으킬 수도 있습니다. 또한 vertex shader가 지원되지 않는 일부 노트북에서는 제대로 나오지 않을 수도 있습니다. 또는 알파 sorting 등의 우선순위가 바뀌거나, 반투명 오브젝트끼리 겹쳤을때 문제가 생길 수도 있습니다.
  2. 그 외 알려진 특별한 문제는 없습니다.
  • 이 기능에 대해 체크할 사항:
    기획팀 혹은 테스트 담당 분들께서는, 새로 적용된 쉐이더 시스템이 각종 물체나 fog와 상호작용할 때 문제가 없는지 확인해 주시면 됩니다. 아직 적용되지 않았으므로, 적용된 이후부터 봐주시면 되겠습니다.
    혹은 파티클을 제거하는 옵션을 켰는데도 여전히 파티클이 줄기차게 나오는 현상이 일어난다던가 하는 부분을 체크해 주시면 감사하겠습니다.
Hugo로 만듦
JimmyStack 테마 사용 중