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. invalidate()和postInvalidate()的使用与区别

    Android提供了Invalidate方法实现界面刷新,但是Invalidate不能直接在线程中调用,因为他是违背了单线程模型: Android UI操作并不是线程安全的,并且这些操作必须在UI线程 ...

  2. Firebird数据库的Select语句

    select first 10 skip 8 * from t_data   //跳过前8行不要,取10行,即取第9行到18行共10行 select  first 10 * from t_data   ...

  3. 图的邻接多重表和搜索(C++版本)

    最近在学数据结构,学到图这一章,网上的C++版本的代码乱得不行,所以自己写了一个完整C++版本的放这里. 用邻接多重表表示一个无向图,并给出DFS和BFS搜索代码.邻接多重表好处就是贼直观,几条边就几 ...

  4. centos 6.X minimal 系列最小化安装完成后,安装mono和jexus过程小记录

    在使用虚拟机安装minimal版centos运行mono+jexus的时候,遇到了一些坑,记录一下,比如虚拟机访问不了网络,没wget命令没开放80端口,等等小问题,其他网上教程已经有mono+jex ...

  5. blog搬迁

    因为一些个人原因,2年后继续写blog,但是blog搬到github上!具体的地址为: http://www.94geek.com 内容以linux的c开发,分布式存储和分布式计算,还有架构为主.

  6. CCNA第三章子网划分,变长子网掩码(VLSM)和TCP/IP排错考试要点学习笔记

    1. 子网划分的好处      缩减网络流量; 优化网络性能; 简化管理; 可以更为灵活地形成大覆盖范围的网络.    2. 如何创建子网的步骤 首先,确认所需要的网络ID数; 其次,确认每个子网中所 ...

  7. Asp.net vnext的IIS部署

    微软前段时间推出asp.net vnext,自个也尝试了一把,也写了几篇关于vnext特性的博客,如下. 但一直有个困扰的问题,asp.net vnext如何在iis部署,因为整个目录结构跟之前有了很 ...

  8. smartroute简单集成集群聊天通讯

    在制定一个规模比较多大的聊天应用时,往往需要制定部署多个应用服务,其一可以保障服务的可靠性,其二可以增加用户负载量.但制定这样一种应用体系是一件复杂的事情,毕竟同一群体的用户实际上会在不同的服务器接入 ...

  9. Restful.Data 开源持久层组件项目最新进展和使用说明

    Restful.Data 经过 博客园 和 CSDN 的宣传,目前参与该项目的人数已达到 114 人(群号:338570336),虽大部分并不参与实际开发,但他们所提出的意见和建议以及在试用过程中发现 ...

  10. ENode 1.0 - 框架的总体目标

    开源地址:https://github.com/tangxuehua/enode 本文想介绍一下enode框架要实现的目标以及部分实现分析思路剖析.总体来说enode框架是一个基于cqrs架构和消息驱 ...