CODE
// Set up variable
Fvector3 dof;
Fvector2 vDofKernel;
g_pGamePersistent->GetCurrentDof(dof);
vDofKernel.set(0.5f/Device.dwWidth, 0.5f/Device.dwHeight);
vDofKernel.mul(ps_r2_dof_kernel_size);
// Draw COLOR
RCache.set_Element (s_combine->E[bDistort?2:1]);
RCache.set_c ("m_current", m_current);
RCache.set_c ("m_previous", m_previous);
RCache.set_c ("m_blur", m_blur_scale.x,m_blur_scale.y, 0,0);
RCache.set_Geometry (g_aa_AA);
RCache.Render (D3DPT_TRIANGLELIST,Offset,0,4,0,2);
// DOF
RCache.set_Element (s_combine->E[3]);
RCache.set_c ("dof_params", dof.x, dof.y, dof.z, ps_r2_dof_sky);
RCache.set_c ("dof_kernel", vDofKernel.x, vDofKernel.y, ps_r2_dof_kernel_size, 0);
RCache.set_Geometry (g_aa_AA);
RCache.Render (D3DPT_TRIANGLELIST,Offset,0,4,0,2);
CODE
switch (C.iElement)
{
case 0: // combine
C.r_Pass ("combine_1", "combine_1", FALSE, FALSE, FALSE, TRUE, D3DBLEND_INVSRCALPHA, D3DBLEND_SRCALPHA); //. MRT-blend?
C.r_Sampler_rtf ("s_position", r2_RT_P );
C.r_Sampler_rtf ("s_normal", r2_RT_N );
C.r_Sampler_rtf ("s_diffuse", r2_RT_albedo );
C.r_Sampler_rtf ("s_accumulator", r2_RT_accum );
C.r_Sampler_rtf ("s_depth", r2_RT_depth );
C.r_Sampler_rtf ("s_tonemap", r2_RT_luminance_cur );
C.r_Sampler_clw ("s_material", r2_material );
C.r_Sampler_clw ("s_occ", r2_RT_ssao_temp );
C.r_Sampler_rtf ("s_half_depth", r2_RT_half_depth);
C.r_Sampler_clf ("env_s0", r2_T_envs0 );
C.r_Sampler_clf ("env_s1", r2_T_envs1 );
C.r_Sampler_clf ("sky_s0", r2_T_sky0 );
C.r_Sampler_clf ("sky_s1", r2_T_sky1 );
jitter©;
C.r_End ();
break;
case 1: // non-AA
C.r_Pass ("null", "combine_2_NAA", FALSE, FALSE, FALSE);
C.r_Sampler_rtf ("s_position", r2_RT_P);
C.r_Sampler_rtf ("s_normal", r2_RT_N);
C.r_Sampler_clf ("s_image", r2_RT_generic0);
C.r_Sampler_clf ("s_bloom", r2_RT_bloom1);
C.r_Sampler_clf ("s_distort", r2_RT_generic1);
C.r_End ();
break;
case 2: // non-AA + DISTORTION
C.r_Pass ("null", "combine_2_NAA_D", FALSE, FALSE, FALSE);
C.r_Sampler_rtf ("s_position", r2_RT_P);
C.r_Sampler_rtf ("s_normal", r2_RT_N);
C.r_Sampler_clf ("s_image", r2_RT_generic0);
C.r_Sampler_clf ("s_bloom", r2_RT_bloom1);
C.r_Sampler_clf ("s_distort", r2_RT_generic1);
C.r_End ();
break;
case 3: // dof
C.r_Pass ("null", "combine_dof", FALSE, FALSE, FALSE);
C.r_Sampler_rtf ("s_position", r2_RT_P);
C.r_Sampler_rtf ("s_normal", r2_RT_N);
C.r_Sampler_clf ("s_image", r2_RT_albedo);
C.r_End ();
break;
}