void CBlender_Model_EbB::Compile( CBlender_Compile& C ) { IBlender::Compile(C); if (oBlend.value) { // forward LPCSTR vsname = 0; LPCSTR psname = 0; switch(C.iElement) { case 0: case 1: vsname = psname = "model_env_lq"; C.r_Pass (vsname,psname,TRUE,TRUE,FALSE,TRUE,D3DBLEND_SRCALPHA, D3DBLEND_INVSRCALPHA, TRUE,0); //C.r_Sampler ("s_base", C.L_textures[0]); //C.r_Sampler ("s_env", oT2_Name,false,D3DTADDRESS_CLAMP); C.r_dx10Texture ("s_base", C.L_textures[0]); C.r_dx10Texture ("s_env", oT2_Name); C.r_dx10Sampler ("smp_base"); C.r_dx10Sampler ("smp_rtlinear"); C.r_End (); break; } } else { // deferred switch(C.iElement) { case SE_R2_NORMAL_HQ: // deffer uber_deffer (C,true, "model","base",false,0,true); C.r_Stencil ( TRUE,D3DCMP_ALWAYS,0xff,0x7f,D3DSTENCILOP_KEEP,D3DSTENCILOP_REPLACE,D3DSTENCILOP_KEEP); C.r_StencilRef (0x01); C.r_End (); break; case SE_R2_NORMAL_LQ: // deffer uber_deffer (C,false, "model","base",false,0,true); C.r_Stencil ( TRUE,D3DCMP_ALWAYS,0xff,0x7f,D3DSTENCILOP_KEEP,D3DSTENCILOP_REPLACE,D3DSTENCILOP_KEEP); C.r_StencilRef (0x01); C.r_End (); break; case SE_R2_SHADOW: // smap //if (RImplementation.o.HW_smap) C.r_Pass ("shadow_direct_model","dumb", FALSE,TRUE,TRUE,FALSE); //else C.r_Pass ("shadow_direct_model","shadow_direct_base",FALSE); C.r_Pass ("shadow_direct_model","dumb", FALSE,TRUE,TRUE,FALSE); //C.r_Sampler ("s_base",C.L_textures[0]); C.r_dx10Texture ("s_base",C.L_textures[0]); C.r_dx10Sampler ("smp_base"); C.r_dx10Sampler ("smp_linear"); C.r_ColorWriteEnable(false, false, false, false); C.r_End (); break; } } }
void CBlender_Detail_Still::Compile (CBlender_Compile& C) { IBlender::Compile (C); bool bUseATOC = (RImplementation.o.dx10_msaa_alphatest==CRender::MSAA_ATEST_DX10_0_ATOC); switch(C.iElement) { case SE_R2_NORMAL_HQ: // deffer wave if (bUseATOC) { uber_deffer (C,false,"detail_w","base_atoc",true,0,true); C.r_Stencil ( TRUE,D3DCMP_ALWAYS,0xff,0x7f,D3DSTENCILOP_KEEP,D3DSTENCILOP_REPLACE,D3DSTENCILOP_KEEP); C.r_StencilRef (0x01); C.r_ColorWriteEnable(false, false, false, false); C.r_CullMode (D3DCULL_NONE); // Alpha to coverage. C.RS.SetRS (XRDX10RS_ALPHATOCOVERAGE, TRUE); C.r_End (); } uber_deffer (C,false,"detail_w","base",true, 0, true); C.r_Stencil ( TRUE,D3DCMP_ALWAYS,0xff,0x7f,D3DSTENCILOP_KEEP,D3DSTENCILOP_REPLACE,D3DSTENCILOP_KEEP); C.r_StencilRef (0x01); C.r_CullMode (D3DCULL_NONE); if (bUseATOC) C.RS.SetRS ( D3DRS_ZFUNC, D3DCMP_EQUAL); C.r_End (); break; case SE_R2_NORMAL_LQ: // deffer still if (bUseATOC) { uber_deffer (C,false,"detail_s","base_atoc",true,0,true); C.r_Stencil ( TRUE,D3DCMP_ALWAYS,0xff,0x7f,D3DSTENCILOP_KEEP,D3DSTENCILOP_REPLACE,D3DSTENCILOP_KEEP); C.r_StencilRef (0x01); C.r_CullMode (D3DCULL_NONE); C.r_ColorWriteEnable(false, false, false, false); // Alpha to coverage. C.RS.SetRS (XRDX10RS_ALPHATOCOVERAGE, TRUE); C.r_End (); } uber_deffer (C,false,"detail_s","base",true, 0, true); C.r_Stencil ( TRUE,D3DCMP_ALWAYS,0xff,0x7f,D3DSTENCILOP_KEEP,D3DSTENCILOP_REPLACE,D3DSTENCILOP_KEEP); C.r_StencilRef (0x01); C.r_CullMode (D3DCULL_NONE); // Need this for ATOC if (bUseATOC) C.RS.SetRS ( D3DRS_ZFUNC, D3DCMP_EQUAL); C.r_End (); break; } }
void CBlender_deffer_model::Compile(CBlender_Compile& C) { IBlender::Compile (C); BOOL bForward = FALSE; if (oBlend.value && oAREF.value<16) bForward = TRUE; if (oStrictSorting.value) bForward = TRUE; if (bForward) { // forward rendering LPCSTR vsname,psname; switch(C.iElement) { case 0: // case 1: // vsname = psname = "model_def_lq"; C.r_Pass (vsname,psname,TRUE,TRUE,FALSE,TRUE,D3DBLEND_SRCALPHA, D3DBLEND_INVSRCALPHA, TRUE,oAREF.value); C.r_Sampler ("s_base", C.L_textures[0]); C.r_End (); break; default: break; } } else { BOOL bAref = oBlend.value; // deferred rendering // codepath is the same, only the shaders differ switch(C.iElement) { case SE_R2_NORMAL_HQ: // deffer uber_deffer (C,true, "model", "base",bAref); break; case SE_R2_NORMAL_LQ: // deffer uber_deffer (C,false, "model", "base",bAref); break; case SE_R2_SHADOW: // smap if (bAref) { if (RImplementation.o.HW_smap) C.r_Pass ("shadow_direct_model_aref","shadow_direct_base_aref", FALSE,TRUE,TRUE,FALSE,D3DBLEND_ZERO,D3DBLEND_ONE,TRUE,220); else C.r_Pass ("shadow_direct_model_aref","shadow_direct_base_aref", FALSE); C.r_Sampler ("s_base", C.L_textures[0]); C.r_End (); break; } else { if (RImplementation.o.HW_smap) C.r_Pass ("shadow_direct_model","dumb", FALSE,TRUE,TRUE,FALSE); else C.r_Pass ("shadow_direct_model","shadow_direct_base", FALSE); C.r_Sampler ("s_base", C.L_textures[0]); C.r_End (); break; } } } }
void CBlender_Detail_Still::Compile (CBlender_Compile& C) { IBlender::Compile (C); switch(C.iElement) { case SE_R2_NORMAL_HQ: // deffer wave uber_deffer (C,false,"detail_w","base",true); break; case SE_R2_NORMAL_LQ: // deffer still uber_deffer (C,false,"detail_s","base",true); break; } }
void CBlender_deffer_aref::Compile(CBlender_Compile& C) { IBlender::Compile (C); // oBlend.value = FALSE ; if (oBlend.value) { switch(C.iElement) { case SE_R2_NORMAL_HQ: case SE_R2_NORMAL_LQ: if (lmapped) { C.r_Pass ("lmapE","lmapE",TRUE,TRUE,FALSE,TRUE,D3DBLEND_SRCALPHA, D3DBLEND_INVSRCALPHA, TRUE, oAREF.value); C.r_Sampler ("s_base", C.L_textures[0] ); C.r_Sampler ("s_lmap", C.L_textures[1] ); C.r_Sampler_clf ("s_hemi", *C.L_textures[2]); C.r_Sampler ("s_env", r2_T_envs0, false,D3DTADDRESS_CLAMP); C.r_End (); } else { C.r_Pass ("vert", "vert", TRUE,TRUE,FALSE,TRUE,D3DBLEND_SRCALPHA, D3DBLEND_INVSRCALPHA, TRUE, oAREF.value); C.r_Sampler ("s_base", C.L_textures[0] ); C.r_End (); } break; default: break; } } else { C.SetParams (1,false); //. // codepath is the same, only the shaders differ // ***only pixel shaders differ*** switch(C.iElement) { case SE_R2_NORMAL_HQ: // deffer uber_deffer (C,true,"base","base",true); break; case SE_R2_NORMAL_LQ: // deffer uber_deffer (C,false,"base","base",true); break; case SE_R2_SHADOW: // smap if (RImplementation.o.HW_smap) C.r_Pass ("shadow_direct_base_aref","shadow_direct_base_aref",FALSE,TRUE,TRUE,FALSE,D3DBLEND_ZERO,D3DBLEND_ONE,TRUE,220); else C.r_Pass ("shadow_direct_base_aref","shadow_direct_base_aref",FALSE); C.r_Sampler ("s_base",C.L_textures[0]); C.r_End (); break; } } }
void CBlender_deffer_flat::Compile(CBlender_Compile& C) { IBlender::Compile (C); // codepath is the same, only the shaders differ switch(C.iElement) { case SE_R2_NORMAL_HQ: // deffer uber_deffer (C,true,"base","base",false); break; case SE_R2_NORMAL_LQ: // deffer uber_deffer (C,false,"base","base",false); break; case SE_R2_SHADOW: // smap-direct if (RImplementation.o.HW_smap) C.r_Pass ("shadow_direct_base","dumb", FALSE,TRUE,TRUE,FALSE); else C.r_Pass ("shadow_direct_base","shadow_direct_base",FALSE); C.r_Sampler ("s_base",C.L_textures[0]); C.r_End (); break; } }
void CBlender_Model_EbB::Compile(CBlender_Compile& C) { IBlender::Compile (C); if (oBlend.value) { // forward LPCSTR vsname = 0; LPCSTR psname = 0; switch(C.iElement) { case 0: case 1: vsname = psname = "model_env_lq"; C.r_Pass (vsname,psname,TRUE,TRUE,FALSE,TRUE,D3DBLEND_SRCALPHA, D3DBLEND_INVSRCALPHA, TRUE,0); C.r_Sampler ("s_base", C.L_textures[0]); C.r_Sampler ("s_env", oT2_Name,false,D3DTADDRESS_CLAMP); C.r_End (); break; } } else { // deferred switch(C.iElement) { case SE_R2_NORMAL_HQ: // deffer uber_deffer (C,true, "model","base",false); break; case SE_R2_NORMAL_LQ: // deffer uber_deffer (C,false, "model","base",false); break; case SE_R2_SHADOW: // smap if (RImplementation.o.HW_smap) C.r_Pass ("shadow_direct_model","dumb", FALSE,TRUE,TRUE,FALSE); else C.r_Pass ("shadow_direct_model","shadow_direct_base", FALSE); C.r_Sampler ("s_base", C.L_textures[0]); C.r_End (); break; } } }
void CBlender_deffer_model::Compile(CBlender_Compile& C) { IBlender::Compile (C); BOOL bForward = FALSE; if (oBlend.value && oAREF.value<16) bForward = TRUE; if (oStrictSorting.value) bForward = TRUE; if (bForward) { // forward rendering LPCSTR vsname,psname; switch(C.iElement) { case 0: // case 1: // vsname = psname = "model_def_lq"; C.r_Pass (vsname,psname,TRUE,TRUE,FALSE,TRUE,D3DBLEND_SRCALPHA, D3DBLEND_INVSRCALPHA, TRUE,oAREF.value); //C.r_Sampler ("s_base", C.L_textures[0]); C.r_dx10Texture ("s_base", C.L_textures[0]); C.r_dx10Sampler ("smp_base"); C.r_End (); break; default: break; } } else { BOOL bAref = oBlend.value; // deferred rendering // codepath is the same, only the shaders differ bool bUseATOC = (bAref && (RImplementation.o.dx10_msaa_alphatest==CRender::MSAA_ATEST_DX10_0_ATOC)); C.TessMethod = oTessellation.IDselected; switch(C.iElement) { case SE_R2_NORMAL_HQ: // deffer if (bUseATOC) { uber_deffer (C,true,"model","base_atoc",bAref,0,true); C.r_Stencil ( TRUE,D3DCMP_ALWAYS,0xff,0x7f,D3DSTENCILOP_KEEP,D3DSTENCILOP_REPLACE,D3DSTENCILOP_KEEP); C.r_StencilRef (0x01); C.r_ColorWriteEnable(false, false, false, false); // Alpha to coverage. C.RS.SetRS (XRDX10RS_ALPHATOCOVERAGE, TRUE); C.r_End (); } uber_deffer (C,true, "model", "base",bAref,0,true); C.r_Stencil ( TRUE,D3DCMP_ALWAYS,0xff,0x7f,D3DSTENCILOP_KEEP,D3DSTENCILOP_REPLACE,D3DSTENCILOP_KEEP); C.r_StencilRef (0x01); if (bUseATOC) C.RS.SetRS ( D3DRS_ZFUNC, D3DCMP_EQUAL); C.r_End (); break; case SE_R2_NORMAL_LQ: // deffer if (bUseATOC) { uber_deffer (C,false,"model","base_atoc",bAref,0,true); C.r_Stencil ( TRUE,D3DCMP_ALWAYS,0xff,0x7f,D3DSTENCILOP_KEEP,D3DSTENCILOP_REPLACE,D3DSTENCILOP_KEEP); C.r_StencilRef (0x01); C.r_ColorWriteEnable(false, false, false, false); // Alpha to coverage. C.RS.SetRS (XRDX10RS_ALPHATOCOVERAGE, TRUE); C.r_End (); } uber_deffer (C,false, "model", "base",bAref,0,true); C.r_Stencil ( TRUE,D3DCMP_ALWAYS,0xff,0x7f,D3DSTENCILOP_KEEP,D3DSTENCILOP_REPLACE,D3DSTENCILOP_KEEP); C.r_StencilRef (0x01); if (bUseATOC) C.RS.SetRS ( D3DRS_ZFUNC, D3DCMP_EQUAL); C.r_End (); break; case SE_R2_SHADOW: // smap if (bAref) { //if (RImplementation.o.HW_smap) C.r_Pass ("shadow_direct_model_aref","shadow_direct_base_aref", FALSE,TRUE,TRUE,FALSE,D3DBLEND_ZERO,D3DBLEND_ONE,TRUE,220); //else C.r_Pass ("shadow_direct_model_aref","shadow_direct_base_aref", FALSE); //C.r_Sampler ("s_base",C.L_textures[0]); C.r_Pass ("shadow_direct_model_aref","shadow_direct_base_aref", FALSE,TRUE,TRUE,FALSE,D3DBLEND_ZERO,D3DBLEND_ONE,TRUE,220); C.r_dx10Texture ("s_base",C.L_textures[0]); C.r_dx10Sampler ("smp_base"); C.r_dx10Sampler ("smp_linear"); C.r_ColorWriteEnable(false, false, false, false); C.r_End (); break; } else { //if (RImplementation.o.HW_smap) C.r_Pass ("shadow_direct_model","dumb", FALSE,TRUE,TRUE,FALSE); //else C.r_Pass ("shadow_direct_model","shadow_direct_base",FALSE); C.r_Pass ("shadow_direct_model","dumb", FALSE,TRUE,TRUE,FALSE); //C.r_Sampler ("s_base",C.L_textures[0]); C.r_dx10Texture ("s_base",C.L_textures[0]); C.r_dx10Sampler ("smp_base"); C.r_dx10Sampler ("smp_linear"); C.r_ColorWriteEnable(false, false, false, false); C.r_End (); break; } } } }