XNA Shader编程教程6-Shader演示

本教程不学新的东西,只是将不同shader技术整合到一个场景中,展示shader的威力。

截图1

请不要着重于源代码,而应把注意力放在shader上。也可以让性能更好,但这个示例把关键点都涉及到了。

使用手柄摇杆可以四处走动,按A/X切换shader的开启和关闭。要运行这个场景,你应该把X360手柄连接到USB接口上,或者取消代码中键盘控制代码的注释,这样你就可以使用键盘和鼠标控制相机的移动。

天空球(skysphere)

这个场景使用一个简单的球作为天空球,并使球缓慢地转动让天空更加生动。要使效果更好,可以添加更多天空纹理在球上并以不同的速度旋转天空球。

小岛

小岛是一个三维模型。小岛使用一个法线贴图和教程4中相同的shader技术,能使模型看起来有更多的细节。

海面

海洋是一个由许多顶点构成的平面,我们使用教程5中的变形shader创建波浪,并使用教程4中的法线贴图产生海面上的涟漪。我使用了两个沿不同方向移动的法线贴图产生波浪上的小细节:

Normal = (Normal 1+ Normal2)/2;

这里使用两个法线并将它们叠加在一起,在计算漫反射和镜面反射时取它们的平均值。还移动了颜色贴图的纹理坐标产生流水效果。

截图2

截图3


发布时间:2009/4/7 下午1:27:48  阅读次数:10333

2006 - 2024,推荐分辨率 1024*768 以上,推荐浏览器 Chrome、Edge 等现代浏览器,截止 2021 年 12 月 5 日的访问次数:1872 万 9823 站长邮箱

沪 ICP 备 18037240 号-1

沪公网安备 31011002002865 号