DOF_ps.cg
上传用户:xhbjoy
上传日期:2014-10-07
资源大小:38068k
文件大小:1k
源码类别:

游戏引擎

开发平台:

Visual C++

  1. // Simple blur filter
  2. const float2 samples[8] = {
  3.     {-1, 1},
  4.     {-1, 0},
  5.     {-1, -1},
  6.     {0, -1},
  7.     {1, -1},
  8.     {1, 0},
  9.     {1, 1},
  10.     {0, 1}
  11. };
  12. float4 blur(
  13.     in float2 texCoord: TEXCOORD0,
  14.     uniform float sampleDistance: register(c0),
  15.     uniform sampler Blur0: register(s0)
  16. ) : COLOR
  17. {
  18.    float4 sum = tex2D(Blur0, texCoord);
  19.    for (int i = 0; i < 8; ++i){
  20.       sum += tex2D(Blur0, texCoord + sampleDistance * samples[i]);
  21.    }
  22.    return sum / 9;
  23. }
  24. float4 blend
  25. (
  26.     in float2 texCoord: TEXCOORD0,
  27.     uniform sampler Blur0 : register(s0),
  28.     uniform sampler Blur1 : register(s1),
  29.     uniform float focus: register(c0),
  30.     uniform float range: register(c1)
  31. ) : COLOR
  32. {
  33.    float4 sharp = tex2D(Blur0, texCoord);
  34.    float4 blur  = tex2D(Blur1, texCoord);
  35.    // alpha channel of sharp RT has depth info
  36.    return lerp(sharp, blur, saturate(range * abs(focus - sharp.a)));
  37. }