Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- vec4 color_accum = vec4(0.0);
- float max_accum=0;
- for(int i=0;i<dof_kernel_size;i++) {
- int int_ofs = i-dof_kernel_from;
- vec2 tap_uv = uv_interp + dof_dir * float(int_ofs) * dof_radius;
- float ofs_influence = max(0.0,1.0-float(abs(int_ofs))/float(dof_kernel_from));
- float tap_k = dof_kernel[i];
- vec4 tap_color = textureLod( source_color, tap_uv, 0.0);
- float tap_depth = texture( dof_source_depth, tap_uv, 0.0).r;
- tap_depth = tap_depth * 2.0 - 1.0;
- tap_depth = 2.0 * camera_z_near * camera_z_far / (camera_z_far + camera_z_near - tap_depth * (camera_z_far - camera_z_near));
- float tap_amount = 1.0-smoothstep(dof_end,dof_begin,tap_depth);
- tap_amount*=tap_amount*tap_amount; //prevent undesired glow effect
- #ifdef DOF_NEAR_FIRST_PASS
- tap_color.a= 1.0-smoothstep(dof_end,dof_begin,tap_depth);
- #endif
- max_accum=max(max_accum,tap_amount*ofs_influence);
- color_accum+=tap_color*tap_k;
- }
- color_accum.a=max(color_accum.a,sqrt(max_accum));
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement