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

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

一文掌握 Unity Shader 變體

0
分享至

本文轉(zhuǎn)載自 Unity 社區(qū)大佬 ForgemasterGua。全方位解讀 Unity Shader 變體的由來、編譯流程、剔除流程、加載流程等。ForgemasterGua 在 Unity 中國開發(fā)者社區(qū)持續(xù)更新技術(shù)內(nèi)容中,點擊閱讀原文,前往 ForgemasterGua 的社區(qū)主頁,閱讀更多干貨文章。

Shader 變體的由來

首先引用官方對 Shader 的定義,下圖:


如圖中所示,Unity 的 shader 不僅僅包含 GPU 上執(zhí)行的著色器代碼,還包含了包括渲染狀態(tài)、屬性、Pass、變體等定義。而 shader 變體是本文討論的主角,它是Unity 在編譯階段,根據(jù)不同的圖形設(shè)置、平臺、keyword 等生成的著色器代碼。說簡單點就是同一份著色器代碼的不同分身,每個分身有不同的功能。

以下為官方對 shader 變體定義的說明:

https://docs.unity.cn/2022.3/Documentation/Manual/SL-MultipleProgramVariants.html

(dynamic_branch 由于不會產(chǎn)生 shader 變體,所以不在本文的討論之內(nèi))。

那為什么 Unity 要搞出 Shader 變體這么個玩意呢?因為 GPU 非常擅長并行化可預(yù)測的代碼,并且始終遵循相同的路徑,從而提高并發(fā)量。如果編譯的著色器程序中存在條件語句,則 GPU 將需要花費資源來執(zhí)行預(yù)測任務(wù)、等待其他路徑完成等,從而導(dǎo)致效率低下。所以為了解決 shader 不同效果的單獨計算,Unity 提供了 shader 變體這一方式,也就是在編譯期間根據(jù)判斷(宏)來為 shader 編譯不同的分身。下圖為 Unity Shader 編譯流程(橙色方框為 Unity 提供的可編程變體剔除方法,允許用戶自定義剔除規(guī)則):

雖然 shader 變體解決了 shader 并行計算的問題,節(jié)省了性能開銷,但是也帶來了額外的問題。比如隨著項目的 shader 越來越多,變體越來越多,導(dǎo)致內(nèi)存直線增長,順帶著構(gòu)建過程越來越久,也就是我們常說的變體爆炸。我們通過下圖來直觀的感受一下變體爆炸的威力:


你沒有看錯,如果不進(jìn)行任何的變體收集和剔除,單單一個 urp 自帶的 lit shader,變體數(shù)量就能達(dá)到355W個!如果開啟選擇 skip shader features 呢?如下圖,竟也還有 6w 多個變體。


我們接著測試,把 Graphics 下 Shader Stripping 的剔除條件都關(guān)閉,再來看一下 lit shader 的變體數(shù)量,只剩 593 個了。



所以說,生成的變體數(shù)量的增加,具體取決于各種因素,包括定義的關(guān)鍵字和屬性、質(zhì)量設(shè)置、圖形層、啟用的圖形 API、后處理效果、渲染管道、照明和霧模式以及是否啟用 XR 等。而這些條件,歸根結(jié)底都是shader_feature 和 multi_compile關(guān)鍵字 的不同組合。

關(guān)鍵字 Keyword

既然 Unity 是通過 shader_feature 和 multi_compile 關(guān)鍵字來管理變體的,那么我們?nèi)绾尾榭茨兀吭?Editor 下,我們可以通過直接在Inspector 面板里查看 Shader 的 Keywords。

關(guān)鍵字分為OverridableNot Overridable。具有全局范圍的局部關(guān)鍵字(在實際著色器文件中定義的關(guān)鍵字)可以被具有匹配名稱的全局著色器關(guān)鍵字覆蓋。相反,如果它們是在本地范圍內(nèi)定義的(通過使用 multi_compile_local 或 shader_feature_local),則無法覆蓋它們,并且將顯示在下面的 Not overridable (不可覆蓋) 部分中。全局著色器關(guān)鍵字由 Unity 引擎提供,并且它們是可重寫的。由于可以在構(gòu)建過程中的任何時候添加它們,因此并非所有全局關(guān)鍵字都可能顯示在此列表中。

