久久伊人一区二区三区四区-久久伊人影视-久久伊人影院-久久伊人中文字幕-亚洲成在人色婷婷-亚洲大成色www永久网

千鋒教育-做有情懷、有良心、有品質的職業教育機構

手機站
千鋒教育

千鋒學習站 | 隨時隨地免費學

千鋒教育

掃一掃進入千鋒手機站

領取全套視頻
千鋒教育

關注千鋒學習站小程序
隨時隨地免費學習課程

當前位置:首頁  >  技術干貨  > Gpu Instancing技術

Gpu Instancing技術

來源:千鋒教育
發布人:qyf
時間: 2022-08-29 16:08:05 1661760485

  一、前言

  在3D游戲中,制作者希望能夠繪制越來越多的場景物體,比如場景中大量的植被(樹木,草,花等),能夠給玩家帶來更加逼真的體驗。但是這對對于設備(尤其是移動端)的性能是個極大的考驗,如果使用傳統的技術,大批量渲染會導致drawcall增加,fps下降。unity推出了Gpu Instancing技術,這對于大量相同物體的繪制提供了一個新的方案,我們嘗試在unity中使用gpu instance 技術。

  二、靜態物體使用Gpu Instance

  Gpu Instance是一種用來提高渲染大量物體效率的技術,在場景里繪制越來越多的物體,這里面主要涉及兩個方面的性能瓶頸,一是cpu對gpu提交數據的次數(包括設置數據buffer,渲染狀態以及調用對渲染原語的繪制即drawcall),二是gpu上的繪制(包括頂點處理和像素繪制),隨著場景物體的提升,cpu和gpu的壓力都會上升。目前在一些典型的3D游戲的制作中,我們的經驗值是全屏不超過10萬個頂點和200個draw call左右,不然對中端機器會有一定壓力。

  為了解決場景繪制效率這個問題,主要有以下幾種優化方案:

  static batching: 即靜態合批,靜態合批的原理即化整為零,將多個場景物體預先合成一個大的物體進行繪制,unity5的實現就是整合成一個大的vbo,而不整合IBO,一次性提交vbo給gpu,然后并不是把整個vbo都繪制,而是每次需要繪制其中某個某些物體時改變IBO,選擇大vbo上的某一段進行繪制。靜態合批可以將多個小物體的繪制合并成一個大物體的繪制,減少對渲染狀態的改變,它一次并行繪制多個物體,理論上是最快的繪制方法,不過最大的缺點是因為合成新的大vbo需要耗費額外的大量內存,同時不能渲染動態物體,因為合并vbo的時候已經確定頂點數據了,頂點數據不能更改(例如unity5對LOD合批的實現也是講所有層次的lod都預先合并進去),另外一個vbo的大小是有限制的,如果物體數量過多,也會被拆成多個繪制。

  dynamic batching:動態合批,可以解決對頂點數據有變化的物體的合批,它動態的合并vbo進行提交,組建vbo的時間有消耗,為了減少這個消耗,unity對動態合批的vbo大小有限制,以致于很小頂點數的物體才有可能被動態合批。

  vertex constant instancing:Instancing 是不同于batching的另一種方案,它的原理是對于模型一致的物體,只提交原始的模型的vbo給gpu,然后將每個物體不同的屬性單獨抽出來組成buffer發給gpu,在顯卡中根據這一份vbo和每個物體不同的屬性來繪制多個物體,即一次提交,在gpu上繪制多個,對于大量同樣模型的物體繪制是一個很好的方案。vertex constant的instancing是利用頂點常量屬性來存儲這些per instance attributes,但是也需要一個大的vbo存儲所有未經頂點變換的相同的n個原頂點數據,在shader里面讀取不同的vertex constant內容繪制不同的instance

  gpu instancing:這是最新渲染api提供的一種技術,如果繪制1000個物體,它將一個模型的vbo提交給一次給顯卡,至于1000個物體不同的位置,狀態,顏色等等將他們整合成一個per instance attribute的buffer給gpu,在顯卡上區別繪制,它大大減少提交次數,它在不同平臺的實現有差異,例如gles是將per instance attribute也當成一個vbo提交,然后gles3.0支持一種per instance步進讀取的vbo特性,來實現不同的instance得到不同的頂點數據,這種技術對于繪制大量的相同模型的物體由于有硬件實現,所以效率最高,最為靈活,避免合批的內存浪費,并且原則上可以做gpu skinning來實現骨骼動畫的instancing。

  Unity5中實現instance

  unity中提供了兩種使用gpu instance的機制,自動和手動:

  自動:需要使用unity 標準的standar 或surfaceshader,然后在mat下面的instacne那里打勾,然后unity在條件合適的情況下自動instance,但是注意這種限制非常多,如不能static batch,不能liaghtmap,不能改變mat,不能帶動作,不能cull,等等,非常難,詳見https://docs.unity3d.com/Manual/GPUInstancing.html

  手動:通過使用Graphics.DrawMeshInstanced或者Graphics.DrawMeshInstancedIndirect這些底層api。

  由于unity自動的instance不穩定且不能lightmap等等,于是我們的實現方案是自己用底層api去實現instance,并且自己去實現了支持lightmap和culling的instance。

  三、帶骨骼動畫的物體使用Gpu Instance

  gpuinstancing可以很好的工作在靜態物體上,例如草,樹。但遺憾的是暫時還無法對骨骼動畫使用這個特性。而我們游戲經常使用上百個小兵單位作戰,如果可以讓小兵使用這個特性,那么對于性能的提升無疑是很可觀的。于是有人提出了將動畫信息烘焙到貼圖中,在shader里面根據貼圖設置頂點位置,也就是我們的頂點動畫。這樣的話,模型就既可以像骨骼動畫那樣播放動作,又可以使用gpuinstancing合批了。做法也非常簡單,就是把Skinmesh變成MeshRender,然后把骨骼和動畫信息,記錄在一張貼圖上,然后把動畫的運算放到shader里。 本來這樣就可以了,但實際使用過程中卻發現了幾個問題。

  1.烘焙的貼圖過大,因為為了存儲浮點數,必須使用rgbahalf的格式,這個格式每個像素有64個字節,是真彩色的兩倍。假設一個小兵有1000個頂點,那么1s的動作就需要1000*64,也就是64000個字節,而正常情況下,我們小兵在2000個頂點左右,動畫在5s以上,那么每個動畫貼圖大概就在2M以上,甚至有可能是4M。而我們有60多個兵種,這樣一算竟然有240M。雖然小米超神使用了RGMB來減少每個像素的大小,但那也高達120M的動畫貼圖了。而我們知道,原始的骨骼動畫數據其實只有幾百k左右。

  2.無法計算光照,因為法線始終保持T-pos形態,在shader里面改變頂點位置的時候,無法重新計算法線。為了能夠使用正常的光照計算,必須將法線也一起烘焙。幸運的是法線都是單位向量,可以采用rgba存儲,但也需要大概1M左右的空間。

  3.沒有動畫之間的blend,為了實現blend,必須對兩個動作的貼圖進行采樣,然后lerp。這樣會導致shader里放兩張4M的貼圖,對手游來說還是不小的開銷。

  綜上所述,我最終還是采納了M神的建議,使用了烘焙骨骼信息的方案。

  來看看原理,烘焙頂點很好理解,就是把位置的值存到貼圖中。那么如何烘焙骨骼信息,然后得到頂點位置呢?首先我們要理解骨骼動畫的原理,這里引用UWA博客里面的一段話:

圖片4

  當然上面的描述很簡單,如果想要了解更加詳細的推倒過程,可以看Milo大神的書《游戲引擎架構xxx》里面的蒙皮的數學這一章。

  總之,結論就是從當前骨骼的bindpos一直左乘到根骨骼。

  代碼也非常簡單:

  for (int j = 0; j < bones.Length; j++)

  {

  GPUSkinningBone currentBone = bones[j];

  Matrix4x4 lastMat = currentBone.bindpose;

  while (true)

  {

  if (currentBone.parentBoneIndex == -1)

  {

  Matrix4x4 mat = Matrix4x4.TRS(currentBone.transform.localPosition, currentBone.transform.localRotation, currentBone.transform.localScale);

  if(rootBone.transform != go.transform)

  {

  mat = Matrix4x4.TRS(Vector3.zero, Quaternion.identity, go.transform.localScale) * mat;

  }

  lastMat = mat * lastMat;

  break;

  }

  else

  {

  Matrix4x4 mat = Matrix4x4.TRS(currentBone.transform.localPosition, currentBone.transform.localRotation, currentBone.transform.localScale);

  lastMat = mat * lastMat;

  currentBone = bones[currentBone.parentBoneIndex];

  }

  }

  animMap.SetPixel(j * 3, k + 1, new Color(lastMat.m00, lastMat.m01, lastMat.m02, lastMat.m03));

  animMap.SetPixel(j * 3 + 1, k + 1, new Color(lastMat.m10, lastMat.m11, lastMat.m12, lastMat.m13));

  animMap.SetPixel(j * 3 + 2, k + 1, new Color(lastMat.m20, lastMat.m21, lastMat.m22, lastMat.m23));

  if (k == startFrame)

  {

  animMap.SetPixel(j * 3, k, new Color(lastMat.m00, lastMat.m01, lastMat.m02, lastMat.m03));

  animMap.SetPixel(j * 3 + 1, k, new Color(lastMat.m10, lastMat.m11, lastMat.m12, lastMat.m13));

  animMap.SetPixel(j * 3 + 2, k, new Color(lastMat.m20, lastMat.m21, lastMat.m22, lastMat.m23));

  }

  else if(k == curClipFrame1 + startFrame - 3)

  {

  animMap.SetPixel(j * 3, k + 2, new Color(lastMat.m00, lastMat.m01, lastMat.m02, lastMat.m03));

  animMap.SetPixel(j * 3 + 1, k + 2, new Color(lastMat.m10, lastMat.m11, lastMat.m12, lastMat.m13));

  animMap.SetPixel(j * 3 + 2, k + 2, new Color(lastMat.m20, lastMat.m21, lastMat.m22, lastMat.m23));

  }

  }

  最重要的部分就是生成矩陣的那里。這里有幾個注意點,一個是根骨骼可能有多個,那么你只需要將他們共同的父親放到根節點,把這個其實沒有骨骼的節點處理成默認矩陣的情況就可以。第二個是因為貼圖采樣有可能采樣到邊緣,為了防止精確度不夠引起動畫抖動,我前后各多增加了一幀,防止抖動。

  然后是shader部分:

  v2f vert(appdata v)

  {

  UNITY_SETUP_INSTANCE_ID(v);

  float start = UNITY_ACCESS_INSTANCED_PROP(Props, _AnimStart);

  float end = UNITY_ACCESS_INSTANCED_PROP(Props, _AnimEnd);

  float off = UNITY_ACCESS_INSTANCED_PROP(Props, _AnimOff);

  float speed = UNITY_ACCESS_INSTANCED_PROP(Props, _Speed);

  float _AnimLen = (end - start);

  float f = (off + _Time.y * speed) / _AnimLen;

  f = fmod(f, 1.0);

  float animMap_x1 = (v.uv2.x * 3 + 0.5) * _AnimMap_TexelSize.x;

  float animMap_x2 = (v.uv2.x * 3 + 1.5) * _AnimMap_TexelSize.x;

  float animMap_x3 = (v.uv2.x * 3 + 2.5) * _AnimMap_TexelSize.x;

  float animMap_y = (f * _AnimLen + start) / _AnimAll;

  float4 row0 = tex2Dlod(_AnimMap, float4(animMap_x1, animMap_y, 0, 0));

  float4 row1 = tex2Dlod(_AnimMap, float4(animMap_x2, animMap_y, 0, 0));

  float4 row2 = tex2Dlod(_AnimMap, float4(animMap_x3, animMap_y, 0, 0));

  float4 row3 = float4(0, 0, 0, 1);

  float4x4 mat = float4x4(row0, row1, row2, row3);

  float4 pos = mul(mat, v.vertex);

  float3 normal = mul(mat, float4(v.normal, 0)).xyz;

  v2f o;

  UNITY_TRANSFER_INSTANCE_ID(v, o);

  o.uv = TRANSFORM_TEX(v.uv, _MainTex);

  o.vertex = UnityObjectToClipPos(pos);

  o.color = float4(0, 0, 0, 0);

  o.worldNormal = UnityObjectToWorldNormal(normal);

  float3 normalDir = normalize(mul(float4(normal, 0.0), unity_WorldToObject).xyz);

  float frezz = UNITY_ACCESS_INSTANCED_PROP(Props, _Frezz);

  float3 normalWorld = o.worldNormal;

  fixed dotProduct = dot(normalWorld, fixed3(0, 1, 0)) / 2;

  dotProduct = max(0, dotProduct);

  o.color = dotProduct.xxxx * frezz;

  return o;

  }

  主要就是頂點著色器部分,我們把4x4的骨骼旋轉偏移矩陣存在貼圖里,因為最后一行是flaot4(0,0,0,1),為了節省空間,我們只存了3x4大小的矩陣,最后一行在shader里補上。然后直接將矩陣和頂點相乘,就可以得到蒙皮后的頂點位置。而且我們看到,法線也可以這么處理,就可以得到蒙皮后正確的法線。這里還有一個我沒有做的功能,就是骨骼權重,其實我將骨骼權重存進了頂點的uv2中,uv2.xy是第一根骨骼的索引和權重,uv2.zw是第二根骨骼的索引和權重,理論上需要將兩個骨骼結算的結果加權平均一下,但因為我測試發現精度夠了,就少采樣一次,節省點消耗。如果有需要,可以自己加上這個加權平均。

  還有一個未來需要做的,就是動畫之間的blend,需要額外增加一個變量控制blend的程度,對兩個時刻的動作分別采樣計算,然后lerp一下就可以了。

  我們看看用貼圖存儲骨骼需要的大小,假設一個小兵有25個骨骼,那么一個骨骼需要4x3個浮點數,也就是3個像素,那么需要75個像素,一個1s的動畫,也只需要75*64,大概4800字節而已。而且重要的是我們不受到頂點數的限制,而一個小兵的骨骼正常情況下就是30以內,我們得到了一個可控的合理的結果。

  四、總結

  使用Gpuinstance技術能極大的提示游戲的渲染性能,讓游戲能夠渲染更多的植被和動態物體,提高玩家的游戲樂趣。

  更多關于unity游戲培訓的問題,歡迎咨詢千鋒教育在線名師。千鋒教育擁有多年IT培訓服務經驗,采用全程面授高品質、高體驗培養模式,擁有國內一體化教學管理及學員服務,助力更多學員實現高薪夢想。

