⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ps.fx

📁 3d 游戏 入门教程之例子源码-图像渲染
💻 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 + -