Difference between revisions of "例子程序"
Gongminmin (Talk | contribs) m |
Gongminmin (Talk | contribs) |
||
Line 10: | Line 10: | ||
[[File:Deferredrendering.jpg|200px|thumb|right|Deferred Rendering]] | [[File:Deferredrendering.jpg|200px|thumb|right|Deferred Rendering]] | ||
Deferred rendering渲染框架。 | Deferred rendering渲染框架。 | ||
+ | |||
+ | '''难度''' | ||
+ | 难 | ||
''' 技术点 ''' | ''' 技术点 ''' | ||
Line 28: | Line 31: | ||
[[File:Depthpeeling.jpg|200px|thumb|right|Depth Peeling]] | [[File:Depthpeeling.jpg|200px|thumb|right|Depth Peeling]] | ||
顺序无关的透明物体渲染。 | 顺序无关的透明物体渲染。 | ||
+ | |||
+ | '''难度''' | ||
+ | 中 | ||
'''技术点''' | '''技术点''' | ||
Line 43: | Line 49: | ||
[[File:Distancemapping.jpg|200px|thumb|right|Distancemapping]] | [[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 58: | Line 67: | ||
[[File:Fractal.jpg|200px|thumb|right|Fractal]] | [[File:Fractal.jpg|200px|thumb|right|Fractal]] | ||
在GPU中计算分形图形。 | 在GPU中计算分形图形。 | ||
+ | |||
+ | '''难度''' | ||
+ | 容易 | ||
'''技术点''' | '''技术点''' | ||
Line 71: | Line 83: | ||
[[File:Gpuparticlesystem.jpg|200px|thumb|right|GPU Particle System]] | [[File:Gpuparticlesystem.jpg|200px|thumb|right|GPU Particle System]] | ||
基于GPU的粒子系统。 | 基于GPU的粒子系统。 | ||
+ | |||
+ | '''难度''' | ||
+ | 中 | ||
'''技术点''' | '''技术点''' | ||
Line 87: | Line 102: | ||
[[File:Judatexviewer.jpg|200px|thumb|right|Juda Texture Viewer]] | [[File:Judatexviewer.jpg|200px|thumb|right|Juda Texture Viewer]] | ||
[[Juda Texture]]查看器。 | [[Juda Texture]]查看器。 | ||
+ | |||
+ | '''难度''' | ||
+ | 中 | ||
'''技术点''' | '''技术点''' | ||
Line 101: | Line 119: | ||
[[File:Model_viewer.jpg|200px|thumb|right|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 117: | Line 138: | ||
[[File:Mblur_dof.jpg|200px|thumb|right|Mition 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 135: | Line 159: | ||
[[File:Ocean.jpg|200px|thumb|right|Ocean]] | [[File:Ocean.jpg|200px|thumb|right|Ocean]] | ||
演示水面的渲染。水面的运动通过在GPU上实时地做FFT来模拟。核心来自于NVIDIA的Demo。 | 演示水面的渲染。水面的运动通过在GPU上实时地做FFT来模拟。核心来自于NVIDIA的Demo。 | ||
+ | |||
+ | '''难度''' | ||
+ | 难 | ||
'''技术点''' | '''技术点''' | ||
Line 154: | Line 181: | ||
[[File:Parallax.jpg|200px|thumb|right|Parallax]] | [[File:Parallax.jpg|200px|thumb|right|Parallax]] | ||
Parallax mapping,扩展了normal map技术。 | Parallax mapping,扩展了normal map技术。 | ||
+ | |||
+ | '''难度''' | ||
+ | 容易 | ||
'''技术点''' | '''技术点''' | ||
Line 171: | Line 201: | ||
[[File:Particleeditor.jpg|200px|thumb|right|Particle Editor]] | [[File:Particleeditor.jpg|200px|thumb|right|Particle Editor]] | ||
粒子系统编辑器 | 粒子系统编辑器 | ||
+ | |||
+ | '''难度''' | ||
+ | 中 | ||
'''技术点''' | '''技术点''' | ||
Line 187: | Line 220: | ||
[[File:Pn_triangles.jpg|200px|thumb|right|PNTriangles]] | [[File:Pn_triangles.jpg|200px|thumb|right|PNTriangles]] | ||
用D3D11的Tessellator实现了Curved PN Triangles,把低模在运行期细分成高模曲面。 | 用D3D11的Tessellator实现了Curved PN Triangles,把低模在运行期细分成高模曲面。 | ||
+ | |||
+ | '''难度''' | ||
+ | 中 | ||
'''技术点''' | '''技术点''' | ||
Line 208: | Line 244: | ||
*Night Vision,模拟夜视仪看到的效果。 | *Night Vision,模拟夜视仪看到的效果。 | ||
*Old Fashion,老照片效果。 | *Old Fashion,老照片效果。 | ||
+ | |||
+ | '''难度''' | ||
+ | 中 | ||
'''技术点''' | '''技术点''' | ||
Line 225: | Line 264: | ||
[[File:Proceduraltex.jpg|200px|thumb|right|Procedural Texture]] | [[File:Proceduraltex.jpg|200px|thumb|right|Procedural Texture]] | ||
在GPU上使用Perlin noise来产生多种[[Procedural texture]]。 | 在GPU上使用Perlin noise来产生多种[[Procedural texture]]。 | ||
+ | |||
+ | '''难度''' | ||
+ | 容易 | ||
'''技术点''' | '''技术点''' | ||
Line 239: | Line 281: | ||
[[File:Refract.jpg|200px|thumb|right|Refract]] | [[File:Refract.jpg|200px|thumb|right|Refract]] | ||
折射的演示。支持Fresnel和色散现象。 | 折射的演示。支持Fresnel和色散现象。 | ||
+ | |||
+ | '''难度''' | ||
+ | 中 | ||
'''技术点''' | '''技术点''' | ||
Line 257: | Line 302: | ||
[[File:Shadowcubemap.jpg|200px|thumb|right|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 272: | Line 320: | ||
[[File:Subsurface.jpg|200px|thumb|right|Sub-surface]] | [[File:Subsurface.jpg|200px|thumb|right|Sub-surface]] | ||
[[次表面散射]]的实时渲染。 | [[次表面散射]]的实时渲染。 | ||
+ | |||
+ | '''难度''' | ||
+ | 中 | ||
'''技术点''' | '''技术点''' | ||
Line 286: | Line 337: | ||
[[File:Text.jpg|200px|thumb|right|Text]] | [[File:Text.jpg|200px|thumb|right|Text]] | ||
演示了基于signed distance field的[[字体系统|字体显示方法]]。 | 演示了基于signed distance field的[[字体系统|字体显示方法]]。 | ||
+ | |||
+ | '''难度''' | ||
+ | 容易 | ||
'''技术点''' | '''技术点''' | ||
Line 299: | Line 353: | ||
[[File:Vertexdisplacement.jpg|200px|thumb|right|Vertex displacement]] | [[File:Vertexdisplacement.jpg|200px|thumb|right|Vertex displacement]] | ||
在vertex shader中用sin计算顶点和法线的偏移。 | 在vertex shader中用sin计算顶点和法线的偏移。 | ||
+ | |||
+ | '''难度''' | ||
+ | 容易 | ||
'''技术点''' | '''技术点''' | ||
Line 313: | Line 370: | ||
[[File:Videotexture.jpg|200px|thumb|right|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 05:42, 9 January 2011
注意
如果要在没有安装Microsoft Visual C++ 2010的机器上运行二进制版本的例子,需要事先安装Microsoft Visual C++ 2010 Redistributable Package。
在第一次执行之前,建议先运行引擎提供的KConfig来完成配置。
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中无法全屏。