Làm thế nào là trò chơi 3D rất hiệu quả? [đóng cửa]


188

Có một điều tôi chưa bao giờ hiểu. Làm thế nào một trò chơi PC lớn tuyệt vời như GTA IV có thể sử dụng 50% CPU của tôi và chạy ở tốc độ 60fps trong khi bản demo DX của Tellow xoay @ 60fps sử dụng 30%?


124
Tôi không thấy có gì sai với câu hỏi này - việc tò mò về cách các nhà phát triển khác đã hoàn thành những điều nhất định là điều hoàn toàn tự nhiên. Chúng ta nên khuyến khích sự tò mò này, không trừng phạt nó với số phiếu gần.
John Women'sella

2
@ user146780: ai đã đặt câu hỏi ... Những lập trình viên giỏi nhất tôi từng gặp khi làm việc trong CGI. Gurus từ SGI, những người làm việc về việc làm tê liệt Adobe Photoshop, v.v. Mọi người ở đây không nhận ra việc viết một trò chơi hiện đại cũng như các lập trình viên giỏi đến mức nào. Nếu bạn muốn có một trải nghiệm khiêm tốn, hãy nhìn những gì người Đức từ Cryotech đã làm với động cơ Crysis. Có video trên Youtube. Bạn chỉ đơn giản là sẽ không tin điều đó. Nó không chỉ là về "sử dụng octrees". Thông thường những lập trình viên này đơn giản là giỏi hơn nhiều so với các lập trình viên trung bình. Và bạn có thể đặt cược rằng các lập trình viên GT4 rất tốt.
Cú phápT3rr0r

2
bạn có gta4 chạy ở tốc độ 60fps!? GV! gta4 là một POS hoạt động khá kém, tôi cũng nghe nói Force đã giải phóng. Tôi muốn nói Euphoria là thủ phạm. Thành thật mà nói, "sử dụng CPU" là một cách rất kém để so sánh, chỉ cần bỏ tốc độ khung hình và xem cái nào chạy nhanh nhất, đó là cách thích hợp để làm điều đó. Ngoài ra, hãy nhớ rằng, "trò chơi phức tạp" này trong khi nó có thể hiển thị rất nhiều thứ, vẫn chỉ có một giá trị màn hình và nếu nó được hiển thị theo đúng thứ tự, bạn có thể sẽ có cùng số lượng pixel hoạt động như bạn Bản demo "đơn giản" và pixel hoạt động thực sự là thứ giết chết nó.
mờ

8
Bạn cần một trình lược tả cho bạn biết GPU (Bộ xử lý đồ họa) được sử dụng bao nhiêu. Tôi đặt cược GTA IV cho bạn thấy ~ 99% và bản demo 3%.
0scar

Từ kinh nghiệm, khoảng 10% lập trình viên trò chơi tôi từng làm việc đều tốt, phần còn lại ở mức trung bình tốt nhất. Một số hoàn toàn bất tài.
Skizz

Câu trả lời:


69

Nói chung, đó là vì

  1. Các trò chơi đang được tối ưu về những gì họ cần kết xuất và
  2. Họ tận dụng lợi thế đặc biệt của phần cứng của bạn.

Chẳng hạn, một tối ưu hóa dễ dàng bạn có thể thực hiện liên quan đến việc không thực sự cố gắng vẽ những thứ không thể nhìn thấy. Hãy xem xét một cảnh phức tạp như cảnh quan thành phố từ Grand Theft Auto IV . Trình kết xuất không thực sự kết xuất tất cả các tòa nhà và cấu trúc. Thay vào đó, nó chỉ hiển thị những gì máy ảnh có thể nhìn thấy. Nếu bạn có thể bay vòng ra phía sau những tòa nhà tương tự, đối diện với máy ảnh ban đầu, bạn sẽ thấy cấu trúc vỏ rỗng được xây dựng một nửa. Mọi điểm mà máy ảnh không thể nhìn thấy đều không được hiển thị - vì bạn không thể nhìn thấy nó, nên không cần phải cố gắng hiển thị cho bạn.

Hơn nữa, các hướng dẫn được tối ưu hóa và các kỹ thuật đặc biệt tồn tại khi bạn đang phát triển dựa trên một bộ phần cứng cụ thể, để cho phép tăng tốc thậm chí tốt hơn.

Phần khác của câu hỏi của bạn là tại sao một bản demo sử dụng rất nhiều CPU:

... trong khi bản demo DX của Ấm trà xoay @ 60fps sử dụng con số khổng lồ 30%?

Thông thường các bản demo của API đồ họa (như dxdemo) sẽ quay trở lại với cái được gọi là trình kết xuất phần mềm khi phần cứng của bạn không hỗ trợ tất cả các tính năng cần thiết để hiển thị một ví dụ đẹp. Các tính năng này có thể bao gồm những thứ như bóng tối, phản xạ, dò tia, vật lý, et cetera.

Điều này bắt chước chức năng của một thiết bị phần cứng hoàn toàn đầy đủ tính năng không có khả năng tồn tại, để thể hiện tất cả các tính năng của API. Nhưng vì phần cứng không thực sự tồn tại, thay vào đó, nó chạy trên CPU của bạn. Điều đó không hiệu quả hơn nhiều so với việc ủy ​​thác cho một card đồ họa - do đó mức sử dụng CPU cao của bạn.


3
Một bản demo DX cũng sử dụng phần cứng của bạn. Vậy, "có gì đặc biệt"?
tur1ng

3
nhưng một bản demo không chắc là tối ưu về nó.
TiếtBio

2
@ tur1ng, ví dụ bản demo ấm trà, có thể đã cho phép phản chiếu , đổ bóng và các hiệu ứng khác.
Nick Dandoulakis

2
Ấm trà có thể có nhiều đa giác hơn cảnh GTA4. Thực tế là, nút cổ chai hiện tại trong kết xuất đồ họa có nhiều hiệu ứng kết cấu hơn như các kỹ thuật bắt nguồn từ ánh xạ để thêm chi tiết và các hiệu ứng kết xuất bài khác.
Klaim

5
Hoạ tiết - ấm trà đang được tạo ra từ một số lượng lớn các hình tam giác riêng lẻ với tất cả các quy tắc và tương tác ánh sáng. Những gì trông giống như một thế giới 3d cực kỳ phức tạp trong trò chơi thường là những khối lớn khá đơn giản được bao phủ bởi một bức tranh chi tiết. Rất nhiều '3d' là bóng thông minh và hiệu ứng nghệ thuật phối cảnh trong hình ảnh 2d tĩnh được vẽ trên hình 3d
Martin Beckett

96

Kiên nhẫn, kỹ năng kỹ thuật và sức bền.

Điểm đầu tiên là DX Demo chủ yếu là một trợ giúp giảng dạy nên nó được thực hiện cho rõ ràng chứ không phải tốc độ thực hiện.

Đây là một chủ đề khá lớn để cô đọng nhưng phát triển trò chơi chủ yếu là tìm hiểu dữ liệu của bạn và đường dẫn thực hiện của bạn đến một mức độ gần như bệnh lý.

  1. Mã của bạn được thiết kế xung quanh hai thứ - dữ liệu của bạn và phần cứng mục tiêu của bạn.
  2. Mã nhanh nhất là mã không bao giờ được thực thi - sắp xếp dữ liệu của bạn thành các đợt và chỉ thực hiện các thao tác đắt tiền trên dữ liệu bạn cần
  3. Cách bạn lưu trữ dữ liệu của mình là chính - nhằm mục đích truy cập liên tục, điều này cho phép bạn xử lý hàng loạt ở tốc độ cao.
  4. Parellise mọi thứ bạn có thể có thể
  5. CPU hiện đại nhanh, RAM hiện đại rất chậm. Bộ nhớ cache bị chết người.
  6. Đẩy càng nhiều GPU càng tốt - nó có bộ nhớ cục bộ nhanh để có thể lướt qua dữ liệu nhưng bạn cần phải giúp nó bằng cách sắp xếp dữ liệu của bạn một cách chính xác.
  7. Tránh thực hiện nhiều công tắc kết xuất (một lần nữa bó dữ liệu đỉnh tương tự lại với nhau) vì điều này khiến GPU bị đình trệ
  8. Làm mờ kết cấu của bạn và đảm bảo chúng là sức mạnh của hai - điều này cải thiện hiệu suất bộ đệm kết cấu trên GPU.
  9. Sử dụng các mức độ chi tiết nhiều nhất có thể - các phiên bản mô hình 3D thấp / trung bình / cao và chuyển đổi dựa trên khoảng cách từ trình phát camera - không có điểm nào hiển thị phiên bản độ phân giải cao nếu chỉ có 5 pixel trên màn hình.

39

Trò chơi 3D rất hay trong việc đánh lừa thị giác của bạn. Ví dụ, có một kỹ thuật gọi là tắc xung quanh không gian màn hình (SSAO) sẽ mang lại cảm giác chân thực hơn bằng cách che đi những phần của cảnh gần với sự gián đoạn bề mặt. Nếu bạn nhìn vào các góc của bức tường của bạn, bạn sẽ thấy chúng có vẻ hơi tối hơn so với các trung tâm trong hầu hết các trường hợp.

Hiệu ứng rất giống nhau có thể đạt được bằng cách sử dụng tính phóng xạ, dựa trên mô phỏng khá chính xác. Radiosity cũng sẽ tính đến nhiều hiệu ứng hơn của đèn nảy, v.v. nhưng nó đắt tiền về mặt tính toán - đó là một kỹ thuật dò tia.

Đây chỉ là một ví dụ. Có hàng trăm thuật toán cho đồ họa máy tính thời gian thực và về cơ bản chúng dựa trên các xấp xỉ tốt và thường đưa ra rất nhiều giả định. Ví dụ, sắp xếp không gian phải được chọn rất cẩn thận tùy thuộc vào tốc độ, vị trí điển hình của máy ảnh cũng như số lượng thay đổi đối với hình dạng cảnh.

Những 'tối ưu hóa' này rất lớn - bạn có thể thực hiện một thuật toán hiệu quả và làm cho nó chạy nhanh hơn 10 lần, nhưng việc chọn một thuật toán thông minh tạo ra kết quả tương tự ("gian lận") có thể khiến bạn đi từ O (N ^ 4) đến O ( log (N)).

Tối ưu hóa việc thực hiện thực tế là những gì làm cho trò chơi thậm chí hiệu quả hơn, nhưng đó chỉ là tối ưu hóa tuyến tính.


30

Eeeeek!

Tôi biết rằng câu hỏi này đã cũ, nhưng thật thú vị khi không ai nhắc đến VSync !!! ???

Bạn đã so sánh mức sử dụng CPU của trò chơi ở mức 60fps với mức sử dụng CPU của bản demo ấm trà ở mức 60fps.

Không rõ ràng, cả hai đều chạy (nhiều hơn hoặc ít hơn) ở chính xác 60fps? Điều đó dẫn đến câu trả lời ...

Cả hai ứng dụng đều chạy với vsync được kích hoạt! Điều này có nghĩa là (chết lặng) rằng tốc độ khung hình kết xuất bị khóa với "khoảng trống dọc" của màn hình của bạn. Phần cứng đồ họa (và / hoặc trình điều khiển) sẽ chỉ hiển thị tối đa. 60 khung hình / giây. Tốc độ làm mới 60fps = 60Hz (Hz = mỗi giây). Vì vậy, bạn có thể sử dụng CRT khá cũ, nhấp nháy hoặc màn hình LCD phổ biến. Trên CRT chạy ở tần số 100Hz, bạn có thể sẽ thấy tốc độ khung hình lên tới 100Hz. VSync cũng áp dụng theo cách tương tự với màn hình LCD (chúng thường có tốc độ làm mới 60Hz).

Vì vậy, bản demo ấm trà thực sự có thể chạy hiệu quả hơn nhiều! Nếu nó sử dụng 30% thời gian CPU (so với 50% thời gian CPU cho GTA IV), thì có lẽ nó sử dụng ít thời gian cpu hơn cho mỗi khung hình và chỉ chờ lâu hơn cho khoảng trống dọc tiếp theo. Để so sánh cả hai ứng dụng, bạn nên tắt vsync và đo lại (bạn sẽ đo khung hình / giây cao hơn nhiều cho cả hai ứng dụng).

Đôi khi bạn có thể tắt vsync (hầu hết các trò chơi đều có tùy chọn trong cài đặt của nó). Đôi khi bạn sẽ thấy "xé đồ tạo tác" khi vsync bị tắt.

Bạn có thể tìm thấy chi tiết về nó và tại sao nó được sử dụng tại wikipedia: http://en.wikipedia.org/wiki/Vsync


