shader 学习

来源:互联网 发布:单片机通信协议有哪些 编辑:程序博客网 时间:2024/05/02 06:11

浏览:801 2010-03-13 16:56 来自 【组长】独孤残云      :

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下载。

感谢网友roujiao将这个HLSL教程编译成了电子书,HLSL.chm下载。截止到2009年10月14日,教程已经更新到第24篇,而且作者也修复了教程4法线映射中的错误,有时间我会把它补齐的。

至此shader的基本实现方法已经告一段落了,想进一步学习,强烈推荐Nvidia网站,把http://developer.download.nvidia.com/shaderlibrary/webpages/shader_library.html上的shader都弄懂了,你就是高手了。

ShaderX

ShaderX:Direct3D ShaderX Vertex and PixelShader Tips and Tricks

学习Shader编程的经典图书系列,2002年出版,不过好像太老了,里面的代码都是用汇编实现的。 电子书下载,英文版,pdf格式,10.5MB。

ShaderX2Toturial

ShaderX2:Introductions&Tutorials with DirectX9

学习Shader编程的经典图书系列,2004年出版。电子书下载(英文版,pdf格式,6.8MB),C++源代码下载(38MB)。主要内容有:

  • DirectX HLSL语言介绍
  • vs_3_0和ps_3_0 Shader Models介绍
  • 使用Direct3D9的高级光照和着色
  • 不同的雾化效果
  • 阴影映射
  • Stencil ShadowVolumes理论
  • 使用RenderMonkey开发Shader
  • 创建对Shader友好的模型技巧
ShaderX2Tips

ShaderX2:Shader Programming Tips&Tricks with DirectX9

学习Shader编程的经典图书系列,2004年出版。电子书下载(英文版,pdf格式,15.3MB),C++源代码下载(187MB)。主要内容有:

  • 第一部分—几何体创建技巧Geometry Manipulation Tricks
  • 第二部分—渲染技术Rendering Techniques
  • 第三部分—Software Shaders和ShaderProgramming技巧
  • 第四部分—图像处理Image Space
  • 第五部分—阴影Shadows
  • 第六部分—3D引擎和工具设计3D Engineand Tools Design
ShaderX3

ShaderX3: Advanced Rendering with DirectX and OpenGL

学习Shader编程的经典图书系列,2004年出版。电子书下载(英文版,pdf格式,30.6MB)。

ShaderX系列目前已出到ShaderX8,名称已变为GPU Pro,上述电子书和源码的来源地址为http://tog.acm.org/resources/shaderx/

GpuGem2

GPU Gems 2: Programming Techniques for High-Performance Graphics and General-Purpose Computation

学习Shader编程的经典图书系列,2005年出版。电子书下载(英文版,chm格式,14.4MB)。

GpuGem3

GPU Gems 3

学习Shader编程的经典图书系列,2007年出版。电子书下载(英文版,chm格式,26.2MB)。

GPU编程与CG语言

作者:半山工作室的康玉之,发表于2009年9月,电子书下载(简体中文版,3MB)。应该去看看这篇文章的前言,真知灼见,现在中国搞基础研究的太少,比起外国,在图形学方面我们落后太多了。

原创粉丝点击