Difference between revisions of "例子程序"
Gongminmin (Talk | contribs) (→Deferred Shading) |
Gongminmin (Talk | contribs) |
||
Line 6: | Line 6: | ||
= Deferred Rendering = | = Deferred Rendering = | ||
+ | [[File:Deferredrendering.jpg|200px|thumb|right|Deferred Rendering]] | ||
Deferred rendering渲染框架。 | Deferred rendering渲染框架。 | ||
Line 23: | Line 24: | ||
= Depth peeling = | = Depth peeling = | ||
+ | [[File:Depthpeeling.jpg|200px|thumb|right|Depth Peeling]] | ||
顺序无关的透明物体渲染。 | 顺序无关的透明物体渲染。 | ||
Line 37: | Line 39: | ||
= Distance mapping = | = Distance mapping = | ||
+ | [[File:Distancemapping.jpg|200px|thumb|right|Distancemapping]] | ||
[http://http.developer.nvidia.com/GPUGems2/gpugems2_chapter08.html GPU Gems 2第八章]中提到的distance mapping。在pixel shader中根据预处理的距离场进行局部球面光线跟踪。这里我做的扩展是可以表现出边缘的轮廓。 | [http://http.developer.nvidia.com/GPUGems2/gpugems2_chapter08.html GPU Gems 2第八章]中提到的distance mapping。在pixel shader中根据预处理的距离场进行局部球面光线跟踪。这里我做的扩展是可以表现出边缘的轮廓。 | ||
Line 51: | Line 54: | ||
= Fractal = | = Fractal = | ||
+ | [[File:Fractal.jpg|200px|thumb|right|Fractal]] | ||
在GPU中计算分形图形。 | 在GPU中计算分形图形。 | ||
Line 63: | Line 67: | ||
= GPU Particle System = | = GPU Particle System = | ||
+ | [[File:Gpuparticlesystem.jpg|200px|thumb|right|GPU Particle System]] | ||
基于GPU的粒子系统。 | 基于GPU的粒子系统。 | ||
Line 78: | Line 83: | ||
= JudaTex Viewer = | = JudaTex Viewer = | ||
+ | [[File:Judatexviewer.jpg|200px|thumb|right|Juda Texture Viewer]] | ||
Juda Texture查看器。 | Juda Texture查看器。 | ||
Line 91: | Line 97: | ||
= Model viewer = | = Model viewer = | ||
+ | [[File:Model_viewer.jpg|200px|thumb|right|Model Viewer]] | ||
一个MeshML模型查看器,支持Skinned mesh和Normal map。初始模型来自于[http://www.cgrealm.cn http://www.cgrealm.cn]。 | 一个MeshML模型查看器,支持Skinned mesh和Normal map。初始模型来自于[http://www.cgrealm.cn http://www.cgrealm.cn]。 | ||
Line 106: | Line 113: | ||
= Motion Blur and Depth of Field = | = Motion Blur and Depth of Field = | ||
+ | [[File:Mblur_dof.jpg|200px|thumb|right|Mition Blur and Depth of Field]] | ||
[[运动模糊]]和[[景深]][[post process]]。可以调节焦平面和焦距范围。并演示了引擎中的instancing实现。在硬件支持instancing的时候会自动切换到硬件实现,否则使用CPU解开instance数据。 | [[运动模糊]]和[[景深]][[post process]]。可以调节焦平面和焦距范围。并演示了引擎中的instancing实现。在硬件支持instancing的时候会自动切换到硬件实现,否则使用CPU解开instance数据。 | ||
Line 123: | Line 131: | ||
= Ocean = | = Ocean = | ||
+ | [[File:Ocean.jpg|200px|thumb|right|Ocean]] | ||
演示水面的渲染。水面的运动通过在GPU上实时地做FFT来模拟。核心来自于NVIDIA的Demo。 | 演示水面的渲染。水面的运动通过在GPU上实时地做FFT来模拟。核心来自于NVIDIA的Demo。 | ||
Line 141: | Line 150: | ||
= Parallax = | = Parallax = | ||
+ | [[File:Parallax.jpg|200px|thumb|right|Parallax]] | ||
Parallax mapping,扩展了normal map技术。 | Parallax mapping,扩展了normal map技术。 | ||
Line 157: | Line 167: | ||
= Particle Editor = | = Particle Editor = | ||
+ | [[File:Particleeditor.jpg|200px|thumb|right|Particle Editor]] | ||
粒子系统编辑器 | 粒子系统编辑器 | ||
Line 172: | Line 183: | ||
= PNTriangles = | = PNTriangles = | ||
+ | [[File:Pn_triangles.jpg|200px|thumb|right|PNTriangles]] | ||
用D3D11的Tessellator实现了Curved PN Triangles,把低模在运行期细分成高模曲面。 | 用D3D11的Tessellator实现了Curved PN Triangles,把低模在运行期细分成高模曲面。 | ||
Line 186: | Line 198: | ||
= PostProcessing = | = PostProcessing = | ||
+ | [[File:Postprocessing.jpg|200px|thumb|right|Post Processing]] | ||
演示[[后处理]]的能力。支持的特效有: | 演示[[后处理]]的能力。支持的特效有: | ||
*Ascii Arts,把渲染的图像拟合成ascii字符的表示。 | *Ascii Arts,把渲染的图像拟合成ascii字符的表示。 | ||
Line 208: | Line 221: | ||
= ProceduralTex = | = ProceduralTex = | ||
+ | [[File:Proceduraltex.jpg|200px|thumb|right|Procedural Texture]] | ||
在GPU上使用Perlin noise来产生多种[[Procedural texture]]。 | 在GPU上使用Perlin noise来产生多种[[Procedural texture]]。 | ||
Line 221: | Line 235: | ||
= Refract = | = Refract = | ||
+ | [[File:Refract.jpg|200px|thumb|right|Refract]] | ||
折射的演示。支持Fresnel和色散现象。 | 折射的演示。支持Fresnel和色散现象。 | ||
Line 238: | Line 253: | ||
= Shadow cube map = | = Shadow cube map = | ||
+ | [[File:Shadowcubemap.jpg|200px|thumb|right|Shadow cube map]] | ||
把传统的shadow map扩展到cube map上,模拟了全方向的点光源和光源的投射。另一个改进是加入了[[Variance Shadow Map]]。 | 把传统的shadow map扩展到cube map上,模拟了全方向的点光源和光源的投射。另一个改进是加入了[[Variance Shadow Map]]。 | ||
Line 252: | Line 268: | ||
= Sub-surface = | = Sub-surface = | ||
+ | [[File:Subsurface.jpg|200px|thumb|right|Sub-surface]] | ||
[[次表面散射]]的实时渲染。 | [[次表面散射]]的实时渲染。 | ||
Line 265: | Line 282: | ||
= Text = | = Text = | ||
+ | [[File:Text.jpg|200px|thumb|right|Text]] | ||
演示了基于signed distance field的[[字体系统|字体显示方法]]。 | 演示了基于signed distance field的[[字体系统|字体显示方法]]。 | ||
Line 277: | Line 295: | ||
= Vertex displacement = | = Vertex displacement = | ||
+ | [[File:Vertexdisplacement.jpg|200px|thumb|right|Vertex displacement]] | ||
在vertex shader中用sin计算顶点和法线的偏移。 | 在vertex shader中用sin计算顶点和法线的偏移。 | ||
Line 290: | Line 309: | ||
= Video texture = | = Video texture = | ||
+ | [[File:Videotexture.jpg|200px|thumb|right|Video Texture]] | ||
演示了Show engine,解码后的视频作为纹理贴到3D物体上。其中用到的视频来自开源电影[http://www.bigbuckbunny.org/ Big Buck Bunny]。 | 演示了Show engine,解码后的视频作为纹理贴到3D物体上。其中用到的视频来自开源电影[http://www.bigbuckbunny.org/ Big Buck Bunny]。 | ||
Revision as of 00:30, 19 December 2010
注意
如果要在没有安装Microsoft Visual C++ 2010的机器上运行二进制版本的例子,需要事先安装Microsoft Visual C++ 2010 Redistributable Package。
Contents
- 1 Deferred Rendering
- 2 Depth peeling
- 3 Distance mapping
- 4 Fractal
- 5 GPU Particle System
- 6 JudaTex Viewer
- 7 Model viewer
- 8 Motion Blur and Depth of Field
- 9 Ocean
- 10 Parallax
- 11 Particle Editor
- 12 PNTriangles
- 13 PostProcessing
- 14 ProceduralTex
- 15 Refract
- 16 Shadow cube map
- 17 Sub-surface
- 18 Text
- 19 Vertex displacement
- 20 Video texture
Deferred Rendering
Deferred rendering渲染框架。
技术点
- Deferred Lighting
- SSAO
- Adaptive Anti-alias
- 任意光源
- Soft shadow
- 文件打包系统
需求
- Geforce 6600以上或Radeon 9500以上。
渲染引擎支持
- D3D11/OpenGL。
Depth peeling
顺序无关的透明物体渲染。
技术点
- Depth peeling
- MRT
- UI
需求
- Geforce 6600以上或Radeon 9500以上。
渲染引擎支持 D3D11/OpenGL。
Distance mapping
GPU Gems 2第八章中提到的distance mapping。在pixel shader中根据预处理的距离场进行局部球面光线跟踪。这里我做的扩展是可以表现出边缘的轮廓。
技术点
- Distance mapping
- 轮廓检测
- Normal map压缩 (3.4.0之后)
需求
- Geforce FX以上或Radeon 9500以上。推荐使用Geforce 6以上。
渲染引擎支持
- D3D11/OpenGL。
Fractal
在GPU中计算分形图形。
技术点
- 双缓存切换
需求
- Geforce FX以上或Radeon 9500以上。推荐使用Geforce 6以上。
渲染引擎支持
- D3D11/OpenGL/OpenGLES2。
GPU Particle System
基于GPU的粒子系统。
技术点
- 粒子系统
- GPU多遍计算
- Vertex texture fetch
- Deferred particle
需求
- Geforce 6以上或Radeon HD2400以上。
渲染引擎支持 D3D11/OpenGL。
JudaTex Viewer
Juda Texture查看器。
技术点
- Juda Texture
- 鼠标交互
需求
- Geforce FX以上或Radeon 9500以上。
渲染引擎支持
- D3D11/OpenGL。
Model viewer
一个MeshML模型查看器,支持Skinned mesh和Normal map。初始模型来自于http://www.cgrealm.cn。
技术点
- GPU骨骼动画
- 模型格式的读取
- Normal map的渲染
- UI
需求
- Geforce FX以上或Radeon 9500以上。
渲染引擎支持
- D3D11/OpenGL/OpenGLES2。
Motion Blur and Depth of Field
运动模糊和景深post process。可以调节焦平面和焦距范围。并演示了引擎中的instancing实现。在硬件支持instancing的时候会自动切换到硬件实现,否则使用CPU解开instance数据。
技术点
- Motion Blur
- Depth of field
- Summed-Area Table
- 软件/硬件instancing
- Script engine
- UI
需求
- Geforce 6600以上或Radeon 9500以上。
渲染引擎支持
- D3D11/OpenGL。
Ocean
演示水面的渲染。水面的运动通过在GPU上实时地做FFT来模拟。核心来自于NVIDIA的Demo。
技术点
- 水面渲染
- Compute shader
- GPU上的FFT
- 反射贴图
- 雾
- 镜头眩光
- 文件打包系统
需求
- Geforce 6以上或Radeon HD2400以上。实时编辑需要Geforce 8以上或Radeon HD4以上。
渲染引擎支持
- D3D11/OpenGL。
Parallax
Parallax mapping,扩展了normal map技术。
技术点
- Parallax mapping
- Normal map压缩 (KlayGE 3.4.0之后)
需求
- Geforce FX以上或Radeon 9500以上。
渲染引擎支持
- D3D11/OpenGL/OpenGLES2。
已知问题
- 在ATI的卡上OpenGL插件显示全黑。
Particle Editor
粒子系统编辑器
技术点
- 粒子系统
- 复杂的UI
- Soft particle
- Geometry shader
需求
- Geforce FX以上或Radeon 9500以上。推荐使用Geforce 6以上。
渲染引擎支持
- D3D11/OpenGL。
PNTriangles
用D3D11的Tessellator实现了Curved PN Triangles,把低模在运行期细分成高模曲面。
技术点
- PN Triangles算法
- Tessellation
- Hull Shader/Domain Shader
需求
- Geforce GTX 4系列以上或RadeonHD 5系列以上。
渲染引擎支持
- D3D11/OpenGL/OpenGLES2。
PostProcessing
演示后处理的能力。支持的特效有:
- Ascii Arts,把渲染的图像拟合成ascii字符的表示。
- 卡通渲染。使用两遍的方法,第一遍得出几何位置,第二遍进行光照和勾边。
- Tiling,砖块的效果。
- HDR。
- Night Vision,模拟夜视仪看到的效果。
- Old Fashion,老照片效果。
技术点
- post process
- 用GPU进行ascii匹配
- Cartoon post process
- 深度和法线间断点的查找
- MRT
需求
- Geforce 6600以上或Radeon 9500以上。
渲染引擎支持
- D3D11/OpenGL。
ProceduralTex
在GPU上使用Perlin noise来产生多种Procedural texture。
技术点
- Perlin noise
- Procedural texture
需求
- Geforce FX以上或Radeon 9500以上。
渲染引擎支持
- D3D11/OpenGL/OpenGLES2。
Refract
折射的演示。支持Fresnel和色散现象。
技术点
- 反射、折射和Fresnel
- 色散
- HDR渲染
- Tone mapping
- HDR纹理压缩
- 双面折射
需求
- Geforce FX以上或Radeon 9500以上。推荐使用Geforce 6以上。
渲染引擎支持
- D3D11/OpenGL。
Shadow cube map
把传统的shadow map扩展到cube map上,模拟了全方向的点光源和光源的投射。另一个改进是加入了Variance Shadow Map。
技术点
- 全方向的shadow map
- VSM
- 纹理投射
需求
- Geforce FX 5600以上或Radeon 9500以上。推荐使用Geforce 6以上。
渲染引擎支持
- D3D11/OpenGL。
Sub-surface
次表面散射的实时渲染。
技术点
- 次表面散射
- Bump map
需求
- Geforce FX 5600以上或Radeon 9500以上。推荐使用Geforce 6以上。
渲染引擎支持
- D3D11/OpenGL。
Text
演示了基于signed distance field的字体显示方法。
技术点
- Font
需求
- Geforce FX以上或Radeon 9500以上。
渲染引擎支持
- D3D11/OpenGL/OpenGLES2。
Vertex displacement
在vertex shader中用sin计算顶点和法线的偏移。
技术点
- 顶点偏移
- 通过导函数直接计算法线
需求
- Geforce 4 Ti以上或Radeon 9200以上。
渲染引擎支持
- D3D11/OpenGL/OpenGLES2。
Video texture
演示了Show engine,解码后的视频作为纹理贴到3D物体上。其中用到的视频来自开源电影Big Buck Bunny。
技术点
- DirectShow解码到纹理
需求
- Geforce 4 Ti以上或Radeon 9200以上。
渲染引擎支持
- D3D11/OpenGL/OpenGLES2。
已知问题
- 在D3D11中无法全屏。