亚洲有码Av一区二区三区_国产高清啪啪免费视频_69色视频国产_国产成人人人爆出白浆_国产精品自在线拍国_一本久久伊人热热精品无码_午夜性刺激在线看免费带字幕_助力高品质欧美狂喷水_亚洲精品日韩无码_精品无码一区二区三区蜜臀_麻豆高清国产AV_熟妇人素无码中文字幕_亚洲a级片在线观看_国产欧美日韩三区_99国产成人高清在线观看

ARTICLE DETAIL

資訊詳情

深耕商務(wù)建站與企業(yè)官網(wǎng)運(yùn)營的一線實(shí)戰(zhàn)洞察。

bgfx著色器編譯全流程:Windows下HLSL到.bin的實(shí)戰(zhàn)指南

bgfx著色器編譯全流程:Windows下HLSL到.bin的實(shí)戰(zhàn)指南 最近在幫一個(gè)跨平臺(tái)渲染項(xiàng)目搭底層的著色器管線正好把 bgfx 這一套 shader 編譯流程完整走了一遍。說實(shí)話第一次接觸 bgfx 的時(shí)候最讓人抓狂的不是引擎 API而是它的 shader 編譯機(jī)制你要在 Windows 下寫 HLSL跑 shaderc 工具得到一堆 .bin 文件然后才能交給 bgfx 加載使用。中間任何一個(gè)環(huán)節(jié)出錯(cuò)排查起來都非常痛苦。這篇就以“Windows 下 HLSL 為例”把 bgfx shader 編譯這條鏈路從工具鏈搭建到最終產(chǎn)出 .bin 全流程講清楚。內(nèi)容包括shaderc 的編譯方式、一張最小可跑的 HLSL shader、每條編譯參數(shù)的含義、編譯產(chǎn)物的結(jié)構(gòu)以及我踩過的各類坑和排查思路。適合正在用 bgfx 做渲染、但又不想在 shader 工具鏈上浪費(fèi)太多時(shí)間的開發(fā)者直接參考。1. 先把 bgfx 的著色器體系看懂1.1 為什么 bgfx 需要自建 shader 編譯鏈路bgfx 的核心設(shè)計(jì)目標(biāo)是跨平臺(tái)渲染后端覆蓋 Direct3D、OpenGL、Vulkan、Metal 等一大堆圖形 API。如果每個(gè)渲染后端都要單獨(dú)維護(hù)一套 shader 源碼項(xiàng)目規(guī)模會(huì)迅速失控而且很難保證同一份視覺效果的輸出完全一致。所以 bgfx 參考了傳統(tǒng)游戲引擎的做法定義了一套自己的著色器語言再通過專門的工具編譯成不同后端能識(shí)別的字節(jié)碼。這套語言本身的語法看上去更像 GLSL但官方也保留了 HLSL 風(fēng)格的寫入口。也就是說你在 Windows 下完全可以寫 .hlsl 后綴的源文件shaderc 工具會(huì)在編譯階段把它轉(zhuǎn)換成交給 D3D 后端真正使用的 DXBC 字節(jié)碼。對(duì)使用方的好處很明顯游戲邏輯和渲染資源完全解耦不同后端不需要維護(hù)多份 shader只需要在發(fā)布時(shí)用 shaderc 按目標(biāo)平臺(tái)重新生成一份 .bin 即可。關(guān)鍵是這個(gè)編譯動(dòng)作并不在引擎運(yùn)行時(shí)發(fā)生而是在構(gòu)建期完成。bgfx 只負(fù)責(zé)加載編譯好的二進(jìn)制字節(jié)碼因此運(yùn)行時(shí)的開銷很小也不依賴外部 shader 編譯器。這種“構(gòu)建期編譯 運(yùn)行時(shí)加載”的模式對(duì)游戲這種對(duì)加載速度、內(nèi)存占用、可控性要求都很高的場(chǎng)景非常友好。1.2 bgfx_shader.sh 與 varying.def.sc 扮演什么角色在真正寫 shader 之前建議先理解 bgfx 著色器體系里兩個(gè)必見的文件bgfx_shader.sh和varying.def.sc。bgfx_shader.sh是官方提供的一個(gè)公共頭文件里面用宏定義了 bgfx 著色器語言需要的各種類型和語義比如vec3、mat4、vec4以及紋理采樣器、uniform 聲明方式、頂點(diǎn)和片元輸出的約定變量名。你可以把它理解成一套“方言頭文件”只要源文件里 include 它寫出來的代碼就是 bgfx 能識(shí)別的著色器語言而不是純 HLSL 或純 GLSL。varying.def.sc則是用來描述著色器頂點(diǎn)輸入和片元輸入輸出結(jié)構(gòu)的配置文件。它不參與代碼邏輯而是給 shaderc 編譯器和渲染管線的頂點(diǎn)聲明vertex decl做對(duì)接用的。shaderc 會(huì)讀取這個(gè)文件知道頂點(diǎn)著色器輸出了哪些 varying、片元著色器輸入了哪些 varying然后生成對(duì)應(yīng)的字節(jié)碼資源綁定信息。渲染端則需要用同一份聲明創(chuàng)建頂點(diǎn)布局兩者必須完全對(duì)齊否則渲染結(jié)果會(huì)出現(xiàn)頂點(diǎn)數(shù)據(jù)錯(cuò)位、花屏等非常難排查的問題。所以寫 bgfx shader 的第一步不是直接開寫而是同時(shí)規(guī)劃好varying.def.sc和源文件的 include 關(guān)系。很多新人第一次編譯失敗就是因?yàn)橥俗?shaderc 讀取 varying 定義或者 varying 里寫錯(cuò)了成員順序。2. Windows 下編譯 shaderc 工具兩個(gè)方案任選2.1 方案一直接用官方倉庫里的預(yù)編譯版本如果只是想在 Windows 上快速用起來最簡(jiǎn)單的做法是直接使用 bgfx 倉庫里自帶的 shaderc 可執(zhí)行文件。官方倉庫的tools/bin/windows目錄下通常直接放著編譯好的shaderc.exe省去了自己編譯工具鏈的麻煩。但這里有一個(gè)非常重要的前提工具的版本必須和引擎代碼的版本保持一致。bgfx 的 .bin 格式并沒有做嚴(yán)格的向后兼容舊版本工具編譯出來的字節(jié)碼新版引擎不一定能正確加載反過來也一樣。尤其當(dāng)你是通過 git submodule 拉取 bgfx 代碼時(shí)一定要用 submodule 對(duì)應(yīng)提交里自帶的那份 shaderc或者重新編譯一份出來不要隨手從網(wǎng)上某個(gè)舊包里拿一個(gè) exe 就開始用。預(yù)編譯版本的好處是開箱即用缺點(diǎn)是如果官方倉庫沒更新或者你想給 shaderc 自己加一些定制邏輯比如自定義 include 搜索路徑、特殊宏那就需要源碼編譯。2.2 方案二用 CMake 從源碼編譯 shaderc源碼編譯在 Windows 下并不復(fù)雜我一般用 CMake Visual Studio 的生成器git clone --recursive bgfx倉庫地址 cd bgfx cmake -S . -B build -G Visual Studio 17 2022 -A x64 cmake --build build --config Release --target shaderc編譯完成后shaderc.exe會(huì)生成在build/Release或者類似目錄下。注意 bgfx 依賴 bx 和 bimg 兩個(gè)子模塊如果你的 clone 沒有帶--recursive會(huì)直接編譯失敗錯(cuò)誤信息通常是一堆“找不到 bx/bx.h”之類的 include 錯(cuò)誤。這種問題在第一次編譯時(shí)特別常見先檢查 submodule 是否完整往往比改代碼更快。如果選擇不開 CMake也可以直接用倉庫里的scripts目錄生成 Visual Studio 工程再在 IDE 里選中 shaderc 項(xiàng)目生成。兩種方式本質(zhì)一樣只是操作習(xí)慣不同。我個(gè)人的建議是優(yōu)先 CMake方便后續(xù)把 shaderc 集成進(jìn)自己的構(gòu)建管線。2.3 編譯期間要注意的依賴項(xiàng)在 Windows 平臺(tái)下shaderc 編譯 HLSL 源文件時(shí)最終需要借助 DirectX 的 D3DCompile 函數(shù)來產(chǎn)出 DXBC 字節(jié)碼。因此編譯 shaderc 時(shí)需要確保系統(tǒng)里安裝了 Windows SDK并且 CMake 能正確找到 d3dcompiler 相關(guān)庫。如果你遇到類似undefined reference to D3DCompile或cannot open d3dcompiler.lib的報(bào)錯(cuò)基本就是 Windows SDK 沒裝完整或者 CMake 沒有正確識(shí)別 SDK 路徑。另外你最后把 shaderc.exe 拷貝出來單獨(dú)使用的時(shí)候最好把它和d3dcompiler_47.dll放在同一個(gè)目錄或者保證 DLL 在系統(tǒng) PATH 里。否則 shaderc 編譯 HLSL 時(shí)會(huì)報(bào)“unable to create D3D compiler”一類的運(yùn)行時(shí)錯(cuò)誤。這個(gè)問題很容易被忽略因?yàn)榫幾g shaderc 本身是成功的一運(yùn)行就報(bào)錯(cuò)。驗(yàn)證工具是否可用很簡(jiǎn)單在命令行執(zhí)行shaderc.exe --help這時(shí)候應(yīng)該會(huì)輸出完整參數(shù)列表。如果這一步正常說明工具鏈已經(jīng)通了可以進(jìn)入寫 shader 的階段。3. 準(zhǔn)備一個(gè)最小可運(yùn)行的 HLSL 著色器并編譯出 .bin3.1 文件結(jié)構(gòu)與環(huán)境約定我在這個(gè)項(xiàng)目里的實(shí)際目錄結(jié)構(gòu)如下shaders/ ├── varying.def.sc ├── vs_simple.hlsl ├── fs_simple.hlsl └── out/ ├── vs_simple.bin └── fs_simple.binvarying.def.sc的內(nèi)容是最基礎(chǔ)的兩段式定義vec4 v_position : POSITION; vec2 v_texcoord0 : TEXCOORD0;第一行表示頂點(diǎn)著色器需要輸出一個(gè)位置變量語義綁定到POSITION第二行表示傳遞一個(gè)二維紋理坐標(biāo)到片元著色器語義是TEXCOORD0。bgfx 在編譯頂點(diǎn)著色器時(shí)會(huì)把這個(gè)文件里定義的內(nèi)容映射到頂點(diǎn)布局的對(duì)應(yīng) attribute 位置因此后面在 C 端創(chuàng)建bgfx::vertexLayout時(shí)成員的順序和關(guān)鍵字必須和這個(gè)文件對(duì)得上。3.2 編寫頂點(diǎn)著色器和片元著色器頂點(diǎn)著色器vs_simple.hlsl#include bgfx_shader.sh void main() { vec4 modelPos vec4(0.0, 0.0, 0.0, 1.0); vec4 worldPos mul(u_model[0], modelPos); vec4 viewPos mul(u_view, worldPos); vec4 clipPos mul(u_proj, viewPos); gl_Position clipPos; v_texcoord0 vec2(0.0, 0.0); }這里mul是 bgfx 著色器語言里規(guī)定的矩陣乘法函數(shù)u_model[0]、u_view、u_proj是 bgfx 預(yù)置的 uniform 常量。gl_Position是頂點(diǎn)著色器輸出位置的固定名稱即使在 HLSL 源碼中也是這么寫bgfx 會(huì)在編譯階段把它轉(zhuǎn)換成 D3D 后端需要的SV_POSITION語義。片元著色器fs_simple.hlsl#include bgfx_shader.sh void main() { gl_FragColor vec4(1.0, 0.0, 0.0, 1.0); }這個(gè)片元著色器非常簡(jiǎn)單就是把所有像素輸出成純紅色。gl_FragColor同樣是 bgfx 約定俗成的輸出變量名shaderc 會(huì)幫你完成到目標(biāo)平臺(tái)的語義轉(zhuǎn)換。需要注意雖然文件后綴是.hlsl但這里用的語法是 bgfx 著色器語言而不是嚴(yán)格的 HLSL 語法。bgfx 的解析器是根據(jù) include 的bgfx_shader.sh和變量約定來識(shí)別代碼風(fēng)格后綴更多是為了編輯器高亮?xí)r能選對(duì)語言模式。如果你確實(shí)想寫純 HLSL 風(fēng)格比如直接用POSITION0之類的語義也不是不行但跨平臺(tái)移植時(shí)會(huì)很頭疼所以我始終推薦用 bgfx 自己的這套寫法。3.3 shaderc 編譯參數(shù)詳解與一次實(shí)測(cè)進(jìn)入shaders目錄執(zhí)行以下兩條命令shaderc.exe -f vs_simple.hlsl -o out/vs_simple.bin --type vertex --platform windows --profile vs_5_0 --varyingdef varying.def.sc -i . shaderc.exe -f fs_simple.hlsl -o out/fs_simple.bin --type fragment --platform windows --profile ps_5_0 --varyingdef varying.def.sc -i .下面這張表把常用的參數(shù)挨個(gè)說明參數(shù)作用示例-f指定輸入著色器源文件-f vs_simple.hlsl-o指定輸出 .bin 文件路徑-o out/vs_simple.bin--type著色器類型vertex、fragment、compute--type vertex--platform目標(biāo)平臺(tái)windows / android / linux / ios 等--platform windows--profile目標(biāo)著色器 profile對(duì)應(yīng) D3D 的 shader model--profile vs_5_0--varyingdef指定 varying 定義文件--varyingdef varying.def.sc-i添加 include 搜索路徑可多次使用-i .--verbose輸出詳細(xì)編譯日志排查問題時(shí)很常用--verbose--define在編譯時(shí)注入宏定義--define DEBUG_SHADER1實(shí)際操作里我最常踩的坑有這些一是--platform windows配合--profile vs_5_0的寫法如果--profile寫了ps_5_0而--type是 vertexshaderc 會(huì)報(bào)錯(cuò)說 profile 與著色器類型不匹配二是--varyingdef路徑必須正確如果 shaderc 找不到這個(gè)文件它會(huì)直接阻止編譯提示缺少 varying 定義信息三是 include 搜索路徑如果你的 shader 里 include 了其他公共頭文件-i必須覆蓋到對(duì)應(yīng)目錄否則會(huì)報(bào)無法打開頭文件。3.4 .bin 文件里到底是什么東西編譯完成后可以找一個(gè)十六進(jìn)制編輯器打開out/vs_simple.bin看一眼。文件開頭會(huì)有幾個(gè)固定字段緊跟著的一串字節(jié)碼就是 DXBC 格式的數(shù)據(jù)塊。DXBC 是 Direct3D 的二進(jìn)制著色器格式wrapped 在 bgfx 的 .bin 容器里文件內(nèi)部還會(huì)記錄這個(gè) shader 編譯時(shí)的 profile、字節(jié)碼長度、varying 數(shù)量等信息。bgfx 引擎加載 .bin 后會(huì)根據(jù)自己記錄的格式信息把這些字節(jié)碼直接交給 D3D 驅(qū)動(dòng)使用。理解這層結(jié)構(gòu)對(duì)排查著色器加載問題有幫助如果引擎跑起來顯示 shader 句柄無效除了代碼 API 寫錯(cuò)之外很有可能是 .bin 是舊版 shaderc 編譯的文件內(nèi)部格式字段跟當(dāng)前引擎版本不一致。3.5 在 C 程序里加載編譯產(chǎn)物bgfx 沒有提供一個(gè)叫l(wèi)oadShader的獨(dú)立 API加載 shader 的正確姿勢(shì)是自己讀取 .bin 文件的數(shù)據(jù)然后用bgfx::createShader創(chuàng)建 ShaderHandle。下面是一段簡(jiǎn)單封裝bgfx::ShaderHandle loadShader(const char* filePath) { std::ifstream file(filePath, std::ios::binary | std::ios::ate); std::streamsize size file.tellg(); file.seekg(0, std::ios::beg); std::vectoruint8_t data(size); file.read(reinterpret_castchar*(data.data()), size); const bgfx::Memory* mem bgfx::copy(data.data(), static_castuint32_t(size)); return bgfx::createShader(mem); }創(chuàng)建完成后再通過bgfx::createProgram(vertexShader, fragmentShader, true)創(chuàng)建一個(gè) program 句柄之后就可以在 draw call 中使用了。要注意的是createProgram的第三個(gè)參數(shù)表示是否在程序創(chuàng)建后銷毀輸入 shader如果傳true那你就不再需要手動(dòng)調(diào)用bgfx::destroy去釋放 shader 句柄避免重復(fù)釋放造成崩潰。4. 核心原理拆解從 HLSL 源文件到 DXBC 的幾條路徑4.1 shaderc 的編譯管線是怎么工作的bgfx 的 shaderc 工具本質(zhì)是一個(gè)前端 多后端輸出器。前端負(fù)責(zé)解析著色器源碼生成內(nèi)部的中間表示后端則面向不同圖形 API 輸出對(duì)應(yīng)字節(jié)碼。當(dāng)輸入文件是 HLSL 語法、目標(biāo)平臺(tái)是 Windows 時(shí)前端解析完成后會(huì)調(diào)用 DirectX 提供的 D3DCompile 系列函數(shù)生成 DXBC然后封裝進(jìn) .bin 容器。但如果你把目標(biāo)平臺(tái)切到 Vulkan 或 OpenGLshaderc 則會(huì)走另一條輸出路徑生成 SPIR-V 字節(jié)碼或者 GLSL 源碼格式的字節(jié)碼。也就是說同一份 HLSL 源文件理論上你可以通過更換--platform和--profile生成多份不同后端的 .bin從而覆蓋整個(gè)跨平臺(tái)需求。這也是為什么說 shaderc 選型好的原因開發(fā)者只需要維護(hù)一套 shader 源碼發(fā)布時(shí)跑一遍不同參數(shù)的編譯命令就能得到配套各平臺(tái)的二進(jìn)制文件。如果項(xiàng)目里的平臺(tái)很多這個(gè)過程完全可以通過腳本自動(dòng)化。4.2 varying 定義與渲染管線的對(duì)應(yīng)關(guān)系varying.def.sc 之所以重要是因?yàn)樗苯記Q定了頂點(diǎn)著色器的輸出和片元著色器的輸入是否對(duì)齊也決定了 C 端頂點(diǎn)布局的 attribute 順序。bgfx 內(nèi)部有一套固定的 attribute 語義枚舉比如POSITION對(duì)應(yīng)bgfx::Attrib::PositionTEXCOORD0對(duì)應(yīng)bgfx::Attrib::TexCoord0。如果你在 varying.def.sc 中寫了vec4 v_position : POSITION那么在 C 端創(chuàng)建頂點(diǎn)布局時(shí)就應(yīng)該第一個(gè)聲明begin().add(bgfx::Attrib::Position, 3, bgfx::AttribType::Float)之類。順序或者類型不一致的話GPU 會(huì)把錯(cuò)誤的字節(jié)流解釋成位置數(shù)據(jù)最典型的畫面表現(xiàn)是模型嚴(yán)重拉伸變形或者三角形亂飛。要特別注意的是bgfx 的頂點(diǎn)布局設(shè)計(jì)并不要求 attribute 順序必須和 varying.def.sc 完全一致因?yàn)?bgfx 內(nèi)部有自動(dòng)映射機(jī)制。但如果數(shù)值類型對(duì)不上比如位置上聲明了 4 分量頂點(diǎn)數(shù)據(jù)實(shí)際只有 3 分量就很容易踩坑。所以穩(wěn)妥做法是讓 varying.def.sc、C vertexLayout、頂點(diǎn)數(shù)據(jù)三者永遠(yuǎn)保持同步。4.3 以 HLSL 為例的 profile 選擇邏輯--profile參數(shù)在 Windows 平臺(tái)下直接對(duì)應(yīng) DirectX 的 shader model 等級(jí)。我們最常用的組合是vs_5_0和ps_5_0對(duì)應(yīng) D3D11 的默認(rèn)能力。如果你的項(xiàng)目需要考慮 D3D9 兼容可以寫成vs_3_0、ps_3_0但 shader 指令集和寄存器數(shù)量都會(huì)受限很多現(xiàn)代寫法編譯不過。從 bgfx 自身的角度來說如果你完全沒有老的平臺(tái)包袱建議直接上 vs_5_0。理由很簡(jiǎn)單首先 D3D11 現(xiàn)在幾乎是 Windows 上的默認(rèn)圖形層其次更高級(jí)的 profile 對(duì)應(yīng)更多可用的著色器指令和紋理采樣器避免在做稍微復(fù)雜一點(diǎn)的效果時(shí)被編譯器限制卡住。profile 參數(shù)不只影響能否編譯通過也影響著色器實(shí)際運(yùn)行的硬件兼容范圍選擇時(shí)要綜合考慮目標(biāo)設(shè)備。5. 實(shí)操中的常見問題與排查技巧實(shí)錄5.1 shaderc 找不到頭文件或者輸出目錄不存在錯(cuò)誤信息通常類似Error: unable to open input file vs_simple.hlsl常見原因有三個(gè)路徑寫錯(cuò)、include 路徑?jīng)]有用-i指定、-o指向的目錄不存在。尤其是最后一種很多人第一次編譯時(shí)直接把-o out/xxx.bin但 out 目錄還沒創(chuàng)建導(dǎo)致 shaderc 直接報(bào)錯(cuò)。解決辦法很簡(jiǎn)單先把輸出目錄創(chuàng)建好再編譯。也可以在腳本里用mkdir -p或者批處理里if not exist out mkdir out保證目錄存在。5.2 HLSL 編譯時(shí)報(bào) dependency 找不到Windows 下最容易出現(xiàn)的運(yùn)行時(shí)錯(cuò)誤是類似error: Failed to create D3D compiler. d3dcompiler_47.dll not found.這種情況多半是執(zhí)行 shaderc.exe 的機(jī)器上缺少 DirectX 運(yùn)行庫或者 DLL 搜索路徑?jīng)]覆蓋到 shaderc 所在目錄。修復(fù)方式是安裝對(duì)應(yīng)版本的 DirectX 運(yùn)行庫或者把d3dcompiler_47.dll放到 shaderc.exe 旁個(gè)目錄下。我自己習(xí)慣直接把 DLL 和 shaderc.exe 打包在一起這樣不管放到哪個(gè)環(huán)境都能跑比較省事。5.3 profile 和 type 不匹配導(dǎo)致編譯失敗報(bào)錯(cuò)信息很直觀error: type vertex and profile ps_5_0 mismatch這類錯(cuò)誤完全是自己粗心把頂點(diǎn)著色器輸出寫成了 ps profile或者反過來。排查時(shí)先看一眼命令行參數(shù)不要把--type和--profile混淆。另外即使 type 和 profile 匹配shader 模型版本過低也可能導(dǎo)致編譯失敗。比如在用了大量 64 位浮點(diǎn)運(yùn)算或者雙精度指令時(shí)vs_4_0 級(jí)別往往不支持需要提升到 vs_5_0。如果代碼邏輯里沒用到特殊指令但編譯還是失敗優(yōu)先提高 profile 等級(jí)再試。5.4 加載 .bin 后 bgfx::isValid 返回 false這種問題在運(yùn)行時(shí)出現(xiàn)shader 文件本身可能已經(jīng)編譯成功但引擎加載時(shí)卻判定為無效。最常見原因是 shaderc 工具版本和 bgfx 引擎版本不一致導(dǎo)致 .bin 文件的內(nèi)部版本字段不能被當(dāng)前引擎識(shí)別。判斷方法很簡(jiǎn)單使用與引擎代碼同版本的 shaderc 重新編譯 shader再加載一次。如果恢復(fù)正常說明就是版本錯(cuò)位。另外如果你在從外部資料或示例項(xiàng)目里拷貝 .bin尤其要留意這一點(diǎn)因?yàn)閯e人項(xiàng)目的 bin 文件幾乎不可能和你本地的引擎版本剛好匹配。5.5 頂點(diǎn)數(shù)據(jù)錯(cuò)亂、模型撕裂如果 .bin 編譯和加載都沒問題但渲染出來的模型明顯錯(cuò)亂優(yōu)先懷疑 varying 定義和頂點(diǎn)布局不匹配。我遇到過一種很典型的情況模型數(shù)據(jù)里有位置、法線、UV 3 個(gè)屬性但varying.def.sc里把 UV 寫到了第二個(gè) attributeC 端 vertexLayout 卻按位置、UV、法線的順序聲明結(jié)果著色器拿到的 v_texcoord0 實(shí)際是法線數(shù)據(jù)。排查方式是先用最簡(jiǎn)單的純色 shader 測(cè)試頂點(diǎn)位置是否正確再逐步添加 varying 項(xiàng)。只要把一組屬性分開測(cè)試就能很快定位是哪個(gè) attribute 順序出了問題。渲染調(diào)試器如 RenderDoc也能直接查看頂點(diǎn)緩沖和 shader 輸入比靠眼睛猜高效得多。5.6 一鍵編譯腳本避免每改一次敲一遍命令實(shí)操時(shí)我不會(huì)每次都手動(dòng)敲 shaderc 命令而是寫了一個(gè)簡(jiǎn)單的批處理腳本放在 shaders 目錄下echo off set SHADERC..\tools\shaderc.exe set COMMON_INC..\src if not exist out mkdir out %SHADERC% -f vs_simple.hlsl -o out/vs_simple.bin ^ --type vertex --platform windows --profile vs_5_0 ^ --varyingdef varying.def.sc -i %COMMON_INC% -i . || goto :error %SHADERC% -f fs_simple.hlsl -o out/fs_simple.bin ^ --type fragment --platform windows --profile ps_5_0 ^ --varyingdef varying.def.sc -i %COMMON_INC% -i . || goto :error echo [OK] all shaders compiled. exit /b 0 :error echo [FAILED] shader compile failed. exit /b 1這段腳本里把 include 路徑參數(shù)-i .和公共頭目錄-i ..\src都帶上避免因?yàn)檎也坏筋^文件而失敗。日常修改 shader 后直接雙擊腳本一份新 .bin 就生成好了。如果項(xiàng)目比較大還可以把 shaderc 集成進(jìn) CMake 的 post-build 事件在構(gòu)建引擎時(shí)自動(dòng)重編譯所有 shader進(jìn)一步縮短迭代周期。5.7 常見問題速查表現(xiàn)象可能原因排查要點(diǎn)shaderc 打開文件失敗路徑錯(cuò)誤 / include 目錄缺失檢查-f、-i路徑找不到 D3DCompile缺少 d3dcompiler 運(yùn)行庫放置 d3dcompiler_47.dllprofile 與 type 不匹配參數(shù)寫錯(cuò)重新核對(duì)--type和--profile加載 .bin 后句柄無效工具版本與引擎不匹配同版本重新編譯工具模型渲染扭曲varying / vertexLayout 順序不一致對(duì)比 varying.def.sc、布局和頂點(diǎn)數(shù)據(jù)紋理采樣不出來uniform 類型或命名不匹配檢查統(tǒng)一命名和紋理單元綁定6. 一些來自實(shí)戰(zhàn)的體會(huì)用過幾輪之后我對(duì) bgfx 的 shader 編譯流程有了幾個(gè)很深的感受。第一版本一致性永遠(yuǎn)是最大的坑。如果你從舊引擎里拿了一個(gè) shaderc.exe再去編譯新引擎的 shader就算它能正常編譯出 .bin加載時(shí)也可能靜默失敗。最穩(wěn)妥的辦法是把 bgfx、bx、bimg 三個(gè)倉庫放在同一個(gè)提交點(diǎn)然后用這個(gè)提交點(diǎn)對(duì)應(yīng)的工具。第二盡量把 shader 源碼、varying.def.sc、C 頂點(diǎn)布局三者放在同一個(gè)碼農(nóng)能同時(shí)看到的地方。它們之間的關(guān)聯(lián)性非常強(qiáng)如果散落在不同目錄某次改動(dòng)忘記同步其中一處排查起來會(huì)非常耗時(shí)。我一般會(huì)把它們放在同一個(gè)資源目錄并在代碼注釋里寫好對(duì)應(yīng)關(guān)系。第三Windows 下聯(lián)調(diào)時(shí)建議配合圖形調(diào)試器使用。RenderDoc 可以直接看到最終傳給驅(qū)動(dòng)的字節(jié)碼也能看到每個(gè) draw call 使用的 shader 資源。當(dāng)你懷疑自己的 shader 編譯有問題時(shí)先看調(diào)試器里是否正常加載再回頭看編譯腳本往往能快速定位是編譯環(huán)節(jié)還是運(yùn)行時(shí)環(huán)節(jié)出了問題。最后再說一個(gè)小心得如果你只是做 Windows 平臺(tái)的原型驗(yàn)證也可以直接在 bgfx 示例工程里跑起來然后用官方 example 自帶的 shader 文件替換成自己的輸出驗(yàn)證流程能通了再擴(kuò)展跨平臺(tái)。這樣能最大程度減少“工具鏈配置問題”和“引擎 API 使用問題”混在一起的可能性。這篇文章寫到的內(nèi)容基本覆蓋了我從零開始接觸 bgfx shader 編譯到現(xiàn)在積累下來的絕大部分經(jīng)驗(yàn)。照著這個(gè)流程走一遍Windows 下的 HLSL 編譯鏈路應(yīng)該能順利跑通剩下的就是各種平臺(tái)之間的參數(shù)切換問題了。
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
制度丝袜99| 97欧美色| 九九热九九热| 欧美日韩国产色图在线| 成人26uuu| 竹菊一区二区三区AV线| 欧美91久久久久| 久久久久成人蜜桃精品| 亚洲天堂 视频你懂的| 2024年最新色情网站在线观看| 呻吟 欧美 日本 中出| 超91综合网| 嫩草影院在线观看精品| 久热在线精品免费观看| 俺去啦俺来也久久综合| 欧美日韩亚洲天堂| 天堂v无码免费视频| 人妻少妇久久久| 97综合激情| 性无码专区2020| 大香蕉伊人75| 久久精品人妻一区二区三区| 亚洲人妻中文高清| 国产人妻精品一区二区三区秋霞 | 色婷婷国产精品一区在线观看| 色婷五月| 日本国产亚洲一区在线观看| 91精品久久久久| 97色婷婷| 五十路六十路七十路熟婆| 9热9热综合网| 懂色av色欲av蜜臀av| av东京热男人的天堂| 草草网站影院白丝内射| 亚洲丝袜在线观看| 大香蕉在线视频15| 国产精品久久久无码aV去| 欧美性色综合网| 黑人美精品 A片| 超碰导航97| 五月天成人综合| 91搡老女人老妇女老熟女歌词翻译| 综精品久久久aaaa| 久久精品美女一区| 一区二区三区国产在线播放| 99国产精品久久久久久久成人热 | 国产白丝av| 亚洲男人的天堂AV| 久久亚洲影院一区二区| 日韩操逼HD| 九九九九一区| 欧美性区| 九九天堂| 99色在线视频| 一级@啪啪视频| 免看60秒涩涩视频| 久久久∴| 伊人久久大香线蕉亚洲五月天,青草青草欧美日本一区二区,欧美日产欧美日产国产 | 色性欧美| 欧美在线干| 高清无码在线播放网站| 久久久久99精品成人片蜜臀| 91无码人妻| 亚洲日韩一区电影| 欧美日韩精品一区二区三区高清| 欧美综合自拍| 超碰在线1234区| 欧美曰韩国产精品| 91色爽欧美| 人人色人人操在线| 亚洲国产av中文字幕久久| 久久亚洲日韩国产欧| 国产黄a三级三级三级av在线看 | 人妻夜夜爽天天爽三区麻豆AV网站| 色网1| 欧美综合骚| 人人摸人人干人人拍97| 日韩精品黄片免费观看| 日本 色 导航| 久久性爱精品一区| 欧美v亚洲v综合v国产v妖精| 日韩有码中文字幕女同性恋| 欧美色综合图片| 91人人看| 国产一区二区三区中文字幕| 99色悠悠| 日日狠狠久久偷偷色综合免费| 美女国产一区二区久久| 久久亚州精品成人Av无| 91P0RNY大屁股人妻| 久久啊啊啊| 欧美色图亚洲色,麻豆| 久久久久久久久久精| 亚洲情色一区三区| 99亚洲人人| 欧美v日韩欧亚洲电影天堂色诱,国产传媒| 色婷婷香蕉| 欧美人妻一区| 久精品无码av一区二免费国产在线观看| 国产精品嫩草影院午夜两性| 亚洲无码太久| 国产东北女人在线视频| 精品久久久久av影院| 人人贴人人摸| 超碰人妻天天干| 一区二区视频在线播放| caoni国产亚洲av| 夜夜操青青草| 婷婷去俺也去六月色| 色欲av一区二区三区蜜芽| 国产视频人人网| 26uuu最新| 丰满人妻一区二区三区蜜桃视频| 亚洲一区二区AV| 九九热三级片| 狠狠操使劲操| 日本高清视频xxxx| 超碰成人公开| 另类一区| 97色色色综合网站| 97视频在线免费| 97久久综合网| 97干在线| 精品久久久久久AV无码| 97人妻免费中文字幕| 亚洲中文日韩欧美大香蕉视频| 亚洲第一狼人丝袜美女另类| 国语对白在线播放视频| 99综合网| 99蜜月精品久久| 色欲久久99精品久久| 欧美少妇高潮| 一中国女人毛片水真多| 日韩人妻一二三区视频| 亚洲欧美经典一区二区| 18一区二区三区| 欧美大香蕉97| 欧美综合亚洲综合| 脫衣舞一区二区三区| 欧美顶级黄片AAAAA在线免费看| 一区二区三区精品黑丝白丝酒店对鸡| 久插综合| 国产精品另类一区大香蕉| 亚洲资源站| 久久久性| 日韩午夜啪啪视频| 5252色欧美在线| 亚洲色图 91| 日本精品五区| 97久久久| 黄色不卡视频| 97超碰人人操人人操| 国产精品极品美女视频| 亚洲男人天堂网久久| 久久综合久色欧美综合狠狠 | 乱伦一二三区| 另类综合另类| 久久9999 | 小视频玖玖| 国产精品一二三区福利| 学生妹天天看| 亚洲激情在线观看一区| 亚洲nv男人的天堂网| a人欧美综合天堂麻豆| 亚洲熟妇白浆无码AV| yw尤物av无码点击进入麻豆| 婷婷五月天久久久| 九久久精品| 无遮挡男女激烈动态图| 五月丁香婷婷色| 97视频www| 尤物网站91| 黄片在线免费在线观看| 亚洲天堂资源| 人人摸人人叼| 日本淫穴在线| 国产人妻天天干精品| 一区二区精品更新提醒| 日本熟妇浓毛hdsex| 伊人久久大香大香线蕉中文| 青草影院内射高潮| 一区不卡在线观看av| 久久这里都是精品| 国产91 丝袜在线播放00-百度| 国产色精品午夜大片| 日韩人妻精品中文字幕| 青娱乐福利99| 5252色欧美在线| 99re9| 色999亚洲人成色| 精品女同一区| 欧美精品久久久久久久久88| 欧色性第一页| 18禁超污无遮挡无码免费网| 97天天在线| 日本免费专区| 久久久久久中文| 亚洲av影院在线观看| 天综合网欧美| 入口操逼网站| 久久亚洲欧美一区二区三区-亚洲国产精品第一区二区 | 精品国产国产AV| 强奸乱伦 亚洲一区| 亚洲 欧美 91| 免费无码婬片AAAA片直播色戒| 青青草中文-久久青草精品一区二区三| 极品少妇久久久久| 97爱免费插| 曰韩中文人妻视频| 亚洲精品国产精品乱码不卡| 新久久AV| 九九九只有精品| 亚洲精品日日夜夜52| 91模特在线观看| 九九色精品| 91熟女丨老女人| 久操大香蕉手机视频在线看| 久久久久久九九九九| 夜夜肏2021| 啊啊啊好想要| 国偷自 一区| 伊人婷婷五月天| 欧美色图电影| 天堂在线一区二区| 婷婷综合五月| 亚洲天堂在线怕怕视频| AV99热18这里只有精品| 天天日天天色| {男男暴菊gay无套网站| 欲色啪| 丁香五月影院| 欧美一区二区观看在线| 一区二区三区不卡视频| 夜精品久无码| 六月激情网| 在线免费观看高清无码视频| a片亚洲一本通视频| 五月综合婷婷久久网站| 国产女大学生AV| 欧美视频激情久久久久久| 日本一本道A级黄色毛片试看60分钟| 久热精品在线| 欧美亚洲美少妇一区二区| 成人午夜无码视频| 日韩免费三级黄片电影| 加勒比综合88| 91无摭挡| 国产超碰在线一区| 1024日韩| 亚洲天堂7777| 欧美传媒| 亚洲欧美色图片| 九九九草| 国产丝袜美腿美女麻豆| 欧美色棕合| 色色香蕉| 无码人妻精品一区二区三区99不卡| 久草成人影片| 夜夜福利| 中文字幕版| 五月天精品| 亚洲国产午夜真人一级片中文字幕精品黄网站 | 91丝袜激情在线| 91无人区卡一卡二卡三乱码入口最新版:能让用户有更多选择的选择-经典说说-爱 | 日韩一区二区高清在线观看的| 久久久少妇| 欧美肥臀在线| 97就爱干| 国产青青美女玩逼视频| 欧美少妇一区二区三区| 97超碰美国| 欧美婷婷| 欧美很很操视频| 黄片国产精品一区二区| 国产综合日韩伦理| 精品久| 97伊人超碰| 大屁股熟女一区二区三区| 久久一留热品黄| 中文字幕在线24| 中文字幕亚洲在线一区 | 欧美78P| 日本久久久久久久久久| 久久久少妇诱惑精品视频| 青青草在线视频欧美| 99热色这里只有精品| 国产激情久久久| 96久久精品一二三区色欲| 久久黄色视频一区二区三区| 免费一级黄色录像影片| 久久欲| 免费的黄片有限公司| 91在线免费精品视频| 啊啊啊想要| 亚洲人天堂| 亚洲天堂2020| 久久久久久网址| 91精品国产91久久青草| 一二三区操逼国产91| 97在线免费观看| 97天天日| 免费国产电影一区二区| 精品午夜福利国产一区二区在线观看| 人人 操人人 操人人| 第四色奇米影视777| 亚洲婷婷综合网| 久久久久亚洲熟妇熟女| 免费观看国产不卡av| 影音先锋中文字幕日本好一区二区| 人妻 中文 日韩| 激情接吻视频久久久久久| 两性综合网| 国产激情片在线观看| 日韩无码专区| 9999伦理视频| 天天爱综合网| 黑人猛交| 国产区91柔拿会所技师| 丁香五月综合| 黄总AV色图| 欧美黑人极品高潮喷吹熟女黑人性暴力日韩在线欧美极品一区二区老师 | 九九久久久九九| 青青操少妇| 久久精品成人一区二区三区蜜臀| 无码人妻一区二区三区四区老鸭窝| 超碰在线人人射| 人人操肉肉| 大香蕉九九| 久久久久骚| 亚洲 另类 丝袜 自拍 动漫| 亚洲资源站| 免费家庭乱伦视频| 精品国产精品一区二区| 曰本熟女视频| 97伊人| 欧美日韩黄片精品在线| 好吊色在线观看| 96国产污污污丝袜| av影片在线观看不卡| 隔壁邻居波多野结衣中文字幕| 色色色色网站| 美女91在线观看| 欧美偷拍| 一级aaaaa欧美中文字幕录像片| 99操逼| 91美女在线视频| 91熟女网| 性一交一乱一交A片久久四色| 97亚洲一区| 综合网亚洲1| 色波多| 久久久网站| 日夜干射色啊| 亚洲网站一区二区在线| 日韩啪啪视频| 97色欧洲| 精品一区二区人妖| 麻豆性爱视频在线播放| 久久久久久九| 婷婷精品| 偷偷人人精品女女久久| 欧美经典一区二区三区| 伊人色综合超碰| 国产精品9999| 免费综合亚洲中文| 天天综合网合集91| 99精品欧美一区二区三区桃色| WWW4虎| 男人的天堂1024| JIZZJIZZ国产精品喷水| 欧美熟女丝袜| 人妻中文字幕精品无码| 久久嫩草国产成人一区| 久久国产在线一区二区| 中文字暮97| 欧美激情视频一区二区| 婷婷五月影院| 日日骚网站| 国产女生在线| 在线播放欧洲免费av| 综合免费无码中文| 欧美性综合| 免费又黄又裸乳的视频| 啊啊啊啊在线播放| 在线精品福利免费播放| 91高清日| 成人av免费观看| 超碰久草| 久妇网| 国产女同在线观看视频| 久久久久元码视频| 人妻乱仑一区二区三区| 午夜啊啊| 一区久久久二区| 中文字幕精品探花视频| 日韩天堂av电影在线观看| 亚洲欧美日韩制服另类| 久久深夜无码| 大香网站| 操熟女91| 中文字幕精品丝袜| 国产家庭乱伦性爱视频| 国产一区二区精品在线视频| 激情深爱五月天| 91岛国动作片| 一个人在线看的黄色电影网站| 亚洲在线网站| 新精精品久久精品| 97色婷| 亚洲天堂男人的天堂| 精品无码久久久| 国产精品人妻无码久久久老鸭窝| 91熟女网| 蜜桃丰满熟妇av无码区不卡| 精品久久久不卡一区二区| 欧美 精品国产制服第一页| 亚洲综合在线高清| 日韩欧美国产一区二区三区四区| 亚欧美色图| 无码免费一区二区三区啪啪| 天堂69亚洲精品中文字| 日韩中文9| 久久99亚洲精品久久99果| 大香蕉中文201| 一区二区首页| www黄片免费看com| 天天澡天天爽日日AV| 国产一区麻豆免费观看| 欧美亚洲日本视频久久久| 青青青在线高清视频在线一二三四区| 日本精品国产视频| 色五月首页| 一级AV性爱| 日韩钢筋无码高清啾啾啾| 一个国产在线综合网站| 久草毛片| 久久亚洲熟妇在线视频| 殴美,日韩国产伦精品| 天天激情干| 东京热男人天堂| 亚洲Av噜噜一区二区三区妖精| 日日夜夜狠狠| 国产精品999zyz| 久久久久久久九九九九| 超碰伊人在线| 国产视频一区二区在线| 亚洲av淫乱| 热99这里有精品综合久久| 天天摸天天舔天天操| 97天天摸天天碰| 日本性爱少妇| 91伊人久| 亚洲中文字幕在线视频一区二区| 精品久久久一本一道| 97久久精品国产| 小少妇| 一级久久久久久久久久久| 人妻9117c| 极品色综合| www.av不卡中文字幕| 欧美亚洲一区二区久久久婷精品大包诱| 久久九九综合| 在线国产探花| 五月天玖玖资源站| 色色福利| 亚洲最新av无码成人精品区| 啪啪性爱免费视频| 日语五十路和六十路亚洲国产精品 | 日本成人免费一区二区三区| 欧美亚洲中文| 91人妻人人澡人人爽人人精品| 国产热av| 亚洲91射| 久久噜噜噜精品国产亚洲综合| 色 亚洲 91| wwe 天天干.com| 精品国产嫩穴视频| 丁香五月天婷婷姐| 97青青操视频| 淫色网综合| 宅男午夜在线视频| 亚洲不卡不卡中文字幕不卡| 天天综合精品| 色老汉色| 美女诱惑在线一区| 99re这里| 久草久日| 情色大香蕉| 亚洲高潮影院| 亚洲图片另类| 亚洲日韩精品久久久久一区壹牛| 欧美一区二区三区互相| 午夜福利激情在线视频| 影音先锋视频在线| 国产92麻豆天美精品色欲5| 强奸乱伦中文字幕AV| 天堂中文日本在线观看| 91丨九色丨东北熟女| 狠狠狠狠狠狠| 亚洲AO在线| 美美91成人国产精品欧美精品久久久久久久| 亚洲影院小综合| 97频视在线| 蜜臀一二三区| 蜜臀中文字幕| h4610国产人妻| 九九无码视频| 1956日韩精品| 超碰午夜| 欧美色图 色综合图| 最新日本中文字幕| 熟女字幕| 五月久久HDAV| 日韩精品人妻中文字有码在线| 九九九九九九九九九九九蜜桃| 久九九九九九九九热| 中文字幕欧美日韩三级| 一级黄色性爱A级片| 99九九久久| 嗯~啊~快点 死我视频| 秋霞福利网| 色香综合| 思思热影视| 偷拍伦理视频| 麻豆人妻偷人精品无码视频| 日韩大香蕉| 欧美αv.com| 欧美操人| 激情人妻另类| 大香蕉欧美| 国产 亚洲 丝袜 制服| 五月丁香啪啪啪| 亚洲天堂人人妻| 九九九精品美女| 可以在线观看的黄色网址| 五月婷婷六月天| 亚洲999综合| 男人午夜天堂| www.激情| 欧美亚州色的图| 国产精品人妻无码久久久互動交流| 少妇3P性爱自拍| 熟女丰满人妻一区| 99re这里只有精品2| 亚洲精品一区二区精品| 亚洲日本成人动漫| 92大香蕉| 亚洲日韩精品一区视频在线| 日韩一级二级在线| 超碰地址久久| 欧美日韩性爱视屏免费看了| 久操九九九九九九九九九九九九九九九九九九九九九九九九九九九九 | 久久曰曰| 国产强奸乱伦欧美| 五月大香蕉| 岛国不卡超碰护士AV在线播放| 天天干天天操天天操夜夜操天天操 | 亚洲精品一区二区精品| 久操视频免费在线观看| 一区二区视频在看| 无码伊人久久大杳蕉中文无码| 国厂麻豆77q4| 日本1区2区不卡视频| 男人天堂站| 91人妻在线视频| 婷婷综合在线| 99rre在线精品99re8| 欧美视频边做饭边橾| 天天内射| 久久美女国产| Aa东京男人的天堂| 人人操人人uiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii | 天天色综合影视网| 色丁香五月婷婷| 日韩综合第八区国产精品| 国产极品99热在线播放69| 久久久久ab| 亚洲图片婷婷五月天| 国产丰满熟夫69mpp| 尹人免费观看视频在线| 久久久∴| 26uuu国产成人综合| 久久草视频污视频| 岛国艾薇凹凸视频天堂| 日韩熟女视频二区| 日韩不卡av一二三| julia国产在线 | 色婷婷综合久久中文字幕雪峰| 男插女青青影院| 粉嫩少妇自慰在线| 美女尤物人人操| 精品无码产区一区二| 中文久久爆乳| 女人久久久| 无码91| 伊人网青青| 日本高清熟女久久一区| 中文字幕成人| 91肉片| 亚洲视频小说| 日本午夜福利影院| 久久中出| 欧美青青视频| 99久久婷婷国产综合精品草原| 亚洲欧美情色| 60秒免费小视频| 日本www操操操| 2017天天插| 中文字幕亚洲欧美在线不卡| 国产一区二区三区导航| 亚洲在线91| 日韩精品9999| 五月婷婷丁香| 一级性爱视频免费观看 | 日韩激情视频| www.色婷婷色综合| 久久国产成人精品国产成人亚洲| 牛牛久久国产精品视频一二三| 牛牛aV| 久久久久久性爱免费视频| 婷婷美人网| 九九性视频| 97无码视频在线播放| 日韩中文字幕宗合在线| 婷婷久草一区二区三区| av天堂精品久久| 91熟女网| 精品一区二区三区蜜桃臀www| 丁香五月激情啪啪| 亚洲人妻在线一区| 日韩射精| 国产AB视频| 一区=区三区视频| 亚洲偷拍自拍在线视频| a亚洲欧美色欲| 99精品无码| 日日橹狠狠爱欧美超碰| 狠狠干综合| 黄骗免费| 人妻二区| 国产精品国产精品国产| 欧美丰满少妇交换91欧美精品| 9超碰免费| 啊灬啊灬啊灬好深灬快高潮了动漫-国产字幕国产在线观看-B049AV | 中文字幕女同在线| 欧洲中文字幕| 亚洲欧美大| 国产一区二区啪啪视频| 日韩国产欧美伦理在线| 日本孕妇一区二区视频操逼免费看 | 日本道日本道中文字幕日本道最新日本道在线观看 | HEYZO高无码国产精品227| 91精品国产91久久福利| 91亚洲电影| 欧美自拍网| 99re综合伊人| 98超碰日本| 久久综合超碰| 久久一二三四不卡| 欧美三级免费伊人| 日本天天吊| 五月综合激情网| 大屁股xxxxx| 99久久精品无码一区二区| 免费啪啪av| 97精品一区二区视频| 97亚洲综合| 超碰在线一区| 天天澡天天狠天天天做| 男人亚洲天堂| 日本一级特级毛片视频| 久久人妻| 中文字幕第9页萱萱影音先锋| 久久久九九九| 午夜小电影在线插入淫高潮| 欧美中文字幕精品人妻| 97国产人人| 少妇综合网| 老司机福利青青草| 操b在线观看| 一个色导综合| 国产黄片精品在线| 亚洲少妇综合在线播放| 一级久久久久久久久久久| 丁香五月综合| 婷婷色中文字幕| 久久97| 嗯嗯嗯啊啊啊在线免费观看| 亚洲精品一二三四区| 五月天伊人| 精品人妻一区春色| 伊人嫩草| 丰满人妻-区二区三区| 97欧美视频| 牛牛操视频逼| 十八禁成人网站在线观看| 在线无码操| 这里只有精品视频在线| 亚洲国产欧美日韩人妻日中文| 99re这里只有精品3| 欧美亚洲日韩16色| 蜜桃臀久久| 天天色欧美| 国产精品久久久久久久电影渣男| 男人高清无码一区二区| 日本在线不卡一二区| 人人乐大香蕉| 久久国产精品熟女人妻| 久草成人影片| TS人妖另类精品视频系列| 嗯啊视频免费在线观看| 日本黄 R色 成 人网站| 亚州操操穴网| 美女91av| 日韩少妇无码| 国产精品久久久久中文字幕| 激情五月天婷婷| 麻豆AV96熟妇人妻| 一本大道青青| 1769国内精品视频| 久久婷婷亚洲| 久久精品免视看国产成人﹣蜜臀av一区. 久久精品免视看国产成人,蜜臀av一区 | 中日亚韩免费视频| 九九亚洲| 欧美影音在线| 97欧美精品| 激情视屏国产乱伦强奸| 91人妻丝袜无码| 日日日日做夜夜夜夜做无码97| 久久久蜜桃臀无码视频| 欧美另类综合久久| 国产精品 亚洲情色| 97视频在线免费| www久久国产精品| 一区二区三区视频在线观看免费| 精品视频123区小说区| 精品制服美女中文一区二区三区| 中文操逼字幕| 久久五月天婷婷| 精品久久久不卡一区二区| 97超碰护士| 色小视频蜜乳| 一本久久精品中文字| 亚洲天天综合| 一起草av| 二级毛片| 日韩乱伦AⅤ| 91啪9色| 欧美精品一二三| 99久久久er直播网址| 99re8超碰| 天久久久噜噜噜久久国产精品爽爽 | 国产肏逼网站| 日韩亚洲美女一区久久| 91精品91久久久久77777| 国产乱伦亚洲| 操我啊啊啊啊啊| 精品天堂| 九九色影院| 日韩特一级久久| 插穴性爱视频在线观看| 91久久18禁| 丰满人妻区一区二区三| 26uuu欧美| 九九热精品视频六| 国产福利第一视频| 中文字幕精品码亚洲| 99色色网| 久久大香蕉97| www.av在线观看| 精品妇操一区二区三区| 岛国网址国产 | 日韩欧美日韩| 久久99国产综合精品女同| 国产91 丝袜在线播放00-百度| 久碰视频| 日本色日夜干| 人妻夜夜爽天天爽麻豆三区网站 | 91干熟女| 性欧美999| 性吧在线视频| 91老熟妇| 免费9 1久久| 国产美女裸体秘 永久无遮挡| 欧美国产视频| 欧美日产国产在线成人第一区| 330Dv国产女人终合视频极品人与兽| 国产精品爆乳懂色蜜乳| 欧美一区二区三区大综合| 欧美Ⅴ性爱| 99亚洲人人| 国产精品无套内谢| 情色五月天就去干| 九九这里只有精品| 国产美女高潮| 97天天操天天干| 久久久久亚洲?V片无码V| 人人爽夜夜玩视频| 亚洲AV免费在线| 91骚熟女| 麻豆一区二区三区精品| 加勒比久久综合网高清| 色路综合| 在线啊啊啊啊| 曰韩操B| 国产午夜福利合集| 欧美性爱97超碰| 国产传媒午夜理伦精品| 91欧美丝袜| 男人天堂2019亚洲| 午夜福利1区2区3区| 97精品97久久| 红杏大香蕉| 伊人一区二区在线播放| www久久精品| 麻豆 欧美 日韩| 午夜AV人气不卡| 水滴偷拍| 欧美中文狠| 色5月婷婷| 久操操AV电影| 黑人精品欧美一区二区蜜桃| 中文字幕国产精品1区| 国产中文大片资源中文字幕 | 日韩 欧美 国产 麻豆| 九九热精品在线| 波多野结衣被操50分钟免费视频| 青青草原av| 欧美白嫩在线放| 色色综合网站| 大香蕉黄色一级片免费看| 香蕉精品二区二区| 亚洲在高跟鞋自慰久久在色线| 香蕉久久国产AV一区二区| 老熟女乱伦一区| 婷婷8月天青娱乐| 屌妞视频久久久久久久久久久久| 日本 欧美 国产一区| 亚洲天堂五月天国产| 久久大香蕉97| 大肉棒导航| 色噜噜国产在线| 天天看,天天做| 亚洲av无码国产精品字幕| 欧美最婬乱婬爆婬牲视频| 亚洲天堂第一页| 欧美午夜精品久久久久久超碰| 日韩欧美中文日韩欧美色| 97久久久| 91情色在线| 午夜精品人妻二区三区| 色 婷97| 丝袜 亚洲 偷拍| 免费的黄片wwwwww| 欧美天天干| 国产精品久久久吖| 久久色精品视频在线| 97草草| 日韩资源网| 99热在线不卡| 不卡超碰护士AV在线免费播放| 操逼日韩无码| 青青操狠狠撩| 黄色区免费观看中文字幕| 欧美高清18A片| 91啪啪| 久久69| 亚州性色| 91性情| 超碰色图| 成人三级片一区二区三区视频| 少妇久久久免费| 国产久久久久影院老熟女| 一本一首道人妻少妇免费久久| 狼人综合婷婷激情四射 | 色哟哟国产精品免费网址| 人妻熟女一区在| 99这里只有精品| 综合熟女| 91美女丝袜诱惑视频| 一起草AV| 人妻久久久久久久久久久久久久久| 柠檬AV导航| 婷婷伊人| 色婷婷综合久久久久中文国产精品一区中文字幕,国产福利电影一区二区三区 | 欧洲射精91| 色婷婷综合久久中文字幕雪峰| 国产四虎在线| 男女91| 99蜜桃臀亚洲成人在线观看| 亚州中文字幕超碰97| 亚洲人91| 欧美日韩国产色五月综合在线| 精品国产综合久久福利,热99这里有精品综合久久,99热这里只有免费国产精品,精 | 麻豆天美在线喷水AV| 一区二区三区色综合| 国产欧洲精品亚洲午夜拍精品| 久操av在线| 日韩欧美麻豆 | 国产成人久久精品蜜臀| 26uuu最新| 91精品久久久| 欧亚性爱啪啪| 99亚洲天堂| ss久久| 久噜噜| 91精品国| 97干在线| 国产精品国产自产高清AV| 永久免费发布性爱网| 无码少妇精品一区二区60岁老人| 99热超碰| 少妇同性| 国产日韩中文字幕欧美| 手机在线大香蕉| 日产欧美电影一区二区三区| 中文字幕91页| 激情久久久| 超碰性爱97| 果冻传媒A片一二三区 | 国产精品久久久久999| 这里只有97精品| 免费精品国偷自产在线在线| 中国国产精品一区视频| 日本岛国黄色网址| 欧美色图亚洲色图成人在在线| 欧美黑人极品高潮喷吹熟女黑人性暴力日韩在线欧美极品一区二区老师 | 亚洲熟妇乱女区二区三区| 96国产污污污丝袜| 色97干| 亚洲精品无码成人久久久99| 色色99| 青青国产在线拍揄自揄拍| 后入式999| 黄色AV免费| 制服乱伦| 蜜臀久久久| 欧美九九九九九| 最好看的中文字幕在线2018| 天天干美少妇一区| 日韩大香蕉精品在线视频| 91黑丝在线| 香蕉人人操tv| 少妇六月天| 欧美另类丝袜熟女| 日韩中文字幕精品一区在线| A久久| 夜夜免费视频| 日本久久女同性恋视频| 天天操天天舔| 青青草视频导航官网| 欧美激情视频一区二区| 波多野结衣先锋影音| 91人人看| 久久久久久久久9| 国产自产自拍| 欧美激情视频一区二区三区不卡| 97操B| 91三级理论片播放器| 夜夜狼人妻| 五十路一区无码| 国产AV超爽| 久久草视频污视频| 一区二区三区美女超清| 亚洲中文字幕97久久精品少妇| AV男人天堂网| 欧美日韩日产免费网站看| 啊啊啊啊啊啊在线看| 美女十八禁| 亚洲无码AV九九九| 亚洲综合九| 情趣丝袜无码操逼视频| 99久久无色码| 国产精品第一页国产大屁股视频免费区| 影音先锋乱| 欧美性综合| 日本成人A片免费看| 97干色天堂| 人人搞人人插人人操| 97干日韩| 色五月AV| 性站 | 亚洲天在线| 九九黄色视频在线观看| 97超色| 韩日无码在线观看| 色天欧美| 日韩精品亚洲专区在线影视| 亚洲凸凹超碰成人| 高清成年美女黄网站免费大全| 日韩ab网| 亚洲精品尤物yw在线影院| 欧美一区二区传媒| 日韩激情毛片一级久久久| 亚洲一区二区三区麻豆传媒| 国产强奸无码乱伦| 中文字幕视频2区| 日韩有码 一区二区三区| 亚洲91亚洲| 18啪啪手机免费性爱| 国产九区| a级成人毛片免费视频高清| 天天操天天看| 日韩成人大片在线观看| 综合网少妇| 屌逼传媒| 极品白嫩美少妇在地板上位骑射淫水泛滥| 嗯啊不要啊在线| 亚洲无码 国产无码| 性色国产东北露脸精品视频| 伊人精品久久网站| 国产中文日韩欧美一区二区三区人妻丝袜美腿| 国产野战露脸在线播放| 九99久久| 日韩人妻少妇 一区二区三区| 免费试看60秒| 97精品97| 日韩免费性爱视频在线观看| 国产路线专区| av午夜玫瑰| 在线观看亚洲专区| 大逼色网站| 欧美欲色| 91操人| 香蕉综合网| 青青草精品| 手机看片1025| 神马九九| 日韩精品国模| AA丁香综合激情| 免费αV在线视频| 日日干夜夜骑| 国产一区96在线| 国产成年精品高清在线观看91| 伊人久大| 日韩精品人妻系列无码天堂| 黄片免费久久久久久久| 综合亚洲欧美| 成人热久久精品| 精品久久久亚洲AV成人网站| 中文乱码字字幕在线第5页| 男人天堂 天天射| 麻豆60秒| av在线免费一区二区| 91天天综合日韩欧美| 超碰夫妻97| 69超碰综合| 九九久久一区二区伦理| 亚洲日韩美女丝袜美腿人妻视频| 人人妻人人色| 久久一二三四五六七八九区区区 | 五毛骚逼极品美女怕怕| 日韩欧美午夜一区二区| 亚洲一曲日韩精品| 91性高| 亚洲人成色9999精品久久 | 囯戸精品高潮呻吟旡码| 啊啊啊在线观看免费视频| 中文字幕日韩电影人妻| 在线情色电影 91大| 女人喷水视频在线观看| 少妇色欲综合网2| 男人的天堂2010| 成年人黄色视频免费| 欧美久久人妻少妇一区二区| 欧美成人黄网色网站| juliaann丝袜| 中文字幕天天天天天| 女人被男人桶爽视频网站| 骚妻少妇精品性色无码四色A V| 日本天天操| 在线亚洲 欧美 日本专区 | www久| 日本性爱视频一级| 97av,com| 超碰日本97美女人妻人人玩人人爱| 18禁在线视频| 97综合久第一页| 青青草自拍视频在线播放| 无码国产Av| 欧美性性性| 殴洲老熟女| 1024香蕉视频| 国产精品999zyz| 欧美 亚洲 第一页| 中文字幕、久久精品国产2020、久久综合久久自在自线精品自、亚洲 | 大香蕉综合| www欧美性爱| 日本韩国国产精品一区| 任我爽在线视频免费观看| 伊人97超碰| 色婷婷九月天天综合| 日韩熟女三十乱伦| 干美女人妻| 久久亚洲人妻| 乱精品一区字幕二区| 黄色区免费观看中文字幕| 91少妇| 日韩本不卡视频在线观看| 精品国产99| 亚洲少妇色| 久久精品国产亚洲AV无码电影| 国产无码精品无码| 国产精品在线免费| 任你干在线视频| wwe 天天干.com| 人妻天堂综合网| 超碰人人超在线观看| 小日子操bb在线看| 欧美天天综合网| 欧美在线亚洲| 尤物视频偷拍免费| 91精品导航| 久久男人精品| 人人操人人色网| AV中文字幕三四五| 97就爱干| 大香蕉欧美国产日韩高潮| 人妻精品综合中文字幕在线 | 美女人妻色网站| 九九AV| 欧亚在线视频| 国产强上视频在线观看| 国产一级特黄大片处女| 在线播放成人高清免费视频 | 亚洲免费日韩在线一区二区| 男人的天堂,欧美亚洲另类国产日韩,日本高清一区二区 | 人人爱人人操人人性| 亚洲欧洲日韩天堂av| 免费观看网黄| 在线毛片片免费观看| 久久永久无码人妻视频| 欧成人精品H无码| 草草草草视频| 欧美黄业| 天美91| 97爱爱| 午夜舔阴达高潮视频免费看| 96精品久久久久久久久| 亚洲精品九九九| 综合久久97| 91福利网在线观看| 一二三区操逼国产91| 国产午夜精品理论片一二三区区| 超碰欧美| 精品日韩人妻视频| 久久精品国产亚洲妲己影视| 女人与公拘交酡2020视频| 国产精品高清2021在线| 久久性爱精品一区| 老熟女乱子伦中文字幕一区二区| 日本不卡高清视频| 日本高清_区二区三区| 日韩免费看黄片| 日本色色色| 校园春色综合| 91红杏| 久久人妻无码毛片A片麻豆| 午夜操操操| 97在线免费视频观看|