【编者按】网学网其他类别频道为大家收集整理了“基于DirectX 3D技术的俄罗斯方块程序设计与实现“提供大家参考,希望对大家有所帮助!
客服咨询,网学网竭诚为您服务,本站永久域名:myeducs.cn | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
5.2 环境映射贴图 在本系统中,游戏的渲染过程没有使用规定渲染管道流水线,而是使用Vertex Shader(顶点着色单元) 和Pixel Shader(像素着色单元)的技术。由于在这方面我也是初学者,也没有用什么很高深的东西,我只写了两段简单的代码,一个是Vertex Shader,另一个是Pixel Shader,分别保存到文件BoxVS.txt和 BoxPS.txt两个文本文件中。 这两个文件的代码是在程序运行过程中被编译,然后在显卡的 GPU上执行,分别用来处理顶点和像素。所以我们可以在修改这两个文件中的代码,而不必在次编译游戏程序的情况下,改变图像的渲染效果。 下面是Vertex Shader程序片段: // Globals extern matrix WorldViewMatrix; // 视空间的变换矩阵 extern matrix WorldViewProjMatrix;// 裁减空间的变换矩阵 extern vector EyePos; // 光源以及摄像头位置 extern vector Color; // 光线颜色 // Structures struct VS_INPUT { vector position : POSITION; vector normal : NORMAL; }; struct VS_OUTPUT { vector position : POSITION; float3 uvCoords : TEXCOORD; vector diffuse : COLOR; }; // Main VS_OUTPUT BoxVS(VS_INPUT input) { VS_OUTPUT output = (VS_OUTPUT)0; // 转换顶点位置到裁减空间 output.position = mul(input.position, WorldViewProjMatrix); //光线方向,光线与视线一致 vector lightdir = EyePos - input.position; // 转换光线和法线到视空间 lightdir.w = 0.0f; input.normal.w = 0.0f; lightdir = mul(lightdir, WorldViewMatrix); input.normal = mul(input.normal, WorldViewMatrix); // 光线方向与法线点积 //float Dist = length(lightdir.xyz); input.normal = normalize( input.normal );//归一化 lightdir = normalize( lightdir ); float u = dot(lightdir, input.normal);//向量点积,u的值与角度相//关即u与光照强度相关 // 入射光线反射向量作为环境贴图的纹理坐标 output.uvCoords = normalize(2*u*input.normal-lightdir).xyz; // 如果u<0.0f,则表示法线与光线夹角大于90度,即该表面没有接受到// 光照 if( u < 0.0f ) u = 0.0f; // 计算diffuse,顶点颜色 output.diffuse = u*Color; return output; } 下面是Pixel Shader程序片段,他的输入是下面Vertex Shader主函数的输出: half4 BoxPS(vector position : POSITION, float3 uvCoords : TEXCOORD, vector diffuse : COLOR, uniform samplerCUBE tex0) : COLOR { float4 color0 = texCUBE(tex0,uvCoords.xyz);//对环境贴图采样 return diffuse*0.25 + color0*0.75;//最终颜色 } 5.3 飘雪场景实现 程序中的飘雪场景是通过3D粒子系统模拟产生的效果。这个是我自己写的一个简单的3D粒子系统,跟网上一些高手写的粒子系统相比,效果差很多。该系统使用的粒子可以支持点、线、三角形、四边形这四种基本图元,到目前为此能够成功模拟,并且效果差强人意的有雨、烟雾、雪花、火焰这几种特效。 下面简要说明以下粒子系统中结构以及类的定义。 表5-3列出了粒子结构的成员 Particle结构
表 5-3 PSystem类的主要成员函数
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
本站发布的计算机毕业设计均是完整无错的全套作品,包含开题报告+程序+论文+源代码+翻译+答辩稿PPT | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
本文选自计算机毕业设计http://myeducs.cn |