偶然发现了一个检测浮点数是否是NaN的做法:如果f == f返回false,就表示f是NaN。对于float和double都管用。
在今年的I3D上将有一篇名为“Subpixel Reconstruction Antialiasing”的论文,在NVIDIA的网站上找到的简介如下:
Subpixel Reconstruction Antialiasing (SRAA) combines single-pixel (1x) shading with subpixel visibility to create antialiased images without increasing the shading cost. SRAA targets deferred-shading renderers, which cannot use multisample antialiasing. SRAA operates as a post-process on a rendered image with superresolution depth and normal buffers, so it can be incorporated into an existing renderer without modifying the shaders. In this way SRAA resembles Morphological Antialiasing ( ...
NVIDIA的Parallel Nsight 1.51发布了,而且Professional版本也是免费的,不用license。但是,单机调试仍然泥马要求有2个GPU...啥时候能把这个改了就好了。
下载地址在http://developer.nvidia.com/object/nsight.html
KlayGE中的延迟渲染(四)集中在Anti-alias的方法,本篇是这个系列的完结篇,我们一起来探讨未来将对延迟渲染所做的改进。
展望未来
shading pass再次渲染物体的改进
Deferred Lighting最受争议的一点应属在shading pass需要再次渲染几何体了。如果物体很多,尤其是有tessellation和GS的,多渲一遍有可能抵消了lighting pass带来的性能提升。改进的方法之一就是在建立G-Buffer阶段,用类似Deferred Shading的fat G-Buffer。除了原先的一张纹理,还需要一张纹理用来存放diffuse信息。但是lighting pass和原来一样,不涉及diffuse。shading pass就变成画一个全屏四边形,从G-Buffer的第二章纹理读取diffuse,进行着色。甚至emit也这么处理。 ...
早在2009年google就发布了android NDK,旨在用C/C++来开发android程序。但NDK并不能纯粹用C/C++来使用,而是通过JNI的形式让Java端调用。现在,这一点终于有了改观。在NDK r5上,可以独立用C/C++完成开发了!而且,OpenGL ES,Open SL ES,感应器等平台相关的API也暴露给了native,可以直接调用。对广大游戏开发者不啻为一件美事。
来自于google人员的blog中提到:“Of course, access to the regular Android API still requires Dalvik, and the VM is still present in native applications, operating behind the scenes. Should you need to do more than the NDK interfaces provide, you can always invoke Dalvik methods via JNI. ...
在以前的一个帖子里,我还期待NV SDK 11早日到来。结果1月份快过去了,11没到,NV却偷偷摸摸地发布了NV SDK 10.6。更新如下:
An improved version of Instanced Tessellation. This sample implements 3 major schemes for Approximating Catmull-Clark Subdivision Surfaces using instanced tessellation in both DX9 and DX10. In the sample, these three schemes are also compared in terms of their visual quality and performance.
Bug fix for StencilRoutedKBuffer: the previous version would create a DX 10.1 device, resulting in corruption errors. A modification to DXUTCore prevents the DX 10.1 device from bei ...
KlayGE中的延迟渲染(三)介绍了lighting pass的优化技巧,本篇将讲解anti-alias。
Anti-Alias
从Deferred Shading发明的一天起,anti-alias的问题就一直困扰着所有Deferred的方法。虽然很多无良的游戏厂商直接在Deferred Rendering的游戏里不支持AA,但确实AA对提升画面质量很有帮助。
Edge AA
在Deferred的框架里,很自然会想到用Edge AA来处理AA。其过程不外乎:
边缘检测,得到每个像素“像边缘的程度”
在shader里根据“像边缘的程度”来控制采样坐标
这本身并不是个复杂的过程,尤其是第二步,非常直截了当了,所以这里集中讨论的是如何进行边缘检测。
GPU Gems 2的“Deferred Shading in STALKER”一文提供了一种边缘检测的 ...
昨天NVIDIA GTX 560 Ti发布了,还启用了当年红极一时的Ti名号。但是看它的规格:
GTX460
GTX560
GTX470
CUDA Cores
336
384
448
Graphics Clock (MHz)
675
822
607
Processor Clock (MHz)
1350
1645
1215
Texture Fill Rate (billion/sec)
37.8
52.5
34
价格(CNY)
1399
1999
1999
从规格上可以看出,GTX560的core只是介于上一代的GTX460和GTX470之间,频率变高了。但价格却定位在了和GTX470一样的位置(甚至比某些GTX470还贵)。我不认为GTX560 Ti会有很高的性价比,至少不如GTX460,令人失望啊。
在KlayGE中的延迟渲染(二)里,Deferred Lighting的3个阶段都已经得到解释,本篇将讲解如何更快地计算lighting pass。
Light volume
在Deferred Rendering中,表示一个光源最简单的方法就是一个全屏的四边形。它能让G-Buffer的每一个pixel都参与计算,在pixel shader中才过滤掉多余的像素。虽然可以保证结果正确,但毕竟多余计算太多,效率不高。这里常用的一个优化就是用一个凸的几何形状来表示光源。该几何 形状覆盖的pixel才计算该光源对它的贡献。显而易见的是,spot light用圆锥,point light用球或者立方体,directional light和ambient light用全屏四边形。下图画了一个spot light的volume:
这样的几何体类似于古老的shado ...
HPG2010上有一篇Parallel SAH k-D Tree Construction,论文和代码都公开了,分别在
http://denovo.cs.illinois.edu/Pubs/10-hpg-parkd.pdf
https://github.com/bchoi/ParKD
看结果还不错,32线程可以到8倍的速度提升。