久久亚洲成a人片熟女精品色一区二区三区|国产精品视频第一精品视频|av天堂热无码手机版|亚洲?v无码久久无遮挡|国产精品偷伦视频免费观看国产|麻豆国产自产精品丰满熟妇|av无码av不卡一区二区|久久亚洲精品中文字

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
返回資訊列表
亚洲二区精品在线观看| 国产操伦| 九九热在线精品视频| 亚洲欧美setu| 日韩免费福利在线观看| 亚洲色图超碰在线| 色九久| 中文字幕日韩人妻视频一区二区三区 | 99免费视频| 亚洲第二页| 玖玖资源综合在线视频| 欧美日动态视频| 精品美女久久久久| 色爱欲亚洲| 插入逼91| 国产专区路线| www.亚洲成人一区| 久久999久| 精品国产Av无码久久久亚洲| 三上制服丝AV| 天堂а√在线最新版在线| 你操综合| 成人无码在线视频网站| 婷婷色网| 人人操人人干网页| 骚人妻少妇视频| 激情网色| 亚洲国产中文字幕| 曰韩av中文字幕专区| 四虎884| 337p大胆噜噜噜噜噜91Av| 亚州精品人妻一二三区| 操少妇很爽av| 9国产超碰| 日韩精品怡红院| 乳欲人妻办公室奶水| 强奸熟女一区二区三区 | 在线日韩视频| 日本操逼视频免费| 欧美色图偷拍另类| 国产理论视频在线播放| 密乳视频在线| 91网站视频在线观看| 美国人人操人人操| 婷婷20月天青娱乐| 国产青一二三| 嫩草一区二区在线观看| 高清孕妇孕交 交| 欧美制服另类丝袜| 精品人妻av在线播放| 97精选久久| 色噜噜人妻丝袜a∨先锋影| 蜜臀99久久精品| 人妻啊啊人妻啊| 五十路六十路七十路熟婆| 亚洲污污网站| 91狠狠综合久久久久久| 日本欧美一区二区三区免费| 91性网| 性欧美天天| 乱论91| 欧美 亚洲| 欧美色图亚洲特色| 五月婷婷激情网| 日本精品一级二级三级| 福利大香蕉| 久久天天摸| 日韩人妻播放| 欧美十八禁视频| 国产97综合| 91女在线观看| www.zbzhongsen.com| 欧美日韩国产成人高清| 91欧洲入口| 国产性感骚丝袜在线| 欧美日本视频一区| 日韩精品1区2区中文字幕| 在线看污网站| 久操大香蕉超碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰 | 人人操人人摸人人看人人插| 青草精品视频一日本久久久久网站| 欧美熟妇视频| 99超碰色| 色99色| 自怕偷自怕亚洲精品| 久久风骚城市| 青青伊人加勒比海| 久久久熟妇熟女国产| 免费视频a级毛片免费视频| 大香蕉免费3| 高颜值美女口爆高潮浪叫| 亚洲综合有玛| 日韩在线视频1234| 婷婷五月天成人| 无码WWW免费视频网站| 亚洲激情视频| 麻豆一区二区AV天美| 四虎免费看黄| 国产亚卅97| 蜜桃色色网站视频三区| 婷婷色五月激情| 岛国网址国产| AV一区观看| 中文字幕99999| 日韩欧美中文字亚洲慕| 欧美 亚洲 综合 制服 另类| 亚洲色图 图片| 丰满少妇人妻久久久久久| 人人操人人狠狠操| 乱色视频中文字幕| 999岛国大片| 亚洲 欧美 手机在线观看| 亚洲国产精品99久久久| 日韩欧洲操屄视频| 日本 色 导航| 秋霞网—男女啪啪亚洲免费体验区| 麻豆视频一区二区| 色综合天天爱去电影网| 69一区二区三区| 麻豆精品.欧美精品.日韩精品.| 综合网亚洲1| 亚洲揄拍网| 久久久18禁| 国产精品亚洲四五区在线观看| 少妇超碰在线| 久久精品电影| 日1区2区3区2020| 久久精品一区二区三区蜜桃臀| 天天操天天日天天干| 天天操天天看| 国产深喉| 91欧| 成人国产二区三区在线,男女精品。| 欧美春色| 精品无码一区二区三区| 另类小说综合网| 91在线视频观看国产| 亚洲va有码在线天堂| 久久这里是精品| 亚洲一级性爱视频免费看| 精品人妻中文字幕4399| 九九色逼| 久久超碰爱| 久久久久久久 九九九九九九九| 老鸭窝亚洲毛片| yazhousetuoumei| 久啪| 鸥美中出| aV中文麻| 青青青国产| 殴美日韩m| 国产情色第一第二页在线观看| 东京热熟女亚洲视频网站| 日日日大屁股骚女人精品| 超碰97在线色男人??| 欧美高清在线| 欧美亚洲图片| 美女午夜福利免费视频| 四色永久成人网站| av在线人气| 久久99精品国产| K8久久久久| 欧洲在线性爱视频| 在线观看岛国有码| 91neishe| 91欧美性| 亚洲男人天堂2017| 日本人妻中文字幕精品| 久99热| 欧美情色男人的天堂| 成人精品视频| 91人妻人人澡人人爽人人精品| 亚洲āv网址在线观看| 国产女人高潮嗷嗷嗷叫小说 | a片亚洲一本通视频| 淫淫综合网| 日本人妻中文字幕 | 强奸乱伦中文字幕AV| www.91色| 久久动漫精品视频这里只有精品| 啊啊嗯嗯好爽| 蜜乳av首页| 热久久国产精品视频大陆精品| 久久久久久中文| 激情小说在线视频| 无码国产精品午夜不卡(| 中美日韩毛片| 好爽视频在线观看视频 | 一,爱啪啪,在线免费视频| 久久午夜伦| 北京美女一区二区| 欧美日韩1234| 超碰99在线观看| SS久久| 久久久久久久久久9| 370p日韩欧美亚洲精品| 91人妻人人澡人人爽人人精品| 日本国产亚洲一区在线观看| 色优久久| 人妻少妇久久| 天天色,天天干,天天干| 少妇与黑人高潮在线| 97chaopengongkai| 中文字幕 国产区| 中文字幕女同在线| CCYY草草影院地址入口| 又大又黄国产| 国产传媒日韩| 五月天婷婷综合| 久草精品视频| 一本色道久久天天射天天干| 欧洲综合视频| 亚洲少妇在线观看| 激情五月综合| 9丨久久九九九| 日本123区操B视频| 蜜臀网址在线| 十八禁啪啦拍视频无遮挡| 久久美国毛片| 伦伦成年午夜免费视频| 美女黄码视频午夜| 日韩精品在线观看观看| 秋霞鲁丝午夜无码一区二区三| 欧州一区二区三区四区| 丰满翘臀美女影院视频| 久久久新亚洲AV| 天天舔天天| 婷婷激情四射| 天天淫人人妻日日色| 久久精品国产亚洲av水密被窝| 久久色情| 欧美写真视频一区| 神马精品视频| 成人精品久久久午夜福利| 一区二区久久天天干狠狠| 99re99| 久久久一区二区三区四曲免费听 | 91欧洲入口| 1024人妻熟女一区二区三区| 女人天堂网| 国产成人自拍视频在线| 91制服丝袜| 九九热免费视频| 黄页av| 一区二区三区 丝袜 高跟 美腿| juliaann欧美丝袜办公室| 91白嫩| 亚洲另类在线观看| 青青青青青手机视频| 亚洲.欧美.丝袜.中文.综合| 热99这里有精品综合久久| 欧美精品成人亚洲| 免费久久一级毛片大黄| 综合欧美日韩在线| 日韩av一级黄片| 国产精品动态一区二区三区四四| 免费黄色片子| 翔田千里无码一区| 日韩精品电影| 六月激情婷婷| 久久免费少妇| 国产精品天干天干综合网麻豆| 亚洲欧综合另类无码一区| 亚洲色图欧美色图综合| 午夜呻吟欧美| 91快色色色色色| 青青草原香蕉日本Ap| 丰满人妻一区二区三区| 97无码视频在线播放| 妇人噜噜| 五月丁香影视| 日韩精品在线观看观看| 国产suv一区二区三区6| 色天使大香蕉| 亚卅熟女乱色| 欧美性生活男人的天堂| 久9爱精品| 亚洲欧美精品91| 亚洲s在线观看| 亚洲熟妇丝袜在线观看| 亚欧国产无码精品在线| 肥臀熟女福利视频一区二区| aaaa黄片| 日韩精品中文字幕人妻| 中文熟女五十乱码在线| 日韩天美| 午夜爽爽爽在线观看永久入口姬片| 青青操日韩| 久久色一区| 黄片在线免费在线观看| 人人妻碰人人免费| 精品无av| 人妻酒店出差被中出免费在线播放| 亚洲精品成人激情在线| 国产高清精品一区二区三区毛片| 久草精品在线| 麻豆一区二区三区精品| 一区黄二区黄| 亚洲欧美日韩夜夜| 91人妻最真实刺激绿帽| 快灬快灬 一下爽蜜桃在线观看 | 啊好大好舒服| 黑人黄片在线免费观看| 日韩性爱1级片视频| 日本人体九九九九九九| 国产精品亚洲高清在线| 亚洲狠| 亚洲淫色网中文| 长长久久88视频| 亚洲啪啪视频一区二区| 2020中文在线一区二区三区| 亚洲精品久久久久毛片A片拉屎 | 多乙久久久久久| 国产无码成人无码| 九九九网站| 久久久久久久综合,国产| 亚洲色图 欧美热图 清纯唯美 另类自拍| 91人妻Pr| 国产色呦呦| 免费看黄视频亚洲网站| 人人贴人人摸| wwwxxx日本爽| 91久久九九精品国产综合| 天天噜| 玖玖综合网| 丰满少妇精品一区二区| 亚洲综合69| 麻豆精品A片免费观看| 人妻啊啊人妻啊啊| 精品久久一区二区三区四区五区| 色五月综合网| 丁香五月天堂网| www超碰| 超碰人人超在线观看| 日韩亚洲国产视频| 亚欧成人综合影院| 一级久久久久久久久久久| 国产精品 久久久精品一牛| 影音先锋日本乱伦| 翔田千里AⅤHD无码| 欧美成年人性爱视频免费观看| 97视频在线播放| 精品999999| 超碰2017| 亚洲成人黄色在线观看| 欧美天天干| 秋霞久久亚洲精品成人| 久久性爱网站| 一区二区娱乐网站| 东京日日夜夜| 久久久久久久久久久久久久久乱码 | 亚洲无码超碰免费| 日本日逼高清| 欧美一区二区观看在线| 国产一区二区啪啪视频| 337p大胆噜噜噜噜噜91Av| 色婷婷六月| 伊人天堂在线| 夜夜嗨AV蜜臀av| 久久夜夜夜夜| 亚洲日本大香蕉1| 九九九国产| 懂色av一区二区三区天美传媒| 精品人妻一二三| 亚洲天堂在线怕怕视频| 日韩欧美tv一区二区在线观看| 丁香五月综合| 欧美色五月| 麻豆黄四叶草网站| 男人的天堂日韩| 久久这里只| 99色网| 黄色大片免费在线| 婷婷深爱五月| 久久免费中文字幕在线观看| 亚洲大色堂| 国产AB视频| 亚洲AV无码乱码| 成人无码在线超碰网| 精吧天堂| 超碰1997| 99re黄| 91美女网站| 国产无码高清操逼视频| 熟妇操花| 色婷婷aV一区二区三区麻豆综合| 330dv亚洲成年视频网| 视频黄站| 久久精品午夜国产亚洲AV无码| 黄色av片三级三级三级免费看| 亚洲综合在线视频| 99精品伊人| 抽插亚洲无码| 岛国网址国产 | 男人的天堂va| 国语精品内射在线观看| 国色天香av| 日本中文字幕一区| 精品无码秘 人妻一区二区 | 乱色视频中文字幕| 亚洲一本色码中文字幕| 欧美AB在线| 亚洲中文日韩欧美大香蕉视频| 九九无码| 久久久久久久久久久久久女过产乱-少妇高潮一区二区三区喷水-成人AV | 成人八戒网站| 日韩99999色| 国产精品色约约| 久久国产熟女影院| 免费视频无码| 国产美女91| 九九综合久久中文字幕| 日韩人妻操B| 九色 蝌蚪 熟女自 | 国产精品亚洲高清在线| 欧美久久草熟女| 青青青草原| 91影库| 天天看综合网| 2017天天操天天日| 看日韩操逼| 99色婷婷中文字幕乱色| 丁香色狠狠色综合久久小说| 啪啪综合网| 激情情色五月天| 国产在线激情视频| 日韩超碰精品综合| A级在线视频| 五月天婷婷色| 999热这里只有精品| 国产精品无码论坛| 日日骚精品视频| 国产一区二区成人av在线播放| 人妻激情偷乱视频一区二区三区| 极品人妻少妇综合| 国产无码一二三区| 色欧洲97| 377p欧洲日本亚洲大胆| 国产精品网站www| 欧差乱伦二三| 熟女一区二区| 日本爽爽爽爽爽爽免费视频| 嗯嗯嗯啊啊啊操的我好爽| 四方色播| 91oumei| 成年人黄色| 日韩另类色图| 97超碰久久| 夜夜嗨一区二区三区直播内容| 国产精品熟女AV中文字幕在线播放| 麻豆尤物视频网| 91精品国产高清久久久久久,亚洲成人 | 日比av无码| 婷婷五月天成人| 99999久久精| 91精品综合久久久久久五月丁香| 少妇三p| 98一区二区精品| 蜜桃狠狠色伊人亚洲综合网站| 欧美久久九九| 国产精品成久久久久午夜午夜| 九九九九九九亚洲| 18啪啪手机免费性爱| 男人 天堂 日 亚洲| 亚洲第一精品在线视频| 中文精品少妇天堂| 激情综合五| 水多多映视AV| 久久久熟妇熟女国产| 草草影院最新网址| 亚洲91射| 亚洲精品久久久久久久久豆丁网| 日产操逼| 亚洲涩涩| 91色久| 久久久久少妇| oumeizonghese,www| 久久精品毛片免费不卡| 久久一二三四五六七八九区| 欧美第一页性| 亚洲伊人a线观看视频| 97视频免费在线| 国产亚洲一黄| 91丨九色丨国产丨人妻在线| 精品国产乱码久久久久久免费| 人妻久久久久久| 欧美性爱精品七区| 国内成人圈中文字幕无码视频| 开心五月天激情网| 国产亚洲精品无码三区| 99热线麻豆| 久久人人妻| 琪琪精品免费一区二区三区| 加勒比aⅴ| av操操不卡| 日韩av在线免费网站| 精品欧美乱码久| 久久久久久久久久久久黄色| 96久久精品一二三区色欲| 亚洲国产精品无石码久久| 中日韩久久人妻一区二区| 三级三级三级a级全黄三| www欧美91| 一区二区三区四区久久视1| 91GD.COM| 操逼免费视频无码国产| 97美日韩视频| 色综合20p| 亚州情色j区| 国产黄色 A 片免费看| 欧美日韩中文字幕人妻| 亚洲蜜臀视频精品久久| 观看视频图片一区二区三区| 静品嫩模一区二区| 国产91乱伦| 精品视频在线观看| 麻豆色约约| 欧美白嫩在线放| 99无码| 色噜噜精品一区二区三| 91社区伊人| 日韩天天综合| 91成人久久| 96精品久久久久中文字幕| 激情综合婷婷| AA特级绝黄| 久久在线观看免费视频| 中文字幕在线免费观看 | 婷婷综合久久| caoni国产亚洲av| jizz啪啪| 狠狠操狠狠操操| 天堂网亚洲区手机版| 久久久久密臀视频| 男生女生啊啊啊啊| 九九九网页| 长长久久曰曰夜夜成人网| 国产亚洲精品av一区| 免费看黄片现成| 97日韩欧美| 日韩精品一二三| 国产精品69久久久久久久| 91在线/欧洲| 国产91精品久久久久久久网曝门| 日韩99999色| 丝袜美腿诱惑亚洲欧美视频在线观看 | 久久精品高清无码一区| 色超碰综合| 9 7超碰在线免费观看| 丰满人妻一区二区三区四| 99热啪啪| 久久xx| 日韩操人| 五月婷婷六月丁香| 日韩人妻大香蕉| 91美女中出| 一本道综合色图| 另类天堂| 午夜人妻精品综合在线| 日本久久99| 天天射影院| 天天舔天天 | 天天欧美97| 97久久超碰日韩精品| 蜜桃传媒视频第一区入口在线看| 久久久久幕乱码| www.人人摸在线视频| 99在线观看视频在线高清| 四虎影视国产精品| 97操B| 九九九九九精品视频| 好爽视频在线观看| 91亚洲欧洲| 婷婷色综合欧美日韩| 天美传媒婬乱| 秋霞一级A片黄色视频| 久久无码成人| 亚洲aV无码成人在线观看| 中日高清无码操逼视频| 男人天堂一区二区| 操九九九九九九| 老师充足的奶水小说| 天堂国产AV| 亚洲综合一| 精品国产乱码久久久影院| 91精品人妻一品二品三品| 91精品老女人| 狠狠操官网| 色一色综合网| 久久午夜伦| 超碰在线人妻不卡| 91精品少妇搡搡搡| 久久99国产精品| а√天堂资源官网在线资源| 中文字幕日韩人妻视频一区二区三区| 九九综合久久| 国产精品小视频一区二区三区| 久久综合女优| 亚洲素人综合| 视频国产欧美在线播放| 先锋色眉乱伦资源| 99免费在线视频| 欧美亚综合色图| 熟女熟妇伦久久影院毛片一区二区 | 色99在线| 免费看污网址| 深夜视频| 久操网无码在线| 狠狠干,狠狠操| 天天看特黄的免费网站| 伊人性在线视频| 一本色道综合久久欧美| 国产女人成人精品视频| 国产精品乱码久久久久久久久久久久| 精彩久久中文| 91精品人| 亚洲精品日日夜夜52| 精品乱子一区二区三区99| 久久久成人免费av电影| 无码久久亚洲高清,| 两性综合网| 97国产亚洲中文在线| 中国韩国明星一极片一区乱码毛片人妻熟女一区二区三区 | 欧美高清在线| 激情小说日韩无码| 五月丁香大香蕉| 精品一区二区三区四区女 | 韩日性爱av| 国产天美欧美| 天天操福利视频综合网站| 精品久久无码午夜福利| 操久久久久久| 欧美性少妇| 亚洲国产精品9999在线观看| 麻豆精品久久久久久久| 91精品国产91久久久久久久久久久久| 国产AAAAAABBBBB| 久久久久久亚洲精品不卡人乳| 欧洲亚洲人人爽爽视频| 无码高清少妇久久| 青青草原人妻| 男人的天堂99| 国产乱伦性爱AV| 青青草玖玖爱| 操日韩第| 综合网久久| 国产精品久久久| 天天干天天做| 大逼色网站| 免费中文在线| 久久人妻少妇| 国产亚洲女v在线观看| 夜夜高潮夜夜爽| 亚洲欧美黄| 丁香五月色情| 传媒在线观看一区二区三区| 色综合久久88色综合久久天天| 欧美天天综| 中文乱码字字幕在线第5页| 天天干少妇| 阿姨一区二区免费视频-高清正片西瓜视频下载app-T450AV | 最新中文字幕在线亚洲| 999 久久久| 黑人白女精品一区| 少妇内射www在线观看视频| 久久黄黄| 凹凸精品熟女在线观看| 一区二区三区精品黑丝白丝酒店对鸡| 久久有码视频| 丁香五月婷婷五月| 人人澡人人干| 色九九九九久| 天美传媒精品一区二区| 久热69九色熟妇97| 午夜成人爽爽爽爽A片李冰冰| 国产超碰国产97| 日本精品999| 大香蕉伊人亚洲| 伊人热综合| 97看操| 欧美91视频| 国产成人精品午夜福利| 欧美专区日本专区| 伊人宅男大香蕉| 综合激情婷婷| 97免费视频在线观看| 久视频在线观看| 黄色片A级一区二区三区| 91亚州欧美| 国产熟女完整版中字| 欧美在线第五页| 色色婷| 日本欧美中文字幕| 久久、1234| 国产精品免费美女视频| 中国和日本人色哪个不下载能放| 日韩啪啪啪啪啪| 欧美成人一级麻豆| 91久久堂| 思思热免费视频观看| 青青草好吊色| 色狠人在线99| 91小视频| 91美女视频在线观看| 91 国产丝袜在线放观看| 免费观看国产小粉嫩喷水精品午| 日日日日做夜夜夜夜做无码97| 99综合| 亚洲欧美国产中文视频| 精彩久久中文| 日本熟妇一区二区三区| 久久精品国产亚洲妲己影视| 我中文字幕6区| 蜜乳av首页| 日本操逼视频在线| 免费99精品国产自在在线| 婷婷六月天| 国产精品原创巨作?v网站| 久久精品一区二区三区蜜桃臀| 午夜天堂精品久久久久91| 青娱乐福利99| 亚洲少妇自拍中文字幕懂色| 色穴精品| 精品毛片久久久精品毛片| 69一区二区三区| 少妇色综合| 五月婷婷丁香| 在线a v| 日韩精品-原创伙伴| 极品后入免费视频| 大香蕉123| 色yeye成人免费视频| 97aiaiai| 骚货 中文字幕 av| 男女91| 99色婷婷| 3d成人精品一区二区| 久这精品中文在线观看视频| 夜夜操一区二区| 久久超碰久| 国产精品久久久久久久久AV大片 | 测评在线观看AV| 欧亚韩国999| 九九热五区| 激情五月婷婷| 亚洲成a人片在线观看中文!!!| 亚洲av青草久久一区二区| 熟妇一区,二区,三区。| 久操九九九九九九九九九九九九九九九九九九九九九九九九九九九九 | 国产不卡精品91| 综合欧美日本三级| 日韩欧美大力操| 久久超碰网| 正宗无毛一线天嫩逼| 精品小视频在线| 欧洲无码一区二区| 日韩人妻无码专区| 黄片aaaaa一区| 九九视频黄色片| 亚洲色图91| 天天色综合影视网| AV色五月天| 丝袜美腿校园春色| 精品久久久久瑟瑟| 中文无码一二三区| 另类在线| 国产又操| 成人无码影片视频在线| 国产成人精品必看| 亚洲国产成人精品999| 亚洲欧美首页| 91性感在线| 蜜臀Av一区二区三区| 久久人人爽av亚洲精品天堂桃色 | 襙一襙| 欧美色狠| 亚洲色图91| 69精品| 久久啊啊啊| 大香蕉日韩| 97操B| 久草综合网| 国产精品一区在线播放| 欧美第五页| 91美女视频直播| 四虎884| 五月天久久人妻| AV中文字幕三四五| 97伦综合| 亚洲熟女诱惑| 亚洲资源站| 97爱综合| 女性喷水高潮在线观看| 国产精品不卡高清在线观看| 大JI巴好深好爽又大又粗视频| 99re免费| 永久电影三级在线观看| 欧美高清18A片| 久久久精品91八戒| 国产一区二区在线播放量| 欧美日韩另类在线| 欧美国产欧美在线观看| 国产精品久久久久久无码红治院| 东京热男人的天堂精品| 天天色综亚洲91污| 十八禁啪啦拍视频无遮挡| 成人丁香五月| 美女尤物福利视频| 欧美熟妇乱码在线一区| 久久夜嗨| 玖玖超碰熟| 91丝袜人妻| 久久春色| 亚洲熟女乱色一区二区三区| 日韩黄片视频试看| 中文字幕亚韩| 欧美亚州手机在线| 麻豆久久久久久久久丝袜| 国产成自自拍在线观看| 试看60秒| 人人妻人人澡人人爽久久av| 无码精品久久久久久亚洲| 国产日韩欧美操逼视频| 欧美系列在线一区二区| 午夜免费视频1000| 欧美色图天堂网m| 伊人少妇久久久| 人人操人人肉久久精品| 日韩精品在线放| 午夜影美女日鸡鸡天天视频国产| 9久精品| 亭亭丁香激情| 亚洲国产亚洲天堂| 97色色色| 久久久久久久78| 91色s| 羞涩视频| 老司机老司机午夜影院| www.夜夜操| 亚洲精品欧洲精品| 麻豆色约约| 黄片qw| 偷看洗澡一二三区美女| 97色五月天完| 任你干在线视频| 亚洲色宗合| 亚洲天堂7777| 伊人97色天使| julia ann久久| 亚洲美女av无码| 久久精品国产亚洲AV片多多| 成年女人一区| 国产九九九九九九| 亚洲国产一级黄色视频| 在线国产探花| 无码视频一区二区| 粉嫩av一区二区三区天美传媒 | 亚洲一区中文字幕| 26uuu欧美日韩| 欧美激情综合色综合啪啪五月| 97国产天堂岛| 亚洲欧美另类图片| 欧美午夜一区二区三区| 日本少妇va7777| 东京热,男人的天堂| 久久这里是精品| 91是天天| 麻豆熟妇乱妇熟色A片在线看| 囯戸精品高潮呻吟旡码| 丁香六月天| 久久久国产护士丝袜美腿一| 亚洲日韩精品久久久久一区壹牛 | 欧美 亚洲 制服 精品| 欲色啪| 一级人妻性爱视频| 亚洲另类综合欧美| 91精品国产长腿丝袜美女| 亚洲成人性爱网站在线播放| 亚殴在线| 日韩91网站| 在线啊v一区| 校园春色宗合网| 黄人人操人人操| 人人喜人人妻| 玖玖久久久| 丁香九月激情啪| 青青草久久在线| 香蕉久久AⅤ...| 少妇一区二区三区在线观看| 上特色A在线| 丁香五月婷婷啪啪| 久久9免费视频| 盗摄女人妻在线| www.高清无码诱惑一区.com| 色哟哟 日韩精品| 女同在线视频一区| 国产又粗又长视频| 无套内射性感少妇视频| 人乳av| 国产99久久99热这里只有精品15| 伊人精品视频| 日韩无码操逼片| 麻豆精品A片免费观看| 亚洲巨爆乳一区二区三区四季网| 日本韩国一本产品小视频日本韩国一本产品久久久产品小视频日本韩国一本产品久 | 日夜啪电影| 亚洲精品99999| 六六久久日韩不卡| 青青草久草| 欧美亚洲丝袜人妻制服99| 久久精品国产亚洲av水密被窝| 午夜男女爽爽爽在线视频| 欧美日韩美女精品久草一区二区三区| 欧美另类精品xxxx| 欧洲亚洲天堂精品| 日操粉逼逼| 中文字幕精品专区搜索结果91| 成人午夜小视频手机在线看| 嗯~啊~快点 死我视频免费看网站| 青青伊人这里只有精品| 青青操视频在线| 中文字幕123| 久久噜噜噜精品国产亚洲综合| 欧美成人一区二区三区在线播放| 91精品婷婷国产综合久久| 激情久久av一区av二区av| 久热精品在线| 九九综合| 免费精品无码一级毛片牛牛影视 | 色综合久久av| 亚洲黄a三级三级三级看三级| 操操逼操操逼操操逼逼| 日韩97精| 超碰久热| 日韩肏逼视频| A啊啊在线观看| 国产精品欧美日韩久久| 夜夜嗨免费视频| 九九热视频在线观看| 国产97在线视频| 情色五月天久久久| 日韩性爱免费视频在线网站| 欧美成人贴图| 人妻夜夜爽天天爽麻豆三区网站 | 久久大黄片| 精品久久久久久久久久久久| 欧美日韩操逼动图| 亚洲少妇视频| 伊人久久国产免费观看视频| 欧美一区二区三区入口| 91狠狠狠| 欧美日韩人人精品| 久久riav中文精品| 色噜噜日韩精品| 九九九九九九九九九九九免费国产| 91精品微拍福利| 91黄射| 亚洲熟女国产综合另类| 精品久久久久久中文字幕三区| 大香交| 九九玖玖精品| 浪人综合网| 91色婷婷综合久久中文字幕二区| 精品国产一区二区三区久久久蜜臀 | 久草看看看| 闷骚老熟女15P| 久久艹逼视频| 看免费一级在线播放毛片| 国偷自 一区二区| 男人的天堂2018东京热啪啪啪| 国产日韩区| 2017天天操| 亚熟hd视频在线| 狠狠狠狠狠干| 人人 操人人 操人人| 精品无av| 欧美乱妇狂野欧美在线视频| 丁香五月影院| 免费?级毛片无码?∨蜜芽试看| 岛国天天午夜影院传媒网| 丝袜综合| 欧美视频在线视频免费va| 亚洲性爱成人| 青女偷拍网| 日韩中文字幕2020| 91婷婷伊人狠人| 日本色色色色色视频| 亚洲无码com| 1204人成网站色www| 国产超碰在线一区| 色丁香五月婷婷| 日本Xx性爱| 999久久久免费精品国产牛牛| 97日韩欧美亚洲| 91N综合在线| 六月婷激情福利天堂69| 日韩av影片在线观看| 日韩 国产 欧美自拍| 黄色工厂这里只有精品| 97超碰总站| 九九英色视频| 久久欧美按摩999| 国模吧 一区二区三区| 精品人妻中文字幕4399| 精品人妻一区二区三区在| 成人开心网在线视频| 亚洲欧洲第二视频在线观看色图| 国产欧美美女免费观看视频| 久久久久久久久久8888| 99久久婷婷丁香| 一级AV性爱| 91精品91久久久久77777俄罗斯老妇姓x| 国产av色网| 神马久久69| 久久久久久久78| 91色女| 日韩有码一区三区| 亚洲综合五月天| 色欲天天综合网| 国产av美女被艹的乱叫| 亚洲蜜乳av| 亚洲国产91精品一区二区久久| 欧美色狠| 综合网亚洲| 国产精品扒开腿做爽爽爽视频| 91高清欧美| 午夜操一视频一区| 青青草导航在线视频| 国产后入内射| 东北女人操比视频| 国产25页| 日韩av色图| 91强在线播放| 99色骚| 综合av影片| 好舒服视频| 高清肉丝中文无码| 91N综合在线| 欧美亚洲se91| 欧美在线色| 97超碰总站| 二级毛片| 97欧美日韩精品| 男女啊啊啊啊啊| 91精品国产91熟女| 欧美+日产+中文| 亚州综合色| 亚洲欧美成人网站AAA| 免费在线看黄片av| 一级AV性爱| 欧美激情另类一区二区| jizzjizz欧美| 五月天黄色激情视频| 丰满人妻一区二区三区大胸懂色| 国产精品久久成人免费| 人人操人人叉人人插人人| 粉嫩粉嫩一区性色AV片| 亚洲操逼无码| 超碰av在线| 日韩在线视频1234| www四虎| 熟女天天干| 精品国产久久乱码| 蜜桃精品一区二区三区久在线| 91国产伊人大香蕉| 无人区高清电影免费观看一区二区三 www.qmcai2.com | 婷婷五月av| 另类综合另类| 亚洲国产欧美日韩精品一区二区三区,国产一区二区三区在线看片,欧美性猛交 XXX | 牛牛久久国产精品视频一二三| 91女网站| 极品久久久久久久久久久久久久| 色九九综合AV| 国产区在线| 97超碰人妻| 久久久久久亚洲Av无码| 国产小黄片在线免费观看| 性爱乱伦一区| 综合网欧美在线| 色欲人妻一区二区在线| 成人久久久精品| 欧美日韩系列| 久久伊人最新网址视频| 熟女这里只有精品6| 欧美亚洲素人制服精品| 亚洲日韩国产欧美综合v| 五月丁香久久| 10000部十八禁看电影| 色www精品视频在线观看| 超碰4A| 国内偷拍精品一区二区| 日韩中文字幕精品一区在线| 亚洲一区二区性爱电影| 97超碰色五月| 在线情色电影 91大 | 嗯啊不要啊在线 | 98色网| 东京热精品97综合网| 激情婷婷黑人91| 精品一级毛片在线观看| 性在久久久久久| 五月天婷婷欧美三区| 精彩视频日韩| 91久久久老司机| 四虎免费在线观看| 国产AV毛片| 婷婷五月丁香五月| 加勒比东京热五月天天堂网| 密臀在线一区尤物| 国产精品干干干| 婷婷五月天网| 超碰午夜| AV乱伦国产| 国产 日韩 另类 视频一区爱| 啊啊啊啊嗯嗯嗯用力好爽 | 操淫穴亚洲五月丁香 | 青青草亚洲一区| 神马久久免费电影观看| 国产主播福利| 国内精品伊人久久久久影院会| 91欧美成人色站| 99999re| 操逼网站视频漫画国产| 久久9精品视频| 殴洲老熟女| 欧美九九九九九| 91成人高清在线观看| 美女自卫慰黄网站免费| 蜜臀AV成人精品蜜臀AV久久| 干妹子| 伊人操你| 98色网| 2003天天干夜夜操| 啊啊啊啊啊在线| 亚洲字幕一区二区| 久久久精品日本一道| 后入式999| 人人操我人人干| 九九九九九九九精品视频| 99re在线精品78| 啪啪啪亚欧美视频| 日韩乱伦AⅤ| 久久久久精| 91精品国| 操逼天美3区| 中文字幕丝袜人妻| 高潮精品| 992这里有精品| 超碰97资源网亚洲| 一本一道vs波多野结衣| www.高清无码诱惑一区.com| 人人摸人人入| 99热成人| 97亚洲色图| 国内毛片无码一级毛片| 亚洲在钱| 男人天堂黄片| 欧美伦乱爱| 天天天乱色综合全| 极品综合|