Raytrace world

Chaos 的光线跟踪世界

  C++博客 :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理 ::
  4 随笔 :: 0 文章 :: 63 评论 :: 0 Trackbacks
 
一个支持 RIB 和 RSL 的高速 raytracer,高速得可以近实时进行光线跟踪。
 

大图
 
 
经过了一年多的断断续续的开发,BloomingQuad 终于已经成型了,并能向一些实际应用性工作迈进,比如 Ambient Occlusion ,或者 RSL Shader。

其实我已经写疯了,所以现在我似乎都不知道应该写什么来介绍它好。

然而,我刚刚毕业了,离开了舒服的学校,接下来必须面对吃饭问题。

所以、开门见山,我现在发布的 BloomingQuad 其实并不完善(应该说相当不完善),我 90% 是为了找工作才发布的,又或者说,希望能找到懂得它的作用和意义的合作伙伴。

很多人说我不切实际、又说我开发些没有 P 用的东西,也有很多人不屑,我不在乎,因为只要这个世界上依然有一个人懂得下面这些东西是什么,那就已经足够了。当然,还希望那个人能支持我继续做下去。
 

 
大图
 
Ambient Occlusion 演示。
 

 
把它作为商业用渲染器,在国内唯一有用武之地的就是为专业工作室定制特殊的渲染效果,又或是一些需要用到更开放的渲染技术的高端项目。简而言之、就是作为 In house Renderer.

但也必须先讲明白,开发和维护这么一个东西,是极其不容易的,在目前来说投入与产出可能不成正比,它的价值,必须在一段时间的积累后才能看到。 Pixar 开发的 PRMan 也不是一年半载就能为它渲染电影的,80 年的项目,到了 95 年才渲染出第一部动画电影。

尽管这是一场持久战,但若我们真想达到 Pixar 的高度,一味地研究别人开发出来的软件和技术是徒劳的,鼻子将永远被别人牵着走。

那么除了开发一个 PRMan 的替代品外,我也自认通过这个渲染器的开发,我已经对整个 RenderMan 体系有非常深入的了解,甚至对各种渲染器的工作体系和结构有了很深刻的认识。不仅仅是 RenderMan ,MentalRay 的 MI 架构也是我的重点研究部分,BloomingQuad 的前几版所使用的 Scene Description 就是类 MI 的节点式结构。

不过后来我觉得 RenderMan 比 MentalRay 要流行得多,而直接使用 RIB 会更划算,于是我开始把整个结构体系进行重写,以 RI Spec 3.3 为标准,力求可以完全符合 RI Spec 3.3 ,希望能渲染出和 PRMan (在轮廓和基本要素上)一致的图像。

当然这是非常艰难而痛苦的,特别是一个人、只能利用课余时间编写。
 
为了达到能在实际渲染中使用,我把整个渲染器都使用了 SSE/SSE2 指令优化,尤其是 Raytrace 核心部分,全部用汇编写成,速度“可以说”非常快,能达到(某一测试场景)1800 万次/秒,约是 Pixie 的 2 倍。

而最后,为了找到商业使用的机会,我修改了一下内核,使它能实现简单的 Realtime Raytrace,以直观的方法表现它到底有多快。
 

 
大图
 
 Realtime ~ 这个场景比较少面,所以也能达到 7 fps 左右,320 X 240
 

 
大图
 
400 X 300 的 realtime 演示,我绝对不会使用 Sphere、Box 这些直接简化了 Intersection 的东西来自欺欺人,所有演示的物体都是 General 多边形。

 
大图

 

支持 RSL 的编译与执行、上面的三个物体都分别使用了编写的 Shader ,盒子用了 Slim 生成的 Worley ,平面用了 step( x , mod() ) 形式的 Grid ,球体利用 s 坐标混合了 Thead 和 Spline ( Noise( P ) )。

 

另外我也终于完成了持久的“抗战”,写出了一个 RenderMan Shading Language 编译器与执行虚拟机。这个编译器符合 RI Spec 3.3 标准,能成功编译出 Slim 生成的各种 Shader ,而且支持 Constant Folding、Instruction Replacement、Dead Code Elimination 等优化。但目前它的光照部分(包括 Illumination 和 Illuminate 、Solar、Ambience)都在测试中,Gather 正在编写,而 Occlusion 和 Indirect Diffuse 只能靠命令行激活。


大图


 

相信有更多人(可能一共才只有几个吧)会关心它到底怎么在 Max、Maya 、XSI 中使用,其实很简单,RIB 非常流行,几乎所有的大型软件上都有导出 RIB 文件的软件,MAX 有 maxman,Maya 有 RAT、mayaman、liquid,XSI 有 rib 插件,LW 有 Lightman,Houdini 本身直接支持,所以根本不需要担心、所有的大型软件都能和 BloomingQuad 进行沟通。

而且我能保证 MTOR 从 Maya 里导出的东西能大部分正确渲染。

大部分是指哪些部分呢?其实目前仅仅是指多边形而已,而且最好是三角片面的多边形,又或者保证“合法”的多边形,若有重边或者法线有问题,都不能渲染。

上面测试用的两个人头模型,都是我自己在 Maya 里做的,然后用 MTOR 导出来渲染的,可以看看它到底渲染出来的结果准确不准确。

如果你想直接在 Maya 里渲染 —— No problem ,在 RAT 里设置一下就 OK 了。

 


大图

 

也可以在 Maya 里启动实时 raytrace ~  

 


 

说实在,这个 Realtime Raytrace 不太 Realtime,当然,我只是修改了一下 Render Loop 就拿出来了,里面的模型结构、Shading 体系,都是按照软渲染设计的,和普通软渲染共用同一个结构,没有作任何的实时渲染优化,所以能跑出这个 fps ,我自己就觉得已经 OK 了。

为了要说明它是 Realtime 的,我还设计了几个按键,i k l j , . 这六个,可以移动镜头,很简陋的功能而已,当然可以做得更复杂一些,但我目前只是演示一下我能做到什么地步,而怎么再精益求精则是在我解决了工作问题之后再想的事情了。

那么基本上都讲得 7788 了,开发过程还有很多有趣的东西,不过这只是很少数比较关心开发的人想要知道的。

 
其实这个所谓“渲染器”所能做到的还很有限,毕竟我只有一双手、一个脑袋,但我所希望的是能通过它让更多人看到,到底我们的开发能够做到些什么出来。
 
并不是说,别人的软件、所实现的功能,我们就一定绝对无法赶得上,这个说法是完全错误的。
 
问题在于,一直以来我们从来没有怎么在这上面投入过,大部分人都在观望,还有的在冷嘲热讽。
 
对,可能还没有这个市场、可能技术还不成熟,但必须有人去尝试,必须有人出来承担这个责任。
 
上面那些效果,在大部分人用商业渲染器看来,很幼稚。不过这仅仅是一个开始,我用一年时间做到了一个开始。
 
或许我最后还是要被迫放弃 CG 的工作,放弃我喜欢的开发,放弃我要超越 PRMan 的梦,但发这个帖子,除了为我自己找一个机会以外,更多的是希望大家在建模的时候、在 Rig 的时候、在 Surfacing 的时候、在 Key 动作的时候、在等待渲染的时候,能多想一想、什么时候我们能用我们自己的 CG 软件去做这些事情。

  


 

下载:

rar 包 1 2 

 


两个文件解压到任何一个文件夹都可以,如果想要在 Maya 里调用,就必须放到 RAT 能找到的目录里,比如任何一个在 PATH 里的目录。
 
注意!必须是支持 SSE2 指令集的机器(即 P4、PM、A64)才可以运行。
 
在命令行里输入:
 
bqrd -rt occlusion.rib                             
 
即可进入 Realtime 测试。
 
bqrd -oc 32 king-triangle.rib                  
 
测试渲染 Ambient Occlusion,其中 -oc X 是指定采样的数目。
 
而 rscl 是 RSL 的编译器,懂 RenderMan  的朋友可以试一下自己写 Shader 给 rscl 编译,.shader 的文件是已经编译好了的 Shader。
 
注意!illuminance、illuminate、gather 等 statement 目前仍不支持,所有的 Derivative 都有限度支持(不支持 Du() 与 Dv() ,dPdu 与 dPdv 的结果只能作为切线方向)。
 
其它都合符 RenderMan Interface Specification 3.3 。

 


p.s.

 
渲染完成后可以按 's' 快捷键把渲染结果储存成 TIFF 格式的图片。
 
渲染窗口中按 F1 可以看到其它快捷键表,可以显示独立通道、或者混合显示 alpha 等等。
 
posted on 2005-10-21 21:29 Chaos Chiao 阅读(5443) 评论(23)  编辑 收藏 引用 所属分类: Blooming Quad

评论

# re: About Blooming Quad,我的准实时光线跟踪渲染引擎 2005-10-21 23:11 Javen-Studio 咖啡小屋软件工作室
强烈支持你!其实我也想考虑做类似的事,比如写个游戏引擎
  回复  更多评论
  

# re: About Blooming Quad,我的准实时光线跟踪渲染引擎 2005-10-22 21:29 地狱门神
我也想做一个这样的东西,以后我肯定会考相关专业的,在这里支持你一下。  回复  更多评论
  

# re: About Blooming Quad,我的准实时光线跟踪渲染引擎 2005-11-01 09:00 IMC
很佩服你的执着!  回复  更多评论
  

# re: About Blooming Quad,我的准实时光线跟踪渲染引擎 2005-11-10 18:32 JOHN
很佩服你的精神!
在下有些慚愧呢, 但我会努力开发的。
  回复  更多评论
  

# re: About Blooming Quad,我的准实时光线跟踪渲染引擎 2006-02-23 05:00 maxman
不得不支持,路过,华人需要你!  回复  更多评论
  

# re: About Blooming Quad,我的准实时光线跟踪渲染引擎 2006-04-01 14:40 啊啊阿
我是菜鸟,这是用什么语言开发的?需要什么条件呀?  回复  更多评论
  

# re: About Blooming Quad,我的准实时光线跟踪渲染引擎 2006-04-01 14:43 啊啊阿
下载的文件不能解压?为什么?  回复  更多评论
  

# re: About Blooming Quad,我的准实时光线跟踪渲染引擎 2006-04-01 22:51 dkink
佩服你~~~

虽然 我看计算机 图形学 头晕~  回复  更多评论
  

# re: About Blooming Quad,我的准实时光线跟踪渲染引擎 2006-04-14 09:57 penny1
作为美术不得不强烈的支持你们!!  回复  更多评论
  

# re: About Blooming Quad,我的准实时光线跟踪渲染引擎 2006-04-14 13:04 NDD
我有一个问题 你如何使用sse的? 你是把基本的数据结构都弄成了m128
还是在不断进行转换?

每次发射sse的时候
是一次发射4个光线
还是同时计算一个光线的3(或者4)个分量

或者二个都用到了?


  回复  更多评论
  

# re: About Blooming Quad,我的准实时光线跟踪渲染引擎 2006-04-14 13:12 NDD
对了 如果需要在北京找工作的话,可以联系MS RA
他们需要游戏图形方面的人,我有一个同学才在那里做实习的

另外上海ubisoft不要去的好,最近那里管理层有点据说有点动乱...
  回复  更多评论
  

# re: About Blooming Quad,我的准实时光线跟踪渲染引擎 2006-04-26 11:49 margee
还少一个97004178.rar文件啊  回复  更多评论
  

# re: About Blooming Quad,我的准实时光线跟踪渲染引擎 2006-05-10 23:48 hpj
做得不错,我最近也在研究光线跟踪方面的工作。不知你有发文章了没,可以拜读一下吗  回复  更多评论
  

# 很吸引人,作为美术的我也支持你 2006-06-10 17:30 catman
很吸引人,作为美术的我也支持你,  回复  更多评论
  

# re: About Blooming Quad,我的准实时光线跟踪渲染引擎 2006-06-10 17:42 catman
对了如果需要游戏角色模型我可以提供,  回复  更多评论
  

# re: About Blooming Quad,我的准实时光线跟踪渲染引擎 2006-06-24 23:44 啊嵩
你是我的榜样。。
我会继续努力学习。!!
  回复  更多评论
  

# re: About Blooming Quad,我的准实时光线跟踪渲染引擎 2006-09-15 14:42 有名
为什么不把这个东西移植到Cell 芯片上,实现真正的实时光线追踪呢,现在这方面挺火爆的,你可以现在模拟器上做,反正现在PS3已经发售。

这种东西在医学成像,交互式3D游戏,工业造型上都有不错的前途。  回复  更多评论
  

# re: About Blooming Quad,我的准实时光线跟踪渲染引擎 2006-09-15 17:23 子弹
强  回复  更多评论
  

# re: About Blooming Quad,我的准实时光线跟踪渲染引擎 2007-09-12 23:01 路过
定  回复  更多评论
  

# re: About Blooming Quad,我的准实时光线跟踪渲染引擎 2011-09-15 12:24 ClareSkinner
People in every country take the <a href="http://bestfinance-blog.com/topics/mortgage-loans">mortgage loans</a> from different creditors, because it is easy.   回复  更多评论
  

# re: About Blooming Quad,我的准实时光线跟踪渲染引擎 2011-09-30 13:31 dissertation
This is good that you do a king of best selling knowledge related to this good post. Hence we guess that it could be good when some students buy the thesis title and thesis writing from you.   回复  更多评论
  

# re: About Blooming Quad,我的准实时光线跟踪渲染引擎 2011-09-30 13:57 essay writing services
Hello, a good enough data I can see at this page. That’s very nice that not only the essay writing service can compose the essays for sale.   回复  更多评论
  

# re: About Blooming Quad,我的准实时光线跟踪渲染引擎 2011-09-30 16:15 深圳市深城装修
笫二节 屋面装饰 2011-9-27

深圳市深城别墅装修公司:

建筑的屋面随着时代发展,对屋面的要求越来越高,不单单为防水隔热的要求.

从俯视的角度,已被称为建筑笫五立面,它的装饰功能目益增强,现在从全国实施屋顶的"平改坡"和绿化屋面的情况更证实了这一点.

本书新版中将此列人装饰部分.

屋面分类:按形式划分,可分为平屋面,斜坡屋面:按保温隔热功能划分,可分为保温隔热和非保温隔热屋面:按防水层位置划分,

可分为正置式屋面和倒置式屋面:按屋面使用功能划分,可分为非上人屋面'上人屋面,绿化种植屋面,蓄水屋面,停车,停机屋面,运动场所屋面等:按采用的防水材料划分,

可分为卷材防水屋面别墅装修,涂膜防水屋面,瓦屋面,金属板材屋面装修的地方,刚性混凝土防水屋面等.

按屋面形甙类如下:深圳市深城装修公司  回复  更多评论
  


只有注册用户登录后才能发表评论。
【推荐】超50万行VC++源码: 大型组态工控、电力仿真CAD与GIS源码库
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理