Difference between revisions of "例子程序"
Gongminmin (Talk | contribs) m (1个修订) |
Gongminmin (Talk | contribs) (Created page with "''' 注意 ''' 如果要在没有安装Microsoft Visual C++ 2010的机器上运行二进制版本的例子,需要事先安装Microsoft Visual C++ 2010 Redistributable Package...") |
||
(16 intermediate revisions by one user not shown) | |||
Line 5: | Line 5: | ||
*x64版本可以从[http://www.microsoft.com/downloads/details.aspx?displaylang=en&FamilyID=bd512d9e-43c8-4655-81bf-9350143d5867]下载。 | *x64版本可以从[http://www.microsoft.com/downloads/details.aspx?displaylang=en&FamilyID=bd512d9e-43c8-4655-81bf-9350143d5867]下载。 | ||
− | + | = Deferred Shading = | |
− | + | Deferred shading渲染框架。 | |
− | = Deferred | + | |
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
''' 技术点 ''' | ''' 技术点 ''' | ||
Line 20: | Line 14: | ||
#任意光源 | #任意光源 | ||
#Soft shadow | #Soft shadow | ||
− | |||
''' 需求 ''' | ''' 需求 ''' | ||
Line 29: | Line 22: | ||
= Depth peeling = | = Depth peeling = | ||
− | |||
顺序无关的透明物体渲染。 | 顺序无关的透明物体渲染。 | ||
− | |||
− | |||
− | |||
'''技术点''' | '''技术点''' | ||
Line 47: | Line 36: | ||
= Distance mapping = | = Distance mapping = | ||
− | + | GPU Gems 2中提到的distance mapping。在pixel shader中根据预处理的距离场进行局部球面光线跟踪。这里我做的扩展是可以表现出边缘的轮廓。 | |
− | + | ||
− | + | ||
− | + | ||
− | + | ||
'''技术点''' | '''技术点''' | ||
Line 65: | Line 50: | ||
= Fractal = | = Fractal = | ||
− | |||
在GPU中计算分形图形。 | 在GPU中计算分形图形。 | ||
− | |||
− | |||
− | |||
'''技术点''' | '''技术点''' | ||
Line 81: | Line 62: | ||
= GPU Particle System = | = GPU Particle System = | ||
− | |||
基于GPU的粒子系统。 | 基于GPU的粒子系统。 | ||
− | |||
− | |||
− | |||
'''技术点''' | '''技术点''' | ||
Line 100: | Line 77: | ||
= JudaTex Viewer = | = JudaTex Viewer = | ||
− | + | Juda Texture查看器。 | |
− | + | ||
− | + | ||
− | + | ||
− | + | ||
'''技术点''' | '''技术点''' | ||
− | # | + | #Juda Texture |
#鼠标交互 | #鼠标交互 | ||
Line 117: | Line 90: | ||
= Model viewer = | = Model viewer = | ||
− | + | 一个MeshML模型查看器,支持Skinned mesh和Normal map。初始模型来自于http://www.cgrealm.cn。 | |
− | 一个MeshML模型查看器,支持Skinned mesh和Normal | + | |
− | + | ||
− | + | ||
− | + | ||
'''技术点''' | '''技术点''' | ||
Line 136: | Line 105: | ||
= Motion Blur and Depth of Field = | = Motion Blur and Depth of Field = | ||
− | + | 运动模糊和景深post process。可以调节焦平面和焦距范围。并演示了引擎中的instancing实现。在硬件支持instancing的时候会自动切换到硬件实现,否则使用CPU解开instance数据。 | |
− | + | ||
− | + | ||
− | + | ||
− | + | ||
'''技术点''' | '''技术点''' | ||
− | # | + | #Motion Blur |
− | # | + | #Depth of field |
#Summed-Area Table | #Summed-Area Table | ||
#软件/硬件instancing | #软件/硬件instancing | ||
Line 157: | Line 122: | ||
= Ocean = | = Ocean = | ||
− | |||
演示水面的渲染。水面的运动通过在GPU上实时地做FFT来模拟。核心来自于NVIDIA的Demo。 | 演示水面的渲染。水面的运动通过在GPU上实时地做FFT来模拟。核心来自于NVIDIA的Demo。 | ||
− | |||
− | |||
− | |||
'''技术点''' | '''技术点''' | ||
Line 170: | Line 131: | ||
#雾 | #雾 | ||
#镜头眩光 | #镜头眩光 | ||
− | |||
'''需求''' | '''需求''' | ||
Line 179: | Line 139: | ||
= Parallax = | = Parallax = | ||
− | |||
Parallax mapping,扩展了normal map技术。 | Parallax mapping,扩展了normal map技术。 | ||
− | |||
− | |||
− | |||
'''技术点''' | '''技术点''' | ||
Line 199: | Line 155: | ||
= Particle Editor = | = Particle Editor = | ||
− | |||
粒子系统编辑器 | 粒子系统编辑器 | ||
− | |||
− | |||
− | |||
'''技术点''' | '''技术点''' | ||
Line 218: | Line 170: | ||
= PNTriangles = | = PNTriangles = | ||
− | |||
用D3D11的Tessellator实现了Curved PN Triangles,把低模在运行期细分成高模曲面。 | 用D3D11的Tessellator实现了Curved PN Triangles,把低模在运行期细分成高模曲面。 | ||
− | |||
− | |||
− | |||
'''技术点''' | '''技术点''' | ||
#PN Triangles算法 | #PN Triangles算法 | ||
− | # | + | #Tessellation |
− | + | ||
#Hull Shader/Domain Shader | #Hull Shader/Domain Shader | ||
'''需求''' | '''需求''' | ||
− | *Geforce | + | *Geforce GTX 4系列以上或RadeonHD 5系列以上。 |
'''渲染引擎支持''' | '''渲染引擎支持''' | ||
Line 237: | Line 184: | ||
= PostProcessing = | = PostProcessing = | ||
− | |||
演示[[后处理]]的能力。支持的特效有: | 演示[[后处理]]的能力。支持的特效有: | ||
*Ascii Arts,把渲染的图像拟合成ascii字符的表示。 | *Ascii Arts,把渲染的图像拟合成ascii字符的表示。 | ||
Line 245: | Line 191: | ||
*Night Vision,模拟夜视仪看到的效果。 | *Night Vision,模拟夜视仪看到的效果。 | ||
*Old Fashion,老照片效果。 | *Old Fashion,老照片效果。 | ||
− | |||
− | |||
− | |||
'''技术点''' | '''技术点''' | ||
Line 263: | Line 206: | ||
= ProceduralTex = | = ProceduralTex = | ||
− | |||
在GPU上使用Perlin noise来产生多种[[Procedural texture]]。 | 在GPU上使用Perlin noise来产生多种[[Procedural texture]]。 | ||
− | |||
− | |||
− | |||
'''技术点''' | '''技术点''' | ||
#Perlin noise | #Perlin noise | ||
− | # | + | #Procedural texture |
'''需求''' | '''需求''' | ||
Line 280: | Line 219: | ||
= Refract = | = Refract = | ||
− | |||
折射的演示。支持Fresnel和色散现象。 | 折射的演示。支持Fresnel和色散现象。 | ||
− | |||
− | |||
− | |||
'''技术点''' | '''技术点''' | ||
Line 290: | Line 225: | ||
#色散 | #色散 | ||
#HDR渲染 | #HDR渲染 | ||
− | # | + | #Tone mapping |
#HDR纹理压缩 | #HDR纹理压缩 | ||
#双面折射 | #双面折射 | ||
Line 301: | Line 236: | ||
= Shadow cube map = | = Shadow cube map = | ||
− | + | 把传统的shadow map扩展到cube map上,模拟了全方向的点光源和光源的投射。另一个改进是加入了[Variance Shadow Map]。 | |
− | 把传统的shadow map扩展到cube map上,模拟了全方向的点光源和光源的投射。另一个改进是加入了 | + | |
− | + | ||
− | + | ||
− | + | ||
'''技术点''' | '''技术点''' | ||
Line 319: | Line 250: | ||
= Sub-surface = | = Sub-surface = | ||
− | + | 次表面散射的实时渲染。 | |
− | + | ||
− | + | ||
− | + | ||
− | + | ||
'''技术点''' | '''技术点''' | ||
− | # | + | #Sub-surface scattering |
#Bump map | #Bump map | ||
Line 336: | Line 263: | ||
= Text = | = Text = | ||
− | + | 演示了基于signed distance field的字体显示方法。 | |
− | 演示了基于signed distance | + | |
− | + | ||
− | + | ||
− | + | ||
'''技术点''' | '''技术点''' | ||
Line 352: | Line 275: | ||
= Vertex displacement = | = Vertex displacement = | ||
− | |||
在vertex shader中用sin计算顶点和法线的偏移。 | 在vertex shader中用sin计算顶点和法线的偏移。 | ||
− | |||
− | |||
− | |||
'''技术点''' | '''技术点''' | ||
Line 369: | Line 288: | ||
= Video texture = | = Video texture = | ||
− | + | 演示了Show engine,解码后的视频作为纹理贴到3D物体上。其中用到的视频来自开源电影Big Buck Bunny。 | |
− | 演示了Show | + | |
− | + | ||
− | + | ||
− | + | ||
'''技术点''' | '''技术点''' |
Revision as of 00:07, 11 December 2010
注意
如果要在没有安装Microsoft Visual C++ 2010的机器上运行二进制版本的例子,需要事先安装Microsoft Visual C++ 2010 Redistributable Package。
Contents
- 1 Deferred Shading
- 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 Shading
Deferred shading渲染框架。
技术点
- 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
次表面散射的实时渲染。
技术点
- Sub-surface scattering
- 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中无法全屏。