免费国产精品自在自线-91精品国产色综合久久久浪潮-99热久久免费频精品-国产精品国模在线观看-久久亚洲国产精品成人?V秋霞-久久国产一级A片免费播放-亚洲国产欧洲综合97久久-久久国产白嫩美女呻吟高潮

ARTICLE DETAIL

資訊詳情

深耕商務(wù)建站與企業(yè)官網(wǎng)運(yùn)營(yíng)的一線實(shí)戰(zhàn)洞察。

URP Renderer Feature實(shí)現(xiàn)角色描邊:原理、實(shí)現(xiàn)與優(yōu)化全解析

URP Renderer Feature實(shí)現(xiàn)角色描邊:原理、實(shí)現(xiàn)與優(yōu)化全解析 1. 項(xiàng)目概述為什么URP的Renderer Feature是角色描邊的“新寵”在Unity的渲染管線里給角色加個(gè)描邊聽(tīng)起來(lái)是個(gè)老生常談的需求了。從早期的固定管線到內(nèi)置渲染管線大家可能都用過(guò)諸如“復(fù)制模型放大背面剔除”或者“基于屏幕后處理的Sobel算子”這些經(jīng)典方案。但自從Universal Render PipelineURP成為Unity官方主推的輕量級(jí)高清管線后整個(gè)渲染邏輯和擴(kuò)展方式都變了。如果你還在用老方法往URP項(xiàng)目里硬套大概率會(huì)遇到各種兼容性問(wèn)題比如渲染順序錯(cuò)亂、半透明物體穿幫或者性能開(kāi)銷不受控。這個(gè)項(xiàng)目的核心就是利用URP管線獨(dú)有的Renderer Feature機(jī)制來(lái)打造一個(gè)專屬于URP的、高質(zhì)量且可控的角色描邊特效。Renderer Feature是什么你可以把它理解為一個(gè)“可插拔的渲染插件”。URP渲染一幀畫面會(huì)按順序執(zhí)行一系列“渲染事件”Render Pass比如渲染不透明物體、渲染天空盒、渲染透明物體等。Renderer Feature允許你在這些預(yù)定義的事件之間插入你自己定制的渲染通道Pass去繪制額外的內(nèi)容。這比老的內(nèi)置管線里通過(guò)腳本動(dòng)態(tài)修改材質(zhì)或攝像機(jī)要優(yōu)雅和高效得多。那么用Renderer Feature做描邊好在哪里第一是隔離性。描邊的渲染邏輯被封裝在一個(gè)獨(dú)立的Feature里不會(huì)污染主場(chǎng)景的渲染狀態(tài)管理和調(diào)試都清晰。第二是可控性。你可以精確控制描邊在哪個(gè)渲染階段執(zhí)行比如在所有不透明物體之后但在透明物體之前完美解決渲染順序問(wèn)題。第三是性能可預(yù)期。因?yàn)槭枪芫€原生支持避免了腳本驅(qū)動(dòng)可能帶來(lái)的每幀開(kāi)銷和GC垃圾回收壓力。對(duì)于需要突出角色、實(shí)現(xiàn)卡通渲染Cel Shading、或者做角色選中高亮反饋的游戲來(lái)說(shuō)這是一個(gè)既現(xiàn)代又實(shí)用的技術(shù)方案。接下來(lái)我會(huì)帶你從零開(kāi)始拆解如何設(shè)計(jì)這個(gè)Renderer Feature編寫配套的Shader并處理各種實(shí)戰(zhàn)中一定會(huì)遇到的“坑”。無(wú)論你是剛接觸URP的開(kāi)發(fā)者還是想優(yōu)化現(xiàn)有描邊方案的老手這篇內(nèi)容都能給你一套可直接復(fù)用的完整解決方案。2. 核心思路與方案選型從“怎么做”到“為什么這么做”在動(dòng)手寫代碼之前我們先得把思路理清楚。描邊的本質(zhì)是在物體原有輪廓的外圍額外繪制一圈顏色。在URP的語(yǔ)境下實(shí)現(xiàn)這個(gè)目標(biāo)有幾條路徑我們需要做出選擇。2.1 常見(jiàn)描邊方案對(duì)比基于法線外擴(kuò)的頂點(diǎn)著色器方案這是最經(jīng)典、性能通常也最好的方法。在頂點(diǎn)著色器階段沿著頂點(diǎn)法線Normal方向?qū)㈨旤c(diǎn)位置向外擠出Expand。然后用一個(gè)純色或簡(jiǎn)單著色的Pass來(lái)渲染這個(gè)“膨脹”后的模型作為描邊層。優(yōu)點(diǎn)原理簡(jiǎn)單計(jì)算在頂點(diǎn)階段完成片元著色器負(fù)擔(dān)輕性能高。描邊寬度均勻風(fēng)格化強(qiáng)。缺點(diǎn)在模型硬邊比如立方體邊緣或法線不連續(xù)的地方描邊會(huì)斷裂。對(duì)復(fù)雜輪廓如頭發(fā)、飄帶的表現(xiàn)可能不精準(zhǔn)?;谄聊缓筇幚淼倪吘墮z測(cè)方案在全部場(chǎng)景渲染完成后對(duì)最終的屏幕圖像Color Buffer進(jìn)行處理利用如Sobel、Roberts等算子檢測(cè)顏色或深度的突變邊緣然后給這些邊緣上色。優(yōu)點(diǎn)屏幕空間操作與場(chǎng)景物體數(shù)量無(wú)關(guān)性能相對(duì)穩(wěn)定。能檢測(cè)出所有物體的邊緣包括非模型邊緣如顏色突變。缺點(diǎn)描邊質(zhì)量受屏幕分辨率影響可能有鋸齒。無(wú)法區(qū)分“我們想要的角色描邊”和“場(chǎng)景中其他物體的邊緣”容易產(chǎn)生大量雜訊。實(shí)現(xiàn)全屏后處理本身有一定開(kāi)銷?;谳喞€渲染Silhouette Rendering的方案例如在幾何著色器中生成輪廓線或者渲染物體背面作為輪廓。這在一些專業(yè)渲染中常用但在移動(dòng)端或URP中支持度有限或?qū)崿F(xiàn)復(fù)雜。對(duì)于強(qiáng)調(diào)風(fēng)格化、需要明確區(qū)分角色與背景、且對(duì)性能有要求的游戲尤其是移動(dòng)端基于法線外擴(kuò)的頂點(diǎn)著色器方案通常是首選。它效果穩(wěn)定、開(kāi)銷可控并且能通過(guò)Renderer Feature完美地集成到URP管線中實(shí)現(xiàn)“只對(duì)特定角色”進(jìn)行描邊而不影響其他物體。因此本項(xiàng)目將采用這一方案。2.2 Renderer Feature的設(shè)計(jì)策略我們的目標(biāo)是創(chuàng)建一個(gè)Renderer Feature它能夠篩選出場(chǎng)景中需要描邊的角色例如所有帶有“Character”標(biāo)簽或使用了特定材質(zhì)的Renderer然后在主場(chǎng)景的不透明物體繪制完畢后用我們自定義的Shader專門為這些角色渲染一層描邊。這里的關(guān)鍵設(shè)計(jì)點(diǎn)在于渲染隊(duì)列Render Queue和渲染目標(biāo)Render Target的管理。時(shí)機(jī)描邊應(yīng)該畫在哪兒如果畫在背景之前背景會(huì)蓋住描邊如果畫在角色自身之后半透明的部分如頭發(fā)發(fā)梢可能會(huì)和描邊混合出錯(cuò)。一個(gè)穩(wěn)妥的時(shí)機(jī)是在所有不透明物體渲染之后天空盒和透明物體渲染之前。在URP中這對(duì)應(yīng)著RenderPassEvent.BeforeRenderingTransparents這個(gè)事件。目標(biāo)描邊畫到哪里去直接畫到攝像機(jī)的主顏色緩沖區(qū)Camera Color Buffer嗎不行因?yàn)榇藭r(shí)主顏色緩沖區(qū)已經(jīng)包含了角色本身的顏色直接疊加描邊會(huì)導(dǎo)致混合問(wèn)題。更專業(yè)的做法是我們的Renderer Feature自己申請(qǐng)一個(gè)臨時(shí)的渲染紋理Render Texture先在這個(gè)“畫布”上單獨(dú)繪制所有描邊然后再通過(guò)一個(gè)Blit操作將描邊紋理與主顏色緩沖區(qū)以合適的混合模式如Alpha Blend合成。這給了我們更大的控制權(quán)。篩選如何告訴Renderer Feature“只畫這幾個(gè)角色”我們可以在需要描邊的物體上掛載一個(gè)特定的腳本組件如OutlineTarget或者在材質(zhì)上使用一個(gè)特定的渲染層Render Layer。Renderer Feature在渲染時(shí)會(huì)遍歷所有Renderer檢查其是否滿足條件只對(duì)符合條件的物體執(zhí)行描邊繪制?;谝陨戏治鑫覀兊募夹g(shù)棧就明確了一個(gè)自定義的URP Renderer Feature 一個(gè)基于法線外擴(kuò)的Unlit Shader Graph或HLSL Shader。3. 完整實(shí)現(xiàn)從創(chuàng)建Renderer Feature到編寫Shader理論說(shuō)得差不多了我們直接進(jìn)入實(shí)戰(zhàn)環(huán)節(jié)。我會(huì)假設(shè)你使用Unity 2022.3 LTS版本和對(duì)應(yīng)的URP 14.x。3.1 第一步創(chuàng)建描邊專用的Shader與材質(zhì)首先我們需要一個(gè)用來(lái)畫描邊的Shader。這個(gè)Shader不需要光照、不需要復(fù)雜紋理核心任務(wù)就是頂點(diǎn)外擴(kuò)和輸出單一顏色。方案A使用Shader Graph可視化推薦新手在Project窗口右鍵 - Create - Shader Graph - URP - Unlit Shader Graph命名為OutlineShaderGraph。打開(kāi)Graph編輯器。頂點(diǎn)外擴(kuò)添加一個(gè)Normal Vector節(jié)點(diǎn)獲取模型空間法線。添加一個(gè)Multiply節(jié)點(diǎn)將法線向量與一個(gè)Float屬性如_OutlineWidth默認(rèn)值0.05相乘得到外擴(kuò)向量。添加一個(gè)Position節(jié)點(diǎn)空間設(shè)置為Object將其與上一步的外擴(kuò)向量用Add節(jié)點(diǎn)相加。將相加后的結(jié)果連接到主節(jié)點(diǎn)的Position輸入端口。顏色輸出添加一個(gè)Color屬性如_OutlineColor默認(rèn)紅色。將其直接連接到主節(jié)點(diǎn)的Base Color端口。將主節(jié)點(diǎn)的Alpha值設(shè)置為1確保不透明。保存Graph。Unity會(huì)自動(dòng)生成一個(gè).shader文件。方案B手寫HLSL Shader更靈活性能微調(diào)空間大創(chuàng)建一個(gè)新的.shader文件例如OutlineShader.hlsl實(shí)際是.shader文件內(nèi)容如下Shader Custom/Outline { Properties { _OutlineColor (Outline Color, Color) (1, 0, 0, 1) _OutlineWidth (Outline Width, Range(0, 0.1)) 0.05 } SubShader { Tags { RenderTypeOpaque RenderPipelineUniversalPipeline QueueGeometry1 // 確保在不透明隊(duì)列之后渲染 } Pass { Name OutlinePass Cull Front // 關(guān)鍵剔除正面只渲染背面這是實(shí)現(xiàn)外擴(kuò)描邊的常用技巧 ZWrite Off // 通常描邊不需要寫入深度避免深度沖突但根據(jù)需求可調(diào)整 // ZTest Always 或 LEqual根據(jù)情況選擇通常用Always確保描邊總被繪制 HLSLPROGRAM #pragma vertex vert #pragma fragment frag #include Packages/com.unity.render-pipelines.universal/ShaderLibrary/Core.hlsl struct Attributes { float4 positionOS : POSITION; float3 normalOS : NORMAL; }; struct Varyings { float4 positionHCS : SV_POSITION; }; CBUFFER_START(UnityPerMaterial) float4 _OutlineColor; float _OutlineWidth; CBUFFER_END Varyings vert(Attributes IN) { Varyings OUT; // 將頂點(diǎn)和法線轉(zhuǎn)換到世界空間或觀察空間在外擴(kuò)后再投影 VertexPositionInputs vertexInput GetVertexPositionInputs(IN.positionOS.xyz); VertexNormalInputs normalInput GetVertexNormalInputs(IN.normalOS); // 在觀察空間View Space進(jìn)行外擴(kuò)效果更穩(wěn)定 float3 viewPos vertexInput.positionVS; float3 viewNormal normalInput.normalWS; // 注意GetVertexNormalInputs返回的是世界空間法線 // 需要將世界空間法線轉(zhuǎn)換到觀察空間 viewNormal mul((float3x3)UNITY_MATRIX_V, viewNormal); viewNormal normalize(viewNormal); // 沿法線方向外擴(kuò) viewPos viewNormal * _OutlineWidth; // 將外擴(kuò)后的觀察空間位置轉(zhuǎn)換到齊次裁剪空間 OUT.positionHCS mul(UNITY_MATRIX_P, float4(viewPos, 1.0)); return OUT; } half4 frag(Varyings IN) : SV_Target { return _OutlineColor; } ENDHLSL } } }注意這里使用了Cull Front剔除正面。因?yàn)槲覀兪菍㈨旤c(diǎn)沿法線外擴(kuò)渲染這個(gè)外擴(kuò)的模型時(shí)如果像正常物體一樣剔除背面我們看到的將是模型內(nèi)部而不是外擴(kuò)的輪廓。剔除正面后我們渲染的是外擴(kuò)模型的“內(nèi)表面”這個(gè)內(nèi)表面恰好包裹在原模型外部形成了描邊。這是該技巧的核心。創(chuàng)建好Shader后在Project中右鍵該Shader - Create - Material生成對(duì)應(yīng)的材質(zhì)球命名為OutlineMat。你可以在這個(gè)材質(zhì)球上調(diào)整描邊顏色和寬度。3.2 第二步創(chuàng)建自定義Renderer Feature這是項(xiàng)目的核心。在Scripts文件夾下創(chuàng)建C#腳本OutlineRendererFeature.cs。using UnityEngine; using UnityEngine.Rendering; using UnityEngine.Rendering.Universal; public class OutlineRendererFeature : ScriptableRendererFeature { // 定義一個(gè)可序列化的類來(lái)存放Feature的設(shè)置方便在Inspector中調(diào)整 [System.Serializable] public class Settings { public Material overrideMaterial null; // 指定描邊材質(zhì)如果為null則使用Renderer自帶的材質(zhì) public LayerMask outlineLayerMask -1; // 指定哪些層的物體需要描邊默認(rèn)為所有層 public RenderPassEvent renderPassEvent RenderPassEvent.BeforeRenderingTransparents; } public Settings settings new Settings(); // 自定義的RenderPass負(fù)責(zé)執(zhí)行具體的描邊繪制 class OutlineRenderPass : ScriptableRenderPass { private ProfilingSampler m_ProfilingSampler new ProfilingSampler(OutlinePass); private Material m_OverrideMaterial; private LayerMask m_LayerMask; private FilteringSettings m_FilteringSettings; // 用于存儲(chǔ)需要渲染的Renderer列表 private ListRenderer m_Renderers new ListRenderer(); public OutlineRenderPass(Material overrideMaterial, LayerMask layerMask, RenderPassEvent evt) { m_OverrideMaterial overrideMaterial; m_LayerMask layerMask; m_FilteringSettings new FilteringSettings(RenderQueueRange.opaque, layerMask); this.renderPassEvent evt; } // 每幀執(zhí)行主要的渲染邏輯在這里 public override void Execute(ScriptableRenderContext context, ref RenderingData renderingData) { // 使用ProfilingScope便于在Frame Debugger中查看性能開(kāi)銷 CommandBuffer cmd CommandBufferPool.Get(); using (new ProfilingScope(cmd, m_ProfilingSampler)) { // 1. 清空列表查找所有需要描邊的Renderer m_Renderers.Clear(); // 這里簡(jiǎn)化處理查找所有符合層掩碼的Renderer。 // 更優(yōu)化的做法是讓需要描邊的物體主動(dòng)注冊(cè)例如通過(guò)一個(gè)單例管理器。 var renderers GameObject.FindObjectsOfTypeRenderer(); foreach (var renderer in renderers) { if (((1 renderer.gameObject.layer) m_LayerMask) ! 0) { m_Renderers.Add(renderer); } } // 2. 設(shè)置渲染狀態(tài)使用我們指定的材質(zhì)覆蓋并設(shè)置剔除模式為正面剔除 var drawSettings CreateDrawingSettings(new ShaderTagId(UniversalForward), ref renderingData, SortingCriteria.CommonOpaque); if (m_OverrideMaterial ! null) { drawSettings.overrideMaterial m_OverrideMaterial; drawSettings.overrideMaterialPassIndex 0; // 使用材質(zhì)的第一個(gè)Pass } // 關(guān)鍵設(shè)置渲染狀態(tài)為剔除正面Cull Front與Shader中的Cull Front對(duì)應(yīng) var stateBlock new RenderStateBlock(RenderStateMask.Cull); stateBlock.cullState new CullState(CullMode.Front); // 3. 逐個(gè)渲染找到的Renderer foreach (var renderer in m_Renderers) { // 創(chuàng)建一個(gè)FilteringSettings只渲染這個(gè)特定的Renderer var filterSettings new FilteringSettings(RenderQueueRange.opaque); filterSettings.layerMask 1 renderer.gameObject.layer; // 這里需要獲取renderer的sharedMaterial的渲染隊(duì)列更精確的過(guò)濾可以基于此 // 簡(jiǎn)化起見(jiàn)我們假設(shè)它們都在不透明隊(duì)列 // 使用context.DrawRenderers來(lái)繪制 context.DrawRenderers(renderingData.cullResults, ref drawSettings, ref filterSettings, ref stateBlock); // 注意上面的簡(jiǎn)化調(diào)用在實(shí)際復(fù)雜場(chǎng)景中可能不準(zhǔn)確。 // 更健壯的做法是使用renderingData.cullResults.GetCullingResults()和CreateDrawingSettings配合FilteringSettings來(lái)批量繪制。 // 為了清晰演示原理此處使用循環(huán)。性能敏感項(xiàng)目應(yīng)優(yōu)化為批量繪制。 } } // 執(zhí)行命令緩沖區(qū)并釋放 context.ExecuteCommandBuffer(cmd); CommandBufferPool.Release(cmd); } } private OutlineRenderPass m_OutlinePass; // 在Renderer Feature創(chuàng)建時(shí)調(diào)用用于初始化Render Pass public override void Create() { if (m_OutlinePass null) { m_OutlinePass new OutlineRenderPass(settings.overrideMaterial, settings.outlineLayerMask, settings.renderPassEvent); } } // 每幀渲染前調(diào)用將我們的Pass加入到渲染隊(duì)列中 public override void AddRenderPasses(ScriptableRenderer renderer, ref RenderingData renderingData) { if (settings.overrideMaterial null) { Debug.LogWarning(Outline Renderer Feature 需要指定一個(gè)描邊材質(zhì)。); return; } renderer.EnqueuePass(m_OutlinePass); } }3.3 第三步配置URP Renderer Asset在Project中找到你的URP Renderer Asset通常名為UniversalRenderPipelineAsset_Renderer或類似。選中它在Inspector窗口中找到Renderer Features列表點(diǎn)擊Add Renderer Feature按鈕。從下拉菜單中選擇我們剛創(chuàng)建的OutlineRendererFeature。在新增的Feature配置中將Override Material拖拽賦值為我們之前創(chuàng)建的OutlineMat材質(zhì)球。通過(guò)Outline Layer Mask選擇你希望哪些層的物體被描邊例如你可以創(chuàng)建一個(gè)名為“Outline”的層并將角色放在這一層。3.4 第四步應(yīng)用到角色并測(cè)試將你的角色模型放入場(chǎng)景。確保角色模型所在的層被包含在OutlineRendererFeature的Layer Mask中。運(yùn)行游戲你應(yīng)該能看到角色被紅色的描邊所包圍。調(diào)整材質(zhì)球上的_OutlineWidth和_OutlineColor屬性可以實(shí)時(shí)改變描邊的粗細(xì)和顏色。4. 深度優(yōu)化與高級(jí)技巧基礎(chǔ)的描邊跑起來(lái)了但離“實(shí)戰(zhàn)可用”還有距離。下面這些優(yōu)化點(diǎn)和技巧是區(qū)分普通實(shí)現(xiàn)和高質(zhì)量實(shí)現(xiàn)的關(guān)鍵。4.1 解決描邊斷裂與平滑問(wèn)題問(wèn)題在模型硬邊或低模上法線外擴(kuò)會(huì)導(dǎo)致描邊在拐角處斷裂或不平滑。解決方案平滑頂點(diǎn)法線在3D建模軟件中導(dǎo)出模型時(shí)確保勾選“平滑頂點(diǎn)”或“導(dǎo)出平滑組”。在Unity中導(dǎo)入模型后可以在Model Import Settings中勾選Normals-Calculate或Import。在Shader中使用平滑法線如果模型本身沒(méi)有平滑法線可以在Shader中嘗試使用頂點(diǎn)位置差來(lái)近似計(jì)算平滑法線但這會(huì)提高Shader復(fù)雜度。更實(shí)用的方法是在建模階段就處理好。調(diào)整外擴(kuò)空間我們?cè)赟hader示例中是在**觀察空間View Space**進(jìn)行外擴(kuò)。相比在模型空間Object Space或裁剪空間Clip Space外擴(kuò)觀察空間外擴(kuò)能提供更穩(wěn)定的、與攝像機(jī)距離無(wú)關(guān)的描邊寬度感透視校正更好。這是推薦的做法。4.2 性能優(yōu)化如何高效管理大量描邊物體上面示例中的OutlineRenderPass.Execute方法使用了GameObject.FindObjectsOfTypeRenderer()這在每幀執(zhí)行是性能災(zāi)難。絕對(duì)不能用于正式項(xiàng)目。優(yōu)化方案使用注冊(cè)機(jī)制創(chuàng)建一個(gè)單例管理器OutlineManager。讓需要描邊的物體在OnEnable()時(shí)向管理器注冊(cè)自己添加其Renderer引用在OnDisable()時(shí)注銷。在OutlineRenderPass中不再使用FindObjectsOfType而是直接從OutlineManager獲取已注冊(cè)的Renderer列表。// 簡(jiǎn)化的管理器示例 public class OutlineManager : MonoBehaviour { public static OutlineManager Instance; public HashSetRenderer outlineRenderers new HashSetRenderer(); void Awake() { Instance this; } public static void Register(Renderer renderer) { Instance?.outlineRenderers.Add(renderer); } public static void Unregister(Renderer renderer) { Instance?.outlineRenderers.Remove(renderer); } } // 掛在需要描邊的物體上的組件 public class OutlineTarget : MonoBehaviour { private Renderer m_Renderer; void OnEnable() { m_Renderer GetComponentRenderer(); OutlineManager.Register(m_Renderer); } void OnDisable() { if (m_Renderer ! null) OutlineManager.Unregister(m_Renderer); } }然后在OutlineRenderPass.Execute中遍歷OutlineManager.Instance.outlineRenderers即可。這樣查找開(kāi)銷是O(1)。4.3 處理透明與深度測(cè)試沖突問(wèn)題描邊Pass開(kāi)啟了ZWrite Off不寫入深度但如果場(chǎng)景中有其他半透明物體在角色后面描邊可能會(huì)錯(cuò)誤地畫在這些半透明物體前面。解決方案這是一個(gè)經(jīng)典的渲染順序問(wèn)題。我們的描邊Pass設(shè)置在BeforeRenderingTransparents此時(shí)所有不透明物體包括角色本身的深度信息已經(jīng)寫入深度緩沖區(qū)。描邊Pass雖然不寫深度但可以進(jìn)行深度測(cè)試ZTest。默認(rèn)情況ZTest LEqual描邊只會(huì)在深度值小于等于緩沖區(qū)已有深度值的地方被繪制即被角色自身遮擋的部分不會(huì)繪制描邊。這通常是對(duì)的。特殊情況如果你希望描邊即使被角色自身的某些部分如靠近攝像機(jī)的武器遮擋也能顯示可以使用ZTest Always但這可能導(dǎo)致描邊穿幫到其他物體上。需要根據(jù)美術(shù)需求謹(jǐn)慎選擇。與透明物體的交互因?yàn)槊柽吺窃谕该魑矬w之前渲染的所以透明物體會(huì)正常覆蓋在描邊之上這符合視覺(jué)預(yù)期。如果希望描邊在透明物體之上需要更復(fù)雜的多Pass混合或調(diào)整渲染順序通常不建議。4.4 實(shí)現(xiàn)動(dòng)態(tài)描邊如選中、受擊高亮動(dòng)態(tài)改變描邊顏色或?qū)挾确浅H菀滓驗(yàn)閰?shù)都在材質(zhì)上。通過(guò)代碼控制在OutlineTarget組件中可以引用OutlineMat材質(zhì)實(shí)例注意使用MaterialPropertyBlock來(lái)避免創(chuàng)建新的材質(zhì)實(shí)例以優(yōu)化批處理動(dòng)態(tài)修改其_OutlineColor和_OutlineWidth屬性。MaterialPropertyBlock mpb; void Start() { mpb new MaterialPropertyBlock(); m_Renderer.GetPropertyBlock(mpb); // 如果Renderer有其他PropertyBlock先獲取 } void SetOutlineColor(Color color) { mpb.SetColor(_OutlineColor, color); m_Renderer.SetPropertyBlock(mpb); }響應(yīng)事件在玩家的選中邏輯或角色的受擊邏輯中調(diào)用上述方法即可實(shí)現(xiàn)動(dòng)態(tài)高亮。5. 常見(jiàn)問(wèn)題排查與實(shí)戰(zhàn)心得即使按照步驟操作你也可能會(huì)遇到一些奇怪的問(wèn)題。這里記錄了幾個(gè)我踩過(guò)的坑和解決方法。5.1 描邊不顯示或顯示異常檢查Renderer Feature是否啟用在URP Renderer Asset中確保OutlineRendererFeature前面的復(fù)選框是勾選的。檢查L(zhǎng)ayer Mask確認(rèn)角色對(duì)象所在的層被包含在Feature設(shè)置的Layer Mask中。檢查材質(zhì)賦值確保Feature中Override Material字段已正確賦值。檢查Shader編譯錯(cuò)誤在Console窗口查看是否有Shader編譯錯(cuò)誤。確保Shader兼容URPRenderPipelineUniversalPipeline。使用Frame Debugger這是最強(qiáng)大的調(diào)試工具。Window - Analysis - Frame Debugger。開(kāi)啟錄制查看渲染流程。你應(yīng)該能看到一個(gè)名為“OutlinePass”的渲染事件。點(diǎn)開(kāi)它檢查Draw Call是否被正確提交使用的材質(zhì)和Shader是否正確。5.2 描邊閃爍Z-Fighting原因描邊網(wǎng)格和原模型網(wǎng)格距離太近深度值幾乎相同由于深度緩沖精度限制導(dǎo)致前后順序隨機(jī)出現(xiàn)。解決輕微增加外擴(kuò)寬度稍微增大_OutlineWidth讓描邊網(wǎng)格與原模型明確分離。在Shader中應(yīng)用深度偏移在描邊Shader的Pass中添加Offset 0, 1或調(diào)整參數(shù)。這會(huì)在深度計(jì)算上施加一個(gè)微小的偏移讓描邊“優(yōu)先”通過(guò)深度測(cè)試。調(diào)整渲染隊(duì)列確保描邊材質(zhì)的渲染隊(duì)列QueueGeometry1比角色主體材質(zhì)的隊(duì)列通常是Geometry靠后這有助于確定性的渲染順序。5.3 性能熱點(diǎn)分析CPU端最大的瓶頸在于每幀查找需要描邊的Renderer。務(wù)必使用注冊(cè)管理器模式避免FindObjectsOfType。GPU端描邊Pass會(huì)增加額外的Draw Call。一個(gè)角色如果由多個(gè)MeshRenderer/SkinnedMeshRenderer組成就會(huì)產(chǎn)生多個(gè)Draw Call??梢钥紤]通過(guò)靜態(tài)合批Static Batching或GPU Instancing來(lái)優(yōu)化但這需要確保所有描邊物體使用相同的材質(zhì)和材質(zhì)參數(shù)否則需要MaterialPropertyBlock而Instancing對(duì)PropertyBlock支持有限。對(duì)于動(dòng)態(tài)角色SkinnedMeshRenderer本身開(kāi)銷就大描邊帶來(lái)的額外開(kāi)銷通常是可接受的但需在目標(biāo)平臺(tái)上進(jìn)行性能測(cè)試。5.4 關(guān)于Shader Graph與手寫Shader的選擇Shader Graph優(yōu)勢(shì)是可視化、迭代快、不易出錯(cuò)適合美術(shù)或?qū)LSL不熟悉的程序員。對(duì)于簡(jiǎn)單的描邊效果完全夠用。但進(jìn)行深度優(yōu)化如精確的深度偏移、自定義的平滑法線計(jì)算時(shí)可能受限。手寫HLSL優(yōu)勢(shì)是功能強(qiáng)大、靈活、性能可控。你可以精細(xì)地控制每一個(gè)運(yùn)算步驟實(shí)現(xiàn)更復(fù)雜的效果比如基于攝像機(jī)距離動(dòng)態(tài)調(diào)整寬度、基于頂點(diǎn)顏色控制寬度等。對(duì)于追求極致效果和性能的項(xiàng)目推薦手寫。我個(gè)人在項(xiàng)目中的習(xí)慣是原型階段用Shader Graph快速驗(yàn)證效果確定方案后在性能優(yōu)化階段將其轉(zhuǎn)換為手寫的HLSL Shader以便進(jìn)行更底層的調(diào)優(yōu)。URP的Shader LibraryCore.hlsl,Lighting.hlsl等提供了大量封裝好的函數(shù)讓手寫HLSL也不再那么可怕。最后這個(gè)方案是一個(gè)強(qiáng)大的基礎(chǔ)。你可以在此基礎(chǔ)上擴(kuò)展例如結(jié)合模板緩沖Stencil Buffer來(lái)實(shí)現(xiàn)更精確的輪廓控制比如只在外輪廓描邊忽略模型內(nèi)部的空洞或者實(shí)現(xiàn)漸變描邊、發(fā)光描邊等更豐富的藝術(shù)效果。Renderer Feature為你打開(kāi)了一扇門門后的世界由你的創(chuàng)意和Shader技巧來(lái)定義。
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
狠狠干天天日| 日本人妻丁香婷婷久久寝取熟女五月| 无码少妇高潮喷水A片免费| 婷婷五月天另类网站| 一级性感黄色内射视频| 99久久精品亚洲综合| 精品人妻伦一二三区久久| 战争与艾拉电影免费观看| 色噜噜97视频在线观看| 久久码久久无清| 777精品久无码人妻蜜桃| 开心激情播播五月天| 丁香香五月激情免费视频| 男女激情久久| 伊人婷婷福利网| 五月婷婷av| 五月婷婷 激情五月| 热99精品视频观看| 色丁香五月婷婷婷| 五月天丁香啪啪综合| 久久五月天免费网站| 国产精品国产成人国产三级| 婷婷99狠狠| 色婷婷色99国产综合精品| 操逼福利视频| 天天干天天操天天干天天操天天干天天操| 99热www.| 久婷婷久草| 色丁香五月婷婷| 9色免费网| 丁香操逼| 99久久終合| 九九视频在线观看视频6| 九热视频| 五月色网| 三十熟女| 伊人免费视频9| 大战熟女丰满人妻AV| 久久婷婷五月天| 夜夜爽日日躁| 天天婷婷操| 性韩日色婷婷五月天激情啪啪XXX| 色色五月天丁香婷婷| 大香蕉丁香| 97操碰人免费| 亚洲综合欧美色丁香婷婷888月图片| 成人国产欧美大片一区| 五月丁香在线观看国产| www.com任你艹| 2050人人操免费工开爱| 激情五月天.色网| 9久热精品在线视频| 性无码专区无码| 26uuu成人网| 激情久久久久久| 久热91精品| 99热| 激情综合一| 五月丁香久久| 精品香蕉99久久久久网站| AA丁香综合激情| 中文字幕 中文字幕明步| 亚洲综合九九| 日本色色色色色色色色一色二色| 色色草97| 五月丁香婷中文| 激情五月天婷婷直播| 九月激情网| 国产精品电影| 天天擼久久擼在线| 天天插天天爽| av色色国产| 欧美精品18| 午夜性做爰电影| 天天色天天操天天射| 影音先锋男士资源网一区| 4399在线观看免费高清毛片| 91黄址| 丁香五月婷婷狠狠色| AAAA亚洲| 五月激情婷婷国产精品久久久久久 | 六月丁香婷婷综合影院| 午夜婷婷丁香| 99热免费精品| 五月天色五月| 婷婷激情四射五月天| 玖玖精品婷婷| 婷婷成人五月天一区| dingxiangtingtingliuyue| 逼里香不卡| 色播五月综合网| av九九| 热这里| 99视频热| 99热这里只有精品8| 搡BBBB搡BBB搡18 | 婷婷久久久久| 久久久精品色色色| 激情综合久久| 五月丁香综合影院| 婷婷夜夜夜夜| 九九久久网| 日韩少妇内射免费播放| 91碰| 中文在线视频久1| 99热免费精品热久久66| 精品A√| 99热日韩| 99热在线看| 色噜噜婷婷| 99视频热| 日本人妻伦在线中文字幕| 另类图片五月天激情| 色9999日韩国产| 久久婷婷丁香六月天| 国产性爱一级| Aα在线免费观看| 丁香婷最新动态| 婷婷五月天天aV| 九九九九综合| 婷婷国产五月天17c| 九九热这里只有精品7| SS丁香五月婷婷| 免费黄色视频网址| 99碰网站| 青青草成人网| 日本欧美999久久久三级片| 九九激情网| 激情五月天色网站| 五月婷婷免费在线视频| 色五月丁香五| 色五月在线| 九九操操| 成人婷99最新| 久久Xx| 大香蕉久久视频久久视频 | 伊人啪啪网| 亚洲av电影网站| 国产日韩欧美性生活| 日韩综合久| 岛国AAAV| 亚洲成人乱码av网站| 五月丁香六月激情欧美综合| 欧美三级欧美一级| 色婷婷五月在线| 超级碰碰碰久久网站| 午夜理论片最新午夜理论剧 | 伊人青草成人| 丁香五月偷拍| 精品99这里有| 啪啪综合网| PORNY九色9l自拍视频成人| 激情五月深爱婷婷| 色约约视频一区二区三区四区五区 | 天天玩夜夜操天天爽| 超碰网站在线观看| 98永久精品| 亚洲日韩欧美综合VA| 国产精品第一国产精品| 99色热视频| 99热超碰| 婷婷综合成人五月天| 操一区| 五月色色色| 99操免费视频| 狠狠操综合| www热久久yy9| 婷婷射丁香| 色婷婷五月天成人网| 日本一级大片| 色五月色图| www.com.色色| 色综合久久88色综合天天99| 7777激情基地| 五月丁香在线| 天天干、天天日日| 婷婷五月丁香综合桃花色网| 五月丁香久久| 亚洲中文av| 婷婷五月天激情四射| 99热这里只有精品1025| 色九九综合| 天天插天天狠| 国产日产亚系列精品版优势| 啪到高潮激情丁香五月| 黄久久久| 欧美激情VA永久在线播放| 色情五月天视频网| 99噜噜噜在线播放| 色五开心五月五月深深爱| 青青久久五月| 97超碰在线免费观看| 日韩欧美成人片| 97碰超级人人看| 久久九九99| 国产伦亲子伦亲子视频观看| 激情小说视频图片网| 可以直接看的av| 丁乡久久| 国产FREESEXVIDEOS性中国| 欧洲激情五月天婷婷| 午夜无码熟熟妇丰满人妻 | 亚洲婷婷91丁香| 另类激情中文| 99成人免费热视频| 九九九九国产| 天天色中文字幕女优AV| 久久99久久99精品免观看粉嫩| 色五月婷婷av| 丁香情色五月| 亚洲天堂热| 七七九九色色| 99er热精品视频| 久久总和99| 天天色月| 91九色在线观看免费| 狠狠爱婷婷| 琪琪理论片| 精品视频二级九九| 五月丁香婷婷六月| 美女五月天| 97久久精品| 99爱爱| 久热精品视频| 五月天婷婷色五月天| 免费色婷婷| 97狠狠色| 日日夜夜综合| 丁香五月天天| 丁香 久久| 午夜少妇在线观看视频| A在线观看| 激情久久天天| 五月天激情国产综合婷婷婷就去爱| 五月天激情色色| 夜色综合网| 九九激情网| 综合激情四射一theav| 五月天社区| 色色欧美色色| 五月天开心成人网| 99热最新| 任你擦免费视频| AV片一区在线观看| 丁香五月天激情综合| 婷婷激情五月色综合| www.久久| 亚洲愉拍99热成人精品| 欧美精品A片一区在线观看| 99精品在线观看| 99热成人| 久久婷婷五月天蜜桃| 婷婷美女精品视频| 久久婷婷五月天激情新地址| 丁香五月网址| 2020日日干| 激情AV网| 精品一二三区久久AAA片| 色色色五月婷婷| 思思 热 99| 久久久久综合激动五月天| 色五月婷婷自拍| 99综合97| 岛国AAAV| 久久探花91swag| 大香蕉520| 97热视频| 啊v视频在线观看| 色五月天成人| 久久开心五月天激情| www好屌操| 五月婷婷丁香成人网| www.五月天婷婷| 久久综合55| 99精品视频在线观看| 婷婷五月情| 久久这里只有精品8| 天天干-天天日| 六月丁香婷婷综合色播| 婷婷激情五月天网站| 大香蕉五月丁香| www久久艹| 久热99久热| 97搞在线| 久久婷婷色综合老司机| 色蜜婷婷| 变态另类9| 99re久热只有精品6在线直播.com| 97超碰9久热婷婷热| 色99最新网址| 丁香六月成人网| 亚洲中文AV| 五月丁久久| 国外亚洲成AV人片在线观看| 97在线99| 性爱五月婷婷| 亚洲婷婷丁香| 这里只有精品视频视频在线观看| 伊人青草成人| 天天夜夜六月丁香五月婷婷老师| 丁香五月欧美激情| 色婷婷激情四射视频| 另类激情五月在线视频欧美| 9999三级片| 99热国产精品| 99re在线播放| 婷婷丁香大香蕉| www.cao.com久久| 青青久久91| www.99久久久久99| 中文字幕婷婷| 26UUU亚洲欧美| 五月天欧美激情| 开心五月天激情网站| 久久黄色片| 亚洲人人操| 五月香婷婷| 久久色情| 婷婷五月性感| 91chinese 在线| www99精品| 久久视这里只有精品| 精品无码色| 五月婷婷精品视频| 国产婷婷综合| 国产乱子轮XXX农村| 色爽干| 激情五月婷色| 激情网战码亚洲A| 五月天亚洲最大成人| 五月婷婷激情四月| 成人在线精品| 开心婷婷五月综合| 99精品在线播放| 热99久久这里只有精品| 精品久热69| 欧美色五月| 秋霞九九无码| 丁香五月精品视频| 五月婷婷二月丁香| 99在线免费观看| 久综合4| 99视频网址| 婷五月天在线草| 欧洲激情精品婷婷| 北京熟妇搡BBBB搡BBBB| 大香蕉七区| 五月丁香六月激情综合网| 婷婷激情五月综合丁| 中文成人在线| 五月激香蕉网| 久久久这里都是精品| 26uuu欧美亚洲日韩| 五月天停婷基地| 成人精品在线| 黄网在线观看免费| 婷婷五月天激情影片| 婷婷月综合| 激情人妻蜜夜系列区| 97干在线观看| 亚洲激情综合五月婷婷啪啪| 日本狠狠色| 天啪色| 热99视频精品| 91成人品| 日韩精品一区二区亚洲AV观看| 五丁香激情综合| 啪啪婷婷五月天激情| 夜夜嗨一区二区三区直播内容 | 婷婷五月丁香第四色超碰在线| 丁香婷婷九月| 婷婷五月色播| 人人摸人人干| 开心婷婷五月花| 色五月五月婷婷| www.99.色| 激情网战码亚洲A| 99热免费| 亚洲无aV在线中文字幕 | 欧美激情综合色综合啪啪五月| ...婷婷五月综合不卡,国产在线手机| 99视频在线观看视频| 久婷五月| 日本系列_4页_777FP| 丁香五月激情无码视频| 九八Av| 看黄的网站18禁| 久久9精品视频| chaopeng在线人人| 丁香丝袜五月| 97夫妻超碰| 热的五码久久精品| 99re思思热久久| 日韩AV在线免费观看| 婷婷五月中文在线视频| 九九久久腿| 婷婷精品在线| 国产精品久久久久久妇女6080| 色五月首页| AA久久| 婷婷综合色网| 婷婷五月电影| 精品婷婷| 26uuu在线观看| 日本激情91| 五月天色婷婷综合| 色婷亚洲五月丁香| 天天做天天爱天天高潮| 色婷天天| 亚洲精品99| 站长推荐无码播放| 五月丁香激情综合| 色婷婷五月天激情| 中文字幕欧美日韩VA免费视频| 五月丁香六月婷婷,婷| 婷婷色网| 亭亭丁香久久五月| 九九婷婷五月天| 九六五月天婷婷| 国外亚洲成AV人片在线观看| 日日激情网| 国产操B| 五月婷在线视频免费播放| 五月丁香婷婷成人网| 狠狠操天天日| 五月丁香久久| 丁香五月婷婷亚洲综合精品| www.婷婷.com| 米奇激情婷婷| 国产AV网页| 国产偷人妻精品一区| 丁香色五月AV在线| 狠狠人妻色综合| 九九AV| 欧美性生交XXXXX无码小说| 2020久久婷婷五月| 91碰碰碰久久久久| 色六月婷婷| 久热九九| 99riav 亚洲| 99热这里只有精品18| 91精品国产99久久久久久天美| 日韩综合久久| 四川BBB搡BBB搡多人乱亂| 狠狠色 综合色区| 国产操逼视频网站| 久久9久| 成人五月天在线观看| 麻豆AV一区二区三区| 综合图区激情| 欧美激情综合色综合啪啪五月| 九九av| 5月丁香综合网| 日韩中出视频| 久久女婷| 伊人五月丁香| 操91| Www.久久| 色色色免费视频| 色婷婷丁香五月丁香| 91在线观看www| 色婷婷基地| www.minyis.com【JT】国内CDN落地页保证转化QQ2101460746 | 久色精品| 日日日日日| 五月天婷婷色在线视频免费观看| 成人龟情网丁香五月| 天天日 天天草| 婷婷亚洲五| 91色综合久久| 五月天婷婷爱丁香中文字幕| 开心五月婷婷综合在线精品素人| 97碰久久| 免费在线观看欧美激情xx小视频| 噜噜色五月| 99九九99九九九视频精品| 亚洲最大在线| 五月婷婷色激情| 91操碰| 五月天丁香久久综合| 五月婷婷激情久久| 99色在线观看视频| 六月婷婷天天操夜夜爽视频| 日本三级片片| 免费在线观看AV网站| 五月综合丁香婷婷| 丁香社区婷婷五月| www久久五月com| 青青草99热久久精品国| 天堂伊人干| 欧美97色| 狠狠高潮精品亚洲1| www。88热在线视频免费观看| 久久大香蕉伊人| 婷婷五月天综合网| 综合网色| 秋霞AV淫| 丁香五月手机在线| 五月天婷婷中文字幕在线播放| 99视频内射三四| 99热费观看| 色就色94欧美setu| 国产午夜精品一区二区三区四区| 玖玖色综合| 六月丁香婷婷综合在线| 亚洲va欧美va国产综合久久久| 色亚洲无码| 丁香六月婷| 丁香五月婷婷激情蜜桃| 五月婷A V在线| 99自拍视频| 91色综合| 激情文学久久| 久久伦乱| www.黄色片-久久成人国产精品在线播放-999AV | 狠狠色婷婷六月激情网| 色久五月| 思思色综合网站| 五月激情四射婷婷丁香| 五月天大香蕉| 国产成人AV在线| 综合99视频| 成人在线视频一区| 婷婷五月丁香色综合| 久久五月天 91| 综合狠久久| 亚洲乱码日产精品BD| 久99| 办公室少妇激情呻吟A片在线观看| 欧美日韩成人在线| 亚洲免费婷婷| 国产成人综合网| 亚洲色网址| 婷婷激情社区| 色色热| 天天干天天拍| 精品无码久久久久久久久| 亚洲综合五月天| 五月色婷婷综合| 91碰碰碰| 伊人99热| 91夫妻视频| 久久九九热38| 久草婷婷视频| 日韩综合久| 亚洲婷婷婷| 久久精品99久久| 日韩一级A片黄色| 亚洲AV网站| 青草网在线观看| 这里有精品99| 天天拍夜夜爽| 真实亲子乱子伦高清在线观看| 五月天婷婷激情综合| 亚洲精品永久久久久久| 丁香五月影视| 色优久久| 超碰婷婷五月| 天天肏高清在线| 99色网站| 色综合色欲综合天天免费| 久久五月天黄色五月天色网址| 亚洲AAA| 丁香美女主播视频在线观看| 97精品自拍视频| 中文字幕在线日亚洲9| 26uuu在线观看| AA片在线观看视频在线播放| 91VIP在线观看| 超碰色婷婷| 五月婷婷在线丁香| 亚洲一区二区无码蜜乳av| 五月天婷婷爱| 九月婷婷久久久| 色五月婷婷五月天| 91干在线视频| 亚洲午夜精品久久久久久人妖| 亚洲丁香五月美女| 成人va视频| 久久怕怕视频| 蜜乳AV成人| 日韩AV片| 极品五月天| 国产精品日日躁夜夜躁| 99在线精品免费视频| 啪啪色激情五月天| 日日干日日| 99视频免费播放 | 五月丁香久久| 艹天天射| 色五月丁香一区在线| 色偷偷色婷婷| 婷婷在线播放| WWW,五月| 99热这里只是精品| 99色综合| 日笨久久网| 熟女色专区| 天天干天干| 丁香五月天啪啪| 99色.com| 日夜夜天天| 天天肏在线观看| 亚洲三A| 激情床戏| 久久久99免费视频| 伊人色欲五月天| 99视频精品| 97碰碰草| 欧洲激情五月天婷婷| 中文在线成人| 九九99精品免费播放| 激情九月综合| www.久热| 五月停性愛| 丁香五月天影院| 日本激情ⅩXX免费视频| 久久大香蕉同僚| 午夜成人av在线| 五月婷婷开心深| 五月婷婷偷拍| xxxx五月天色色| www.无码com| 日韩久久这里只有精品| 五月婷婷六月色| 九九黄色网| 色444综合网| 天天综合亚洲综合| 国产精自产拍久久久久久蜜| 色婷婷久久| 丁香五月av| 丁香9月婷婷| 婷婷五月天伊人网在线观看视频| 性色五月天| 玖玖在线| 久久精品99久久久久久| 激情五月份婷婷| 婷婷丁香人妻天天久久| 日本美女97在线视频| 五月婷婷综合网在线播放| 色五月婷婷中文字幕| 色婷婷五月天偷拍| 六月激情网| 久久久九九九 99| 日日夜夜小色哥| 国产精品美女久久久久AV超清| 婷婷6月综合网| 婷婷综合成人五月天| 99精品免费| 久久99综合| 综合久久婷婷| 亚洲人妻av| 91操人| 亚洲天堂热| 色婷婷五月色| 成人在线不卡| 综合激情视频| 婷婷五六月丁香| 99久热| 亚洲中文无码成人| 人妻熟人中文字幕一区二区| 五月丁婷婷| 色综合久久久综合久久网| 五月丁香久久呀| 亚洲国产精品成人午夜| 五月好婷婷| 欧美日本99| 丁香五月人妻| 久久资源网五月婷| 性综合网| 久久性爱网站| 九九色情网五月天| 超碰国产AV| 久操无码| 日本久久99| 成人网站免费sxj| 久9热视频在线| 天天插天天插天天插天天插| 91婷婷色 | 99精品在线观看| 99色啊| 激情AV网| 天天爽天天干| 国产一级片| 国外亚洲成AV人片在线观看| 婷婷丁香在线播放| 久久香蕉福利| 婷婷五月天熟妇| 免费日本aⅴ中文字幕 | 色综合色色| 婷婷舔| 涩丁香91| 亚洲天堂爱爱| 五月丁香六月婷婷免费| 久久五月热| 99久在线观看| 狠狠干在线视频| 丁香花婷婷五月天| 亚洲色婷婷| 9999色色色色| 99热热这里只精品996小说| 久久99热这里只有精品| 99亚洲色| 操99| 婷婷婷久久| 无码啪啪| 丁香五月激情视频| 91精品久久久久久77777| 三年高清大片免费观看国语| 婷婷五月天在线视频网站| 国产韩日亚洲美州欧亚综合在线| 91午夜婷婷狠狠久久综合9色| 97色天堂| 九九九九九九九热| 无码人妻电影| 婷婷综合在线网| 婷婷五月天丁香| 丁香五月停停av| 爱射综合| 热996精品在线观看| 成人丁香五月| 99在线精品视频| 婷婷五月天AV激情| 99网址在线看| 亚洲99热| 爱射综合| 26UUU欧美激情一区二区| 五月天四色房丁香| 婷婷五月天综合网| 91人人人人人人人| 五月婷视频| 国产97色在线 | 日韩| 能看的av片| 久久婷综合| 亚洲欧美国产A片免费观看| 亚洲色啪| 亚洲欧美婷婷五月色综合| 五月婷婷二月丁香| 色色婷五月天| 五月天婷婷xxx| 九色在线观看91av| avh片在线观看| 99热网站| 五月天综合在线| 婷婷五月激情图片| 可以免费看的av网站| 色之综合网| 激情伊人| 日韩综合久| 99热伊人综合| 琪琪布丁香社区激情五月天| 99精品在线| 色一情一乱一乱一区91| A久久| 一本综合丁香日日狠狠色| 亚洲天堂亚洲色色色| 婷婷五月天久久| 成人AV中文字幕| 欧美三级大片AA在线看| av网站不卡在线| 天天色情站| 五月婷婷色| 激情五月小说婷婷| www.婷婷五月天.com| 亚洲第一综合| 26uuu| 中文乱子伦视频| 激情九九综合网| 色视五月天婷婷| 色综合爱综合| 亚洲天堂亚洲色色色| 亚洲精品色色| 亚洲精品网站色视频| 久久婷婷五月综合| 97精品综合| 婷婷视频网| 99自拍视频在线观看| 五月丁香色色| 色色色色五月天| 色综合色综合网| 人妻av在线| 色综合网上班开心婷婷久久| 99操| 五月情丁香色| 五月婷婷丁香五月亚洲色| 色婷婷视频| 五月的丁香六月的婷婷| 内射丰满人妻| 久色国产| 少妇达人正片在线播放_ikun_福利吧| 色小说五月天| 黄色一级影片| 九九色婷婷| 久久久精品人妻| 九九碰九九爱97| 性av| 九月性爱网| www亚洲无码| 非洲一级AV| 婷婷在线精品| 永久99免费视频网站| 久久五月丁香六月婷| 丁香五月色五月婷婷宗合| 婷婷色欧美激情| 五月婷婷免费在线视频| 亚洲综合草草| 五月丁香六月天| 国产精品久久久久9999小说| 亚洲图片 丁香婷婷| www综合久久| 四虎成人精品永久免费AV九九| 丁香色五月婷婷17C| 五月婷婷色播网| 婷婷五月综合视频| 182TV大香蕉| 777色色色| 日韩少妇内射免费播放| 色丁香五月婷婷综合久久| 日韩欧美老妇性视频91久久久| 9 1超碰九色| 成人久久天天x资源站| 日韩精品无码99| 久久hd| 丁香五月成人| 亞洲自怕| 99激情网| 久久66精品| 五月天丁香综合久久国产| 大香蕉五月天婷婷| 一区=区操屄高清大全av| 97婷婷丁香| 亚洲综合干| 六月丁香婷婷综合在线| 五月色丁香| 狠狠色综合图片| 九九精品综合| www.婷婷,com| 99在线视频播放| 无码激情AAAAA片-区区| 久久99久久久久久久噜噜| 欧美日本VA| 婷婷开心激情五月激情网| 久久综合中文| 激情五月天。| 亚洲精品成人| 五月开心深深爱激情综合| 超碰在线精品| 久久激情四射| 色色网站免费在线视频| 5月婷婷激情在线| 99热99在线| 久久大香蕉伊人| 日本色婷婷久久99精品91| 五月婷丁香| 亚洲欧洲中文日韩久久AV乱码| 《久久综合九色综合97婷婷| 综合五月亭亭9| 天天操B| 婷婷五月丁香色色| 婷婷五月黄色激情在线| 色色色热| 国产操B| 婷婷欧美偷拍综合| 激情99| 教师性爱毛片| 人人色人人摸人人看| 五月丁香六月婷婷啪啪| 97在线观看| 久久九九99| 这里只有精品视频在线| 国产成人综合亚洲| www.粉嫩av.com| 欧美日韩成人高清在线| 任你搞免费视频观看| 夜夜爽天天| 色色色婷婷五月天| 69久热| 伊人五月网| 激情综合亚洲| 97人人干人人操| 丁香五月天社区| 精品9久| 亚洲五月天天| 久久激情五月婷婷| 99re久热只有精品6在线直播.com| 日日夜夜综合| 香蕉AV777XXX色综合一区| 丁香五月综合高清在线| 日韩狠狠色| 五月五月婷婷| 丁香五月综合AV在线| 蜜桃婷婷丁香综合久久开心亚洲| 亚州激情网| 精品久久久人妻| 日韩99视频| 五月激情婷婷播播开心| 国产伊人大香蕉| 久热播这里只有精品| 男女啪啪做爰高潮无遮挡| 无码网| 丁香五月成人| 五月丁香六月婷婷综合在线| 亚洲激情四射| 人人操99| 欧美日韩成人在线| 激情四射五月天| 久久伊人大香蕉| 婷婷丁香97| 影视av久久久噜噜噜噜噜三级| 久九九热| 夜夜爱伊人| 九月婷婷激情| 五月色婷婷影院| 婷婷五月电影| 久久婷婷热| 日韩啪啪视频| 色色色综合色| 色婷婷丁香六月| 久热久| 色婷婷国色天香综合| 无码人妻精品一区二区蜜桃色欲| 日本婷婷网| 亚洲日本韩国| 婷婷十月丁香| 亚洲第二AV| 这里只有精品视频| 五月丁香六月成人| 亚洲久热| 热久久成人| 亚洲日韩一页精品发布| 五月天婷婷激情春色小说| 天堂网操| 影音先锋91| 91精品丝袜久久久久久| 99久久婷婷国产综合精品草原| 婷婷久久久久久久| AA片在线观看视频在线播放| 欧美激情综合色综合色| 性色综合网| 激情久久久久久久久久| 欧美在线视频99| 熟妇人妻中文字幕无码老熟妇| 2025天天爽天天摸| 影音先锋AV男人站| 五月天婷婷爱| 思思视频久久| 亚洲综合色成丁香五月色| 激情www| 五月久熟女| 亚洲第一综合| A久网| 91久久久久久久91| www.婷婷五月天| 婷婷五月综合在线视频| 婷婷性爱视频在线| 99久久婷婷| 五月开心婷婷| 五月婷久久草| 国产激情久久久| 深爱五月日韩| 久久网日本| 国产真实乱了老女人视频| 99热这里只有精品搜| 五月丁香六月激情综合| 极品人妻VIDEOSSS人妻| 99精品免费欧美小视频| 久久作爱| 婷婷最新地址| 性高潮久久久久久-九九九九九九九九九九热-成人AV| 日本色道视频网站| 狠狠插.com| 97碰碰视频在线观看免费| 色。 日日日| 婷婷va| 欧美韩国日本| 九九视频在线观看| 五月色丁香综合| 五月丁香婷婷99| 九九99精品| 色婷狠狠| 天天日狠狠| 国内久久久精品99| 中文人妻AV久久人妻18| 狠狠干在线| 久久五月丁香综合17C| 97干视频在线| 岛国在线观看91| 欧美婷婷丁香五月社区| av网站中文| 五月婷婷另类| 五月天婷婷色色首页| 色吧五月| 中文字幕av在线播放| 五月丁香人人婷婷在线观看| 91视频精品99| www.cao.com久久| 91婷婷| 色九九九九| 婷婷丁香五月,狠狠综合| 久久99久久99精品免视看婷婷| 香蕉五月婷婷| 国产精品人成A片一区二区| 超碰com| 丁香五月综合在线视频| 五月丁香在线视频观看| 色天使色婷婷| 九九久久偷拍| 丁香五月花| 九九热在线视频观看| 天天插综合网| 欧美综合五月丁香五月天| 五月丁香久久精品在线观看 | 色综合网综合| 丁香五月婷婷婷婷欧美综合| 第五婷婷伊人丁香色| 99热色综合| 欧美性生交XXXXX无码小说| 丁香五月久久| 久久99综合网| 五月天婷婷影院影院观看| 亚洲婷婷丁香五月天激情小说| 日韩久热| 99爱爱网| 天天肏天天肏| 丁香婷婷久| AⅤ网站在线看| 国产 码在线成人网站| 激情色色| 日韩高清成人| 亚洲顶级VA在线观看-高清完整版在线影院观看-S022AV | 91碰碰碰| 伊人久久婷| 99热精品在线观看| XX色综合| 99热这里只有精品2| 五月丁香六月花| 三级成人网站| 婷婷的五月天另类视频| 激情综合播播| 99在线精品观看99| 久久久久久久97| 色婷婷888| 色偷偷色婷婷| 九月av| 9久久AV| 1999天天操夜夜操| 伊人婷婷五月天av| 色五月自偷自拍婷婷婷婷| 色约约视频一区二区三区四区五区 | 免费看欧美成人A片无码| 五月婷婷欲色| www.热99热| 99热精品一区| 五月天激情综合10p| 思思re视频在线| 亚洲、热| 日日夜夜综合| 美国色五月天婷婷资源站| 这里有精品2| 亚洲婷婷五月天激情| 久久久性爱视频| 五月丁香六月婷婷色日| 五月天激情综合网| 91综合色| 激情五月天丁香| 色五月亚洲| 婷婷五月色| 人与禽A片啪啪| 五月婷婷黄色网址| 色婷婷av综合网| 日本在线视频看se99| www.99热精品| 色久女| 只有精品视频在线观看| 久久黄色网扯| 国产熟女日日骚五月丁香爱| 五月天综合图片| 五月欧美丁香在线观看| 最新av在线观看| 九九热最新地址| 大地资源色婷婷视频在线 | 国产精品五月丁香| 少妇人妻凹凸视频| 激情5月婷婷| 六月丁香av| 99在线精品观看99| 婷婷五月天99综合网站| 丁香六月婷婷色XXXXX| 92国产福利| 伊人久久激情图区五月| 久热这里只有精品视频6| 韩国天天婷婷| 91碰碰视频| 丁香六月婷| AV亚洲在线| 国产五月天婷婷| 亚洲人人96@| 五月丁香婷婷成人综合网| 偷偷操99| 五月丁香啪| www狠狠爱com| 日韩欧美一级大黄网站| 五月香蕉婷婷| 99re热视频这里只精品| 午夜成人AV在线| 久草热8精品视频在线观看| 九九色插| 99日本精品视频热| 婷婷四色五月| 99噜噜| 中字幕视频在线永久在线观看免费| 麻豆忘忧草午夜| 日韩无码专区| 色噜噜在线| 99热在线观看精品| 极品人妻VIDEOSSS人妻| 91嫩草久久| 九九热这里都是精品6| 天天插,天天射| 欧美性爱五月天| 五月久久| 五月天婷婷午夜丁香| 婷婷激情小说| 婷婷色色网| 天堂综合久| 伊人国产婷婷五月天| 久久婷婷五月天激情四射| 天堂无码人妻精品AV一区| 激情五月丁香六月综合AVXXXX| 久久性爱视频免费| 伊人五月天| 欧美成人AAA片一区国产精品| 欧美在线视频免费播放| 青青五月天婷婷| 大香蕉伊人爱在线| 色五月亚洲| 99热久| 欧美中文五月天| 欧美色综合天天久久综合精品| 九九精品热播| 日本熟女一区二区| 玖玖婷婷五月天| 色五月大| 色噜噜在线| 99ri精品| 色五月婷婷操逼| 欧美色色色色色色色| 九九综合久久| 91九色国产在线| 天天色色天天| 亚洲亚洲人成综合网络| 婷婷色婷婷| 最新va在线播放| 丁香五月婷婷av影院| 狠狠五月激情在线| 久久伦乱| 91碰九色| 五月丁香激情六月| 九九99久久| 玖玖综合色| 五月天淫乱视频| 亚洲中文字幕在线电影| 插插插色综合网| AV操操操| 999精品乱码77777| 热99这就是精品视频| 久久久宗合视频88| 人人操Av| 性色五月天| 久久久大香蕉| 久久性爱视频| 丁香熟女乱| 深爱激情网五月天| 《亚洲操B久久免费在线观看,亚洲操B久久在线播放》在线播放 - 高清资源 - 97 | 日日色综合| 狠狠色婷| 婷婷五月婷婷五月| 99精品国产乱码久久久人妻| 亚洲精品网站色视频| 91久久1118| 国产成人高清| 99色在线观看视频| 三级99热| 五月婷婷69| 丁香五月综合激情久久潮喷| 99这里只有精品| AV变态另类一区二区| 婷婷五月AV| 一级AV片| www.五月激情红色| 最近中文字幕大全免费版在线| WWW,色五月| 精品人妻一区二区三区四区不卡在| 色婷婷狠| 婷婷五月亚洲综合| 九色自拍| 国产成人网址| 一级黄色影片| 久热只有精品| 五月婷婷在线视频免费观看| www久久99| 欧美久久五月婷婷| 国产高潮A片羞羞视频涩涩| 日本va网站| 无码成人AAAAA毛片AI换脸| 五月天婷婷激情干干| 日本少妇裸体做爰高潮片| 五月丁香天堂网婷婷| 日逼影音先锋男人AV资源站| 天天插天天| 色九九九综合| 激情六月色| 1024婷婷综合久久五月天| 91超级碰在线视频| 激情久久综合| 五月激情天| 第六色在线| 色情网综合| 99精品在线观看视频| 久久婷婷丁香| 99视频内射三四| 天堂婷婷五月在线| 丁香香蕉射射射| 岛国AV网站| 99WWW免费视频| 成人av免费观看| 丁香五月综合激情久久潮喷| 国产午夜精品一区二区三区四区| 夜夜撸天天日| 4438国产免费看| 久久婷婷精品| 婷婷丁香五月精品| 综合另类激情| 久久电影4399| 六月婷婷深深爱| 伊人久久婷婷五月综合97色| 九九热思思| av网址在线| 99热综合| 天天操夜夜橾| 欧美久久婷婷| 成人做爰高潮A片免费视频| 丁香五月欧美激情| 亚洲无码11| www.色婷婷| 久久九色| 日韩一本操| 婷婷五月天小说| 狠狠看狠狠| 天天操天天插天天射| 99热主页日本| 丁香五月天婷婷久久综合| 狠狠色噜噜色狠狠狠综合色 | 久久成人性爱| 婷婷丁香大香蕉| 99人妻碰碰碰久久久久禁片| 色色婷五月天| 影音先锋男人资源站一区二区| 色婷婷www| 久久人妻在线| 91色在线/日韩| 亚洲在线免费成人| 婷婷97碰碰| 五月天婷婷导航| 日本色图综合| 色婷婷成人色网|