Tôi đồng ý, để có được sự so sánh tốt hơn, bạn nên tắt vsync. Tuy nhiên, gốc rễ của vấn đề vẫn đứng vững. 30% cho việc sử dụng ấm trà so với 50% sử dụng cpu cho trò chơi là một sự khác biệt nhỏ hơn so với người ta thường mong đợi. Nhưng tôi nhớ vào thời kỳ đầu khi bản đồ môi trường bắt đầu trở nên phổ biến và bản demo nVidia thú vị vào thời điểm đó là một ấm trà được lập bản đồ môi trường xoay quanh. Những bản demo đó thường sẽ không đạt 60 fps trở lại trong ngày. Tôi đoán quan điểm của tôi là những bản demo ấm trà này thường đẩy ranh giới của một hiệu ứng hình ảnh mới.
Steve Wortham

25

Trong khi nhiều câu trả lời ở đây cung cấp chỉ dẫn tuyệt vời về cách tôi sẽ trả lời câu hỏi đơn giản hơn tại sao

Có lẽ ví dụ tốt nhất (chắc chắn là một trong những phần mềm được biết đến nhiều nhất) là phần mềm Id. Họ đã nhận ra từ rất sớm, vào thời của Tư lệnh Keen (trước cả 3D) đã nghĩ ra một cách thông minh để đạt được thứ 1 , ngay cả khi nó dựa vào phần cứng hiện đại (trong trường hợp này là một card đồ họa EGA!) sự cạnh tranh mà điều này sẽ làm cho trò chơi của bạn nổi bật. Điều này là đúng nhưng họ nhận ra thêm rằng, thay vì phải tự mình tìm ra các trò chơi và nội dung mới, họ có thể cấp phép cho công nghệ, nhờ đó có được thu nhập từ những người khác trong khi có thể phát triển thế hệ động cơ tiếp theo và do đó lại cạnh tranh với ếch .

Khả năng của những lập trình viên này (kết hợp với hiểu biết về kinh doanh) là những gì làm cho họ trở nên giàu có.

Điều đó nói rằng nó không nhất thiết là tiền thúc đẩy những người như vậy. Nó có khả năng giống như mong muốn đạt được, để hoàn thành. Số tiền họ kiếm được trong những ngày đầu chỉ đơn giản là bây giờ họ có thời gian để dành cho những gì họ thích. Và trong khi nhiều người có lợi ích bên ngoài, hầu hết tất cả vẫn lập trình và cố gắng tìm ra cách để làm tốt hơn lần lặp cuối cùng.

Nói một cách đơn giản, người đã viết bản demo ấm trà có thể có một hoặc nhiều vấn đề sau:

  • ít thời gian hơn
  • ít tài nguyên hơn
  • khuyến khích phần thưởng ít hơn
  • ít cạnh tranh bên trong và bên ngoài
  • mục tiêu thấp hơn
  • ít tài năng

Cái cuối cùng nghe có vẻ khắc nghiệt 2 nhưng rõ ràng có một số người giỏi hơn những người khác, đôi khi những đường cong hình chuông có kết thúc cực đoan và họ có xu hướng bị thu hút bởi những kết thúc cực đoan tương ứng của những gì được thực hiện với kỹ năng đó.

Các mục tiêu nhỏ hơn thực sự có khả năng là lý do chính. Mục tiêu của bản demo ấm trà chỉ là một bản demo. Nhưng không phải là bản demo của kỹ năng lập trình 3 . Nó sẽ là bản demo của một khía cạnh nhỏ của HĐH (lớn), trong trường hợp này là kết xuất DX.

Đối với những người xem bản demo, nó sẽ không sử dụng CPU nhiều hơn mức yêu cầu miễn là nó trông đủ tốt. Sẽ không có động cơ để loại bỏ chất thải khi sẽ không có người thụ hưởng. So sánh một trò chơi sẽ thích có chu kỳ dự phòng cho AI tốt hơn, âm thanh tốt hơn, đa giác hơn, nhiều hiệu ứng hơn.


  1. trong trường hợp đó, cuộn trơn tru trên phần cứng PC
  2. Có khả năng nhiều hơn tôi vì vậy chúng tôi rõ ràng về điều đó
  3. nói đúng ra nó cũng là một bản demo cho người quản lý của anh ấy / cô ấy, nhưng một lần nữa, ổ đĩa ở đây sẽ là thời gian và / hoặc chất lượng hình ảnh.

17

Vì một vài lý do

  • Công cụ trò chơi 3D được tối ưu hóa cao
  • hầu hết các công việc được thực hiện bởi bộ điều hợp đồ họa của bạn
  • 50% Hừm, để tôi đoán bạn có lõi kép và chỉ có một lõi được sử dụng ;-)

EDIT: Để cho một vài số

Athlon-64 2.8 Ghz với GPU NV-6800. Kết quả là:

  • CPU: 72,78 Mflops
  • GPU: 2440,32 Mflops

@stacker: bạn có ngụ ý rằng tất cả các tính toán diễn ra trong các trò chơi 3D nổi tiếng không được thực hiện bởi GPU thực sự là đơn luồng và, trong một số trường hợp, có thể lấp đầy 100% CPU không? Có nghĩa là sự hoàn hảo của trò chơi sẽ bị ràng buộc với một lõi không phải GPU? Tôi thấy điều đó rất khó tin.
Cú phápT3rr0r

4
Nó không ngụ ý chương trình là đơn luồng - nó chỉ ngụ ý rằng ít nhất một luồng đang diễn ra nhanh nhất có thể. Điều này là hợp lý, bởi vì tại sao bạn muốn nó đi chậm hơn? Mặt khác, nhiều trò chơi gần như hoàn toàn đơn luồng. Rất khó để viết các mô phỏng phức tạp theo cách hiệu quả khi đa luồng vì tình huống điển hình trong các hệ thống phân tán / đồng thời chấp nhận độ trễ nhiều hơn để mua nhiều thông lượng hơn là không tốt cho một trò chơi được cho là đáp ứng.
Kylotan

8

Đôi khi một cảnh có thể có nhiều diễn ra hơn nó xuất hiện. Ví dụ, một ấm trà xoay với hàng ngàn đỉnh, ánh xạ môi trường, ánh xạ va chạm và các bóng đổ pixel phức tạp khác, tất cả được hiển thị đồng thời lên tới rất nhiều quá trình xử lý. Rất nhiều lần những bản demo ấm trà này chỉ đơn giản là để thể hiện một số loại hiệu ứng đặc biệt. Không phải lúc nào họ cũng có thể sử dụng GPU tốt nhất khi hiệu suất tuyệt đối không phải là mục tiêu.

Trong một trò chơi, bạn có thể thấy các hiệu ứng tương tự nhưng chúng thường được thực hiện theo cách bị xâm phạm nhằm nỗ lực tối đa hóa tốc độ khung hình. Những tối ưu hóa này mở rộng đến mọi thứ bạn thấy trong trò chơi. Vấn đề trở thành, "Làm thế nào chúng ta có thể tạo ra một cảnh ngoạn mục và thực tế nhất với sức mạnh xử lý ít nhất?" Đó là những gì làm cho các lập trình viên trò chơi một số tối ưu hóa tốt nhất xung quanh.


4
  1. Quản lý cảnh. cây kd, loại bỏ bực bội, bsps, hộp giới hạn gia truyền, bộ tầm nhìn một phần.
  2. Chúa ơi. Chuyển đổi các phiên bản chi tiết thấp hơn để thay thế cho các đối tượng ở xa.
  3. Kẻ mạo danh. Giống như LOD nhưng thậm chí không phải là một đối tượng chỉ là một hình ảnh hoặc 'bảng quảng cáo'.
  4. SIMD.
  5. Quản lý bộ nhớ tùy chỉnh. Bộ nhớ sắp xếp, ít phân mảnh.
  6. Cấu trúc dữ liệu tùy chỉnh (nghĩa là không có STL, tạo khuôn tương đối tối thiểu).
  7. Lắp ráp ở những nơi, chủ yếu cho SIMD.

4

Trong tất cả các câu trả lời đủ điều kiện và tốt được đưa ra, câu hỏi vẫn còn thiếu: Bộ đếm sử dụng CPU của Windows không đáng tin cậy lắm. Tôi đoán rằng bản demo ấm trà đơn giản này chỉ gọi chức năng kết xuất trong vòng lặp nhàn rỗi, chặn tại bộ đệm trao đổi.

Bây giờ bộ đếm sử dụng CPU của Windows chỉ xem xét thời gian sử dụng CPU trong mỗi quy trình, chứ không phải thời gian sử dụng CPU này. Hãy thử thêm một

Sleep(0);

ngay sau khi trở về từ chức năng kết xuất và so sánh.


Tôi đã có một bản demo ấm trà DX luôn sử dụng 25% CPU của mình. Hóa ra đó là vì tôi đã ở trong lõi tứ và, để khóa vòng lặp trò chơi ở tốc độ 60 khung hình / giây, tôi có một vòng lặp "Chúng ta đã ở đó chưa", liên tục kiểm tra thời gian. Tôi đã thay đổi nó thành chế độ ngủ (timeToNextFrame) và mức sử dụng cpu giảm xuống gần 0.
Jonathan Pierce

3

Ngoài ra, có rất nhiều thủ thuật từ quan điểm nghệ thuật để tiết kiệm sức mạnh tính toán. Trong nhiều trò chơi, đặc biệt là những trò chơi cũ hơn, bóng tối được định sẵn và "nướng" ngay vào kết cấu của bản đồ. Nhiều lần, các nghệ sĩ đã cố gắng sử dụng các mặt phẳng (hai hình tam giác) để thể hiện những thứ như cây cối và hiệu ứng đặc biệt khi nó trông giống nhau. Sương mù trong các trò chơi là một cách dễ dàng để tránh hiển thị các vật thể ở xa và thông thường, các trò chơi sẽ có nhiều độ phân giải của mọi đối tượng cho các chế độ xem xa, giữa và gần.


1

Cốt lõi của bất kỳ câu trả lời nào phải là thế này - Các phép biến đổi mà động cơ 3D thực hiện hầu hết được chỉ định trong phép cộng và phép nhân (đại số tuyến tính) (không có nhánh hoặc nhảy), các hoạt động của một bản vẽ một khung thường được chỉ định theo cách nhiều công việc của add-mul có thể được thực hiện song song. Các lõi GPU là các add-mul rất tốt và chúng có hàng chục hoặc hàng trăm lõi bổ sung.

CPU còn lại để làm những việc đơn giản - như AI và logic trò chơi khác.


1

Làm thế nào một trò chơi PC lớn tuyệt vời như GTA IV có thể sử dụng 50% CPU của tôi và chạy ở tốc độ 60fps trong khi bản demo DX của Tellow xoay @ 60fps sử dụng 30%?

Mặc dù GTA hoàn toàn có khả năng hiệu quả hơn so với bản demo DX, đo lường hiệu quả của CPU theo cách này về cơ bản là bị hỏng. Hiệu quả có thể được xác định, ví dụ như bao nhiêu công việc bạn làm trong một thời gian nhất định. Một ví dụ đơn giản: sinh ra một luồng trên mỗi CPU logic và để một vòng lặp vô hạn đơn giản chạy trên nó. Bạn sẽ nhận được mức sử dụng CPU là 100%, nhưng nó không hiệu quả, vì không có công việc hữu ích nào được thực hiện.

Điều này cũng dẫn đến một câu trả lời: làm thế nào một trò chơi có thể hiệu quả? Khi lập trình "những trò chơi lớn tuyệt vời", một nỗ lực lớn được dành để tối ưu hóa trò chơi về mọi mặt (mà ngày nay cũng thường bao gồm tối ưu hóa đa lõi). Đối với bản demo DX, điểm của nó không chạy nhanh, mà là thể hiện các khái niệm.


1

Tôi nghĩ bạn nên xem việc sử dụng GPU thay vì CPU ... Tôi cá rằng card đồ họa trong GTA IV bận rộn hơn nhiều so với mẫu Tellow (thực tế nó không hoạt động).

Có lẽ bạn có thể sử dụng một cái gì đó như màn hình này để kiểm tra xem:

http://doads.guru3d.com/Rivatuner-GPU-Monitor-Vista-Sidebar-Gadget-doad-2185.html

Ngoài ra tốc độ khung hình là điều cần xem xét, có thể mẫu ấm trà đang chạy ở tốc độ tối đa (có thể 1000fps) và hầu hết các trò chơi được giới hạn ở tần số làm mới của màn hình (khoảng 60fps).


1

Nhìn vào câu trả lời trên vsync; đó là lý do tại sao chúng đang chạy ở cùng tốc độ khung hình.

Thứ hai, CPU bị bỏ lỡ hàng đầu trong một trò chơi. Một lời giải thích đơn giản là vòng lặp trò chơi chính chỉ là một vòng lặp vô hạn:

while(1) { 
  update();
  render();
}

Ngay cả khi trò chơi của bạn (hoặc trong trường hợp này, ấm trà) không hoạt động nhiều, bạn vẫn ăn CPU trong vòng lặp của mình.

Cpu 50% trong GTA là "năng suất cao hơn" 30% trong bản demo, vì nhiều khả năng nó không hoạt động nhiều; nhưng GTA đang cập nhật hàng tấn chi tiết. Ngay cả việc thêm "Ngủ (10)" vào bản demo có thể sẽ làm giảm CPU của nó xuống một tấn.

Cuối cùng nhìn vào việc sử dụng GPU. Bản demo có thể chiếm <1% trên một thẻ video hiện đại trong khi GTA có thể sẽ chiếm đa số trong khi chơi trò chơi.

Nói tóm lại, điểm chuẩn và số đo của bạn không chính xác.


1

Bản demo ấm trà DX không sử dụng 30% CPU để thực hiện công việc hữu ích. Đó là chờ đợi bận rộn vì nó không có gì khác để làm.


0

Từ những gì tôi biết về loạt Unreal, một số quy ước bị phá vỡ như đóng gói. Mã được biên dịch thành mã byte hoặc trực tiếp thành mã máy tùy theo trò chơi. Ngoài ra, các đối tượng được kết xuất và đóng gói dưới dạng mắt lưới và những thứ như kết cấu, ánh sáng và bóng được định sẵn trong khi như một hoạt hình 3d thuần túy đòi hỏi điều này trong thời gian thực này. Khi trò chơi đang thực sự chạy, cũng có một số tối ưu hóa như chỉ hiển thị các phần có thể nhìn thấy của một đối tượng và chỉ hiển thị chi tiết kết cấu khi đóng lên. Cuối cùng, có thể các trò chơi video được thiết kế để tận dụng tốt nhất nền tảng tại một thời điểm nhất định (ví dụ: Intelx86 MMX / SSE, DirectX, ...).


0

Tôi nghĩ rằng có một phần quan trọng của câu trả lời bị thiếu ở đây. Hầu hết các câu trả lời cho bạn biết "Biết dữ liệu của bạn". Thực tế là bạn phải, theo cùng một cách và có cùng mức độ quan trọng, cũng phải biết:

  • CPU (đồng hồ và bộ nhớ cache)
  • Bộ nhớ (tần số và độ trễ)
  • Ổ cứng (về tốc độ và thời gian tìm kiếm)
  • GPU (# lõi, đồng hồ và Bộ nhớ / Bộ nhớ của nó)
  • Giao diện: Bộ điều khiển Sata, phiên bản PCI, v.v.

NHƯNG , trên hết, với các máy tính hiện đại hiện tại, bạn sẽ không bao giờ có thể phát video 1080p thực sự ở mức >> 30ftp (một hình ảnh 1080p duy nhất trong 64 bit sẽ mất 15 000 Ko / 14,9 MB). Lý do cho điều đó là do lấy mẫu / độ chính xác. Trò chơi video sẽ không bao giờ sử dụng độ chính xác kép (64 bit) cho pixel, hình ảnh, dữ liệu, v.v., mà sử dụng độ chính xác tùy chỉnh thấp hơn (~ 4-8 bit) và đôi khi độ chính xác thấp hơn với các kỹ thuật nội suy để cho phép tính toán hợp lý thời gian.

Ngoài ra còn có các kỹ thuật khác như Cắt dữ liệu (cả với chuẩn OpenGL và triển khai phần mềm), Nén dữ liệu, v.v. Hãy nhớ rằng GPU hiện tại có thể nhanh hơn 300 lần so với CPU hiện tại về khả năng phần cứng. Tuy nhiên, một lập trình viên giỏi có thể có được hệ số 10-20x, trừ khi vấn đề của bạn được tối ưu hóa hoàn toàn và hoàn toàn song song (đặc biệt là song song hóa nhiệm vụ).

Theo kinh nghiệm, tôi có thể nói với bạn rằng tối ưu hóa giống như một đường cong theo cấp số nhân. Để đạt được hiệu suất tối ưu, thời gian cần thiết có thể cực kỳ quan trọng.

Vì vậy, để quay trở lại ấm trà, bạn nên xem cách hình học được thể hiện, lấy mẫu và với độ chính xác mà Vs thấy trong GTA 5, về mặt hình học / kết cấu và quan trọng nhất là các chi tiết (độ chính xác, lấy mẫu, v.v.)

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.