99国产精品欲av蜜臀,可以直接免费观看的AV网站,gogogo高清免费完整版,啊灬啊灬啊灬免费毛片

網(wǎng)易首頁 > 網(wǎng)易號 > 正文 申請入駐

GDC 2025 | 《三角洲行動》:高性能高品質(zhì)的端手地形和生態(tài)技術(shù)

0
分享至

導語:在今年的游戲開發(fā)者大會(GDC 2025)上,騰訊游戲帶來20場議題分享,圍繞AI、渲染、跨端游戲開發(fā)等游戲技術(shù)應用及游戲研發(fā)經(jīng)驗與全球游戲開發(fā)者探討交流,引發(fā)同業(yè)關注。此外,騰訊海外工作室拳頭、Supercell、Digital Extremes等也帶來了超40場分享。本文為“《三角洲行動》:高性能高品質(zhì)的端手地形和生態(tài)技術(shù)”分享的圖文版干貨內(nèi)容。

分享嘉賓:

王理川 騰訊游戲天美J3工作室技術(shù)美術(shù)組負責人

大家好,很榮幸能站在這里代表騰訊游戲參加2025年的GDC大會。歡迎大家來到《三角洲行動:高性能高品質(zhì)的端手地形和生態(tài)技術(shù)》的分享。首先,請允許我簡單介紹一下自己并提供一些背景信息。

我叫王理川,自2005年進入游戲行業(yè),至今已有約20年時間,這對我來說都難以置信。我曾在育碧上海和蒙特利爾工作了大約16年,專注于AAA級射擊游戲,主要是湯姆克蘭西系列,包括幽靈行動和分裂細胞,相信你們中的一些人可能知道這些IP,還有孤島驚魂系列,從孤島驚魂4一直到孤島驚魂6。

然后在2020年,我加入了騰訊游戲的琳瑯天上團隊,作為工作室首席技術(shù)美術(shù)師支持幾款游戲,比如《穿越火線》手游和《使命召喚》手游,這兩款都非常成功。最近,我花了幾年時間在《三角洲行動》項目上,主要專注于渲染、程序化、管線、工具等方面。



首先,我想為今天的分享設定一些期望。

這不是一個純粹的程序講座,而是程序與視覺藝術(shù)/技術(shù)美術(shù)管線工具的結(jié)合。那么,讓我們來看一下今天的《三角洲行動》的目標。

《三角洲行動》是一款超寫實主義的FPS游戲,整體渲染解決方案和藝術(shù)呈現(xiàn)基于PBR,可以將其視為一個純粹的基于物理的渲染項目。這也是創(chuàng)造自然開放世界的關鍵。

我們的技術(shù)框架必須夠高效地為兩個平臺提供游戲,盡管時間和人力都非常有限。當然,最后游戲需要高性能,這意味著它需要在PC和各種移動設備上流暢運行。



好的,讓我們來看看今天的議程。首先,我們會簡要介紹一下《三角洲行動》,以防你們中有人不熟悉這款游戲。然后,我會講解地形和生物群落中的一些核心著色器技術(shù),以便你們在兩個平臺上看到今天的內(nèi)容。接下來,我會談談我們?nèi)绾问褂贸绦蚧ぞ邅韼椭锶郝涞纳珊凸芾怼?/p>

從技術(shù)角度來看,我們將介紹適用于PC和移動設備的地形紋理(terrain texturing)和地形幾何(terrain geometry)解決方案,這些解決方案具有非常低的消耗和最小的偽影。

接下來,我們將深入探討各種性能優(yōu)化技術(shù)。最后,我們將總結(jié)一些最后的想法和我們已經(jīng)在進行的未來工作。

這里有一個幾個月前剛剛發(fā)布的視頻片段,應該能為你們提供一些我們正在討論的內(nèi)容的背景,那么讓我們一起來看看。

好的,現(xiàn)在一起看看我們面臨的技術(shù)限制?!度侵扌袆印吩诙鄠€平臺上發(fā)布,包括PC和各種移動設備,從低端到高端。我們旨在PC上達到高達4K 144幀,同時在旗艦移動設備上仍能高達120幀。我們在開放世界中有一個完整的晝夜循環(huán),包括室內(nèi)外環(huán)境。因此,世界構(gòu)建中的生物群落、地形等都需要與一天中的所有時間兼容。我們有一個100平方公里的主要世界,還有一些相對較小的地圖。



說到地圖大小,讓我簡要介紹一下游戲的規(guī)模。我們有三種游戲模式:

撤離模式,就像我之前說的,這是主世界,位于一個10公里×10公里的開放世界。在這個巨大的地圖上隨機事件將玩家持續(xù)保持熱度。

大規(guī)模PVP模式,包含多個4×4和2×2的地圖,每張地圖的具體尺寸由關卡設計師根據(jù)游戲目的進行定制。這種模式允許最多64名玩家同時出現(xiàn)在戰(zhàn)場上,同時保持非常高的幀率。并且具有真實的地形,包括軍事車輛、坦克和直升機的宏大戰(zhàn)爭,我們還在這游戲模式中開發(fā)了廣泛的戰(zhàn)爭破壞系統(tǒng)和大規(guī)模破壞資產(chǎn)。

最后是戰(zhàn)役模式,這是一種非常典型的線性任務游戲模式,重啟經(jīng)典的黑鷹墜落。這個模式也發(fā)生在一個巨大的地圖上。這個模式的地形、環(huán)境和游戲體驗將帶你們回到25年前的經(jīng)典三角洲部隊IP。

我們先來看生物群落,我將重點說說跨平臺的框架。

為了讓整個三角洲世界更加真實可信,游戲中有大量不同的生態(tài)分布,并且除了主世界是在摩洛哥,其他一些玩法模式將會發(fā)生在世界各地,不同的氣候,環(huán)境,以及戰(zhàn)損狀態(tài)。如何在差異巨大的雙平臺實現(xiàn)這些內(nèi)容,并且系統(tǒng)化的進行特性管理,甚至內(nèi)容復用,是今天的跨平臺生態(tài)shading的主題。



為了增加生態(tài)表現(xiàn)得豐富性,我們不希望通過完全的隨機shading來實現(xiàn)這件事情,視覺效果豐富但可信度比較低,如果通過材質(zhì)變體實現(xiàn),會讓DrawCall急劇增加,也不宜與管理和迭代。所以,在開發(fā)的早期我們嘗試采樣了一張大型紋理,來為其提供可控的色彩變化。但是對于10x10的開放世界來說,10k分辨率占用內(nèi)存約100Mb,這在移動端仍然沒有辦法落地的,于是乎,我們引入了clipmap。



簡而言之,剪切映射是一種動態(tài)紋理表示,能夠高效地在有限的物理內(nèi)存中緩存任意大小的紋理,以實現(xiàn)實時渲染速率。大家可以看到,隨著相機移動進行滾動更新,相機范圍內(nèi)的紋理使用mip0,隨著距離逐級遞減,這種方式可以大幅減少內(nèi)存占用,同時保證了近距離的精度。有著clipmap的加持,大大降低了內(nèi)存的占用,原本100M的占用率一下子降低到了2.5M這個級別,使得在手游平臺的落地變?yōu)榱丝赡堋?/p>



相比常規(guī)貼圖采樣,clipmap本身的更新會有更多指令消耗,所以我們決定不僅僅面數(shù)植被變色,而是基于這個基礎上進行深挖,整合更多的信息到這唯一一張clipmap中。

其中包含了植被的狀態(tài),四季變化,水域數(shù)據(jù),地形潮濕等,全部塞到了這張紋理中的各個通道中,它幾乎涵蓋了當前生態(tài)的全部信息。各個生態(tài)模塊的shader都會采樣這些信息。

并且整個框架端游手游統(tǒng)一,接下來我會逐一展開講解。



首先說一下植被部分,10km的開放世界不同區(qū)域、因為生長環(huán)境不同,海拔高度等不同植被的健康狀態(tài)存在著差異。而在不同游戲模式下,關卡有不同四季的設定。我們希望一個植被資產(chǎn)能有不同的四季表現(xiàn),從而最高程度的復用資產(chǎn)。

那不得不說一下健康度的概念,你也同樣可以理解為植被四季變化的概念。我們分別在clipmap的R通道和B通道儲存了樹和草的健康度信息。之所以樹木和草分開,是因為在實際應用中,兩者差異明顯,不能共用信息。

此外我們認為戰(zhàn)損也可以算作健康度的一部份,所以我們將戰(zhàn)損狀態(tài)也編碼到這2個通道中。

比如0.1-0.85存儲著健康信息或者四季信息,將戰(zhàn)損信息壓縮到0.9-1。



除了clipmap作為全局健康度或者說四季變化的輸入信息外,資產(chǎn)個體則有與之對應的健康變化表現(xiàn)以及戰(zhàn)損的表現(xiàn)。為每個植被資產(chǎn)基于季節(jié)創(chuàng)建色彩偏移以及燒毀效果,并將其儲存在獨立的look up table中。通過clipmap中的值采樣LUT,得到看似隨機但是完全可以掌控的結(jié)果。并且雙端方案保持一致。



在資產(chǎn)方面,在PC上,我們將一個蒙版打包到法線圖中作為色調(diào)蒙版,并在上面使用線性插值與BaseColor進行混合。



在移動設備上,為了進一步優(yōu)化性能,我們放棄了基本顏色,而是完全依賴于我們所謂的“strands mask”(一種灰度圖),它被打包到法線圖中。因此,輸入數(shù)據(jù)減少了一個紋理,這大大減少了紋理采樣。在視覺效果上,我們對此都非常滿意。



當植物的不健康程度偏移到極限的時候,就是我們的植物燃燒狀態(tài),用0.9到1來定義。它和四季變化共享一個LUT, 這種方式的好處在于可以實現(xiàn)平滑的燃燒過度,同時不需要增加更多的材質(zhì)變體。

當然由于算力限制。在手游上,我們所呈現(xiàn)的燒焦僅是一個顏色變黑,我們在PC上為其添加了更多的shading細節(jié)以及復雜的分布規(guī)則。



在PC平臺為了營造更好的氛圍感和真實度,會按照一定的規(guī)則整合彈坑以及燃燒特效等,材質(zhì)上也會做更多的細節(jié),比如燒掉的葉子,燃燒的火星,這些內(nèi)容都可以輕易通過材質(zhì)質(zhì)量分級進行性能降配,從而保持跨平臺風格和效果的一致性。



我們將和水相關的一些信息也都pack在這張clipmap中。

在空間上,河流和陸地生態(tài)是互斥的,所以他們的儲存并不沖突,換個說法大部分植物不會同時生長在水下和陸地上, 所以我們可以合并儲存。

關于河流的全局數(shù)據(jù),我們儲存了如下信息,其中RG通道儲存河流velocity的兩個分向量,也就是flow map,B通道儲存了河流的吸收率控制顏色,A通道保存了河流的泡沫區(qū)域,這些數(shù)據(jù)在shader 使用上端手會有些差異。



根據(jù)flow map進行多次采樣即可模擬水波流動的感覺,由于周期內(nèi)波浪是循環(huán)重復的,所以循環(huán)采樣的次數(shù)越多,其流動表現(xiàn)就會更加自然。

對于PC我們對波浪法線進行3次采樣,每層之間的過度通過余弦函數(shù)作為權(quán)重進行混合,此外還有模擬了更銳利的小型波浪。

對于手游高配,只需要減少一次采樣,每1/2周期進行混合即可;對于性能較低的機型,直接使用簡單的線性周期混合,節(jié)省cos指令的負擔。



在顏色方面,我們使用剪切映射中的吸收蒙版來定義水的基本渾濁度,將吸收LUT和散射LUT映射到一起,共同描述水的顏色和散射顏色。這使我們無需額外的Draw即可處理自然的水表現(xiàn),例如區(qū)分河流、湖泊以及泥沙被沖走的效果。



手游的水使用半透明渲染,在數(shù)據(jù)使用上與pc不同的地方在于減少了散射的成分,所以只采樣了pc的absorption LUT。

同時映射了LUT的alpha通道用來模擬水的渾濁度,這很好理解,水越渾濁 越深的區(qū)域,光線穿透率越低,它會更加的不透明,關于半透明這一點其實我們還做了更多的擴展優(yōu)化,畢竟手機上的算力實在珍貴。



如前面講的一樣,大部分水比較深的地方幾乎傾向于不透明狀態(tài),并且我們目前沒有水下玩法,所以對于標準地形渲染,半透明銜接處,以及幾乎不透明的深水域做了不同程度的性能優(yōu)化,大大降低了GPU clock的開銷。



關于水面反射,在PC端上用了Screen Space reflection和多個IBL相結(jié)合的方式。

在移動端上,因為性能考量,目前則是只有使用IBL,不過為了整體視覺上的相對正確性,人為的去修改IBL。

最后,我們將wetness信息打包到clipmap中,來作為濕潤地形,濕潤巖石,水坑等的輸入。



clipmap只有每米一個像素的精度,但是在地形上我們可以采樣高度layer,與wet mask閾值混合后就可以獲得正確豐富的darkness 區(qū)域,對darkness mask灰度裁切能夠得到水坑的區(qū)域。

這種方式實現(xiàn)潮濕以及水坑,相比decal的方式可以省去額外的drawcall,水坑效果將于地形一同繪制。



