久久精品国产精品国产精品污,男人扒开添女人下部免费视频,一级国产69式性姿势免费视频,夜鲁夜鲁很鲁在线视频 视频,欧美丰满少妇一区二区三区,国产偷国产偷亚洲高清人乐享,中文 在线 日韩 亚洲 欧美,熟妇人妻无乱码中文字幕真矢织江,一区二区三区人妻制服国产

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

谈谈Hybird3D中的光栅化优化

發(fā)布時間:2023/12/1 编程问答 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 谈谈Hybird3D中的光栅化优化 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

看到空明流轉(zhuǎn)分享了他的SALVIA 0.5.2優(yōu)化談,我也來說說Hybird3D中和光柵化相關(guān)的一些優(yōu)化技術(shù)。

Hybird3D的設計目標是打造一款準實時的軟件高質(zhì)量渲染器,采用了光柵化和光線跟蹤混合算法,光柵化用于渲染eye ray,光線跟蹤則用于陰影、反射、折射、全局光等次級光線的計算。由于渲染器是以準實時(一幀渲染時間在幾十毫秒到幾秒之間)為設計目標的,因此性能優(yōu)化是非常重要的,但同時為了能夠?qū)崿F(xiàn)高質(zhì)量的軟件渲染,在渲染器的架構(gòu)和支持的特性上也不會因為性能而縮水和妥協(xié)。

光柵化算法

Hybird3D的光柵化算法主要采用的是Michael Abrash寫的rasterization on Larrabee這篇paper,這個算法是目前我所知道的同時能夠支持多線程和SIMD的最佳算法,這個算法保證了每個tile的光柵化可以由每個線程獨立計算,而沒有任何數(shù)據(jù)沖突,從而實現(xiàn)完全的無鎖化計算。Larrabee有512bit的SIMD寬度,也就是一次可以計算16個float,在一般的支持SSE的CPU上我們只能使用128bit的SIMD指令一次計算4個float,雖然寬度少了,但不影響算法的應用。

Hybird3D也是采用的16x16的tile,光柵化的主要任務是計算某個像素上對應的三角圖元和三角形重心坐標(另外為了后續(xù)的mipmap紋理插值我們還需要保存重心坐標的差分值),有了圖元和重心坐標就可以送到后端的LightShader和PixelShader中做進一步的計算了。一個像素上不一定只存在一個圖元,半透明物體及其anti-alise等都會使得一個像素上存在多個圖元,可以將這些圖元保存為一個單向鏈表,同時為每個圖元設置一個alpha值做為混合權(quán)重就可以了。

內(nèi)存優(yōu)化技巧

內(nèi)存的優(yōu)化主要包括內(nèi)存的分配和cache的合理利用。在光柵化過程中會產(chǎn)生很多的臨時對象,對象的數(shù)量不可預估但是每種對象的生命周期可以很容易的知道,所以我們可以采取多次分配一次釋放的策略來實現(xiàn)非常高效的對象分配,根據(jù)不同的生命周期需要多個內(nèi)存分配器,同時為了防止多線程沖突,每個線程需要獨立的內(nèi)存分配器。對cache的利用則需要合理的設計我們的渲染流水線以及合理的組織數(shù)據(jù)結(jié)構(gòu)SoA(struct的array化),讓數(shù)據(jù)訪問盡可能的集中。SoA不但可以讓數(shù)據(jù)訪問變得集中而且對SIMD指令非常友好,不過SoA的編程難度很高,會讓代碼變得非常難寫和難讀,

SIMD編程技巧

SIMD的編程一直是件臟活和累活,15年前我就開始使用MMX指令來加速應用,那個時候只能內(nèi)嵌匯編,而且指令與普通的運算指令差別很大,寫完之后過段時間自己也看不懂了,代碼的維護是一個非常讓人頭疼的問題。后來出了intrinsics指令,可以在C代碼中用函數(shù)的形式來編寫SIMD指令,免去了手工寫匯編的痛苦,但是intrinsics指令同普通的C運算符差別還是很大,代碼的可讀性依然不佳,好在SSE指令集還是比較規(guī)整的,大部分運算指令可以用C++運算符重載來包裝intrinsics指令,下面給出我的包裝函數(shù)供大家參考。

1 inline __m128 operator + (__m128 v1, __m128 v2) 2 { 3 return _mm_add_ps(v1, v2); 4 } 5 6 inline __m128 operator - (__m128 v1, __m128 v2) 7 { 8 return _mm_sub_ps(v1, v2); 9 } 10 11 inline __m128 operator * (__m128 v1, __m128 v2) 12 { 13 return _mm_mul_ps(v1, v2); 14 } 15 16 inline __m128 operator / (__m128 v1, __m128 v2) 17 { 18 return _mm_div_ps(v1, v2); 19 } 20 21 inline __m128 operator == (__m128 v1, __m128 v2) 22 { 23 return _mm_cmpeq_ps(v1, v2); 24 } 25 26 inline __m128 operator != (__m128 v1, __m128 v2) 27 { 28 return _mm_cmpneq_ps(v1, v2); 29 } 30 31 inline __m128 operator > (__m128 v1, __m128 v2) 32 { 33 return _mm_cmpgt_ps(v1, v2); 34 } 35 36 inline __m128 operator >= (__m128 v1, __m128 v2) 37 { 38 return _mm_cmpge_ps(v1, v2); 39 } 40 41 inline __m128 operator < (__m128 v1, __m128 v2) 42 { 43 return _mm_cmplt_ps(v1, v2); 44 } 45 46 inline __m128 operator <= (__m128 v1, __m128 v2) 47 { 48 return _mm_cmple_ps(v1, v2); 49 } 50 51 inline __m128 operator & (__m128 v1, __m128 v2) 52 { 53 return _mm_and_ps(v1, v2); 54 } 55 56 inline __m128 operator | (__m128 v1, __m128 v2) 57 { 58 return _mm_or_ps(v1, v2); 59 } 60 61 inline int MoveMask(__m128 v) 62 { 63 return _mm_movemask_ps(v); 64 } 65 66 inline __m128 Max(__m128 v1, __m128 v2) 67 { 68 return _mm_max_ps(v1, v2); 69 } 70 71 inline __m128 Min(__m128 v1, __m128 v2) 72 { 73 return _mm_min_ps(v1, v2); 74 } 75 76 //mask ? a : b 77 inline __m128 Select(__m128 mask, __m128 a, __m128 b) 78 { 79 return _mm_or_ps(_mm_and_ps(a, mask), _mm_andnot_ps(mask, b)); 80 } 81 82 inline __m128 Extract(__m128 m, int n) 83 { 84 switch(n) 85 { 86 case 0: 87 return _mm_shuffle_ps(m, m, 0); 88 case 1: 89 return _mm_shuffle_ps(m, m, 0x55); 90 case 2: 91 return _mm_shuffle_ps(m, m, 0xaa); 92 case 3: 93 return _mm_shuffle_ps(m, m, 0xff); 94 default: 95 return m; 96 } 97 }

?

最后是干貨時間,放出Hybird3D中光柵化相關(guān)的代碼供大家參考。

