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

📄 vs.fx

📁 3d 游戏 入门教程之例子源码-图像渲染
💻 FX
字号:
float4x4 matWorldViewProj;	
float4x4 matWorld;	
float4 vecLightDir;
float4 vecEye;

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;
};

// -------------------------------------------------------------
// Output channels
// -------------------------------------------------------------
struct VS_OUTPUT
{
    float4 Pos  : POSITION;
    float2 Tex : TEXCOORD0;
    float3 Light : TEXCOORD1;
    float3 View : TEXCOORD2;
    float3 Att : TEXCOORD3;
};

// -------------------------------------------------------------
// vertex shader function (input channels)
// -------------------------------------------------------------
VS_OUTPUT VS(float4 Pos : POSITION, float2 Tex : TEXCOORD, float3 Normal : NORMAL, float3 Tangent : TANGENT  )
{
    VS_OUTPUT Out = (VS_OUTPUT)0;      
    Out.Pos = mul(Pos, matWorldViewProj);	// transform Position
    
    // compute the 3x3 tranform matrix 
    // to transform from world space to tangent space
    float3x3 objToTangentSpace;
    objToTangentSpace[0] = mul(Tangent, matWorld);
    objToTangentSpace[1] = mul(cross(Tangent, Normal), matWorld);
    objToTangentSpace[2] = mul(Normal, matWorld);
        
    Out.Tex = Tex.xy;

    // output light vector
    float3 Light = normalize(vecLightDir);
    Out.Light.xyz = mul(objToTangentSpace, Light);    

    // get a vector toward the camera/eye -> V
    float3 PosWorld = normalize(mul(Pos, matWorld));
    float3 LightWorld = normalize(PosWorld + Light);
    Out.View = mul(objToTangentSpace, normalize(LightWorld + vecEye));
    
    // point light
    // reduce range from -1..1 to 0..1 by multiplying with 0.5 and adding 0.5
    Out.Att = (Light * 0.6) * 0.5 + 0.5;
    
   return Out;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -