(轉)【Unity3d】Glow + Outline 輪廓描邊


轉:http://www.cnblogs.com/dosomething/archive/2012/08/04/2622488.html

【Unity3d】Glow + Outline 輪廓描邊

輪廓描邊是游戲中的細節  但是一個有特色的效果還是會讓人眼前一亮

Glow + Outline 的效果就像求生之路2和暗黑3的輪廓描邊界一樣  對輪廓描邊后再進行模糊處理

如圖: 求生之路2

 

暗黑3

  

一種思路為:

1、在RTT中繪制單一像素

2、對1繪制后的RTT進行blur處理

3、對2處理后的RTT與原始場景進行疊加

4、繪制原始模型

 

另一種思路:

1、繪制原始模型到RTT

2、對1繪制的RTT中原始模型進行Sobel描邊

3、對2描邊后的RenderTexture進行blur處理

4、疊加1和3的RenderTexture

5、4與場景進行疊加

 

在unity3d中的實現

1、場景圖像渲染之前

 void OnPreRender

{

  ......

   另外添加一個攝像機A

  這里必須將GlowOutlineCamera攝像機關閉

  並且清除標識為純色

  制定其渲染目標為RTT 

  清空其背景

  攝像機A在主攝像機渲染之前通過Shader去繪制指定渲染類型的GameObject   也就是需要描邊的GameObject

  (即攝像機A.RenderWithShader(RTT, "XXXX");)

  ...... 

}

 

2、場景圖像渲染之后 

void OnRenderImage(RenderTexture source, RenderTexture destination)

{

  ......

  將攝像機A所渲染的目標紋理進行blur處理

  將blur后的RTT與場景圖像渲染后的RTT進行合成疊加

  拷貝到目的渲染紋理上

  ......

}

 

效果1  未被遮擋

效果2 被遮擋

效果3 描邊相交  未被遮擋

效果4 描邊相交  被遮擋

 

最后附上一張火炬之光2的輪廓描邊效果  

unity實現起來要簡單的多 不屬於postprocess  

只需要對需要描邊的物體寫一個Rimlight邊緣高光的shader即可  

國內好像有個unity制作的網頁游戲也是用的這種方式描邊


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM