게임에서 한 프레임에 몇 개의 활성 쉐이더를 사용해야합니까? 100 이상 5?


20

현대 게임에서 한 장면에서 동시에 얼마나 많은 쉐이더가 활성화됩니까? 각 프레임에서 게임을 전환하면서 여러 셰이더가 사용되고 있음을 알고 있으며 셰이더를 통해 객체를 그리는 것이 일반적입니다.

  1. 쉐이더 1로 모든 객체 그리기
  2. 셰이더 1에서 셰이더 2로 변경
  3. 쉐이더 2로 모든 객체 그리기

아직도, 나는 그것이 전체 장면에 대한 글로우 효과, 텍스쳐로 렌더링하는 등의 효과와 같이 간단하지 않다는 것을 알고 있지만, 우리는 그것이 대부분의 방식으로 작동한다고 가정 할 수 있습니다. 셰이더를 전환하는 작업은 비용이 많이 들기 때문에 "그룹 별 셰이더"접근 방식이 좋습니다.

한면에서 장면을 빠르게 렌더링하려고하므로 셰이더를 너무 많이 가질 수 없습니다. 반면에 피부, 금속, 물 등에 대한 다양한 쉐이더 (또는 가지가있는 우버 쉐이더)가 필요합니다.

PC 용 이론, 현대, 3 인칭 3D 탐정 게임 (중요한 경우 DirectX 11)을 사용하는 쉐이더는 몇 개입니까? 일부 "프레임 X"에서 활성으로 만 계산되는 100 개의 활성 쉐이더와 같은 5, 20 또는 그 이상입니까? 나는 그것이 하나의 숫자가 아니라는 것을 알고 있지만 PC 게임을 고려할 때 어떤 규모와 요소가 중요한지 궁금합니다.


샘플 게임에서는 프레임 당 약 9-11을 사용합니다 (다른 작은 셰이더 또는 하나의 동네 짱 셰이더로 계산-지금은 중요하지 않음).

  1. 스킨 쉐이더
  2. 아이 셰이더 (너무 많지는 않지만 서로 다릅니다)
  3. 메탈 쉐이더
  4. 그라운드 셰이더
  5. 눈 / 비 가리개 (필요한 경우)
  6. 워터 셰이더 (장면에 물이있는 경우)
  7. 글로우 셰이더 (특수 효과가 관련된 경우에만)
  8. 발광기 쉐이더 (가로등 등)
  9. 표준 셰이더 (다른 모든 표준 셰이더 만 해당)
  10. 노멀 맵이있는 표준 셰이더
  11. 2D 셰이더 (GUI 등)

"많이"또는 "많이"입니까? 필요한 중요한 셰이더를 잊었습니까?

답변:


28

그것은 실제로 기술에 달려 있습니다. 포워드 렌더에서는 종종 각기 다른 재질 유형마다 하나의 셰이더가 있습니다. 이 기법을 사용하는 AAA 게임에서 셰이더는 종종 아티스트가 설정할 수있는 재질의 옵션 세트에서 생성됩니다. 이로 인해 수백 개의 셰이더가 생성 될 수 있습니다 (1). 그러나 일반적으로 셰이더의 수는 40 정도입니다.

디퍼 드 셰이딩 / 렌더링에서는 종종 G- 버퍼에서 머티리얼 유형을 인코딩하고 나중에 하나의 큰 쉐이더를 사용하여 다른 머티리얼 유형을 다르게 렌더링합니다. 이것은 훨씬 적지 만 더 복잡한 쉐이더로 이어집니다. 여기서 셰이더 수는 5의 순서로되어 있다고 가정하겠습니다.

(1) 출처 : Crystal Dynamics의 계약자에서 근무하면서 자동 생성이 중단 된 이후 툼 레이더의 생성 된 셰이더 수를 줄이는 도구를 개발했습니다. 목표는 셰이더 수를 40 정도 정도로 줄이는 것이 었습니다.


2
답변 주셔서 감사합니다-그것은 매우 복잡하고 풍부했습니다. 방금 투표했습니다. 아직도, 나는“공개”질문이기 때문에 마킹이 있기 며칠을 기다릴 것입니다. 다른 누군가도 자신의 경험에서 더 많은 것을 추가 할 것입니다. 다시 한번 감사드립니다 Roy :)
PolGraphic

s / less / fewer / ...
오류

3

PC에 대한 답변을 원한다는 것을 알고 있습니다. 그러나 iOS에서 수행 한 작업에 대해 답변 드리며 확인 표시가 나타나지 않을 것입니다.

올바른 아이디어가있는 것 같습니다. 그래도 앱마다 다를 것입니다. 결국 원하는 프레임 속도를 얻는 데 필요한 모든 작업을 수행해야합니다. 아이폰의 목표 속도는 60입니다. 나는 30 미만으로 떨어지는 것을 좋아하지 않습니다. 수백 개의 애니메이션 스프라이트 기반 입자로 폭발 할 때 iphone5에서는 30으로 떨어지고 4에서는 훨씬 낮아집니다. 특정 장치의 복잡성을 줄이는 방법을 결정해야합니다. 때로는 그 결정이 쉐이더에 영향을 미칩니다.

그러나 일반적으로 프레임 수 목표에 따라 작업에 사용하는 쉐이더 수에 영향을 미치지 않습니다.

내 의견으로는 쉐이더를 올바르게 사용하면 프레임 속도가 올라갑니다. 80 개의 셰이더가있는 응용 프로그램이 있지만 단일 프레임에서 약 10 개를 모두 사용하지는 않습니다. 필요에 따라 컴파일하고 장면 사이에서 모두 버립니다. 그리고 내 하드웨어에서 셰이더 수 효과 프레임 속도를 보지 못했습니다. 셰이더에 사용 된 기술 만 그러나 확실히 2 가지 유사한 셰이더를 사용하는 것이 분기하는 더 복잡한 셰이더를 사용하는 것보다 프레임 속도에 더 좋습니다.

또한 렌더링 속도가 느리거나 느린 장치에서 품질이 떨어지는 쉐이더도 있습니다. iPhone 5에서는 노멀 매핑을 사용하지만 iPhone 4에서는 노멀 매핑을 수행하지 않는 쉐이더로 교체합니다.

나는 Roy의 대답을 좋아하고 항상 "진짜"게임이 어떻게 만들어 지는지에 대한 통찰력을 얻으려고 노력하고 있습니다. 나는 스스로 가르쳤 기 때문에 오늘의 위대한 발견이 실제로 어떻게 진행되는지 또는 실제 전문가보다 몇 걸음 더 나아 갔는지 결코 알 수 없습니다.


1
귀하의 답변이 "iOS 용"이라는 사실에는 문제가 없습니다. 나는 "플랫폼에 의존한다"는 짧은 응답은 피하고 싶어서 PC에 대해 주로 말했다. 그러나 여전히 플랫폼에 독립적 인 결론이 있으므로 좋았습니다. 그리고 지역 사회 (즉, 사용하는 아이폰 OS)의 다른 멤버, 그것은 훨씬 더 유용하게 사용할 수 : 내게 감사하고 투표 업 때문에
PolGraphic

1

타겟 플랫폼뿐만 아니라 게임의 제한 요소에 의존하기 때문에 얼마나 많은 쉐이더가 필요하거나 없어야하는지 실제로 숫자를 입력 할 수 없습니다. 실제로, 활성 셰이더 수를 "실제로 필요한만큼만"줄이십시오. 때때로 이것은 한 번에 소수의 셰이더 (10 개 정도) 만 있음을 의미하며 때로는 수십 개를 의미합니다.

게임에서 나타나는 순열의 양을 제한하는 한 가지 방법은 거의 모든 셰이더가 단일 셰이더에서 파생되고 차이와 특수 동작이 전처리기를 통해 교체되는 "우버 셰이더"기술을 구현하는 것입니다. 피사계 심도, 앰비언트 오 클루 전 등과 같은 특수 효과에는 예외가 있습니다.

이 시점까지 AAA 게임에 대한 나의 경험에 따르면, 수십 개의 쉐이더가 활성화 된 것은 부당한 것이 아닙니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.