日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

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

编程问答

Unity SRP自定义渲染管线 -- 4.Spotlight Shadows

發布時間:2023/12/13 编程问答 55 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Unity SRP自定义渲染管线 -- 4.Spotlight Shadows 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

英文原文:https://catlikecoding.com/unity/tutorials/scriptable-render-pipeline/spotlight-shadows/

  • 渲染并且讀取紋理
  • 從光空間(光源角度)渲染
  • 為陰影投射(shadow casters)添加一個著色器pass
  • 采樣陰影貼圖
  • 支持軟陰影和硬陰影混合
  • 在單個圖集中組合存儲最多16個陰影貼圖。

這是Unity可編程渲染管線教程的第四篇。在這篇里我們讓聚光燈能投射陰影,并最多同時支持16個光源的陰影。該教程基于Unity2018.3.0.f2。

?1. A Spotlight With Shadows

陰影非常重要,它不僅可以提升真實感,還可以讓物體之間的空間層次關系更加明顯。沒有陰影,我們就很難分辨一個物體究竟是漂浮在表面上還是和表面相接觸。

在這一章,我們只完成聚光燈的陰影,畢竟它是最簡單的。我們先從支持單光源陰影開始。我們需要創建一個場景,其中包含一個聚光燈以及一些游戲物體。一個平面用于接受陰影。所有的物體都使用我們之前自己創建的Lit Opaque材質。

1.1 Shadow map

陰影的渲染有很多種方法,比如體陰影等,這里我們使用傳統的陰影貼圖方法(shadow map)。這意味著我們的需要從光源方向渲染場景,但我們只需渲染深度信息。深度會告訴我們光線在碰撞到物體前走了多久,在這距離之后的物體則處于陰影之中。

首先我們需要創建一個陰影貼圖,相機將會將內容渲染只該貼圖,為了以后能對陰影貼圖采樣,我們需要用一個獨立的渲染紋理來存儲渲染結果而不是幀緩沖中,在MyPipeline中添加一個RenderTextrue的字段來存儲與陰影貼圖的引用。

新建一個獨立的函數來渲染陰影,用context作為參數。首先要獲取一個渲染紋理。我們通過調用?RenderTexture.GetTemporary來實現。如果有還未被清理的閑置紋理,該方法則會拿來它重復利用,不然就創建一個新紋理。因為我們的陰貼圖幾乎在每一幀都會用到,所以我們可以一直重復使用同一紋理。RenderTexture.GetTemporary方法要求提供貼圖的寬高,深度通道的存儲位數以及紋理格式等參數。我們使用固定的512x512大小,并使用16位的深度通道提高精度。我們創建的是深度紋理,格式是RenderTextureFormat.Shadowmap。

?過濾模式設為雙線性,紋理環繞模式設為Clamp

陰影貼圖的渲染應當先于常規場景的渲染。因此在Render方法中,我們在配置常規相機操作前,剔除操作之后調用RenderShadows方法。

在我們傳遞上下文完成渲染后,要釋放渲染紋理。將shadow map傳給?RenderTexture.ReleaseTemporary就可以釋放紋理,同時清空引用。

1.2?Shadow Command Buffer

我們使用單獨的command buffer完成陰影相關的工作,這樣在frame debugger中我們就可以看到陰影渲染和常規渲染被分成了兩個部分。

影的渲染應當放在BeginSample和EndSample之間

1.3?Setting the Render Target

在渲染陰影前,應當需要先讓GPU渲染信息到陰影貼圖中。我們可以調用CoreUtils.SetRenderTarget來實現這一點,傳入我們的command buffer以及shadow map作為參數即可。這個方法一開始會清理貼圖,所以在BeginSample之前調用,來避免frame debugger里出現額外一層Render Shadows嵌套。

我們只關注深度通道,為SetRenderTarget添加第三個參數?ClearFlag.Depth來指明這一點。

雖然不是必須的,但我們可以對紋理的加載和儲存設置更加精確的需求。因為我們會清理這個紋理,所以我們并不關注它來自哪,可以用RenderBufferLoadAction.DontCare來指明這一點,這將使得tile-based的GPU會有更高的執行效率。因為我們隨后需要采樣該紋理,所以需要將其存儲在內存中,通過RenderBufferStoreAction.Store指明這一點。

我們陰影貼圖的清除操作現在能在frame debugger里看到了,位于常規渲染之前。

1.4?Configuring the View and Projection Matrices

我們從光源的視角渲染場景,就猶如我們將聚光燈看做是一個攝像機一樣。因此,我們需要提供適當的視角投影矩陣。我們可以通過剔除結果中的?ComputeSpotShadowMatricesAndCullingPrimitives方法得到該矩陣。該方法的第一個參數是光源序列,因為我們只有一個光源,所以就是0。視野矩陣和投影矩陣則是在后兩個輸出參數中。最后一個參數ShadowSplitData我們用不到,但作為輸出參數,我們必須提供。

當我們獲得了該矩陣,調用陰影命令緩沖區的SetViewProjectionMatrices?方法,然后執行command buffer并清理。?

1.5?Rendering Shadow Casters

有了正確的矩陣信息,我們現在可以渲染所有投射陰影的物體了。我們通過調用DrawShadows方法來實現。這個方法需要一個?DrawShadowsSettings?類型的引用參數。我們用剔除結果和光源索引作為參數來創建一個該實例。

只有我們把聚光燈的Shadow Type類型設為hard或者soft才有用。如果我們設為none,Unity會說這不是一個有效的投射陰影的光源。?

2.?Shadow Caster Pass

此時所有受光源影響的物體都應該渲染進陰影貼圖中,但是frame debugger告訴我們這并沒有發生。因為?DrawShadows?函數會使用著色器的ShadowCaster?pass,但是目前我們的著色器并沒有這個pass。

2.1?Shadow Include File

為了創建一個shadow-caster pass,我們復制Lit.hlsl文件并重命名為ShadowCaster.hlsl。我們只需要深度信息,所以移除所有和片元位置無關的東西。片元程序簡單的輸出0。重命名相應的方法以及導入guard define。

