2016-06-25 5 views
14

래스터 화 및 광선 추적에 대한 연구를 수행 한 후. 인터넷에서 사용할 수있는 광선 추적을 위해 CPU가 작동하는 방식에 대한 정보는별로 없다는 것을 발견했습니다. 나는 Pixar에 관한 기사와 그들이 CPU에서 Cars 2를 어떻게 사전 렌더링했는지에 대한 기사를 읽었습니다. 프레임 당 11.5 시간이 걸렸습니다. GPU가 동일한 이미지 품질로 더 빨리 렌더링하지 않았습니까? http://gizmodo.com/5813587/12500-cpu-cores-were-required-to-render-cars-2 https://www.engadget.com/2014/10/18/disney-big-hero-6/ http://www.firstshowing.net/2009/michael-bay-presents-transformers-2-facts-and-figures/ 건배, 샘GPU 대신 레이 트레이싱에 CPU를 사용하는 이유는 무엇입니까?

+0

아마 그들은 그 단계에서 속도에 신경 쓰지 않습니다. – kangshiyin

+2

OP 편집을 통해 질문 할 때 참조하는 기사에 대한 링크를 제공하십시오. – MWiesner

+0

https://en.wikipedia.org/wiki/Ray-tracing_hardware 및 raytracing과 래스터 화에 관한 기사에서 이유를 자세히 설명합니다. – pvg

답변

37

내가 렌더링 소프트웨어 아키텍트가 아니라 예전하지만 내가 큰 VFX에서 렌더링 소프트웨어 설계자 중 하나를 독점 렌더러 (안 픽사와 애니메이션 기능 스튜디오 해요 오래, 오래 전부터).

모든 주요 렌더러가 포함 된 영화의 모든 고화질 렌더링은 거의 모든 CPU에만 적용됩니다. 이 경우 왜 그런지 이유가 있습니다. 모든 메모리에있을 때

  • GPU는 단지 빠른 이동 : 특별한 순서없이, 정말 매력적인 사람 중 일부는 당신에게 문제의 맛을 제공합니다. 가장 큰 GPU 카드는 무엇이며 12GB 정도이며 은 모두입니다. 글쎄, 우리는 일상적으로 30GB의 지오메트리로 장면을 렌더링하고 1TB 이상의 텍스처를 참조합니다. 그것을 GPU 메모리에로드 할 수 없으며 문자 그대로 두 배 정도 크기가 큽니다. 따라서 GPU는 우리의 가장 큰 (또는 평균적인) 장면을 처리 할 수 ​​없습니다. (CPU 렌더러가 있으면 우리가 필요로 할 때마다 디스크에서 물건을 페칭 할 수 있습니다.) GPL로는 좋지 않습니다. GPL로 레이 트레이싱을하는 것이 CPU보다 확실한 승리는 아닙니다. GPU는 매우 일관된 작업 (한 번에 많은 양의 데이터와 동일한 작업 수행)에서 훌륭합니다. 광선 추적은 매우 일관성이 없습니다 (각 광선은 다른 방향으로 갈 수 있고, 서로 다른 물체를 교차 시키며, 다른 재질을 쉐이드하고, 다른 텍스처에 액세스 할 수 있습니다). 따라서이 액세스 패턴은 GPU 성능을 매우 심각하게 저하시킵니다. 아주 최근에 GPU 레이 트레이싱이 최고의 CPU 기반 레이 트레이싱 코드와 일치 할 수 있었고, 그것을 능가 했음에도 불구하고, 모든 오래된 코드를 버리고 GPU 용 버그있는 코드로 신선하게 시작하는 것만으로는 충분하지 않습니다 . 그리고 가장 비싸고 가장 비싼 장면은 GPU가 약간만 빨라진 장면입니다. 쉬운 장면에서 훨씬 더 빠르다는 사실은 우리에게별로 중요하지 않습니다.

  • CPU 기반 렌더러에 50 년 또는 100 년의 생산 단련 된 코드가있는 경우 2 배의 속도 향상을 위해 다시 꺼내서 다시 시작하지 마십시오. 소프트웨어 엔지니어링 노력, 안정성 등이 더 중요하고 더 큰 비용 요소입니다.

  • 마찬가지로 스튜디오가 20,000 개의 CPU 코어를 보유한 데이터 센터에 투자 한 경우 모두 가장 작고 전력 및 열효율이 뛰어난 폼 팩터로 구현할 수 있습니다. 이는 단순히 던지지 않는 매몰 비용 투자이기도합니다 떨어져. 라인 GPU를 포함하는 새로운 머신으로 교체하면 렌더링 팜의 비용이 크게 증가하고 더 커지고 더 많은 열을 발생시켜 문자 그대로 건물에 적합하지 않을 수 있습니다.

  • Amdahl 's Law : 실제 "렌더링"그 자체는 장면을 생성하는 단 하나의 단계이며 GPU는 도움이되지 않습니다. 장면을 렌더러로 완전히 생성하고 내보내는 데 1 시간, 렌더링하는 데 9 시간이 걸리며 9 시간 동안 1 시간 동안 텍스처, 볼륨 및 기타 데이터가 디스크에서 읽히고 있다고 가정 해 봅시다. 따라서 사용자가 렌더링을 경험하는 총 시간 (최종 이미지가 준비 될 때까지 버튼을 누름)의 총 10 시간 중 8 시간이 GPU로 빨라질 수 있습니다. 따라서 GPU가 해당 부분의 CPU 속도보다 10 배 빠르더라도 10 시간에서 1 + 1 + 0.8 = 거의 3 시간으로 이동합니다. 따라서 10x GPU 속도 향상은 실제 3 배의 이득만을 의미합니다. GPU가 레이 트레이싱을 위해 CPU보다 1,000,000 배 빠르면 여전히 1 + 1 + tiny를 가지며, 이는 5 배의 속도 향상입니다.

