|
|
GDC 2008一些Presentation的笔记,因为就在家门口开的,所以去逛了逛。这里有我自己记的,也有同事写的:
Harnessing the power of multiple GPUs - AMD
1. 主要讲了2种使用多个GPU的方式,SFP( Split Frame Rendering ). 也就是一贞数据放在2个GPU上同时计算,使用动态平衡。
2. AFR ( Alternate Frame Rendering ) 每个GPU渲染不同的贞。这种方式比较流行,但是也有很多问题。比如很难解决上一贞和下一贞之间的依赖关系,motion blur就是的例子。
The technology of Uncharted: Drake’s Fortune
这个主要是讲Drake's Fortune PS3 游戏的。主要是分2个部分,下面是一些比较有趣的要点:
1. 所有的static light information都是存在vertex buffer里的,只有dynamic light使用一个grid object management system 管理
2. 所有的level data分成多个固定大小的data block, 用来减少内存碎片,使loading 更快(我很喜欢这个优化)
3. 使用自己写的texture memory defragmentation. 当然PC上都是dx管理拉,所以用不到。
4. Physic System, 很普通。。。。没啥好说的
5. Scene management: PVS ( SPU version ), Sorting on PPU
Stupid spherical harmonics tricks (看下面的link吧。差不多就这些)
1. http://www.ppsloan.org/publications/StupidSH35.pdf
Insomniac’s SPU programming practices
又是PS3的SPU,看来PS3可能要崛起了.
1. 对SPU programming 来说,Data layout是最关键的。
2. 尽量少用Synchronization,
3. 把data block size 定在 16 bytes, 128 bytes aligned
4. code和data是一样的,对于SPU programming来说,可以把code当作data 来看待。如果SPU需要run不固定的code,直接从main memory传code过去就是了。
5. SPU run shader是个很不错的主意。
Procedural data generation in Far Cry 2 - Ubisoft
Nothing special,
1. 他们的经验就是procedural terrain非常难调试,一个小的参数变化会引起无数个bug。汗个,虽然procedural map很先进。。。。没想到这么恐怖。
GPU optimization with the latest Nvidia performance tools - Nvidia
Nvidia每年固定的广告presentation, 内容应该都在这里:
http://developer.download.nvidia.com/shaderlibrary/webpages/shader_library.html
Crysis next-gen effects
这个是我最感兴趣的,不过看过以后发现实在没啥特别的:不过扔在3年前他们开始做的时候,还是很厉害,下面是一些水面效果的tips:
1. Tessendorf model, using render to texture and vertex displacement
2. Simulated reflection
3. Refraction做的不错,使用上一贞的数据做输入,mask out所有水面上的东西
4. Procedural caustics, 使用单独一个pass
5. "God" rays for under water effect
Practical light and color
3个link,感觉很象他的个人广告:
http://www.thegnomonworkshop.com/dvds/jvi01.html
http://www.amazon.com/Vision-Art-Margaret-S-Livingstone/dp/0810904063
http://www.jermilex.com/Jermilex.com/Home.html
Lightmap compression in Halo 3
懒的写了,都在这:
http://www.bungie.net/images/Inside/publications/presentations/Lightmap_Compression_2008_02_22.pptx
Advanced visual effects with direct3d 主要是DX10
1. Optimization tips:
- 不要同时使用多过3,4个constant buffer, 如果要更改constant buffer里的内容(dx9是static buffer) 最好是创建一个新的buffer来替换旧的。因为如果使用lock/copy/unlock(注意是第2次,第一次数据初始化不会), 驱动会把video memory里的buffer移动到system memory里。变成dynamic buffer.
- 尽量压缩Vertex Size
- 如果Pixel shader很慢,使用Depth prepass. (先render depth buffer,这样可以利用Z-Pre-rejection )
- 尽量少用temp register,虽然temp register很多,但是你用的越多,能同时并行运行的shader code就越少。所以少用能增加并行。
- 不要用 D24_UNORM_S8_UINT format ,非常慢。
- 使用1x1的texture来检查是不是texture sampling bottle neck
- int 和 float的之间的转换非常慢,尽量不要用。
http://ati.amd.com/developer/gdc/2008/Ultimate_Graphics_Performance_for_DirectX_10_Hardware.pdf
http://ati.amd.com/developer/gdc/2008/DirectX10.1.pdf
xbox360懒的写了。
=====================================
原文在我的blog上:http://blog.sina.com.cn/aear |
|