現在足夠渲染陰影了,但是有可能會出現陰影投射物和近平面相交的情況,這時候就會導致陰影中有漏洞(想象一下,本應該在前面產生遮擋的部分,因為沒在近平面范圍內而被舍棄)為了避免這種情況,我們在頂點函數中,限制頂點不超出近平面。我們可以通過取裁減空間位置z,w分量中較大者的來完成這一操作。(為什么比較z和w就可以?這牽扯到比較深入的投影矩陣知識,請參考該文列出的幾個文章https://blog.csdn.net/yinfourever/article/details/96481332,簡單科普下基礎知識,投影空間z值從齊次坐標轉換為正常坐標后的范圍為-1 到 1,也就是clipPos除以w之后的結果,這也是為什么比較z和w就可以確保其不超出近平面,因為當點在近平面時,z值為-1,當點在遠平面時,z值為1)

然而,裁減空間的一些細節讓情況變得復雜起來。我們往往很直觀的將深度值為-1的地方想象為近平面,隨著距離增加,值不斷上升。但實際上,除了OpenGL之外的?API,情況與我們想象的相反,在近平面上值為1。而對于OpenGL,近平面則是-1。我們通過?UNITY_REVERSED_Z?和?UNITY_NEAR_CLIP_VALUE這兩個宏覆蓋所有情況。我們導入Common.hlsl來獲取這兩個宏。

2.2?A Second Pass

在我們的Lit著色器中添加ShadowCaster?pass,我們復制一個pass語句塊,并將第二個pass中Tags中的?LightMode設為ShadowCaster。接著引入?ShadowCaster.hlsl而非Lit.hlsl?。并使用對應的頂點片元函數。

?現在我們的物體能夠渲染進陰影貼圖里了。因為物體目前只受單個光源影響,所以GPU instancing的效率非常好。

選擇Shadows.Draw項,你就能夠看到最終的陰影貼圖了。因為是僅深度貼圖,frame debugger會為我們顯示深度信息,白色為近處,黑色為遠處。

因為陰影貼圖是在聚光燈假設成相機的方式下渲染的,所以它的朝向和光源是相匹配的。如果發現陰影貼圖是顛倒的,可能是你對光源進行了旋轉,導致本地空間的向上方向在世界空間反而是向下的。

3.?Sampling the Shadow Map

我們現在有了包含所需要數據的陰影貼圖,但暫時還沒有使用它。所以下一步就是采樣陰影貼圖

3.1?From World Space to Shadow Space

儲存在深度貼圖的中的深度信息,是依據在渲染該貼圖時所使用的聚光燈當作攝像機的裁減空間計算的,我們把它叫做陰影空間。這與我們正常渲染場景所用到的坐標空間不匹配。想知道一個片元如果存儲在深度貼圖中深度值該是多少,我們要將片元的位置轉從世界空間換到陰影空間。

首先我們得讓我們的著色器可以訪問陰影貼圖。為此我們添加一個著色器材質變量?_ShadowMap。并在MyPipeline中持有指向它的標識符。

在RenderShadows通函數中通過SetGlobalTexture方法,來將陰影貼圖和全局變量相綁定。?

接著我們添加一個矩陣變量用于從世界空間轉換至陰影空間,命名為_WorldToShadowMatrix。同樣持有它的標識符。

?通過陰影空間的視角矩陣和投影矩陣相乘可以得到改矩陣。用SetGlobalMatrix函數將它傳給GPU。

我們又會遇到裁減空間z軸是否反向這一問題,好在我們可以用SystemInfo.usesReversedZBuffer來檢查,如果反向,那就在相乘之前修改投影矩陣的z列分量(列序列號為2)。直接修改原矩陣的m20至m23字段即可。

我們現在有了世界空間至陰影空間的轉換矩陣。裁減空間范圍是-1到1,但我們的紋理坐標和深度范圍在0到1。要映射至該范圍就得就得再額外乘一個能在所有維度縮放和偏移?0.5個單位的轉換矩陣。我們可以用Matrix4x4.TRS方法來得到想要的縮放、旋轉或偏移。

但是其實這是一個simple matrix,我們簡單的在單位矩陣的基礎上修改合適的分量即可。

3.2?Sampling Depth

在Lit.hlsl,中,新增一個緩存區并在其中定義float4x4?_WorldToShadowMatrix?。

紋理資源不屬于buffer的一部分,我們得分開另外定義。我們可以用宏?TEXTURE2D_SHADOW來定義?_ShadowMap。

?接下來,我們需定義采樣器狀態用于采樣紋理。通常我們是用的是宏SAMPLER?,但是這里我們需要使用另外一個特殊的比較采樣器,所以使用SAMPLER_CMP。為了得到正確的采樣器狀態,應使用sampler前綴再加上貼圖名字作為參數

什么是紋理采樣器?

在舊的GLSL代碼中,我們使用sampler2D來同時定義紋理和采樣器狀態。但其實這是兩個分開的東西,都會占用資源。采樣器狀態可以從紋理中分離開來,就為混合使用兩者提供了可能。典型的例子就是多張紋理重復利用同一個采樣器狀態。在我們的例子里,我們通過MyPipeline設置采樣器狀態的過濾模式為雙線性以及紋理映射模式為clamping?我們使用的comparison sampler還會在雙線性插值之前就為我們進行深度比較。這會比在插值之后才進行比較效果更好。

創建一個以世界位置作為參數的ShadowAttenuation方法。它會返回我們光源陰影的衰減因子。在方法里首先要做的就是將世界位置轉為陰影空間位置。

就像之前轉換到裁減空間一樣,得到的位置是定義在齊次坐標系中的。我們需要的是常規坐標,所以我們讓xyz分量除以w分量。

現在我們可以通過SAMPLE_TEXTURE2D_SHADOW這個宏采樣陰影貼圖。它需要一張貼圖,一個采樣器狀態,以及對應的陰影空間位置作為參數。如果該點位置的z值比在陰影貼圖中對應點的值要小就會返回1,這說明他比任何投射陰影的物體離光源都要近。反之,在陰影投射物后面就會返回0。因為采樣器會在雙線性插值之前先進行比較,所以陰影邊緣會混合陰影貼圖的多個紋素(texels)。

3.3 Fading when Shadowed

讓陰影產生影響,只需在DiffuseLight函數中為陰影衰減添加一個參數。將它與其他的漸變因子一起作用于漫反射強度。

頂點光源現在不會有陰影,所以在LitPassVertex.中將陰影衰減值設為1。?

在?LitPassFragment中,調用ShadowAttenuation方法并傳入世界位置,將返回值傳給DiffuseLight函數產生陰影。

現在陰影出現了,但是有非常嚴重的瑕疵。

4. Shadow Settings

影響陰影質量表現的因素有很多。我們暫時支持一部分:陰影分辨率、深度偏移、強度、軟陰影。我們可以在每個光源的檢視面板對這些以及其他選項進行配置。

4.1?Shadow Map Size

雖然光源的inspector中有設置陰影分辨率的選項但這只會間接的影響深度貼圖的大小,真正是取決于項目設置中的quality settings,至少對于Unity默認的渲染管線是這樣的。我們用的是自己的渲染管線,因此我們選擇將陰影貼圖大小的設置選項放到MyPipelineAsset中。

陰影貼圖是正方形貼圖,我們允許設為256x256到4096x4096之間的任意二次方大小。為此我們在MyPipelineAsset中定義一個名為ShadowMapSize的枚舉類型,其中包含了256、512、1024、2048這幾個枚舉。因為枚舉不能為數字,所以我們加一個下劃線前綴,Unity編輯器在顯示時會抹去下劃線。我們用這個枚舉類型添加一個配置字段用于設置陰影貼圖尺寸。

枚舉代表的整數默認從0開始。但如果枚舉選項正好與相同大小的整數相通會很方便,因此我們對枚舉項進行顯示賦值。

默認值0將無法表示任何枚舉項,所以我們需設置一個有效的默認值。?

?將該參數傳入渲染管線的構造函數

在MyPipeline中添加一個變量,并在構造函數中初始化。

?在RenderShadows中分配渲染紋理時,我們就可以使用該變量設置陰影貼圖尺寸了。

4.2?Shadow Bias

陰影瑕疵的問題更詳細的解釋請看Rendering 7, Shadows,我們用最簡單的方式掩蓋這些瑕疵。那就是在渲染深度貼圖時在深度上添加一點偏移。這個深度偏移在每個光源中單獨配置,所以必須把它傳給GPU。我們添加一個_ShadowBias著色器屬性,并記錄下它的標識符。

在RenderShadows中設置視角投影矩陣后,設置深度偏移。?VisibleLight中不能直接得到該信息,但其中的light字段有深度偏移。

ShadowCaster.hlsl?文件中陰影Buffer中添加相應的變量。對裁減空間位置的z分量應用z分量。如果z軸是翻轉的那就用減法,否則用加法。

shadow bias應當盡可能小,避免陰影偏移的太遠引起peter-panning效果(看起來影子漂浮在地面上)

?

關于bias以及shadow map這篇博文寫的非常好,強烈建議讀一下https://blog.csdn.net/ronintao/article/details/51649664

根本原因就是 shadow depth map 的分辨率不夠,因此多個 pixel 會對應 map 上的同一個點。

? ? ? ? ?圖中黃色箭頭是照射的光線,黑色長方形是實際物體表面,黃色的波浪線是 shadow map中的對應值的情況。

????????可以看到,由于map是對場景的離散取樣,所以黃色的線段呈階梯狀的波浪變化,相對于實際場景中的情況,就有一部分比實際場景中的深度要大(對應著黑色線段部分),著部分不會產生陰影(注意圖畫反了);一部分比實際場景中的深度要小(對應著黃色線段部分),這部分會產生陰影,所以就出現了條紋狀的陰影。

????????由于這種情況,是物體的實際深度,與自己的采樣深度,相比較不相等(實際深度大于采樣深度)導致的,所以可謂是自己(采樣的副本)遮擋了自己(實際的物體),所以被稱為 self shadowing。
? ? ? ?解決的方法很簡單,其實只有實際深度大于采樣深度的時候才有問題,那么我們在計算實際深度的時候,往燈光方向拉一點,讓他減小一點就可以了

4.3?Shadow Strength

我們只有單個光源并且沒有任何環境光,所以我們的陰影是純黑的。但是我們可以調和一下陰影衰減的輕度,讓他只淡化部分光源貢獻而不是完全排除。這會讓我們的陰影看起來是半透明的。我們?_ShadowStrength屬性表示陰影強度,并記錄下它的標識符。

?采樣陰影貼圖時會用到陰影強度,所以將它與世界-陰影空間矩陣和陰影貼圖在一塊設置。和深度偏移一樣,我們在?Light字段中獲取該值。

在陰影緩存區添加陰影強度。在ShadowAttenuation函數中用它在1和采樣得到的衰減值之間插值。

4.4?Soft Shadows?

最后一個設置就是支持軟硬陰影的切換。我們現在使用的是硬陰影,陰影邊緣的平滑過渡全靠在采樣陰影貼圖時使用的雙線性插值。當開啟平滑的軟陰影時,陰影和非陰影的過渡是模糊的,陰影中有很大的半影區域。但不像在現實世界中,半影的產生取決于光源、投射物,接受陰影物體之間的空間關系,在這里半影范圍是固定統一的。

軟陰影需要采樣陰影貼圖多次。次數越靠后,采樣點越偏離原采樣位置,貢獻度也越低。我們使用5x5 tent filter,需要九次紋理采樣。為此我們要用到在Shadow/ShadowSamplingTent.hlsl文件中的一個函數方法,將它導入Lit.hlsl。

tent filter需要知道陰影貼圖的尺寸。該方法要求一個特定的向量,四個分量分別為寬的倒數、高的倒數、寬度、高度。我們將其添加到shadow buffer。

?在MyPipeline中保存相應的標識符。

在?RenderShadows函數中設置該變量。?

當_SHADOWS_SOFT?關鍵字被定義時,在ShadowAttenuation方法中我們用tent filter替換常規的陰影貼圖采樣。

不再是單次采樣,我們創建一個5x5的tent filter用來疊加九次采樣結果。SampleShadow_ComputeSamples_Tent_5x5方法會給分配好每次采樣的權重和UV坐標,我們需要傳入陰影貼圖尺寸和陰影空間位置。權重和uv通過輸出參數獲取,一個是flaot數組,另一個是float2數組,兩者都有9個元素。

然而,方法中的輸出參數定義的類型為real而不是float。它不是一個實際的數字類型,而是一個宏,根據需要自動選擇flaot或者half。我們通??梢院雎赃@個情況,但是為了避免在某些平臺出現編譯錯誤,最好還是為輸出參數使用real類型。

現在我們可以在循環中,使用數組里的權重和uv坐標,對陰影貼圖采樣九次。這是一個固定次數的循環,所以shader編譯器會會將循環展開。我們還需要陰影空間位置的z坐標,每次采樣都用這三者構造一個flaot3變量作為參數。

為了設置使用軟陰影,創建一個定義了_SHADOWS_SOFT關鍵字的著色器變種。在我們的Lit著色器的默認pass中添加一個多重編譯指令。我們需要兩個變種,一個有該關鍵字,一個沒有,所以我們用下劃線表示沒有關鍵字,后面跟著_SHADOWS_SOFT關鍵字。

最后,我們在?RenderShadow函數中基于光照的shadows屬性設置關鍵字。如果設置為LightShadows.Soft就會在我們的陰影緩沖區調用?EnableShaderKeyword方法,否則調用DisableShaderKeyword方法,Unity根據關鍵字狀態決定在渲染時使用哪一個變種。

用一個bool值切換關鍵字很普遍,我們可以用方法CoreUtils.SetKeyword代替。

?

5.?More Lights With Shadows

目前我們只支持單光源投射陰影,但是我們的管線支持最多16個光源,接下來我們將實現最多支持16個聚光燈的陰影。

5.1?Shadow Data Per Light

我們目前的管線只能用單個pass完成所有的光源工作,所以如果我們想支持多光源陰影,我們就得確保每個光源的數據(如強度等)可同時訪問。我們在ConfigureLights函數中收集這些數據,就像設置其他的光源數據一樣。所以我們將該方法移到RenderShadows前,并且只在有可見光源時調用?RenderShadows。

我們用一個四維向量數組存儲陰影數據,每個向量代表一個光源。在ConfigureLights函數遍歷光源的循環中先將每個向量初始化為0,就像之前設置衰減數據一樣。

在光源是聚光燈類型的情況下獲取Light腳本。如果shadows屬性沒有被設置為LightShadows.None,就將陰影強度存儲在向量的x分量中。

?我們用向量的y分量存儲使用硬陰影或軟陰影。1表示軟陰影,0表示硬陰影。

5.2?Excluding Lights

一個光源可見并且開啟了陰影并不能保證一定需要陰影貼圖。如果在光源的視角中并沒有任何陰影的投射物或接受物,自然不需要陰影貼圖。我們可以調用剔除結果的?GetShadowCasterBounds函數,傳入一個光源索引來檢查該光源是否需要陰影貼圖。他會檢查該光源的陰影體積是否在一個有效的范圍內。如果沒有,我們就跳過設置陰影數據。盡管我們沒有用到輸出結果,但是我們還是得提供一個陰影范圍作為參數。

5.3?Rendering All Shadow Maps

我們把首次執行陰影緩沖區和設置陰影貼圖紋理之間的代碼用一個循環包括。用這個循環再次遍歷所有可見光源,并在光源數量超過可支持最大光源數是打斷循環。將其中所有原本固定的索引0,修改為迭代值變量。

跳過不需要陰影貼圖的光源,我們用陰影數據中的陰影強度來判斷。小于等于0(有可能原本的強度就這樣,也有可能是我們之前設0來跳過)就直接用continue跳到下個迭代。

omputeSpotShadowMatricesAndCullingPrimitives方法返回是否可以生成有效的矩陣的布爾值。理論上應該和?GetShadowCasterBounds方法的結果一致,但以防萬一還是考慮在失敗時將強度設為0并跳過此次迭代。

當我們開啟多個光源的陰影(只要它們的位置能夠讓他們產生可見的陰影),frame debugger會顯示我們確實渲染了多次陰影貼圖。

然而,陰影顯示地一團糟,我們還需要進一步做一些工作。

5.4?Using the Correct Shadow Data

不再是使用單一的ShadowStrength屬性,我們需要傳入shadow data數組。

同樣的,我們也需要設置投影矩陣數組,將其傳入GPU

在shader里,修改陰影緩存區使之匹配。

ShadowAttenuation?方法新增一個參數接受光源索引以便取得正確的數組元素。我們檢查陰影強度是否為正數。如果不是,直接將1作為衰減值返回。代替依賴_SHADOWS_SOFT關鍵字判斷,我們基于陰影數據的y分量來進行條件分支。

最后在?LitPassFragment里調用ShadowAttenuation?時傳入光源索引。

5.5?Shadow Map Atlas

雖然我們現在有了正確的用于渲染陰影所需要的陰影數據和矩陣信息,但是在超過一個光源有陰影時,最終產生的仍然是錯誤的陰影。這是因為所有的陰影貼圖都渲染進了同一張紋理之中,多個信息混合在一起,導致得到的陰影貼圖沒有意義。Unity輕量級渲染管線通過陰影貼圖圖集解決這一問題。將渲染紋理分割為多個方形區域,每個光源個占據其一。我們也使用這種方法。

為什么不使用紋理數組?

這是可行的,但可惜使用陰影投射渲染紋理數組并不是一個普遍的做法。比如,在Metal上這是可行的,但是OpenGL core要求4.6的著色器等級,即使生效了,Unity也會打印一連串的斷言錯誤。所以還是老老實實的用單個渲染紋理吧。

我們最多支持16個光源,所以就應該把單張陰影貼圖分成4x4網格的平鋪塊(tiles)。每個平鋪塊的大小應該和陰影貼圖除以4的大小一樣。我們要將渲染時的視口約束在這個大小,所以在RenderShadows一開始創建一個Rect結構體,并填充合適的值。

在我們設置視口和投影矩陣前,用SetViewport函數告訴GPU使用合適的視口大小。

現在所有的陰影貼圖都渲染在渲染紋理一角的單個平鋪塊中。下一步就是偏移每個光源的視口。我們可以依據每個平鋪塊的xy序號得到視口位置。Y軸偏移序號通過光源序列除以四(整數除法)得到。x軸偏移序號通過整數取余得到。最終視口的xy位置等于序號乘以平鋪塊大小。

這樣的圖集有一個缺點,在一個平鋪塊邊緣采樣時,可能會在兩個平鋪塊之間插值,從而導致錯誤的結果。當使用軟陰影時效果會更加的糟糕,因為tent filter可能會在離原始采樣點偏移最多4個紋素的地方采樣。相比混合附近的平鋪塊,能夠淡出陰影肯定更好。所以我們在每個平鋪塊周圍添加一圈空值邊緣,讓GPU寫入數據時使用比平鋪塊略小一點的視口。這稱之為裁減矩形。我們可以使用?shadowBuffer.EnableScissorRect?方法,傳遞一個比視口略小的矩形來實現。我們需要邊緣寬度為四個紋素,所以這個矩形位置應該是視口位置加4,大小為視口大小減8。

我們在渲染陰影后調用DisableScissorRect關閉裁剪矩形,不然會影響到后面的常規渲染。

最后要做的就是調整world-to-shadow矩陣,讓它能采樣到正確的平鋪塊。我們可以乘以一個有適當xy偏移的轉換矩陣。shader不需要關心我們是否使用了圖集。

要記住我們現在每個物體最多支持4個像素光,所以你讓第5個聚光源照射到平面時,其中一個光源會退化為頂點光源,進而無法接受該光源的陰影。(16個陰影指的是整體場景總的陰影來源,而不是單個物體的)

6.?Dynamic Tiling

使用陰影貼圖圖集的優點是無論有多少陰影貼圖,我們用的都是同一張渲染紋理,所以紋理占用的內存是固定的。缺點則是每個光源只占紋理的一部分,所以最終的陰影貼圖分辨率會比我們想象的要低。并且最終可能有很大一部分的紋理面積沒有利用。

我們可以更好的利用紋理,而不是固定的將紋理分成16塊。我們可以用一個變量表示平鋪塊的大小,可以根據有多少平鋪塊決定值設為多大。這種方式可以確保我們至少能用到一半的紋理。

6.1?Counting Shadow Tiles

首先,我們需要明確我們需要多少個平鋪塊。我們可以在ConfigureLights中記錄我們有多少帶陰影的光源。并用一個字段記錄總數以便在之后使用。

6.2?Splitting the Shadow Map

接下來在RenderShadows里一開始就算好如何分割陰影貼圖。我用一個整數變量來表示。如果我們只要一個平鋪塊,就不需要分割,所以split值設為1,否則如果是4個以下值為2,8個以下值為3,只有超過8個,值才為4。

平鋪塊的大小可以通過陰影貼圖大小除以split值得到(整數除法)。這意味著在除以3的時候我們會舍棄部分紋素。平鋪塊的縮放值應該改為1/split(浮點數除法)。我們使用split值計算平鋪塊的縮放和偏移用于調整世界-陰影矩陣。

為了在可用的空間打包陰影貼圖,我們需要在確實設置好一個平鋪塊后,再遞增序列。因此我們使用獨立的一個變量而不是直接使用光源索引。在沒我們沒有跳過的迭代的末尾自遞增變量。

6.3?One Tile is No Tile

最后,如果我們最終只需要一個平鋪塊,那就沒必要設置視口的裁減模式了。我們只需要在有多個平鋪塊時需要這么做。

6.4?Shader Keywords

目前,我們每個片元最多可以采樣來自四個光源的陰影,它們可能是軟硬光源的組合。最麻煩的情況就是4個軟陰影,一共需采樣36次。好在我們shader中的多個分支可以為我們很好的按要求采樣陰影,因為來自同一物體的片元最終使用的是同一條分支。但是我們可以通過分離不同的陰影組合來切換復雜度更低的備選shader。

共有四種可能的組合,第一種是完全沒有陰影,第二種只有硬陰影,第三種只有軟陰影,最復雜的一種就是軟硬陰影的組合。我們可以使用shader變種處理所有可能的情況,通過使用關鍵字_SHADOWS_HARD?和?_SHADOWS_SOFT。

在RenderShadows中,使用兩個布爾變量記錄是否使用了軟硬陰影,我們依靠陰影信息的Y分量來判斷。在循環之后使用這些布爾值切換關鍵字。

在shader添加另一個多重編譯指令,這次是_SHADOWS_HARD

在ShadowAttenuation?方法中,如果兩個關鍵字都沒定義就在一開始直接返回1。這樣就可以省方法的剩余部分,完全的消除陰影。

為了讓代碼更整潔優雅,我們將采樣軟陰影和硬陰影的代碼各自分離成獨立的函數。

現在我們用關鍵字為其他三種情況填寫代碼。最開始的分支在兩個關鍵字都定義時才有。

最后,如果我們不需要陰影平鋪塊?,在MyPipeline.Render里直接跳過RenderShadows方法。我們甚至都不需要清理陰影貼圖了。如果跳過了,要確保兩個陰影的關鍵字都關掉了。沒有可見光時我們也要把兩個關鍵字關掉。

?

?

?

?

?

?

?

?

?

?

?

創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎

總結

以上是生活随笔為你收集整理的Unity SRP自定义渲染管线 -- 4.Spotlight Shadows的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

视频直播国产精品 | 国产成人99av超碰超爽 | 欧美久久久 | 国产午夜精品一区二区三区在线观看 | 五月婷婷操 | 99精品免费久久久久久久久 | 精品视频在线观看 | 国产黄色播放 | 黄网站色| 国产永久免费高清在线观看视频 | 91在线www| 免费在线激情电影 | 成人黄色视| 色狠狠干| www.夜夜夜 | 欧美有色 | 国产老妇av | 成人黄色毛片视频 | 欧美日韩破处 | 精品欧美乱码久久久久久 | 九九九九热精品免费视频点播观看 | 日韩精品一区二区在线视频 | 亚洲乱码精品久久久久 | 91成人网在线观看 | 探花视频免费在线观看 | av电影在线观看完整版一区二区 | 国产 字幕 制服 中文 在线 | 国产尤物在线 | 欧美精品久久天天躁 | av中文字幕在线观看网站 | 97碰碰视频| 免费在线观看日韩视频 | 中文字幕在线观看的网站 | 久久a级片 | 久久成人资源 | 狠狠网亚洲精品 | 国产伦理精品一区二区 | 午夜视频免费在线观看 | 人人藻人人澡人人爽 | 日韩91精品 | 国产精品福利午夜在线观看 | 一级黄视频 | 美女网站在线看 | 亚洲综合狠狠干 | 日日草视频 | 日本在线观看黄色 | 在线观看黄a | 国产黄在线免费观看 | 日韩理论在线视频 | 日韩a级黄色片 | 精品美女久久久久久免费 | 色噜噜狠狠狠狠色综合久不 | 国产自产在线视频 | 成 人 黄 色 视频 免费观看 | 黄色大片国产 | 黄p在线播放 | 国产一区福利在线 | 97精品视频在线播放 | 三级动图 | 久久国产女人 | 国产日韩精品一区二区三区 | 成人资源在线 | 亚洲精品综合一区二区 | 亚洲不卡123 | 中文字幕在线免费看 | www狠狠操 | 日韩午夜电影网 | 波多野结衣在线视频一区 | 啪啪免费试看 | 精品99在线 | 久久久久久久国产精品视频 | 久久精品—区二区三区 | 亚洲精品久久久久久久不卡四虎 | 99视频免费在线观看 | 东方av在线免费观看 | 久久久国产99久久国产一 | 国产黄视频在线观看 | 久久国产乱 | 国产精品日韩久久久久 | 国产98色在线 | 日韩 | 亚洲欧洲精品一区二区 | 日韩精品偷拍 | 免费国产在线视频 | 一区二区视频免费在线观看 | 黄色特级毛片 | 午夜a区| 国产97在线播放 | 手机看片国产日韩 | 精品在线观看一区二区 | 天堂久久电影网 | 激情婷婷六月 | 久久久久国产精品免费网站 | www色网站| 69视频永久免费观看 | v片在线看| 精品成人网 | 天天操天天射天天爽 | www日韩在线| 欧美先锋影音 | 亚洲热久久 | 欧美日韩有码 | 嫩草av影院 | 色在线高清 | 美女视频又黄又免费 | 丝袜美女在线观看 | 黄色三级网站 | 日韩网站在线看片你懂的 | 亚洲一区视频免费观看 | 福利视频一区二区 | 亚洲少妇自拍 | 亚洲激情综合网 | 四虎影视成人永久免费观看亚洲欧美 | 国产a国产 | 欧美日韩视频免费 | 久久久免费网站 | 一级黄色视屏 | 国产人免费人成免费视频 | 日本在线免费看 | av三级av | 国产精品mv在线观看 | 国产亚洲无 | 亚洲一区二区黄色 | 国产最新精品视频 | 久久久免费观看 | 午夜精品久久久久久久久久久久久久 | 91精品国产自产老师啪 | 日韩视频三区 | 九九九在线观看视频 | 国产精品久久毛片 | 99国产精品一区二区 | 99超碰在线播放 | 日韩欧美高清在线 | 伊人资源视频在线 | 日韩aⅴ视频 | 夜色资源网 | 久久成人黄色 | 日韩啪啪小视频 | 超碰人人在线观看 | 成人国产精品一区 | 狠狠躁日日躁狂躁夜夜躁av | 黄色精品网站 | 国产亚洲aⅴaaaaaa毛片 | 99久久日韩精品视频免费在线观看 | 就要色综合 | 久久人人97超碰com | 麻豆视频在线免费观看 | 久久99久久99精品中文字幕 | 91黄色免费网站 | 99精品免费网 | 免费日韩 精品中文字幕视频在线 | 精品视频在线播放 | 成 人 黄 色 视频 免费观看 | 黄色字幕网 | 久久综合婷婷 | 在线观看中文字幕一区二区 | 午夜婷婷在线观看 | 91精品无人成人www | 欧美日韩免费在线观看视频 | 亚洲视频在线免费观看 | 日韩理论片在线 | 成人久久18免费网站麻豆 | 射九九| 九九九九九国产 | 国产美女主播精品一区二区三区 | 亚洲区精品 | 一区二区理论片 | 五月激情av | 日韩视频在线观看免费 | 91在线一区二区 | 日韩黄色影院 | 免费黄色a网站 | 婷婷丁香六月 | 视频二区在线视频 | 久久这里只精品 | 久久久高清 | 亚洲免费av片 | 91在线最新| 亚洲一区网站 | 久久色亚洲| 国产99久久久国产精品免费看 | 日韩精品一区二区在线视频 | 一区 二区 精品 | 91亚洲精品久久久久图片蜜桃 | 97成人精品区在线播放 | 欧美日韩一级视频 | 亚洲国产精品500在线观看 | 久久激情综合网 | 亚洲国内在线 | 成人黄色短片 | 久久99热这里只有精品国产 | 国产亚洲综合精品 | av久久在线| 狠狠干美女 | 国产精品正在播放 | 亚洲日本一区二区在线 | 色噜噜狠狠狠狠色综合 | 日韩无在线 | 色婷婷av国产精品 | 日韩午夜电影网 | 又黄又刺激视频 | 色.www| 国产精品免费久久久久久久久久中文 | 亚洲综合小说 | 久久网页 | 又湿又紧又大又爽a视频国产 | 天天射天天艹 | 国产精品美女网站 | 日韩一区二区三区免费视频 | 久久久久久免费 | 日韩理论影院 | 日韩视频免费看 | 蜜桃av久久久亚洲精品 | 中中文字幕av | 在线99热| 日日夜夜精品免费 | 久久久网址 | 一级精品视频在线观看宜春院 | 亚洲精品自拍 | 国产无吗一区二区三区在线欢 | 国产精品手机看片 | 久久婷亚洲五月一区天天躁 | 亚洲精品视频久久 | 97手机电影网 | 91在线麻豆 | 精品一区精品二区高清 | 日本中文字幕高清 | 久久久久 免费视频 | 国产在线观看xxx | 婷婷精品国产一区二区三区日韩 | 国产视频1区2区3区 久久夜视频 | av观看免费在线 | 亚州视频在线 | 日本在线观看中文字幕无线观看 | 日本中文字幕视频 | 色婷婷精品大在线视频 | 国内偷拍精品视频 | 午夜精品婷婷 | 久久激情五月激情 | 亚洲精品99久久久久久 | 日日摸日日 | 亚洲精品xx| а天堂中文最新一区二区三区 | 亚洲日本色| 免费日韩 精品中文字幕视频在线 | 国产成人精品久 | 国产精品一区二区在线播放 | zzijzzij亚洲成熟少妇 | 国产亚洲亚洲 | 九七视频在线观看 | 九九久久久久久久久激情 | 国产美女视频免费观看的网站 | 丁香婷婷在线 | 丁香五月亚洲综合在线 | 日本aa在线| 99久久久久成人国产免费 | 国产做a爱一级久久 | 中文字幕久久久精品 | 欧美日韩精品在线观看 | 久久av观看 | 国产尤物在线观看 | 综合色中文 | 在线观看免费国产小视频 | 欧美性生活一级片 | 精品国产免费久久 | 欧美精品在线一区二区 | 麻豆视频www | 中文字幕在线播放一区二区 | 国产精品福利午夜在线观看 | 日韩aⅴ视频| 五月婷激情 | 国产精品美女久久久久久久网站 | 免费福利在线视频 | 日韩二区三区在线 | 日韩中文久久 | 国产一区视频在线 | 久久一区二区三区超碰国产精品 | 免费a v在线 | 超碰成人网 | 国产成人精品区 | 婷婷综合伊人 | 免费黄色小网站 | 热九九精品 | 久久综合狠狠综合久久激情 | 国产精品国产三级在线专区 | 久久99精品波多结衣一区 | 国产欧美日韩视频 | 日韩一级片网址 | 麻花豆传媒一二三产区 | 亚洲视频456 | www.夜夜爱 | 在线观看中文字幕2021 | 国产一区在线免费 | 欧美黄污视频 | a在线观看国产 | 国产精品免费观看久久 | 国产69精品久久久久99 | 国产精品一区二区三区电影 | 国产精品激情偷乱一区二区∴ | 成人黄色大片 | 亚洲国产精品女人久久久 | 国产婷婷色 | 三级av在线免费观看 | 天天干天天操天天爱 | 精品国产乱码一区二 | 欧美日韩在线视频观看 | 欧美日韩在线观看一区二区三区 | 亚洲情感电影大片 | 麻豆视频免费在线 | 精品一区二区免费视频 | 九九天堂 | 国产精品视频不卡 | 欧洲性视频 | 丰满少妇麻豆av | 久在线观看视频 | 不卡的av电影在线观看 | 精品久久久久久亚洲综合网 | 人人狠狠综合久久亚洲婷 | 久久免费看视频 | 91九色porny在线| 久久精品网址 | 少妇自拍av | 18性欧美xxxⅹ性满足 | 97视频在线观看视频免费视频 | 香蕉在线视频观看 | 中文字幕精品一区二区三区电影 | 精品久久精品 | 久久久久久久久久电影 | 99精品影视| 人人舔人人爱 | 中文字幕 国产专区 | 91视频免费国产 | 国产美腿白丝袜足在线av | 成人免费看片网址 | 久久污视频 | 中文字幕在线观看视频网站 | 天天做夜夜做 | 免费看一级特黄a大片 | 在线观看中文字幕亚洲 | 91看片在线观看 | 青青草在久久免费久久免费 | 女人18精品一区二区三区 | 992tv人人草 黄色国产区 | 免费观看性生活大片3 | 91插插视频 | 国产高清日韩 | 插久久| 免费韩国av| 视频一区在线免费观看 | 国产香蕉视频在线观看 | 久草在线最新免费 | 日韩一级黄色大片 | 精品久久久久久久久久 | 亚洲毛片在线观看. | 久久精品国产成人精品 | 色多多视频在线观看 | 久草在线 | 精品久久免费 | 97免费视频在线 | 久久精品麻豆 | 精品久久久久久国产 | 四虎国产精品成人免费影视 | 色综合天天爱 | 日韩精品免费专区 | 黄色小网站在线观看 | 日韩欧美在线一区二区 | 91av色| 国产高清无线码2021 | 日韩在线观看a | 久久理论电影 | 国产精品久久久久久久久蜜臀 | 91在线播放国产 | 婷婷色吧 | 国产精品福利无圣光在线一区 | 色www.| 97干com| 久久99国产精品久久 | 最近高清中文字幕 | 久久精品一二三区 | 狠狠插天天干 | 亚洲精欧美一区二区精品 | 日韩一二区在线 | 国产69精品久久久久久久久久 | 99久久99久久免费精品蜜臀 | 中文字幕在线视频一区二区三区 | 国产又粗又猛又色又黄视频 | 国产日本在线 | 日韩av一区二区在线 | 一区二区三区在线观看免费视频 | 91视频在线免费 | 国产在线看 | 中文字幕在线观看免费 | 久久理论电影网 | 午夜精品久久久久久久99 | 99久久精品免费看 | 91人人爽久久涩噜噜噜 | 99久久久久久久久 | 欧美激情精品久久久久久变态 | 天天干,天天射,天天操,天天摸 | 日韩激情精品 | 日韩高清三区 | 久久久免费毛片 | 国偷自产中文字幕亚洲手机在线 | 欧美极品少妇xxxxⅹ欧美极品少妇xxxx亚洲精品 | 日韩欧美精品免费 | av网址aaa | 激情五月婷婷激情 | 高清不卡一区二区三区 | 日韩精品中文字幕在线播放 | 91精品视频在线 | 黄av免费在线观看 | 日韩欧美高清视频在线观看 | 日本福利视频在线 | 天天操夜夜操天天射 | 韩国av免费| 国产成人久久av977小说 | 国产福利91精品一区 | 国产精品久久久视频 | 亚洲黄色在线观看 | 国产流白浆高潮在线观看 | 欧美成亚洲 | 青春草免费在线视频 | 亚洲黄色成人 | 九九在线高清精品视频 | 国产老熟 | 国产伦精品一区二区三区免费 | 国内精品久久久久久久影视简单 | 国产高清一 | 国产精品21区 | 天天操天天操天天操天天操天天操 | 九九视频免费观看视频精品 | 黄色电影网站在线观看 | 日韩av在线看 | 国产精品大全 | 最新日韩中文字幕 | 免费午夜网站 | 成人av电影免费在线观看 | 字幕网在线观看 | 久久超碰97 | 日韩免费视频线观看 | 久久久久久免费 | 日韩欧美国产精品 | 又紧又大又爽精品一区二区 | 亚洲理论片 | 涩涩色亚洲一区 | 久久久精品国产一区二区三区 | 在线亚洲观看 | 日韩欧美xxxx| 成+人+色综合 | 日韩精品视频免费看 | 国内精品在线一区 | 在线一区电影 | 福利视频 | 在线一区观看 | 国产高清av在线播放 | 亚洲婷婷在线视频 | 午夜男人影院 | 二区三区精品 | 亚洲热久久 | 手机看片午夜 | 亚洲一区免费在线 | 精品视频免费播放 | 天天操天天干天天干 | 808电影免费观看三年 | aaa毛片视频| 五月婷婷六月丁香 | 插久久| 国产三级av在线 | 在线观看日韩精品视频 | 国产在线黄 | 99久久精品久久久久久动态片 | 国产成人精品亚洲精品 | 精品国产乱码久久久久久天美 | 九九九九九九精品任你躁 | 国产小视频免费观看 | 91av看片| 国产日韩在线观看一区 | 黄色软件视频大全免费下载 | 久久国产综合视频 | 成人h电影| 波多野结衣在线播放一区 | 91综合色 | 九九99| 日韩网站在线免费观看 | 9999精品免费视频 | 成人亚洲免费 | 黄免费在线观看 | 看v片| 国产中文字幕三区 | 久久草网站 | 在线视频日韩一区 | 91麻豆精品国产自产在线 | 波多野结衣视频一区 | 亚洲综合涩 | 国产 亚洲 欧美 在线 | 日韩,精品电影 | 国产精品二区三区 | 亚洲精品在线观看免费 | 日韩精品91偷拍在线观看 | 日韩精品一区二区三区丰满 | 欧美精品小视频 | 日韩av五月天| 91观看视频 | 波多野结衣一区 | 二区三区在线观看 | 国产一区二区三区在线免费观看 | 永久免费毛片在线观看 | 国产一级在线看 | 亚洲免费观看在线视频 | 五月婷婷中文网 | 在线直播av | 亚洲视频1区2区 | 欧美一区二区精美视频 | 水蜜桃亚洲一二三四在线 | 在线观看免费版高清版 | 97视频在线观看视频免费视频 | 99久久精品免费看国产麻豆 | 欧美日韩aaaa | 精品在线视频一区二区三区 | 日韩在线无 | 日韩久久精品一区 | 在线观看韩国av | 久久精品国产精品亚洲 | 视频在线一区二区三区 | 中文字幕资源在线 | 超碰在线最新网址 | 日本韩国欧美在线观看 | 国产日韩精品一区二区三区在线 | 中文字幕色婷婷在线视频 | 69视频永久免费观看 | 国产在线日韩 | 2019中文最近的2019中文在线 | 国产亚洲成av片在线观看 | 国产福利资源 | 91网免费看 | 婷婷色五 | av资源在线观看 | 国产在线传媒 | 日韩中文免费视频 | 日韩av手机在线看 | 亚洲精品在线观看免费 | 国产日韩欧美中文 | 中文字幕免费观看视频 | 成人三级网址 | 美女视频黄的免费的 | 日韩在线第一区 | 亚洲播播 | 亚洲黄污| 久久精品91视频 | 粉嫩高清一区二区三区 | 特黄特色特刺激视频免费播放 | 国产精品日韩欧美 | 欧美 激情 国产 91 在线 | 黄色网中文字幕 | 成人av资源 | 日韩av电影网站在线观看 | 久久国产美女 | 在线观看一区 | 久操视频在线免费看 | 婷婷六月色 | 久久国产精品免费 | av免费线看| 国产主播大尺度精品福利免费 | 国产精品久久久久久久久免费看 | 91麻豆国产福利在线观看 | 天天插天天干 | 午夜国产一区 | 国产一区私人高清影院 | 亚洲片在线观看 | 国产午夜精品一区二区三区欧美 | 99久久综合精品五月天 | 国产免费大片 | 成人av高清在线 | 色婷婷综合久久久久中文字幕1 | 亚洲成人高清在线 | 精品国产精品国产偷麻豆 | 丝袜精品视频 | 国产乱码精品一区二区三区介绍 | 成人av免费在线看 | 久久九九国产视频 | 色网站在线观看 | 免费在线色视频 | 国产96在线观看 | 亚洲视频,欧洲视频 | 国产亚洲免费的视频看 | 青青河边草免费观看完整版高清 | 91久久久久久久一区二区 | 久久综合欧美精品亚洲一区 | 国产精品久久艹 | 福利一区二区 | 色婷婷福利视频 | 黄色av观看 | 国产高清日韩 | 国产综合在线观看视频 | 韩日精品在线 | 日韩二区在线播放 | 久久精品91视频 | 久久久精品欧美一区二区免费 | 91av视频在线播放 | 亚洲精品福利在线观看 | 免费91在线观看 | 久久无码av一区二区三区电影网 | 亚洲桃花综合 | 精品国产精品久久 | 综合国产视频 | a色视频 | 欧产日产国产69 | 国产一级三级 | 西西人体www444 | 黄色片网站av | 狠狠的干狠狠的操 | 亚洲伦理中文字幕 | 五月婷婷久久丁香 | 精品国产91亚洲一区二区三区www | 黄色在线成人 | 欧美午夜a| 在线精品视频免费观看 | 亚洲精品777| 黄色av电影在线 | 在线免费观看av网站 | 国产99久久久国产精品 | 视频国产一区二区三区 | 国产婷婷色 | 精品免费久久久久久 | 手机av在线网站 | 最新久久免费视频 | 中文字幕字幕中文 | 欧美精品做受xxx性少妇 | 99视频偷窥在线精品国自产拍 | 国产不卡毛片 | 美女视频久久 | 超碰在线最新网址 | 中文字幕久久精品 | 国产原创91 | 久久高清免费观看 | 国产精品一区二区白浆 | 日本女人的性生活视频 | 97国产在线视频 | 中文字幕亚洲在线观看 | 午夜av一区 | 色偷偷人人澡久久超碰69 | 国产免码va在线观看免费 | 亚洲国产成人高清精品 | 免费在线观看日韩 | 三级av免费观看 | 国产一区免费在线 | 婷婷在线精品视频 | 久久久人| 日韩在线观看的 | 国产精品自产拍在线观看网站 | 久久视频这里只有精品 | 久久97超碰 | 亚洲一级片在线看 | 91精品啪在线观看国产线免费 | 久99视频| 69亚洲精品 | 国产精品日韩在线观看 | 一区二区三区精品在线视频 | 在线观看中文字幕dvd播放 | 天天搞天天干天天色 | 免费福利在线视频 | 国产精品国产三级国产aⅴ无密码 | 在线免费高清视频 | 丁香六月av | 丝袜美腿亚洲综合 | 欧美久久影院 | 国产精品中文字幕在线播放 | av丝袜在线| 国产欧美在线一区 | 18国产精品福利片久久婷 | www五月| 日韩精品一区二区在线 | 香蕉视频免费看 | 亚洲人人爱 | 91精品啪| 美女精品网站 | 91精品成人久久 | 国产成人精品午夜在线播放 | 国产精品久久久久9999吃药 | 97免费视频在线播放 | 亚洲国产欧美一区二区三区丁香婷 | 伊人伊成久久人综合网站 | 91自拍91| www,黄视频| 国产99久久久国产精品免费看 | 亚洲免费婷婷 | 在线 精品 国产 | 日韩精品在线观看视频 | 99色在线视频| 亚洲国产精品久久久 | 成人一级影视 | 99久久精品久久久久久动态片 | 久久国产一区 | 久久久久精 | 91九色免费视频 | 日本中文字幕电影在线免费观看 | 特级毛片网站 | 亚洲国产三级在线 | 国产精品久久久久久模特 | 国产精品99久久久久久有的能看 | 国产成人精品女人久久久 | 日本精品在线 | 婷婷在线观看视频 | 狠狠ri| 精品国产免费av | 在线视频 成人 | 久久精品高清视频 | 久久伊人精品天天 | 香蕉视频91 | 亚洲福利精品 | 免费看片在线观看 | 国产99久久精品一区二区300 | 91视频在线观看下载 | 国产在线观看网站 | 日批网站在线观看 | 亚洲免费视频观看 | 欧美在线18 | 日本公妇在线观看 | 婷婷色网址 | 国产一级特黄毛片在线毛片 | 日韩在线视频免费播放 | 久久九九影视 | 久久夜色精品国产欧美一区麻豆 | 久久久久国产一区二区三区 | wwwww.国产| 久久久精品国产免费观看一区二区 | 亚洲理论视频 | 日韩免费视频一区二区 | 91麻豆传媒 | 国产玖玖精品视频 | 亚洲免费观看在线视频 | 欧美亚洲国产日韩 | 国产午夜精品一区二区三区四区 | 中文一区在线 | 国产精品久久久久久久7电影 | 成人a在线观看 | 久久69精品久久久久久久电影好 | 青草视频在线看 | 精品国内自产拍在线观看视频 | 九月婷婷色| av在线8 | 九九视频免费观看视频精品 | japanese黑人亚洲人4k | 国产精品乱码久久久久 | 亚洲综合爱 | 国产精品久久久久久久久久免费看 | 久久久久一区二区三区四区 | 免费在线观看视频一区 | 五月婷婷色播 | 91精品国产欧美一区二区 | 国产一区二区免费在线观看 | 日韩一区二区三区高清免费看看 | 最近中文字幕mv免费高清在线 | 欧美做受69 | 国产成人在线观看 | 国产最新精品视频 | 久久99国产一区二区三区 | 91大神精品视频在线观看 | 国产大陆亚洲精品国产 | 国产探花视频在线播放 | 久久久久久久久久久久电影 | 国模一二三区 | 中文视频在线看 | 狠狠干天天射 | 日日夜夜天天 | 久操操| 成人免费视频免费观看 | 久久涩涩网站 | 99精品电影 | a在线免费观看视频 | 国产视频一区精品 | 久久99国产综合精品免费 | 国产视频 久久久 | 中文字幕在线视频一区二区三区 | 成人国产精品一区二区 | 国产小视频在线免费观看视频 | 国产免费av一区二区三区 | 久久久私人影院 | 久久一区二区三区国产精品 | 91成年人在线观看 | 一区中文字幕在线观看 | 麻豆影视在线免费观看 | 亚洲精品黄色片 | 国产在线超碰 | 97操碰| 色婷婷狠狠 | 天堂av影院 | 夜夜夜夜猛噜噜噜噜噜初音未来 | 亚洲欧洲久久久 | 日本中文字幕观看 | 国产一区网址 | 四虎免费av | 精品国产99国产精品 | 亚洲国产精品电影在线观看 | 五月天激情综合 | 91女人18片女毛片60分钟 | 国产又粗又猛又爽 | www最近高清中文国语在线观看 | 在线va网站 | 国产老妇av | 最近中文字幕高清字幕免费mv | 日韩在线大片 | 精品国产aⅴ一区二区三区 在线直播av | 国产又粗又长又硬免费视频 | 久久久国产成人 | 日韩一区二区三区高清免费看看 | 久久国产精品99久久久久久丝袜 | 在线精品视频免费播放 | 热99久久精品 | 久久精品精品电影网 | 日韩xxxbbb | 国产精品久久婷婷六月丁香 | av免费看在线 | 亚洲精品国产精品国自产 | 中文字幕av免费在线观看 | 香蕉视频国产在线 | 久久精品视频中文字幕 | 亚洲精区二区三区四区麻豆 | 人人澡av | 美女视频久久久 | 天天干天天想 | 天天干,天天射,天天操,天天摸 | 国产黄色视 | 天天躁天天狠天天透 | 国产精品3| 欧美va天堂va视频va在线 | 国产视频1区2区 | 免费看黄色大全 | 国产黄大片在线观看 | 欧洲亚洲国产视频 | 国产无区一区二区三麻豆 | 色瓜| 99热日本| 免费视频久久久久久久 | 午夜精品一区二区三区在线视频 | 成人在线视频一区 | 精品久久综合 | 99久久久| 日本婷婷色 | 精品一区二区在线免费观看 | 9在线观看免费高清完整版在线观看明 | 久久亚洲综合国产精品99麻豆的功能介绍 | 国产精品2019 | 99久久婷婷国产综合亚洲 | 亚洲 欧美变态 另类 综合 | 超级碰99| 草久久精品 | 人人玩人人添人人澡超碰 | 精品在线一区二区三区 | 麻豆国产露脸在线观看 | 精品国产伦一区二区三区免费 | 黄色精品免费 | 欧美另类网站 | 99久久精品国产一区二区三区 | 一区二区视频电影在线观看 | 中文成人字幕 | 天天射射天天 | 黄av资源 | 国产精品黄网站在线观看 | 亚洲国产精品影院 | 国产亚洲91 | 97电影手机 | av免费电影在线观看 | 午夜一级免费电影 | 一区中文字幕在线观看 | 丝袜美腿一区 | av不卡免费看 | 国产99在线播放 | 精品一区二区三区电影 | 国产无套视频 | 91在线在线观看 | 天天操天天射天天爽 | 亚洲精品美女在线观看 | 中文字幕在线视频一区二区三区 | 性色av香蕉一区二区 | 国产黄色精品网站 | 久久精品视频网址 | 国产精品99蜜臀久久不卡二区 | 91在线区 | 白丝av在线 | 黄色精品网站 | 在线播放视频一区 | 不卡av电影在线观看 | 69精品在线观看 | 91精品国自产在线观看欧美 | 丁香在线观看完整电影视频 | 97超级碰碰碰视频在线观看 | 日韩,中文字幕 | 亚洲国产美女精品久久久久∴ | 操操操影院 | 色婷婷88av视频一二三区 | 国产精品久久久久久五月尺 | 久久久久久久久亚洲精品 | 亚洲在线资源 | 日日天天干| 综合久久一本 | 又黄又爽又色无遮挡免费 | 日韩免费av网址 | 日韩在线观看一区二区三区 | av青草| 色综合色综合色综合 | 狠狠色网| 国产精品精品久久久 | 天堂激情网 | 狠狠色丁香九九婷婷综合五月 | 免费观看视频的网站 | 亚洲国产剧情av | 人人爽人人爽人人片av | 亚洲激情在线视频 | 午夜视频免费在线观看 | 成人99免费视频 | 亚洲美女视频在线 | 亚洲精品久久久蜜桃直播 | 国产精品久久99综合免费观看尤物 | 国产精品视频永久免费播放 | 欧美性色xo影院 | 亚洲无吗天堂 | 99精品在这里 | 国产精品高潮呻吟久久久久 | 天天玩夜夜操 | 9999在线 | 久久精品伊人 | 中文字幕成人一区 | 免费看一及片 | 天天操天天射天天 | 中文字幕乱在线伦视频中文字幕乱码在线 | 日本精品va在线观看 | 免费合欢视频成人app | 国产精品一区二区在线免费观看 | 亚洲免费精品一区二区 | 在线观看91久久久久久 | 国产在线一区观看 | 欧美激情视频一区 | 超碰在线最新网址 | 日韩欧美国产激情在线播放 | 国产中文字幕久久 | 五月亚洲 | 91亚洲精品国偷拍自产在线观看 | 国产亚洲综合在线 | 高清在线一区二区 | 欧美aa一级 | 激情文学丁香 | 欧美激情精品久久久久久 | 网站在线观看日韩 | 波多在线视频 | 久久综合给合久久狠狠色 | 中文字幕一区二区三区乱码不卡 | 人人射人人插 | 怡春院av| av福利在线免费观看 | 欧美一级电影片 | 免费在线国产视频 | 久久精品一区二区三区视频 | 视频在线91| 91av官网 | 久久久久久久久久久久影院 | 91精品视频免费看 | 亚洲黄a| 国产91亚洲精品 | 很黄很污的视频网站 | 国产精品 中文在线 | 美女视频久久黄 | 99国产视频在线 | 一区在线观看 | 亚洲精品人人 | 亚洲欧美日韩精品一区二区 | 狠狠操狠狠插 | www久久 | 国产精品一区二区久久精品爱微奶 | 天天操综 | 亚洲日本va午夜在线电影 | 欧美在线视频一区二区三区 | 在线国产视频观看 | 久久成人高清视频 | 最新亚洲视频 | 久久久久亚洲精品中文字幕 | 国产 视频 高清 免费 | 中文av在线免费观看 | 国产精品专区h在线观看 | 国产精品a久久 | 免费a一级 | 九九九九九精品 | 国产伦理一区二区三区 | 欧美日韩视频在线观看免费 | 久草在线免费资源 | 日韩亚洲精品电影 | 激情综合啪 | 999ZYZ玖玖资源站永久 | 探花视频在线观看 | 亚洲最大av网站 | 日韩二区在线 | 在线 视频 一区二区 | 亚洲一区二区精品在线 | 超碰在线网 | 精品99999| 久久乱码卡一卡2卡三卡四 五月婷婷久 | 久久久久久久久久久久影院 | a精品视频| 色妞久久福利网 |