END_SHADER_PARAMS SHADER_INIT_PARAMS() { SET_FLAGS2( MATERIAL_VAR2_NEEDS_TANGENT_SPACES ); SET_FLAGS( MATERIAL_VAR_TRANSLUCENT ); if( !params[ENVMAPTINT]->IsDefined() ) { params[ENVMAPTINT]->SetVecValue( 1.0f, 1.0f, 1.0f ); } if( !params[ENVMAPCONTRAST]->IsDefined() ) { params[ENVMAPCONTRAST]->SetFloatValue( 0.0f ); } if( !params[ENVMAPSATURATION]->IsDefined() ) { params[ENVMAPSATURATION]->SetFloatValue( 1.0f ); } if( !params[ENVMAPFRAME]->IsDefined() ) { params[ENVMAPFRAME]->SetIntValue( 0 ); } if( !params[BASETEXTURE]->IsDefined() ) { SET_FLAGS2( MATERIAL_VAR2_NEEDS_POWER_OF_TWO_FRAME_BUFFER_TEXTURE ); } }
void InitParamsCloakBlendedPass( CBaseVSShader *pShader, IMaterialVar** params, const char *pMaterialName, CloakBlendedPassVars_t &info ) { // Set material flags SET_FLAGS2( MATERIAL_VAR2_SUPPORTS_HW_SKINNING ); SET_FLAGS( MATERIAL_VAR_MODEL ); SET_FLAGS2( MATERIAL_VAR2_NEEDS_TANGENT_SPACES ); // Set material parameter default values if ( ( info.m_nCloakFactor != -1 ) && ( !params[info.m_nCloakFactor]->IsDefined() ) ) { params[info.m_nCloakFactor]->SetFloatValue( kDefaultCloakFactor ); } if ( ( info.m_nRefractAmount != -1 ) && ( !params[info.m_nRefractAmount]->IsDefined() ) ) { params[info.m_nRefractAmount]->SetFloatValue( kDefaultRefractAmount ); } if ( ( info.m_nCloakColorTint != -1 ) && ( !params[info.m_nCloakColorTint]->IsDefined() ) ) { params[info.m_nCloakColorTint]->SetVecValue( kDefaultCloakColorTint[0], kDefaultCloakColorTint[1], kDefaultCloakColorTint[2], kDefaultCloakColorTint[3] ); } if( (info.m_nBumpFrame != -1 ) && !params[info.m_nBumpFrame]->IsDefined() ) { params[info.m_nBumpFrame]->SetIntValue( 0 ); } }
END_SHADER_PARAMS SHADER_INIT_PARAMS() { if( !params[ABOVEWATER]->IsDefined() ) { params[ABOVEWATER]->SetIntValue( 1 ); } SET_FLAGS2( MATERIAL_VAR2_NEEDS_TANGENT_SPACES ); if( !params[CHEAPWATERSTARTDISTANCE]->IsDefined() ) { params[CHEAPWATERSTARTDISTANCE]->SetFloatValue( 500.0f ); } if( !params[CHEAPWATERENDDISTANCE]->IsDefined() ) { params[CHEAPWATERENDDISTANCE]->SetFloatValue( 1000.0f ); } if( !params[SCALE]->IsDefined() ) { params[SCALE]->SetVecValue( 1.0f, 1.0f ); } if( !params[SCROLL1]->IsDefined() ) { params[SCROLL1]->SetVecValue( 0.0f, 0.0f, 0.0f ); } if( !params[SCROLL2]->IsDefined() ) { params[SCROLL2]->SetVecValue( 0.0f, 0.0f, 0.0f ); } if( !params[FOGCOLOR]->IsDefined() ) { params[FOGCOLOR]->SetVecValue( 1.0f, 0.0f, 0.0f ); Warning( "material %s needs to have a $fogcolor.\n", pMaterialName ); } if( !params[REFLECTENTITIES]->IsDefined() ) { params[REFLECTENTITIES]->SetIntValue( 0 ); } if( !params[REFLECTBLENDFACTOR]->IsDefined() ) { params[REFLECTBLENDFACTOR]->SetFloatValue( 1.0f ); } // By default, we're force expensive on dx9 if( !params[FORCEEXPENSIVE]->IsDefined() ) { params[FORCEEXPENSIVE]->SetIntValue( 1 ); } if( params[FORCEEXPENSIVE]->GetIntValue() && params[FORCECHEAP]->GetIntValue() ) { params[FORCEEXPENSIVE]->SetIntValue( 0 ); } // Fallbacks for water need lightmaps usually if ( !params[NOLOWENDLIGHTMAP]->GetIntValue() ) { SET_FLAGS2( MATERIAL_VAR2_LIGHTING_LIGHTMAP ); } }
END_SHADER_PARAMS SHADER_INIT_PARAMS() { SET_FLAGS2( MATERIAL_VAR2_SUPPORTS_HW_SKINNING ); if( !params[ENVMAPMASKSCALE]->IsDefined() ) params[ENVMAPMASKSCALE]->SetFloatValue( 1.0f ); if( !params[ENVMAPTINT]->IsDefined() ) params[ENVMAPTINT]->SetVecValue( 1.0f, 1.0f, 1.0f ); if( !params[SELFILLUMTINT]->IsDefined() ) params[SELFILLUMTINT]->SetVecValue( 1.0f, 1.0f, 1.0f ); if( !params[DETAILSCALE]->IsDefined() ) params[DETAILSCALE]->SetFloatValue( 4.0f ); // No envmap uses mode 0, it's one less pass // Also, if multipass = 0, then go to mode 0 also if ( ( !params[ENVMAP]->IsDefined() ) || ( !IS_FLAG_SET(MATERIAL_VAR_MULTIPASS) ) ) { CLEAR_FLAGS( MATERIAL_VAR_ENVMAPMODE ); } // Vertex color requires mode 1 if ( IS_FLAG_SET(MATERIAL_VAR_VERTEXCOLOR) ) { SET_FLAGS( MATERIAL_VAR_ENVMAPMODE ); } // No texture means no self-illum or env mask in base alpha if ( !params[BASETEXTURE]->IsDefined() ) { CLEAR_FLAGS( MATERIAL_VAR_SELFILLUM ); CLEAR_FLAGS( MATERIAL_VAR_BASEALPHAENVMAPMASK ); } // If in decal mode, no debug override... if ( IS_FLAG_SET(MATERIAL_VAR_DECAL) ) { SET_FLAGS( MATERIAL_VAR_NO_DEBUG_OVERRIDE ); } SET_FLAGS2( MATERIAL_VAR2_LIGHTING_VERTEX_LIT ); SET_FLAGS2( MATERIAL_VAR2_NEEDS_SOFTWARE_LIGHTING ); // Get rid of the envmap if it's optional for this dx level. if( params[ENVMAPOPTIONAL]->IsDefined() && params[ENVMAPOPTIONAL]->GetIntValue() ) { params[ENVMAP]->SetUndefined(); } // If mat_specular 0, then get rid of envmap if( !g_pConfig->UseSpecular() && params[ENVMAP]->IsDefined() && params[BASETEXTURE]->IsDefined() ) { params[ENVMAP]->SetUndefined(); } }
//----------------------------------------------------------------------------- // Initialize shader parameters //----------------------------------------------------------------------------- void InitParamsPhong_DX9( CBaseVSShader *pShader, IMaterialVar** params, const char *pMaterialName, VertexLitGeneric_DX9_Vars_t &info ) { // FLASHLIGHTFIXME: Do ShaderAPI::BindFlashlightTexture Assert( info.m_nFlashlightTexture >= 0 ); params[FLASHLIGHTTEXTURE]->SetStringValue( GetFlashlightTextureFilename() ); // Write over $basetexture with $info.m_nBumpmap if we are going to be using diffuse normal mapping. if( info.m_nAlbedo != -1 && g_pConfig->UseBumpmapping() && info.m_nBumpmap != -1 && params[info.m_nBumpmap]->IsDefined() && params[info.m_nAlbedo]->IsDefined() && params[info.m_nBaseTexture]->IsDefined() ) { params[info.m_nBaseTexture]->SetStringValue( params[info.m_nAlbedo]->GetStringValue() ); } // This shader can be used with hw skinning SET_FLAGS2( MATERIAL_VAR2_SUPPORTS_HW_SKINNING ); SET_FLAGS2( MATERIAL_VAR2_LIGHTING_VERTEX_LIT ); // No texture means no env mask in base alpha if ( !params[info.m_nBaseTexture]->IsDefined() ) { CLEAR_FLAGS( MATERIAL_VAR_BASEALPHAENVMAPMASK ); } // If in decal mode, no debug override... if (IS_FLAG_SET(MATERIAL_VAR_DECAL)) { SET_FLAGS( MATERIAL_VAR_NO_DEBUG_OVERRIDE ); } // We always specify we're using user data, therefore we always need tangent spaces SET_FLAGS2( MATERIAL_VAR2_NEEDS_TANGENT_SPACES ); bool bBump = (info.m_nBumpmap != -1) && g_pConfig->UseBumpmapping() && params[info.m_nBumpmap]->IsDefined(); bool bEnvMap = (info.m_nEnvmap != -1) && params[info.m_nEnvmap]->IsDefined(); bool bDiffuseWarp = (info.m_nDiffuseWarpTexture != -1) && params[info.m_nDiffuseWarpTexture]->IsDefined(); bool bPhong = (info.m_nPhong != -1) && params[info.m_nPhong]->IsDefined(); if( !bBump && !bEnvMap && !bDiffuseWarp && !bPhong ) { CLEAR_FLAGS( MATERIAL_VAR_NORMALMAPALPHAENVMAPMASK ); } if ( ( info.m_nSelfIllumFresnelMinMaxExp != -1 ) && ( !params[info.m_nSelfIllumFresnelMinMaxExp]->IsDefined() ) ) { params[info.m_nSelfIllumFresnelMinMaxExp]->SetVecValue( 0.0f, 1.0f, 1.0f ); } InitFloatParam( info.m_nEnvmapFresnel, params, 0.0f ); InitFloatParam( info.m_nAmbientOcclusion, params, 0.0f ); InitFloatParam( info.m_nDisplacementWrinkleMap, params, 0.0f ); InitIntParam( info.m_nSelfIllumFresnel, params, 0 ); InitIntParam( info.m_nBaseMapAlphaPhongMask, params, 0 ); InitIntParam( info.m_nBaseMapLuminancePhongMask, params, 0 ); InitIntParam( info.m_nShaderSrgbRead360, params, 0 ); InitIntParam( info.m_nAllowDiffuseModulation, params, 1 ); InitIntParam( info.m_nPhongDisableHalfLambert, params, 0 ); SET_PARAM_STRING_IF_NOT_DEFINED( info.m_nFoW, "_rt_fog_of_war" ); }
// FIXME: doesn't support fresnel! void InitParamsRefract_DX9( CBaseVSShader *pShader, IMaterialVar** params, const char *pMaterialName, Refract_DX9_Vars_t &info ) { SET_FLAGS2( MATERIAL_VAR2_NEEDS_TANGENT_SPACES ); SET_FLAGS2( MATERIAL_VAR2_SUPPORTS_HW_SKINNING ); SET_FLAGS( MATERIAL_VAR_TRANSLUCENT ); if( !params[info.m_nEnvmapTint]->IsDefined() ) { params[info.m_nEnvmapTint]->SetVecValue( 1.0f, 1.0f, 1.0f ); } if( !params[info.m_nEnvmapContrast]->IsDefined() ) { params[info.m_nEnvmapContrast]->SetFloatValue( 0.0f ); } if( !params[info.m_nEnvmapSaturation]->IsDefined() ) { params[info.m_nEnvmapSaturation]->SetFloatValue( 1.0f ); } if( !params[info.m_nEnvmapFrame]->IsDefined() ) { params[info.m_nEnvmapFrame]->SetIntValue( 0 ); } if( !params[info.m_nFresnelReflection]->IsDefined() ) { params[info.m_nFresnelReflection]->SetFloatValue( 1.0f ); } if( !params[info.m_nMasked]->IsDefined() ) { params[info.m_nMasked]->SetIntValue( 0 ); } if( !params[info.m_nBlurAmount]->IsDefined() ) { params[info.m_nBlurAmount]->SetIntValue( 0 ); } if( !params[info.m_nFadeOutOnSilhouette]->IsDefined() ) { params[info.m_nFadeOutOnSilhouette]->SetIntValue( 0 ); } if( !params[info.m_nNoViewportFixup]->IsDefined() ) { params[info.m_nNoViewportFixup]->SetIntValue( 0 ); } if( !params[info.m_nMirrorAboutViewportEdges]->IsDefined() ) { params[info.m_nMirrorAboutViewportEdges]->SetIntValue( 0 ); } if ( !params[info.m_nMagnifyEnable]->IsDefined() ) { params[info.m_nMagnifyEnable]->SetIntValue( 0 ); } if ( !params[info.m_nMagnifyCenter]->IsDefined() ) { params[info.m_nMagnifyCenter]->SetVecValue( 0, 0, 0, 0 ); } if ( !params[info.m_nMagnifyScale]->IsDefined() ) { params[info.m_nMagnifyScale]->SetIntValue( 0 ); } SET_FLAGS2( MATERIAL_VAR2_NEEDS_POWER_OF_TWO_FRAME_BUFFER_TEXTURE ); }
void InitParams_Eyes_Refract( CBaseVSShader *pShader, IMaterialVar** params, const char *pMaterialName, Eye_Refract_Vars_t &info ) { params[FLASHLIGHTTEXTURE]->SetStringValue( GetFlashlightTextureFilename() ); // Set material flags SET_FLAGS2( MATERIAL_VAR2_SUPPORTS_HW_SKINNING ); SET_FLAGS2( MATERIAL_VAR2_LIGHTING_VERTEX_LIT ); // Set material parameter default values if ( ( info.m_nIntro >= 0 ) && ( !params[info.m_nIntro]->IsDefined() ) ) { params[info.m_nIntro]->SetIntValue( kDefaultIntro ); } if ( ( info.m_nDilation >= 0 ) && ( !params[info.m_nDilation]->IsDefined() ) ) { params[info.m_nDilation]->SetFloatValue( kDefaultDilation ); } if ( ( info.m_nGlossiness >= 0 ) && ( !params[info.m_nGlossiness]->IsDefined() ) ) { params[info.m_nGlossiness]->SetFloatValue( kDefaultGlossiness ); } if ( ( info.m_nSphereTexKillCombo >= 0 ) && ( !params[info.m_nSphereTexKillCombo]->IsDefined() ) ) { params[info.m_nSphereTexKillCombo]->SetIntValue( kDefaultSphereTexKillCombo ); } if ( ( info.m_nRaytraceSphere >= 0 ) && ( !params[info.m_nRaytraceSphere]->IsDefined() ) ) { params[info.m_nRaytraceSphere]->SetIntValue( kDefaultRaytraceSphere ); } if ( ( info.m_nAmbientOcclColor >= 0 ) && ( !params[info.m_nAmbientOcclColor]->IsDefined() ) ) { params[info.m_nAmbientOcclColor]->SetVecValue( kDefaultAmbientOcclColor, 4 ); } if ( ( info.m_nEyeballRadius >= 0 ) && ( !params[info.m_nEyeballRadius]->IsDefined() ) ) { params[info.m_nEyeballRadius]->SetFloatValue( kDefaultEyeballRadius ); } if ( ( info.m_nParallaxStrength >= 0 ) && ( !params[info.m_nParallaxStrength]->IsDefined() ) ) { params[info.m_nParallaxStrength]->SetFloatValue( kDefaultParallaxStrength ); } if ( ( info.m_nCorneaBumpStrength >= 0 ) && ( !params[info.m_nCorneaBumpStrength]->IsDefined() ) ) { params[info.m_nCorneaBumpStrength]->SetFloatValue( kDefaultCorneaBumpStrength ); } if ( ( info.m_nAmbientOcclusion >= 0 ) && ( !params[info.m_nAmbientOcclusion]->IsDefined() ) ) { params[info.m_nAmbientOcclusion]->SetFloatValue( 0.0f ); } }
BEGIN_SHADER_PARAMS END_SHADER_PARAMS SHADER_INIT_PARAMS() { SET_FLAGS2( MATERIAL_VAR2_LIGHTING_LIGHTMAP ); SET_FLAGS2( MATERIAL_VAR2_BLEND_WITH_LIGHTMAP_ALPHA ); }
END_SHADER_PARAMS SHADER_INIT_PARAMS() { SET_FLAGS2( MATERIAL_VAR2_NEEDS_TANGENT_SPACES ); SET_FLAGS2( MATERIAL_VAR2_SUPPORTS_HW_SKINNING ); SET_FLAGS( MATERIAL_VAR_TRANSLUCENT ); SET_FLAGS2( MATERIAL_VAR2_NEEDS_POWER_OF_TWO_FRAME_BUFFER_TEXTURE ); }
void InitParamsVolumeClouds( CBaseVSShader *pShader, IMaterialVar** params, const char *pMaterialName, VolumeCloudsVars_t &info ) { // Set material flags SET_FLAGS2( MATERIAL_VAR2_SUPPORTS_HW_SKINNING ); SET_FLAGS2( MATERIAL_VAR2_NEEDS_TANGENT_SPACES ); SET_FLAGS( MATERIAL_VAR_TRANSLUCENT ); SET_PARAM_FLOAT_IF_NOT_DEFINED( info.m_nTime, 0.0f ); // Set material parameter default values SET_PARAM_FLOAT_IF_NOT_DEFINED( info.m_nRefractAmount, kDefaultRefractAmount ); }
END_SHADER_PARAMS SHADER_INIT_PARAMS() { SET_FLAGS( MATERIAL_VAR_NO_DEBUG_OVERRIDE ); SET_FLAGS2( MATERIAL_VAR2_LIGHTING_LIGHTMAP ); if( g_pHardwareConfig->GetDXSupportLevel() >= 90 ) { SET_FLAGS2( MATERIAL_VAR2_SUPPORTS_HW_SKINNING ); } }
void InitParamsAftershock( CBaseVSShader *pShader, IMaterialVar** params, const char *pMaterialName, AftershockVars_t &info ) { // Set material flags SET_FLAGS2( MATERIAL_VAR2_SUPPORTS_HW_SKINNING ); SET_FLAGS2( MATERIAL_VAR2_NEEDS_TANGENT_SPACES ); SET_FLAGS( MATERIAL_VAR_TRANSLUCENT ); SET_FLAGS2( MATERIAL_VAR2_NEEDS_POWER_OF_TWO_FRAME_BUFFER_TEXTURE ); // Set material parameter default values if ( ( info.m_nRefractAmount != -1 ) && ( !params[info.m_nRefractAmount]->IsDefined() ) ) { params[info.m_nRefractAmount]->SetFloatValue( kDefaultRefractAmount ); } if ( ( info.m_nColorTint != -1 ) && ( !params[info.m_nColorTint]->IsDefined() ) ) { params[info.m_nColorTint]->SetVecValue( kDefaultColorTint[0], kDefaultColorTint[1], kDefaultColorTint[2], kDefaultColorTint[3] ); } if( (info.m_nBumpFrame != -1 ) && !params[info.m_nBumpFrame]->IsDefined() ) { params[info.m_nBumpFrame]->SetIntValue( 0 ); } if ( ( info.m_nSilhouetteThickness != -1 ) && ( !params[info.m_nSilhouetteThickness]->IsDefined() ) ) { params[info.m_nSilhouetteThickness]->SetFloatValue( kDefaultSilhouetteThickness ); } if ( ( info.m_nSilhouetteColor != -1 ) && ( !params[info.m_nSilhouetteColor]->IsDefined() ) ) { params[info.m_nSilhouetteColor]->SetVecValue( kDefaultSilhouetteColor[0], kDefaultSilhouetteColor[1], kDefaultSilhouetteColor[2], kDefaultSilhouetteColor[3] ); } if ( ( info.m_nGroundMin != -1 ) && ( !params[info.m_nGroundMin]->IsDefined() ) ) { params[info.m_nGroundMin]->SetFloatValue( kDefaultGroundMin ); } if ( ( info.m_nGroundMax != -1 ) && ( !params[info.m_nGroundMax]->IsDefined() ) ) { params[info.m_nGroundMax]->SetFloatValue( kDefaultGroundMax ); } if ( ( info.m_nBlurAmount != -1 ) && ( !params[info.m_nBlurAmount]->IsDefined() ) ) { params[info.m_nBlurAmount]->SetFloatValue( kDefaultBlurAmount ); } SET_PARAM_FLOAT_IF_NOT_DEFINED( info.m_nTime, 0.0f ); }
END_SHADER_PARAMS SHADER_INIT_PARAMS() { SET_FLAGS2( MATERIAL_VAR2_SUPPORTS_HW_SKINNING ); SET_FLAGS( MATERIAL_VAR_NO_DEBUG_OVERRIDE ); }
END_SHADER_PARAMS // FIXME: doesn't support fresnel! SHADER_INIT_PARAMS() { SET_FLAGS2( MATERIAL_VAR2_NEEDS_TANGENT_SPACES ); SET_FLAGS( MATERIAL_VAR_TRANSLUCENT ); if( !params[ENVMAPTINT]->IsDefined() ) { params[ENVMAPTINT]->SetVecValue( 1.0f, 1.0f, 1.0f ); } if( !params[ENVMAPCONTRAST]->IsDefined() ) { params[ENVMAPCONTRAST]->SetFloatValue( 0.0f ); } if( !params[ENVMAPSATURATION]->IsDefined() ) { params[ENVMAPSATURATION]->SetFloatValue( 1.0f ); } if( !params[ENVMAPFRAME]->IsDefined() ) { params[ENVMAPFRAME]->SetIntValue( 0 ); } if( !params[FRESNELREFLECTION]->IsDefined() ) { params[FRESNELREFLECTION]->SetFloatValue( 1.0f ); } }
END_SHADER_PARAMS SHADER_INIT_PARAMS() { if( !params[ WEIGHT_DEFAULT ]->IsDefined() ) { params[ WEIGHT_DEFAULT ]->SetFloatValue( 1.0f) ; } if( !params[ WEIGHT0 ]->IsDefined() ) { params[ WEIGHT0 ]->SetFloatValue( 1.0f ); } if( !params[ WEIGHT1 ]->IsDefined() ) { params[ WEIGHT1 ]->SetFloatValue( 1.0f ); } if( !params[ WEIGHT2 ]->IsDefined() ) { params[ WEIGHT2 ]->SetFloatValue( 1.0f ); } if( !params[ WEIGHT3 ]->IsDefined() ) { params[ WEIGHT3 ]->SetFloatValue( 1.0f ); } if( !params[ NUM_LOOKUPS ]->IsDefined() ) { params[ NUM_LOOKUPS ]->SetIntValue( 0 ); } SET_FLAGS2( MATERIAL_VAR2_NEEDS_FULL_FRAME_BUFFER_TEXTURE ); }
BEGIN_SHADER_PARAMS END_SHADER_PARAMS SHADER_INIT_PARAMS() { SET_FLAGS2( MATERIAL_VAR2_SUPPORTS_HW_SKINNING ); }
BEGIN_SHADER_PARAMS END_SHADER_PARAMS // Set up anything that is necessary to make decisions in SHADER_FALLBACK. SHADER_INIT_PARAMS() { if ( g_pHardwareConfig->SupportsBorderColor() ) { params[FLASHLIGHTTEXTURE]->SetStringValue( "effects/flashlight_border" ); } else { params[FLASHLIGHTTEXTURE]->SetStringValue( "effects/flashlight001" ); } // No texture means no self-illum or env mask in base alpha if ( !params[BASETEXTURE]->IsDefined() ) { CLEAR_FLAGS( MATERIAL_VAR_SELFILLUM ); CLEAR_FLAGS( MATERIAL_VAR_BASEALPHAENVMAPMASK ); } SET_FLAGS( MATERIAL_VAR_DECAL ); SET_FLAGS( MATERIAL_VAR_NO_DEBUG_OVERRIDE ); SET_FLAGS2( MATERIAL_VAR2_LIGHTING_LIGHTMAP ); }
END_SHADER_PARAMS SHADER_INIT_PARAMS() { SET_FLAGS2( MATERIAL_VAR2_LIGHTING_LIGHTMAP ); if( !params[ENVMAPMASKSCALE]->IsDefined() ) params[ENVMAPMASKSCALE]->SetFloatValue( 1.0f ); if( !params[DETAILSCALE]->IsDefined() ) params[DETAILSCALE]->SetFloatValue( 1.0f ); if( !params[ENVMAPTINT]->IsDefined() ) params[ENVMAPTINT]->SetVecValue( 1.0f, 1.0f, 1.0f ); // No texture means no self-illum or env mask in base alpha if ( !params[BASETEXTURE]->IsDefined() ) { CLEAR_FLAGS( MATERIAL_VAR_BASEALPHAENVMAPMASK ); } // If in decal mode, no debug override... if (IS_FLAG_SET(MATERIAL_VAR_DECAL)) { SET_FLAGS( MATERIAL_VAR_NO_DEBUG_OVERRIDE ); } }
BEGIN_SHADER_PARAMS END_SHADER_PARAMS SHADER_INIT_PARAMS() { SET_FLAGS2( MATERIAL_VAR2_NEEDS_FULL_FRAME_BUFFER_TEXTURE ); }
BEGIN_SHADER_PARAMS END_SHADER_PARAMS SHADER_INIT_PARAMS() { SET_FLAGS2( MATERIAL_VAR2_LIGHTING_LIGHTMAP ); }
// FIXME: doesn't support fresnel! void InitParamsCloak_DX9( CBaseVSShader *pShader, IMaterialVar** params, const char *pMaterialName, Cloak_DX9_Vars_t &info ) { SET_FLAGS2( MATERIAL_VAR2_NEEDS_TANGENT_SPACES ); SET_FLAGS( MATERIAL_VAR_TRANSLUCENT ); SET_FLAGS2( MATERIAL_VAR2_LIGHTING_VERTEX_LIT ); if( !params[info.m_nFresnelReflection]->IsDefined() ) { params[info.m_nFresnelReflection]->SetFloatValue( 1.0f ); } if( !params[info.m_nMasked]->IsDefined() ) { params[info.m_nMasked]->SetIntValue( 0 ); } SET_FLAGS2( MATERIAL_VAR2_NEEDS_POWER_OF_TWO_FRAME_BUFFER_TEXTURE ); }
void InitParamsPrototype( CBaseVSShader *pShader, IMaterialVar** params, const char *pMaterialName, PrototypeVars_t &info ) { // Set material flags SET_FLAGS2( MATERIAL_VAR2_SUPPORTS_HW_SKINNING ); SET_FLAGS2( MATERIAL_VAR2_NEEDS_TANGENT_SPACES ); SET_FLAGS2( MATERIAL_VAR2_LIGHTING_VERTEX_LIT ); // Set material parameter default values if ( (info.m_nBaseTextureFrame != -1 ) && !params[info.m_nBaseTextureFrame]->IsDefined() ) { params[info.m_nBaseTextureFrame]->SetIntValue( 0 ); } if ( (info.m_nBumpFrame != -1 ) && !params[info.m_nBumpFrame]->IsDefined() ) { params[info.m_nBumpFrame]->SetIntValue( 0 ); } }
//----------------------------------------------------------------------------- // Initialize shader parameters //----------------------------------------------------------------------------- void InitParamsExampleModel_DX9( CBaseVSShader *pShader, IMaterialVar** params, const char *pMaterialName, ExampleModel_DX9_Vars_t &info ) { // FLASHLIGHTFIXME: Do ShaderAPI::BindFlashlightTexture Assert( info.m_nFlashlightTexture >= 0 ); if ( g_pHardwareConfig->SupportsBorderColor() ) { params[FLASHLIGHTTEXTURE]->SetStringValue( "effects/flashlight_border" ); } else { params[FLASHLIGHTTEXTURE]->SetStringValue( "effects/flashlight001" ); } // This shader can be used with hw skinning SET_FLAGS2( MATERIAL_VAR2_SUPPORTS_HW_SKINNING ); SET_FLAGS2( MATERIAL_VAR2_LIGHTING_VERTEX_LIT ); }
SHADER_INIT_PARAMS() { // FLASHLIGHTFIXME params[FLASHLIGHTTEXTURE]->SetStringValue( "effects/flashlight001" ); if( !params[DETAIL_ALPHA_MASK_BASE_TEXTURE]->IsDefined() ) params[DETAIL_ALPHA_MASK_BASE_TEXTURE]->SetIntValue( 0 ); SET_FLAGS2( MATERIAL_VAR2_LIGHTING_LIGHTMAP ); }
// FIXME: doesn't support fresnel! void InitParamsRefract_DX9( CBaseVSShader *pShader, IMaterialVar** params, const char *pMaterialName, Refract_DX9_Vars_t &info ) { SET_FLAGS2( MATERIAL_VAR2_NEEDS_TANGENT_SPACES ); SET_FLAGS( MATERIAL_VAR_TRANSLUCENT ); if( !params[info.m_nEnvmapTint]->IsDefined() ) { params[info.m_nEnvmapTint]->SetVecValue( 1.0f, 1.0f, 1.0f ); } if( !params[info.m_nEnvmapContrast]->IsDefined() ) { params[info.m_nEnvmapContrast]->SetFloatValue( 0.0f ); } if( !params[info.m_nEnvmapSaturation]->IsDefined() ) { params[info.m_nEnvmapSaturation]->SetFloatValue( 1.0f ); } if( !params[info.m_nEnvmapFrame]->IsDefined() ) { params[info.m_nEnvmapFrame]->SetIntValue( 0 ); } if( !params[info.m_nFresnelReflection]->IsDefined() ) { params[info.m_nFresnelReflection]->SetFloatValue( 1.0f ); } if( !params[info.m_nMasked]->IsDefined() ) { params[info.m_nMasked]->SetIntValue( 0 ); } if( !params[info.m_nBlurAmount]->IsDefined() ) { params[info.m_nBlurAmount]->SetIntValue( 0 ); } if( !params[info.m_nFadeOutOnSilhouette]->IsDefined() ) { params[info.m_nFadeOutOnSilhouette]->SetIntValue( 0 ); } if( !params[info.m_nForceAlphaWrite]->IsDefined() ) { params[info.m_nForceAlphaWrite]->SetIntValue( 0 ); } SET_FLAGS2( MATERIAL_VAR2_NEEDS_POWER_OF_TWO_FRAME_BUFFER_TEXTURE ); }
SHADER_INIT_PARAMS() { SET_FLAGS2( MATERIAL_VAR2_SUPPORTS_HW_SKINNING ); if ( g_pHardwareConfig->HasFastVertexTextures() ) SET_FLAGS2( MATERIAL_VAR2_USES_VERTEXID ); //const bool bIsDecal = IS_FLAG_SET( MATERIAL_VAR_DECAL ); const bool bDeferredActive = GetDeferredExt()->IsDeferredLightingEnabled(); if( bDeferredActive )// && !bIsDecal ) { const bool bTranslucent = IS_FLAG_SET( MATERIAL_VAR_TRANSLUCENT ); const bool bAlphaTest = IS_FLAG_SET( MATERIAL_VAR_ALPHATEST ); if( bTranslucent ) { CLEAR_FLAGS( MATERIAL_VAR_TRANSLUCENT ); SET_FLAGS( MATERIAL_VAR_ALPHATEST ); params[ALPHATESTREFERENCE]->SetFloatValue( 0.5f ); } else if( bAlphaTest ) { if( params[ALPHATESTREFERENCE]->GetFloatValue() == 0.0f ) params[ALPHATESTREFERENCE]->SetFloatValue( 0.5f ); } } const bool bDrawToGBuffer = DrawToGBuffer( params ); if ( bDrawToGBuffer ) { defParms_gBuffer parms_gbuffer; SetupParmsGBuffer( parms_gbuffer ); InitParmsGBuffer( parms_gbuffer, this, params ); defParms_shadow parms_shadow; SetupParmsShadow( parms_shadow ); InitParmsShadowPass( parms_shadow, this, params ); } }
END_SHADER_PARAMS SHADER_INIT_PARAMS() { INIT_FLOAT_PARM( MAXDISTANCE, 100000.0); INIT_FLOAT_PARM( FARFADEINTERVAL, 400.0); INIT_FLOAT_PARM( MAXSIZE, 20.0 ); INIT_FLOAT_PARM( ENDFADESIZE, 20.0 ); INIT_FLOAT_PARM( STARTFADESIZE, 10.0 ); INIT_FLOAT_PARM( DEPTHBLENDSCALE, 50.0 ); INIT_FLOAT_PARM( OVERBRIGHTFACTOR, 1.0 ); INIT_FLOAT_PARM( ADDBASETEXTURE2, 0.0 ); INIT_FLOAT_PARM( ADDSELF, 0.0 ); INIT_FLOAT_PARM( ZOOMANIMATESEQ2, 0.0 ); if ( !params[DEPTHBLEND]->IsDefined() ) { params[ DEPTHBLEND ]->SetIntValue( GetDefaultDepthFeatheringValue() ); } if ( !g_pHardwareConfig->SupportsPixelShaders_2_b() ) { params[ DEPTHBLEND ]->SetIntValue( 0 ); } if ( !params[DUALSEQUENCE]->IsDefined() ) { params[DUALSEQUENCE]->SetIntValue( 0 ); } if ( !params[MAXLUMFRAMEBLEND1]->IsDefined() ) { params[MAXLUMFRAMEBLEND1]->SetIntValue( 0 ); } if ( !params[MAXLUMFRAMEBLEND2]->IsDefined() ) { params[MAXLUMFRAMEBLEND2]->SetIntValue( 0 ); } if ( !params[EXTRACTGREENALPHA]->IsDefined() ) { params[EXTRACTGREENALPHA]->SetIntValue( 0 ); } if ( !params[ADDOVERBLEND]->IsDefined() ) { params[ADDOVERBLEND]->SetIntValue( 0 ); } if ( !params[BLENDFRAMES]->IsDefined() ) { params[ BLENDFRAMES ]->SetIntValue( 1 ); } if ( !params[USEINSTANCING]->IsDefined() ) { params[ USEINSTANCING ]->SetIntValue( IsX360() ? 1 : 0 ); } SET_FLAGS2( MATERIAL_VAR2_IS_SPRITECARD ); }
void InitParamsEyes_DX8_DX9( CBaseVSShader *pShader, IMaterialVar** params, const char *pMaterialName, Eyes_DX8_DX9_Vars_t &info ) { if ( g_pHardwareConfig->SupportsBorderColor() ) { params[FLASHLIGHTTEXTURE]->SetStringValue( "effects/flashlight_border" ); } else { params[FLASHLIGHTTEXTURE]->SetStringValue( "effects/flashlight001" ); } SET_FLAGS2( MATERIAL_VAR2_SUPPORTS_HW_SKINNING ); SET_FLAGS2( MATERIAL_VAR2_LIGHTING_VERTEX_LIT ); Assert( info.m_nIntro != -1 ); if( info.m_nIntro != -1 && !params[info.m_nIntro]->IsDefined() ) { params[info.m_nIntro]->SetIntValue( 0 ); } }
END_SHADER_PARAMS SHADER_INIT_PARAMS() { params[FLASHLIGHTTEXTURE]->SetStringValue( GetFlashlightTextureFilename() ); SET_FLAGS2( MATERIAL_VAR2_SUPPORTS_HW_SKINNING ); if( !params[INTRO]->IsDefined() ) { params[INTRO]->SetIntValue( 0 ); } }
SHADER_INIT_PARAMS() { if( !params[ FOGEXPONENT ]->IsDefined() ) { params[ FOGEXPONENT ]->SetFloatValue( 0.4f ); } if( !params[ FOGSCALE ]->IsDefined() ) { params[ FOGSCALE ]->SetFloatValue( 1.0f ); } SET_FLAGS( MATERIAL_VAR_NO_DEBUG_OVERRIDE ); #ifndef _X360 if ( g_pHardwareConfig->HasFastVertexTextures() ) { // The vertex shader uses the vertex id stream SET_FLAGS2( MATERIAL_VAR2_USES_VERTEXID ); SET_FLAGS2( MATERIAL_VAR2_SUPPORTS_HW_SKINNING ); } #endif }