同時這些潮濕的區(qū)域通過clipmap作為介質(zhì)儲存后,就可以使得其他內(nèi)容進行采樣,比如我們的巖石,這讓環(huán)境間有了真實互動。



對于植物來說,全局光照對其最終表現(xiàn)影響很大,而其中ao是最重要的表現(xiàn),對于PC我們應用了SSRTAO 作為全局光照遮蔽,同時從紋理中補充一些細微結(jié)構(gòu)的ao。植物預烘培的頂點ao只會作用在subsurface上用來擬合多次散射的遮蔽效果。

對于手游的植物則僅有頂點ao。對于草來說只需要通過額外的uv就能獲得ao;除了對環(huán)境光進行遮蔽以外,在手游上ao還會參與計算假陰影,這對于手機上的植被表現(xiàn)很重要。



無論是頂點還是像素著色的預算面對畫面中大量的植物來說都是非常昂貴的,其中陰影消耗是非常重的一塊。

對于樹來說我們不僅要減少植物插片的數(shù)量和頂點,同時繪制陰影時會使用更低級別的lod模型,但是這同時帶來了難以接受的低質(zhì)量陰影,你可以看到影子精度很低,同時有生硬的邊緣。

將頂點ao作用到直接光shading上來近似陰影,可以獲得更加平滑的暗部過度,同時減少了采樣陰影帶來的負擔

通過對假陰影的調(diào)整,也可以近似模擬出植物多次透射的效果,使暗部不會過于發(fā)黑。



最終你能看到更穩(wěn)定,更穩(wěn)定,更加統(tǒng)一整體的樹冠表現(xiàn),最重要的是性能方面非常省。

草的像素面積和頂點甚至會比樹更多,所以不會投射影子也不會采樣影子;

我們通過逐instance的隨機和ao混合作為假陰影,這和樹是類似的,稍微復雜點的是fake shadow會根據(jù)視距和視線角度進行衰減,遠處和低頭查看草時不會產(chǎn)生生硬的黑色過渡。



此外草同時也不會投射影子,它們數(shù)量太多了。

我們在clipmap中烘培了草的位置信息以供地形采樣, 為地形做了額外的直接光和高光遮蔽,這很好的緩解了沒有投影時地形和草的銜接問題。



為了能在各個平臺上都有比較好的性能和效果表現(xiàn),植被遠景的方案端游和手游有比較大的不同,因此我們準備了3套不同的方案來應對。

首先,是用impostor方案,它只用在PC端,并且同時作為植被的最后一級LOD。

然后就是Billboard,作為只針對手游用的遠景模型,大大降低了渲染壓力,并且能保證有不錯的效果。

最后就是cluster Card,它是真正意義上的backdrop,適用于地圖的邊界,以及完全gampplay無法觸及的區(qū)域。并且在雙端上有應用。



首先,讓我們來看看Impostor。我們使用了一種相當常見的技術(shù),這在之前的許多演講和論文中都有提及——它實際上是一種基于mesh card的方法。它的概念非常簡單,從不同角度捕捉卡片,得到最適合的面,然后在模型的剩余部分重復這個過程,直到?jīng)]有剩余部分。



我們發(fā)現(xiàn),這種方法對于團簇狀的樹冠有不錯的生成結(jié)果。

但是如果一股腦的對所有樹木,或某些種類的整棵樹進行card生成和紋理捕獲,會存在著card的濫用以及紋理的浪費。

我們有多個地圖,不同的地域,植被類型會多種多樣,截然不同。為了更好的壓榨出性能,我們有自己的處理方式。



我們是這么做的:

我們將樹冠和樹干進行了拆分生成,然后用盡量少并且更貼合樹木模型的card對其分別進行紋理捕獲和生成。通常只要3個面也就能表現(xiàn)出令人滿意的樹干。

兩者的分開生成的還有一個好處就是,我們可以對其進行不同處理,比如樹冠需要更強調(diào)團簇感和體積感,而樹干樹枝則不需要,最后將2者進行合并。

獨立生成這兩部分的另一個優(yōu)點是我們可以不同地對待它們。例如,樹冠需要更多地強調(diào)簇狀和體積,而樹干和樹枝則不需要。最后,我們將這兩部分合并成一個整體。



同時,我們對整棵樹進行了dither temporal AA來得到順滑的過度,通過vertex color存的信息區(qū)分,分別對樹冠和樹枝進行了不一樣的調(diào)參設置,減輕樹干插片感的同時,保證樹冠有更高的密度。



相比PC的impostor,billboard比較廣泛的應用在性能比較低端的平臺,對性能更加友好。在這里,我們手機平臺,處理所用的植被遠景都用這個方法。

針對不同的樹木外貌特性,我們處理billboard的方法也會不同。我們大致有3種方法來處理:

首先是Single-plane billboard,這是最為常見的billboard方式。我們對于場景中大多比較對稱植被用采用這種辦法,我們會選擇一個比較適合的視角進行捕捉,無論玩家在世界中所處什么樣的位置,billboard總是朝向玩家。



難以避免還有不少植被是非對稱的,如果用Single-plane billboard的話,會導致無數(shù)遠處植被視覺跳變的問題。因此對于這類的植被,我們則用了double planes billboard的方法,捕獲外形差異比較大的2個角度,且又相差90度的的紋理。

貼在2片平行的平面上,并且和single plane billboard一樣,永遠朝向玩家。



然后,當視角發(fā)生變化后用dither來順滑過度2者的切換。

最后,通過根據(jù)攝像機機位的距離來動態(tài)調(diào)整2片面的間距,從而防止遠處觀察的z-fighting問題。



另外一種billboard我們稱之為Titled Plane。

通常這種樹的輪廓是非常傾倒,極為不對稱的。例如椰棗樹。

我們抓取相對最對稱的角度作為紋理原圖,然后在shader中進行操作將其壓倒。



簡單的來說就是,我們區(qū)分了樹干和樹冠部分,對樹冠進行偏移,旋轉(zhuǎn),甚至扭曲。對于樹干進行彎曲曲率的調(diào)整以及起始點的偏移等等。

這是一個非常主觀的操作,力求將造型與實際模型對齊。通過lerp計算,最終在一個面片上還原歪斜樹木的結(jié)果。



另外要提的一點是,無論是哪種類型的biiboard,我們在創(chuàng)建之初,對于面片的尺寸做了均一化處理,無論樹木的實際尺寸是怎樣的。

然后我們在shading中進行尺寸的調(diào)節(jié)來匹配真實性,從而能更好的對其進行合批操作,大大降低渲染性能開銷。



對于遠景山上,以及無法觸及到的樹木森林,我們會做更極致的優(yōu)化。

