(转)【Unity3d】Glow + Outline 轮廓描边

转:http://www.cnblogs.com/dosomething/archive/2012/08/04/2622488.htmlhtml

【Unity3d】Glow + Outline 轮廓描边

轮廓描边是游戏中的细节  可是一个有特点的效果仍是会让人眼前一亮post

Glow + Outline 的效果就像求生之路2和暗黑3的轮廓描边界同样  对轮廓描边后再进行模糊处理url

如图: 求生之路23d

 

暗黑3htm

  

一种思路为:blog

一、在RTT中绘制单一像素游戏

二、对1绘制后的RTT进行blur处理get

三、对2处理后的RTT与原始场景进行叠加it

四、绘制原始模型io

 

另外一种思路:

一、绘制原始模型到RTT

二、对1绘制的RTT中原始模型进行Sobel描边

三、对2描边后的RenderTexture进行blur处理

四、叠加1和3的RenderTexture

五、4与场景进行叠加

 

在unity3d中的实现

一、场景图像渲染以前

 void OnPreRender

{

  ......

   另外添加一个摄像机A

  这里必须将GlowOutlineCamera摄像机关闭

  而且清除标识为纯色

  制定其渲染目标为RTT 

  清空其背景

  摄像机A在主摄像机渲染以前经过Shader去绘制指定渲染类型的GameObject   也就是须要描边的GameObject

  (即摄像机A.RenderWithShader(RTT, "XXXX");)

  ...... 

}

 

二、场景图像渲染以后 

void OnRenderImage(RenderTexture source, RenderTexture destination)

{

  ......

  将摄像机A所渲染的目标纹理进行blur处理

  将blur后的RTT与场景图像渲染后的RTT进行合成叠加

  拷贝到目的渲染纹理上

  ......

}

 

效果1  未被遮挡

效果2 被遮挡

效果3 描边相交  未被遮挡

效果4 描边相交  被遮挡

 

最后附上一张火炬之光2的轮廓描边效果  

unity实现起来要简单的多 不属于postprocess  

只须要对须要描边的物体写一个Rimlight边缘高光的shader便可  

国内好像有个unity制做的网页游戏也是用的这种方式描边

相关文章
相关标签/搜索