?? ps.fx
字號:
texture ColorMap;
sampler ColorMapSampler = sampler_state
{
Texture = <ColorMap>;
MinFilter = Linear;
MagFilter = Linear;
MipFilter = Linear;
AddressU = Clamp;
AddressV = Clamp;
};
texture BumpMap;
sampler BumpMapSampler = sampler_state
{
Texture = <BumpMap>;
MinFilter = Linear;
MagFilter = Linear;
MipFilter = Linear;
AddressU = Clamp;
AddressV = Clamp;
};
texture CubeNormalMap;
sampler CubeNormalMapSampler = sampler_state
{
Texture = <CubeNormalMap>;
AddressU = Clamp;
AddressV = Clamp;
AddressW = Clamp;
};
// -------------------------------------------------------------
// Pixel Shader (input channels):output channel
// -------------------------------------------------------------
float4 PS(float2 Tex: TEXCOORD0, float3 Light : TEXCOORD1, float3 View : TEXCOORD2, float3 Att : TEXCOORD3) : COLOR
{
float4 ambient = { 0.3f, 0.3f, 0.3f, 1.0f};
float4 color = tex2D(ColorMapSampler, Tex); // fetch color map
float3 bumpNormal = 2 * (tex2D(BumpMapSampler, Tex) - 0.5); // fetch bump map
// light vector
float3 LightDir = normalize(Light);
float3 ViewDir = normalize(View);
// diffuse component
float4 diff = saturate(dot(bumpNormal, LightDir));
// compute self-shadowing term
float shadow = saturate(4 * diff);
// compute R vector
float3 Reflect = normalize(2 * diff * bumpNormal - LightDir);
// gloss map in color.w used to restrict specular reflection on non-glossy regions
float4 spec = min(pow(saturate(dot(Reflect, ViewDir)), 15), color.w);
// attenuation
float4 Attenuation = mul(Att, Att);
// colormap * (self-shadow-term * diffuse + ambient) + self-shadow-term * specular
return (color * (shadow * diff + ambient) + shadow * spec) * Attenuation;
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -