您的位置:首页 > 其它

战争迷雾sharder

2015-12-03 20:38 399 查看
首先创建两个摄像机,两个摄像机的所有值都一样,把一个拖成子物体。接着 ,在地形的下方创建一个跟地形差不多长、宽的plane,给他一个材质球,材质球设为黑色。

接着,创建一个WarFog层,将子摄像机的渲染层Culling Mask设置成只渲染WarFog层。将Plane设置成WarFog层。

在角色底下创建一个白色面板,设置为WarFog层。创建一个Render Texture ,将它拖到子摄像机的Target Texture属性上。

将主摄像机的Culling Mask去除WarFog层,加上如下脚本。

<pre name="code" class="csharp">using UnityEngine;
using System.Collections;

public class Warfog : MonoBehaviour {

[SerializeField]
//拖到子摄像机上的Render Texture
private RenderTexture mask;

[SerializeField]
//创建的材质球   需要用到WarFog sharder  在下面给出
private Material mat;
//在图像渲染之后执行
public void OnRenderImage(RenderTexture source,RenderTexture des)
{
//将遮罩的mask传入材质球
mat.SetTexture("_MaskTex",mask);
//经过材质球的sharder变换后  拷贝源纹理到目的渲染纹理。
Graphics.Blit(source,des,mat);
}
}




创建材质球MaskMat将sharder换成如下sharder

Shader "Custom/WarFog" {
Properties {
_MainTex ("_MainTex", 2D) = "white" {}
//遮罩纹理
_MaskTex ("_MaskTex", 2D) = "white" {}
}
SubShader {
Pass {
CGPROGRAM
//顶点处理器
#pragma vertex m_vert_img
//片段处理器
#pragma fragment frag

#include "UnityCG.cginc"

uniform sampler2D _MainTex;
uniform sampler2D _MaskTex;

struct m_appdata_img {
float4 vertex : POSITION;
half2 texcoord : TEXCOORD0;
half2 texcoord1 : TEXCOORD1;
};
struct m_v2f_img {
float4 pos : SV_POSITION;
half2 uv : TEXCOORD0;
half2 uv1 : TEXCOORD1;
};
//像素处理器
fixed4 frag(m_v2f_img i) : COLOR
{
//主纹理
fixed4 renderTex = tex2D(_MainTex, i.uv);
//遮罩纹理
fixed4 renderTex1 = tex2D(_MaskTex, i.uv1);
fixed4 finalColor;
//如果遮罩的红色通道小于0.3  最终颜色就是遮罩图片   否则为主图片
if(renderTex1.r<.3){
finalColor = renderTex1.rgba;
}else{
finalColor = renderTex.rgba;
}

return finalColor;
}
//调整UV值   实现正常偏转
float2 m_MultiplyUV (float4x4 mat, float2 inUV) {
float4 temp = float4 (inUV.x, 1-inUV.y, 0, 0);
temp = mul (mat, temp);
return temp.xy;
}

m_v2f_img m_vert_img( m_appdata_img v )
{
m_v2f_img o;
o.pos = mul (UNITY_MATRIX_MVP, v.vertex);
o.uv = MultiplyUV( UNITY_MATRIX_TEXTURE0, v.texcoord );
o.uv1 = m_MultiplyUV( UNITY_MATRIX_TEXTURE0, v.texcoord1 );
return o;
}
ENDCG
}
}
FallBack "Diffuse"
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: