#gdc11 #review HALO: REACH Effects Tech

GPU를 미친 듯이 괴롭힌 이펙트 종결 발표. 거기다 충돌도 구현했다.

Cheap Colliding Particles

/pnotes/assets/2016-08-15-gdc11-halo-reach-effects-tech-00.jpg

  • 요구사항 : CPU대신 GPU를 괴롭혀 줘.

/pnotes/assets/2016-08-15-gdc11-halo-reach-effects-tech-01.jpg

/pnotes/assets/2016-08-15-gdc11-halo-reach-effects-tech-02.jpg

  • 파티클 하나당 28 bytes 사용

/pnotes/assets/2016-08-15-gdc11-halo-reach-effects-tech-03.jpg

  • type data를 texture에 저장.
  • 이것 때문에 드로우 콜 한 번으로 렌더링이 가능하다.

/pnotes/assets/2016-08-15-gdc11-halo-reach-effects-tech-04.jpg

/pnotes/assets/2016-08-15-gdc11-halo-reach-effects-tech-05.jpg

  • particle state buffer
    • 이걸로 총 파티클 수를 제어함
    • pixel 하나가 파티클 하나를 가르킴
    • 죽은 파티클은 검정색
    • 살아 있는 건 색깔

/pnotes/assets/2016-08-15-gdc11-halo-reach-effects-tech-06.jpg

  • 파티클 충돌 멋지다

/pnotes/assets/2016-08-15-gdc11-halo-reach-effects-tech-07.jpg

  • 살색은 여유 공간.
    • surface에서 마진을 둔다.
  • 파티클 속도 벡터와 surface normal을 연산해 튕김을 구현
    • surface tangent를 기준으로 reflect

Shields & Depth Effects

/pnotes/assets/2016-08-15-gdc11-halo-reach-effects-tech-08.jpg

  • 버텍스 확장

/pnotes/assets/2016-08-15-gdc11-halo-reach-effects-tech-09.jpg

  • 깊이와 비교해 fade out
  • 캐릭터와 가까울수록 투명

/pnotes/assets/2016-08-15-gdc11-halo-reach-effects-tech-10.jpg

Low Resolution Transparent

/pnotes/assets/2016-08-15-gdc11-halo-reach-effects-tech-11.jpg

  • 반투명 레이어가 너무 많을 때

/pnotes/assets/2016-08-15-gdc11-halo-reach-effects-tech-12.jpg

  • low resolution을 적극 사용

/pnotes/assets/2016-08-15-gdc11-halo-reach-effects-tech-13.jpg

  • low -> high 트랜지션은 비싸므로 남용하면 느려진다

/pnotes/assets/2016-08-15-gdc11-halo-reach-effects-tech-14.jpg

  • 그룹을 low-res로 그리고 high-res 콘텐츠와 섞는다.
  • 이렇게 묶은 그룹을 반투명 소팅에 넣어서 소팅한다.
  • 그룹에 가장 먼 녀석을 소팅 기준값으로 사용
    • high res 녀석들보다 멀리 가서(그룹 내 가장 먼 녀석이랑) high res에 가려질 가능성이 크다.

/pnotes/assets/2016-08-15-gdc11-halo-reach-effects-tech-15.jpg

  • 뎁스 잘 사용하자
  • 이쪽을 어떻게 잘 활용하느냐가 관건인 듯.

발표


크리에이티브 커먼즈 라이선스
Feedback plz <3 @ohyecloudy, ohyecloudy@gmail.com
|