轮廓描边是游戏中的细节 然则一个有特点的结果还是会让人面前一亮
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建造的网页游戏也是用的这种体式格式描边