=Wl
CE_ 
(GPU光线追迹和分析)> 支持的功能
~L}0)FZ\9 M
rVtxzH 概要 RrRCT.+E 实体分析
5gEUE {S 表面分析
nR
,j1IUF 探测器实体
]INbRytvc 方向分析实体
wk-ziw 结果节点分析
\wnQ[UNjP 膜层
_{ ?1+ 分布计算
*_^AK=i 几何体
{ >4exyu6 表面
Z7%>O:@z 表面属性
a{H~>d<? 非表面几何体节点
?(R6}ab>K7 关键字
]huqZI 数值精度
KU$.m3A> 光线
K_}vmB\2l 光线类型
rZzto;NDS 光线属性
~j8x" 光线追迹路径
_#-(XQ a 光线追迹属性
VT-&"Jn 散射
rJg!2 散射模型
XmXHs4 重点采样
MMcHzRF 脚本
H!vvdp?Z 光源
B8C"i%8V) 光谱
#V~r@, 表面粗糙度
|\,e9U> \:O5, wf2 分析实体 /Nxy?g|, 分析表面 +F`!
Jt GPUs不支持并会忽略分析表面。当在GPUs使用
光线追迹时,应该使用平面类型探测器实体而不是分析表面。
F
lbL`@4M Gn&)*qCO 探测器实体 &)`A4bf% 如果在模型中存在一个配置正确且支持的探测器实体(DE)类型,GPU光线追迹可以使用它生产分析结果节点(ARNs)。下表逐条列出了GPUs所支持的探测器实体类型。任意未支持的DE类型或者未支持的
参数都会被GPUs忽略。
p+yU!Qj ~>+}(%<,
B_@>HZ\& A;{8\e 每个探测器实体使用一系列参数来定义其尺寸、像素分辨率以及计算类型等。下面的表格列出了GPU支持的每个参数。
yyBfLPXZ Imi_}NB+
m]&d TZV xe%+Yb] wUl}x)xo 1. 配置了“illuminance”分析的探测器实体不会执行所要求的分析,但如果“Abosorb rays”标志设置未True则会使GPU上的光线停止。
L,\ Yj 2. 光线滤波器
b vUYLWzS a. 在GPUs上,仅当计算时间设置为“at trace end”模式,才会应用DE上的光线滤波器标准。在“During Trace”模式下,光线滤波器会被忽略,并且所有被DE截断的光线都会包含在结果中。
=Y
/ b. 在Monte-Carlo模式下,在光线追迹的最后可以获得所有的光线并进行光线过滤处理。
bJGT^N@ c. 在光线分裂模式下,在光线追迹末端仅能够获取”母”光线并进行光线过滤处理。这意味着,例如,当GPUs上的光线追迹为
光束分裂模式时,其不能使用光线滤波器分理处“子“散射光线。不推荐在光线分裂模式下使用光线滤波器。
DBVe69/S d. 在探测器实体方面,光线过滤应用的基本标准是光线必须被DE拦截。例如,若一个DE的光线过滤为“散射光线“模型,预期只有与DE相交的散射光线才会对结果分析有贡献。
$|sRj!F e. 光线过滤对每条光线进行属性操作。通过对GPU光线追迹模式使用如下规则,以进行光线属性测试并与光线关联:
ZW*"Kok 追迹CPU光线模式
.D>%- i. 光线通过CPU光线缓冲区进行创建并初始化所有光线属性
g$$uf[A-SL ii. 光线复制到GPU光线并用于追迹
V,&s$eQC iii. 光线在GPU上进行追迹
`MEH/ iv. 光线从GPU中复制回到其在CPU光线缓冲区的原始光线
hPhN7E03 v. GPU不支持的任意的CPU光线属性都跟初始值意义
du`],/ 6 vi. 相应地,使用GPU不支持的属性的任意过滤操作都将在原始不变的CPU光线数据上进行测试
Xgop1 追迹GPU光线模式 "r.pU(uxt i. GPU上创建的光线具有GPU支持的属性
&OWiA;e?f ii. 光线在GPU进行追迹
\e ( h6,@ iii. 光线从GPU复制到一个临时默认的CPU光线
|W{z,e01x iv. 相应地,任何使用GPU不支持的属性的过滤操作都将测试默认光线的设置
J/ <[irC 方向分析实体 ]cFqKs 方向分析实体(DAEs)将会在一个GPU光线追迹的最后自动生成一个分析结果节点(ARN)。一个DAE光线选择的标准会在光线追迹结束时使用,这样计算时间等同于一个探测器实体构造的“追迹终止“模式。请参考探测器实体部分文档以获得GPUs光线评价标准更完整的描述。
id GM%Faur p Sc<3OI 分析结果节点 -/KVZ 如果在模式中激活了一个正确配置的探测器实体(DE)或者方向分析实体(DAE),则GPUs可以生成分析结果。如果一个正确配置的DE或者DAE出现在GPU光线追迹中,在GPU光线追迹结束时,分析结果节点将会添加到FRED文档对象树。
t'FY*|xk 膜层 piY=(y&3 下方的表格逐条列出了如何指定膜层类型以使用GPUs进行处理。在GPUs上的膜层不会有透射或者反射相位系数,空间相关性或者偏振相关性。透射和反射功率系数将会作为S和P偏振的平均值进行计算。
WG(tt.
A1Rt ezy0m}@ [u/g =^+u 1. 反射和透射会忽略相位条件。
&LHQ)? 2. 简单表格搜寻(最近邻值)不包含角度插值。透射和反射是S和P分量的平均值。
NDCZc_ 3. 近似为一种入射
材料为空气,基板材料为简单玻璃的一般采样膜层类型。对于所有激活的
光源的每个激活的
波长,膜层将会在方向余弦0到0.9999之间采样8个角度。
>qCUs3}C{* 4. 对于所有的偏振态,将会100%传播。
S}ZM;M 分布计算
e9"<.:& 当使用FRED的分布式计算功能时,可以使用远程节点进行GPU光线追迹。
ADlPdkmym 几何体
v8_HaA$5Y 表面
UiF ?Nx~ 当在GPUs上描述一个表面时,既可以进行精确描述,也可以进行近似描述。对于一个精确描述的给定表面,需要满足以下要求:
+'Tr>2V • 表面类型具有一个GPU实现
|.)dOk,o • 表面可追迹
:] {+3A • 没有应用表面修剪参数
}.MJVB3 • 没有使用点乘表面修建参数
|cUlXg= • 表面不是布尔实体单元
}-YD_Pm
K- 当上述条件不符合一个给定的表面,在GPUs上使用三角网格来近似的描述表面(此处可认为是CAD的*.OBJ或者*.STL格式)。
B%cjRwO T 将一个表面网格化一般会降低表面描述精度(除了网格化平面表面的情况),且跟CPU追迹结果相比,在GPU追迹中会成为错误的来源。
4vGkgH<, 当一个表面使用三角网格近似时,用于近似表面的三角块是从两种不同的来源并根据表面类型来进行采集的。
IP/
zFbc • 隐式表面是由一个函数形式,f(x,y,z)来进行定义的。例如,球体、圆锥和柱体都是隐式表面。
DX4uTD • 显式表面是由参数化形式,f(u,v)来定义的。例如,直纹表面、拉伸表面和朗伯面都是显式表面。
|"vqM)V$ 对于三角网格近似:
M|6
W<y • 隐式表面使用内部算法,最终用户不能获得其控制的参数。用户无法访问提高网格质量的控键。
bU(t5
[ • 显式表面使用FRED的3D查看器中的三角块。使用FRED的可视化属性对话框增加曲面细分会在GPUs上生成更高质量的近似表面。
<~vamim#K 下面表格指出了哪些表面类型具有精确的GPU实现,哪些使用三角网格近似。
S1*n4w.H cYmMO[4YG'
Tld%NE ;40!2P8t #Ubzh`v 1. 仅当前端和后端的半孔径是理想(例如,柱脊沿Z轴为常数)情况下,则可完全支持柱面类型。如果柱脊是倾斜的,则在GPUs上使用三角网格来近似描述表面。
B TgL: 2. 在上述表格中未指定的表面类型将会在GPUs上使用三角网格来进行近似。
|j<b? 7AHEzJh" 表面属性 lMF j"x\ 在FRED模型中每个表面都有一系列属性以描述几何体性质。这些属性可以是物理属性,FRED特定属性需要用于光线追迹或者FRED的可视化属性要用于渲染。
M[@).4h *5.s@L( VU 下方的表格指出了GPUs是否支持,部分支持或者忽略一个给定表面性质。
9bq#&~+ 一个受支持属性并不意味着在GPU上的实现和在FRED中CPU光线追迹的本来的实现是意义的。请参考此文档关于每个受支持或者部分受支持属性相应的部分以获得更多的信息。
N-4LdC ;v*$6DIC5
bu,Z' Vv0dBFe 1. 如果对一个表面应用了Advanced Dot-product Surface Trimming Specifications,则会使用三角网格将表面转换为一个近似表面。
0:Yz'k5 2. 如果一个表面应用了Surface Trimming Specifications,则会使用三角网格将表面转换为一个近似表面。
=-1d m+P 非表面几何体节点 <s)+V6\E 在光线追迹中,光线与表面相交。然而,在几何体层级中非表面节点会用来增强表面描述属性。例如,曲线在FRED中可以用于构建表面或者定义表面自定义孔径。或者一个表面的位置可能取决于其上方一个自定义元件在树中的位置。
M
E4MZt:> 下方表格逐条列出了GPUs支持的非表面几何体节点。
Cd"O'<^Sb -U'6fx) +
_{TGO
jZr G!L=W#{ DNq=|?qn] 1. 表面是一个元件组合结构的一部分,其在GPUs上将会被自动转化为一个近似三角网格描述。
/{\tkvv-Z 关键词 srw5&s(3X 关键词不支持并被忽略。模型构建中关键词的利用和模型管理。同样地,为了进行光线追迹,对GPUs来说,关键词没有值。
7Ha
+@ 材料 |9{l8`9}_ 下方表格逐条列出了如何确定GPUs处理的材料类型。
Xu3o,k
vZq7U]RW CJ%bBL'. 1. 对于所有光源的所有激活波长,会计算实部和虚部折射率。
71mdU6Kq 2. 所有未支持材料类型,会自动转化未采样材料。对于所有光源的所有激活波长,会计算正入射时实部和虚部折射率。
FzXVNUMP 表格下方逐条列出了如何确定GPUs所处理的材料属性。
;.'2ZNt2 ]SFB_5Gb
oJvF)d@gU & 2& K9R GL(R9Y 数值精度 ijw'7d|, 所有的GPU计算都是单精度。
{UT^pIP\ 光线类型 RYZh"1S;k GPU支持的光线类型在下方表格逐条列出并提供了一个好的初始点以用于评估FREDMPC是否能够用于一个给定的分析。
6~ev5SD;f /g< T)$2
s>9w+|6Ji .ss/E 7ZI!$J| 1. 偏振光a. 如果支持光源配置,而且激活了偏振标志,光线仍然可以通过Trace GPU Rays调用生成,但是会忽略偏振信息(即光线会被认为是非偏振,不相干的光源)
bP`yLz b. 如果光源是在FRED生成的,然后需要用Trace CPU Rays调用GPU来追迹,那么在GPU上追迹的光线的偏振信息会被忽略,但是当光线回到FRED中时,偏振信息会回到CPU上。这些光线的偏振数据是无效的,不能使用这些光线数据来分析偏振2. 相干光
/ 9/=] a. 使用Trace GPU Rays光线追迹模式,在GPU上不会生成相干光b. 使用Trace CPU Rays光线追迹模式,将光线从FRED光线缓冲区推送到GPU时,在GPU光线追迹之前,相干属性将从光线中移除,然后在光线返回到FRED时在CPU上被替换。这些在GPU上追迹的光线,不能用来进行辐射度计算
&D\~-fOGb 光线属性 每条光线都有一组属性(例如位置,方向,功率,波长等),这些属性由各种分析功能使用。下表列出了GPU支持的光线属性
UW8b(b[-6b S6*3."Sk
=iB0ak {k-GWYFA 1. 光“强度”是一种仅适用于Trace Render光线追迹模式以生成渲染图形的属性。
5#!pwjt~7 2. 目前仅支持一组有限的状态属性代码,支持的状态代码为ray is halted, reason ray is halted, ray intersected, ray interacted, ray reflected, ray transmitted, scatter ray, specular ray, unresolvable material error, TIR error
_1VtVfiZ{ 3. 请务必注意,尽管可以使用MPC Trace Advanced选项请求光线追迹路径数据,但在GPU光线追迹期间,不会更新路径#的光线属性。因此,在执行GPU光线追迹之后,不支持基于路径#的光线选择过滤。基于路径的分析仅限于Raytrace Path表和Stray Light Report表中显示的信息
vClD)Ar 追迹路径
=q.2S;? 当模型在适用的光线追迹属性定义上使用蒙特卡洛父光线说明符时,可以在GPU上追迹光线获得Raytrace Paths。当GPU上发生光线分裂时,将不会追迹Raytrace Paths。
X8~cWW 必须在光线追迹之前将用户提供的用于路径追迹的最大总事件计数提供给GPU。此选项位于GUI中的MPC Trace Advanced对话框中。只有总事件计数小于或等于此用户提供的值(默认值= 10个事件)的路径才能在GPU光线追迹结束时在Raytrace Paths表或Stray Light Report中查看。
I@08F 在GPU光线追迹结束时,在输出窗口中报告超过最大总事件计数限制的光线追迹路径的数量以及这些路径中的总功率。
_S7GkpoK 目前不支持在CPU上生成重绘光线跟踪路径(如果它们已由GPU生成)。
s_yY,Z: 目前不支持使用光线执行基于路径的分析(例如,分析路径#X的辐照度分布)。
=P!SN]nFeP 光线追迹属性
XsQ?&xK=u 下表列出了GPU如何处理光线跟踪属性的特定属性。
Ji\8(7
{8 ?{mFQ
.Vj;[p8
3b
(I~ m
jC6(?V f>g>7OsD] 1. 父光线和光线分裂
3(Kj|u a. 使用蒙特卡罗以外的父光线说明符时,必须注意正确配置GPU缓冲区,以确保为光线生成保留适当数量的资源。特别是,通过设置GPU设备支持的最大总祖先级别(镜面反射+散射),在MPC Trace Advanced对话框中指定用于光线分割的GPU内存分配。
RAxAy{ b. 当使用蒙特卡罗以外的父光线说明符和Trace CPU Rays模式时,只有父光线将返回到CPU光线缓冲区。这限制了在GPU光线追迹期间光线分割处于激活状态时可用的光线数据跟踪后分析。
n{J<7I e"* 散射
r5xu#%hgp; 散射模型
)f>s\T 下表列出了对GPU上散射模型的支持。 以下行为适用于GPU上的散射模型:
f*04=R?w7> 如果是不支持的散射模型,那么GPU会忽略它
V/j+Z1ZW Total Integrated Scatter(TIS)表在7个入射角处预先计算,作为散射模型表示的一部分,然后在GPU光线追迹期间进行插值。
]xBQ7Xqf| 8QV+DDZx
7Co
}4 -z)I;R 1. 如果是不支持的散射模型,那么GPU会忽略它
/m%i"kki 每个散射模型定义都包含进一步描述散射行为的其他属性。这些属性在FRED GUI中显示为散射模型对话框底部的“Additional Data”,或者作为用户脚本散射模型定义的一部分。
3rhH0{ |d?0ZA:z
8
C @iD% CS"2Sd 1` y,v*jE 重点采样
ZMQSy7 具有散射模型的表面必须至少具有一个激活的重点采样(或FRED的GUI中显示的” ScatterDirections Regions of Interest “),以便由曲面生成散射光线。尽管重点采样不会影响散射光线本身的辐射测量,但它会影响散射光线对给定方向的统计采样,并最终影响分析平面上的光线统计。
a]|P rjPI 下表列出了GPU重点采样的类型:
C s?kZ
% v?F~fRH
js/N qf2> Q7zg i 0&E{[~Pv 1. “Full Hemisphere”是“Into a given direction”重点采样类型的特定实例,其中关于散射位置处的局部表面法线将半角设置为90°。2. 椭圆体重点采样类型的GPU实现与CPU实现不同。在GPU实现中,重点采样由矩形定义,该矩形围绕从散射点看到的椭圆体的投影。采用这种方法是因为在GPU上实现比CPU上的严格椭圆更快。 在GPU和CPU实现中,辐射度测量是正确的。
W]{mEB 每个重点采样规范都有一组额外的属性(在FRED GUI中显示为“OtherData”),用于进一步
优化重点采样的效率。 下表列出了对这些属性的GPU支持
Gt{~u^< @jAuSBy
*aT3L#0( N>giFj[dD 1. 当散射表面的光线追迹属性将蒙特卡罗设置为父光线说明符时,方向类型标志将被强制使用GPU上的蒙特卡洛选项。在所有其他情况下,将使用请求的方向类型。 此选项在BSDF值最高的位置生成更多的散射光线。2. 当散射表面的光线追迹属性将蒙特卡罗设置为父光线说明符时,在GPU光线追迹期间,散射光线的数量将强制为1。在所有其他情况下,将使用所请求的散射光线数量(最多10条光线) 脚本 GPU上不支持脚本元件(例如材料,曲面,散射等)。 有关脚本元件如何在GPU上进行近似的更多信息,请参阅本文档的相应部分。 修改FRED文档的脚本(包括更新前/后脚本)应在将文档发送到GPU之前执行 以下脚本命令用于支持MPC光线追迹:
WBLfxr Ho9 a#9 
Rb\M63q [H$rdh[+
Q9=X|
rwGY )9| .YKqYN?y4
E#X(0(A) v@TP_Ka
=t\HtAXn[ 1nhC! jDD %:yJ/&-Q,Z 光源
9IZ}}x 有三种光线追迹操作模式用于使用GPU执行光线追迹,本文档的光线追迹模式部分对此进行了描述。仅当使用Trace GPU Rays模式时,本节中的信息才有意义。使用Trace CPU Rays模式时,光源功能仅受GPU上光线数据支持的属性限制(有关详细信息,请参阅“光线”部分)。
/MKcS%/H/ 使用Trace GPU Rays模式时,光源定义将加载到GPU中,然后GPU用于生成和追迹光线。为了正确执行,GPU实现需要支持源定义的属性。如果不支持光源的属性,则GPU不会生成或追迹光线。
avrf]raM| 下表列出了GPU的光源属性支持:
QL%&b\K
#G%[4.$n.
7'uuc]\5> ]p~w`_3v gTcLS|&