- 最后登录
- 2018-6-29
- 注册时间
- 2011-7-1
- 阅读权限
- 20
- 积分
- 359
![Rank: 2](static/image/common//star_level2.gif)
- 纳金币
- 335582
- 精华
- 0
|
Shader "Hidden/DOF Composite" {
Properties {
_MainTex ("", RECT) = "white" {}
_BlurTex1 ("", RECT) = "white" {}
_BlurTex2 ("", RECT) = "white" {}
_DepthTex ("", RECT) = "white" {}
}
SubShader {
Pass {
ZTest Always Cull Off ZWrite Off Fog { Mode off }
CGPROGRAM
#pragma fragment frag
#pragma fragmentoption ARB_precision_hint_fastest
#include "UnityCG.cginc"
uniform samplerRECT _MainTex : register(s0);
uniform samplerRECT _BlurTex1 : register(s1);
uniform samplerRECT _BlurTex2 : register(s2);
uniform samplerRECT _DepthTex : register(s3);
uniform float4 _FocalParams; // x = distance, y = 1/distance, z = range, w = 1/range
s***ct v2f {
float2 uv[4] : TEXCOORD0;
};
float DOFFactor( float z ) {
float focalDist = _FocalParams.x;
float invRange = _FocalParams.w;
float fromFocal = z - focalDist;
if( fromFocal < 0.0 )
fromFocal *= 4.0;
return saturate( abs( fromFocal ) * invRange );
}
half4 frag (v2f i) : COLOR
{
half4 original = texRECT(_MainTex, i.uv[0]);
half3 blur1 = texRECT(_BlurTex1, i.uv[1]).rgb;
half3 blur2 = texRECT(_BlurTex2, i.uv[2]).rgb;
// tint blur levels just for fun!
blur1 *= float3(1,1,0.7);
blur2 *= float3(0.7,0.7,1);
float dof = texRECT(_DepthTex, i.uv[3]).r;
half dof2;
if( dof > 0.5 )
dof2 = saturate( dof * 0.25 + 0.75 );
else
dof2 = saturate( dof * 1.5 );
half factor = saturate( dof * 1.5 - 0.75 );
half3 blur = lerp( blur1, blur2, factor );
half3 col = lerp( original.rgb, blur, dof );
return half4(col, original.a);
}
ENDCG
}
}
Fallback off
} |
|