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懒的写了。