OpenCascade Ray Tracing Rendering

eryar@163.com

摘要Abstract:OpenCascade6.7.0中引入了光线跟踪算法的实现。使用光线跟踪算法可实现高质量的渲染效果,且可以使用GPU提升渲染效率。

关键字Key Words:OpenCascade, Ray Tracing

参考链接:Ray tracing as alternative rendering method for OCCT visualization component

http://dev.opencascade.org/index.php?q=node/898

OpenCascade 6.7.0对显示部分做了些重大改进,其中突破性的改变是使用OpenCL实现了光线跟踪算法。作为库TKOpenGl的一部分,光线跟踪算法与标准的显示模块完全集成。从此,光线跟踪也可以作为显示的一种方法。与其他第三方库的光线跟踪库的区别是,内置的光线跟踪算法确保了实时渲染时的性能,性能与OpenGL的性能相近,在有大量模型时性能比OpenGL的还要好。

光线跟踪功能如下:

l High-quality shading by interpolating normal across the triangle pixels and using advanced illumination model (Phong shading);

l Depth-correct order-independent transparency for any number of overlapped objects;

l Sharp shadows from isotropic point and directional lights without any approximation – greatly improve visual appearance;

l Specular reflections and environment mapping – for high-quality rendering of metallic surfaces;

l Low-cost adaptive anti-aliasing allows to improve image quality by removing jagged edges from the image;

l Based on cross-platform OpenCL framework – runs on GPUs of major vendors (NVIDIA and AMD/ATI);

l Makes the most of the mid-/top-range GPUs but also runs successfully on low-end GPUs that support OpenCL。

只要OpenCascade编译时启用OpenCL支持,光线跟踪的使用是相当简单,只需要调用函数V3d_View::SetRaytracingMode()就可以把3D view切换成光线跟踪渲染啦。参考V3d_View和文档或者Draw Test Harness的vraytrace和vsetraytracemode命令实现的源程序去详细了解如何设置光线跟踪的一些选项。

最简单的测试光线跟踪的方式是在Draw Test Harness中输入如下命令:

]> source samples/tcl/bottle.tcl

生成效果如下图所示:

Figure 1.1 Render bottle and text with ray tracing

Figure Render my email with Ray tracing

Figure 1.2 Render pipe and equipment models with ray tracing

Figure 1.3 Render pipe and equipment models with ray tracing

从上图可知,使用光线跟踪效果很不错,可以看到镜面效果,很Cool!

OpenCascade Ray Tracing Rendering的更多相关文章

  1. 《Ray Tracing in One Weekend》、《Ray Tracing from the Ground Up》读后感以及光线追踪学习推荐

    <Ray Tracing in One Weekend> 优点: 相对简单易懂 渲染效果相当好 代码简短,只看书上的代码就可以写出完整的程序,而且Github上的代码是将基类与之类写在一起 ...

  2. games101 - 4 - Ray Tracing

    games101 - 4 - Ray Tracing 目录 games101 - 4 - Ray Tracing 为什么需要Ray Tracing Recursive (Whitted-Style) ...

  3. OpenCascade Chinese Text Rendering

    OpenCascade Chinese Text Rendering eryar@163.com Abstract. OpenCascade uses advanced text rendering ...

  4. 开始研究Ray tracing

    几个月前面试时Boss问过我一个问题--"除了scanline渲染方法,你还知道什么其他渲染方式?",我没答出来,至今记忆犹新. 前段时间摆弄Intel VTune时看了它的示例代 ...

  5. Ray Tracing

    Ray Tracing 题目链接:http://codeforces.com/problemset/problem/724/C 拓展欧几里得 //为什么这次C题这么难啊=.= 可以观察到,光线在矩形中 ...

  6. 【Ray Tracing The Next Week 超详解】 光线追踪2-7 任意长方体 && 场景案例

    上一篇比较简单,很久才发是因为做了一些好玩的场景,后来发现这一章是专门写场景例子的,所以就安排到了这一篇 Preface 这一篇要介绍的内容有: 1. 自己做的光照例子 2. Cornell box画 ...

  7. 【RAY TRACING THE REST OF YOUR LIFE 超详解】 光线追踪 3-7 混合概率密度

     Preface 注:鉴于很多网站随意爬取数据,可能导致内容残缺以及引用失效等问题,影响阅读,请认准原创网址: https://www.cnblogs.com/lv-anchoret/category ...

  8. 【RAY TRACING THE REST OF YOUR LIFE 超详解】 光线追踪 3-5 random direction & ONB

     Preface 往后看了几章,对这本书有了新的理解 上一篇,我们第一次尝试把MC积分运用到了Lambertian材质中,当然,第一次尝试是失败的,作者发现它的渲染效果和现实有些出入,所以结尾处声明要 ...

  9. 【RAY TRACING THE REST OF YOUR LIFE 超详解】 光线追踪 3-4 基于重要性采样的材质初探

     Preface 我们今天来把第三本书从开局到现在讲的一大堆理论运用到我们的框架中,那么今天我们首先将原始的材质改为基于重要性采样原理的材质 这一篇是代码工程中进行MC理论应用的初步尝试篇  Read ...

随机推荐

  1. 一些IOS开发中的小技巧

    1.打包后提交报错误 错误信息:ERROR ITMS-90035: "Invalid Signature. Code object is not signed at all. The bin ...

  2. DB_oracle学习笔记_概念分析

    概念分析: 1.       数据库(Database): 数据库是一个文件集合,包括数据文件,临时文件,重做日志文件和控制文件.也可以说数据库是物理操作系统文件或磁盘集合.数据库可以由多个实例(sc ...

  3. [转]Liunx上安装svn客户端

    [转]Liunx上安装svn客户端 虽然说很简单的用yum install subversion就可以将svn安装到系统中,但是yum库中的版本实在是有点低——1.4.2.因此我选择以源码方式安装.安 ...

  4. 在已有 Xcode 项目中 加入Cordova框架

    转自:http://www.jianshu.com/p/656838ae92bc 我们知道,在UIKit中的UIWebView虽然已经提供了很多功能了,比如JavaScript和Objc之间的通信.但 ...

  5. Java学习笔记(五)

    作业1:将指定目录下的所有文件显示到列表框(JList)组件中. 代码如下: import java.awt.; import java.awt.event.; import javax.swing. ...

  6. 【整理】--【字符设备】分配设备号register_chrdev_region()、alloc_chrdev_region() 和 register_chrdev()

    (1) 分配设备编号,注册设备与注销设备的函数均在fs.h中声明,如下: extern int register_chrdev_region(dev_t,unsigned int,const char ...

  7. 本地推送UILocalNotification

    //本地推送---无需网络,由本地发起 UILocalNotification *localNotification = [[UILocalNotification alloc]init]; //设置 ...

  8. 使用XmlDataDocument将数据存储到XML文档

    string str = "Data Source=192.168.1.20;Initial Catalog=WebTest;User ID=sa;Password="; SqlC ...

  9. .NET Mvc Razor也可以这样玩!

    忙碌的工作总是占据了生活的大部分的时间!所以我的博客到现在还是寥寥的几篇文章,技术是用来分享和学习的,对技术有不同的见解,大家都可以分享下,如果如下文章有问题之处请各位指出来,在这个闲下来的时间给大家 ...

  10. [后端人员耍前端系列]KnockoutJs篇:使用KnockoutJs+Bootstrap实现分页

    一.引言 由于最近公司的系统需要改版,改版的新系统我打算使用KnockoutJs来制作Web前端.在做的过程中,遇到一个问题——如何使用KnockoutJs来完成分页的功能.在前一篇文章中并没有介绍使 ...