내가 이해하지 못한 것이 있습니다. GTA IV와 같은 대형 PC 게임은 어떻게 CPU의 50 %를 사용하고 60fps로 실행할 수 있습니까? 60fps에서 회전하는 주전자의 DX 데모는 무려 30 %를 사용합니까?
답변
일반적으로
- 게임은 렌더링에 필요한 것에 최적입니다.
- 그들은 당신의 하드웨어를 특별히 활용합니다.
예를 들어, 한 가지 쉬운 최적화는 실제로 볼 수없는 것을 그리려고하지 않는 것입니다. Grand Theft Auto IV 의 도시와 같은 복잡한 장면을 고려하십시오 . 렌더러는 실제로 모든 건물과 구조를 렌더링하지는 않습니다. 대신 카메라가 볼 수있는 것만 렌더링합니다. 동일한 카메라의 뒤쪽으로 날아 다니고 원래 카메라를 향하면 반쯤 뚫린 셸 구조가 보입니다. 카메라가 볼 수없는 모든 지점은 렌더링되지 않습니다. 볼 수 없기 때문에 카메라를 보여줄 필요가 없습니다.
또한 특정 하드웨어 세트에 대해 개발할 때 최적화 된 지침 및 특수 기술이 존재하므로 속도가 더욱 향상됩니다.
질문의 다른 부분은 데모가 많은 CPU를 사용하는 이유입니다.
… 60fps에서 회전하는 주전자의 DX 데모는 무려 30 %를 사용합니까?
하드웨어가 예쁜 예제를 보여주기 위해 필요한 모든 기능을 지원하지 않는 경우 그래픽 API 데모 (예 🙂dxdemo
가 소프트웨어 렌더러 라고하는 것으로 대체 되는 것이 일반적입니다. 이러한 기능에는 그림자, 반사, 광선 추적, 물리학 등이 포함될 수 있습니다.
이는 API의 모든 기능을 과시하기 위해 존재하지 않는 완전한 기능을 갖춘 하드웨어 장치의 기능을 모방합니다. 그러나 하드웨어는 실제로 존재하지 않으므로 대신 CPU에서 실행됩니다. 그것은 그래픽 카드에 위임하는 것보다 훨씬 비효율적이므로 CPU 사용량이 높습니다.
답변
인내, 기술 및 지구력.
첫 번째 요점은 DX 데모는 주로 교육 보조 자료이므로 실행 속도가 아닌 명확성을 위해 수행됩니다.
압축의 대상은 꽤 크지 만 게임 개발은 주로 데이터와 실행 경로를 거의 병리학적인 정도로 이해하는 것입니다.
- 코드는 데이터와 대상 하드웨어의 두 가지 측면에서 설계되었습니다.
- 가장 빠른 코드는 실행되지 않는 코드입니다. 데이터를 일괄 처리로 정렬하고 필요한 데이터에 대해 비싼 작업 만 수행하십시오.
- 데이터 저장 방법이 핵심입니다. 연속 액세스를 목표로하면 고속으로 일괄 처리 할 수 있습니다.
- 가능한 모든 것을 파렐 리제
- 최신 CPU는 빠르며 최신 RAM은 매우 느립니다. 캐시 미스가 치명적입니다.
- 가능한 한 많이 GPU에 푸시하십시오. 빠른 로컬 메모리를 가지고 있으므로 데이터를 타파 할 수 있지만 데이터를 올바르게 구성하여 도와야합니다.
- GPU가 정지되는 원인이되므로 많은 렌더링 상태 스위치를 사용하지 마십시오 (유사한 정점 데이터를 일괄 처리 함).
- 텍스처를 스위블하고 2의 거듭 제곱인지 확인하십시오. 이렇게하면 GPU의 텍스처 캐시 성능이 향상됩니다.
- 낮은 / 중간 / 높은 버전의 3D 모델을 최대한 상세하게 사용하고 카메라 플레이어와의 거리를 기반으로 전환합니다. 화면에 5 픽셀 만 있으면 고해상도 버전을 렌더링 할 수 있습니다.
답변
3D 게임은 눈을 속이는 데 뛰어납니다. 예를 들어, SSAO (screen space ambient occlusion)라는 기술이 있습니다.이 기술은 표면 불연속에 가까운 장면의 해당 부분을 음영 처리하여보다 사실적인 느낌을줍니다. 벽의 모서리를 보면 대부분의 경우 중심보다 약간 어둡게 나타납니다.
오히려 정확한 시뮬레이션을 기반으로하는 라디오 시티를 사용하여 동일한 효과를 얻을 수 있습니다. 라디오 시티는 또한 튀는 조명 등의 효과를 더 많이 고려할 것이지만 계산 비용이 많이 들기 때문에 레이트 레이싱 기법입니다.
이것은 하나의 예일뿐입니다. 실시간 컴퓨터 그래픽을위한 수백 개의 알고리즘이 있으며 기본적으로 좋은 근사치를 기반으로하며 일반적으로 많은 가정을합니다. 예를 들어, 공간 정렬은 속도, 카메라의 일반적인 위치 및 장면 형상의 변화량에 따라 매우 신중하게 선택해야합니다.
이러한 ‘최적화’는 엄청납니다 . 알고리즘을 효율적으로 구현하고 10 배 빠르게 실행할 수 있지만 비슷한 결과 ( “속임수”)를 생성하는 스마트 알고리즘을 선택하면 O (N ^ 4)에서 O ( log (N)).
실제 구현을 최적화하면 게임의 효율성이 향상되지만 선형 최적화 일뿐입니다.
답변
eeee!
나는이 질문이 오래되었다는 것을 알고 있지만 아무도 VSync를 언급하지 않았다는 것이 흥미 롭습니다!
60fps에서 게임의 CPU 사용량을 60fps에서 주전자 데모의 CPU 사용량과 비교했습니다.
둘 다 정확히 60fps로 실행되는 것이 분명하지 않습니까? 그 대답으로 이어집니다 …
두 앱 모두 vsync가 활성화 된 상태로 실행됩니다! 이는 렌더링 프레임 속도가 모니터의 “수직 공백 간격”으로 고정되어 있음을 나타냅니다 (덤). 그래픽 하드웨어 (및 / 또는 드라이버)는 최대로만 렌더링됩니다. 60fps 60fps = 60Hz (Hz = 초당) 재생 빈도. 따라서 아마도 오래되고 깜박 거리는 CRT 또는 일반적인 LCD 디스플레이를 사용하게 될 것입니다. 100Hz에서 실행되는 CRT에서는 아마도 최대 100Hz의 프레임 속도가 표시 될 것입니다. VSync는 LCD 디스플레이와 비슷한 방식으로 적용됩니다 (일반적으로 60Hz의 재생률을 가짐).
따라서 주전자 데모는 실제로 훨씬 더 효율적으로 실행될 수 있습니다! CPU 시간의 30 % (GTA IV의 경우 50 % CPU 시간과 비교)를 사용하는 경우 각 프레임 당 CPU 시간이 줄어들고 다음 수직 공백 간격 동안 더 오래 기다립니다. 두 앱을 비교하려면 vsync를 비활성화하고 다시 측정해야합니다 (두 앱 모두에 대해 훨씬 높은 fps를 측정 함).
때로는 vsync를 비활성화해도 괜찮습니다 (대부분의 게임에는 설정에 옵션이 있음). vsync가 비활성화 된 경우 때때로 “인쇄물을 찢는”현상이 나타납니다.
자세한 내용과 그 이유는 Wikipedia에서 확인할 수 있습니다. http://en.wikipedia.org/wiki/Vsync
답변
여기에 많은 답변 이 왜 내가 왜 간단한 질문에 대답 할 것인지에 대한 훌륭한 표시를 제공하지만
- GTA4, 첫 주에 4 억 달러 걸렸다
- 크라이 테크 (Crytech) 는 엔비디아 ( NVidia )가 전시회에서 ‘쇼 오프’할 수 있도록 매우 인상적인 그래픽 데모를 작성했습니다. 그 결과 인상으로 인해 FarCry가 될 제품을 만들 수있었습니다.
- Valve의 2005 년 매출과 영업 이익 은 각각 7 천 5 백만 5 천 5 백만 달러로 표시되었습니다.
아마도 가장 좋은 예 (확실히 알려진 것 중 하나)는 ID 소프트웨어 일 것입니다. 그들은 Keen (3D 이전) 사령관 시절에 그래픽 적으로 우월한 최신 하드웨어 (이 경우 EGA 그래픽 카드!)에 의존하더라도 무언가 1 을 달성하는 영리한 방법을 제시하는 것을 매우 일찍 깨달았 습니다 . 이것이 당신의 게임을 돋보이게 할 경쟁입니다. 이것은 사실이지만 그들은 새로운 게임과 콘텐츠 자체를 개발하지 않고 기술을 라이센스 할 수있어 차세대 엔진을 개발하고 개구리 경쟁을 다시 뛰어 넘을 수있는 동안 다른 사람들로부터 수입을 얻을 수 있음을 깨달았습니다. .
이 프로그래머들의 능력 (비즈니스에 정통한 사람들과 결합)은 그들이 부자가되게하는 것입니다.
그것은 그런 사람들에게 동기를 부여하는 것이 반드시 돈이 아니라고 말했다. 성취하고 성취하려는 욕망만큼이나 가능성이 높습니다. 그들이 초기에 벌어 들인 돈은 이제 그들이 즐기는 것에 헌신 할 시간이 있다는 것을 의미합니다. 그리고 많은 사람들이 외부 관심사를 가지고 있지만 거의 모든 프로그램은 여전히 프로그램을 유지하고 마지막 반복보다 더 나은 방법을 찾으려고 노력합니다.
간단히 찻 주전자 데모를 작성한 사람에게 다음 문제 중 하나 이상이있을 수 있습니다.
- 적은 시간
- 적은 자원
- 적은 보상 인센티브
- 내부 및 외부 경쟁 감소
- 적은 목표
- 적은 재능
마지막은 가혹한 들릴지 이 있지만, 분명 더 나은 다른 사람보다 어떤 사람이, 벨 곡선 때로는 극단적 인 끝을 가지고 있고 그 기술로 수행되는 정도의 대응 극단에 매료되는 경향이있다.
더 적은 목표가 실제로 주된 이유 일 수 있습니다. 찻 주전자 데모의 목표는 바로 데모였습니다. 그러나 프로그래머 기술 3 의 데모는 아닙니다 . (대형) OS의 작은 패싯 하나,이 경우 DX 렌더링 데모입니다.
데모를 보는 사람들에게는 그것이 더 좋아 보이지 않는 한 필요 이상으로 많은 CPU를 사용하지 않았습니다. 수혜자가 없을 때 폐기물을 제거 할 인센티브는 없습니다. 이에 비해 게임은 더 나은 AI, 더 나은 사운드, 더 많은 다각형, 더 많은 효과를위한 여분의주기를 원합니다.
- 이 경우 PC 하드웨어에서 부드러운 스크롤
- 나보다 더 가능성이 높아서
- 엄밀히 말하면 관리자에게도 데모가되었지만 시간과 / 또는 시각적 품질은 여기에 있습니다.
답변
몇 가지 이유 때문에
- 3D 게임 엔진은 고도로 최적화되어 있습니다
- 대부분의 작업은 그래픽 어댑터로 수행됩니다.
- 50 % 흠, 당신이 듀얼 코어를 가지고 있고 하나의 코어 만이 사용된다고 생각합니다 😉
편집 : 숫자를 줄이려면
NV-6800 GPU가 장착 된 2.8Ghz Athlon-64. 결과는 다음과 같습니다.
- CPU : 72.78 Mflops
- GPU : 2440.32 Mflops
답변
때때로 장면이 보이는 것보다 더 진행될 수 있습니다. 예를 들어, 수천 개의 정점, 환경 매핑, 범프 매핑 및 기타 복잡한 픽셀 쉐이더가 모두 동시에 회전하는 찻 주전자는 모두 많은 처리 과정에 해당합니다. 이 찻 주전자 데모는 여러 가지 특수 효과를 보여주기 위해 만들어졌습니다. 또한 절대 성능이 목표가 아닌 경우 항상 GPU를 최대한 활용하는 것은 아닙니다.
게임에서 비슷한 효과가 나타날 수 있지만 일반적으로 프레임 속도를 최대화하기 위해 손상된 방식으로 수행됩니다. 이러한 최적화는 게임에서 볼 수있는 모든 것으로 확장됩니다. 문제는 “최소의 처리 능력으로 가장 훌륭하고 사실적인 장면을 어떻게 만들 수 있습니까?” 이것이 게임 프로그래머를 최고의 최적화 도구로 만드는 이유입니다.
