Radiosity 光能传递渲染器的多核优化

2008-01-11 04:21 来源: 作者: 网友评论 0 条 浏览次数 171

1.概述

本案例介绍了广州市圆方计算机软件工程有限公司与英特尔软件与解决方案事业部(以下简称“英特尔”)合作,基于英特尔多核平台,对其开发的室内设计系统 TPM5000 的光能传递渲染核心进行性能优化的过程,描叙了光能传递渲染器的多线程化设计和利用英特尔的线程分析工具 Thread Profiler 来辅助性能分析的方法。

光能传递渲染(Radiosity,又称辐射度渲染)是 3D 室内设计软件中常用的渲染方法之一,对室内场景使用光能传递渲染可以生成十分逼真的光影效果。光能传递需要进行大量复杂的运算,对计算机系统的性能要求很高,对硬件平台的运算速度和能力都有很苛刻的要求。

2.光能传递简介

光能传递是一种与视点无关(view-independent)的全局照明(global illumination)算法, 它模拟场景中漫反射表面间的光能传递过程。假定所有到达物体表面(surface)的光线都会被反射回场景中,这样场景中所有可见的物体都能发出光线或反射光线,光能在场景的表面间可以互相传递。

 光能传递前的场景
 光能传递后的场景


物体表面间光的能量传递遵循以下光能传递方程: 

直观的看,从一个表面辐射出来的光能(辐射度) 等于该表面本身发射出的光能   加上从其他
表面发射到该表面且被该表面反射的光能

光能传递算法有很多种,其中 Progressive Radiosity 是一种逐步求精算法,它能够在每一次光能传递循环计算完成后显示中间的渲染结果,随着循环次数的增加,场景从黑暗逐渐变得明亮,逐步接近真实的效果。圆方室内设计系统 TPM5000 使用的即是 Progress Radiosity,其原始的单线程版本算法可以用伪代码表示成如下形式:

  对每一次光能传递循环(one iteration):
     选择一个表面 i                          
     对每一个表面 j:                        
            计算形状因子 Fij                 
           更新表面j的辐射度               
           更新表面j的发射率              
      设置表面i的发射率为 0    
 1  2  3 [下一页]

相关主题:

网友评论