我們還可以在關(guān)鍵字后面加上更多限制關(guān)鍵詞,來做更精細(xì)的控制。

這里要注意一下,在 OpenGL、OpenGL ES、Vulkan 這些后綴會被忽略。

Shader 變體編譯流程

既然我們知道了 Shader 變體怎么來的, 還要知道 Shader 變體是怎么用的 。在我們實際構(gòu)建游戲之前,也就是開發(fā)階段是不會編譯 shader 變體的。我們可以通過Compile and show code來查看具體平臺的 shader 變體,這可以幫助我們提前檢查問題。另外我們還可以把生成的代碼粘貼到 GPU 的性能分析工具中(比如 PVRShaderEditor、Mali Offline Compiler),來進(jìn)一步優(yōu)化 shader 性能。

在構(gòu)建游戲時,Unity 將根據(jù)其功能、引擎設(shè)置和其他因素的所有可能排列來確定每個著色器的變體組合。然后,這些組合將傳遞給預(yù)處理器以進(jìn)行多次剝離。這可以使用IPreprocessShaders回調(diào)進(jìn)行擴(kuò)展,以創(chuàng)建自定義邏輯以從構(gòu)建中剔除變體。

如果是包含在 Always-included shaders ,(在 Project Settings > Graphics 下)的著色器將包含其所有變體。因此,最好僅在絕對必要時才使用它,因為它很容易導(dǎo)致生成大量變體。

需要注意的是,構(gòu)建過程中將經(jīng)歷一個稱為重復(fù)數(shù)據(jù)刪除的過程,會識別同一 Pass 中的相同變體,并確保它們指向相同的字節(jié)碼。這將減小磁盤大小,但相同的變體仍會對構(gòu)建時間、加載時間和運(yùn)行時內(nèi)存使用產(chǎn)生負(fù)面影響。

下圖為構(gòu)建游戲時提示的變體構(gòu)建進(jìn)度:

構(gòu)建完成后,我們可以在 Editor.log 文件中搜索 shader 變體的打包信息,可以直接在 log 中搜索 "Compiling shader"。


如果項目設(shè)置支持多個圖形 API,我們還可以在每個 shader 編譯的最后信息里面看到最終的壓縮內(nèi)存大小:

如果項目使用的是 URP 渲染管線,還可以在 URP Global Settings 下,設(shè)置 Shader Variant Log Level。

如果選擇了下面的 Export Shader Variants 選項,那么在構(gòu)建后還會生成一個JSON 文件,其中會包含所有的 Shader 變體的編譯結(jié)果,位置在 Temp/shader-stripping.json,這樣如果我們在游戲中發(fā)現(xiàn)某個 shader 變體沒有找到,就可以在這個 json 里面確認(rèn)一下是否被意外剔除了。


上述只是記錄了打包的 shader 變體,為了了解在運(yùn)行時實際為 GPU 編譯了哪些著色器,可以在 Project Settings > Graphics 下啟用Log Shader Compilation選項。


這將導(dǎo)致游戲在運(yùn)行時會編譯著色器變體顯示在玩家日志中。它僅適用于開發(fā)版本和 Debug 模式,如工具提示中所述。如下圖所示,在 android studio 中搜索 Compiled shader 可以看到進(jìn)入場景時,編譯的 shader 變體都有哪些:


最后,您可以使用Memory Profiler 包在游戲運(yùn)行時拍攝游戲的快照,然后大致了解內(nèi)存中當(dāng)前加載的著色器及其大小。按大小排序通常可以很好地指示哪些著色器引入的變體最多,并且值得優(yōu)化。