1 #include "stdafx.h" 2 #include "RayTracer.h" 3 #include "Clipper.h" 4 #include "PrimitiveTile.h" 5 6 #pragma warning(disable: 4018) 7 8 #define TILE_WIDTH 16 9 #define TILE_HEIGHT 16 10 11 const float NORMAL_THRESHOLD = 0.9f; 12 extern int ReflectionDepth; 13 14 _CRT_ALIGN(16) struct Illuminance 15 { 16 Float3 direction; 17 float illuminance; 18 Float3 color; 19 float shadowFactor; 20 Illuminance* next; 21 LightShader* light; 22 }; 23 24 struct VertexOutput 25 { 26 Float4 pos; 27 Float4 normal; 28 float attributes[0]; 29 }; 30 31 struct PolyPrimitive; 32 33 _CRT_ALIGN(16) struct PixelContext 34 { 35 PixelContext* next; 36 PolyPrimitive* prim; 37 int triIndex; 38 float alpha; 39 Float4 pos; 40 Float4 view; 41 Float4 normal; 42 Float2 uv; 43 Float2 duvdx; //d(uv) / dx 44 Float2 duvdy; //d(uv) / dy 45 Illuminance* light; 46 void* userData; 47 }; 48 49 _CRT_ALIGN(16) const float FrustumClipPlane[6][4] = { 50 { 0, 0, 1, 0}, 51 { 0, 0,-1, 1}, 52 { 1, 0, 0, 1}, 53 {-1, 0, 0, 1}, 54 { 0, 1, 0, 1}, 55 { 0,-1, 0, 1}, 56 }; 57 58 __m128 ScreenOffset; 59 __m128 ScreenScale; 60 __m128 ScreenScaleInv; 61 62 struct RenderContext : public IRenderContext 63 { 64 Float4x4 ViewProjMatrix; 65 Float4x4 ViewInvMatrix; 66 Float4 _eye; 67 float ScreenWidth, ScreenHeight; 68 PrimitiveTile* _primTiles; 69 Bitmap* _renderTarget; 70 int _tileCol, _tileRow; 71 BYTE* _vertexTempBuf; 72 size_t _vertexTempSize; 73 ICamera* _camera; 74 Accel _accelStruct; 75 int _aaLevel; 76 int _primCount; 77 DWORD _bkColor; 78 Float4 _bkColorF; 79 vector<LightShader*> _lights; 80 81 RenderContext() 82 { 83 _vertexTempSize = 0; 84 _vertexTempBuf = 0; 85 _primTiles = 0; 86 _aaLevel = 0; 87 _tileCol = 0; 88 _tileRow = 0; 89 ScreenOffset = _mm_setr_ps(1, -1, 0, 0); 90 } 91 92 void AddLight(LightShader* light) 93 { 94 _lights.push_back(light); 95 } 96 97 void ClearLights() 98 { 99 _lights.clear(); 100 } 101 102 void SetRenderTarget(Bitmap* target) 103 { 104 ScreenWidth = target->width; 105 ScreenHeight = target->height; 106 int tileCount = _tileCol * _tileRow; 107 _renderTarget = target; 108 _tileCol = Align(target->width, TILE_WIDTH) / TILE_WIDTH; 109 _tileRow = Align(target->height, TILE_HEIGHT) / TILE_HEIGHT; 110 if(tileCount < _tileCol * _tileRow) 111 { 112 if(_primTiles) 113 delete[] _primTiles; 114 115 _primTiles = new PrimitiveTile[_tileCol * _tileRow]; 116 } 117 for(int i = 0; i < _tileCol * _tileRow; ++i) 118 _primTiles[i].Clear(); 119 120 ScreenScale = _mm_setr_ps(ScreenWidth * 0.5f, -ScreenHeight * 0.5f, 1, 1); 121 ScreenScaleInv = m128(1) / ScreenScale; 122 } 123 124 void SetAntiAliasQuality(int level) 125 { 126 _aaLevel = min(max(0, level), 4); 127 } 128 129 void SetCamera(ICamera* camera) 130 { 131 _camera = camera; 132 } 133 134 ICamera* GetCamera() 135 { 136 return _camera; 137 } 138 139 void VertConvert(Float4* dest, VertexOutput* vert, int vertChannels) 140 { 141 __m128 pos = _mm_load_ps(vert->pos); 142 __m128 w = _mm_shuffle_ps(pos, pos, _MM_SHUFFLE(3, 3, 3, 3)); 143 144 __m128 rhw = _mm_div_ss(_mm_set_ss(1), w); 145 rhw = _mm_shuffle_ps(rhw, rhw, 0); 146 147 _mm_store_ps(dest[0], _mm_mul_ps(_mm_add_ps(_mm_mul_ps(pos, rhw), ScreenOffset), ScreenScale)); 148 149 __m128* attr = (__m128*)&vert->normal; 150 for(int k = 0; k < vertChannels; k++) 151 _mm_store_ps(dest[k + 1], _mm_mul_ps(attr[k], rhw)); 152 153 _mm_store_ss(&dest[0].w, rhw); 154 } 155 156 virtual void BeginScene() 157 { 158 _accelStruct.BeginBuild(); 159 } 160 161 virtual void AddPolyons(VertexOutput* verts, int vertSize, 162 int vertCount, DWORD* triangles, int count, Shader* shader) 163 { 164 165 _accelStruct.AddPolygons((BYTE*)verts, triangles, vertSize, vertCount, count, shader); 166 } 167 168 virtual void EndScene() 169 { 170 _accelStruct.Build(); 171 } 172 173 virtual void SetBackground(DWORD color) 174 { 175 _bkColor = color; 176 _bkColorF = Float4((float)(color & 0xff), 177 (float)((color >> 8) & 0xff), 178 (float)((color >> 16) & 0xff), 1); 179 180 _bkColorF /= 255.f; 181 182 _bkColorF = _bkColorF * _bkColorF; 183 } 184 185 void RasterTile(PrimitiveTile* tile, int x, int y, 186 DWORD* target, int pitch, struct FGSampleTable* FGSamples = 0); 187 188 void RasterFGSample(PrimitiveTile* tile, int x, int y, struct FGSampleMap& dest); 189 190 void RasterFragmentSample(PrimitiveTile* tile, int x, int y, struct FragmentSampleMap& dest); 191 192 void FGShader(struct FGSampleRef* samples, int count); 193 194 void DrawPrimitive(TriVertex** vert, TrianglePrim& tri); 195 196 void ClippingAndDraw(TriVertex** verts, TrianglePrim& tri); 197 198 void DrawTriangle(TrianglePrim& tri); 199 200 void Render(); 201 202 static void* operator new (size_t size) 203 { 204 return _aligned_malloc(sizeof(RenderContext), 16); 205 } 206 }; 207 208 void Create4TransPixels(PixelContext** pixels, TriPrimitive* prim, const Float4& eye, 209 float* rhw, float x, float y, Allocator& alloc) 210 { 211 __m128 ma = _mm_loadu_ps(prim->a); 212 __m128 mb = _mm_loadu_ps(prim->b); 213 __m128 a0 = ma * (m128(x - prim->p0.x)) + mb * (m128(y - prim->p0.y)) + _mm_loadu_ps(prim->c); 214 for(int i = 0; i < 4; ++i) 215 { 216 __m128 a = a0; 217 if(rhw[i] > 0) 218 { 219 PixelContext pixel; 220 __m128 adx = a + ma; 221 __m128 ady = a + mb; 222 __m128 r = _mm_div_ss(m128(1), a); 223 a = a * Extract(r, 0); 224 adx = a - adx * Extract(_mm_rcp_ss(adx), 0); 225 ady = a - ady * Extract(_mm_rcp_ss(ady), 0); 226 _mm_store_ss(&pixel.pos.w, a0); 227 pixel.prim = prim->prim; 228 pixel.triIndex = prim->triIndex; 229 _mm_storeu_ps(pixel.uv, _mm_shuffle_ps(a, adx, _MM_SHUFFLE(2, 1, 2, 1))); 230 _mm_storeu_ps(pixel.duvdy, _mm_shuffle_ps(ady, ady, _MM_SHUFFLE(2, 1, 2, 1))); 231 float alpha = prim->prim->shader->TransprentShader(&pixel); 232 if(alpha > 0.01f) 233 { 234 //insert pixel 235 PixelContext* p = (PixelContext*)alloc.Alloc(sizeof(PixelContext), 16); 236 p->alpha = alpha; 237 p->prim = prim->prim; 238 p->triIndex = prim->triIndex; 239 p->uv = pixel.uv; 240 p->duvdx = pixel.duvdx; 241 p->duvdy = pixel.duvdy; 242 prim->prim->GetPosNormal(prim->triIndex, pixel.uv, &p->pos, &p->normal); 243 p->view = NormalizeFast(eye - p->pos); 244 p->light = 0; 245 p->next = 0; 246 p->pos.w = pixel.pos.w; 247 248 float alpha2 = 1; 249 if(pixels[i] == 0) 250 pixels[i] = p; 251 else 252 { 253 PixelContext* prev = 0; 254 PixelContext* pp = pixels[i]; 255 while(pp) 256 { 257 if(p->pos.w > pp->pos.w) 258 break; 259 alpha2 -= pp->alpha; 260 prev = pp; 261 pp = pp->next; 262 } 263 p->alpha = alpha * alpha2; 264 if(prev) 265 { 266 p->next = prev->next; 267 prev->next = p; 268 } 269 else 270 { 271 p->next = pixels[i]; 272 pixels[i] = p; 273 } 274 275 if(alpha > 0.99f) 276 { 277 p->next = 0; 278 } 279 else 280 { 281 alpha = 1 - alpha; 282 pp = p->next; 283 while(pp) 284 { 285 pp->alpha *= alpha; 286 pp = pp->next; 287 } 288 } 289 } 290 } 291 } 292 a0 = a0 + ma; 293 } 294 } 295 296 void CreateMainPixels(PixelContext** pixels, TriPrimitive** primBuf, const Float4& eye, 297 float startX, float startY, int tileSize, float alpha, Allocator& alloc) 298 { 299 __m128 px = m128(startX); 300 __m128 py = m128(startY); 301 for(int i = 0; i < tileSize; ++i) 302 { 303 if(i % 16 == 0 && i > 0) 304 { 305 py = py + m128(1); 306 px = m128(startX); 307 } 308 TriPrimitive* prim = primBuf[i]; 309 if(prim) 310 { 311 PixelContext* p = (PixelContext*)alloc.Alloc(sizeof(PixelContext), 16); 312 __m128 ma = _mm_loadu_ps(prim->a); 313 __m128 mb = _mm_loadu_ps(prim->b); 314 __m128 a = ma * (px - m128(prim->p0.x)) + 315 mb * (py - m128(prim->p0.y)) + _mm_loadu_ps(prim->c); 316 __m128 rhw = a; 317 318 __m128 r = _mm_div_ss(m128(1), a); 319 __m128 w = _mm_shuffle_ps(r, r, 0); 320 __m128 adx = a + ma; 321 __m128 ady = a + mb; 322 a = a * w; 323 r = _mm_rcp_ss(adx); 324 adx = a - adx * _mm_shuffle_ps(r, r, 0); 325 r = _mm_rcp_ss(ady); 326 ady = a - ady * _mm_shuffle_ps(r, r, 0); 327 _mm_storeu_ps(p->uv, _mm_shuffle_ps(a, adx, _MM_SHUFFLE(2, 1, 2, 1))); 328 _mm_storeu_ps(p->duvdy, _mm_shuffle_ps(ady, ady, _MM_SHUFFLE(2, 1, 2, 1))); 329 p->prim = prim->prim; 330 p->triIndex = prim->triIndex; 331 p->prim->GetPosNormal(p->triIndex, p->uv, &p->pos, &p->normal); 332 p->view = NormalizeFast(eye - p->pos); 333 p->light = 0; 334 p->alpha = alpha; 335 p->next = 0; 336 pixels[i] = p; 337 _mm_store_ss(&p->pos.w, rhw); 338 } 339 else 340 pixels[i] = 0; 341 px = px + m128(1); 342 } 343 } 344 345 void InsertPixel(PixelContext** pixel, PixelContext* p) 346 { 347 if(*pixel == 0) 348 *pixel = p; 349 else 350 { 351 PixelContext* prev = 0; 352 PixelContext* pp = *pixel; 353 while(pp) 354 { 355 if(p->pos.w > pp->pos.w) 356 break; 357 prev = pp; 358 pp = pp->next; 359 } 360 if(prev) 361 { 362 p->next = prev->next; 363 prev->next = p; 364 } 365 else 366 { 367 p->next = *pixel; 368 *pixel = p; 369 } 370 } 371 } 372 373 void CreatePixels(PixelContext** pixels, TriPrimitive** primBuf, const Float4& eye, 374 float alpha, float startX, float startY, int tileSize, Allocator& alloc) 375 { 376 __m128 px = m128(startX); 377 __m128 py = m128(startY); 378 for(int i = 0; i < tileSize; ++i) 379 { 380 if(i % 16 == 0 && i > 0) 381 { 382 py = py + m128(1); 383 px = m128(startX); 384 } 385 TriPrimitive* prim = primBuf[i]; 386 if(prim) 387 { 388 PixelContext* pixel = pixels[i]; 389 while(pixel) 390 { 391 if(pixel->prim == prim->prim) 392 { 393 pixel->alpha += alpha; 394 goto _SkipPixel; 395 } 396 pixel = pixel->next; 397 } 398 399 PixelContext* p = (PixelContext*)alloc.Alloc(sizeof(PixelContext), 16); 400 __m128 ma = _mm_loadu_ps(prim->a); 401 __m128 mb = _mm_loadu_ps(prim->b); 402 403 __m128 a = ma * (px - m128(prim->p0.x)) + 404 mb * (py - m128(prim->p0.y)) + _mm_loadu_ps(prim->c); 405 __m128 rhw = a; 406 407 __m128 r = _mm_div_ss(m128(1), a); 408 __m128 w = Extract(r, 0); 409 __m128 adx = a + ma; 410 __m128 ady = a + mb; 411 a = a * w; 412 r = _mm_rcp_ss(adx); 413 adx = a - adx * Extract(r, 0); 414 r = _mm_rcp_ss(ady); 415 ady = a - ady * Extract(r, 0); 416 _mm_storeu_ps(p->uv, _mm_shuffle_ps(a, adx, _MM_SHUFFLE(2, 1, 2, 1))); 417 _mm_storeu_ps(p->duvdy, _mm_shuffle_ps(ady, ady, _MM_SHUFFLE(2, 1, 2, 1))); 418 p->prim = prim->prim; 419 p->triIndex = prim->triIndex; 420 p->prim->GetPosNormal(p->triIndex, p->uv, &p->pos, &p->normal); 421 p->view = NormalizeFast(eye - p->pos); 422 p->light = 0; 423 p->alpha = alpha; 424 p->next = 0; 425 _mm_store_ss(&p->pos.w, rhw); 426 InsertPixel(&pixels[i], p); 427 } 428 _SkipPixel: 429 px = px + m128(1); 430 } 431 } 432 433 void RasterFullCoverPrim(TriPrimitive* prim, float startX, 434 float startY, float* primBuf, float* wBuf) 435 { 436 __m128 startW = m128((startX - prim->p0.x) * prim->a[0] 437 + (startY - prim->p0.y) * prim->b[0] + prim->c[0]); 438 __m128 rhwDx = m128(prim->a[0] * 4); 439 __m128 primData = m128(*(float*)&prim); 440 startW = startW + m128(prim->a[0]) * _mm_set_ps(3, 2, 1, 0); 441 442 for(int i = 0; i < TILE_HEIGHT; ++i) 443 { 444 __m128 rhw = startW; 445 for(int j = 0; j < TILE_WIDTH; j += 4) 446 { 447 __m128 oldW = _mm_load_ps(wBuf + j); 448 __m128 mask = rhw > oldW; 449 _mm_store_ps(wBuf + j, Select(mask, rhw, oldW)); 450 _mm_store_ps(primBuf + j, Select(mask, primData, _mm_load_ps(primBuf + j))); 451 rhw = rhw + rhwDx; 452 } 453 wBuf += TILE_WIDTH; 454 primBuf += TILE_WIDTH; 455 startW = startW + m128(prim->b[0]); 456 } 457 } 458 459 void RasterPrim(TriPrimitive* prim, float x, float y, 460 float xs, float ys, TriPrimitive** primBuf, float* wBuf) 461 { 462 __m128 ex[3]; 463 __m128 ey[3]; 464 __m128 xOff[3]; 465 __m128 yOff[3]; 466 __m128 mask0[3]; 467 __m128 primData = m128(*(float*)&prim); 468 469 for(int i = 0; i < 3; ++i) 470 { 471 ex[i] = m128(prim->ea[i]); 472 ey[i] = m128(prim->eb[i]); 473 xOff[i] = (ex[i] > m128(0)) & m128(4); 474 yOff[i] = (ey[i] > m128(0)) & m128(4); 475 } 476 __m128 p0x = m128(prim->p0.x); 477 __m128 p0y = m128(prim->p0.y); 478 __m128 p1x = p0x - ey[0]; 479 __m128 p1y = p0y + ex[0]; 480 481 mask0[0] = (m128(x) - p0x) * ex[0] + (m128(y) - p0y) * ey[0]; 482 mask0[1] = (m128(x) - p1x) * ex[1] + (m128(y) - p1y) * ey[1]; 483 mask0[2] = (m128(x) - p0x) * ex[2] + (m128(y) - p0y) * ey[2]; 484 485 __m128 rhw0 = (_mm_set_ps(3, 2, 1, 0) + m128(x + xs) - p0x) * m128(prim->a[0]) + 486 (m128(y + ys) - p0y) * m128(prim->b[0]) + m128(prim->c[0]); 487 __m128* mprimBuf = (__m128*)primBuf; 488 __m128* mwBuf = (__m128*)wBuf; 489 490 __m128 yStep = m128(0); 491 for(int iy = 0; iy < 4; ++iy) 492 { 493 __m128 mask; 494 __m128 xStep = _mm_set_ps(12, 8, 4, 0); 495 mask = ((mask0[0] + (xStep + xOff[0]) * ex[0] + (yStep + yOff[0]) * ey[0]) >= m128(0)) & 496 ((mask0[1] + (xStep + xOff[1]) * ex[1] + (yStep + yOff[1]) * ey[1]) >= m128(0)) & 497 ((mask0[2] + (xStep + xOff[2]) * ex[2] + (yStep + yOff[2]) * ey[2]) >= m128(0)); 498 499 int* imask = (int*)&mask; 500 if(MoveMask(mask)) 501 { 502 __m128 rhw1 = rhw0; 503 for(int ix = 0; ix < 4; ++ix) 504 { 505 if(imask[ix]) 506 { 507 __m128 mask1[3]; 508 __m128 xpos = _mm_set_ps(3, 2, 1, 0) + m128((float)(ix * 4) + xs); 509 __m128 ypos = yStep + m128(ys); 510 mask1[0] = mask0[0] + xpos * ex[0] + ypos * ey[0]; 511 mask1[1] = mask0[1] + xpos * ex[1] + ypos * ey[1]; 512 mask1[2] = mask0[2] + xpos * ex[2] + ypos * ey[2]; 513 514 __m128* mprimBuf0 = mprimBuf + ix; 515 __m128* mwBuf0 = mwBuf + ix; 516 __m128 rhw = rhw1; 517 for(int j = 0; j < 4; ++j) 518 { 519 __m128 pmask = (rhw > *mwBuf0) & 520 (mask1[0] >= m128(0)) & 521 (mask1[1] >= m128(0)) & 522 (mask1[2] >= m128(0)); 523 524 *mwBuf0 = Select(pmask, rhw, *mwBuf0); 525 *mprimBuf0 = Select(pmask, primData, *mprimBuf0); 526 mask1[0] = mask1[0] + ey[0]; 527 mask1[1] = mask1[1] + ey[1]; 528 mask1[2] = mask1[2] + ey[2]; 529 mprimBuf0 += 4; 530 mwBuf0 += 4; 531 rhw = rhw + m128(prim->b[0]); 532 } 533 } 534 rhw1 = rhw1 + m128(prim->a[0]) * m128(4); 535 } 536 } 537 rhw0 = rhw0 + m128(4) * m128(prim->b[0]); 538 mprimBuf += 16; 539 mwBuf += 16; 540 yStep = yStep + m128(4); 541 } 542 } 543 544 void CreateReflectRay(Ray* rays, int count, PixelContext* pixel, ReflectInfo* refInfo, const Float4& eye) 545 { 546 if(count == 1) 547 { 548 Float4 pos = pixel->pos; 549 Float4 normal = pixel->normal; 550 Ray& ray = rays[0]; 551 552 Float4 refVec = -Normalize(Reflect(pixel->view, normal)); 553 pos = pos + refVec * 0.02f; 554 _mm_store_ps(ray.pos, pos.m); 555 _mm_store_ps(ray.dir, refVec.m); 556 ray.triIndex = -1; 557 ray.tmin = 0; 558 ray.tmax = 1e10; 559 ray.userData = refInfo; 560 return; 561 } 562 563 static const Float2 offset[] = { 564 Float2(0, 0), 565 Float2(-0.4f, -0.4f), 566 Float2(0.4f, -0.4f), 567 Float2(0, 0.4f) 568 }; 569 for(int i = 0; i < count; ++i) 570 { 571 Float4 pos = pixel->pos; 572 Float4 normal = pixel->normal; 573 Ray& ray = rays[i]; 574 575 Float4 dpos, dnormal; 576 pixel->prim->GetPosNormalDifferential(pixel->triIndex, pixel->duvdx * offset[i].x, &dpos, &dnormal); 577 pos = pos + dpos; 578 normal = normal + dnormal; 579 580 pixel->prim->GetPosNormalDifferential(pixel->triIndex, pixel->duvdy * offset[i].y, &dpos, &dnormal); 581 pos = pos + dpos; 582 normal = NormalizeFast(normal + dnormal); 583 584 Float4 Vn; 585 //Vn = pixel->view; 586 Vn = NormalizeFast(eye - pos); 587 588 Float4 refVec = -Normalize(Reflect(Vn, normal)); 589 pos = pos + refVec * 0.02f; 590 _mm_store_ps(ray.pos, pos.m); 591 _mm_store_ps(ray.dir, refVec.m); 592 ray.triIndex = -1; 593 ray.tmin = 0; 594 ray.tmax = 1e10; 595 ray.userData = refInfo; 596 } 597 } 598 599 void CreateReflectPixel(PixelContext** pixels, Ray& ray, Allocator* alloc) 600 { 601 ReflectInfo* refinfo = (ReflectInfo*)ray.userData; 602 /*PixelContext* pixel = pixels[refinfo->index]; 603 while(pixel) 604 { 605 if(pixel->prim == ray.prim) 606 { 607 pixel->alpha += refinfo->strength; 608 return; 609 } 610 pixel = pixel->next; 611 }*/ 612 613 PixelContext* p = (PixelContext*)alloc->Alloc(sizeof(PixelContext), 16); 614 p->prim = ray.prim; 615 p->triIndex = ray.triIndex; 616 p->uv.x = ray.u; 617 p->uv.y = ray.v; 618 619 Float4 posddx, normalddx; 620 Float4 posddy, normalddy; 621 refinfo->context->prim->GetPosNormalDifferential(refinfo->context->triIndex, 622 refinfo->context->duvdx, &posddx, &normalddx); 623 refinfo->context->prim->GetPosNormalDifferential(refinfo->context->triIndex, 624 refinfo->context->duvdy, &posddy, &normalddy); 625 626 Float2 uvdx, uvdy; 627 p->prim->GetRayDifferential(ray.triIndex, *(Float4*)&ray.pos, *(Float4*)&ray.dir, 628 posddx, posddy, normalddx, normalddy, &uvdx, &uvdy); 629 630 p->duvdx = uvdx - p->uv; 631 p->duvdy = uvdy - p->uv; 632 p->alpha = refinfo->strength; 633 ray.prim->GetPosition(ray.triIndex, p->uv, &p->pos); 634 ray.prim->GetNormal(ray.triIndex, p->uv, &p->normal); 635 p->view = NormalizeFast(Float4(ray.pos, 1) - p->pos); 636 p->light = 0; 637 p->next = pixels[refinfo->index]; 638 pixels[refinfo->index] = p; 639 } 640 641 void CopyBuf(float* wBuf, float* wBuf2, float* primBuf, float* primBuf2, int size) 642 { 643 for(int i = 0; i < size; i += 4) 644 { 645 _mm_store_ps(wBuf2 + i, _mm_load_ps(wBuf + i)); 646 _mm_store_ps((float*)primBuf2 + i, _mm_load_ps((float*)primBuf + i)); 647 } 648 } 649 650 float CopyBuf2(float* wBuf, float* wBuf2, float* primBuf, float* primBuf2, int size) 651 { 652 __m128 minRHW = m128(FLT_MAX); 653 for(int i = 0; i < size; i += 4) 654 { 655 __m128 rhw = _mm_load_ps(wBuf + i); 656 minRHW = Min(minRHW, rhw); 657 _mm_store_ps((float*)primBuf2 + i, _mm_load_ps((float*)primBuf + i)); 658 _mm_store_ps(wBuf2 + i, rhw); 659 } 660 661 minRHW = Min(Min(Extract(minRHW, 0), Extract(minRHW, 1)), 662 Min(Extract(minRHW, 2), Extract(minRHW, 3))); 663 float m; 664 _mm_store_ss(&m, minRHW); 665 return m; 666 } 667 668 int AACount[] = {0, 2, 4, 8, 16}; 669 float AACfgAlpha[] = {1, 1 / 3.f, 1 / 5.f, 1 / 9.f, 1 / 17.f}; 670 Float2 AASampler[5][16] = { 671 { Float2(0, 0) }, 672 673 { Float2(0.25f, 0.25f), Float2(0.75f, 0.75f) }, 674 675 { Float2(0.25f, 0.25f), Float2(0.75f, 0.75f), Float2(0.25f, 0.75f), Float2(0.75f, 0.25f) }, 676 677 { Float2(0.2f, 0.5f), Float2(0.8f, 0.5f), Float2(0.5f, 0.2f), Float2(0.5f, 0.8f), 678 Float2(0.25f, 0.25f), Float2(0.75f, 0.25f), Float2(0.25f, 0.75f), Float2(0.75f, 0.75f)}, 679 680 { Float2(0.2f, 0.2f), Float2(0.4f, 0.2f), Float2(0.6f, 0.2f), Float2(0.8f, 0.2f), 681 Float2(0.2f, 0.4f), Float2(0.4f, 0.4f), Float2(0.6f, 0.4f), Float2(0.8f, 0.4f), 682 Float2(0.2f, 0.6f), Float2(0.4f, 0.6f), Float2(0.6f, 0.6f), Float2(0.8f, 0.6f), 683 Float2(0.2f, 0.8f), Float2(0.4f, 0.8f), Float2(0.6f, 0.8f), Float2(0.8f, 0.8f) } 684 }; 685 686 void RenderContext::ClippingAndDraw(TriVertex** verts, TrianglePrim& tri) 687 { 688 if(!BackCullTest((VertexOutput**)verts)) 689 return; 690 691 Float4 vertTmpBuf[256]; 692 Float4* vertBuf = vertTmpBuf; 693 694 int vertCount = 3; 695 for(int i = 0; i < 6; i++) 696 { 697 vertCount = ClipPoly(*(const Float4*)FrustumClipPlane[i], 698 (VertexOutput**)verts, vertCount, 2, vertBuf); 699 if(vertCount < 3) 700 return; 701 } 702 703 Float4 vertsTmp[256]; 704 for(int i = 0; i < vertCount; i++) 705 VertConvert(vertsTmp + i * 2, (VertexOutput*)verts[i], 1); 706 707 TriVertex* triangle[3]; 708 for(int i = 0; i < vertCount - 2; i++) 709 { 710 triangle[0] = (TriVertex*)vertsTmp; 711 triangle[1] = (TriVertex*)(vertsTmp + (i + 1) * 2); 712 triangle[2] = (TriVertex*)(vertsTmp + (i + 2) * 2); 713 DrawPrimitive(triangle, tri); 714 } 715 } 716 717 void RenderContext::DrawTriangle(TrianglePrim& tri) 718 { 719 TriVertex verts[3]; 720 verts[0].pos = Mul(tri.p0, ViewProjMatrix); 721 verts[1].pos = Mul(tri.p1, ViewProjMatrix); 722 verts[2].pos = Mul(tri.p2, ViewProjMatrix); 723 verts[0].uv = Float4(0, 0, 0, 0); 724 verts[1].uv = Float4(1, 0, 0, 0); 725 verts[2].uv = Float4(0, 1, 0, 0); 726 727 TriVertex* verts2[36]; 728 verts2[0] = verts; 729 verts2[1] = verts + 1; 730 verts2[2] = verts + 2; 731 ClippingAndDraw(verts2, tri); 732 } 733 734 void RenderContext::RasterTile(PrimitiveTile* tile, int x, int y, DWORD* target, 735 int pitch, FGSampleTable* FGSamples) 736 { 737 const int tileSize = TILE_WIDTH * TILE_HEIGHT; 738 _CRT_ALIGN(16) TriPrimitive* primBuf[tileSize]; 739 _CRT_ALIGN(16) float wBuf[tileSize]; 740 _CRT_ALIGN(16) PixelContext* pixels[tileSize]; 741 //_CRT_ALIGN(16) PixelContext* mainPixels[tileSize]; 742 //_CRT_ALIGN(16) PixelContext* transPixels[tileSize]; 743 _CRT_ALIGN(16) TriPrimitive* primBuf2[tileSize]; 744 _CRT_ALIGN(16) float wBuf2[tileSize]; 745 _CRT_ALIGN(16) Float4 colorBuf[tileSize]; 746 747 Allocator allocA(Align((BYTE*)_alloca(1024 * 1024), 16), 1024 * 1024 - 15); 748 Allocator allocB(Align((BYTE*)_alloca(1024 * 1024), 16), 1024 * 1024 - 15); 749 Allocator* alloc = &allocA; 750 751 tile->MergePrimitives(); 752 753 if(!tile->HasPrimitive()) 754 { 755 for(int i = 0; i < tileSize; ++i) 756 *((DWORD*)((BYTE*)target + pitch * (i / 16)) + (i % 16)) = _bkColor; 757 return; 758 } 759 760 float startX = (float)x + 0.5f; 761 float startY = (float)y + 0.5f; 762 763 for(int i = 0; i < tileSize; i += 4) 764 { 765 _mm_store_ps(wBuf + i, m128(0)); 766 _mm_store_ps((float*)primBuf + i, m128(0)); 767 //_mm_store_ps((float*)pixels + i, m128(0)); 768 //_mm_store_ps((float*)transPixels + i, m128(0)); 769 } 770 float farRhw = 0; 771 bool hasFullPrim = false; 772 while(true) 773 { 774 TriPrimitive* prim = tile->NextFullPrimitive(); 775 if(!prim) 776 break; 777 hasFullPrim = true; 778 RasterFullCoverPrim(prim, startX, startY, (float*)primBuf, wBuf); 779 } 780 if(hasFullPrim) 781 farRhw = CopyBuf2(wBuf, wBuf2, (float*)primBuf, (float*)primBuf2, tileSize); 782 else 783 { 784 for(int i = 0; i < tileSize; i += 4) 785 { 786 _mm_store_ps(wBuf2 + i, m128(0)); 787 _mm_store_ps((float*)primBuf2 + i, m128(0)); 788 } 789 } 790 791 int aaCount = AACount[_aaLevel]; 792 float alpha = AACfgAlpha[_aaLevel]; 793 Float2* sampler = AASampler[_aaLevel]; 794 795 while(true) 796 { 797 TriPrimitive* prim = tile->NextOpaquePrimitive(); 798 if(!prim) 799 break; 800 if(prim->maxRhw < farRhw) 801 continue; 802 803 RasterPrim(prim, x, y, 0.5f, 0.5f, primBuf2, wBuf2); 804 } 805 tile->Reset(); 806 CreateMainPixels(pixels, primBuf2, _eye, startX, startY, tileSize, alpha, *alloc); 807 farRhw = CopyBuf2(wBuf, wBuf2, (float*)primBuf, (float*)primBuf2, tileSize); 808 farRhw *= 0.99f; 809 810 for(int aa = 0; aa < aaCount; ++aa) 811 { 812 float xs = sampler[aa].x; 813 float ys = sampler[aa].y; 814 while(true) 815 { 816 TriPrimitive* prim = tile->NextOpaquePrimitive(); 817 if(!prim) 818 break; 819 if(prim->maxRhw < farRhw) 820 continue; 821 822 RasterPrim(prim, x, y, xs, ys, primBuf2, wBuf2); 823 } 824 tile->Reset(); 825 CreatePixels(pixels, primBuf2, _eye, alpha, startX - 0.5f + xs, startY - 0.5f + ys, tileSize, *alloc); 826 CopyBuf(wBuf, wBuf2, (float*)primBuf, (float*)primBuf2, tileSize); 827 } 828 829 do 830 { 831 bool fullScreen; 832 TriPrimitive* prim = tile->NextTransPrimitive(fullScreen); 833 if(!prim) 834 break; 835 while(prim) 836 { 837 if(prim->maxRhw < farRhw) 838 { 839 prim = tile->NextTransPrimitive(fullScreen); 840 continue; 841 } 842 PixelContext** tpixels = pixels; 843 __m128 ex[3]; 844 __m128 ey[3]; 845 __m128 mask0[3]; 846 __m128 xOff[3]; 847 for(int i = 0; i < 3; ++i) 848 { 849 ex[i] = m128(prim->ea[i]); 850 ey[i] = m128(prim->eb[i]); 851 xOff[i] = (ex[i] > m128(0)) & m128(4); 852 } 853 854 __m128 p0x = m128(prim->p0.x); 855 __m128 p0y = m128(prim->p0.y); 856 __m128 p1x = p0x - ey[0]; 857 __m128 p1y = p0y + ex[0]; 858 859 mask0[0] = (m128(x) - p0x) * ex[0] + (m128(y + 0.5f) - p0y) * ey[0]; 860 mask0[1] = (m128(x) - p1x) * ex[1] + (m128(y + 0.5f) - p1y) * ey[1]; 861 mask0[2] = (m128(x) - p0x) * ex[2] + (m128(y + 0.5f) - p0y) * ey[2]; 862 863 __m128 rhw0 = (_mm_set_ps(3, 2, 1, 0) + m128(startX) - p0x) * m128(prim->a[0]) + 864 (m128(startY) - p0y) * m128(prim->b[0]) + m128(prim->c[0]); 865 __m128* mwBuf = (__m128*)wBuf2; 866 for(int iy = 0; iy < 16; ++iy) 867 { 868 __m128 xStep = _mm_set_ps(12, 8, 4, 0); 869 __m128 mask = ((mask0[0] + (xStep + xOff[0]) * ex[0]) >= m128(0)) & 870 ((mask0[1] + (xStep + xOff[1]) * ex[1]) >= m128(0)) & 871 ((mask0[2] + (xStep + xOff[2]) * ex[2]) >= m128(0)); 872 if(MoveMask(mask)) 873 { 874 __m128 mask1[3]; 875 xStep = _mm_set_ps(3.5f, 2.5f, 1.5f, 0.5f); 876 mask1[0] = mask0[0] + xStep * ex[0]; 877 mask1[1] = mask0[1] + xStep * ex[1]; 878 mask1[2] = mask0[2] + xStep * ex[2]; 879 __m128 rhw = rhw0; 880 881 for(int ix = 0; ix < 4; ++ix) 882 { 883 __m128 pmask = ((rhw > *mwBuf) & 884 (mask1[0] >= m128(0)) & 885 (mask1[1] >= m128(0)) & 886 (mask1[2] >= m128(0))); 887 if(MoveMask(pmask)) 888 { 889 __m128 rhw1 = rhw & pmask; 890 Create4TransPixels(tpixels, prim, _eye, (float*)&rhw1, 891 x + ix * 4 + 0.5f, y + iy + 0.5f, *alloc); 892 } 893 rhw = rhw + m128(4) * m128(prim->a[0]); 894 mask1[0] = mask1[0] + m128(4) * ex[0]; 895 mask1[1] = mask1[1] + m128(4) * ex[1]; 896 mask1[2] = mask1[2] + m128(4) * ex[2]; 897 mwBuf++; 898 tpixels += 4; 899 } 900 } 901 else 902 { 903 mwBuf += 4; 904 tpixels += 16; 905 } 906 rhw0 = rhw0 + m128(prim->b[0]); 907 mask0[0] = mask0[0] + ey[0]; 908 mask0[1] = mask0[1] + ey[1]; 909 mask0[2] = mask0[2] + ey[2]; 910 } 911 prim = tile->NextTransPrimitive(fullScreen); 912 } 913 }while(0); 914 915 for(int i = 0; i < tileSize; ++i) 916 colorBuf[i].m = m128(0); 917 918 Ray reflectRays[64]; 919 ReflectInfo refInfos[64]; 920 int refRayIndex = 0; 921 int refInfoIndex = 0; 922 923 for(int depth = 0; depth <= ReflectionDepth; ++depth) 924 { 925 bool hasReflection = false; 926 for(int j = 0; j < _lights.size(); ++j) 927 { 928 int from, to; 929 if(_lights[j]->Interpolate(&from, &to) && FGSamples) 930 continue; 931 _lights[j]->DirectIlluminate(pixels, tileSize, &_accelStruct, alloc); 932 } 933 if(FGSamples && depth == 0) 934 { 935 for(int i = 0; i < tileSize; ++i) 936 { 937 int sx = x + (i % 16); 938 int sy = y + i / 16; 939 PixelContext* pixel = pixels[i]; 940 while(pixel) 941 { 942 Float4 norm; 943 pixel->prim->GetFaceNormal(pixel->triIndex, &norm); 944 945 Float4 color = FGSamples->Lookup(pixel->prim, *(Float3*)&norm, sx, sy); 946 if(color.x + color.y + color.z > 0) 947 { 948 Illuminance* illum = (Illuminance*)alloc->Alloc(sizeof(Illuminance)); 949 illum->color.x = color.x; 950 illum->color.y = color.y; 951 illum->color.z = color.z; 952 illum->direction.x = 0; 953 illum->direction.y = 0; 954 illum->direction.z = 1; 955 illum->illuminance = 1; 956 illum->light = 0; 957 illum->next = pixel->light; 958 illum->shadowFactor = 0; 959 pixel->light = illum; 960 } 961 pixel = pixel->next; 962 } 963 } 964 } 965 966 if(alloc == &allocA) 967 alloc = &allocB; 968 else 969 alloc = &allocA; 970 alloc->Clear(); 971 972 for(int i = 0; i < tileSize; ++i) 973 { 974 PixelContext* pixel = pixels[i]; 975 pixels[i] = 0; 976 Float4 color; 977 color.m = m128(0); 978 float alpha = 0; 979 980 while(pixel) 981 { 982 ReflectInfo reflect; 983 reflect.strength = 0; 984 alpha += pixel->alpha; 985 color += pixel->prim->shader->PixelShader(pixel, &reflect) * pixel->alpha; 986 reflect.strength *= pixel->alpha; 987 988 if(reflect.strength > 0.01f) 989 { 990 ReflectInfo& refInfo = refInfos[refInfoIndex++]; 991 refInfo = reflect; 992 refInfo.context = pixel; 993 refInfo.index = i; 994 refInfo.strength *= 0.25f; 995 996 if(depth == 0) 997 { 998 CreateReflectRay(reflectRays + refRayIndex, 4, pixel, &refInfo, _eye); 999 refRayIndex += 4; 1000 } 1001 else 1002 { 1003 CreateReflectRay(reflectRays + refRayIndex, 4, pixel, &refInfo, _eye); 1004 refRayIndex += 4; 1005 } 1006 hasReflection = true; 1007 1008 if(refRayIndex >= 64) 1009 { 1010 _accelStruct.TraceIntersect(reflectRays, refRayIndex); 1011 for(int r = 0; r < refRayIndex; ++r) 1012 { 1013 Ray& ray = reflectRays[r]; 1014 if(ray.prim) 1015 CreateReflectPixel(pixels, ray, alloc); 1016 } 1017 refInfoIndex = 0; 1018 refRayIndex = 0; 1019 } 1020 } 1021 pixel = pixel->next; 1022 } 1023 if(refRayIndex > 0) 1024 { 1025 _accelStruct.TraceIntersect(reflectRays, refRayIndex); 1026 for(int r = 0; r < refRayIndex; ++r) 1027 { 1028 Ray& ray = reflectRays[r]; 1029 if(ray.prim) 1030 CreateReflectPixel(pixels, ray, alloc); 1031 } 1032 refInfoIndex = 0; 1033 refRayIndex = 0; 1034 } 1035 if(depth == 0) 1036 { 1037 if(alpha < 0.99f) 1038 color = color + _bkColorF * (1 - alpha); 1039 colorBuf[i] = color; 1040 } 1041 else 1042 colorBuf[i] += color; 1043 } 1044 1045 if(!hasReflection) 1046 break; 1047 } 1048 1049 for(int i = 0; i < tileSize; ++i) 1050 { 1051 __m128i icolor = _mm_cvttps_epi32(_mm_rsqrt_ps(colorBuf[i].m) * colorBuf[i].m * m128(255)); 1052 icolor = _mm_packs_epi32(icolor, icolor); 1053 icolor = _mm_packus_epi16(icolor, icolor); 1054 1055 *((DWORD*)((BYTE*)target + pitch * (i / 16)) + (i % 16)) = _mm_cvtsi128_si32(icolor); 1056 } 1057 } 1058 1059 void RenderContext::DrawPrimitive(TriVertex** p, TrianglePrim& tri) 1060 { 1061 if((p[2]->pos.x - p[0]->pos.x) * (p[1]->pos.y - p[0]->pos.y) 1062 - (p[1]->pos.x - p[0]->pos.x) * (p[2]->pos.y - p[0]->pos.y) <= 0) 1063 return; 1064 1065 Float3 edge[3]; 1066 edge[0] = CalcEdge(p[0]->pos, p[1]->pos); 1067 edge[1] = CalcEdge(p[1]->pos, p[2]->pos); 1068 edge[2] = CalcEdge(p[2]->pos, p[0]->pos); 1069 1070 TriPrimitive* prim = (TriPrimitive*)MemoryHeapMT::Alloc(sizeof(TriPrimitive)); 1071 prim->prim = tri.prim; 1072 prim->maxRhw = max(max(p[0]->pos.w, p[1]->pos.w), p[2]->pos.w); 1073 prim->triIndex = tri.triIndex; 1074 prim->p0.x = p[0]->pos.x; 1075 prim->p0.y = p[0]->pos.y; 1076 for(int i = 0; i < 3; ++i) 1077 { 1078 prim->ea[i] = -edge[i].x; 1079 prim->eb[i] = -edge[i].y; 1080 //prim->edge[i].x = -edge[i].x; 1081 //prim->edge[i].y = -edge[i].y; 1082 } 1083 __m128 A = m128(1 / ((p[0]->pos.x - p[1]->pos.x) * (p[0]->pos.y - p[2]->pos.y) 1084 - (p[0]->pos.y - p[1]->pos.y) * (p[0]->pos.x - p[2]->pos.x))); 1085 __m128 attr[3]; 1086 for(int i = 0; i < 3; ++i) 1087 attr[i] = _mm_loadu_ps(&p[i]->pos.w); 1088 1089 _mm_storeu_ps(prim->a, A * (m128(edge[0].x) * attr[2] + m128(edge[1].x) * attr[0] + m128(edge[2].x) * attr[1])); 1090 _mm_storeu_ps(prim->b, A * (m128(edge[0].y) * attr[2] + m128(edge[1].y) * attr[0] + m128(edge[2].y) * attr[1])); 1091 prim->c[0] = p[0]->pos.w; 1092 prim->c[1] = p[0]->uv.x; 1093 prim->c[2] = p[0]->uv.y; 1094 1095 __m128 maxP = Min(Max(Max(p[0]->pos.m, p[1]->pos.m), p[2]->pos.m) + m128(1.5f), 1096 _mm_set_ps(0, 0, ScreenHeight, ScreenWidth)); 1097 __m128 minP = Max(Min(Min(p[0]->pos.m, p[1]->pos.m), p[2]->pos.m) - m128(0.5f), m128(0)); 1098 1099 __m128i bound = _mm_cvtps_epi32(_mm_unpacklo_ps(minP, maxP)); 1100 1101 bound = _mm_add_epi32(bound, _mm_set_epi32(TILE_HEIGHT - 1, 0, TILE_WIDTH - 1, 0)); 1102 bound = _mm_and_si128(bound, _mm_set_epi32(~(TILE_HEIGHT - 1), 1103 ~(TILE_HEIGHT - 1), ~(TILE_WIDTH - 1), ~(TILE_WIDTH - 1))); 1104 1105 edge[0] = -edge[0]; 1106 edge[1] = -edge[1]; 1107 edge[2] = -edge[2]; 1108 1109 const int& minX = ((int*)&bound)[0]; 1110 const int& maxX = ((int*)&bound)[1]; 1111 const int& minY = ((int*)&bound)[2]; 1112 const int& maxY = ((int*)&bound)[3]; 1113 1114 __m128 offX, offY; 1115 __m128 ex = _mm_set_ps(0, edge[2].x, edge[1].x, edge[0].x); 1116 __m128 ey = _mm_set_ps(0, edge[2].y, edge[1].y, edge[0].y); 1117 __m128 ez = _mm_set_ps(0, edge[2].z, edge[1].z, edge[0].z); 1118 offX = (ex > m128(0)) & m128(TILE_WIDTH); 1119 offY = (ey > m128(0)) & m128(TILE_HEIGHT); 1120 1121 PrimitiveTile* tile = _primTiles + (minY / TILE_HEIGHT) * _tileCol + (minX / TILE_WIDTH); 1122 1123 bool trans = tri.prim->shader->IsTransprency(); 1124 1125 for(int y = minY; y < maxY; y += TILE_HEIGHT) 1126 { 1127 PrimitiveTile* tile2 = tile; 1128 for(int x = minX; x < maxX; x += TILE_WIDTH) 1129 { 1130 if(MoveMask((m128(x) + offX) * ex + (m128(y) + offY) * ey + ez) == 0) 1131 { 1132 bool fullCovered = MoveMask((m128(x + TILE_WIDTH) - offX) * ex 1133 + (m128(y + TILE_HEIGHT) - offY) * ey + ez) == 0; 1134 if(trans) 1135 { 1136 tile2->AddPrimitive(prim, Tanslusent, fullCovered); 1137 } 1138 else 1139 { 1140 if(fullCovered) 1141 tile2->InsertFullPrimitive(prim, prim->maxRhw); 1142 else 1143 tile2->AddPrimitive(prim, Opaque, false); 1144 } 1145 } 1146 tile2++; 1147 } 1148 tile += _tileCol; 1149 } 1150 } 1151 1152 void RenderContext::Render() 1153 { 1154 ViewProjMatrix = _camera->GetViewProjMatrix(); 1155 _eye = Float4(_camera->GetEyePos(), 1); 1156 DWORD startTime = ::timeGetTime(); 1157 1158 struct VertexProcess 1159 { 1160 LONG index; 1161 RenderContext* rc; 1162 TrianglePrim* prims; 1163 int triCount; 1164 1165 static void Run(int id, void* _context) 1166 { 1167 VertexProcess* context = (VertexProcess*)_context; 1168 RenderContext* rc = context->rc; 1169 1170 while(true) 1171 { 1172 LONG index = ::InterlockedIncrement(&context->index) - 1; 1173 int c = index * 64; 1174 if(c >= context->triCount) 1175 break; 1176 int e = min(c + 64, context->triCount); 1177 for(int i = c; i < e; ++i) 1178 rc->DrawTriangle(context->prims[i]); 1179 } 1180 } 1181 1182 VertexProcess() 1183 { 1184 index = 0; 1185 } 1186 }; 1187 1188 VertexProcess p; 1189 p.rc = this; 1190 p.prims = _accelStruct.GetPrims(&p.triCount); 1191 Parallel::Run(VertexProcess::Run, &p); 1192 1193 LogInfo("Vertex Process time: %d\n", ::timeGetTime() - startTime); 1194 startTime = ::timeGetTime(); 1195 1196 1197 struct PixelProcess 1198 { 1199 LONG index; 1200 RenderContext* rc; 1201 1202 static void Run(int id, void* _context) 1203 { 1204 PixelProcess* context = (PixelProcess*)_context; 1205 RenderContext* rc = context->rc; 1206 while(true) 1207 { 1208 LONG index = ::InterlockedIncrement(&context->index) - 1; 1209 if(index >= (rc->_tileCol * rc->_tileRow)) 1210 break; 1211 1212 int col = index % (rc->_tileCol); 1213 int row = index / (rc->_tileCol); 1214 1215 int x = col * TILE_WIDTH; 1216 int y = row * TILE_HEIGHT; 1217 index = row * rc->_tileCol + col; 1218 1219 rc->RasterTile(rc->_primTiles + index, x, y, 1220 (*rc->_renderTarget)[y] + x, rc->_renderTarget->pitch); 1221 } 1222 } 1223 1224 PixelProcess() 1225 { 1226 index = 0; 1227 } 1228 }; 1229 1230 PixelProcess pp; 1231 pp.rc = this; 1232 Parallel::Run(PixelProcess::Run, &pp); 1233 1234 LogInfo("Pixel Process time: %d\n", ::timeGetTime() - startTime); 1235 }

?

?

?

?

轉(zhuǎn)載于:https://www.cnblogs.com/Hybird3D/archive/2013/02/11/Rasterization_in_Hybird3D.html

總結(jié)

以上是生活随笔為你收集整理的谈谈Hybird3D中的光栅化优化的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。

日韩无码专区 | 国产精品自产拍在线观看 | 免费中文字幕日韩欧美 | 无套内谢老熟女 | 国产精品无码一区二区三区不卡 | 日日夜夜撸啊撸 | 国产激情一区二区三区 | 中文字幕无码人妻少妇免费 | www一区二区www免费 | 天天摸天天碰天天添 | 国产高清av在线播放 | 无码乱肉视频免费大全合集 | 无码av免费一区二区三区试看 | 国产美女极度色诱视频www | 久精品国产欧美亚洲色aⅴ大片 | 国精产品一区二区三区 | 性啪啪chinese东北女人 | 伊人久久大香线焦av综合影院 | 1000部夫妻午夜免费 | 老司机亚洲精品影院无码 | 亚洲综合伊人久久大杳蕉 | 国产九九九九九九九a片 | 狠狠噜狠狠狠狠丁香五月 | 亚洲人成影院在线无码按摩店 | 日本熟妇浓毛 | 亚洲一区二区三区 | 久久精品人人做人人综合 | 正在播放老肥熟妇露脸 | 人人妻人人澡人人爽人人精品浪潮 | 亚洲综合无码一区二区三区 | 好爽又高潮了毛片免费下载 | 女人被爽到呻吟gif动态图视看 | 亚洲 a v无 码免 费 成 人 a v | 少妇无套内谢久久久久 | 超碰97人人射妻 | 97夜夜澡人人双人人人喊 | 动漫av网站免费观看 | 亚洲精品一区二区三区四区五区 | 粉嫩少妇内射浓精videos | 蜜桃臀无码内射一区二区三区 | 少妇被黑人到高潮喷出白浆 | 国产农村妇女高潮大叫 | 欧美精品在线观看 | 国产成人精品久久亚洲高清不卡 | 激情国产av做激情国产爱 | 国产精品亚洲lv粉色 | 亚洲爆乳精品无码一区二区三区 | 色噜噜亚洲男人的天堂 | 2019nv天堂香蕉在线观看 | 在线观看免费人成视频 | 在线视频网站www色 | 国产午夜手机精彩视频 | 精品国产青草久久久久福利 | 四虎国产精品一区二区 | 亚洲欧美国产精品久久 | 99久久人妻精品免费一区 | 欧美三级a做爰在线观看 | 成人精品一区二区三区中文字幕 | 婷婷五月综合激情中文字幕 | 美女张开腿让人桶 | 久久综合久久自在自线精品自 | 老头边吃奶边弄进去呻吟 | 中文字幕av伊人av无码av | 国产麻豆精品精东影业av网站 | 久久精品中文字幕一区 | 久久久久久a亚洲欧洲av冫 | 国产人妻大战黑人第1集 | 超碰97人人做人人爱少妇 | 国产精品人人爽人人做我的可爱 | 东京热一精品无码av | 国产激情精品一区二区三区 | 久久婷婷五月综合色国产香蕉 | 欧美性色19p | 青青草原综合久久大伊人精品 | 成人精品视频一区二区三区尤物 | 天下第一社区视频www日本 | 鲁一鲁av2019在线 | 久久久精品人妻久久影视 | 狠狠色欧美亚洲狠狠色www | 精品少妇爆乳无码av无码专区 | 亚洲 a v无 码免 费 成 人 a v | 在线视频网站www色 | 国产在线精品一区二区三区直播 | 国产无遮挡吃胸膜奶免费看 | 少妇高潮一区二区三区99 | 波多野结衣av一区二区全免费观看 | 亚洲日本在线电影 | 国产精品亚洲综合色区韩国 | 欧美人妻一区二区三区 | 国产超碰人人爽人人做人人添 | 国产偷国产偷精品高清尤物 | 无码吃奶揉捏奶头高潮视频 | 国产精品久久久久影院嫩草 | 久久久精品人妻久久影视 | 精品国产乱码久久久久乱码 | 色婷婷综合中文久久一本 | 国产成人人人97超碰超爽8 | 性生交片免费无码看人 | 一本久道久久综合婷婷五月 | 激情五月综合色婷婷一区二区 | 精品人妻av区 | 一本久道久久综合狠狠爱 | 日本在线高清不卡免费播放 | 亚洲自偷自偷在线制服 | 亚洲成av人片在线观看无码不卡 | 久久午夜无码鲁丝片 | 婷婷综合久久中文字幕蜜桃三电影 | 亚洲国产成人a精品不卡在线 | 久久国产精品二国产精品 | 伊在人天堂亚洲香蕉精品区 | 国内精品九九久久久精品 | 亚洲一区二区三区偷拍女厕 | 成人亚洲精品久久久久软件 | 无码国产乱人伦偷精品视频 | 国内精品人妻无码久久久影院 | 日本一区二区三区免费高清 | 在线观看国产午夜福利片 | 红桃av一区二区三区在线无码av | 一本加勒比波多野结衣 | 国内丰满熟女出轨videos | 久久久中文久久久无码 | 久久综合久久自在自线精品自 | ass日本丰满熟妇pics | 色婷婷av一区二区三区之红樱桃 | 亚洲天堂2017无码中文 | 欧美熟妇另类久久久久久不卡 | 国产在线无码精品电影网 | 黄网在线观看免费网站 | 日韩在线不卡免费视频一区 | 欧美兽交xxxx×视频 | 真人与拘做受免费视频 | 日本大香伊一区二区三区 | 国产艳妇av在线观看果冻传媒 | 久久精品国产99精品亚洲 | 欧美日本精品一区二区三区 | 亚洲啪av永久无码精品放毛片 | 国产一区二区不卡老阿姨 | 亚洲成熟女人毛毛耸耸多 | 国产极品美女高潮无套在线观看 | 免费国产成人高清在线观看网站 | 精品国精品国产自在久国产87 | 亚洲性无码av中文字幕 | 亚洲精品国产精品乱码视色 | 国产内射爽爽大片视频社区在线 | 日韩精品一区二区av在线 | 欧美 亚洲 国产 另类 | 精品国精品国产自在久国产87 | 国产精品无码成人午夜电影 | 日韩精品乱码av一区二区 | 色五月五月丁香亚洲综合网 | 亚洲春色在线视频 | 中文字幕乱码人妻二区三区 | 蜜桃视频插满18在线观看 | 日本熟妇乱子伦xxxx | 国产香蕉97碰碰久久人人 | 蜜臀aⅴ国产精品久久久国产老师 | 久久久久免费看成人影片 | 免费无码av一区二区 | 亚洲日韩av一区二区三区四区 | 内射爽无广熟女亚洲 | 性色欲网站人妻丰满中文久久不卡 | 妺妺窝人体色www在线小说 | 图片区 小说区 区 亚洲五月 | 98国产精品综合一区二区三区 | 欧美猛少妇色xxxxx | 天堂在线观看www | a国产一区二区免费入口 | 日韩人妻无码中文字幕视频 | 无码国内精品人妻少妇 | 国产 精品 自在自线 | 乱中年女人伦av三区 | 国产精品无码一区二区三区不卡 | 在线а√天堂中文官网 | 天下第一社区视频www日本 | 成年女人永久免费看片 | 婷婷丁香六月激情综合啪 | 亚洲精品久久久久中文第一幕 | 亚洲中文字幕乱码av波多ji | √8天堂资源地址中文在线 | 国产婷婷色一区二区三区在线 | 欧美黑人性暴力猛交喷水 | 国产国语老龄妇女a片 | 性欧美疯狂xxxxbbbb | 一本无码人妻在中文字幕免费 | 东京热一精品无码av | 亚洲中文字幕在线观看 | 狠狠色噜噜狠狠狠狠7777米奇 | 欧美35页视频在线观看 | 四虎影视成人永久免费观看视频 | 亚洲精品久久久久中文第一幕 | 国产suv精品一区二区五 | 国产偷国产偷精品高清尤物 | √天堂资源地址中文在线 | 高清无码午夜福利视频 | 亚洲色偷偷偷综合网 | 国产综合久久久久鬼色 | 欧美熟妇另类久久久久久多毛 | 日本精品人妻无码77777 天堂一区人妻无码 | 国产成人精品一区二区在线小狼 | 国产欧美熟妇另类久久久 | 奇米影视7777久久精品人人爽 | 久久精品人人做人人综合 | 婷婷丁香五月天综合东京热 | 狂野欧美性猛交免费视频 | 波多野结衣一区二区三区av免费 | 婷婷综合久久中文字幕蜜桃三电影 | 亚洲精品一区三区三区在线观看 | 夫妻免费无码v看片 | 国产日产欧产精品精品app | 国产手机在线αⅴ片无码观看 | 午夜熟女插插xx免费视频 | 国产免费久久精品国产传媒 | а√天堂www在线天堂小说 | 国产亚洲精品久久久久久 | 久久久精品456亚洲影院 | 精品aⅴ一区二区三区 | 国产在线精品一区二区高清不卡 | 人人妻人人澡人人爽欧美一区九九 | 97无码免费人妻超级碰碰夜夜 | 精品成在人线av无码免费看 | 丝袜 中出 制服 人妻 美腿 | 日本精品人妻无码免费大全 | 激情综合激情五月俺也去 | 国产成人无码午夜视频在线观看 | 性生交大片免费看l | 精品国产aⅴ无码一区二区 | 日日躁夜夜躁狠狠躁 | 欧美 亚洲 国产 另类 | 亚洲精品久久久久久久久久久 | 亚洲另类伦春色综合小说 | 狠狠噜狠狠狠狠丁香五月 | 国产乱人伦偷精品视频 | 欧美喷潮久久久xxxxx | 精品亚洲韩国一区二区三区 | 九月婷婷人人澡人人添人人爽 | 精品一区二区三区波多野结衣 | 中国女人内谢69xxxxxa片 | 中文字幕无码热在线视频 | 中文字幕无码av波多野吉衣 | 野狼第一精品社区 | 荫蒂被男人添的好舒服爽免费视频 | 无码人妻av免费一区二区三区 | 免费乱码人妻系列无码专区 | 天天做天天爱天天爽综合网 | 无码人妻久久一区二区三区不卡 | 骚片av蜜桃精品一区 | 国产精品久久福利网站 | 色综合久久网 | 国产一区二区三区四区五区加勒比 | 中文字幕av日韩精品一区二区 | 无码帝国www无码专区色综合 | 97资源共享在线视频 | av无码久久久久不卡免费网站 | 亚洲无人区一区二区三区 | 好男人www社区 | 日本一卡2卡3卡4卡无卡免费网站 国产一区二区三区影院 | 天堂а√在线地址中文在线 | 国产av无码专区亚洲a∨毛片 | 成人女人看片免费视频放人 | av小次郎收藏 | 最近免费中文字幕中文高清百度 | 97se亚洲精品一区 | 一本久久a久久精品亚洲 | 国产在线精品一区二区三区直播 | 丰满岳乱妇在线观看中字无码 | 亚洲成a人片在线观看日本 | 国产特级毛片aaaaaaa高清 | 丰满肥臀大屁股熟妇激情视频 | 伊人久久大香线蕉亚洲 | 欧美熟妇另类久久久久久不卡 | 中文无码精品a∨在线观看不卡 | 成人亚洲精品久久久久软件 | 亚洲国产成人a精品不卡在线 | 久久99精品国产.久久久久 | 最新版天堂资源中文官网 | 在线а√天堂中文官网 | 十八禁真人啪啪免费网站 | 无码国产色欲xxxxx视频 | 一本无码人妻在中文字幕免费 | 嫩b人妻精品一区二区三区 | 人妻中文无码久热丝袜 | 国产人妻大战黑人第1集 | 亚洲自偷精品视频自拍 | 久久久中文字幕日本无吗 | 无套内谢老熟女 | 国产成人人人97超碰超爽8 | 精品 日韩 国产 欧美 视频 | 日韩欧美中文字幕公布 | 在线播放免费人成毛片乱码 | 给我免费的视频在线观看 | 免费国产成人高清在线观看网站 | 久久国产精品精品国产色婷婷 | 国产一区二区三区日韩精品 | 少妇性l交大片欧洲热妇乱xxx | 久久亚洲日韩精品一区二区三区 | 伊人久久大香线焦av综合影院 | 熟女少妇在线视频播放 | 人妻尝试又大又粗久久 | 人人澡人人妻人人爽人人蜜桃 | 国内老熟妇对白xxxxhd | 狂野欧美性猛交免费视频 | 亚洲精品一区二区三区四区五区 | 人人妻人人澡人人爽欧美精品 | 久久无码专区国产精品s | 久久精品女人天堂av免费观看 | 精品久久8x国产免费观看 | 人妻插b视频一区二区三区 | 国内老熟妇对白xxxxhd | 久久久无码中文字幕久... | 天天综合网天天综合色 | 国产精品99爱免费视频 | 国产午夜无码视频在线观看 | 国产农村乱对白刺激视频 | 精品国偷自产在线视频 | 国产成人亚洲综合无码 | 亚洲一区二区三区四区 | 波多野42部无码喷潮在线 | 天堂а√在线地址中文在线 | 国精产品一品二品国精品69xx | 99久久久无码国产aaa精品 | 中文字幕日韩精品一区二区三区 | 久久久久se色偷偷亚洲精品av | 亚洲 日韩 欧美 成人 在线观看 | 精品国产一区二区三区四区在线看 | 国产成人精品必看 | 国产莉萝无码av在线播放 | 色偷偷人人澡人人爽人人模 | 亚洲精品国产精品乱码不卡 | 中文字幕av无码一区二区三区电影 | 国产精品沙发午睡系列 | 欧美老人巨大xxxx做受 | 一本大道久久东京热无码av | 亚洲理论电影在线观看 | 亚洲欧美精品伊人久久 | 无码人妻出轨黑人中文字幕 | 国产偷自视频区视频 | 国产高潮视频在线观看 | 久久99精品国产.久久久久 | 国产一区二区不卡老阿姨 | 日本精品久久久久中文字幕 | 久久天天躁夜夜躁狠狠 | 精品国产福利一区二区 | 亚洲国产欧美日韩精品一区二区三区 | 亚洲va中文字幕无码久久不卡 | 国产麻豆精品一区二区三区v视界 | 天天躁日日躁狠狠躁免费麻豆 | 久久国产36精品色熟妇 | 久久综合激激的五月天 | 国产手机在线αⅴ片无码观看 | 亚洲精品一区二区三区在线 | 中文字幕无码热在线视频 | 性欧美牲交xxxxx视频 | 青青草原综合久久大伊人精品 | 一个人看的www免费视频在线观看 | 图片小说视频一区二区 | 成人试看120秒体验区 | 特大黑人娇小亚洲女 | 国产成人无码av一区二区 | 狠狠综合久久久久综合网 | 国语精品一区二区三区 | 国产凸凹视频一区二区 | 动漫av一区二区在线观看 | 国产熟妇高潮叫床视频播放 | 黑人巨大精品欧美黑寡妇 | 日本精品久久久久中文字幕 | 亚洲s码欧洲m码国产av | 又色又爽又黄的美女裸体网站 | 中文字幕av日韩精品一区二区 | 波多野结衣aⅴ在线 | 亚洲爆乳精品无码一区二区三区 | 国内精品久久毛片一区二区 | 国产69精品久久久久app下载 | 窝窝午夜理论片影院 | 成人欧美一区二区三区黑人免费 | 狠狠色丁香久久婷婷综合五月 | 国产人妖乱国产精品人妖 | 乱人伦人妻中文字幕无码 | 蜜桃视频插满18在线观看 | 丰满少妇弄高潮了www | 无码国产激情在线观看 | 日本精品人妻无码免费大全 | 亚洲国产成人av在线观看 | 四虎影视成人永久免费观看视频 | 波多野结衣av在线观看 | 欧美zoozzooz性欧美 | 十八禁视频网站在线观看 | 亚洲日本一区二区三区在线 | 国产亚洲精品久久久ai换 | 国产亚洲美女精品久久久2020 | 色一情一乱一伦一视频免费看 | 久热国产vs视频在线观看 | 精品国产青草久久久久福利 | 亚洲日韩中文字幕在线播放 | 日本一卡2卡3卡四卡精品网站 | 国产激情精品一区二区三区 | 欧美性生交活xxxxxdddd | 亚洲一区二区三区偷拍女厕 | 激情综合激情五月俺也去 | 小泽玛莉亚一区二区视频在线 | 内射白嫩少妇超碰 | 日本一区二区三区免费播放 | 中文字幕av日韩精品一区二区 | 爆乳一区二区三区无码 | 麻豆国产97在线 | 欧洲 | 亚洲 日韩 欧美 成人 在线观看 | 欧美乱妇无乱码大黄a片 | 国产精品欧美成人 | 爱做久久久久久 | 久久亚洲a片com人成 | 国产免费无码一区二区视频 | 久久99精品久久久久久动态图 | 小鲜肉自慰网站xnxx | 国产香蕉尹人视频在线 | 中国女人内谢69xxxx | 又大又紧又粉嫩18p少妇 | 亚洲国产欧美日韩精品一区二区三区 | 国产亚洲精品精品国产亚洲综合 | 久久久精品人妻久久影视 | 亚洲欧洲日本无在线码 | 国产肉丝袜在线观看 | 熟妇人妻激情偷爽文 | 97色伦图片97综合影院 | 青青青爽视频在线观看 | 丰满人妻一区二区三区免费视频 | 久久久久久国产精品无码下载 | 色婷婷欧美在线播放内射 | 午夜福利一区二区三区在线观看 | 最近中文2019字幕第二页 | 2019午夜福利不卡片在线 | 亚洲日本在线电影 | 俺去俺来也www色官网 | 我要看www免费看插插视频 | 强伦人妻一区二区三区视频18 | 无码精品国产va在线观看dvd | 一区二区三区乱码在线 | 欧洲 | 国产另类ts人妖一区二区 | av无码不卡在线观看免费 | 成 人 免费观看网站 | 最新版天堂资源中文官网 | 两性色午夜免费视频 | 一本色道久久综合亚洲精品不卡 | 久久精品一区二区三区四区 | 中文字幕人成乱码熟女app | 自拍偷自拍亚洲精品被多人伦好爽 | 久久精品99久久香蕉国产色戒 | 亚洲日韩一区二区 | 一本久久a久久精品亚洲 | 高中生自慰www网站 | 亚洲精品一区二区三区婷婷月 | 高中生自慰www网站 | 日日橹狠狠爱欧美视频 | 97夜夜澡人人爽人人喊中国片 | 国产无遮挡吃胸膜奶免费看 | 好爽又高潮了毛片免费下载 | 久久久精品成人免费观看 | 中文字幕日产无线码一区 | 亚洲精品综合一区二区三区在线 | av香港经典三级级 在线 | 国产成人精品一区二区在线小狼 | 亚洲日本va中文字幕 | 欧美日韩色另类综合 | 国产精品久久久久无码av色戒 | 无码人妻av免费一区二区三区 | 少妇无码av无码专区在线观看 | 精品久久久中文字幕人妻 | 国产内射老熟女aaaa | 一本久久a久久精品亚洲 | 午夜熟女插插xx免费视频 | 女人被男人躁得好爽免费视频 | 好男人社区资源 | 六月丁香婷婷色狠狠久久 | 国产成人精品视频ⅴa片软件竹菊 | 天海翼激烈高潮到腰振不止 | 欧美兽交xxxx×视频 | 国产性猛交╳xxx乱大交 国产精品久久久久久无码 欧洲欧美人成视频在线 | 欧美激情综合亚洲一二区 | 国产精品国产自线拍免费软件 | 女人被男人躁得好爽免费视频 | 国精品人妻无码一区二区三区蜜柚 | 亚洲精品无码国产 | 亚洲无人区一区二区三区 | 亚洲成a人一区二区三区 | 国语自产偷拍精品视频偷 | 午夜精品一区二区三区的区别 | 99久久精品国产一区二区蜜芽 | 亚洲国产精品久久久天堂 | 中文字幕人妻无码一夲道 | 国产一区二区不卡老阿姨 | 亚洲成色在线综合网站 | 一本加勒比波多野结衣 | 亚洲gv猛男gv无码男同 | 又大又硬又黄的免费视频 | 欧美激情综合亚洲一二区 | 亚洲国产精华液网站w | 久久久久久亚洲精品a片成人 | 亚洲成色在线综合网站 | 久久无码中文字幕免费影院蜜桃 | 动漫av一区二区在线观看 | 少妇久久久久久人妻无码 | 亚洲精品一区二区三区大桥未久 | 国产高清不卡无码视频 | 在线看片无码永久免费视频 | 欧美熟妇另类久久久久久多毛 | 99久久久无码国产精品免费 | 国产成人精品一区二区在线小狼 | 97se亚洲精品一区 | 亚洲国产精品久久久天堂 | 日韩精品无码免费一区二区三区 | 亚洲s码欧洲m码国产av | 国产午夜福利100集发布 | 欧美日韩一区二区免费视频 | 日韩亚洲欧美中文高清在线 | 色老头在线一区二区三区 | 国产激情综合五月久久 | 精品久久久中文字幕人妻 | 人人妻人人澡人人爽人人精品 | 男女性色大片免费网站 | 在教室伦流澡到高潮hnp视频 | 婷婷五月综合激情中文字幕 | 久久伊人色av天堂九九小黄鸭 | 欧美日韩一区二区综合 | 婷婷丁香五月天综合东京热 | 亚洲七七久久桃花影院 | 亚洲男人av香蕉爽爽爽爽 | 国产精品理论片在线观看 | 久久久精品成人免费观看 | 国产办公室秘书无码精品99 | 无码人妻丰满熟妇区毛片18 | 人人妻人人澡人人爽欧美精品 | 少妇高潮喷潮久久久影院 | 中文亚洲成a人片在线观看 | 亚洲色欲色欲天天天www | 大地资源中文第3页 | 国产莉萝无码av在线播放 | 久久久久久亚洲精品a片成人 | 国产麻豆精品精东影业av网站 | 亚洲熟妇自偷自拍另类 | 最新版天堂资源中文官网 | 性色欲情网站iwww九文堂 | 欧美兽交xxxx×视频 | 日韩人妻无码一区二区三区久久99 | 欧美猛少妇色xxxxx | 粗大的内捧猛烈进出视频 | 亚洲欧美综合区丁香五月小说 | 精品一区二区三区无码免费视频 | 国产福利视频一区二区 | 99久久精品国产一区二区蜜芽 | 无码人妻黑人中文字幕 | 午夜无码区在线观看 | 亚洲午夜福利在线观看 | 国产精品毛片一区二区 | 免费无码一区二区三区蜜桃大 | а√资源新版在线天堂 | a在线观看免费网站大全 | 最近免费中文字幕中文高清百度 | 奇米影视7777久久精品人人爽 | 久久久精品欧美一区二区免费 | 高中生自慰www网站 | 大肉大捧一进一出视频出来呀 | 大乳丰满人妻中文字幕日本 | 久久99精品久久久久久 | 国产麻豆精品精东影业av网站 | 乱人伦人妻中文字幕无码 | 狂野欧美性猛xxxx乱大交 | 亚洲理论电影在线观看 | 久久aⅴ免费观看 | 亚洲va欧美va天堂v国产综合 | 日本www一道久久久免费榴莲 | 精品无码国产自产拍在线观看蜜 | 成人aaa片一区国产精品 | 宝宝好涨水快流出来免费视频 | 久久人人爽人人爽人人片av高清 | 无码人妻丰满熟妇区五十路百度 | 免费人成在线视频无码 | 久久久久成人片免费观看蜜芽 | 天天做天天爱天天爽综合网 | 亚洲自偷精品视频自拍 | 狂野欧美性猛交免费视频 | 亚洲精品午夜国产va久久成人 | 国产激情综合五月久久 | 狠狠躁日日躁夜夜躁2020 | 亚洲精品国产精品乱码视色 | 色欲av亚洲一区无码少妇 | 日本一卡2卡3卡四卡精品网站 | 日韩精品乱码av一区二区 | 色一情一乱一伦 | 亚洲理论电影在线观看 | 蜜桃臀无码内射一区二区三区 | 国产精品久久久久7777 | 中文字幕av无码一区二区三区电影 | 任你躁国产自任一区二区三区 | 波多野结衣av一区二区全免费观看 | 男人的天堂av网站 | 色狠狠av一区二区三区 | 国产女主播喷水视频在线观看 | 久久天天躁狠狠躁夜夜免费观看 | 红桃av一区二区三区在线无码av | 国产人成高清在线视频99最全资源 | 精品无人国产偷自产在线 | 亚洲小说春色综合另类 | 色爱情人网站 | 东京热一精品无码av | 久久天天躁狠狠躁夜夜免费观看 | 国产麻豆精品一区二区三区v视界 | 精品亚洲韩国一区二区三区 | 亚洲熟妇自偷自拍另类 | 亚洲精品鲁一鲁一区二区三区 | 装睡被陌生人摸出水好爽 | 乱码午夜-极国产极内射 | 乱人伦人妻中文字幕无码久久网 | 色婷婷香蕉在线一区二区 | 中文无码伦av中文字幕 | 动漫av网站免费观看 | 捆绑白丝粉色jk震动捧喷白浆 | 亚洲精品久久久久久一区二区 | 久久亚洲日韩精品一区二区三区 | 亚洲の无码国产の无码步美 | 久久精品国产一区二区三区肥胖 | 欧美日本精品一区二区三区 | 亚洲人成影院在线无码按摩店 | 欧美精品一区二区精品久久 | 亚洲国产欧美国产综合一区 | 人妻中文无码久热丝袜 | 亚洲一区二区三区香蕉 | 国产午夜视频在线观看 | 小sao货水好多真紧h无码视频 | 国产精品美女久久久久av爽李琼 | 亚洲国产精品一区二区美利坚 | 国产人妻大战黑人第1集 | 国产精品久久福利网站 | 亚洲欧美综合区丁香五月小说 | 乱中年女人伦av三区 | 国产成人亚洲综合无码 | 欧美亚洲日韩国产人成在线播放 | 午夜理论片yy44880影院 | 九九在线中文字幕无码 | 麻豆国产97在线 | 欧洲 | 少妇无码吹潮 | 蜜臀av无码人妻精品 | 人人妻人人澡人人爽欧美精品 | 美女毛片一区二区三区四区 | 永久免费观看美女裸体的网站 | 成人av无码一区二区三区 | 国产乱人伦app精品久久 国产在线无码精品电影网 国产国产精品人在线视 | 久久国产劲爆∧v内射 | 又色又爽又黄的美女裸体网站 | 大地资源中文第3页 | 欧美变态另类xxxx | 波多野结衣av在线观看 | 女人被男人爽到呻吟的视频 | 婷婷丁香五月天综合东京热 | 日日鲁鲁鲁夜夜爽爽狠狠 | 最近免费中文字幕中文高清百度 | 亚洲精品国偷拍自产在线观看蜜桃 | 在线观看国产午夜福利片 | 漂亮人妻洗澡被公强 日日躁 | 中文无码成人免费视频在线观看 | 亚洲成a人片在线观看无码 | 久久99精品国产.久久久久 | 中文字幕无码免费久久9一区9 | 精品夜夜澡人妻无码av蜜桃 | 亚洲成色www久久网站 | 国产色视频一区二区三区 | 人妻少妇被猛烈进入中文字幕 | 99在线 | 亚洲 | 国产av无码专区亚洲awww | 男女作爱免费网站 | 国产极品美女高潮无套在线观看 | 国产艳妇av在线观看果冻传媒 | 在线看片无码永久免费视频 | 漂亮人妻洗澡被公强 日日躁 | 国产无套内射久久久国产 | 天堂在线观看www | 亚洲国产精品久久久久久 | 国产超级va在线观看视频 | 亚洲 另类 在线 欧美 制服 | 国产亚洲美女精品久久久2020 | 国产色xx群视频射精 | 好男人www社区 | 国产成人人人97超碰超爽8 | 国产一区二区三区四区五区加勒比 | 亚洲国产综合无码一区 | 久久97精品久久久久久久不卡 | 在线播放无码字幕亚洲 | 强伦人妻一区二区三区视频18 | 无码福利日韩神码福利片 | 久久综合狠狠综合久久综合88 | 55夜色66夜色国产精品视频 | 性色欲情网站iwww九文堂 | 国产热a欧美热a在线视频 | 女人被爽到呻吟gif动态图视看 | 亚洲精品成人福利网站 | 久久人人97超碰a片精品 | 天天av天天av天天透 | 成人精品视频一区二区三区尤物 | 久久国产36精品色熟妇 | 欧美日本精品一区二区三区 | 日本精品人妻无码77777 天堂一区人妻无码 | 国产成人综合在线女婷五月99播放 | 国产成人亚洲综合无码 | 四虎国产精品一区二区 | 中国女人内谢69xxxxxa片 | 又粗又大又硬又长又爽 | 一区二区传媒有限公司 | 男女爱爱好爽视频免费看 | 内射老妇bbwx0c0ck | 亚洲中文字幕va福利 | 国产69精品久久久久app下载 | 国产精品爱久久久久久久 | av无码电影一区二区三区 | 精品熟女少妇av免费观看 | 青草青草久热国产精品 | 88国产精品欧美一区二区三区 | 狠狠躁日日躁夜夜躁2020 | 在线成人www免费观看视频 | 强开小婷嫩苞又嫩又紧视频 | 人妻熟女一区 | 久久久久av无码免费网 | 日本高清一区免费中文视频 | 久久综合给久久狠狠97色 | 色窝窝无码一区二区三区色欲 | 日日摸日日碰夜夜爽av | 无遮无挡爽爽免费视频 | 一本大道久久东京热无码av | 国产精品亚洲综合色区韩国 | 77777熟女视频在线观看 а天堂中文在线官网 | 熟女俱乐部五十路六十路av | 夜夜高潮次次欢爽av女 | 在线欧美精品一区二区三区 | 暴力强奷在线播放无码 | 东京热一精品无码av | 久久国内精品自在自线 | 久久精品99久久香蕉国产色戒 | 免费观看的无遮挡av | 丁香花在线影院观看在线播放 | 亚洲自偷精品视频自拍 | 亚洲 另类 在线 欧美 制服 | 中文无码伦av中文字幕 | 精品久久综合1区2区3区激情 | 精品久久久久久亚洲精品 | 少妇久久久久久人妻无码 | 99久久99久久免费精品蜜桃 | 久久精品丝袜高跟鞋 | www国产精品内射老师 | 内射巨臀欧美在线视频 | 波多野结衣aⅴ在线 | 2019nv天堂香蕉在线观看 | 强开小婷嫩苞又嫩又紧视频 | 久久久久久av无码免费看大片 | 99视频精品全部免费免费观看 | 色综合久久久无码中文字幕 | 国产sm调教视频在线观看 | 好男人www社区 | 强奷人妻日本中文字幕 | 久久亚洲日韩精品一区二区三区 | 欧美高清在线精品一区 | 国产69精品久久久久app下载 | 狠狠亚洲超碰狼人久久 | 中文字幕 亚洲精品 第1页 | 无码毛片视频一区二区本码 | 荡女精品导航 | 免费无码av一区二区 | 成人女人看片免费视频放人 | 青青草原综合久久大伊人精品 | 老子影院午夜精品无码 | 无码人妻av免费一区二区三区 | 18黄暴禁片在线观看 | 色婷婷av一区二区三区之红樱桃 | 国产人妻精品一区二区三区 | 377p欧洲日本亚洲大胆 | 成人综合网亚洲伊人 | 噜噜噜亚洲色成人网站 | 国产美女极度色诱视频www | 国产 精品 自在自线 | 亚洲欧美日韩综合久久久 | 人妻尝试又大又粗久久 | 九一九色国产 | 国产成人无码av在线影院 | 无码人妻精品一区二区三区下载 | 精品水蜜桃久久久久久久 | 亚洲色无码一区二区三区 | 成人免费视频视频在线观看 免费 | 欧美阿v高清资源不卡在线播放 | 成人三级无码视频在线观看 | 久久精品女人的天堂av | 久久亚洲中文字幕无码 | 无人区乱码一区二区三区 | 强开小婷嫩苞又嫩又紧视频 | 波多野结衣aⅴ在线 | 亚洲 日韩 欧美 成人 在线观看 | 久久国内精品自在自线 | 亚洲国产精品久久久久久 | 妺妺窝人体色www婷婷 | 精品人妻av区 | 人人妻人人澡人人爽人人精品浪潮 | 搡女人真爽免费视频大全 | 少妇一晚三次一区二区三区 | 久久熟妇人妻午夜寂寞影院 | 国产精品久久久午夜夜伦鲁鲁 | 麻豆md0077饥渴少妇 | 青青青爽视频在线观看 | 老熟女乱子伦 | 高潮毛片无遮挡高清免费 | 国产另类ts人妖一区二区 | 在线亚洲高清揄拍自拍一品区 | 窝窝午夜理论片影院 | 亚洲综合伊人久久大杳蕉 | 国产精品久久久久久亚洲毛片 | 亚洲精品综合五月久久小说 | 国产精品鲁鲁鲁 | 亚洲精品中文字幕久久久久 | 婷婷五月综合激情中文字幕 | 蜜臀av在线观看 在线欧美精品一区二区三区 | 亚洲欧美色中文字幕在线 | 大地资源中文第3页 | 麻豆av传媒蜜桃天美传媒 | 午夜嘿嘿嘿影院 | 麻豆果冻传媒2021精品传媒一区下载 | 欧美丰满熟妇xxxx | 性欧美熟妇videofreesex | 亚洲欧美国产精品专区久久 | 强伦人妻一区二区三区视频18 | 国精品人妻无码一区二区三区蜜柚 | 中文字幕精品av一区二区五区 | 好屌草这里只有精品 | 亚洲色大成网站www | 国产亚洲精品精品国产亚洲综合 | 婷婷丁香六月激情综合啪 | 九九久久精品国产免费看小说 | 精品国产一区二区三区四区在线看 | 亚洲国产精品久久人人爱 | 成在人线av无码免费 | 久久精品人人做人人综合 | 大屁股大乳丰满人妻 | 国产亚洲精品久久久久久大师 | 水蜜桃色314在线观看 | 红桃av一区二区三区在线无码av | 欧美激情综合亚洲一二区 | 亚洲国产日韩a在线播放 | 特大黑人娇小亚洲女 | 亚洲精品国产精品乱码不卡 | 奇米影视7777久久精品人人爽 | 人人超人人超碰超国产 | 中文精品无码中文字幕无码专区 | 成 人 免费观看网站 | 装睡被陌生人摸出水好爽 | 亚洲欧洲日本无在线码 | 精品国产一区二区三区av 性色 | 少妇太爽了在线观看 | 大乳丰满人妻中文字幕日本 | 国产成人无码av一区二区 | 国产无套粉嫩白浆在线 | 亚洲国产精华液网站w | 乱人伦人妻中文字幕无码久久网 | a在线亚洲男人的天堂 | 成人欧美一区二区三区黑人 | 2020久久香蕉国产线看观看 | 精品国产一区二区三区四区在线看 | 国产精品久久久av久久久 | 国产网红无码精品视频 | 草草网站影院白丝内射 | 国产精品人人爽人人做我的可爱 | 国产精品高潮呻吟av久久 | 日本一卡2卡3卡4卡无卡免费网站 国产一区二区三区影院 | 亚洲精品久久久久久一区二区 | 色婷婷香蕉在线一区二区 | 疯狂三人交性欧美 | 欧美自拍另类欧美综合图片区 | 亚洲色欲色欲欲www在线 | 亚洲欧美色中文字幕在线 | 无码一区二区三区在线 | 无码国模国产在线观看 | 久久无码中文字幕免费影院蜜桃 | 国产疯狂伦交大片 | 欧美日韩精品 | 人人爽人人爽人人片av亚洲 | 久久99精品久久久久婷婷 | 人人妻人人澡人人爽精品欧美 | 乌克兰少妇xxxx做受 | 日日天日日夜日日摸 | 国产在热线精品视频 | 全球成人中文在线 | 国产真人无遮挡作爱免费视频 | 国产激情艳情在线看视频 | 亚洲精品一区二区三区大桥未久 | 欧美熟妇另类久久久久久多毛 | 7777奇米四色成人眼影 | 成年美女黄网站色大免费视频 | 国产av无码专区亚洲awww | 亚洲欧美国产精品专区久久 | 精品成在人线av无码免费看 | 亚洲成熟女人毛毛耸耸多 | 国产精品成人av在线观看 | 荡女精品导航 | 欧美日韩视频无码一区二区三 | 国产人妖乱国产精品人妖 | 3d动漫精品啪啪一区二区中 | 国产日产欧产精品精品app | 色综合久久久久综合一本到桃花网 | 精品aⅴ一区二区三区 | 老头边吃奶边弄进去呻吟 | 亚洲国产高清在线观看视频 | 国产莉萝无码av在线播放 | 十八禁视频网站在线观看 | 蜜桃av抽搐高潮一区二区 | 久久国产精品二国产精品 | 18禁黄网站男男禁片免费观看 | 中文字幕人妻丝袜二区 | 一区二区三区高清视频一 | 人妻中文无码久热丝袜 | 亚洲熟悉妇女xxx妇女av | 亚洲成熟女人毛毛耸耸多 | 色一情一乱一伦一区二区三欧美 | 久久www免费人成人片 | 亚洲精品国偷拍自产在线麻豆 | 国产精品久久国产三级国 | 欧美野外疯狂做受xxxx高潮 | 天堂无码人妻精品一区二区三区 | 午夜精品一区二区三区的区别 | 久久精品人妻少妇一区二区三区 | 国产成人精品优优av | 亚洲无人区午夜福利码高清完整版 | 亚洲精品午夜国产va久久成人 | 亚洲色偷偷偷综合网 | 欧美性猛交xxxx富婆 | 中文字幕色婷婷在线视频 | 精品亚洲韩国一区二区三区 | 久久综合九色综合欧美狠狠 | 国产黑色丝袜在线播放 | 18精品久久久无码午夜福利 | 国产精品鲁鲁鲁 | 亚洲成a人一区二区三区 | www一区二区www免费 | 东京热男人av天堂 | 欧美精品无码一区二区三区 | 亚洲男人av香蕉爽爽爽爽 | 久久久久av无码免费网 | 人人澡人人妻人人爽人人蜜桃 | 日韩av激情在线观看 | 帮老师解开蕾丝奶罩吸乳网站 | 精品午夜福利在线观看 | 日韩av无码一区二区三区 | 精品 日韩 国产 欧美 视频 | 久久久久亚洲精品中文字幕 | 丰满少妇女裸体bbw | 亚洲国产精品毛片av不卡在线 | 成人性做爰aaa片免费看 | 人人澡人人妻人人爽人人蜜桃 | 久久精品中文字幕一区 | 欧美第一黄网免费网站 | 亚洲国产欧美国产综合一区 | 少妇激情av一区二区 | 牲欲强的熟妇农村老妇女视频 | av无码久久久久不卡免费网站 | 国产乱人无码伦av在线a | 精品一区二区三区波多野结衣 | 无码人妻精品一区二区三区不卡 | 无套内谢的新婚少妇国语播放 | 亚洲 a v无 码免 费 成 人 a v | 丰满岳乱妇在线观看中字无码 | 国产成人一区二区三区在线观看 | 亚洲成av人在线观看网址 | 一个人看的视频www在线 | 久久99精品久久久久婷婷 | 欧美猛少妇色xxxxx | 中文无码伦av中文字幕 | 久久久成人毛片无码 | 99久久久国产精品无码免费 | 国产乱子伦视频在线播放 | 国产亚洲精品久久久久久大师 | 天天综合网天天综合色 | 国产熟妇高潮叫床视频播放 | 亚洲一区二区三区在线观看网站 | 国产成人一区二区三区别 | 亚洲欧洲日本无在线码 | 亚洲 激情 小说 另类 欧美 | 乌克兰少妇性做爰 | 国产精品-区区久久久狼 | 岛国片人妻三上悠亚 | 日韩av无码一区二区三区 | 亚洲精品久久久久avwww潮水 | 欧美日本免费一区二区三区 | 亚洲欧美国产精品专区久久 | 国产免费久久精品国产传媒 | 亚洲第一网站男人都懂 | 成人女人看片免费视频放人 | 色五月丁香五月综合五月 | 国产精品办公室沙发 | 老子影院午夜精品无码 | 婷婷五月综合激情中文字幕 | √8天堂资源地址中文在线 | 无码帝国www无码专区色综合 | 人人妻人人澡人人爽欧美一区 | 人妻中文无码久热丝袜 | 好爽又高潮了毛片免费下载 | 欧美性猛交内射兽交老熟妇 | 丰满妇女强制高潮18xxxx | 色综合久久中文娱乐网 | 宝宝好涨水快流出来免费视频 | 精品人妻人人做人人爽 | 亚洲 欧美 激情 小说 另类 | 中文字幕无码免费久久99 | 一本色道久久综合狠狠躁 | 国产精品亚洲lv粉色 | 亚洲一区二区三区播放 | 精品久久久无码中文字幕 | 亚洲欧洲日本综合aⅴ在线 | 国产精品无码mv在线观看 | 18无码粉嫩小泬无套在线观看 | 纯爱无遮挡h肉动漫在线播放 | 国产精品永久免费视频 | 在线成人www免费观看视频 | 久久久久久av无码免费看大片 | 无码人妻久久一区二区三区不卡 | 奇米影视7777久久精品 | 日本护士毛茸茸高潮 | 免费人成网站视频在线观看 | 国产亚洲精品久久久久久 | 亚洲色欲色欲欲www在线 | 亚洲精品中文字幕 | 在线欧美精品一区二区三区 | 骚片av蜜桃精品一区 | 亚洲小说图区综合在线 | 高潮毛片无遮挡高清免费 | 免费人成网站视频在线观看 | 国产精品毛片一区二区 | 欧美性猛交内射兽交老熟妇 | 亚欧洲精品在线视频免费观看 | 久久婷婷五月综合色国产香蕉 | 日韩精品a片一区二区三区妖精 | 国产成人综合美国十次 | 在教室伦流澡到高潮hnp视频 | 精品国产av色一区二区深夜久久 | 日韩精品a片一区二区三区妖精 | 欧美日韩在线亚洲综合国产人 | 国产猛烈高潮尖叫视频免费 | 鲁鲁鲁爽爽爽在线视频观看 | 久久久av男人的天堂 | 国产av一区二区精品久久凹凸 | 图片小说视频一区二区 | 亚洲精品中文字幕乱码 | 日本饥渴人妻欲求不满 | 少妇性荡欲午夜性开放视频剧场 | 少妇久久久久久人妻无码 | 日本精品久久久久中文字幕 | 精品久久久久香蕉网 | 久久综合网欧美色妞网 | 久热国产vs视频在线观看 | 精品国产aⅴ无码一区二区 | 久久人妻内射无码一区三区 | 黑人大群体交免费视频 | 成人无码影片精品久久久 | 亚洲日韩一区二区三区 | 国产午夜亚洲精品不卡下载 | 色综合久久久久综合一本到桃花网 | 在线观看欧美一区二区三区 | 色综合久久久久综合一本到桃花网 | 国产成人无码a区在线观看视频app | 国产精品无码永久免费888 | 色婷婷综合中文久久一本 | 精品亚洲韩国一区二区三区 | 精品成人av一区二区三区 | 日韩无套无码精品 | 日韩亚洲欧美精品综合 | 呦交小u女精品视频 | 大色综合色综合网站 | 中文字幕无码免费久久99 | 亚洲成av人片在线观看无码不卡 | 少妇性l交大片欧洲热妇乱xxx | 丰满妇女强制高潮18xxxx | 亚洲熟妇色xxxxx欧美老妇 | 人妻互换免费中文字幕 | 成人片黄网站色大片免费观看 | 狠狠亚洲超碰狼人久久 | 少妇性俱乐部纵欲狂欢电影 | 国产成人综合色在线观看网站 | 亚洲国产精品久久久久久 | 亚洲精品成a人在线观看 | 亚洲色无码一区二区三区 | 中文字幕人妻无码一夲道 | 国产精品视频免费播放 | 丰满岳乱妇在线观看中字无码 | 亚洲阿v天堂在线 | 国产成人无码a区在线观看视频app | 国产午夜无码精品免费看 | 成年美女黄网站色大免费全看 | 乱中年女人伦av三区 | 亚洲精品一区二区三区在线 | aⅴ在线视频男人的天堂 | 国产精品人妻一区二区三区四 | 国产高清不卡无码视频 | 99久久亚洲精品无码毛片 | 亚洲七七久久桃花影院 | 国产亚洲精品久久久久久久久动漫 | 欧美大屁股xxxxhd黑色 | 欧美黑人乱大交 | 东北女人啪啪对白 | 中文字幕人成乱码熟女app | 国产又粗又硬又大爽黄老大爷视 | 日产精品高潮呻吟av久久 | 亚洲国产精品一区二区美利坚 | 一本色道婷婷久久欧美 | 国产熟妇高潮叫床视频播放 | 国产又爽又猛又粗的视频a片 | 国产亚av手机在线观看 | 一个人免费观看的www视频 | aⅴ亚洲 日韩 色 图网站 播放 | 久久久久成人片免费观看蜜芽 | 国内揄拍国内精品少妇国语 | 久久国产精品偷任你爽任你 | 人人澡人人妻人人爽人人蜜桃 | 丝袜 中出 制服 人妻 美腿 | 日本大香伊一区二区三区 | 夫妻免费无码v看片 | 人人超人人超碰超国产 | 2019午夜福利不卡片在线 | 5858s亚洲色大成网站www | 色婷婷综合激情综在线播放 | 亚洲一区二区三区四区 | 18无码粉嫩小泬无套在线观看 | 色婷婷香蕉在线一区二区 | 少妇人妻偷人精品无码视频 | 亚洲精品国产第一综合99久久 | 婷婷综合久久中文字幕蜜桃三电影 | 日本xxxx色视频在线观看免费 | 亚洲啪av永久无码精品放毛片 | 国产精品无码一区二区三区不卡 | 一本大道伊人av久久综合 | 高潮毛片无遮挡高清免费 | 国产又爽又猛又粗的视频a片 | 狠狠躁日日躁夜夜躁2020 | 国产成人精品无码播放 | 2019午夜福利不卡片在线 | 婷婷六月久久综合丁香 | 亚洲精品国产精品乱码不卡 | 国产办公室秘书无码精品99 | 亚洲国产精品无码一区二区三区 | 亚洲精品一区二区三区婷婷月 | 奇米综合四色77777久久 东京无码熟妇人妻av在线网址 | 人妻aⅴ无码一区二区三区 | 中文毛片无遮挡高清免费 | 亚洲中文字幕乱码av波多ji | 草草网站影院白丝内射 | 国产成人无码午夜视频在线观看 | aa片在线观看视频在线播放 | a片在线免费观看 | а√天堂www在线天堂小说 | 国产精品美女久久久网av | 国产成人精品必看 | a在线亚洲男人的天堂 | 国产亚洲精品精品国产亚洲综合 | a片免费视频在线观看 | 特大黑人娇小亚洲女 | 中文字幕av伊人av无码av | 黑人巨大精品欧美黑寡妇 | 呦交小u女精品视频 | 欧美激情内射喷水高潮 | 欧美日韩视频无码一区二区三 | 久久久久免费看成人影片 | 未满小14洗澡无码视频网站 | 在线 国产 欧美 亚洲 天堂 | 国产亚洲视频中文字幕97精品 | 欧美人与禽猛交狂配 | 国产极品视觉盛宴 | 色婷婷香蕉在线一区二区 | 欧美精品一区二区精品久久 | 国产明星裸体无码xxxx视频 | 久久国产自偷自偷免费一区调 | 国产精品第一区揄拍无码 | 精品人人妻人人澡人人爽人人 | 国产av无码专区亚洲a∨毛片 | 国产精品二区一区二区aⅴ污介绍 | 欧美xxxx黑人又粗又长 | 亚洲精品久久久久avwww潮水 | 欧美性猛交xxxx富婆 | 亚洲精品国产第一综合99久久 | 清纯唯美经典一区二区 | 最新国产麻豆aⅴ精品无码 | 国产又粗又硬又大爽黄老大爷视 | 亚洲熟妇色xxxxx欧美老妇y | 久久综合九色综合欧美狠狠 | 国产xxx69麻豆国语对白 | 日产国产精品亚洲系列 | 亚洲成av人片天堂网无码】 | 性开放的女人aaa片 | 欧美xxxxx精品 | 亚洲国产成人a精品不卡在线 | 国产麻豆精品一区二区三区v视界 | 少女韩国电视剧在线观看完整 | 乱人伦人妻中文字幕无码久久网 | 国产福利视频一区二区 | 亚洲va欧美va天堂v国产综合 | 久久久精品欧美一区二区免费 | 亚洲中文字幕av在天堂 | 欧美 日韩 人妻 高清 中文 | 久久久久久九九精品久 | 在线观看欧美一区二区三区 | 日韩亚洲欧美中文高清在线 | 欧美日韩久久久精品a片 | 国产激情一区二区三区 | 天海翼激烈高潮到腰振不止 | 亚洲精品中文字幕久久久久 | 色婷婷综合激情综在线播放 | 国产精品久久久久久久9999 | 丝袜足控一区二区三区 | 婷婷综合久久中文字幕蜜桃三电影 | 国产肉丝袜在线观看 | 日本成熟视频免费视频 | 18精品久久久无码午夜福利 | 国产办公室秘书无码精品99 | 精品偷自拍另类在线观看 | 色五月丁香五月综合五月 | 成人aaa片一区国产精品 | 欧美自拍另类欧美综合图片区 | 成人亚洲精品久久久久 | 亚洲国产av美女网站 | 欧美高清在线精品一区 | 精品无人区无码乱码毛片国产 | 97精品国产97久久久久久免费 | 天天av天天av天天透 | 精品久久久无码人妻字幂 | 久久 国产 尿 小便 嘘嘘 | 一本一道久久综合久久 | 国产性生大片免费观看性 | 国产精品二区一区二区aⅴ污介绍 | 日韩人妻无码中文字幕视频 | 日日橹狠狠爱欧美视频 | 精品 日韩 国产 欧美 视频 | 国产亚洲tv在线观看 | 国产成人无码区免费内射一片色欲 | 青青青爽视频在线观看 | 欧美成人高清在线播放 | 国产一区二区三区日韩精品 | 日韩亚洲欧美中文高清在线 | 在线a亚洲视频播放在线观看 | 熟妇激情内射com | 亚洲大尺度无码无码专区 | 国产人妻久久精品二区三区老狼 | 国产免费无码一区二区视频 | 久久亚洲日韩精品一区二区三区 | 国产婷婷色一区二区三区在线 | 久久五月精品中文字幕 | 狠狠色噜噜狠狠狠7777奇米 | 天堂а√在线中文在线 | 粉嫩少妇内射浓精videos | 亚洲精品国偷拍自产在线麻豆 | 精品久久综合1区2区3区激情 | 亚洲а∨天堂久久精品2021 | 任你躁在线精品免费 | 亚洲日韩中文字幕在线播放 | 激情内射日本一区二区三区 | 国产亚洲精品久久久久久久久动漫 | 国产精品沙发午睡系列 | 国产婷婷色一区二区三区在线 | 亚洲一区二区三区无码久久 | 国产精品多人p群无码 | 亚洲精品美女久久久久久久 | 最新国产乱人伦偷精品免费网站 | 婷婷五月综合激情中文字幕 | 国产精品人人爽人人做我的可爱 | 熟女体下毛毛黑森林 | 亚洲精品国产a久久久久久 | 中国女人内谢69xxxxxa片 | 精品日本一区二区三区在线观看 | 亚洲人成网站色7799 | 98国产精品综合一区二区三区 | 岛国片人妻三上悠亚 | 乱人伦人妻中文字幕无码久久网 | 牲欲强的熟妇农村老妇女 | 永久免费精品精品永久-夜色 | 国产av剧情md精品麻豆 | 无码国产乱人伦偷精品视频 | 97无码免费人妻超级碰碰夜夜 | 成人欧美一区二区三区黑人免费 | 国产又爽又黄又刺激的视频 | 欧美freesex黑人又粗又大 | 国产精品手机免费 | 初尝人妻少妇中文字幕 | 亚洲欧美日韩综合久久久 | 日日噜噜噜噜夜夜爽亚洲精品 | 18禁止看的免费污网站 | 国产av久久久久精东av | 欧美日韩色另类综合 | 亚洲精品国产精品乱码不卡 | 无码人妻丰满熟妇区五十路百度 | 久久精品人人做人人综合 | 亚洲午夜久久久影院 | 动漫av一区二区在线观看 | 黑人粗大猛烈进出高潮视频 | 四虎永久在线精品免费网址 | 真人与拘做受免费视频一 | 国产97人人超碰caoprom | 国产精品国产三级国产专播 | 红桃av一区二区三区在线无码av | 久久久久久亚洲精品a片成人 | 日日橹狠狠爱欧美视频 | 最新国产麻豆aⅴ精品无码 | 久久国产自偷自偷免费一区调 | 国产无套内射久久久国产 | 国产偷自视频区视频 | 天天av天天av天天透 | 欧美性猛交内射兽交老熟妇 | 波多野结衣乳巨码无在线观看 | 久久国产精品精品国产色婷婷 | 久激情内射婷内射蜜桃人妖 | 人人爽人人爽人人片av亚洲 | 国产黄在线观看免费观看不卡 | 国产农村妇女aaaaa视频 撕开奶罩揉吮奶头视频 | 国产精品亚洲综合色区韩国 | 3d动漫精品啪啪一区二区中 | 日本丰满熟妇videos | 中文字幕久久久久人妻 | 久久久久99精品国产片 | 无码人妻av免费一区二区三区 | 精品国产一区二区三区四区在线看 | 狠狠色丁香久久婷婷综合五月 | 中文字幕av伊人av无码av | 久久精品无码一区二区三区 | 99久久亚洲精品无码毛片 | 又粗又大又硬毛片免费看 | 日本饥渴人妻欲求不满 | 国产精品久久久久久亚洲毛片 | 啦啦啦www在线观看免费视频 | 国产精品手机免费 | 性啪啪chinese东北女人 | 中文字幕无码免费久久9一区9 | 国产av一区二区精品久久凹凸 | 在教室伦流澡到高潮hnp视频 | 97无码免费人妻超级碰碰夜夜 | 中文精品久久久久人妻不卡 | 亚洲人交乣女bbw | 国产一区二区三区精品视频 | 人人澡人人妻人人爽人人蜜桃 | 亚洲成色www久久网站 | aⅴ亚洲 日韩 色 图网站 播放 | 麻豆国产丝袜白领秘书在线观看 | 国产午夜福利亚洲第一 | 少妇人妻大乳在线视频 | 国产极品美女高潮无套在线观看 | 国产麻豆精品精东影业av网站 | 久久亚洲a片com人成 | 又大又硬又爽免费视频 | 7777奇米四色成人眼影 | 久精品国产欧美亚洲色aⅴ大片 | 国产无遮挡吃胸膜奶免费看 | 白嫩日本少妇做爰 | 国产成人无码区免费内射一片色欲 | 丰满人妻精品国产99aⅴ | av无码久久久久不卡免费网站 | 久久99精品久久久久久 | 国内精品久久毛片一区二区 | 亚洲阿v天堂在线 | 国产午夜视频在线观看 | 成 人 免费观看网站 | 欧美一区二区三区视频在线观看 | 婷婷丁香六月激情综合啪 | 日韩成人一区二区三区在线观看 | 极品尤物被啪到呻吟喷水 | 精品国产一区二区三区四区在线看 | 色一情一乱一伦 | 色综合视频一区二区三区 | 亚洲午夜久久久影院 | 奇米综合四色77777久久 东京无码熟妇人妻av在线网址 | а√资源新版在线天堂 | 东北女人啪啪对白 | 扒开双腿吃奶呻吟做受视频 | 亚洲 激情 小说 另类 欧美 | 无码一区二区三区在线 | 国产综合久久久久鬼色 | 亚洲国产精品无码一区二区三区 | 日韩在线不卡免费视频一区 | 99久久久无码国产精品免费 | 丰满少妇人妻久久久久久 | 亚洲精品无码人妻无码 | www国产亚洲精品久久久日本 | 国产成人综合在线女婷五月99播放 | 欧美日韩人成综合在线播放 | 67194成是人免费无码 | 欧美一区二区三区视频在线观看 | 中文字幕无码免费久久9一区9 | 国产国产精品人在线视 | 成在人线av无码免观看麻豆 | 色综合久久久无码网中文 | 亚洲精品久久久久avwww潮水 | 国产午夜福利100集发布 | 一本大道伊人av久久综合 | 国产综合色产在线精品 | 强辱丰满人妻hd中文字幕 | 久久99精品久久久久久动态图 | 一区二区三区高清视频一 | 波多野42部无码喷潮在线 | 日本高清一区免费中文视频 | 99精品无人区乱码1区2区3区 | 亲嘴扒胸摸屁股激烈网站 | 亚洲人成人无码网www国产 | 国产一区二区不卡老阿姨 | 嫩b人妻精品一区二区三区 | 一本一道久久综合久久 | 亚洲成色在线综合网站 | 在线视频网站www色 | 一个人看的www免费视频在线观看 | 成人动漫在线观看 | 熟妇女人妻丰满少妇中文字幕 | 四虎国产精品免费久久 | 激情内射日本一区二区三区 | 久久亚洲a片com人成 | 大地资源网第二页免费观看 | 台湾无码一区二区 | 久久人妻内射无码一区三区 | 无码一区二区三区在线观看 | 狠狠色噜噜狠狠狠7777奇米 | 成人av无码一区二区三区 | 又粗又大又硬毛片免费看 | 久久五月精品中文字幕 | 日本护士毛茸茸高潮 | 欧美性生交活xxxxxdddd | 牲欲强的熟妇农村老妇女视频 | 欧美黑人乱大交 | 亚洲精品美女久久久久久久 | 永久免费精品精品永久-夜色 | 国产精品二区一区二区aⅴ污介绍 | 一本精品99久久精品77 | 天天拍夜夜添久久精品 | 少妇激情av一区二区 | 天下第一社区视频www日本 | 国产九九九九九九九a片 | 精品无码国产一区二区三区av | 亚洲日本在线电影 | 内射后入在线观看一区 | 国产亚洲人成在线播放 | 少妇久久久久久人妻无码 | 97久久超碰中文字幕 | 熟女少妇人妻中文字幕 | 欧美兽交xxxx×视频 | 樱花草在线播放免费中文 | 久久综合狠狠综合久久综合88 | 中文字幕色婷婷在线视频 | 国产无遮挡吃胸膜奶免费看 | 狂野欧美性猛交免费视频 | 伊人久久大香线蕉亚洲 | 久久国语露脸国产精品电影 | 久久精品女人的天堂av | 国产深夜福利视频在线 | 麻豆精品国产精华精华液好用吗 | 丰满少妇女裸体bbw | 18禁黄网站男男禁片免费观看 | 无码av最新清无码专区吞精 | 亚洲精品久久久久中文第一幕 | 午夜成人1000部免费视频 | 欧美自拍另类欧美综合图片区 | 亚洲成色www久久网站 | 国产午夜亚洲精品不卡下载 | 老司机亚洲精品影院无码 | 麻豆蜜桃av蜜臀av色欲av | 免费无码的av片在线观看 | 亚洲综合在线一区二区三区 | 成人无码精品一区二区三区 | 国产一区二区三区精品视频 | 日日碰狠狠躁久久躁蜜桃 | 国产乱人伦app精品久久 国产在线无码精品电影网 国产国产精品人在线视 | 亚洲小说图区综合在线 | 久久人人爽人人人人片 | 亚洲国产精品美女久久久久 | 国产精品久久久久9999小说 | 55夜色66夜色国产精品视频 | 少妇性l交大片欧洲热妇乱xxx | 人人妻人人藻人人爽欧美一区 | 波多野结衣一区二区三区av免费 | 亚洲日韩中文字幕在线播放 | 国产人妻久久精品二区三区老狼 | 国产亚洲人成a在线v网站 | 欧美日韩色另类综合 | 人人妻人人澡人人爽人人精品浪潮 | 久久伊人色av天堂九九小黄鸭 | 亚洲区欧美区综合区自拍区 | 中文字幕精品av一区二区五区 | 18无码粉嫩小泬无套在线观看 | 99久久婷婷国产综合精品青草免费 | 欧美激情一区二区三区成人 | 青春草在线视频免费观看 | 人人妻人人藻人人爽欧美一区 | 欧美日韩一区二区综合 | 午夜精品久久久久久久 | 久久精品国产99久久6动漫 | 天堂亚洲2017在线观看 | 亚洲高清偷拍一区二区三区 | 少妇愉情理伦片bd | 在线 国产 欧美 亚洲 天堂 | 亚洲国产精品毛片av不卡在线 | 俺去俺来也www色官网 | 午夜时刻免费入口 | 爽爽影院免费观看 | 色综合久久久无码中文字幕 | 77777熟女视频在线观看 а天堂中文在线官网 | 亚洲欧美精品aaaaaa片 | 亚洲乱码日产精品bd | 亚洲成av人综合在线观看 | 中文字幕 人妻熟女 | 又大又黄又粗又爽的免费视频 | 狠狠色噜噜狠狠狠狠7777米奇 | 99久久久无码国产精品免费 | 九九在线中文字幕无码 | 丰满人妻一区二区三区免费视频 | 牲欲强的熟妇农村老妇女视频 | 无码国产激情在线观看 | 东京热无码av男人的天堂 | 一本色道婷婷久久欧美 | 日本精品人妻无码77777 天堂一区人妻无码 | 色欲久久久天天天综合网精品 | 久久人人爽人人爽人人片ⅴ | 中文字幕色婷婷在线视频 | 亚洲欧美国产精品久久 | 欧美高清在线精品一区 | 激情亚洲一区国产精品 | 色老头在线一区二区三区 | 久久视频在线观看精品 | 精品国精品国产自在久国产87 | 国产福利视频一区二区 | 久久久久成人片免费观看蜜芽 | 亚洲精品国产第一综合99久久 | 妺妺窝人体色www在线小说 | 成人无码视频在线观看网站 | 亚洲大尺度无码无码专区 | 国产免费久久久久久无码 | 色情久久久av熟女人妻网站 | 成人女人看片免费视频放人 | 亚洲熟熟妇xxxx | 婷婷丁香五月天综合东京热 | 亚洲日韩乱码中文无码蜜桃臀网站 | 亚洲日韩乱码中文无码蜜桃臀网站 | 日韩亚洲欧美中文高清在线 | 18禁止看的免费污网站 | 激情国产av做激情国产爱 | 国产精品美女久久久久av爽李琼 | 国产成人精品视频ⅴa片软件竹菊 | 色偷偷av老熟女 久久精品人妻少妇一区二区三区 | 国产精品无套呻吟在线 | 欧美丰满熟妇xxxx性ppx人交 | 在线观看国产一区二区三区 | 精品成人av一区二区三区 | 丰腴饱满的极品熟妇 | 午夜理论片yy44880影院 | 东京热无码av男人的天堂 | 天天燥日日燥 | 在线播放无码字幕亚洲 | 18无码粉嫩小泬无套在线观看 | 欧美日韩视频无码一区二区三 | 2020久久香蕉国产线看观看 | 日韩欧美中文字幕公布 | 亚洲aⅴ无码成人网站国产app | 日日橹狠狠爱欧美视频 | 亚洲а∨天堂久久精品2021 | 麻豆国产97在线 | 欧洲 | 亚洲欧美日韩国产精品一区二区 | 国精产品一区二区三区 | 亚洲国产成人av在线观看 | 欧洲精品码一区二区三区免费看 | 夜夜躁日日躁狠狠久久av | 日韩欧美中文字幕在线三区 | 久久久久久久人妻无码中文字幕爆 | 国产精品亚洲lv粉色 | 日本成熟视频免费视频 | 亚洲欧美精品伊人久久 | 2020最新国产自产精品 | 黑森林福利视频导航 | 国产婷婷色一区二区三区在线 | 亚洲经典千人经典日产 | 亚洲の无码国产の无码影院 | 久久久久亚洲精品中文字幕 | 成年美女黄网站色大免费视频 | 欧美性猛交内射兽交老熟妇 | 搡女人真爽免费视频大全 | 国产成人无码av一区二区 | 黑人粗大猛烈进出高潮视频 | 成人三级无码视频在线观看 | 久久五月精品中文字幕 | 亚洲爆乳精品无码一区二区三区 | 日本一卡2卡3卡4卡无卡免费网站 国产一区二区三区影院 | 大地资源网第二页免费观看 | 久久国产精品_国产精品 | 十八禁真人啪啪免费网站 | 色婷婷综合激情综在线播放 | 免费无码午夜福利片69 | 国产无遮挡又黄又爽免费视频 | 亚洲午夜久久久影院 | 国产av无码专区亚洲a∨毛片 | 国产精品自产拍在线观看 | 免费无码av一区二区 | 男女猛烈xx00免费视频试看 | 露脸叫床粗话东北少妇 | 亚洲日韩乱码中文无码蜜桃臀网站 | 国产精品va在线观看无码 | 少妇久久久久久人妻无码 | 宝宝好涨水快流出来免费视频 | 中文字幕人妻丝袜二区 | 又色又爽又黄的美女裸体网站 | 无码国内精品人妻少妇 | 亚洲中文字幕成人无码 | 久9re热视频这里只有精品 | 午夜丰满少妇性开放视频 | 国产成人久久精品流白浆 | 性开放的女人aaa片 | 亚拍精品一区二区三区探花 | 久久精品成人欧美大片 | 欧美性生交活xxxxxdddd | 天天拍夜夜添久久精品大 | 给我免费的视频在线观看 | 成人精品一区二区三区中文字幕 | 国产人妻大战黑人第1集 | 奇米影视888欧美在线观看 | 又大又黄又粗又爽的免费视频 | 成人欧美一区二区三区黑人免费 | 国产精品久久久久9999小说 | 国产九九九九九九九a片 | 漂亮人妻洗澡被公强 日日躁 | 性欧美疯狂xxxxbbbb | 对白脏话肉麻粗话av | 欧美日韩亚洲国产精品 | 成人免费视频视频在线观看 免费 | 成 人 免费观看网站 | 欧美 亚洲 国产 另类 | 中文字幕人妻无码一夲道 | 免费观看又污又黄的网站 | 精品乱子伦一区二区三区 | 亚洲人成人无码网www国产 | 狠狠色欧美亚洲狠狠色www | 老司机亚洲精品影院无码 | 大胆欧美熟妇xx | 国产亚洲欧美日韩亚洲中文色 | 午夜不卡av免费 一本久久a久久精品vr综合 | 少妇被黑人到高潮喷出白浆 | 欧美国产亚洲日韩在线二区 | 国产亚洲欧美日韩亚洲中文色 | 中文字幕亚洲情99在线 | 蜜桃av蜜臀av色欲av麻 999久久久国产精品消防器材 | 久久精品人妻少妇一区二区三区 | 国产精品美女久久久久av爽李琼 | 亚洲欧美日韩综合久久久 | 精品无码成人片一区二区98 | 国产精品无码一区二区三区不卡 | 综合人妻久久一区二区精品 | 亚洲小说图区综合在线 | 久久久久人妻一区精品色欧美 | aa片在线观看视频在线播放 | 欧美精品在线观看 | 欧美人与物videos另类 | 永久免费观看美女裸体的网站 | 日欧一片内射va在线影院 | 内射欧美老妇wbb | 久久久久久久女国产乱让韩 | 日日干夜夜干 | 久久aⅴ免费观看 | 日韩欧美群交p片內射中文 | 免费播放一区二区三区 | 一区二区三区乱码在线 | 欧洲 | 日日天干夜夜狠狠爱 | 久久国内精品自在自线 | 国产激情艳情在线看视频 | 国产精品免费大片 | 久久久久99精品成人片 | 亚洲 高清 成人 动漫 | 狠狠综合久久久久综合网 | 精品一区二区不卡无码av | 国产综合久久久久鬼色 | 国产精品.xx视频.xxtv | 精品无码av一区二区三区 | 精品无人区无码乱码毛片国产 | 麻豆精品国产精华精华液好用吗 | 少妇太爽了在线观看 | 亚洲一区二区三区无码久久 | 激情国产av做激情国产爱 | 麻豆蜜桃av蜜臀av色欲av | 99精品视频在线观看免费 | 亚洲 日韩 欧美 成人 在线观看 | 国内揄拍国内精品人妻 | 荫蒂添的好舒服视频囗交 |