輪廓描邊是游戲中的細節 但是一個有特色的效果還是會讓人眼前一亮
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制作的網頁游戲也是用的這種方式描邊