現(xiàn)在 2021、2022、2023 的 LTS 版本另外還支持 Shader 變體的動態(tài)壓縮,更靈活地控制 shader 內(nèi)存。構(gòu)建期間的數(shù)據(jù)塊大小(以 MB 為單位)和在運(yùn)行時為每個著色器同時保持解壓縮的最大數(shù)據(jù)塊數(shù)。這兩個設(shè)置都可以全局配置,并針對每個平臺進(jìn)行覆蓋。默認(rèn)值為每個數(shù)據(jù)塊 16 MB,數(shù)據(jù)塊數(shù)量不受限制。如果是 0 個塊則視為無限制。

Shader 變體剔除流程

利用引擎剔除

Unity 構(gòu)建過程中,將刪除與游戲未使用的圖形功能相關(guān)的著色器變體。如果您使用的是 Built-in Render Pipeline 或 URP,則該過程會略有變化。要定義這些參數(shù),請轉(zhuǎn)到 Project Settings > Graphics。在這里,在使用內(nèi)置渲染管線時,您可以選擇游戲支持的光照貼圖和霧模式。

如果將它們設(shè)為Automatic,Unity 就可以根據(jù)構(gòu)建中包含的場景來確定要剝離的變體。

如果您不確定自己正在使用哪些功能,還可以使用Import from Current Scene按鈕讓 Unity 找出您需要的功能。當(dāng)然,僅當(dāng)所有場景都使用相同的設(shè)置時,這才有用,因此請確保在使用此選項時選擇代表性場景。

如果您使用的是 URP,則其中一些選項將被隱藏。相反,您可以直接在Pipeline Settings(工作流設(shè)置) 資源中定義游戲所需的功能。例如,禁用 Terrain Holes 將導(dǎo)致所有 Terrain Holes Shader 變體被剝離,從而縮短構(gòu)建時間。

URP 對要包含在游戲中的功能提供了更精細(xì)的控制,從而有可能產(chǎn)生更優(yōu)化的版本和更少的未使用變體。

基于圖形層的剝離

注意:這僅在使用Built-in Render Pipeline時相關(guān)。使用可編程渲染管道(如 URP)時,將忽略這些設(shè)置。

圖形層用于根據(jù)運(yùn)行游戲的硬件應(yīng)用不同的圖形設(shè)置(不要與 Quality Settings 混淆)。游戲啟動時,Unity 將根據(jù)硬件功能、圖形 API 和其他因素確定您的設(shè)備圖形層。

可以在 Project Settings > Graphics > Tier Settings 中設(shè)置它們。

基于這些,Unity 會將以下三個關(guān)鍵字添加到所有著色器中:

UNITY_HARDWARE_TIER1

UNITY_HARDWARE_TIER2

UNITY_HARDWARE_TIER3

然后,它會為定義的每個圖形層生成著色器變體。如果不使用圖形層并希望避免使用它們的相關(guān)變體,則需要確保所有圖形層都設(shè)置為完全相同的設(shè)置,以便 Unity 跳過這些變體。

如前所述,Unity 將嘗試刪除相同的重復(fù)變體,因此,例如,如果三個層中的兩個具有相同的設(shè)置,這將導(dǎo)致磁盤大小減小,即使仍會生成所有變體。您可以選擇強(qiáng)制 Unity 為給定的著色器和圖形渲染器 API 生成層變體,使用如下所示hardware_tier_variants:

// Direct3D 11/12
#pragma hardware_tier_variants d3d11

基于圖形 API 的剝離,Unity 會為構(gòu)建中包含的每個圖形 API 編譯一組著色器變體,因此在某些情況下,手動選擇 API 并排除不需要的 API 是有益的。為此,請轉(zhuǎn)到Project Settings > Player。默認(rèn)情況下,Auto Graphics API 處于選中狀態(tài),Unity 將包含一組內(nèi)置圖形 API,并在運(yùn)行時根據(jù)設(shè)備功能選擇一個。例如,在 Android 上,Unity 將首先嘗試使用 Vulkan,如果設(shè)備不支持它,則引擎將回退到 GLES3.2、GLES3.1 或 GLES3.0(盡管這些 GLES 版本的變體是相同的)。相反,請為相關(guān)平臺禁用 Auto Graphics API,并手動選擇要包含的 API。然后,Unity 將優(yōu)先考慮列表中的第一個 ID。


缺點是您可能會限制支持您的游戲的設(shè)備數(shù)量,因此請確保您知道在更改此設(shè)置時要做什么并在各種設(shè)備上進(jìn)行測試。

*修改著色器變體匹配

通常,在運(yùn)行時,如果完全匹配不可用或已從播放器構(gòu)建中剝離,Unity 會嘗試加載最接近請求的關(guān)鍵字集的變體。雖然這很方便,但它也隱藏了著色器關(guān)鍵字設(shè)置的潛在問題。

從 Unity 2022.3 開始,您可以在 Project Settings > Player 中選擇 Strict Shader Variant Matching,以確保 Unity 僅嘗試加載所需本地和全局關(guān)鍵字組合的精確匹配。

如果未找到,它將使用 Error Shader 并在控制臺中打印包含著色器、子著色器索引、實際通道和請求的關(guān)鍵字的錯誤。當(dāng)您需要追蹤實際需要的缺失變體時,這非常方便。與通常的剝離一樣,這僅在 Player 中有效,在 Editor 中不起作用。

利用引擎剔除

每當(dāng)著色器即將編譯到您的游戲版本中時,Unity 都會調(diào)度一個回調(diào)。這種情況在 Player 和 Asset Bundle 構(gòu)建中都會發(fā)生。我們可以使用 IPreprocessShaders.OnProcessShader 和IPreprocessComputeShaders.OnProcessComputeShaders 方便地監(jiān)聽這些內(nèi)容,并添加自定義邏輯來去除不必要的變體。這樣,我們可以大大減少構(gòu)建時間、構(gòu)建大小和進(jìn)入您的構(gòu)建的變體總數(shù)。為此,需要創(chuàng)建一個實現(xiàn) IPreprocessShaders 接口的腳本,然后在 OnProcessShader 中編寫剝離邏輯。例如,以下腳本將在發(fā)布版本上去除包含 DEBUG 著色器關(guān)鍵字的所有變體:

public class StripDebugVariantsPreprocessor : IPreprocessShaders
{
public int callbackOrder => 0;

ShaderKeyword keywordToStrip;

public StripDebugVariantsPreprocessor()
{
keywordToStrip = new ShaderKeyword("DEBUG");
}


public void OnProcessShader(Shader shader, ShaderSnippetData snippet, IList data )
{
if (EditorUserBuildSettings.development)
{
return;
}

for (int i = data.Count - 1; i >= 0; i--)
{
if (data[i].shaderKeywordSet.IsEnabled(keywordToStrip))
{
data.RemoveAt(i);
}
}
}
}

回調(diào)順序允許您定義應(yīng)首先運(yùn)行哪個預(yù)處理腳本,從而允許您創(chuàng)建多步驟剝離過程。優(yōu)先級較低的腳本將首先執(zhí)行。

Shader 變體加載流程

當(dāng)一個游戲?qū)ο蟮牟馁|(zhì)需要使用特定的著色器時,Unity 會確定所需的著色器變體。每個材質(zhì)可能需要一個具體的變體,這取決于材質(zhì)的屬性和所啟用的特性。著色器變體是由關(guān)鍵字(keywords)決定的。關(guān)鍵字可以開啟或關(guān)閉特定的著色器代碼塊,生成不同的變體。每種關(guān)鍵字組合代表一個不同的變體。

Unity 會從項目資源中加載所需的著色器。如果著色器已經(jīng)在資源中(例如,在 AssetBundle 或 Resources 文件夾中),Unity 會從這些資源中加載著色器。如果之前已經(jīng)編譯了該著色器變體(例如,通過 Shader Variant Collection),Unity 會直接使用預(yù)編譯的代碼。預(yù)編譯可以大大減少運(yùn)行時編譯的開銷

Unity 會檢查所需的著色器變體是否已經(jīng)存在。如果該變體已經(jīng)存在于內(nèi)存中,Unity 會直接使用它。

如果所需的著色器變體未預(yù)編譯或尚不存在,Unity 會在運(yùn)行時動態(tài)編譯該變體。編譯過程包括:

