本文整理汇总了C++中CBlender_Compile::r_dx10Texture方法的典型用法代码示例。如果您正苦于以下问题:C++ CBlender_Compile::r_dx10Texture方法的具体用法?C++ CBlender_Compile::r_dx10Texture怎么用?C++ CBlender_Compile::r_dx10Texture使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类CBlender_Compile
的用法示例。
在下文中一共展示了CBlender_Compile::r_dx10Texture方法的8个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: atoi
// TODO: DX10: implement CBlender_accum_direct::Compile
void CBlender_accum_direct_volumetric_msaa::Compile(CBlender_Compile& C)
{
IBlender::Compile (C);
if( Name )
::Render->m_MSAASample = atoi( Definition );
else
::Render->m_MSAASample = -1;
// BOOL b_HW_smap = RImplementation.o.HW_smap;
// BOOL b_HW_PCF = RImplementation.o.HW_smap_PCF;
BOOL blend = FALSE; //RImplementation.o.fp16_blend;
D3DBLEND dest = blend?D3DBLEND_ONE:D3DBLEND_ZERO;
if (RImplementation.o.sunfilter) { blend = FALSE; dest = D3DBLEND_ZERO; }
switch (C.iElement)
{
case 0: // near pass - enable Z-test to perform depth-clipping
C.r_Pass ("stub_notransform_2uv","accum_volumetric_sun_msaa", false, TRUE, FALSE,blend,D3DBLEND_ONE,dest);
C.r_dx10Texture ("s_lmap", C.L_textures[0]);
C.r_dx10Texture ("s_smap", r2_RT_smap_depth);
C.r_dx10Texture ("s_noise", "fx\\fx_noise");
C.r_dx10Sampler ("smp_rtlinear");
C.r_dx10Sampler ("smp_linear");
C.r_dx10Sampler ("smp_smap");
C.r_End ();
break;
}
::Render->m_MSAASample = -1;
}
示例2: Compile
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;
}
}
}
示例3:
void CBlender_combine::Compile(CBlender_Compile& C)
{
IBlender::Compile (C);
switch (C.iElement)
{
case 0: // combine
C.r_Pass ("combine_1", "combine_1_nomsaa", FALSE, FALSE, FALSE, TRUE, D3DBLEND_INVSRCALPHA, D3DBLEND_SRCALPHA); //. MRT-blend?
C.r_Stencil (TRUE,D3DCMP_LESSEQUAL,0xff,0x00); // stencil should be >= 1
C.r_StencilRef (0x01);
//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_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 );
C.r_dx10Texture ("s_position", r2_RT_P );
C.r_dx10Texture ("s_normal", r2_RT_N );
C.r_dx10Texture ("s_diffuse", r2_RT_albedo );
C.r_dx10Texture ("s_accumulator", r2_RT_accum );
C.r_dx10Texture ("s_depth", r2_RT_depth );
C.r_dx10Texture ("s_tonemap", r2_RT_luminance_cur );
C.r_dx10Texture ("s_material", r2_material );
C.r_dx10Texture ("env_s0", r2_T_envs0 );
C.r_dx10Texture ("env_s1", r2_T_envs1 );
C.r_dx10Texture ("sky_s0", r2_T_sky0 );
C.r_dx10Texture ("sky_s1", r2_T_sky1 );
C.r_dx10Texture ("s_occ", r2_RT_ssao_temp );
C.r_dx10Texture ("s_half_depth", r2_RT_half_depth );
jitter(C);
C.r_dx10Sampler ("smp_nofilter");
C.r_dx10Sampler ("smp_material");
C.r_dx10Sampler ("smp_rtlinear");
C.r_End ();
break;
case 1: // aa-edge-detection + AA :)
C.r_Pass ("stub_notransform_aa_AA","combine_2_AA", 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_dx10Texture ("s_position", r2_RT_P);
C.r_dx10Texture ("s_normal", r2_RT_N);
C.r_dx10Texture ("s_image", r2_RT_generic0);
C.r_dx10Texture ("s_bloom", r2_RT_bloom1);
C.r_dx10Texture ("s_distort", r2_RT_generic1);
C.r_dx10Sampler ("smp_nofilter");
C.r_dx10Sampler ("smp_rtlinear");
C.r_End ();
break;
case 2: // non-AA
// Can use simpler VS (need only Tex0)
C.r_Pass ("stub_notransform_aa_AA","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_dx10Texture ("s_position", r2_RT_P);
C.r_dx10Texture ("s_normal", r2_RT_N);
C.r_dx10Texture ("s_image", r2_RT_generic0);
C.r_dx10Texture ("s_bloom", r2_RT_bloom1);
C.r_dx10Texture ("s_distort", r2_RT_generic1);
C.r_dx10Sampler ("smp_nofilter");
C.r_dx10Sampler ("smp_rtlinear");
C.r_End ();
break;
case 3: // aa-edge-detection + AA :) + DISTORTION
C.r_Pass ("stub_notransform_aa_AA","combine_2_AA_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_dx10Texture ("s_position", r2_RT_P);
C.r_dx10Texture ("s_normal", r2_RT_N);
C.r_dx10Texture ("s_image", r2_RT_generic0);
C.r_dx10Texture ("s_bloom", r2_RT_bloom1);
C.r_dx10Texture ("s_distort", r2_RT_generic1);
C.r_dx10Sampler ("smp_nofilter");
C.r_dx10Sampler ("smp_rtlinear");
C.r_End ();
break;
case 4: // non-AA + DISTORTION
// Can use simpler VS (need only Tex0)
//.........这里部分代码省略.........
示例4:
void CBlender_accum_direct::Compile(CBlender_Compile& C)
{
IBlender::Compile (C);
// BOOL b_HW_smap = RImplementation.o.HW_smap;
// BOOL b_HW_PCF = RImplementation.o.HW_smap_PCF;
BOOL blend = FALSE; //RImplementation.o.fp16_blend;
D3DBLEND dest = blend?D3DBLEND_ONE:D3DBLEND_ZERO;
if (RImplementation.o.sunfilter) { blend = FALSE; dest = D3DBLEND_ZERO; }
switch (C.iElement)
{
case SE_SUN_NEAR: // near pass - enable Z-test to perform depth-clipping
// FVF::TL2uv
C.r_Pass ("stub_notransform_2uv","accum_sun_near_nomsaa_nominmax", false, TRUE, FALSE,blend,D3DBLEND_ONE,dest);
C.r_CullMode (D3DCULL_NONE);
C.PassSET_ZB (TRUE,FALSE,TRUE ); // force inverted Z-Buffer
C.r_dx10Texture ("s_position", r2_RT_P);
C.r_dx10Texture ("s_normal", r2_RT_N);
C.r_dx10Texture ("s_material", r2_material);
C.r_dx10Texture ("s_accumulator", r2_RT_accum);
C.r_dx10Texture ("s_lmap", r2_sunmask);
C.r_dx10Texture ("s_smap", r2_RT_smap_depth);
C.r_dx10Texture ("s_smap_minmax", r2_RT_smap_depth_minmax);
C.r_dx10Sampler ("smp_nofilter");
C.r_dx10Sampler ("smp_material");
C.r_dx10Sampler ("smp_linear");
jitter (C);
C.r_dx10Sampler ("smp_smap");
C.r_End ();
break;
case SE_SUN_FAR: // far pass, only stencil clipping performed
// FVF::TL2uv
//C.r_Pass ("null", "accum_sun_far", false, TRUE, FALSE,blend,D3DBLEND_ONE,dest);
C.r_Pass ("stub_notransform_2uv","accum_sun_far_nomsaa", false, TRUE, FALSE,blend,D3DBLEND_ONE,dest);
C.r_CullMode (D3DCULL_NONE);
//C.r_Sampler_rtf ("s_position", r2_RT_P );
//C.r_Sampler_rtf ("s_normal", r2_RT_N );
//C.r_Sampler_clw ("s_material", r2_material );
//C.r_Sampler_rtf ("s_accumulator", r2_RT_accum );
//C.r_Sampler ("s_lmap", r2_sunmask );
//if (b_HW_smap) {
// if (b_HW_PCF) C.r_Sampler_clf ("s_smap",r2_RT_smap_depth );
// else {
// C.r_Sampler_rtf ("s_smap",r2_RT_smap_depth );
// }
//}
//else C.r_Sampler_rtf ("s_smap",r2_RT_smap_surf );
//jitter (C);
C.r_dx10Texture ("s_position", r2_RT_P);
C.r_dx10Texture ("s_normal", r2_RT_N);
C.r_dx10Texture ("s_material", r2_material);
C.r_dx10Texture ("s_accumulator", r2_RT_accum);
C.r_dx10Texture ("s_lmap", r2_sunmask);
C.r_dx10Texture ("s_smap", r2_RT_smap_depth);
C.r_dx10Sampler ("smp_nofilter");
C.r_dx10Sampler ("smp_material");
C.r_dx10Sampler ("smp_linear");
jitter (C);
C.r_dx10Sampler ("smp_smap");
C.r_End ();
break;
case SE_SUN_LUMINANCE: // luminance pass
//C.r_Pass ("null", "accum_sun", false, FALSE, FALSE);
C.r_Pass ("stub_notransform_aa_AA","accum_sun_nomsaa", false, FALSE, FALSE);
C.r_CullMode (D3DCULL_NONE);
//C.r_Sampler_rtf ("s_position", r2_RT_P );
//C.r_Sampler_rtf ("s_normal", r2_RT_N );
//C.r_Sampler_clw ("s_material", r2_material );
//C.r_Sampler_clf ("s_smap", r2_RT_generic0 );
//jitter (C);
C.r_dx10Texture ("s_position", r2_RT_P);
C.r_dx10Texture ("s_normal", r2_RT_N);
C.r_dx10Texture ("s_material", r2_material);
C.r_dx10Texture ("s_smap", r2_RT_generic0);
C.r_dx10Sampler ("smp_nofilter");
C.r_dx10Sampler ("smp_material");
jitter (C);
C.r_End ();
break;
// SE_SUN_NEAR for min/max
case SE_SUN_NEAR_MINMAX: // near pass - enable Z-test to perform depth-clipping
// FVF::TL2uv
C.r_Pass ("stub_notransform_2uv","accum_sun_near_nomsaa_minmax", false, TRUE, FALSE,blend,D3DBLEND_ONE,dest);
C.r_CullMode (D3DCULL_NONE);
C.PassSET_ZB (TRUE,FALSE,TRUE ); // force inverted Z-Buffer
C.r_dx10Texture ("s_position", r2_RT_P);
C.r_dx10Texture ("s_normal", r2_RT_N);
C.r_dx10Texture ("s_material", r2_material);
//.........这里部分代码省略.........
示例5: atoi
// TODO: DX10: implement CBlender_accum_direct::Compile
void CBlender_accum_direct_msaa::Compile(CBlender_Compile& C)
{
IBlender::Compile (C);
if( Name )
::Render->m_MSAASample = atoi( Definition );
else
::Render->m_MSAASample = -1;
// BOOL b_HW_smap = RImplementation.o.HW_smap;
// BOOL b_HW_PCF = RImplementation.o.HW_smap_PCF;
BOOL blend = FALSE; //RImplementation.o.fp16_blend;
D3DBLEND dest = blend?D3DBLEND_ONE:D3DBLEND_ZERO;
if (RImplementation.o.sunfilter) { blend = FALSE; dest = D3DBLEND_ZERO; }
switch (C.iElement)
{
case SE_SUN_NEAR: // near pass - enable Z-test to perform depth-clipping
case SE_SUN_MIDDLE: // middle pass - enable Z-test to perform depth-clipping
// FVF::TL2uv
//C.r_Pass ("null", "accum_sun_near", false, TRUE, FALSE,blend,D3DBLEND_ONE,dest);
C.r_Pass ("accum_sun","accum_sun_near_msaa_nominmax", false, TRUE, FALSE,blend,D3DBLEND_ONE,dest);
C.r_CullMode (D3DCULL_NONE);
C.PassSET_ZB (TRUE,FALSE,TRUE ); // force inverted Z-Buffer
//C.r_Sampler_rtf ("s_position", r2_RT_P );
//C.r_Sampler_rtf ("s_normal", r2_RT_N );
//C.r_Sampler_clw ("s_material", r2_material );
//C.r_Sampler_rtf ("s_accumulator", r2_RT_accum );
//C.r_Sampler ("s_lmap", r2_sunmask );
//if (b_HW_smap) {
// if (b_HW_PCF) C.r_Sampler_clf ("s_smap",r2_RT_smap_depth );
// else {
// C.r_Sampler_rtf ("s_smap",r2_RT_smap_depth );
// }
//}
//else C.r_Sampler_rtf ("s_smap",r2_RT_smap_surf );
//jitter (C);
C.r_dx10Texture ("s_position", r2_RT_P);
C.r_dx10Texture ("s_normal", r2_RT_N);
C.r_dx10Texture ("s_material", r2_material);
C.r_dx10Texture ("s_accumulator", r2_RT_accum);
C.r_dx10Texture ("s_lmap", r2_sunmask);
C.r_dx10Texture ("s_smap", r2_RT_smap_depth);
C.r_dx10Sampler ("smp_nofilter");
C.r_dx10Sampler ("smp_material");
C.r_dx10Sampler ("smp_linear");
jitter (C);
C.r_dx10Sampler ("smp_smap");
C.r_End ();
break;
case SE_SUN_FAR: // far pass, only stencil clipping performed
// FVF::TL2uv
//C.r_Pass ("null", "accum_sun_far", false, TRUE, FALSE,blend,D3DBLEND_ONE,dest);
C.r_Pass ("accum_sun","accum_sun_far_msaa", false, TRUE, FALSE,blend,D3DBLEND_ONE,dest);
C.r_CullMode (D3DCULL_NONE);
//C.r_Sampler_rtf ("s_position", r2_RT_P );
//C.r_Sampler_rtf ("s_normal", r2_RT_N );
//C.r_Sampler_clw ("s_material", r2_material );
//C.r_Sampler_rtf ("s_accumulator", r2_RT_accum );
//C.r_Sampler ("s_lmap", r2_sunmask );
//if (b_HW_smap) {
// if (b_HW_PCF) C.r_Sampler_clf ("s_smap",r2_RT_smap_depth );
// else {
// C.r_Sampler_rtf ("s_smap",r2_RT_smap_depth );
// }
//}
//else C.r_Sampler_rtf ("s_smap",r2_RT_smap_surf );
//jitter (C);
C.r_dx10Texture ("s_position", r2_RT_P);
C.r_dx10Texture ("s_normal", r2_RT_N);
C.r_dx10Texture ("s_material", r2_material);
C.r_dx10Texture ("s_accumulator", r2_RT_accum);
C.r_dx10Texture ("s_lmap", r2_sunmask);
C.r_dx10Texture ("s_smap", r2_RT_smap_depth);
C.r_dx10Sampler ("smp_nofilter");
C.r_dx10Sampler ("smp_material");
C.r_dx10Sampler ("smp_linear");
jitter (C);
{
u32 s = C.r_dx10Sampler("smp_smap");
C.i_dx10Address (s, D3DTADDRESS_BORDER);
C.i_dx10BorderColor (s, D3DCOLOR_ARGB(255, 255, 255, 255));
}
C.r_End ();
break;
case SE_SUN_LUMINANCE: // luminance pass
//C.r_Pass ("null", "accum_sun", false, FALSE, FALSE);
C.r_Pass ("stub_notransform_aa_AA","accum_sun_msaa", false, FALSE, FALSE);
C.r_CullMode (D3DCULL_NONE);
//C.r_Sampler_rtf ("s_position", r2_RT_P );
//C.r_Sampler_rtf ("s_normal", r2_RT_N );
//C.r_Sampler_clw ("s_material", r2_material );
//C.r_Sampler_clf ("s_smap", r2_RT_generic0 );
//.........这里部分代码省略.........
示例6: if
//.........这里部分代码省略.........
xr_strcat(params, "TESS_HM,");
}
if (lmap)
{
RImplementation.addShaderOption("USE_LM_HEMI", "1");
xr_strcat(params, "USE_LM_HEMI,");
}
if (C.bDetail_Diffuse)
{
RImplementation.addShaderOption("USE_TDETAIL", "1");
xr_strcat(params, "USE_TDETAIL,");
}
if (C.bDetail_Bump)
{
RImplementation.addShaderOption("USE_TDETAIL_BUMP", "1");
xr_strcat(params, "USE_TDETAIL_BUMP,");
}
xr_strcat(params, ")");
strconcat(sizeof(vs),vs,"deffer_", _vspec, "_bump", params);
strconcat(sizeof(ps),ps,"deffer_", _pspec, _aref?"_aref":"", "_bump", params);
strconcat(sizeof(hs),hs,"DX11\\tess", params);
strconcat(sizeof(ds),ds,"DX11\\tess", params);
VERIFY(strstr(vs, "bump")!=0);
VERIFY(strstr(ps, "bump")!=0);
C.r_TessPass (vs, hs, ds, "null", ps, FALSE);
RImplementation.clearAllShaderOptions();
u32 stage = C.r_dx10Sampler("smp_bump_ds");
if (stage != -1)
{
C.i_dx10Address(stage, D3DTADDRESS_WRAP);
C.i_dx10FilterAnizo(stage, TRUE);
}
if (ps_r2_ls_flags_ext.test(R2FLAGEXT_WIREFRAME))
C.R().SetRS(D3DRS_FILLMODE, D3DFILL_WIREFRAME);
C.r_dx10Texture ("s_tbump", fnameA);
C.r_dx10Texture ("s_tbumpX", fnameB); // should be before base bump
if (bHasDetailBump)
{
C.r_dx10Texture ("s_tdetailBumpX", texDetailBumpX);
}
}
else
# endif
C.r_Pass (vs,ps, FALSE);
//C.r_Sampler ("s_base", C.L_textures[0], false, D3DTADDRESS_WRAP, D3DTEXF_ANISOTROPIC,D3DTEXF_LINEAR, D3DTEXF_ANISOTROPIC);
//C.r_Sampler ("s_bumpX", fnameB, false, D3DTADDRESS_WRAP, D3DTEXF_ANISOTROPIC,D3DTEXF_LINEAR, D3DTEXF_ANISOTROPIC); // should be before base bump
//C.r_Sampler ("s_bump", fnameA, false, D3DTADDRESS_WRAP, D3DTEXF_ANISOTROPIC,D3DTEXF_LINEAR, D3DTEXF_ANISOTROPIC);
//C.r_Sampler ("s_bumpD", dt, false, D3DTADDRESS_WRAP, D3DTEXF_ANISOTROPIC,D3DTEXF_LINEAR, D3DTEXF_ANISOTROPIC);
//C.r_Sampler ("s_detail", dt, false, D3DTADDRESS_WRAP, D3DTEXF_ANISOTROPIC,D3DTEXF_LINEAR, D3DTEXF_ANISOTROPIC);
C.r_dx10Texture ("s_base", C.L_textures[0]);
C.r_dx10Texture ("s_bumpX", fnameB); // should be before base bump
C.r_dx10Texture ("s_bump", fnameA);
C.r_dx10Texture ("s_bumpD", dt);
C.r_dx10Texture ("s_detail", dt);
if (bHasDetailBump)
{
C.r_dx10Texture ("s_detailBump", texDetailBump);
C.r_dx10Texture ("s_detailBumpX", texDetailBumpX);
}
C.r_dx10Sampler ("smp_base");
if (lmap)
{
//C.r_Sampler("s_hemi", C.L_textures[2], false, D3DTADDRESS_CLAMP, D3DTEXF_LINEAR, D3DTEXF_NONE, D3DTEXF_LINEAR);
C.r_dx10Texture ("s_hemi", C.L_textures[2]);
C.r_dx10Sampler ("smp_rtlinear");
}
#else // USE_DX10
C.r_Pass (vs,ps, FALSE);
VERIFY(C.L_textures[0].size());
if(bump)
{
VERIFY2(xr_strlen(fnameB), C.L_textures[0].c_str());
VERIFY2(xr_strlen(fnameA), C.L_textures[0].c_str());
}
if(bHasDetailBump)
{
VERIFY2(xr_strlen(texDetailBump), C.L_textures[0].c_str());
VERIFY2(xr_strlen(texDetailBumpX), C.L_textures[0].c_str());
}
C.r_Sampler ("s_base", C.L_textures[0], false, D3DTADDRESS_WRAP, D3DTEXF_ANISOTROPIC,D3DTEXF_LINEAR, D3DTEXF_ANISOTROPIC);
C.r_Sampler ("s_bumpX", fnameB, false, D3DTADDRESS_WRAP, D3DTEXF_ANISOTROPIC,D3DTEXF_LINEAR, D3DTEXF_ANISOTROPIC); // should be before base bump
C.r_Sampler ("s_bump", fnameA, false, D3DTADDRESS_WRAP, D3DTEXF_ANISOTROPIC,D3DTEXF_LINEAR, D3DTEXF_ANISOTROPIC);
C.r_Sampler ("s_bumpD", dt, false, D3DTADDRESS_WRAP, D3DTEXF_ANISOTROPIC,D3DTEXF_LINEAR, D3DTEXF_ANISOTROPIC);
C.r_Sampler ("s_detail", dt, false, D3DTADDRESS_WRAP, D3DTEXF_ANISOTROPIC,D3DTEXF_LINEAR, D3DTEXF_ANISOTROPIC);
if (bHasDetailBump)
{
C.r_Sampler ("s_detailBump", texDetailBump, false, D3DTADDRESS_WRAP, D3DTEXF_ANISOTROPIC,D3DTEXF_LINEAR, D3DTEXF_ANISOTROPIC);
C.r_Sampler ("s_detailBumpX",texDetailBumpX,false, D3DTADDRESS_WRAP, D3DTEXF_ANISOTROPIC,D3DTEXF_LINEAR, D3DTEXF_ANISOTROPIC);
}
if (lmap)C.r_Sampler("s_hemi", C.L_textures[2], false, D3DTADDRESS_CLAMP, D3DTEXF_LINEAR, D3DTEXF_NONE, D3DTEXF_LINEAR);
#endif // USE_DX10
if (!DO_NOT_FINISH) C.r_End ();
}
示例7: uber_shadow
void uber_shadow(CBlender_Compile& C, LPCSTR _vspec)
{
// Uber-parse
string256 fname,fnameA,fnameB;
xr_strcpy (fname,*C.L_textures[0]); //. andy if (strext(fname)) *strext(fname)=0;
fix_texture_name(fname);
ref_texture _t; _t.create (fname);
bool bump = _t.bump_exist ();
// detect lmap
bool lmap = true;
if (C.L_textures.size()<3) lmap = false;
else
{
pcstr tex = C.L_textures[2].c_str();
if (tex[0]=='l' && tex[1]=='m' && tex[2]=='a' && tex[3]=='p') lmap = true ;
else lmap = false;
}
string256 vs,dt;
xr_strcpy (dt,sizeof(dt),C.detail_texture?C.detail_texture:"");
// detect detail bump
string256 texDetailBump = {'\0'};
string256 texDetailBumpX = {'\0'};
bool bHasDetailBump = false;
if (C.bDetail_Bump)
{
LPCSTR detail_bump_texture = DEV->m_textures_description.GetBumpName(dt).c_str();
// Detect and use detail bump
if ( detail_bump_texture )
{
bHasDetailBump = true;
xr_strcpy ( texDetailBump, sizeof(texDetailBump), detail_bump_texture);
xr_strcpy ( texDetailBumpX, sizeof(texDetailBumpX), detail_bump_texture);
xr_strcat ( texDetailBumpX, "#");
}
}
if (!bump)
{
fnameA[0] = fnameB[0] = 0;
}
else
{
xr_strcpy (fnameA,_t.bump_get().c_str());
strconcat (sizeof(fnameB),fnameB,fnameA,"#");
}
if (bump && RImplementation.o.dx11_enable_tessellation && C.TessMethod!=0)
{
char hs[256], ds[256];// = "DX11\\tess", ds[256] = "DX11\\tess";
char params[256] = "(";
if (C.TessMethod == CBlender_Compile::TESS_PN || C.TessMethod == CBlender_Compile::TESS_PN_HM)
{
RImplementation.addShaderOption("TESS_PN", "1");
xr_strcat(params, "TESS_PN,");
}
if (C.TessMethod == CBlender_Compile::TESS_HM || C.TessMethod == CBlender_Compile::TESS_PN_HM)
{
RImplementation.addShaderOption("TESS_HM", "1");
xr_strcat(params, "TESS_HM,");
}
if (lmap)
{
RImplementation.addShaderOption("USE_LM_HEMI", "1");
xr_strcat(params, "USE_LM_HEMI,");
}
if (C.bDetail_Diffuse)
{
RImplementation.addShaderOption("USE_TDETAIL", "1");
xr_strcat(params, "USE_TDETAIL,");
}
if (C.bDetail_Bump)
{
RImplementation.addShaderOption("USE_TDETAIL_BUMP", "1");
xr_strcat(params, "USE_TDETAIL_BUMP,");
}
xr_strcat(params, ")");
strconcat(sizeof(vs),vs,"deffer_", _vspec, "_bump", params);
strconcat(sizeof(hs),hs,"DX11\\tess", params);
strconcat(sizeof(ds),ds,"DX11\\tess_shadow", params);
C.r_TessPass (vs, hs, ds, "null", "dumb", FALSE,TRUE,TRUE,FALSE);
RImplementation.clearAllShaderOptions();
C.r_dx10Texture ("s_base", C.L_textures[0]);
C.r_dx10Texture ("s_bumpX", fnameB); // should be before base bump
C.r_dx10Texture ("s_bump", fnameA);
if (bHasDetailBump)
{
C.r_dx10Texture ("s_detailBump", texDetailBump);
//.........这里部分代码省略.........
示例8:
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;
}
}
//.........这里部分代码省略.........