내가 이해하지 못한 것이 있습니다. GTA IV와 같은 대형 PC 게임은 어떻게 CPU의 50 %를 사용하고 60fps로 실행할 수 있습니까? 60fps에서 회전하는 주전자의 DX 데모는 무려 30 %를 사용합니까?
내가 이해하지 못한 것이 있습니다. GTA IV와 같은 대형 PC 게임은 어떻게 CPU의 50 %를 사용하고 60fps로 실행할 수 있습니까? 60fps에서 회전하는 주전자의 DX 데모는 무려 30 %를 사용합니까?
답변:
일반적으로
예를 들어, 한 가지 쉬운 최적화는 실제로 볼 수없는 것을 그리려고하지 않는 것입니다. Grand Theft Auto IV 의 도시와 같은 복잡한 장면을 고려하십시오 . 렌더러는 실제로 모든 건물과 구조를 렌더링하지는 않습니다. 대신 카메라가 볼 수있는 것만 렌더링합니다. 동일한 카메라의 뒤쪽으로 날아 다니고 원래 카메라를 향하면 반쯤 뚫린 셸 구조가 보입니다. 카메라가 볼 수없는 모든 지점은 렌더링되지 않습니다. 볼 수 없기 때문에 카메라를 보여줄 필요가 없습니다.
또한 특정 하드웨어 세트에 대해 개발할 때 최적화 된 지침 및 특수 기술이 존재하므로 속도가 더욱 향상됩니다.
질문의 다른 부분은 데모가 많은 CPU를 사용하는 이유입니다.
... 60fps에서 회전하는 주전자의 DX 데모는 무려 30 %를 사용합니까?
하드웨어가 예쁜 예제를 보여주기 위해 필요한 모든 기능을 지원하지 않는 경우 그래픽 API 데모 (예 :)dxdemo
가 소프트웨어 렌더러 라고하는 것으로 대체 되는 것이 일반적입니다. 이러한 기능에는 그림자, 반사, 광선 추적, 물리학 등이 포함될 수 있습니다.
이는 API의 모든 기능을 과시하기 위해 존재하지 않는 완전한 기능을 갖춘 하드웨어 장치의 기능을 모방합니다. 그러나 하드웨어는 실제로 존재하지 않으므로 대신 CPU에서 실행됩니다. 그것은 그래픽 카드에 위임하는 것보다 훨씬 비효율적이므로 CPU 사용량이 높습니다.
인내, 기술 및 지구력.
첫 번째 요점은 DX 데모는 주로 교육 보조 자료이므로 실행 속도가 아닌 명확성을 위해 수행됩니다.
압축의 대상은 꽤 크지 만 게임 개발은 주로 데이터와 실행 경로를 거의 병리학적인 정도로 이해하는 것입니다.
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
여기에 많은 답변 이 왜 내가 왜 간단한 질문에 대답 할 것인지에 대한 훌륭한 표시를 제공하지만
아마도 가장 좋은 예 (확실히 알려진 것 중 하나)는 ID 소프트웨어 일 것입니다. 그들은 Keen (3D 이전) 사령관 시절에 그래픽 적으로 우월한 최신 하드웨어 (이 경우 EGA 그래픽 카드!)에 의존하더라도 무언가 1 을 달성하는 영리한 방법을 제시하는 것을 매우 일찍 깨달았 습니다 . 이것이 당신의 게임을 돋보이게 할 경쟁입니다. 이것은 사실이지만 그들은 새로운 게임과 콘텐츠 자체를 개발하지 않고 기술을 라이센스 할 수있어 차세대 엔진을 개발하고 개구리 경쟁을 다시 뛰어 넘을 수있는 동안 다른 사람들로부터 수입을 얻을 수 있음을 깨달았습니다. .
이 프로그래머들의 능력 (비즈니스에 정통한 사람들과 결합)은 그들이 부자가되게하는 것입니다.
그것은 그런 사람들에게 동기를 부여하는 것이 반드시 돈이 아니라고 말했다. 성취하고 성취하려는 욕망만큼이나 가능성이 높습니다. 그들이 초기에 벌어 들인 돈은 이제 그들이 즐기는 것에 헌신 할 시간이 있다는 것을 의미합니다. 그리고 많은 사람들이 외부 관심사를 가지고 있지만 거의 모든 프로그램은 여전히 프로그램을 유지하고 마지막 반복보다 더 나은 방법을 찾으려고 노력합니다.
간단히 찻 주전자 데모를 작성한 사람에게 다음 문제 중 하나 이상이있을 수 있습니다.
마지막은 가혹한 들릴지 이 있지만, 분명 더 나은 다른 사람보다 어떤 사람이, 벨 곡선 때로는 극단적 인 끝을 가지고 있고 그 기술로 수행되는 정도의 대응 극단에 매료되는 경향이있다.
더 적은 목표가 실제로 주된 이유 일 수 있습니다. 찻 주전자 데모의 목표는 바로 데모였습니다. 그러나 프로그래머 기술 3 의 데모는 아닙니다 . (대형) OS의 작은 패싯 하나,이 경우 DX 렌더링 데모입니다.
데모를 보는 사람들에게는 그것이 더 좋아 보이지 않는 한 필요 이상으로 많은 CPU를 사용하지 않았습니다. 수혜자가 없을 때 폐기물을 제거 할 인센티브는 없습니다. 이에 비해 게임은 더 나은 AI, 더 나은 사운드, 더 많은 다각형, 더 많은 효과를위한 여분의주기를 원합니다.
몇 가지 이유 때문에
편집 : 숫자를 줄이려면
NV-6800 GPU가 장착 된 2.8Ghz Athlon-64. 결과는 다음과 같습니다.
때때로 장면이 보이는 것보다 더 진행될 수 있습니다. 예를 들어, 수천 개의 정점, 환경 매핑, 범프 매핑 및 기타 복잡한 픽셀 쉐이더가 모두 동시에 회전하는 찻 주전자는 모두 많은 처리 과정에 해당합니다. 이 찻 주전자 데모는 여러 가지 특수 효과를 보여주기 위해 만들어졌습니다. 또한 절대 성능이 목표가 아닌 경우 항상 GPU를 최대한 활용하는 것은 아닙니다.
게임에서 비슷한 효과가 나타날 수 있지만 일반적으로 프레임 속도를 최대화하기 위해 손상된 방식으로 수행됩니다. 이러한 최적화는 게임에서 볼 수있는 모든 것으로 확장됩니다. 문제는 "최소의 처리 능력으로 가장 훌륭하고 사실적인 장면을 어떻게 만들 수 있습니까?" 이것이 게임 프로그래머를 최고의 최적화 도구로 만드는 이유입니다.
주어진 모든 정답과 좋은 답변으로 여전히 중요한 답이 누락되었습니다. Windows의 CPU 사용률 카운터는 매우 신뢰할 수 없습니다. 이 간단한 찻 주전자 데모는 유휴 루프에서 렌더링 함수를 호출하여 버퍼 스왑을 차단한다고 생각합니다.
이제 Windows CPU 사용률 카운터는 각 프로세스에서 소비 된 CPU 시간을 확인하지만이 CPU 시간이 사용되는 방식은 아닙니다. 추가해보십시오
Sleep(0);
렌더링 함수에서 돌아온 직후에 비교하십시오.
GTA IV와 같은 대형 PC 게임은 어떻게 CPU의 50 %를 사용하고 60fps로 실행할 수 있습니까? 60fps에서 회전하는 주전자의 DX 데모는 무려 30 %를 사용합니까?
GTA는 DX 데모보다 훨씬 효율적일 수 있지만 이런 식으로 CPU 효율을 측정하는 것은 본질적으로 실패합니다. 효율성은 예를 들어 주어진 시간당 얼마나 많은 일을하는지에 따라 정의 될 수 있습니다. 간단한 반례 : 논리 CPU 당 하나의 스레드를 생성하고 간단한 무한 루프가 실행되도록하십시오. CPU 사용률은 100 %이지만 유용한 작업이 수행되지 않아 비효율적입니다.
또한 게임이 어떻게 효율적일 수 있는가? "큰 게임"을 프로그래밍 할 때는 모든 측면에서 게임을 최적화하기 위해 많은 노력을 기울이고 있습니다 (현재는 멀티 코어 최적화도 포함됩니다). DX 데모의 경우 요점은 빠르게 실행되는 것이 아니라 개념을 보여줍니다.
CPU가 아닌 GPU 사용률을 살펴 봐야한다고 생각합니다 ... 그래픽 카드가 주전자 샘플보다 GTA IV에서 훨씬 더 번거 롭습니다 (실제로 유휴 상태 여야 함).
이 모니터와 같은 것을 사용하여 확인할 수 있습니다.
http://downloads.guru3d.com/Rivatuner-GPU-Monitor-Vista-Sidebar-Gadget-download-2185.html
또한 프레임 속도는 고려해야 할 사항입니다. 주전자 샘플이 최고 속도 (아마 1000fps)로 실행 중일 수 있으며 대부분의 게임은 모니터의 새로 고침 빈도 (약 60fps)로 제한됩니다.
vsync에 대한 답변을보십시오. 이것이 동일한 프레임 속도로 실행되는 이유입니다.
둘째, CPU가 게임에서 앞장서고 있습니다. 간단한 설명은 메인 게임 루프가 무한 루프라는 것입니다.
while(1) {
update();
render();
}
게임 (또는이 경우 주전자)이 많은 일을하지 않더라도 여전히 루프에서 CPU를 사용하고 있습니다.
GTA의 50 % CPU는 "생산성이 높고"데모의 30 %인데, 그다지 많이하지 않을 것입니다. 그러나 GTA는 수많은 정보를 업데이트하고 있습니다. 데모에 "Sleep (10)"을 추가해도 CPU가 1 톤 줄어 듭니다.
마지막으로 GPU 사용량을 살펴보십시오. 데모는 아마도 현대 비디오 카드에서 <1 %를 차지할 것이고 GTA는 아마도 게임을하는 동안 대부분을 차지할 것입니다.
요컨대, 벤치 마크 및 측정이 정확하지 않습니다.
내가 Unreal 시리즈에 대해 알고있는 것에서 일부 규칙은 캡슐화처럼 깨졌습니다. 코드는 게임에 따라 바이트 코드로 또는 머신 코드로 직접 컴파일됩니다. 또한 객체는 메쉬 형태로 렌더링되고 패키징되며 텍스처, 조명 및 그림자와 같은 것은 미리 계산되지만 순수한 3D 애니메이션은이를 실시간으로 요구합니다. 게임이 실제로 실행 중일 때는 오브젝트의 보이는 부분 만 렌더링하고 가까이있을 때만 텍스처 디테일을 표시하는 등의 최적화도 있습니다. 마지막으로 비디오 게임이 주어진 시간에 플랫폼을 최대한 활용하도록 설계되었을 가능성이 높습니다 (예 : Intelx86 MMX / SSE, DirectX 등).
나는 여기에 누락 된 답변의 중요한 부분이 있다고 생각합니다. 대부분의 답변은 "데이터를 알고 있습니다"라고 알려줍니다. 사실, 당신도 같은 방식으로 그리고 같은 정도의 중요성을 가지고 당신의 것을 알아야합니다 :
그러나 현재 최신 컴퓨터에서는 >> 30ftp에서 실제 1080p 비디오를 재생할 수 없습니다 (64 비트의 단일 1080p 이미지는 15 000 Ko / 14.9 MB 필요). 그 이유는 샘플링 / 정밀도 때문입니다. 비디오 게임은 픽셀, 이미지, 데이터 등에 대해 배정도 (64 비트)를 사용하지 않고,보다 낮은 사용자 지정 정밀도 (~ 4-8 비트)를 사용하며 보간 기술로 리 스케일 된 정밀도를 사용하여 합리적인 계산이 가능합니다. 시각.
데이터 클리핑 (OpenGL 표준 및 소프트웨어 구현 모두), 데이터 압축 등과 같은 다른 기술도 있습니다. 하드웨어 성능 측면에서 현재 GPU가 현재 CPU보다 300 배 이상 빠를 수 있습니다. 그러나 문제가 완전히 최적화되고 완전히 병렬화 될 수있는 경우 (특히 작업 병렬화 가능)를 제외하고 우수한 프로그래머는 10-20 배의 요소를 얻을 수 있습니다.
경험상 최적화는 지수 곡선과 같다고 말할 수 있습니다. 최적의 성능에 도달하려면 필요한 시간이 매우 중요 할 수 있습니다.
따라서 주전자로 돌아가려면 지오메트리 / 텍스처 및 가장 중요한 세부 사항 (정밀도, 샘플링 등) 측면에서 지오메트리가 표현, 샘플링 및 GTA 5에서 볼 수있는 정밀성에 어떤 영향을 미치는지 확인해야합니다.