日韩精品一区二区三区在线视频放-无码中文字幕V?一区二区-成年片免费观看视频-国内少妇人妻丰满av-国产精品中文字幕免费观看-亚洲成人久久一区二区三区-国内少妇偷人精品视频无缓冲-一区二区国产精品日本一区二区三区在线网

ARTICLE DETAIL

資訊詳情

深耕商務(wù)建站與企業(yè)官網(wǎng)運(yùn)營(yíng)的一線實(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é)碼長(zhǎng)度、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
返回資訊列表
亚洲一二三精品久久网 | 大香蕉啪啪啪| 久久久久人妻二区精品叶可怜| 噜噜噜亚洲精品| 国产树林里野战在线看| AV乱伦国产| 欧美青青视频| 五月天丁香欧洲日韩| 国产 日韩 欧美高清| 中文字幕乱偷人妻久久艾草网| 婷婷久久综合| 国语精品内射在线观看| 极品色www影院| 超碰在线人人射| 天天搞欧美| 久久不卡一区二区| 男女打扑克高清网站| 人人考人人摸人人干| 国产一级高清免费观看| 蜜臀久久99精品久久久久电影| 黄总AV色图| 狠狠色综合网| 福利在线观看一区二区| 中文字幕高清精品一区| 黄色工厂这里只有精品| 欧美洲精品一级| 强奸少妇AV导航网| 久久综合99| 久久三| 久久精品一区二区三区四区五区| 蜜桃午夜视频一区二区 | 夜夜騷av、一區二區| 大香网伊人久久综合| 91一区二区三区蜜桃| 青青操视频在线| 99热在线只有精品| 无马一区二区| 国产久久天堂资源| 亚春色色| 久久久久99精品成人片蜜臀| 蜜臀va69| 青青青青操国内视频在线| 蜜桃臀久久| 九九九九97| www被窝色com| 四虎在线免费视频| 蜜桃丰满熟妇av无码区不卡| 韩日自拍| 国产精品乱码久久久久| 思思视频免费看网站| 三上悠亚在线毛片91| 亚欧操逼片在线观看 | 熟妇视频一区二区三区在线| 国产精品久久久久久久久久久久| 亚洲精品97久久| 国产三级中文字幕粉嫩 | 少妇综合| 亚洲一曲日韩精品| 一起草AV| 爱欲AV| 强上我不卡卡| 91丝袜美腿片| 干美女人妻| 无码九九| 色综合一区二区三区| 91天天看| 五月丁香综合| 91亚洲影院综合| 精品美女少妇一区二区三区| 偷拍欧美亚洲| 国产成人无码久久精品| 91精品国产麻豆国产自产在| 密桃99999| 诱惑人妻欧美一区在线播放| 国产精品网址| 约操熟妇| 99蜜桃臀亚洲成人在线观看| 久久精品操| 欧美操逼录像国产黄色国产| 97精品一区二区视频| 嫩呦国产一区二区三区AV| 97超碰人人操人人操| 搡老女人老妇女AAA一VU麻豆 | 亚洲免费看片| 中文字幕少妇色| 久久久禁| 亚洲精品自拍| www色婷婷| 日本韩国一本产品小视频日本韩国一本产品久久久产品小视频日本韩国一本产品久 | 久久婷婷精品| 日本99一区二区| 亚洲影视高清第一页| 伊人国产成人av网站| 二男一女成人A片| 久久精品色欧美aⅴ一区二区| 五月丁香激情啪啪| 中文字幕97色| 高清国产无码av| 欧美久久伊人| 久久深夜无码| 天天看天天日天天操| 第四色奇米影视777| 人妻乱仑一区二区三区| 中文一区二区婷婷视频| 天天夜夜rb| av天堂天堂av日韩| 78综合网| 大香蕉综合网| 中文字幕 国产区| 日韩99神马视频片| 日逼97| 人人操我人人干| 欧亚综合一卡二卡中文字幕| 91模特在线观看| 可能人人看人人摸| 东京热精品97综合网| 九九热精品视频六| 久操大香蕉手机视频在线看| 日日日日做夜夜夜夜做无码97| 欧美国产精品久久九九| 大香蕉人妻| 国产成人精品午夜福利| 国产精品久久99日日| 性色乱AV一区二区| 欧美一级在线观看成人| 青青草视频久久| 色噜噜人妻av中文字幕| 99视频只有精品| 国产欧美一区二区| 久一区久久蜜桃| 超碰在线看| 91国产丝袜美女| 亚洲国产婷婷在线播放| 1区2区3区中文字幕日韩| 久久亚洲国产成人| wuyechaopeng| 国产亚洲综合欧美一区| 久久系列| 日本丝袜美腿人妻九九| 久久国产视频性吧| 色姑娘综合网| 免费农村成人少妇人妻Aa一区二区视频| 99热在线只有精品| 9久久9综合| 狠狠婷婷亚洲中文综合久久| 午夜啊啊啊| 国产精品高清2021在线| 色婷婷淫色网| 九热视频| 久久精品国产亚洲妲己影视| 四虎精品亚洲| 中文字幕日产av人| 成人性爱高清视频免费看| 国产后入清纯| 国产久久一区二区午夜| 亚洲少妇综合在线播放| 天堂男人网| 综合网久久| α√在线| 中文字幕青青草| 精品国产嫩穴视频| 蜜乳AV一区| 97国产|免费| AND人妻系列| 久艾草在线精品视频在线观看| 亚洲 欧美 另类 日韩 人妻一区 | 精品午夜福利导航| 天天超级碰碰碰| 青青伊人这里只有精品| 亚洲成人AB| 91蜜臀熟女| 亚洲1区2区三区高清中文字幕| 久久久免费高清中文视频| 岛国网址国产| 久久精品黄色| 丝袜天堂网| 夜夜中出国产| 欧美强奸一区二区诱惑| 欧美日韩免费性爱| 久久岛国| 少妇人妻激情四射| 日本天天人人狠狠在线日美女 | 再深点灬舒服灬太大了好硬好爽| 久久永久无码人妻视频| 久久夜夜| 久久精品操| 久插综合| 丁香五月天啪啪| 日韩在线性爱免费视频| 好吊色青靑草| 日本高清视频在线观看黄已三辽| 国产日韩欧美| 色踪合AV| 精品十三区| 欧美后入式| 天天插夜夜爽| 射丝袜高跟鞋99| 国产无套粉嫩白浆在| 特级特黄一级毛片免费| 欧美日韩午夜精品一区二区三区| 国产精品一区二区三| 国产树林里野战在线看| 波多野42部激情无码喷潮| 亚州精品人妻一二三区| 亚洲Av噜噜一区二区三区妖精| 亚洲九区| 长长久久免费视频| 激情综合久久| www.99中文字幕| 日本爽爽爽爽爽爽免费视频| 97免费在线观看| 中韩中文字幕在线观看| 天操天操夜操夜月月年年操操| 大香蕉99热| 亚洲情色91| 国内精品999| 久久婷婷视频| 天天天天天干夜夜夜夜夜操| 玖玖婷婷五月天| α√在线| 中文字幕在线高清男人的天堂| 色色亚洲| 美女刺激久久国产欧美| 大香蕉97久久| 亚洲色图20p| 97综合国产精品高潮久久| 97中文超碰| 国产原创自拍| 色色综合网站| 天天摸,夜夜摸| 人人妻人射| 青青操狠狠撩| 91人妻素女| 韩日无码在线观看| 丝袜制服字幕在线| 青娱乐大香蕉| 日本高清一本二本免费不卡| 香蕉人欧美综合| 视频国产欧美在线播放| 八戒无码国产午夜福利| 久久黄色性爱视频| 人妻一区视频| 日本中文字幕在线电影| 超碰午夜在线| 青草园大香蕉| 91第一页| 日韩激情啪啪啪| 国产极品99热在线播放69| 亚洲精品官网在线观看| 丝袜美腿诱惑亚洲欧美视频在线观看 | 蜜臀AV网站| 约操熟妇| 99国产精品人妻人伦| 人妻少妇一区二区| 精品78| 国产中出内射一区二区| 亚卅熟女乱色| 一区二区三区日韩欧美| 96国产污污污丝袜| 天久久久噜噜噜久久国产精品爽爽| 久久久久久少妇| 97中文热色| a片在线播放| 欧美亚洲| 夜草欧美| 自拍偷拍 日韩无码| 国产精品原创巨作?v网站| 思思热在线cao| 亚洲色诱惑| 任我爽视频在线观看| 麻豆一区二区三区精品| 国产精品国产精品国产| 日语五十路和六十路亚洲国产精品| 国产精品久久久久久高清无码免费看| 久操com| 久久性爱视频| 超碰97欧美日韩| 9美女超碰在线免费观看| 国产精品又黄又猛又粗| 五月丁香综合啪啪| 99热日| 蜜臀一区二区三区在线| 天美传媒国产原创中文字幕亚洲欧美另类| 久久亚洲色图中文字幕| 久久成人国产精品| 欧洲Au麻豆| 国产一二三福利视频网| 亚洲最大网站av| 97天天做| 八戒无码国产午夜福利| 色播综合| 国产精品不卡一区二区三区| 日本一区二区不卡| 久久9精品视频| 麻豆一区二区三区在线看 | 97人妻免费中文字幕| 婷婷久久久| 神马久久69| 亚洲情欲| 九九热精品免费视频| 亚洲在线| 久久仑合| 国产精品成人无码av无码免费| 五月激情小说| 99热在线不卡| 午夜操逼不卡| 一牛一区二区三区久久| 成人羞羞视频国产| 久久久噜噜噜久久久| 亚洲午夜蜜臀| 日韩人妻精品| 亚洲一区二区三区AV无码| 亚洲日韩欧美一区二区| 国产熟女完整版中字| 夜夜騷av、一區二區| 亚洲丝袜少妇在线| 国内精品久久国产,www香蕉久久五月丁香,亚洲欧美日韩精品永久在线,日本精品一 | 婷婷中文网| 国产一区二区在线播放,久久亚洲精品中文字幕第一区,亚洲精品在线中文字幕视频 | 金莲网址| 拍拍拍拍大尺度黄色三级片拍拍拍拍拍照| 91操操| 17c嫩草51久久91嫩草| 极品内射| 国产激情久久久| 国产女人视频三四五区| 六月丁操逼| 亚洲国产奇米影视久久| 青青操日韩| 蜜桃视频精品一区二区| av天堂精品久久| 四虎免费在线播放| 亚洲成人一二三区| www.色婷婷| 国产福利一区二| 九九九精品色乱九九九| 亚洲五月丁香花狠狠干一区二区三区 | 国产日韩人人| 黄污污污污| 中文字幕日韩电影人妻| chaopen97久久| 日本人体九九九九九九| 少妇干B| 婷婷超| 狠狠操狠狠燥| 神马午夜久久久| 色狠狠综合| 国产精品一区av在线| 夜夜黄| 媚薬在线视频麻豆| 欧洲综合视频| 精品国产精品一区二区| 国产日韩欧美中文在线播放| 日韩有码中文字幕女同性恋 | 日韩av免费一级电影| 欧美亚洲系列| 日本好吊色视频| 青娱乐 成人娱乐在线| 婷婷AV一区二区三区| 欧美日韩国产成人高清| 久久久久久999| 国产精品蜜臀久久久久无码AV| 嫩草 我啊~嗯~在线| 丝袜喷水在线| 少妇被玩视频二三区| 亚洲免费人妻在| 欧美A片中文字幕| 九九九九精| 热热色综合网| 熟女久久久| 97视频www| 男人的天堂2018.| 青青草日韩无码| 99这里有精品| 久久久久久久人妻| 麻豆久久久一区二区| 伊人99热| 天天舔天天 | 综合熟女| 老色69| 五月丁香久久| 开心五月深爱五月| 日韩精品区二区三区不卡| 九九性爱网| 亚洲第一成人影院色播| 岛国视频免费在线观看| 18禁网站在线播放| 国产精品熟女丝袜一区二区| 六月婷婷色综合| 五月色网| 爆乳免费黄网站| 91久青| 丰满欧美少妇| 欧美亚综合色图| 日韩一999精品| 日韩精品人妻中文字幕有码午| 美女尤物福利视频| 中文有码第五页| 大香蕉国产中文自拍| 中文在线久久字幕| julia中文字幕在线观看| 大香蕉欧美国产日韩高潮| 91美女视频在线免费观看| 蜜臀久久久国产| 中文熟女五十乱码在线| 狠久久| 亚洲日韩电影| 日韩极品无码B| 欧美日韩香蕉| 六九九九| 高潮综合网| 91无码人妻精品一区二区三区蜜桃| 久久激情视频| 国产偷拍网站| 日韩AV无码中文一区二区| 韩国一级做A片免费的| 99久久网站| 怡红院视频在线| 四虎884a| 97chaopengongkai| 亚洲熟女精品| 九九av| 在线视频一区二区传媒| 加勒比综合在线| 日韩成人无码| 婷婷伊人綜合中文字幕| 欧美色图亚洲色图成人在在线| 在线观看A啊啊啊| 亚洲黄色电影| 亚欧无码在线| 日日干日日操五月天伦理视频| 任你干在线视频| 九九九九国产| 日本欧美国内在线| 大奶尤物鲍汁淫荡欧美视频粉嫩夜夜骚| 天堂av最新电影网| 91色人妻| 中文字幕老熟妇黄色视频| 欧美黑人极品高潮喷吹熟女黑人性暴力日韩在线欧美极品一区二区老师 | 亚洲中字幕日本一区二区三区| 一区二区影院| 日日黄色三级网站| 久久性爱视频免费看| 色综合久久888| 久久一二三四五六七八九区区| 91日产桃蜜| 黄色在线网站| 99xav| 国产精品香蕉| 日韩精品99999| 97超碰公开| 99久久久er直播网址| 德国一二三不卡| 久久尹人大香焦视| 欧美疯狂做爰xxxx| 99这里都是精品| 夜夜天天噜狠狠爱2021| 97在线欧洲| 色噜噜狠狠色综无码久久合欧美| 香蕉综合网| 白嫩妹子国产骚| 久热香蕉精品在线视频| 青青欧洲黑| 黄色香蕉视频网站一区| 超碰国产情侣自拍网| 亚洲AV色图| 国产女生在线| 九九九九一区| 大香蕉五月天婷婷| 97国产中文| 99日韩| 国产精品一区在线播放| 日韩午夜啪啪视频| 伊人97| 91chinese在线| 欧美另类天堂| 大香蕉碰碰| 欧美色就是色| 欧美内射少妇| 久久欲| 夜夜夜夜夜夜夜夜夜狠狠狠狠狠狠狠| 一个人免费视频观看在线WWW| 啊啊啊啊视频免费| 中文字幕人妻资源在线| 日本一片一区| 国产亚洲福利第一页丝袜| 美女大乳久久久久久久女人18| 强奸抽插av| 五月天综合网| 乱伦av麻豆| 天天干天天日天天射黄色片| 成人七区| 国内一级精品| 中文字暮97| 香伊人在线| 啊啊啊啊好大好硬啊啊啊啊啊 | 色网综合网| 强歼乱伦资源网| 久久久啊啊啊| 啊啊好多水| 日韩卡一卡二卡三在线| 亚洲国产97在线精品一区| 伊人成人中文字幕久久网| 变态综合色| 久久久久骚| 日逼视频日本| 欧美视频一区二区三区| 伊人久久大香线综合无码| 免费精品人妻一区二区三| 久久视频,这里只有精品| 久久色情| 亚洲啪啪视频免费| 狼狼色丁香久久婷婷综合五月| 亚洲综合图片在线| 三级三久久线久久99久目本WW| 国产99热| 超碰 国产熟女精品一区| 九九性视频| 大香蕉伊人网| 男女性感激情网站| 免费日韩黄片| 欧美国产欧美在线观看| 秋霞影音一区二区三区| 九九精品99| 蜜桃视频成a人v在线| 综合久久六月久久婷婷| 丰满人妻大屁一区二区| 欧美夜夜狠| 欧美熟女激情| 男人的天堂日韩| 99热在线播放| 天天操夜夜操狠很操| 久久老子无码午夜伦不卡| 亚欧精品久久久久久久久久久| 久久久工口| 鸥美极品| av毛片aaaaa免费看| 亚洲乱伦图片视频| 日韩情色视频| 综合激情97 | 91男女啊啊啊| 伊人四虎综合| 成人无遮挡毛片免费看| 伊人网青青| 99热婷婷| 极品AV网站在线观看| 久久综合乱子伦国产免费| 中文日韩欧美熟| 91无遮挡| 成人丁香五月| 亚洲有码第一页| 亚洲欧美成人网站AAA| 中国女人内射6XXXXX| 一牛影视久久久一区二区三区| 91在线国产后入风骚翘臀美女素人| 欧美亚洲图片| 色色五月天婷婷| 久久久久亚洲精品| 强奸乱伦AV一天堂网| 大香蕉伊人久久| 经典丝袜一区| 日本日逼高清| 亚洲熟妇熟在线电影视频| 欧美97se| 爱做久久久久久| 91粉芽高清在线一区二区| 中精品一区二区三区| 波多野42部无码喷潮在线观看| 日韩精品国产精品五码一区二区| 欧美97免费| 国产综合永久精品日韩鬼片| 中文日本免费高清| aⅴ日韩成人电影av在线免费看av大全 | 99色在线| 99久久精品无码一区二区| 撸撸成人在线视频| 国产日韩区| 欧美日韩黄色片一区二区三区四区人与兽做爱 | 中文字幕精品一区二区精品| 粉嫩av一区二区三区天美传媒 | 日本操逼视频导航| 亚洲污污网站| 中文字幕91页| 亚洲欧美setu| 欧美性爱日韩性爱| 无码99| 丝袜美腿亚洲| 狼人综合婷婷激情四射 | 天天躁狠狠躁av| 男女激情黄色网址| 99青青草国产视频| 9丨亚洲一区二区在线| 欧美 亚洲 大香| 激情小说图片亚洲首页| 九九九久久久久| 黑人狂躁日本妞一区二区三区| 超碰综合色| 日韩欧美国产一区二区三区四区| 亚洲熟妇白浆无码AV| 人妻熟女av国产网站| 一本大道青青| 999日韩中文精品观看视频。| 精品无吗m| 蜜桃臀 后入 一区 二区 三区 在线| 青青青国产手线观看视频2| 超碰在线人妻| 青青青在线高清视频在线一二三四区 | 人人 操人人 操人人| 久久日本熟妇熟色高清| 加勒比久久综合网高清| 玖玖爱伊人玖玖爱| 欧美色综合影院| 777超碰| 精品久久久久9999| 日本成人A片免费看| 777AV电影| 日本高清加勒比| 99精品无码| 91白虎| 国内精品久久国产,www香蕉久久五月丁香,亚洲欧美日韩精品永久在线,日本精品一 | 久久久草成人网站久久久草成人久久久草久久久| 91日韩国产欧美亚洲另类精盘州至城都| 亚洲色鬼| 日本操逼视频导航| 日韩人妻无码不卡网站| 亚洲乱色视频一区、二区在线| 日韩综合成人免费视频| 超碰97人人乐| 国产天天骚| 把腿张开老子CAO烂你| 日本 情色 1区| 欧洲乱码一区二区| 国产精品无码AV网站| 思思热国产高清| 少妇激情AV| 久久大香蕉手机高清| 99精品视频在线观看免费| 啊啊啊啊啊在线| 精品999日本| 日韩草久视频| 美女大乳久久久久久久女人18| 久久精品一区二区| 亚洲天堂久| 大香蕉国产中文自拍| www…国产操逼| 免费一级精品啪啪视频| 9久久久久| 丝袜美腿射精91| 亚洲AO在线| 五月综合色| 成人性爱美曰韩| 操逼无码操逼| 1区2区3区视频| 中文字幕色AV| 免费草草草草草视频| 超碰97资源大奶| 色噜噜婷婷| 免费a在线播放v| 日本不卡高清视频| 亚洲最新Av| 清纯唯美亚洲综合| 91少妇高潮| 无码操逼天堂| 日韩精品电影| 日日骚精品视频| 国产性刺激| 毛片视频白嫩| 91精品国产综合久久久蜜臀| 操99| 久久久五月天| 国产欧美一区激情交| 情趣丝袜无码操逼视频| 大屁股人妻女教师撅着屁股| 国产 日韩,欧美 自拍| 久久精品一区二区三区蜜桃臀| 美女AV一区二区| 伊人一区二区三区| 久久精品小视频| 中文字幕 人妻不满 在线视频| 日本中文字幕在线电影| 变态乱伦伪娘灌肠一区二区| 98人妻精品一区二区色欲| 色在线视频导航| 日韩一级欧美一级国产一级台湾| 欧美91在线| 精品综合久久久久久五月天| 成人精品在线免费视频| 亚洲?V高清一区二区三区尤物| 日本一区不卡| 亚洲国产一级黄色视频| a男人的天堂久久一级A毛片| 欧美成人A√在线一区二区| 国产精品久久天天干| 日韩国产精品人妻无码久久久| 欧差乱伦二三| 八戒无码国产午夜福利| 大香蕉视频一二三区| 亚洲欧美综合区自拍另类| 日韩精品中文字幕一| 国产无马视频| 九九伊人网| 欧美综合骚| 中文字幕 一区二区 亚洲无码| 日韩在线人妻网站| 天天插天天操天天摸天天射天天看| 国外91| 一区二区三区一亚洲中文字幕、综合区灬| 男人综合网| 亚洲色图第四色| 欧美狠狠狠| 丝袜 中出 制服 人妻 美腿 中文字幕| 加勒比海人人操超碰在线| 一区二区三| 久久久久久网址| 视频国产精品未满十八禁止在线观看| av资源在线播放天堂| 99精品在线播放| 99啪啪视频| 日本不卡一区二区三区| 久久r精品| 性色综合网| 日本欧美韩国国产在线| 乱色视频中文字幕| 久久久久久久久久久久久久久性生活视频 | 97天天操| 日韩 欧美 视频 在线 一区| www.夜夜| 欧美少妇性乱| 亚洲精品97久久| 国产精品网址| 亚洲综合婷婷| 激情亚洲天堂| 香蕉综合网| 亚洲字幕一区二区| 亚洲无套久久嗯嗯| 超碰到97情色| 长长久久88视频| 91国产美女丝袜足交精品视频| 欧美丝袜91| 日韩激情啪啪啪| 曰韩精品九九无码| 91国产丝袜美女| 久久久国产av美女私房| 大香蕉综合| 色综合20p| 亚洲精品一区二区日本| 日本精品一区二区中文字幕| 日产中文字幕2020| 9丨久久九九九| 乱伦av麻豆| 色婷婷综合久久中文字幕雪峰| 欧美亚洲丝袜人妻制服中文99| 成人无遮挡毛片免费看| 男人夜色天堂ss| 99超碰网| 亚洲精品白浆高清久久久久久| 婷婷色婷婷| 亚洲精品九九九九九九| 做爱A级亚欧| 蜜臀亚洲中文| 欧美人妻少妇| 久久久婷婷婷| 青青草中日韩在线| 思思热久久成人| 2000亚洲男人天堂| 久久成年片色大黄全免费网站| 婷婷五月av| 精品免费成人久久| 熟女六十路| 综合视频91| 精品国产一区二区三区香蕉欧美| 日本伦理一区二区| 四虎在线观看视频| 日韩另类色图| 欧美色青| 久久9 9 9精品| 91综合网站| 9/A片| 美女被啪到深处抽搐视频| 亚洲综合色男人网| 99夜夜操| 天天操女人| 人人操人人摸人人骑| 日韩欧美视频青青| 啊啊啊啊啊啊啊啊视频| 99热亚洲天堂| 丰满少妇一区二区三区免费看| 色综合五月天| 男人在线天堂| 亚洲色图 欧美热图 清纯唯美 另类自拍| 99re28在线观看| 日本色婷婷| 九九热AV| 国产欧美一区二区| 久操操AV电影| 91欧美性| 亚洲第一在线视频| 东京热,男人的天堂| 五月婷婷综合网| 国产强奸乱伦第1页| 天天看少妇| av强奸乱轮| 欧美天天在线| 这里有精品| 亚洲欧洲激情卡通另类文学四射小说网站 | 97干97色| 黄呦呦在线| 日本色色色视频| 97在线公开视频| 懂色AV一区二区三区| 欧美v亚洲v综合v国产v妖精| 裸体美女久久久| A片三级无码| 男人的天堂免费| 久久中文色图| 另类一区| 天天日夜干| 日韩欧美丝袜诱惑| 日本在线视频导航| 欧美色图亚洲激情| 蜜臀AV成人精品蜜臀| 大香蕉黄色一区| 久久亚洲AV无码白度| 色盈盈影院| 日韩在线观看中文字幕视频| 久久精品一区二区一8| 爱爱60秒免费视频| 777琪琪午夜免费A片| 超碰吊日色| 欧美另类自拍 | 日本曲间由美性生活片| 欧美精品99久久久**| 欧美美女视频| 今日头条成人一区二区三区四虎精品| 五月天激情影院| 超碰国产精品无码| 国产美女自拍视频| 日本最新免费韩国1区2区视频播放| 日韩999| 国产精品区在线12p| 国内一级精品| 久久高清无码夜夜操| 9/A片| 欧美在线播放aaaa| 国产真乱mangent| 91N综合网| 亚洲男人的天堂网| 久妇网| 色综合网1| 中文字幕五月婷婷免费| 久久97超碰| 久久99手机免费视频| 五月丁香六月婷| 天天干人妇| 国产日韩欧美中文在线播放| 欧美综合色,www| 99re在线精品78| 国产乱弄免费在线视频。 | 97se亚洲综合自| 91女优在线观看| 国模不卡一本二本三电影| 97中文天堂| 去干网最新版| 日韩不卡毛片Av免费高清| 欧美日韩午夜精品一区二区三区| 天天日夜干| 爱丝福利| 福利大香蕉| 精品无码人妻一区二区免费蜜桃| 91精品大奶人妻| 久久肏大逼| 欧美日韩国产高清在线一二三区 | 无遮挡h肉动漫在线观看| 国产精品亚洲一级av第二区| 国产肏逼网站| 久久久久久九九九| 女人高潮大叫一级毛片| 精品九九国产无码| 欧美 日韩 亚洲 春色| 精品视频一区二区| 极品肉射| 中文字幕乱亚洲美女精品一区| 美女爽到高潮91| 亚洲综合伊人| 91国产丝袜美女| 日韩人人精品| 国产第二页| x97av| 亚州图片第一页| 一级免费精品| 一区二区亚州激情久婷婷欧美| 粉嫩AV输入| 加勒比人妻综合| 日韩不卡一二三四| 欧美综合网1| 果冻传媒一区二区三区| 国产后入清纯| 大香蕉男人的天堂| 欧美猛交黑寡妇中文字幕| 亚洲欧美setu| 韩国嫰模上门援交视频| 综合久久99| 五月婷婷激情| 小草精彩毛片| 91国产美女丝袜足交精品视频 | 97超碰碰碰| 亚洲国产精品久久久久婷婷青年| 粉嫩国产精品久久久| 亚洲色性情三级| 99久久9| 97伊人| av三级电影在线播放| 四虎午夜影院| 一区二区影院| 黄网在线播放| 亚洲天天艹| 日本天堂网| 欧美日韩另类字幕中文| 蜜屁av| 大二网站亚洲| 中文字幕成人理论在线| 亚洲综合婷婷| 亚洲av总站| 日本免费一区二区不卡| 久久亚洲一区女同性恋中文字幕| 天天综合网~91| 人人操人人摸人人看人人插| 成人三级片无码| 超碰三级秋霞| 天堂在线一区二区| 中国韩国明星一极片一区乱码毛片人妻熟女一区二区三区 | 超碰九7| 懂色中文一区二区三区 | 草草电影院| 日韩AV无码中文一区二区| 色婷婷丁香五月| 九九九久千久久激情蜜桃在线看 | 亚洲精品人体| 97国产人人| α√在线| 91暧暧| 久久久久久无码人妻中文字幕| 97超碰超碰| 国产高清26uuu| 人人乐大香蕉| 欧美综合传媒| 久久成年片色大黄全免费网站| 亚洲色色探花| 色蜜AV| 欧美性Fer办公室秘书| 欧美黑人极品高潮喷吹熟女黑人性暴力日韩在线欧美极品一区二区老师黑人潮喷一 | 国产色产精品在线观看| 秋霞曰韩R级| 日本999精品视频| 网友自拍第1页| 国产熟女完整版中字 | 青草av在线| 中文字幕版| 啊啊啊爽爽| www.av在线观看| 大香蕉综合久久| 97亚洲综合| 欧美中出1| 亚洲综合九| 激情小说日韩无码| Julia在线播放亚洲久久| 国产精品亚洲日韩骚欢乐谷最新地址发布页huanieguty性屋娱乐妖精视频 | 八戒午夜福利理论片| 六九九九| 精品人妻久久久| 黄色激情电影在线观看| 国产天天骚| 91欧美综合| 亚洲天堂久久| 视频在线观看青青99国产| 亚洲欧美色图小说| 国产精品白虎| 色五月av| 99久久婷婷国产综合精品草原| 国产十八禁视频| 亚洲av国产av综合av卡| 人妻夜夜爽天天爽麻豆三区网站| 欧美日韩狠狠爱| 大香蕉一线视频| 99re在线精品78| 91碰超| 欧洲自拍色图gif在线| 国产AAAAAABBBBB| 97视频观看| 熟妇乱伦一区二区| 91欧美高清| 免费视频97| 五月丁香激情综合网| 极品出轨视频网站| 青娱乐日韩无码| 久久久久久久久女黄| 国产精品自拍欧美在线| 青青草五月天| 国产福利在线视频网站| 老司机免费视频在线91| 日韩精品一区二区日韩| 大奶啊啊好爽 | 人妻娇喘 激情视频| 国产一在线观看| 欧美亚洲AN| 93人人操人人| 久久久久久裸体| 亚洲欧洲网站免费观看| av草草在线电影| 狠狠色色| 国产农村妇女精品| 熟妇人妻一区二区| 少妇一区二区三区高速| 97超视频在线观看| 91三级理论片播放器| 大香蕉2017| 亚洲男人bt天堂| 天天舔日美女视频| 日本三级久| 性爱网站一区二区| 久久伦理视频久久大香蕉视频| 播播亚洲小说亚洲| 欧美人妻一区二区| 人人乐大香蕉| 强奸乱伦AV网址| 18禁免费视频| 超碰 国产熟女精品一区| 美女自卫慰黄网站免费| 亚洲丝袜诱惑| 天操老女人| 国产又爽又黄| 久久久新亚洲AV| 久操 高清| 亚洲AV无码国产精品久久久久| 欧美色图欧美| 欧美一区二区传媒| 亚洲自拍天堂| 国产日本顶级一区二区三区| 97综合在线观看| 亚洲蜜乳av| 久久手机好看网站| 成人a级高清视频在线观看| 人人摸人人舔一区二区| 欧美亚洲国内自拍| 久久av一级av少妇av高潮| 日韩特一级久久| 97视频在线观看播放与子乱对白在线……| 成人性爱av| 青女偷拍网| 午夜啊啊啊| 日本中文字幕在线电影| 国产大学生口爆吞精合集| 欧美美女视频| 欧美性天天影院| 天无日色综合| 欧美人妻精品一区二区| 日韩色| 精品久久九| 亚洲性综合9| 国产亚洲深夜激情| 国产精品一区二区麻豆| 天天爱天天韩国日本牛牛牛牛| 亚洲A曰本VA欧美VA视频| 玖玖爱伊人玖玖爱| 色综合加勒比四四季| 五月丁香啪啪网| 乱伦图av| 成全动漫视频观看免费下载| 五月丁香影视| 日本欧美一区二区三区视频麻豆| 另类欧美综合| 色九九综合AV| 75大香蕉| 探花激情视频| 伦伦成年午夜免费视频| 日韩性爱一级片| 91欧美色| 亚洲图片欧美另类综合免费视频大大香| 亚洲欧美性生活| 99热在线播放| 日韩去日本高清在| 天天色天天干天天射| 国产超碰AV在线精品| 东京热毛片177b2viP| 国产精品一区二区后入| 色诱avtt| 另类亚洲图色| 精品四五区| 五月天色综合| 91精品女厕偷拍视频| 少妇久久久| 精品福利| 一起草视频在线| 日韩大香蕉AV影片| 欧美在线大香999| 成人天天爽| 91久久久老司机| 欧洲乱码视频| 欧美激情超碰777| 少妇被玩视频二三区| 玖玖视频在线资源一区二区三区| 精品成人av一区二区三区在线| 国产精品久久久久中文字幕| 国产精品嫩草久久久久| 美国精品国产精品| .精品人妻一区二区三| 色香欲综合| 国产97在线视频| 欧美96精品在线| 91成人18| 日韩欧无码一区二区三区免费不卡| www.男人的天堂| 人妻精品一区二区| 久久久久久久九九九九| 国产精品96久久久久久| 亚洲国产精品无石码久久| 天天看片青娱乐| 国产精品白丝| 97精品国产| 亚洲人体视频在线观看| 尤物网址| 婷婷激情五月天小说网| 懂色AV蜜臀无码精品APP | 国产无码精品高清| 亚洲精品毛片在线观看| 国产资源中文字幕在线| 欧美一级久久久久久久大片动画| 青娱乐 成人娱乐在线| 亚洲男人的天堂一区二区| 九九久久国产精品| 高清肉丝中文无码| 久久99精品九九久久久婷婷| 久久人妻少妇| 欧洲亚洲人妻无码高清久久三区四区| 超碰色97| 岛国爱情动作片在国产AV无码专区亚洲AV漫画| 天天综合91| 日欧操屄| 婷婷丁香五月天亚洲天堂网| 久9热| 色噜噜国产在线| 精品无码一二三四区| 亚洲91综合| 怡红院久久老司机| 国产午夜在线观看| 香蕉久久AⅤ...| www色婷婷| 二区熟妇韩日| 天天躁狠狠躁av| 欧美丝袜亚洲| 波多野结衣之双飞调教在线播放| 99这里只有精品国产| 日本污ww视频网站| 日本一二区免费| 精品美女人人干| 91爱| 欧美成人一级免费电影| 大香蕉宗合网在线| 91日产欧美| 日韩欧美传媒一区国产|