精華區beta PlayStation 關於我們 聯絡資訊
再怎麼好的硬體,沒有好好撰寫的遊戲軟體搭配,也是白搭 高檔的硬體,也可以因為遊戲開發者的沒有好好優化 而展現低檔次的效能 PC的硬體組合五花八門 其實對PC遊戲開發者而言是很辛苦的 (就像Android手機對遊戲開發者一樣) 唯一能夠廣為人接受的方式 就是提供各種不同的遊戲設定 讓玩家調整出最適合自己PC的組態 暴風雪算是很有良心的了 不但針對各種視覺特效提供不同等級的設定 每個項目還有說明文字,告訴玩家各選項是針對什麼硬體做調整 他們大可像大部分的遊戲一樣 簡單提供Low, Medium, High三種Graphics Settings選項即可 如同bachelorwhc說的一樣 可以把遊戲主機當作人家幫你組好的套裝機 或許綜合性能沒有辦法比過頂尖的PC 但是由於硬體規格統一 遊戲開發者可以針對單一硬體組態而做出最佳的優化選擇 主機獨佔的遊戲更不用說 硬體固然重要 但是能夠發揮出的效能,完全取決於遊戲開發者 DirectX或OpenGL是為了減輕開發者的負擔 而設計出的高階圖像API 其中不乏針對硬體指令操作不當的防呆機制 例如還沒有綁定shader program就發出繪圖指令 DirectX會直接當機加上輸出錯誤訊息 OpenGL則是透過函式回傳錯誤代碼 高階圖像API到頭來還是需要把高階的函式呼叫 轉換成GPU懂的機器語言代碼串流,包成封包餵給GPU 對於開發者固然是方便 但是多了至少一層的抽象層,就是代表效能的損失 頑皮狗不用考慮跨平台,所以可以完全針對PS4的硬體做優化 GPU方面 不使用DirectX或OpenGL這種高階API 而直接生成GPU的機器語言代碼串流封包,餵給GPU CPU方面 不像PC開發者,無法事先得知總共有幾個可用的CPU核心 PS4的CPU核心就是八個,兩個被OS佔去,所以遊戲可用的是六個 頑皮狗的做法是生成六個常駐thread 透過設定CPU核心親和力,一個thread綁定一個核心 這樣可以省去透過OS層來分配thread執行時間的效能損失 每一個thread不停地把工作序列裡面的工作提出來執行 這些thread不太會被OS從CPU核心上換掉(因為一個核心就是綁定一個thread) 所以不會有context switch的效能損失 記憶體方面 對DirectX或OpenGL有經驗的人應該知道 如果要建構vertex buffer或texture 需要在main memory先把資料建構好 然後透過高階API的函式呼叫,把資料複製到video memory 這個兩段式的寫入,其實是浪費時間,因為寫入資料是一模一樣的 PC硬體由於可以自行搭配,main memory和video memory通常是分開的 main memory就是大家平常簡稱的"記憶體" video memory則是跟繪圖卡綁定的GPU專用記憶體 PS4是統一規格,所以沒有必要把main memory和video memory分開 總共的記憶體就是8GB,被OS用掉2.5GB,所以遊戲可以用5.5GB 這5.5GB是可以CPU和GPU共用的 (unified memory) CPU建構好vertex buffer或texture之後 只要把指標傳給GPU,GPU就可以對這些資料做存取 不像一般PC需要把同樣的資料寫入兩次 PS4相關的硬體組態和其他軟體優化重點 可以參考頑皮狗的Jaon Gregory在XXI SINFO的演講 https://www.youtube.com/watch?v=f8XdvIO8JxE
bachelorwhc也提到了GI (Global Illumination) 我把我所知道的一些GI技術分享一下 如果有學過電腦圖學 一開始通常是教phong shading之類的渲染技術 這種渲染方式是所謂的Local Illumination 因為單一個表面,只考慮光源直接對它的照明,而忽略周圍環境的影響 所謂的Global Illumination就是把環境的影響也考慮進去 如影子、環境遮蔽、環景反射 說起來容易,但是要在即時運算的速度下運算正確的GI結果是不可能的 連offline render的GI都是用離散的光子模擬的了,更別說即時運算 所以遊戲開發者必須用其他方式,做出很像是GI的效果來"騙"玩家 影子基本是必備的GI效果 在low-poly的時代,還可以使用shadow volume這個技術 但是隨著現代遊戲模型面數的增加,shadow volume也失去了實用性 現在流行的技術是shadow map,比較不會因為模型面數而拖垮效能 然而缺點是影子的品質取決於shadow map的解析度 解析度過低的shadow map,就會讓玩家看出放大的影子像素 為了避免這個問題,要嘛提高shadow map的解析度 要嘛對影子進行柔化的後製處理 環境遮蔽(ambient occlusion,簡稱AO)則是另外一個AAA遊戲必備的GI效果 之前也說過了,用離散光子模擬太慢了 現在的主流技術是一開始由Crytech提出的SSAO (Screen-Space AO) 利用Z-buffer周邊像素的資訊 來近似每一個像素因環境遮蔽而失去的漫射光量 這是全螢幕的後製特效 所以跟場景上的物件數和面數沒有關係 至於環境反射,通常是用一個反射environment map來蒙混過去 拿The Last of Us做例子 大樓的窗戶和地上的積水所反射出來的環境並不是真正周遭的環境 而是一個是先準備好的environment map 由於有經過模糊處理,沒有仔細觀察是不會發現的 有些賽車遊戲為了要真的在車身上做出真實環境反射的效果 必須以車身為中心,額外對周圍全場景做多次渲染 效能消耗取決於周圍環境和模型的複雜度 額外的draw call也是很貴的 最近有一個流行的環境反射"騙術" 是使用含有normal資訊的render target、main render target和Z-buffer 取得每一個像素一次光反射於main render target上的"著彈點" 用這個顏色資訊來模擬一次光反射的效果 這個技術叫做Screen-Space Ray-Traced Reflection,簡稱SSRR 如同SSAO,此技術為全螢幕後製特效 跟場景上的物件數和面數沒有關係 缺點是有時候反光著彈點不在main render target上 這個時候就會出現資料缺乏而反光資訊不完整的瑕疵 但是通常SSRR的反光會做模糊處理,所以玩家不太會注意到 PC版的Assasin's Creed IV就有使用SSRR 嗯...其實我寫到後來也忘記我一開始的主題是什麼了 就當作是brain dump好了 以上 -- Ming-Lun "Allen" Chou Physics / Graphics / Procedural Animation / Visuals Web http://AllenChou.net Twitter http://twitter.com/TheAllenChou LinkedIn http://www.linkedin.com/in/MingLunChou -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 172.248.143.89 ※ 文章網址: http://www.ptt.cc/bbs/PlayStation/M.1402883888.A.7F1.html cjcat2266:轉錄至看板 GameDesign 06/16 09:58
sugizo0:(!)我媽問我為何要跪著上PTT... 06/16 10:01
cbahsasn7250:看到一半才發現作者原來是CJCAT大 推推 06/16 10:02
globe1022:翻譯官~翻譯官!請求支援....這是哪國語言,看無阿囧rz 06/16 10:04
eipduolc:豪門深似海... 06/16 10:06
marsdora:??? 06/16 10:08
windfeather:專業推 06/16 10:08
SHwEE:XD看來多玩本家的遊戲就會知道PS4的能耐在哪了 06/16 10:11
SHwEE:是說德瑞克臉上那隻蒼蠅實在是滿厲害的(? 06/16 10:13
thesky14:原PO看來是射後不理 不用這麼認真拉XD 06/16 10:13
opoppp:推! 06/16 10:16
Kamikiri:最近的看門狗室內景也有用到騙術 但不知道是不是同種類 06/16 10:18
Kamikiri:感覺騙術是未來趨勢(?) 06/16 10:18
strike519:你幫他把期末作業作完了 至少討杯50嵐ㄅ 06/16 10:22
Hua0722:很多中文字不是嗎,怎麼看不懂QAQ 06/16 10:31
b2284446:是頑皮狗員工耶!(跪) 06/16 10:35
crassus7217:完全看不懂 06/16 10:36
jetalpha:長知識推! 06/16 10:38
bachelorwhc:我也跪下來了 竟然是CJ Cat大大 06/16 10:39
tim971715:快推假裝看的懂 06/16 10:40
uyry6:GTA V 跟 看門狗 是不是窗戶反射方法不同 GTA好像是真反射 06/16 10:40
cjcat2266:不可能是真反射,因為真反射意味著每一片窗戶都需要 06/16 10:41
cjcat2266:^從窗戶的角度對整個場景重新做渲染,太貴了 06/16 10:42
cjcat2266:不過我也無法回答實際做法是如何,因為我還沒有玩... 06/16 10:42
cjcat2266:不過Remember Me和The Bureau: XCOM Declassified的地板 06/16 10:44
cjcat2266:是真反射,因為只有地板有反射,只需要渲染場景兩次 06/16 10:44
cjcat2266:缺點是場景主體精緻程度就無法衝高,因為要渲染兩次 06/16 10:45
cjcat2266:如果是整個場景有多個反射體,使用SSRR的機率很高 06/16 10:45
LOXAERIC:專業推!! 06/16 10:49
ggyyggy:嗯嗯…說的有道理 06/16 11:40
Bigcookie2:不懂裝懂中 推 06/16 12:06
kusanagi7331:神人出沒快朝拜!台灣之光! 06/16 12:21
tp950016:只能推啦 06/16 12:23
ggBird:我都看懂,但還是進不了頑皮狗 06/16 12:30
NakedSnake:推! 06/16 12:34
zorroptt:原來是這樣呀 嗯嗯嗯嗯嗯 06/16 12:34
simongarden:還好我只要負責玩就好了.... 06/16 12:36
mihonisizumi:推 太強了! 06/16 12:55
XGOAT:我是原PO 感謝各位大大願意花時間解答 雖然專業部分不太懂 06/16 12:56
XGOAT: 玩主機比PC省事這原則我一直都在實踐 期待頑皮狗大能帶來 06/16 12:56
XGOAT:更多神作造福玩家! 06/16 12:56
mikeneko:嗯嗯,跟我想的一樣 06/16 13:05
a83a83cjcj:專業推!! 06/16 13:08
wjuiahb:寫的真好,我也這樣認為 06/16 13:14
nomorepipe:跪了 06/16 13:18
godrong95:有神快拜 06/16 13:19
igarasiyui:請教大大 ICE team有在測試PS4的hUMA是真的嗎 06/16 13:42
wuliou:我室友問我為什麼跪著看PTT 06/16 13:50
nvidiaxp:我同事問我為什麼流淚了 06/16 13:57
nightdragen:我媽問我為什麼要跪著滑手機OTL 06/16 13:59
※ 編輯: cjcat2266 (172.248.143.89), 06/16/2014 14:16:57
cjcat2266:ICE team的工作內容保密,所以我不知道他們現在在幹嘛.. 06/16 14:17
cjcat2266:雖然說ICE跟ND使用同個工作空間,但是他們還是待在一個 06/16 14:18
cjcat2266:神祕小房間裡面,只有吃午餐的時候會出來晃而已 06/16 14:18
cjcat2266:話說回來,就算我知道,有Sony的NDA也什麼都不能說啊 :/ 06/16 14:19
LOXAERIC:CPU GPU共用記憶體其實對於異質運算架構感覺是有滿大幫助 06/16 14:23
LOXAERIC:最近在使用CUDA,有時候光傳資料到GPU就佔了一堆時間Orz 06/16 14:25
cash35:PS3的設計是主記憶體與視訊記憶體分開 360則是共用記憶體 06/16 14:52
cash35: 這種設計差異也會影響跨平台遊戲的設計吧 06/16 14:52
chocoboex:推 06/16 15:39
callmelanpo:我居然看得懂= = 06/16 15:47
Porianesu:完全看不懂 不過看到大神id只能推了orz 06/16 16:22
sthho:看到神id推 06/16 16:52
ivan4161:太猛了 06/16 17:07
yuyuliu:看不懂沒關係,只要會玩遊戲就好 06/16 17:14
chigo0123:看到最後,腦中一直浮現塵土記,真的是長知識了 06/16 18:31
olddadwind:有神快拜 06/16 18:50
dimrain:原以為是老梗PC和CONSOLE戰文結果卻是專業神回覆討論串 06/16 18:53
realfade:雙腿不自主的跪下來了 這篇文跟台科學生證差不多...... 06/16 19:17
dukemon:這篇請M吧... 06/16 19:23
ivan761016:還沒看內文看到id就跪一半了 06/16 19:25
chiyosuke:(拜 06/16 19:37
angus4003:認真分析推 06/16 20:55
shark0321:推專業大大專業回文,專有名詞都看不懂.. 06/16 21:57
arty:長知識了 推推! 06/16 22:29
h51206yk:專業推 06/16 22:58
CrazyMika:專業推~ 06/16 23:06
topless:專業推~~~ 06/16 23:14
CALLING:看不懂 但有道光 06/16 23:57
talan:雖然能進頑皮狗的程式設計師都一定很強 06/17 00:15
talan:但想知道Corrinne Yu是不是真的如傳說中那麼神 06/17 00:15
cjcat2266:不太清楚,我跟她唯一的交集是一起吃過一次咖哩飯XD 06/17 00:19
talan:她會說中文嗎 聽說是香港出身的? 06/17 00:21
cjcat2266:從她的英文口音聽起來,英文的確不是她的母語 06/17 00:25
cjcat2266:所以應該會說中文沒錯,雖然我本人沒聽過就是了... 06/17 00:26
cjcat2266:ND華人不少啊,週三有華人外食團,當然會有非華人亂入 06/17 00:26
cjcat2266:就我所知,美術有一個台灣人,ICE也有一個 06/17 00:27
cjcat2266:程式部門就我一個,剩下還有沒有不清楚,之後慢慢找... 06/17 00:27
cjcat2266:順帶一提,週二是程式部門的咖哩外食團,據說這個傳統 06/17 00:29
cjcat2266:已經實施了十年了...每週二都去同一家日式咖哩店 06/17 00:29
cjcat2266:說實在的,House牌的佛蒙特咖哩塊還比較好吃 06/17 00:30
cjcat2266:不過我也不好意思一語道破,畢竟這是超過十年的傳統... 06/17 00:30
cjcat2266:我也不知道為什麼他們那麼愛吃,有一次一週還去四次 06/17 00:31
talan:推 很有趣的內幕花絮 希望多聽一點 XDDD 06/17 00:33
igarasiyui:HOUSE wwwwww 06/17 00:33
LOXAERIC:吃咖哩XD 一周連續吃4次感覺好膩.. 06/17 00:42
llwopp:大概外國人比較少吃到東洋的食物 感覺很神奇吧 XD 06/17 00:44
zerosaviour:推一下認真的頑皮狗台灣人 06/17 01:29
OGoTTe:來朝聖一下Orz 06/17 01:40
fhjqwefs:有神拜就對了 06/17 08:43
sisik:ICE team的任務不就是打造第一方專用引擎,這之前就有透露了 06/17 10:22
sisik:不需要保密. 06/17 10:23
LonelyLove:朝聖... 06/17 10:23
cjcat2266:我指的是ICE詳細在做的事情 06/17 10:41
sisik:PS4的專用引擎吧? 從之前的訪談推測. 06/17 10:49
sisik:若SONY自己提供PS4的專用引擎給第三方用, 06/17 10:50
sisik:第三方就不用被遊戲引擎商抽一筆費用, 06/17 10:51
sisik:與其被遊戲引擎商抽,不如由SONY抽,這樣搞限時獨佔也容易. 06/17 10:53
Aqery:有神快拜 XD 06/17 13:32
bimmer3:m(._.)m 06/17 14:16
saedn:這篇好強大!! 太厲害了!! (跪) 06/17 15:52
HolyBugTw:為什麼是綁定thread而非process? 06/17 16:46
HolyBugTw:啊,白問了,access memory... 06/17 17:04
Zsanou:專業推 06/17 18:11
cjodagiri:我媽問我為什麼要跪著上大號 06/17 20:00
cocowing:太專業了! 06/17 21:49
Kamikiri:有點好奇怎麼跪著上大號 有真相嗎? 06/17 23:47
forgenius:我比較想問...為什麼你上大號你媽會進來... 06/18 00:56
KirinP: (跪 06/18 05:57
MACROSS2K:好強大 06/18 08:23