基于D3D的Ray Trace

来源:互联网 发布:男生双肩背包知乎 编辑:程序博客网 时间:2024/06/06 17:57

主角还是变形金刚永远的两巨头--擎天柱、威震天。
 
  计算包括贴图颜色Texture、漫反射diffuse、高光specular、反射Reflect、折射Refract、阴影Shadow。
 
  使用了D3D9 API,没有使用GPU Shader。
 
  程序是在D3D Tutorial 06: Meshes Sample 基础上顺手改的。
 
  主要的几何算法就是Ray与Triangle的碰撞检测,Ray与AABB Box的碰撞检测,Ray与包围球的碰撞检测。
 
  几乎所有的计算时间都耗费在大量的Ray与Triangle的碰撞检测上。这张412 X 386的图片计算耗时估计超过
  三个小时。我的电脑CPU只是可怜的P4 1.7G,我曾经想计算一张800x800的图,可惜从我早上打开电脑开始算,一直到晚上回家也没有算完。而且大图的计算一直还会出现意想不到的问题,结果会是一张莫名奇妙的图。我至今还没有找到问题所在。
 
 
 
  面的法线平滑好像有点问题。事实上我不知道如何取得类似D3D硬件所做的那种平滑插值的效果。而且整个场景有些偏暗,我猜测可能是取得贴图颜色偏暗造成的。
 
  使用的模型是网络上找到的低模,或许用低模做Ray Trace并不合适。但是因为我可怜的CPU,同时没有更好的算法优化,也只能这样了。
 
  如果有时间,同时运气足够好的话。我会努力渲染出一张大点的图出来,效果也许会好一些 。

这张是Ray Trace的结果

这张是D3D渲染的原图