tags:
聲明:本站稿件版權均屬千鋒教育所有,未經許可不得擅自轉載。
10年以上業內強師集結,手把手帶你蛻變精英
請您保持通訊暢通,專屬學習老師24小時內將與您1V1溝通
免費領取
今日已有369人領取成功
劉同學 138****2860 剛剛成功領取
王同學 131****2015 剛剛成功領取
張同學 133****4652 剛剛成功領取
李同學 135****8607 剛剛成功領取
楊同學 132****5667 剛剛成功領取
岳同學 134****6652 剛剛成功領取
梁同學 157****2950 剛剛成功領取
劉同學 189****1015 剛剛成功領取
張同學 155****4678 剛剛成功領取
鄒同學 139****2907 剛剛成功領取
董同學 138****2867 剛剛成功領取
周同學 136****3602 剛剛成功領取
相關推薦HOT
主站蜘蛛池模板: 国产成人无码AⅤ片在线观看| 中文字幕乱码一区二区三区免费| 亚洲A∨无码无在线观看| 日本XXXX裸体XXXX| 人妻少妇精品视中文字幕国语| 草木影视在线视频免费观看| 成人无码区免费AⅤ片WWW软件| 国产免费破外女真实出血视频 | 欧美XXXX做受欧美88HD| 人人妻人人澡人人爽不卡视频| 刺激Chinese乱叫国产高潮| 国产成人牲交在线观看视频| 小雪被老汉玩遍各种方式 | 青青草国产成人A∨| 日本欧美大码A在线观看| 哦┅┅快┅┅用力啊┅┅村妇| 精品推荐国产AV剧情| 亚洲AV无码一区二区三区久久精 | 成.人.大.片在线观看| 亚洲AV无码国产精品色午夜字幕 | 国产成人久久精品一区二区三区| 成人片国产精品亚洲| 欧洲美女与动交ZOZ0Z| 粉嫩av观看成人网站| 男人进入女人下部图| 亚洲色成人一区二区三区小说| 精品无码人妻被多人侵犯aⅴ| W永久939W78W78W乳液| 国产成人牲交在线观看视频 | 专干日本熟妇人妻| 粗大黑人巨精大战欧美成人| 国内精品久久久久影院蜜芽蜜芽T| 无套内谢孕妇毛片免费看| 在线观看韩国电影| 日本乱偷互换人妻中文字幕| 天天澡夜夜澡人人澡| 欧洲老人毛多BBWBBWBBW| 内射人妻视频国内| らだ天堂√在线中文WWW| 亚洲精品无码专区| 免费AV大片在线观看入口| 狠狠五月激情六月丁香| 一面膜上边一面膜下边韩国 | 无码人妻AⅤ一区二区三区夏目| 天堂√最新版中文在线天堂| 国精产品砖一区二区三区糖心| 国产精品成人VA在线播放| YSL千色T9T9T9| 久久久久久精品免费S| 成人无码区免费∨| 公粗挺进了我的密道在线观看| 锕锕锕锕锕锕锕好疼免费视频| 久久久久久久久精品无码中文字幕| 国产成人精选视频在线观看| 欧美熟VIDEOS肥婆| 日本水蜜桃身体乳的美白效果| 亚洲色WWW永久网站| 久久99精品久久只有精品| 无码A∨高潮抽搐流白浆8MAV| 又紧又大又爽精品一区二区| 成人年无码AV片在线观看| 国产成人愉拍免费视频| 亚洲AV最新天堂网址| 亚洲AV无码久久精品成人| 亚洲AV无码一区二区三区网址| 成年无码AV片在线| 天堂AV亚洲ITV在线AⅤ| 人妻系列无码专区免费视频| 漂亮人妻去按摩被按中出| 欧美亚洲熟妇少妇性A爱| 女儿的朋友7中汉字晋通话| 国产精品国产三级国产AⅤ| 国产成人无码AV| 男女车车的车车网站W98免费| 久久寂寞少妇成人内射| 城中村快餐嫖老妇对白| 久久精品午夜一区二区福利| 亚洲AV无码无在线观看红杏| 成人做受120视频试看| 秋霞国产午夜伦午夜福利片| 自拍偷自拍亚洲精品情侣| 国内AI明星造梦鞠婧祎MV| 少妇高潮惨叫喷水正在播放| 草莓视频免费观看| 锕锕锕锕锕锕~好深啊APP下载| 天堂√最新版中文在线天堂| 丰满少妇AV无码区| 高清偷自拍亚洲精品三区| 精品无码AV人在线观看| 国语第一次处破女| 综合无码精品人妻一区二区三区| 国产成人涩涩涩视频在线观看| 精品九九人人做人人爱| 国产熟女一区二区| 精品亚洲国产成人AV制服| 国产一区二区三区精品视频| 嗯~啊哈好深好骚啊哼| 在线看片无码永久AV| 无人区码一码二码三码在线 | 拍摄AV现场失控高潮数次| 秋霞电影网免费观看| 日本XXX色视频| 久久九九精品国产AV片国产| 国产成人欧美精品视频| 日本黄页网站免费观看| 国产精品无码久久AV不卡| 玩弄放荡人妻一区二区三| 九月婷婷亚洲综合成人| 亚洲 熟 图片 小说 乱 妇| 后入内射国产一区二区| 内射后入在线观看一区| 玩爽少妇人妻系列无码| АⅤ天堂中文在线网官网| 精品多毛少妇人妻AV免费久久 | 亚洲无AV码一区二区三区| 女人18片毛片60分钟| 午夜成人亚洲理论片在线观看| 女儿的朋友6中汉字| 少妇高潮惨叫喷水正在播放| 香蕉97超级碰碰碰视频| 色悠久久久久综合网伊| 欧美一区二区三区不卡| 精品视频无码一区二区三区| 国产精品无码无片在线观看| 高清熟女国产一区二区三区| 国产对白videos麻豆高潮| 国产精品JIZZ在线观看无码| 成人无码H免费动漫在线观看| 丰满丝袜熟女HD| 国产精品免费高清在线观看| 差差漫画网页登录页面弹窗| 亚洲啪AV永久无码精品放毛片| 中文字幕日韩精品无码内射| 人妻无奈被迫屈辱1-9| 久久国产加勒比精品无码| 国产精品一国产精品| 亚洲AV午夜福利精品一区二区| 他将头埋进双腿间吮小核故事| 久久97精品久久久久久久不卡| 国产成人无码AV麻豆| 人与畜禽共性关系的重要性| 成年轻人电影WWW无码| 欧美做受又硬又粗又大视频| 暗交小拗女一区二区| 国产在线孕妇孕交| 欧妇女乱妇女乱视频| 中国女人内射69XXXXⅩ视频| 寂寞视频一对一视频APP| 午夜私人理论电影| 亚洲AV无码精品无码麻豆| А√天堂BT中文在线| 精品久久久久久国产潘金莲| 女人扒开屁股桶爽30分钟| 任你躁国产自任一区二区三区| 亚洲一线产区和二线产区的区别| 中国在线观看免费国语版| 丰满圆润大胸在线| 亚洲AV无码成人精品区明星换面| 办公室扒开奶罩揉吮奶头AV| 在线看AV片的网站| 久久久久精品久久九九| 国精产品W灬源码1688伊在| 日本丰满护士爆乳XXⅩ| 国内精品卡一卡二卡三| 又大又粗的久久久精品少妇AV| 又粗又大又硬又爽的少妇毛片| 亚洲乱妇老熟女爽到高潮的片| 中文字幕精品无码一区二区三区| 亚洲午夜无码片在线观看影院| 强行糟蹋人妻HD中文字幕| 久久99精品久久只有精品| 非洲黄网站黑人美女日比群交视频| 国精产品一二二区传媒有哪些 | 孕妇滴着奶水做着爱A| WINDOWS乱码的乱码大全| 精品一区二区三区在线播放视频| 亚洲国产精品久久久久爰色欲| 韩国三级大乳在线观看| 嫩BBB槡BBBB搡BBBB| 人妻 白嫩 蹂躏 惨叫| 图片区小说区AV区| 玩弄JAPAN白嫩少妇HD小说| 吃奶呻吟打开双腿做受动态图| 精品国产第一国产综合精品 | 亚洲精品无码久久千人斩| 黑人巨茎迎战白嫩少妇| 国产精品无码免费播放| WC女厕撒尿七Ⅴ偷拍| 一本大道东京热无码AV| 性一交一乱一色一视频| 亚洲AV无码一区二区二三区下载| 中文乱码字幕高清一区二区| 亚洲综合国产一区二区三区| 色欲AV浪潮AV蜜臀AⅤ| 漂亮人妻被中出中文字幕| 久久久久久老熟妇人妻av| 日本适合十八岁以上的护肤品 | 久久久久国产一区二区| 国产美女丝袜一级肛交蜜桃| 亚洲精品日韩AV专区| 女儿的朋友5中汉字晋通话| 国产AⅤ无码专区亚洲AV综合网 | 国产精品99久久久久久猫咪| 脱岳裙子从后面挺进去| 国产成人无码A区视频在线观看| 一边做饭一边躁狂怎么办呢69| 日韩AV片无码一区二区三区不卡| 久久久综合九色综合鬼色| 亚洲日韩AV无码一区二区三区 | 小浪货腿张开水好多呀H| 人妻无奈被迫屈辱1-9| 高潮喷吹一区二区在线观看| 欧洲精品不卡1卡2卡三卡| 国产乱理伦片A级在线观看| 人妻少妇精品视频aaa| 强开少妇嫩苞又嫩又紧小说| 少妇人妻精品一区二区三区| 幼儿稀缺区超清幼儿做的网站 | 高潮喷吹一区二区在线观看| 亲子乱AⅤ一区二区三区| 日韩精品一区二区亚洲蜜桃| 亚洲AV成人中文无码专区| 天堂BT种子在线最新版资源| 日韩AV无码久久精品免费| 蜜臀国产AV天堂久久无码蜜臀| 日产精品久久久一区二区| 琪琪777午夜理论片在线观看播| 野花香电视剧全集免费观看| 完全着衣の爆乳お姉さんが| 久久99精品久久久久子伦| 国产成人AV无码精品天堂| 中国老妇XXXX性开放| 无码国内精品久久综合88| 精品国产第一国产综合精品 | 国产成人欧美精品视频| 用各种刑具调教吹潮的视频| 女人张开腿让男人桶爽的| 国产成人一区二区三区APP| 亚洲AV无码一区二区三区网址| 强壮公弄得我次次高潮| 成人黄网站片免费视频| 国产精品美女乱子伦高| 男生女生差差差轮滑免费| 永久免费看真人动漫网站| 国产福利一区二区精品秒拍| 女人被躁到高潮嗷嗷叫小说百度 | 玩弄少妇高耸白嫩的乳峰A片小说| 女人高潮特级毛片| 内地丰满浓密老熟女露脸对白| 天天摸天天做天天爽水多| 陈冠希实干阿娇13分钟| 草莓丝瓜榴莲绿巨人WWW| 成人国产亚洲精品A区| 成年黄网站18禁免费观看一区| 久久无码AV中文出轨人妻| 久久97精品久久久久久久不卡| 九月婷婷亚洲综合成人| 国产福利在线 | 传媒| 成 人 免 费 黄 色 网站无| 午夜A级理论片在线播放不卡| 无线乱码A区B区C区| 人妻少妇精品视频aaa| 国产粗语刺激对白ⅩXX| 无码少妇一区二区三区免费| 首页 综合国产 亚洲 丝袜日本| 日本适合十八岁以上的护肤品| 欧美精品色婷婷五月综合| 国精产品一二二区传媒有哪些| 吃奶呻吟打开双腿做受视频免费| 无码无套少妇毛多18PX| 成人无码免费一区二区三区| 日本COSME大赏美白| 亚洲AV无码一区二区二三区我| 韩国青草无码自慰直播专区| 人人妻人人澡人人爽人人DVD| 差差差无掩盖视频30分钟| 日本水蜜桃身体乳的美白效果| 国产精品秘入口18禁麻豆免会员 | 漂亮人妻洗澡被强人人躁| 放在里面边顶边吃饭H| 久久亚洲AV永久无码精品| 丝瓜秋葵草莓香蕉榴莲绿 | 小婷又软又嫩又紧水又多| 成人国产亚洲精品A区| 国产一本一道久久香蕉| 乳荡的小痍子免费播放| 欧美体内SHE精视频| 护士交换粗吟配乱大交| 丰满少妇人妻无码| 真实的国产乱ⅩXXX66小说| 成人无码AV网站在线观看| 亚洲国产另类久久久精品| 中国老太毛茸茸XXXXHD| 天天天天躁天天爱天天碰2018 | 在线麻豆精东9制片厂AV影现网| 国产午夜亚洲精品国产成人| 高H闺蜜老公1V1| 麻花豆传媒剧国产MV在线观看| 欧洲精品不卡1卡2卡三卡| 成年轻人电影WWW无码| 好男人好资源电影在线播放| 张柏芝跪下吃J8图片| 久久久久久人妻精品一区 | 亚洲AV无码国产精品色午友情链| 午马视频影院1区2区3区4区| 精品少妇人妻AV免费久久久 | 国精产品一区二区三区有限| 成在线人AV免费无码高潮喷水| 人人妻人人澡人人爽超污| 艳妇臀荡乳欲伦69调教视频| 韩国19禁床震无遮掩免费| 日韩不卡手机视频在线观看| 伊人色综合一区二区三区| 成在线人AV免费无码高潮喷水 | 五十老熟女高潮嗷嗷叫| 公粗挺进了我的密道在线观看 | 饭桌上故意张开腿让公在线观| 真实的国产乱ⅩXXX66小说| 隔壁人妻偷人BD中字| 国产丰满老熟女重口对白| 国产成人一区二区三区免费| 高清偷自拍亚洲精品三区| 影音先锋2020色资源网| 香蕉免费一区二区三区在| 成人爽A毛片在线视频| 超清纯白嫩大学生无码网站| 亚洲AV无码片一区二区三区| 久久精品欧美日韩精品| 精品人妻无码专区中文字幕| 国产精品人人做人人爽人人添| 国产成人精品视频ⅤA秋霞影院| 成人美女黄网站18禁免费| 秋霞免费理论片在线观看| 成人羞羞视频免费网站| 欧美丰满熟妇人妻兽交视频| 成人爽A毛片免费| 高清性色生活片97| 国产精品VIDEOSSEX久久发布| 他的舌头探进蜜源毛毛虫说说| 男人J放进女人J无遮挡免费看| 日本少妇自慰高清喷浆| 成人性生交大片免费看中文| 亚洲色偷无码一区二区蜜桃AV| 精品无码人妻一区二区三区四| 小奶瓶(产奶)沈姜| 嗯~啊哈好深好骚啊哼| 国产精品无码久久综合网| 欧美裸体XXXX| 色狠狠久久AV北条麻妃| 性饥渴少妇AV无码毛片| 每个世界都被主角睡来睡去可乐饼 | 中文无码AV电影在线观看网站| 久久AⅤ人妻少妇嫩草影院| 人与畜禽共性关系的重要性| 一边摸一边抽搐一进一出视频| 国产成人欧美精品视频| 暗交小拗女一区二区| 亚洲AV无码专区亚洲AV| 日本国产一区二区三区在线观看| 无码成人H动漫在线网站| 国产在线视频一区二区三区| 国产精品99久久久久久WWW| 亚洲日韩欧洲无码A∨夜夜| 日韩激情无码不卡码| 国产精品亚洲综合色区韩国| 制服丝袜AV无码专区完整版| 欧洲美女与动交ZOZ0Z| 粉嫩av一区二区精品爆乳| 在线精品亚洲一区二区| 精品无码久久久久国产动漫3D| 丰满人妻熟妇乱又伦精品视| 成人精品视频一区二区| 国内精品卡一卡二卡三| 上司人妻互换HD无码| 中国自产一战二战三战来源| 精品国产AⅤ一区二区三区在线看| 亚洲国产精品成人精品无码区在线 | 久久6久久66热这里只是精品| 大色综合色综合网站| 国产精品导航一区二区| 国内精品久久影院综合日日| 久久精品国产亚洲AV香蕉| 天天大片天天看大片| 无人区码一码二码三码在线 | 奇米影视7777久久精品| 无人区码一码二码三码在线| 脱色摇床THERMO网站| 欧美美女视频熟女一区二区| 日本狂喷奶水在线播放212| 青草国产超碰人人添人人碱| 日韩精品一区二区三区中文| 欧美乱码卡1卡2卡三卡四卡| 国产男男GAY做受XXX| 成人午夜免费无码福利片| 岳打开双腿开始配合交换| 日产精品久久久久久久| 娇妻强被迫伦姧惨叫 在线| 成人欧美日韩一区二区三区| 亚洲婷婷综合色高清在线| 日韩一区二区三区精品| 国产精品JIZZ视频| 人妻无码熟妇乱又视频| 苍井空无码免费换线| 秋霞鲁丝片AⅤ无码入口| 草莓视频APP下载| 日本熟少妇裸交ⅩXX视频| 草草最新发地布地址①·| 国产成人愉拍免费视频| 久久精品丝袜高跟鞋| 女の乳搾りです在线观看|