하지만 게임의 차이점은 무엇입니까? GPU가 게임에는 적합하지만 영화에는 적합하지 않은 이유는 무엇입니까?

우선 게임을 만들 때 실시간으로 렌더링해야한다는 것을 기억하십시오. 즉, 가장 중요한 제약 조건은 60Hz (또는 무엇이든)의 프레임 속도이며 필요한 경우 품질이나 기능을 희생한다는 의미입니다. 그것을 달성하십시오. 대조적으로, 영화의 경우 깨지지 않는 제약은 감독과 VFX 감독자가 자신이 원하는 품질과 외모를 가지고 행복하게 만드는 것입니다.

또한 게임을 사용하면 프레임 이후 프레임을 렌더링하고 모든 사용자 앞에 게시합니다. 그러나 영화의 경우 효과적으로 한 번 렌더링됩니다. 영화관에 배달되는 것은 영화 파일이므로 영화 관객은 프레임 당 10 시간이 걸릴지 모르는 경우도 모릅니다.하지만 잘 보지 않으면 눈치 채게됩니다. 다시 한번 말하지만, 멋지게 보이는 한 오랜 시간이 걸리는 렌더링에 대해서는 벌금이 부과되지 않습니다.

게임을 사용하면 플레이어가 렌더링 할 프레임을 알 수 없습니다. 플레이어가 전 세계를 돌아 다니며 어디에서나 볼 수 있기 때문입니다. 당신은 모든 것을 완벽하게 만들 수 없으며 그렇게해서는 안됩니다. 항상 충분히 좋기를 바랍니다. 그러나 필름을 위해, 발사는 모두 손으로 만들어진다! 엄청난 양의 인간 시간은 모든 장면을 작곡, 애니메이션, 조명 및 합성하는 데 사용되며, 한 번만 렌더링하면됩니다. 경제에 대해 생각해보십시오. - 달력 (및 급여)이 10 일 (그리고 급여)이 조명으로 전환되고 샷을 바로 합성하면, 한시간 (또는 심지어 1 분)의 시간대에 렌더링하는 이점이 매우 작고 가치가 없습니다 이미지의 품질 또는 달성 가능한 복잡성의 희생.

+1

정말 고마워요! 이봐. – oodle600

+1

/경의를 표하며 : p – Alnitak

+1

내 실시간 동적 윙 스타일 레이 트레이서는 GPU에서 CPU https://www.youtube.com/watch?v=GErl-poxmNE보다 훨씬 빠릅니다. 그것은 6 년 전에 나온 GTX 580에있었습니다. –