1>解析著色器代碼:讀取 HLSL 代碼和著色器的配置。

2>應(yīng)用關(guān)鍵字和設(shè)置:根據(jù)材質(zhì)的設(shè)置和啟用的關(guān)鍵字,應(yīng)用相應(yīng)的變體配置。

3>生成 GPU 代碼:將處理后的 HLSL 代碼轉(zhuǎn)換為 GPU 能夠理解和執(zhí)行的代碼。

動態(tài)編譯可能導(dǎo)致性能開銷,因此減少動態(tài)編譯的變體數(shù)量對優(yōu)化性能很重要。一旦著色器變體編譯完成,Unity 會將編譯后的變體應(yīng)用于材質(zhì)。材質(zhì)會使用加載的著色器進(jìn)行渲染。


Shader Variant Collection

SVC 是 Unity 提供的shader 變體收集工具,使用 SVC 可以幫助我們靈活控制 shader 變體。


Shader Variant Collection提供了優(yōu)化著色器管理和性能的有效手段。它通過預(yù)編譯、優(yōu)化內(nèi)存使用、提升構(gòu)建和加載速度、提供更好的調(diào)試工具、增強(qiáng)控制和靈活性、減少冗余工作,以及改進(jìn)整體性能,幫助開發(fā)者實現(xiàn)更高效、更流暢的游戲體驗。

既然好處這么多,一旦項目中 Shader 體量過大,那么就很有必要來通過SVC控制項目當(dāng)中的變體了,具體要怎么用呢?有 2 種辦法(更推薦第 2 種):

方法一

在編輯器中運(yùn)行時,Unity 會記錄場景中當(dāng)前使用的著色器和變體,并允許將其導(dǎo)出到 SVC 中。可以 Project Settings>Graphics 。在底部,你會看到 "著色器加載"部分,顯示當(dāng)前有多少個著色器處于活動狀態(tài)。

確保事先點擊"清除"以獲得更準(zhǔn)確的樣本,然后進(jìn)入"播放"模式并進(jìn)入場景,確保遇到需要特定著色器的所有游戲元素。這將增加跟蹤計數(shù)器。然后,按下 "保存到資產(chǎn)... "按鈕,將所有這些保存到 Collections 資產(chǎn)中。


雖然這樣做很方便,但根據(jù)我的經(jīng)驗,這樣做也很容易出錯。很難確保在一次游戲中遇到所有需要的變體,而且有些功能可能只能在特定情況下在設(shè)備上加載,因此列表并不一定準(zhǔn)確。當(dāng)游戲發(fā)生變化,關(guān)卡中添加了新元素或材質(zhì)發(fā)生變化時,就需要更新這些 Collections。

方法二

編寫自動化收集工具,掃描參與打包的所有材質(zhì)(主要是Assetsbundle),并收集場景渲染器上的光照參數(shù)來綜合獲取變體。這里提供一個思路,即通過創(chuàng)建一個臨時場景,增加符合項目的光源把收集到的所有材質(zhì)渲染一幀,來間接的收集所有 shader 變體,再把收集到的 shader 變體保存到 SVC 上。

開源框架 Yooaseet 里有對 SVC 自動收集的代碼工具,如果有興趣可以看下其中具體實現(xiàn)用來參考:

https://github.com/tuyoogame/YooAsset

更多技術(shù)問題歡迎到 Unity 中文社區(qū)參與討論并獲取解答。

Unity 中文社區(qū)持續(xù)征集內(nèi)容投稿,歡迎與 Unity 官方分享你的技術(shù)筆記、項目 demo、行業(yè)經(jīng)驗、有趣案例,加入社區(qū)建設(shè),繁榮內(nèi)容生態(tài),帶領(lǐng)百萬 Unity 中文開發(fā)者一同學(xué)習(xí)。

投稿方式:

