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建造的网页游戏也是用的这种体式格式描边


原文地址:https://www.cnblogs.com/softimagewht/p/2694639.html