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

📄 texblendvs.txt

📁 一开发好的一个游戏场景,有关检测碰撞的代码,大家下了就知道了
💻 TXT
字号:
// File: diffuse.txt
// Desc: Vertex shader that does diffuse lighting.
// Global variables we use to hold the view matrix, projection matrix,
// ambient material, diffuse material, and the light vector that
// describes the direction to the light source. These variables are
// initialized from the application.
matrix ViewMatrix;
matrix ViewProjMatrix;
vector AmbientMtrl;
vector DiffuseMtrl;
vector LightDirection;
// 环境光强度,漫射光强度
// 这些变量定义在着色器代码中
vector DiffuseLightIntensity = {0.8f, 0.8f, 0.8f, 1.0f};
vector AmbientLightIntensity = {0.4f, 0.4f, 0.4f, 1.0f};
// Input and Output structures.
struct VS_INPUT
{
     vector position : POSITION;
     vector normal   : NORMAL;
     float2 alpha    : TEXCOORD0;
     float2 tex1     : TEXCOORD1;
     float2 tex2     : TEXCOORD2;
     float2 tex3     : TEXCOORD3;
};

struct VS_OUTPUT
{
     vector position  : POSITION;
     vector diffuse   : COLOR;
     float2 oalpha    : TEXCOORD0;
     float2 otex1     : TEXCOORD1;
     float2 otex2     : TEXCOORD2;
     float2 otex3     : TEXCOORD3;
};
//Main
VS_OUTPUT Main(VS_INPUT input)
{
     // zero out all members of the output instance.
     VS_OUTPUT output;//=(VS_OUTPUT)0;
     // 变换位置到齐次坐标空间,保存到output.position成员中
     output.position=mul(input.position, ViewProjMatrix);
     // 变换光和法线到视图空间,设置w分量为0,是因为变换的向量不是点 
     LightDirection.w=0.0f;
     input.normal.w=0.0f;
     LightDirection=mul(LightDirection,ViewMatrix);
     input.normal=mul(input.normal,ViewMatrix);
     // 计算光与法线夹角的余弦
     float s=dot(LightDirection,input.normal); 
     // 回忆一下,如果法线和光的夹角大于90度,则表面接收不到光。
     if(s< 0.0f )
         s=0.0f;
     // 环境光反射是执行一个叉积(环境材质向量与环境光强度向量),
     // 漫射光反射是执行一个叉积(漫射材质向量与漫射光强度向量,
     // 更进一步讲,我们测量着色器的颜色,基于顶点从光源处接收到多少光
     //环境光和漫射光综合起来,决定一个顶点的最终颜色
     output.diffuse=(AmbientMtrl*AmbientLightIntensity)+((DiffuseMtrl*DiffuseLightIntensity)*s);
     //纹理坐标
     output.oalpha=input.alpha;
     output.otex1=input.tex1;
     output.otex2=input.tex2;
     output.otex3=input.tex3;
     return output;
}

⌨️ 快捷键说明

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