Rendering World

寻求图形开发相关工作,拥有c,c++和.NET多年开发经验

博客园 首页 新随笔 联系 订阅 管理
  10 Posts :: 0 Stories :: 8 Comments :: 0 Trackbacks

2010年6月30日 #

Adding depth of field effects to a renderer based on monte carlo is very simple.

here is a test picture.

Sun & Sky light is hard to full implement in cuda. so no atmosphere effect now.

 

this is a test picture for glossy material. there is a lot of glossy material in the scene,

the most difficult problem is highlight in the ceramic, they are appeared after many samples.

posted @ 2010-06-30 22:54 every 阅读(1078) 评论(2) 编辑

2010年6月26日 #

cuda最近动作比较大,可能跟fermi的推出有关,cuda 3.0才推出没多久,cuda3.1就推出了,

改进还是蛮多的,最重要的是支持了c++的class和function pointer,这样就有可能实现

比较复杂系统了。遗憾的是这些新功能都需要新的hardware,我的老gts250没法使用。

只好试了下class的功能,的确可以实现 object base 。算是编写程序方便了一点。

nexus也推出了对应cuda3.0的新版本,这一次改进了很多bug.

以前有很多big kernel都无法设置breakpoint,这一次cudaRay中只有一个kernel无法设置,

而且能够设置breakpoint的kernel都支持单步跟踪,调试大大方便了,遗憾的是bug依然很多,

step的时候经常会突然退出。可能是因为我的运行环境不太好(单机器 + 双gpu).

 

目前cudaRay增强了纹理的支持,目前可以支持大量图象贴图了。

posted @ 2010-06-26 21:55 every 阅读(1108) 评论(1) 编辑

2010年3月9日 #

glossy材质,其实本来是写的一个多层layer材质,但是cuda不支持一些抽象功能,很难构造

动态的shade tree,结果还是简化成了 diffuse + anisotropic 。

Nvida的确在cuda上做了不少工作,现在基于visual studio 2008的调试工具nexus正在beta1,

我申请了一个号,尝试了一下。

1。目前只支持两台机器,通过tcp连接,其中一台需要支持cuda的gpu. 我只有一台机器,未曾试过

2。一台机器配两个gpu运行,官方没有公开支持,但还有有相关文档,我把以前旧的7300卡找出来

试了一下,工作正常。对于nexus beta自带的一些例子,调试没有问题,能够直接观察gpu的运行

状态,大大方便了开发。但是随后我尝试调试自己的程序,竟然连设置breakpoint都有问题,有

时候是breakpoint无效,有时候确实中断了,但是竟然出现无法找到对应的source code。

总之,结论只能对付简单程序,对于规模略大一点的还是bug太多,无法使用。

 

 

posted @ 2010-03-09 22:42 every 阅读(1267) 评论(0) 编辑

2010年2月5日 #

斯金纳是谁?一个百年前出生的心理学家,没有炒过股,但他的理论,用之股市,会让人惊出一身汗,恍然发现,我们这些炒股者,原来皆似斯金纳实验中的老鼠。
  
  斯金纳将老鼠关在实验箱中,如果老鼠意外踩到控制杆,便会有食物颗粒掉出,老鼠得此奖赏,很快便将原先无意间的举动转变为刻意的行为。于是斯金纳改变奖赏频率,老鼠若要获得奖赏,必须压杆3次、5次或是20次,老鼠亦很快学会。若将奖赏移除,则老鼠渐渐不再压杆。这说明,事后强化可使老鼠“学习成长”。
  
  现在,斯金纳的实验进行最精彩的部分。他将奖赏频率设定为随机,老鼠在多数时候都空手而回,但或许压杆40次或60次,突然有食物掉出。一般人直觉认为,随机且间隔如此长的奖赏,老鼠会对获得奖赏不抱希望,致使压杆行为消失。事实并非如此。
  
  斯金纳发现,间歇奖赏的方式,反而让这些老鼠像染上毒瘾一样,不断压杆,不论能否得到奖赏。斯金纳进而将固定频率(如压杆4次就得到食物)与随机的间歇奖赏进行对比,发现奖赏随机的情境下,消除老鼠压杆行为需时最久。
  
  斯金纳的发现,意义重大,使人类知道自己各式各类愚蠢行为,原来都有一定模式可循。为什么我们做了许多蠢事,即使得不到回报,仍旧执迷不悟?为何我们的好友会痴痴守在电话旁,苦候恶劣男友偶尔心血来潮打来的电话,居然还觉得是莫大恩惠?为什么有人身心健全,却在烟雾弥漫的赌场倾家荡产?为什么女性总是爱过头,男性总喜欢玩股票?
  
  斯金纳让我们知道,这一切都是“间歇强化”在作崇,也让我们看清其运作过程及随之产生的强迫作用。这种心理作用威力惊人,自有人类以来,无人不受其影响。我们深陷其中,无法自拔,无人能抵挡。
posted @ 2010-02-05 15:48 every 阅读(99) 评论(0) 编辑

2010年1月23日 #

为了增加对 材质 和图像文件的支持,这个简单的renderer又一次被重构,

现在可以直接用hdri图像做环境光,支持各种图形格式(用的devil图形库,够简单,够用)以下为一简单测试场景。

 

遗憾的是速度竟然慢了近10倍,可能是因为现在可以用贴图改变材质参数,导致读内存太频繁?

posted @ 2010-01-23 15:44 every 阅读(1224) 评论(0) 编辑

2010年1月5日 #

摘要: 这段时间熟悉了一下cuda, 为我的实验renderer增加了triangle mesh模型,初步是把原来的kd-tree移植到gpu上,不过kd-tree的构造还是在cpu中。从简单的smallpt(全部是sphere)到现在,程序结构已经改过好几遍了,目前还是没有寻找到比较好的模型。cuda需要内联所有的调用函数,这导致我只能采取一个big kernel,包含所有需要的文件,编译速度也比较慢。...阅读全文
posted @ 2010-01-05 23:50 every 阅读(1963) 评论(1) 编辑

2009年12月19日 #

摘要: cuda的模型很简洁,基本上就是针对一大段数据,调用函数并行处理。但是目前限制很多,如所有gpu上执行的函数都必须内联,这意味着你没法用模块化或面向对象的设计来分离复杂系统。还有寄存器十分有限,对Ray tracing来说基本不够用,这让gpu的吞吐量无法很高。不过,作为一个飞速发展的并行模型来说,未来有很大的潜力。600 path per pixel这张图是针对smallpt改造的cuda版本,...阅读全文
posted @ 2009-12-19 22:43 every 阅读(1338) 评论(3) 编辑

2009年12月18日 #

摘要: 软件开发并行化的趋势开来不可避免了, Nvida的cuda看起来提供了一个比较受限,但也简洁的方案。 几个月前买了一块gts250,了解了下cuda的编程模型,准备写一个path tracing来测试下cuda的潜力。阅读全文
posted @ 2009-12-18 10:39 every 阅读(119) 评论(0) 编辑

摘要: Bssrdf的效果对于相当多的材质是不可缺少的,这是2003年根据henrik发表的论文,针对 Maya写的一个插件,根据多边形模型,采用分割算法产生表面采样点,最后计算出散射效果,速度比当时的同类产品还是快点,而且效果比较好,接近原始论文。所有图片都是用Maya内置的渲染器渲染的。仿照论文上的那张图片阅读全文
posted @ 2009-12-18 10:38 every 阅读(137) 评论(0) 编辑

摘要: 这是2000年时候学习Computer Graphics时候写的一个renderer,基于ray tracing, Gi算法采用 Photon Map 加上 Final Gather的方法,并利用Irradiance Cache (with irradiance gradients) 节省渲染时间。阅读全文
posted @ 2009-12-18 10:37 every 阅读(254) 评论(1) 编辑