這是對于billboard的延展,美術(shù)會手動組合各種樹木的billboard,形成成簇。

從然捕獲長條形的群簇作為原始紋理,貼在條狀面片上,從而構(gòu)成我們所謂的cluster card。

各種不同類型的billboard組合,構(gòu)成了Assembly card的多樣性,從而組成為DF世界的遠景和非觸達區(qū)域的森林。



好的,現(xiàn)在我們來談談我們在程序化方面的實現(xiàn)。關于程序化世界生成,業(yè)界已經(jīng)有許多成熟的解決方案。

我們依然用的是基于houdini的開發(fā)流程, Offline生成結(jié)果。獲取地形信息,根據(jù)特定的生成規(guī)律,生成點云,返回到引擎,并且實例化生態(tài)數(shù)據(jù)。由于這種做法比較普遍,我就不多展開了。相反,我將更多地討論我們?nèi)绾芜M行跨平臺實現(xiàn)。當然,首先是我們剛才談到的Clipmap。存儲在其中的大部分數(shù)據(jù)都是由PCG生成和修改的。



在我們的游戲中,幾乎所有的地形和生物群落都是結(jié)合在一起的,并且基于配方,我們?yōu)樗囆g(shù)家和內(nèi)容創(chuàng)作者提供了畫筆工具作為預設。預設包括地形、植被資產(chǎn)、貼花和VFX(例如落葉、漂浮的灰塵、煙霧、霧氣等)。藝術(shù)家只需選擇相應的預設,在世界中他們想要的地方進行繪制,而無需進行任何額外的步驟或設置。

這使我們能夠在編輯器中使用一套預設工具,但我們的配方是完全解耦的,這意味著同一個配方在每個平臺上都有單獨的HDA文件。最后,我們在PC和移動設備上得到不同的結(jié)果,主要是為了應對平臺限制和性能問題。



盡管PC和移動設備是兩個獨立的管線,但由于它們共享相同的生物群落類型,我們?nèi)匀幌M鼈兙哂邢嗨频耐庥^。當然,在創(chuàng)建和迭代過程中,我們也不希望做兩次工作。因此,我們尋找兩個版本之間的繼承關系,并在Houdini中進行降級操作。我們的方法是鎖定配方中的高優(yōu)先級元素,并將其繼承到移動設備版本,同時去掉不太重要的元素,如矮樹、小灌木和裝飾物。這就得到了一個簡化的移動設備版本,總體上保持了相似的外觀。



而且,如果我們?nèi)匀淮嬖谝恍┬阅軣狳c,僅減少配方復雜度無法滿足要求,我們還設計和創(chuàng)建了專用的配方,在某些區(qū)域更激進地降級密度和類別。你可以將其視為僅限移動設備或移動設備專用的工具,僅影響移動設備版本。



我們盡量使生物群落盡可能基于預設,但為了滿足非常特定的游戲玩法需求,我們也提供了手動放置樹木和大灌木的靈活性。但周圍的裝飾會進入程序化處理。

最后,細節(jié)將在周圍生成,并且與整體環(huán)境很好地集成。

我們實現(xiàn)了自動修正來處理大塊植被的重疊和交叉。像棕櫚樹總是最好的例子。首先,我們需要找到一種方法來驗證它們是否交叉。因此,我們將幾何體體素化,3D體素相當于具有值1的3D數(shù)組。如果多個3D數(shù)組的和的最大值等于2或更大,這意味著模型交叉了。接下來,我們自動更改其中一個模型的方向。然后,再次進行驗證和修正。并反復這個過程,直到?jīng)]有交叉。這樣,我們在PC和移動設備上都確保了所有樹木都放置得正確美觀。



草漂浮是一個普遍的問題,尤其是在移動設備上。由于預算和性能限制,移動設備上草簇模型的邊界框通常很大。我們所做的第一件事是向地形投射射線,測量草模型的支點與地形本身的距離。如果結(jié)果超過閾值,將漂浮的草稍微向下拉。再進行一次驗證,移除漂浮的草,或者如果性能允許,用較小的草替換。

由于一切都由PCG控制,因此我們可以調(diào)整密度以減少三角形數(shù)量,或者替換某些類型的模型以減少Drawcall,靈活地實現(xiàn)每個質(zhì)量級別的視覺和性能的最佳平衡。最后,我們得到了在感知上相似的PC和移動設備版本,同時根本上滿足了兩個平臺的質(zhì)量和性能需求。



最后,道路也是地形的一部分,所以我來展開說一下我們在這方面做出的一些優(yōu)化。在一些低端移動手機上,由于性能限制,我們無法支持VT(虛擬紋理)。而且,我們的地形精度也從每格1米降低到每格2米。正如你所見,道路和地形幾乎到處可見得重疊,Z-fighting非常嚴重。所以,即使輸入數(shù)據(jù)相同,每個平臺的處理方法也需要有所不同。



在程序化處理過程中,我們?yōu)榈投嗽O備生成額外的道路模型,拓撲結(jié)構(gòu)需要更改為2米以精確匹配地形網(wǎng)格。這樣視覺上看起來正確,但這導致了另一個問題,即三角形數(shù)量急劇增加,低端設備也無法承受。因此,我們對遠處的道路進行減面來作為LOD模型。為了避免重疊再次出現(xiàn),此外,在頂點著色器中,我們將遠處的頂點漸進逐漸向上拉。最后看起來一切都很完美。



在下面內(nèi)容中,我們的引擎程序員組長焦航,將帶大家了解核心技術(shù)特性。

分享嘉賓:

焦航 騰訊游戲天美J3工作室引擎組負責人

大家好,我是焦航,來自琳瑯天上的引擎團隊負責人。你們可以叫我Jesse。過去十年,我一直在移動游戲開發(fā)領域深耕,參與過《穿越火線手游》《使命召喚手游》等成功項目的開發(fā)——這些都是基于Unity引擎實現(xiàn)的。今天,我將以我們使用虛幻引擎4.24開發(fā)的《三角洲行動》游戲為例,帶大家揭秘游戲中地形與生態(tài)群落渲染背后的技術(shù)。



首先,我們來聊聊地形貼圖技術(shù)。

正如上篇中Lichuan之前提到的,我們使用VT技術(shù)處理地形貼圖。VT本質(zhì)上是一種紋理緩存算法,能有效節(jié)省帶寬。同時這項技術(shù)支持在地形上疊加大量貼花,讓我們能在PC和移動端實現(xiàn)高品質(zhì)的地形渲染。在虛幻引擎中,我們采用的是adaptive VT方案。

在移動端使用VT時,我們需要在寫入VT前,對紋理進行運行時壓縮。如果不壓縮,每幀都會消耗大量帶寬,導致設備發(fā)熱。因此,我們將其壓縮為ASTC 4 * 4或6 * 6格式。我們采用了極簡算法,僅支持ASTC的雙端點模式,不含ASTC的分區(qū)模式。出于兼容性考慮,我們在所有移動設備上使用pixel shader執(zhí)行壓縮。首先通過pixel shader輸出到uint4紋理,每個像素128位,對應ASTC的block大小。接著將紋理復制到buffer,最后再復制給壓縮紋理。



這是實際效果:帶寬方面,每幀帶寬減少到原先的四分之一或九分之一。PSNR值穩(wěn)定在40到50區(qū)間,美術(shù)團隊對最終視覺效果表示認可。單張VT頁面的壓縮耗時僅需0.2毫秒。



接下來聊聊地形貼圖的基礎——splat map。我們在雙平臺使用基本相同的splat map方案,這使移動端也能獲得高品質(zhì)地形。在移動端,我們將PBR紋理的多個通道打包到更少的貼圖中。具體來說,我們用了兩個texture arrays:一個存儲albedo和heightmap,另一個儲存normal、roughness及ambient occlusion。



來看看先來看看我們的需求:美術(shù)想要至少32層材質(zhì)混合,以提升場景豐富度。這需要某種形式的ID map方案支持。想要實現(xiàn)基于高度的權(quán)重混合,且權(quán)重可控——這種混合方式能讓兩個材質(zhì)在大范圍漸變過渡,使交界更自然。這需要地形上每個點需要為每層材質(zhì)單獨存儲權(quán)重值。同時受帶寬限制,紋理采樣次數(shù)必須嚴格控制。但,等等,常規(guī)的每層權(quán)重方案(比如虛幻引擎默認方案)無法支持如此多層,因為每一層貼圖都需要采樣做混合。而ID map方案(如《孤島驚魂》《幽靈行動》采用的方式)又不支持權(quán)重混合,每個點只能指定單一材質(zhì)ID。我們該怎么辦呢?



讓我們從最基礎方案開始,化繁為簡。首先為所有材質(zhì)層設定明確的順序,采用從底層到頂層的覆蓋邏輯。在地形每個采樣點存儲兩個layer ID:底層(bottom)和頂層(top)。禁止同一位置出現(xiàn)三層疊加。這樣底層權(quán)重始終為1,只需存儲頂層(top)的混合權(quán)重值。我們采用每米一個采樣點的ID map精度存儲這些數(shù)據(jù)。



生成ID map的具體流程是:美術(shù)師在編輯器中正常為每層材質(zhì)繪制權(quán)重,我們會在每個地形采樣點,篩選出權(quán)重最高的兩個材質(zhì)層保留下來。



接下來,地形上的每個像素需要獲取周圍4個采樣點,并進行插值計算。這意味著每個像素需要采樣4個ID map點,進而采樣8個材質(zhì)層,在移動端總計產(chǎn)生20次采樣。這樣的開銷顯然過大,必須進行優(yōu)化。



首先引入一個小技巧:我們可以將插值計算范圍從方形區(qū)域改為在三角形區(qū)域進行插值。這樣能將材質(zhì)層采樣數(shù)從8層降至6層。雖然地面可能出現(xiàn)輕微三角形pattern的感覺,但通過合理的層混合,這種pattern幾乎不可察覺。不過6層采樣依然偏高——實際開發(fā)中美術(shù)師很少在同一區(qū)域疊加這么多層。如果我們利用這個特性,將不同的ID數(shù)量從6個減少到3個呢?這樣雖然仍有6個ID編號,但實際只需采樣3個材質(zhì)層。經(jīng)過實際測試,我們發(fā)現(xiàn)3層是保證正常過渡的最低標準,同時足以呈現(xiàn)復雜的地形效果。



那么我們?nèi)绾螐娜切蝺?nèi)的6個ID中提取3個獨立層?我們通過離線ID修復流程實現(xiàn)這一點。當美術(shù)師在編輯器中繪制權(quán)重時,每個三角形會包含6個層ID:3個底層ID和3個頂層ID。流程開始時,創(chuàng)建一個容量為3的空集合。首先將3個底層ID全部加入集合。若集合未滿(存在重復ID),繼續(xù)按權(quán)重從高到低的順序逐個添加頂層ID。若集合已滿,則丟棄,具體做法是將多余頂層ID設置為與底層ID相同。



由于只是移除多余ID,處理相鄰三角形時不會破壞當前三角形數(shù)據(jù)。現(xiàn)在這6個ID中僅保留3個不同的值。還記得我們?yōu)椴馁|(zhì)層設定了明確順序嗎?因此頂層ID始終大于底層ID。接下來需要在shader中從這6個數(shù)值中提取3個ID,分別命名為min、mid和max。



在shader中,每個待渲染像素首先需解碼3個ID map采樣點,獲取6個ID編號及3個權(quán)重值。隨后通過這段代碼,從6個ID中提取出min、mid和max三個核心ID。



最終,我們能在每個三角形頂點獲取各材質(zhì)層的權(quán)重值,并完成混合計算。相關PPT稍后會上傳至GDC Vault平臺。接下來我將繼續(xù)講解。



總結(jié)來看:相比傳統(tǒng)的weight-per-layer方案,我們的方法支持更多材質(zhì)層疊加。相較《孤島驚魂》《幽靈行動》采用的ID map方案,我們實現(xiàn)了權(quán)重混合功能。傳統(tǒng)ID map方案要實現(xiàn)過渡效果,必須創(chuàng)建包含兩種材質(zhì)的混合層,這會額外消耗內(nèi)存。而我們的方案可以任意兩層材質(zhì)自由混合,無需占用額外內(nèi)存。此外,這種混合機制還能實現(xiàn)類似《巫師3:狂獵》的法線疊加與衰減等高級效果。



關于懸崖渲染:在VT方案中,UV通常基于世界坐標的XY軸投影,這會導致懸崖面出現(xiàn)紋理拉伸。常規(guī)解決方案是采用tri-planar映射——需要額外增加XZ和YZ軸的紋理投影采樣,并進行混合。但這會導致每幀的額外性能開銷。目前存在tri-planar的優(yōu)化方案,不過通常仍需在base pass中增加紋理采樣次數(shù)。



那么為何不直接將tri-planar映射渲染到VT中呢?讓我具體說明:可以看到XY軸投影,僅在平坦區(qū)域表現(xiàn)良好。在懸崖垂直面上,如果繼續(xù)使用XY軸投影,UV坐標會產(chǎn)生嚴重拉伸變形。



