Shader教程系列XNA

来源:互联网 发布:韩国经济知乎 编辑:程序博客网 时间:2024/05/07 20:40

Shader教程系列

XNA Shader编程教程1-环境光照

原文地址:http://digierr.spaces.live.com/blog/cns!2B7007E9EC2AE37B!424.entry。没有实用价值,但这应该是最简单的shader,可以帮助理解shader的基本工作原理。源代码Tutorial1_Ambient.rar下载。

XNA Shader编程教程2-漫反射光照

原文地址:http://digierr.spaces.live.com/blog/cns!2B7007E9EC2AE37B!426.entry。简单的游戏漫反射够用了,开始涉及基本数学原理了。源代码Tutorial2_Diffuse.rar下载。

XNA Shader编程教程3-镜面反射光照

原文地址:http://digierr.spaces.live.com/blog/cns!2B7007E9EC2AE37B!437.entry。可以模拟光滑、有光泽或磨光的表面。源代码Tutorial3_Specular.rar下载。

XNA Shader编程教程3.1-纹理

觉得原文的教程有点跳跃,所以在教程3和4之间整理了一下使用纹理的基本方法。源代码Tutorial31_Texture.rar下载。

XNA Shader编程教程3.2-逐顶点和逐像素光照

解释了逐顶点和逐像素光照的区别,其他源代码好像都是使用逐像素光照模型。源代码Tutorial3.2_PerPixelLight.rar下载。

XNA Shader编程教程3.3-多纹理

这个例子比较简单。源代码Tutorial3.3_MultiTexture.rar下载。

XNA Shaders 编程教程4-法线映射

原文地址:http://digierr.spaces.live.com/blog/cns!2B7007E9EC2AE37B!442.entry。使用法线映射可以让少量多边形构成的模型看起来具有丰富的细节,而视觉效果大量多边形构成的几乎一样,现今很多游戏都使用了法线映射,不过我总觉得这个示例有错误。源代码Tutorial4_NormalMapping.rar下载。

XNA Shaders 编程系列5-变形

原文地址:http://digierr.spaces.live.com/blog/cns!2B7007E9EC2AE37B!447.entry。建议你可以试着用键盘控制物体沿xyz方向的变形。源代码Tutorial5_Deform.rar下载。

XNA Shader编程教程6-Shader演示

原文地址:http://digierr.spaces.live.com/blog/cns!2B7007E9EC2AE37B!450.entry。在前几个教程的基础上实现了天空球和水面。源代码Tutorial6_ShaderDemo.rar下载。

XNA Shader编程教程7-卡通渲染

原文地址:http://digierr.spaces.live.com/blog/cns!2B7007E9EC2AE37B!420.entry。这是一项将3D物体转为类似2D手绘的卡通风格的技术。源代码Tutorial7_ToonShader.rar下载。

XNA Shader编程教程8-光泽贴图(Gloss Map)

原文地址:http://digierr.spaces.live.com/blog/cns!2B7007E9EC2AE37B!462.entry。通过光泽贴图可以控制模型不同部位的镜面反射强度。源代码Tutorial8_GlossMap.rar下载。

XNA Shader编程教程8.1-颜色,发光,凹凸和反射纹理贴图

这个例子来自于http://xna-uk.net/,原文地址:http://xna-uk.net/blogs/randomchaos/archive/2008/11/24/basic-hlsl-lighting-techniques-episode-3-colour-glow-bump-and-reflective-texture-maps.aspx。使用了四种技术:颜色贴图,就是教程2的漫反射;发光贴图是新的,用一张额外的贴图控制漫反射强度,这个例子中表现出地球上的大城市的灯光效果;凹凸贴图,就是教程4的法线贴图,严格地说法线贴图只是凹凸贴图的一种,凹凸贴图还包含视差映射(Parallax Mapping)等;反射贴图就是教程8的光泽贴,通过一张额外的纹理控制模型不同部位的镜面反射强度,这个例子中让地球上的海面反射强度比陆地大。源代码GenericXNALightAndShadeIII.zip下载。

XNA Shader编程教程9-Post process波动效果

原文地址:http://digierr.spaces.live.com/blog/cns!2B7007E9EC2AE37B!511.entry。《Professional XNA Game Programming: For Xbox 360 and Windows》一书中用了一章的篇幅介绍了PostScreen Shader,有些地方把PostScreen翻译成离屏或后屏,我就保留英文了。这个shader的基本思路就是先将场景绘制到一张纹理中(这叫做Render To RenderTarget,渲染到渲染目标),想了解工作原理,请见3.8 将场景绘制到纹理,然后对这个纹理施加各种滤镜效果,熟悉Photoshop的人对滤镜肯定不陌生,原理不难,唯一的限制就是用什么算法和你的想象力了,《Professional XNA Game Programming》一书的后三个游戏都使用了PostScreen Shader让画面更漂亮。源代码Tutorial9_1_PostProcess.rar下载。

XNA Shader编程教程10-Post process图片反相

原文地址:http://digierr.spaces.live.com/blog/cns!2B7007E9EC2AE37B!513.entry。非常简单的一个算法,实现了反相的效果。这让我想起了《生化危机3》中当“追击者”出现时伴随着一声心脏跳动的声音,画面暂停并反相,表现出吃了一惊的效果。源代码Tutorial9_2_PostProcess.rar下载。

XNA Shader编程教程11-Post process图片灰度

原文地址:http://digierr.spaces.live.com/blog/cns!2B7007E9EC2AE37B!516.entry。使用两种不同的算法实现了图片灰度。源代码Tutorial9_3_PostProcess.rar下载。

XNA Shader编程教程12-Post process噪点扭曲

原文地址:http://digierr.spaces.live.com/blog/cns!2B7007E9EC2AE37B!518.entry。通过随机函数实现噪点效果。源代码Tutorial9_4_PostProcess.rar下载。

XNA Shader编程教程13-Alpha映射

原文地址:http://digierr.spaces.live.com/blog/cns!2B7007E9EC2AE37B!558.entry。通过一张Alpha贴图控制模型的透明程度。源代码Tutorial13_AlphaMapping.rar下载。

XNA Shader编程教程14-透射

原文地址:http://digierr.spaces.live.com/blog/cns!2B7007E9EC2AE37B!580.entry。此教程涉及了Framebuffer,BackBuffer,ZBuffer,DepthBuffer,StencilBuffer,我总结了一下,放在本文的最后部分。源代码Tutorial14_Transmittance.rar下载。

XNA Shader编程教程15-动态环境映射

原文地址:http://digierr.spaces.live.com/blog/cns!2B7007E9EC2AE37B!585.entry。这个教程有点难,我认为讲得也不够清晰,下次我会整理一个简单的反射、折射、动态反射例子的,还有源代码中可以使用X360手柄控制一些变量,我自己添加了键盘控制,用上下左右控制世界矩阵,用ADWS控制Du变量和C变量。源代码Tutorial15_DynamicEnvironmentMap.rar下载。

XNA Shader编程教程16-折射


原文地址:http://digierr.spaces.live.com/blog/cns!2B7007E9EC2AE37B!590.entry。只需使用HLSL的内置refract函数计算折射向量。源代码Tutorial16_Refraction.rar下载。

XNA Shader编程教程21-过渡:淡入淡出

原文地址:http://digierr.spaces.live.com/blog/cns!2B7007E9EC2AE37B!667.entry。主要思路是将两个场景绘制到两个渲染目标中,并使用HLSL的内置lerp函数对两者进行插值。源代码Tutorial21_TransitionFade.rar下载。

XNA Shader编程教程22 – 过渡:左右揭开

原文地址:http://digierr.spaces.live.com/blog/cns!2B7007E9EC2AE37B!683.entry。在前一个教程基础上还使用了另一个HLSL内置函数smoothstep。源代码Tutorial22_TransitionCross.rar下载。

0 0