方式一:在 Unity 中文社區(qū)首頁(https://developer.unity.cn/)創(chuàng)建個人賬號,點擊【寫文章】,發(fā)表文章;

方式二:聯(lián)系郵箱 learn-cn@unity.cn,投稿技術(shù)內(nèi)容。

Unity 官方微信

第一時間了解Unity引擎動向,學(xué)習(xí)進(jìn)階開發(fā)技能

每一個“在看”,都是我們前進(jìn)的動力

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

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.

相關(guān)推薦
熱點推薦
天上掉下來的國運(yùn):印度和巴基斯坦開戰(zhàn),無論輸贏,中方都將獲益

天上掉下來的國運(yùn):印度和巴基斯坦開戰(zhàn),無論輸贏,中方都將獲益

妙知
2025-05-07 22:06:13
厲害了!惠州一小區(qū)發(fā)起投票,降低物業(yè)費、車位費,取消公攤費…

厲害了!惠州一小區(qū)發(fā)起投票,降低物業(yè)費、車位費,取消公攤費…

火山詩話
2025-05-08 13:15:42
大雨暴雨大暴雨!冰雹即將抵達(dá)...

大雨暴雨大暴雨!冰雹即將抵達(dá)...

51廬江網(wǎng)
2025-05-08 13:44:06
貼完瓷磚以后,千萬別讓瓦工師傅在這5個地方給你埋坑!

貼完瓷磚以后,千萬別讓瓦工師傅在這5個地方給你埋坑!

小軍設(shè)計
2025-03-01 15:25:05
上海教授夫妻在養(yǎng)老院孤獨離世,三個孩子在國外線上送葬:養(yǎng)出一個涼薄的孩子,不如養(yǎng)一條狗

上海教授夫妻在養(yǎng)老院孤獨離世,三個孩子在國外線上送葬:養(yǎng)出一個涼薄的孩子,不如養(yǎng)一條狗

LULU生活家
2025-05-07 18:47:59
凌晨4點,巴外長急見中國大使,親口證實,中國武器擊落印軍戰(zhàn)機(jī)

凌晨4點,巴外長急見中國大使,親口證實,中國武器擊落印軍戰(zhàn)機(jī)

溫度歷史
2025-05-08 15:01:52
江西男子娶癱瘓新娘,誰料,新婚夜岳母湊到他耳邊:丟下她走吧

江西男子娶癱瘓新娘,誰料,新婚夜岳母湊到他耳邊:丟下她走吧

原廣工業(yè)
2025-05-08 00:24:54
太難了!45套全部沒人要!

太難了!45套全部沒人要!

樓市IN溫州
2025-05-07 19:54:52
貝克漢姆夫婦與大兒子徹底開戰(zhàn)?疑放消息控訴白富美兒媳作精愛挑撥離間,英媒:又一對“哈里梅根”!

貝克漢姆夫婦與大兒子徹底開戰(zhàn)?疑放消息控訴白富美兒媳作精愛挑撥離間,英媒:又一對“哈里梅根”!

英國報姐
2025-05-07 21:13:56
15年的金賽綸嫩得都可以掐出水來,怎么看都是小妹妹,怎么會這樣

15年的金賽綸嫩得都可以掐出水來,怎么看都是小妹妹,怎么會這樣

懂體育的小吖頭
2025-03-23 10:21:08
雷來了!昨晚3家公司收到終止上市事先告知書,5萬股東一夜無眠

雷來了!昨晚3家公司收到終止上市事先告知書,5萬股東一夜無眠

娛樂看阿敞
2025-05-08 10:12:59
剛剛消息,正在靠近上海!暴雨+強(qiáng)風(fēng)+雷電...市區(qū)已經(jīng)飄雨,今明上下班注意↗

剛剛消息,正在靠近上海!暴雨+強(qiáng)風(fēng)+雷電...市區(qū)已經(jīng)飄雨,今明上下班注意↗

魯中晨報
2025-05-08 12:40:04
多地公告:停課,停運(yùn),景區(qū)關(guān)閉!浙江連發(fā)55條預(yù)警,今天下班,趕緊回家!

多地公告:停課,停運(yùn),景區(qū)關(guān)閉!浙江連發(fā)55條預(yù)警,今天下班,趕緊回家!

FM93浙江交通之聲
2025-05-08 15:01:01
不愧名帥!落后14分,許利民妙用一招逆轉(zhuǎn)比賽,王非: 這招不多見

不愧名帥!落后14分,許利民妙用一招逆轉(zhuǎn)比賽,王非: 這招不多見

金山話體育
2025-05-08 06:39:55
印度承認(rèn)數(shù)架戰(zhàn)機(jī)被擊落,罕見用中文公布戰(zhàn)況,莫迪察覺到了什么

印度承認(rèn)數(shù)架戰(zhàn)機(jī)被擊落,罕見用中文公布戰(zhàn)況,莫迪察覺到了什么

小笛科技
2025-05-08 10:52:10
印度違反國際法,悍然襲擊巴鐵大壩,系中國承建最大海外水電站

印度違反國際法,悍然襲擊巴鐵大壩,系中國承建最大海外水電站

泠泠說史
2025-05-07 17:43:41
40歲女子嫁48歲男,不穿婚紗美出天際,網(wǎng)友:這氣質(zhì)新郎賺麻了

40歲女子嫁48歲男,不穿婚紗美出天際,網(wǎng)友:這氣質(zhì)新郎賺麻了

梅子的小情緒
2025-05-08 11:20:16
全球第一大電視尺寸竟是32寸 中國幾乎淘汰了

全球第一大電視尺寸竟是32寸 中國幾乎淘汰了

快科技
2025-05-06 22:52:10
17年后,“艷照門”迎來反轉(zhuǎn),王晶再爆內(nèi)幕,元兇可能并非陳冠希

17年后,“艷照門”迎來反轉(zhuǎn),王晶再爆內(nèi)幕,元兇可能并非陳冠希

山河月明史
2025-05-06 21:37:49
1300輛!法拉第未來獲大訂單

1300輛!法拉第未來獲大訂單

經(jīng)理人雜志
2025-05-06 15:23:53
2025-05-08 17:27:00
Unity incentive-icons
Unity
Unity中國官方帳戶
2300文章數(shù) 6718關(guān)注度
往期回顧 全部

科技要聞

OpenAI任命"應(yīng)用CEO" 奧特曼聚焦研究/安全

頭條要聞

國防部:做美國的朋友可能是致命的

頭條要聞

國防部:做美國的朋友可能是致命的

體育要聞

面對一群天賦怪,阿森納只能接受失敗

娛樂要聞

災(zāi)難性公關(guān) 毀掉曾黎二十年人緣積累

財經(jīng)要聞

57政策解讀:力度空前的系統(tǒng)性穩(wěn)增長舉措

汽車要聞

23.68萬元起 新款途觀L Pro限時優(yōu)惠5.8萬

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

數(shù)碼
藝術(shù)
旅游
手機(jī)
軍事航空

數(shù)碼要聞

華為憋了5年的大招!首臺鴻蒙電腦實測:300款應(yīng)用夠了嗎?

藝術(shù)要聞

故宮珍藏的墨跡《十七帖》,比拓本更精良,這才是地道的魏晉寫法

旅游要聞

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

手機(jī)要聞

真我宣布無憂備用機(jī)服務(wù)上線:維修提供備用機(jī) 0費用、0押金

軍事要聞

菲35號護(hù)衛(wèi)艇企圖侵闖中國黃巖島領(lǐng)海 南部戰(zhàn)區(qū)發(fā)聲

無障礙瀏覽 進(jìn)入關(guān)懷版 主站蜘蛛池模板: 博野县| 深泽县| 青铜峡市| 刚察县| 普安县| 毕节市| 嵊泗县| 仁寿县| 清镇市| 河西区| 昔阳县| 伊春市| 永修县| 永兴县| 石泉县| 吕梁市| 普兰店市| 明光市| 昌邑市| 偃师市| 莒南县| 灵寿县| 仪陇县| 大渡口区| 汉中市| 屯昌县| 乐业县| 汶上县| 正阳县| 东台市| 曲阳县| 略阳县| 京山县| 北票市| 财经| 博野县| 泸州市| 盱眙县| 横山县| 抚松县| 罗平县|