在懸崖面使用XZ或YZ軸投影時,UV在模型表面不會拉伸——雖然這可能導致VT頁面內(nèi)的紋理拉伸,但實際渲染時mesh本身不會拉伸。所以一個簡單的計算UV的方法是:在生成VT的繪制階段,對每個像素:檢測法線方向(normal direction),基于此自動選擇最佳投影平面(XY/XZ/YZ),并使用該UV,繪制這個像素。



要實現(xiàn)這一點,我們需要引入Z軸坐標。必須將實際地形網(wǎng)格輸入VT生成流程,而非之前的quad。注意要使用SampleGrad方法——由于每個像素的UV動態(tài)變化,必須手動指定正確的mipmap層級。這是優(yōu)化后的效果:可以看到紋理拉伸消失了,但出現(xiàn)了明顯接縫。如何消除接縫?



解決接縫問題,我們采用受《Far Cry》啟發(fā)的隨機分布方案。令人驚喜的是,在VT中這種處理顯得非常自然:由于VT緩沖區(qū)不會頻繁刷新,幀間穩(wěn)定性得到保證;同時得益于mipmapping機制,避免了aliasing鋸齒問題。



最終我們以極低成本實現(xiàn)了類似Tri-planar的效果。我們也嘗試過bi-planar方案,雖然混合效果更好但性能開銷更大。隨機方案在效果與性能間達到平衡,最終成為游戲內(nèi)的實裝方案。不過直接在VT中渲染懸崖存在一個限制——當玩家近距離觀察時,最大分辨率會有所下降。我們認為這是一個可接受的取舍。



這里還有另一個提升視覺質(zhì)量的技巧:使用高度混合時,近處效果良好,但遠景會出現(xiàn)塊狀瑕疵——這是因為遠距離混合使用高LOD層級的mipmap,精度不足導致。除了調(diào)整遠景tiling之外,我們還引入了另一個技巧。我們在遠處采用線性混合方案:隨著距離增加,逐步過渡到線性混合模式。這種處理使過渡更柔和,有效解決了塊狀瑕疵。



這里還有另一個運行時出現(xiàn)的問題:美術(shù)師在編輯器中精心雕琢的地形細節(jié),在移動端運行時——尤其是遠景中——會顯得過于平坦,溝壑與侵蝕細節(jié)被平滑掉了。



根本原因在于:編輯器中地形使用38萬三角面,而運行時版本僅保留8萬面。出于性能考量,我們大幅降低了遠景區(qū)域的網(wǎng)格密度。這意味著通過頂點法線(vertex normal)表現(xiàn)的幾何細節(jié)也隨之減少。



為恢復這些細節(jié),我們引入Streaming Virtual Textures(流式虛擬紋理)解決方案。既然遠景區(qū)域的網(wǎng)格無法存儲足夠頂點法線細節(jié),我們就將其烘焙到紋理中。將整個地形的低層級mipmap烘焙成SVT格式。在VT生成階段,當收到頁面請求時,我們會檢查是否存有SVT數(shù)據(jù)。若存在,則直接將數(shù)據(jù)載入physical texture,而非通過RVT方式實時渲染。SVT與RVT共享同一塊physical texture內(nèi)存,因此不會產(chǎn)生額外內(nèi)存消耗。



因此,我們將頂點法線(vertex normal)烘焙到SVT中,并在最終渲染時完全忽略地形網(wǎng)格自帶的法線信息——所有法線數(shù)據(jù)都來自SVT。但SVT與近景RVT混合時,必須采用相同的法線生成邏輯才能避免接縫。這意味著在生成RVT時,同樣需要通過實際地形網(wǎng)格實時渲染頂點法線——就像處理懸崖渲染時一樣。最終效果令人滿意:遠景地形細節(jié)完全保留,不再出現(xiàn)細節(jié)丟失。美術(shù)團隊甚至可以通過手動調(diào)整離線生成的SVT數(shù)據(jù),自由定制遠景視覺效果。



此外,游戲中還有許多細節(jié)調(diào)優(yōu)案例。例如在這款快節(jié)奏FPS游戲中,開鏡時攝像機FOV(視野)會急速變化,導致VT需要立即重繪更高精度內(nèi)容——這會產(chǎn)生明顯的地形突變(pop-in)現(xiàn)象,干擾玩家索敵。因此我們在開鏡時引入額外偏移值(bias),使FOV變化時維持當前mip level。該方案顯著提升了操作流暢度,代價是開鏡時地形會略顯模糊。



接下來我們將深入探討地形幾何結(jié)構(gòu)。

在虛幻引擎默認方案中,每塊地形tile都需要單獨Draw Call,導致渲染整個地形需要大量繪制調(diào)用。這在移動設備上會產(chǎn)生巨大開銷。因此我們采用CDLOD(Continuous Distance-Dependent Level of Detail)方案渲染地形網(wǎng)格。該技術(shù)通過draw instance同時渲染所有LOD層級的地形tile。每個實例對應一個網(wǎng)格單元——離攝像機越近的單元尺寸越小,越遠的單元尺寸越大。所有實例保持相同頂點數(shù),因此近處網(wǎng)格更密集,遠處更稀疏。通過這種方式,整個地形只需1——2個Draw Call即可完成渲染。



此外,我們還通過一個小技巧進一步降低實例數(shù)量。常規(guī)情況下,當請求某地形tile的高LOD層級時,會將其細分為四個高LOD子tile,導致需要4個實例渲染。但我們采用頂點著色器裁剪方案:將低LOD網(wǎng)格中需要細分的區(qū)域切割出來,僅對該區(qū)域進行細分。切割操作通過頂點著色器動態(tài)調(diào)整頂點位置實現(xiàn)。這使得總實例數(shù)降至2個,且每個實例保持相同頂點數(shù),從而減少總頂點繪制量。



關于曲面細分(tessellation)。硬件曲面細分存在許多問題。它存在性能問題,三角形分布模式也不夠理想,可能導致更多誤差。而且在移動端并不適用。因此,我們實現(xiàn)了軟細分方案。這是對CDLOD的自然延伸——通過為地形塊引入LOD -1、-2等級別,從VT中采樣高度圖來調(diào)整幾何結(jié)構(gòu)。



關于軟細分方案——我們希望附近的幾何密度非常高,并且密度隨著距離增加而快速降低。但CDLOD要求相鄰地形塊的LOD等級差異只能相差一級。這種限制會導致大量冗余地形塊。正如所見,我們不得不切割出額外地形塊來滿足這個限制。我們放寬了這個限制,允許對LOD進行多次細分,同時保留之前提到的裁剪剔除方法。傳統(tǒng)做法是2x2的細分,而我們嘗試了4x4和8x8的細分方式。通過之前介紹的裁剪技巧,你會發(fā)現(xiàn)實例數(shù)量更少了,而且網(wǎng)格密度能以此方式更快降低。我們最終選擇4x4方案,因為它在誤差率和實例數(shù)量之間取得了最佳平衡。



相比硬件曲面細分,這種方案性能更優(yōu)、三角形分布模式更優(yōu),誤差也更低。我們已經(jīng)在PC平臺實裝了該方案。理論上在移動端也能落地,但最終沒有足夠時間將其植入正式版本。在中高端機型上值得嘗試。



此外,我們還做了多項性能優(yōu)化——針對時間和內(nèi)存進行了優(yōu)化,更重要的是,針對移動端的發(fā)熱問題。

正如Lichuan之前提到的,我們在多個場景中使用了clipmap技術(shù)。這種技術(shù)的精髓在于——根據(jù)相機位置動態(tài)加載周邊高精度紋理,遠處則加載低精度貼圖,具體精度范圍取決于你想要保留細節(jié)的最遠距離。這能節(jié)省大量內(nèi)存。



我們把splat ID map也改造成了clipmap結(jié)構(gòu)——只有近處才需要高精度數(shù)據(jù)。在實現(xiàn)上,不再為每個區(qū)塊單獨啟用VT renderer,而是通過whole scene VT renderer統(tǒng)一管理clipmap流式加載。這樣減少了Actor數(shù)量,卡頓現(xiàn)象也隨之緩解。



如果直接加載全部32層紋理到Texture Array會消耗過多內(nèi)存。但在渲染近處地形時,實際只會用到其中的部分層。因此我們實現(xiàn)了動態(tài)紋理數(shù)組——按需加載紋理,并填充到數(shù)組的空隙中。渲染中距離地形時則使用完整的32層數(shù)組,配合更小的mipmap層級。這樣有效控制了需要加載的全分辨率層數(shù)。



我們自動監(jiān)測實際使用的層數(shù),并進行可視化圖層檢查。在興趣點(POIs)之間的過渡區(qū)域,內(nèi)存壓力較低,因此可以適當放寬限制以獲得更佳畫質(zhì)。



還有一個優(yōu)化思路值得分享。雖然允許每個像素混合3種不同圖層,但實際很多區(qū)塊用不到這么多層——比如大面積單一圖層(草地、泥土)或僅混合兩種圖層的區(qū)域占主流??紤]到高頻更新的高精度LOD VT頁會頻繁切換進出physical texture,我們?yōu)橹髦谱髁巳N變體,根據(jù)即將渲染的VT頁實際使用層數(shù)動態(tài)選擇著色器變體。這些數(shù)據(jù)是離線統(tǒng)計生成的,內(nèi)存開銷極小。



在移動端,我們可以優(yōu)化VT流程中使用的渲染目標。理想情況下,VT內(nèi)只需兩張紋理,通過通道合并來降低基礎通道的采樣次數(shù)。但由于Decal存在透明度混合,渲染VT頁時仍需將透明度通道單獨保留。之后通過subpass(或frame buffer fetch)對通道進行重組,使其達到理想布局。這種操作利用移動端的on-chip內(nèi)存,無需回傳到主內(nèi)存。接著就能進行ASTC格式壓縮。更進一步——如果檢測到某個Tile沒有透明度混合需求,就直接以理想通道布局繪制到渲染目標。這類信息同樣是通過離線烘焙獲取的。



在設備適配Scaling方面,我們開放了多項參數(shù)調(diào)節(jié)開關。比如說,不同設備可設置不同的最大分辨率——降低分辨率意味著需要更新的VT臟頁更少。我們還可以調(diào)節(jié)VT的mip偏置,配合紋理數(shù)組的mip偏置。這在低端機上能節(jié)省部分內(nèi)存。高端設備使用1米精度的地形高度圖,低端設備則回退到2米精度——這意味著需要著色的頂點更少。地形網(wǎng)格LOD距離縮放系數(shù)提供了另一種優(yōu)化手段——通過加快遠處網(wǎng)格的密度衰減速度來減少頂點數(shù)量。每幀允許填充的頁面數(shù)量也可以設限,從而降低卡頓概率。此外,各向異性紋理采樣(aniso-texture sampling)的等級也能通過畫質(zhì)檔位靈活控制。



針對極低端移動設備,我們單獨設計了一套地形渲染方案。這主要是出于兼容性考慮——部分低端機型存在VT支持問題,因此必須找到不依賴VT的替代方案。具體做法是:在base pass直接渲染splat map。由于缺乏動態(tài)紋理數(shù)組支持,只能使用完整32層低分辨率紋理數(shù)組。將每頂點splat層數(shù)壓縮到單層,實際上回退到ID貼圖方案。移除法線貼圖(normalmap)。由于缺乏Decal支持,道路需要作為獨立mesh單獨渲染。



我們針對不同機型精細調(diào)試了所有參數(shù),確保各檔次設備都能流暢運行,同時呈現(xiàn)其硬件允許范圍內(nèi)的最佳畫質(zhì)。這是最終各檔次設備上的內(nèi)存占用情況。



這是部分性能測試數(shù)據(jù)。

我們對地形渲染性能進行了測試,將本方案與移動端主流的4層逐層權(quán)重法進行對比。測試數(shù)據(jù)均基于驍龍855平臺,且僅渲染地形??梢钥吹綗o論是高畫質(zhì)檔還是低畫質(zhì)檔,本方案在幀率、功耗、帶寬和GPU耗時上均有優(yōu)勢。更關鍵的是,我們還能支持32層材質(zhì)混合以及大量Decal效果。



以下是今日分享的核心結(jié)論:在地貌與地形渲染方面,我們通過合理控制復雜度實現(xiàn)了跨PC與移動端的兼容適配;運用程序化生成方法加速迭代并提升品質(zhì);針對地形貼圖與幾何結(jié)構(gòu)開創(chuàng)了獨特的解決方案;并通過性能與scaling調(diào)優(yōu)確保方案落地。關于未來方向——我們計劃完善天氣系統(tǒng)的實現(xiàn)方案,開發(fā)水下特性,同時加強地形法線混合和衰減的調(diào)試以進一步提升視覺表現(xiàn)。



特別感謝所有杰出的同事——你們才是真正的英雄。感謝Delta Force整個團隊。感謝GDC組委會提供這個分享平臺。感謝在座各位的聆聽。

特別聲明:以上內(nèi)容(如有圖片或視頻亦包括在內(nèi))為自媒體平臺“網(wǎng)易號”用戶上傳并發(fā)布,本平臺僅提供信息存儲服務。

Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.

相關推薦
熱點推薦
無官一身輕!姚明恢復訓練第三月狀態(tài)極佳,笑容燦爛并征服訓練師

無官一身輕!姚明恢復訓練第三月狀態(tài)極佳,笑容燦爛并征服訓練師

籃球資訊達人
2025-06-02 14:38:23
又有兩名官員飲酒聚餐致死

又有兩名官員飲酒聚餐致死

中國新聞周刊
2025-06-02 20:11:03
郭富城老婆方媛直播時忘了開美顏濾鏡,素顏看起來如何?

郭富城老婆方媛直播時忘了開美顏濾鏡,素顏看起來如何?

鄉(xiāng)野小珥
2025-06-02 15:43:25
科比遺孀瓦妮莎霸氣回應懷孕謠言:沒懷孕,我可不好惹

科比遺孀瓦妮莎霸氣回應懷孕謠言:沒懷孕,我可不好惹

雷速體育
2025-06-02 22:23:14
白鹿,大大一大大

白鹿,大大一大大

阿廢冷眼觀察所
2025-05-26 12:13:50
開了四年的“特斯拉”,突然要花15萬換電池?車主:莫名其妙

開了四年的“特斯拉”,突然要花15萬換電池?車主:莫名其妙

瀟湘晨報
2025-06-01 11:07:20
張家界溶洞垃圾堆7層樓高,最新:已打撈2.7噸!

張家界溶洞垃圾堆7層樓高,最新:已打撈2.7噸!

極目新聞
2025-06-02 10:50:32
不夸張,全世界的游客都往日本跑……

不夸張,全世界的游客都往日本跑……

日本物語
2025-06-02 08:35:25
問界、智界、享界、尊界,2025年1-5月銷量如何?喜憂參半!

問界、智界、享界、尊界,2025年1-5月銷量如何?喜憂參半!

小鵬財經(jīng)
2025-06-02 11:41:05
澤連斯基參加基輔書展,站在3層防彈保鏢中,激勵民眾去刺殺暴君

澤連斯基參加基輔書展,站在3層防彈保鏢中,激勵民眾去刺殺暴君

碳基生物關懷組織
2025-05-31 19:15:08
印度網(wǎng)紅土耳其直播,用印地語問觀眾“該不該強奸旁邊女子”,引土網(wǎng)眾怒

印度網(wǎng)紅土耳其直播,用印地語問觀眾“該不該強奸旁邊女子”,引土網(wǎng)眾怒

不掉線電波
2025-06-01 13:46:22
小沈陽演唱會18歲女兒登臺唱跳遭吐槽,有觀眾喊退票!剛剛,小沈陽回應:接受一切批評的聲音,還需繼續(xù)努力

小沈陽演唱會18歲女兒登臺唱跳遭吐槽,有觀眾喊退票!剛剛,小沈陽回應:接受一切批評的聲音,還需繼續(xù)努力

極目新聞
2025-06-02 16:51:38
NBA傳聞:ESPN建議馬刺與獨行俠交易庫珀·弗拉格和文班亞馬

NBA傳聞:ESPN建議馬刺與獨行俠交易庫珀·弗拉格和文班亞馬

好火子
2025-06-03 04:03:01
吉利研究院被一鍋端!為規(guī)避競業(yè)協(xié)議,造車新勢力這招也太狠了!

吉利研究院被一鍋端!為規(guī)避競業(yè)協(xié)議,造車新勢力這招也太狠了!

青青子衿
2025-05-31 08:49:23
印尼羽毛球男單傳奇名將去世

印尼羽毛球男單傳奇名將去世

佑銘羽球
2025-06-02 14:43:08
蒙古最強悍皇后,背7歲丈夫征戰(zhàn)四方,丈夫長大后與其生下8個孩子

蒙古最強悍皇后,背7歲丈夫征戰(zhàn)四方,丈夫長大后與其生下8個孩子

文史道
2025-06-02 17:18:48
博主拍視頻嘲諷華為折疊電腦,還稱這電腦能治療前列腺炎

博主拍視頻嘲諷華為折疊電腦,還稱這電腦能治療前列腺炎

映射生活的身影
2025-06-02 11:51:30
網(wǎng)友:人死后2小時就去殯儀館火化,是不是太殘忍了點?

網(wǎng)友:人死后2小時就去殯儀館火化,是不是太殘忍了點?

小人物看盡人間百態(tài)
2025-06-01 20:23:08
意義超過珍珠港?烏攻擊5座俄機場41架轟炸機,大帝大勢已去

意義超過珍珠港?烏攻擊5座俄機場41架轟炸機,大帝大勢已去

邵旭峰域
2025-06-02 10:54:13
突發(fā),關稅利好!6月3日

突發(fā),關稅利好!6月3日

風風順
2025-06-03 02:01:19
2025-06-03 08:59:00
GameRes游資網(wǎng) incentive-icons
GameRes游資網(wǎng)
GameRes游資網(wǎng)
6909文章數(shù) 10438關注度
往期回顧 全部

游戲要聞

外媒稱2077續(xù)作或跳過本世代 僅登PS6和下代Xbox

頭條要聞

牛彈琴:俄烏談判草草結(jié)束 俄提的12項狠條件遭烏痛批

頭條要聞

牛彈琴:俄烏談判草草結(jié)束 俄提的12項狠條件遭烏痛批

體育要聞

傲了一輩子的恩里克,心中永遠住著一個小天使

娛樂要聞

大S女兒來北京!馬筱梅帶她喝下午茶

財經(jīng)要聞

特朗普升級貿(mào)易戰(zhàn) 歐盟警告

科技要聞

蔚來李斌,回應組織架構(gòu)調(diào)整

汽車要聞

吉利汽車5月銷量23.52萬輛 同比增長46%

態(tài)度原創(chuàng)

本地
數(shù)碼
親子
教育
旅游

本地新聞

云游中國 |來仰天湖大草原,一起策馬奔騰

數(shù)碼要聞

蘋果中國官網(wǎng)推出翻新M2 iPad Air

親子要聞

三個真相,帶你了解中國媽媽的困境

教育要聞

女生被博士男友帶著躺平,傲嬌地在網(wǎng)上曬自己的幸福,你羨慕嗎?

旅游要聞

熱聞|清明假期將至,熱門目的地有哪些?

無障礙瀏覽 進入關懷版 主站蜘蛛池模板: 华宁县| 体育| 惠安县| 奎屯市| 常宁市| 灌云县| 肇州县| 什邡市| 西贡区| 淮安市| 延寿县| 万载县| 泸西县| 广灵县| 吴桥县| 长沙市| 揭西县| 沾益县| 宁陕县| 西宁市| 阜康市| 仪陇县| 雅安市| 明溪县| 淮南市| 浦城县| 龙泉市| 河源市| 平乐县| 宁陵县| 高密市| 玛纳斯县| 黄骅市| 新乐市| 新晃| 潮州市| 新巴尔虎右旗| 宜城市| 兴国县| 东丰县| 奉贤区|