Advertisement
Guest User

Untitled

a guest
Dec 10th, 2016
79
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1.  
  2.     vec4 color_accum = vec4(0.0);
  3.  
  4.     float max_accum=0;
  5.  
  6.     for(int i=0;i<dof_kernel_size;i++) {
  7.  
  8.         int int_ofs = i-dof_kernel_from;
  9.         vec2 tap_uv = uv_interp + dof_dir * float(int_ofs) * dof_radius;
  10.         float ofs_influence = max(0.0,1.0-float(abs(int_ofs))/float(dof_kernel_from));
  11.  
  12.         float tap_k = dof_kernel[i];
  13.  
  14.         vec4 tap_color = textureLod( source_color, tap_uv, 0.0);
  15.  
  16.         float tap_depth = texture( dof_source_depth, tap_uv, 0.0).r;
  17.         tap_depth = tap_depth * 2.0 - 1.0;
  18.         tap_depth = 2.0 * camera_z_near * camera_z_far / (camera_z_far + camera_z_near - tap_depth * (camera_z_far - camera_z_near));
  19.         float tap_amount = 1.0-smoothstep(dof_end,dof_begin,tap_depth);
  20.         tap_amount*=tap_amount*tap_amount; //prevent undesired glow effect
  21.  
  22. #ifdef DOF_NEAR_FIRST_PASS
  23.  
  24.         tap_color.a= 1.0-smoothstep(dof_end,dof_begin,tap_depth);
  25.  
  26. #endif
  27.  
  28.         max_accum=max(max_accum,tap_amount*ofs_influence);
  29.  
  30.         color_accum+=tap_color*tap_k;
  31.  
  32.     }
  33.  
  34.     color_accum.a=max(color_accum.a,sqrt(max_accum));
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement