(GPU光线追迹和分析)> 支持的功能 =d<~:!) .X(qs 1
概要 SYQP7oG9oQ 实体分析 {,6J*v"o 表面分析 wxBZ+UP_ 探测器实体 `'P&={p8 方向分析实体 vaHtWz!P 结果节点分析 sUR5Q/Q 膜层 H/ Ql 分布计算 9m_~Zs}Z 几何体 [ g:cG 表面 ~,)D
n 表面属性 1^GRUbOU[ 非表面几何体节点 'qde#[VB 关键字 2!CL8hG5: 数值精度 W?!rqo2SP 光线 Ma(Q~G
. 光线类型 *qLk'< 光线属性 c68y\ 光线追迹路径 E+e),qsbO 光线追迹属性 "Y5 :{Kj 散射 8KkN
"4' 散射模型 sKs`gi2 重点采样 vF~q ".imC 脚本 &w`Ho)P 光源
E;'{qp 光谱 .!lLj1?p 表面粗糙度
+O8zVWr U1fqs{> 分析实体 (|<+yQ,@> 分析表面 'Ox "YE GPUs不支持并会忽略分析表面。当在GPUs使用光线追迹时,应该使用平面类型探测器实体而不是分析表面。 YSfJUB!I
U H+#Nel+! 探测器实体 eLgq
) 如果在模型中存在一个配置正确且支持的探测器实体(DE)类型,GPU光线追迹可以使用它生产分析结果节点(ARNs)。下表逐条列出了GPUs所支持的探测器实体类型。任意未支持的DE类型或者未支持的参数都会被GPUs忽略。 _(~E8g
=b1
y*?
<s|.2~
?|}qT05
每个探测器实体使用一系列参数来定义其尺寸、像素分辨率以及计算类型等。下面的表格列出了GPU支持的每个参数。 (]&B'1b
&%)F5PT
9`VY)"rJ
luac
-byaV;T?"
1. 配置了“illuminance”分析的探测器实体不会执行所要求的分析,但如果“Abosorb rays”标志设置未True则会使GPU上的光线停止。 7PUy`H,&
2. 光线滤波器 s`[V{1m,
a. 在GPUs上,仅当计算时间设置为“at trace end”模式,才会应用DE上的光线滤波器标准。在“During Trace”模式下,光线滤波器会被忽略,并且所有被DE截断的光线都会包含在结果中。 z?kE((Ey
b. 在Monte-Carlo模式下,在光线追迹的最后可以获得所有的光线并进行光线过滤处理。 '"LaaTTs
c. 在光线分裂模式下,在光线追迹末端仅能够获取”母”光线并进行光线过滤处理。这意味着,例如,当GPUs上的光线追迹为光束分裂模式时,其不能使用光线滤波器分理处“子“散射光线。不推荐在光线分裂模式下使用光线滤波器。 {x..>
4
d. 在探测器实体方面,光线过滤应用的基本标准是光线必须被DE拦截。例如,若一个DE的光线过滤为“散射光线“模型,预期只有与DE相交的散射光线才会对结果分析有贡献。 >zw@!1{1
e. 光线过滤对每条光线进行属性操作。通过对GPU光线追迹模式使用如下规则,以进行光线属性测试并与光线关联: KjF8T7%
追迹CPU光线模式 >dw
0@T&p
i. 光线通过CPU光线缓冲区进行创建并初始化所有光线属性 Vu4LC&q
ii. 光线复制到GPU光线并用于追迹 =,qY\@fq
iii. 光线在GPU上进行追迹 E KN<KnU%
iv. 光线从GPU中复制回到其在CPU光线缓冲区的原始光线 ]-a/)8
v. GPU不支持的任意的CPU光线属性都跟初始值意义 'gD./|Z0
vi. 相应地,使用GPU不支持的属性的任意过滤操作都将在原始不变的CPU光线数据上进行测试 i|/G!ht^e
追迹GPU光线模式 usoyH0t!?
i. GPU上创建的光线具有GPU支持的属性 +<V$G/"
ii. 光线在GPU进行追迹 d|~'#:y@
iii. 光线从GPU复制到一个临时默认的CPU光线 on5\rY<I:@
iv. 相应地,任何使用GPU不支持的属性的过滤操作都将测试默认光线的设置 Iue=\qUK^
方向分析实体 #}~?8/h!
方向分析实体(DAEs)将会在一个GPU光线追迹的最后自动生成一个分析结果节点(ARN)。一个DAE光线选择的标准会在光线追迹结束时使用,这样计算时间等同于一个探测器实体构造的“追迹终止“模式。请参考探测器实体部分文档以获得GPUs光线评价标准更完整的描述。 ~d,$nZ"z
a0B%x!y^
分析结果节点 [(TmAEON
如果在模式中激活了一个正确配置的探测器实体(DE)或者方向分析实体(DAE),则GPUs可以生成分析结果。如果一个正确配置的DE或者DAE出现在GPU光线追迹中,在GPU光线追迹结束时,分析结果节点将会添加到FRED文档对象树。 H0t#J
膜层 (6[/7e)
下方的表格逐条列出了如何指定膜层类型以使用GPUs进行处理。在GPUs上的膜层不会有透射或者反射相位系数,空间相关性或者偏振相关性。透射和反射功率系数将会作为S和P偏振的平均值进行计算。 h. 4#C}> )
~+Cl9:4T
**AkpV) s9+lC!! 1. 反射和透射会忽略相位条件。 J_|%8N{[x 2. 简单表格搜寻(最近邻值)不包含角度插值。透射和反射是S和P分量的平均值。 j':<7n/A 3. 近似为一种入射材料为空气,基板材料为简单玻璃的一般采样膜层类型。对于所有激活的光源的每个激活的波长,膜层将会在方向余弦0到0.9999之间采样8个角度。 I.~=\%Z{ 4. 对于所有的偏振态,将会100%传播。 \S?-[v*{ 分布计算 |m*l/@1 当使用FRED的分布式计算功能时,可以使用远程节点进行GPU光线追迹。 ZdPqU\G^q 几何体 =1)9>= } 表面 H
]](xYy. 当在GPUs上描述一个表面时,既可以进行精确描述,也可以进行近似描述。对于一个精确描述的给定表面,需要满足以下要求: i/!KUbt • 表面类型具有一个GPU实现 GN5* • 表面可追迹 :8N
by$#V • 没有应用表面修剪参数 SymlirL • 没有使用点乘表面修建参数 VtU2& • 表面不是布尔实体单元 k{|>!(Ax 当上述条件不符合一个给定的表面,在GPUs上使用三角网格来近似的描述表面(此处可认为是CAD的*.OBJ或者*.STL格式)。 qAlX#] 将一个表面网格化一般会降低表面描述精度(除了网格化平面表面的情况),且跟CPU追迹结果相比,在GPU追迹中会成为错误的来源。 d}Y#l}!E6 当一个表面使用三角网格近似时,用于近似表面的三角块是从两种不同的来源并根据表面类型来进行采集的。 <RH%FhT • 隐式表面是由一个函数形式,f(x,y,z)来进行定义的。例如,球体、圆锥和柱体都是隐式表面。 6-5{7E}/b • 显式表面是由参数化形式,f(u,v)来定义的。例如,直纹表面、拉伸表面和朗伯面都是显式表面。 b%C7 kL- 对于三角网格近似: qkC{IBN92 • 隐式表面使用内部算法,最终用户不能获得其控制的参数。用户无法访问提高网格质量的控键。 [L| vBr • 显式表面使用FRED的3D查看器中的三角块。使用FRED的可视化属性对话框增加曲面细分会在GPUs上生成更高质量的近似表面。 XC}2GHO< 下面表格指出了哪些表面类型具有精确的GPU实现,哪些使用三角网格近似。 *Csxf[O
{S@,
,
DM\pi9<m
8W7ET@`
h{jm
1. 仅当前端和后端的半孔径是理想(例如,柱脊沿Z轴为常数)情况下,则可完全支持柱面类型。如果柱脊是倾斜的,则在GPUs上使用三角网格来近似描述表面。 ALInJ{X
2. 在上述表格中未指定的表面类型将会在GPUs上使用三角网格来进行近似。 %Br1b6 V
KxFA@3
表面属性 Ia{t/IX\[
在FRED模型中每个表面都有一系列属性以描述几何体性质。这些属性可以是物理属性,FRED特定属性需要用于光线追迹或者FRED的可视化属性要用于渲染。 *lheF>^
rCA0c8
下方的表格指出了GPUs是否支持,部分支持或者忽略一个给定表面性质。 zpNt[F?~1
一个受支持属性并不意味着在GPU上的实现和在FRED中CPU光线追迹的本来的实现是意义的。请参考此文档关于每个受支持或者部分受支持属性相应的部分以获得更多的信息。 5;XU6Rz!
c7tO'`q$e
$0~1;@`rQ6
&a\G,Ma 1. 如果对一个表面应用了Advanced Dot-product Surface Trimming Specifications,则会使用三角网格将表面转换为一个近似表面。 \t&8J+% 2. 如果一个表面应用了Surface Trimming Specifications,则会使用三角网格将表面转换为一个近似表面。 KO[Ty' 非表面几何体节点 o##!S6:A 在光线追迹中,光线与表面相交。然而,在几何体层级中非表面节点会用来增强表面描述属性。例如,曲线在FRED中可以用于构建表面或者定义表面自定义孔径。或者一个表面的位置可能取决于其上方一个自定义元件在树中的位置。 B~O<?@]d 下方表格逐条列出了GPUs支持的非表面几何体节点。 4>B=k
"N}MhcdS
FysIN~
k@>(sXs
l Yj$3
1. 表面是一个元件组合结构的一部分,其在GPUs上将会被自动转化为一个近似三角网格描述。 XN3'k[
关键词 &*Kk>
4
关键词不支持并被忽略。模型构建中关键词的利用和模型管理。同样地,为了进行光线追迹,对GPUs来说,关键词没有值。 ]2@lyG#<<
材料 VjeF3pmBa
下方表格逐条列出了如何确定GPUs处理的材料类型。 =#{q#COK$
PbV1FB_
jF#Dc[* 1. 对于所有光源的所有激活波长,会计算实部和虚部折射率。 q+?q[:nR- 2. 所有未支持材料类型,会自动转化未采样材料。对于所有光源的所有激活波长,会计算正入射时实部和虚部折射率。 YCdtf7P=q 表格下方逐条列出了如何确定GPUs所处理的材料属性。 Tg=P*HY6
yio8BcXH54
ezm*9Jc~p
6"r _Y7%
f&Juq8s_0
数值精度 g<8Oezi 65
所有的GPU计算都是单精度。 52'6wwv6?
光线类型 9R[PpE''
GPU支持的光线类型在下方表格逐条列出并提供了一个好的初始点以用于评估FREDMPC是否能够用于一个给定的分析。 6y{CM/DC
q[. p(6:
LMp^]*)t
*
COC&
D|vck1C5,
1. 偏振光 h=kC3ot\
a. 如果支持光源配置,而且激活了偏振标志,光线仍然可以通过Trace GPU Rays调用生成,但是会忽略偏振信息(即光线会被认为是非偏振,不相干的光源) |#(y?! A^
b. 如果光源是在FRED生成的,然后需要用Trace CPU Rays调用GPU来追迹,那么在GPU上追迹的光线的偏振信息会被忽略,但是当光线回到FRED中时,偏振信息会回到CPU上。这些光线的偏振数据是无效的,不能使用这些光线数据来分析偏振 t7e7q"+/
2. 相干光 uj)fah?Wg
a. 使用Trace GPU Rays光线追迹模式,在GPU上不会生成相干光 oC3W_vH.%
b. 使用Trace CPU Rays光线追迹模式,将光线从FRED光线缓冲区推送到GPU时,在GPU光线追迹之前,相干属性将从光线中移除,然后在光线返回到FRED时在CPU上被替换。这些在GPU上追迹的光线,不能用来进行辐射度计算 ~*tn|?%
光线属性 @qF:v]=_@
每条光线都有一组属性(例如位置,方向,功率,波长等),这些属性由各种分析功能使用。下表列出了GPU支持的光线属性 O6\c1ha
' Yy+^iCus
9!dG Xq
rWN%j)#+ 1. 光“强度”是一种仅适用于Trace Render光线追迹模式以生成渲染图形的属性。 h5v=h>c 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 m,rkKhXP 3. 请务必注意,尽管可以使用MPC Trace Advanced选项请求光线追迹路径数据,但在GPU光线追迹期间,不会更新路径#的光线属性。因此,在执行GPU光线追迹之后,不支持基于路径#的光线选择过滤。基于路径的分析仅限于Raytrace Path表和Stray Light Report表中显示的信息 <Iil*\SC 追迹路径 yy`XtJBWWs 当模型在适用的光线追迹属性定义上使用蒙特卡洛父光线说明符时,可以在GPU上追迹光线获得Raytrace Paths。当GPU上发生光线分裂时,将不会追迹Raytrace Paths。 m`tX&K#- 必须在光线追迹之前将用户提供的用于路径追迹的最大总事件计数提供给GPU。此选项位于GUI中的MPC Trace Advanced对话框中。只有总事件计数小于或等于此用户提供的值(默认值= 10个事件)的路径才能在GPU光线追迹结束时在Raytrace Paths表或Stray Light Report中查看。 {]4Zpev 在GPU光线追迹结束时,在输出窗口中报告超过最大总事件计数限制的光线追迹路径的数量以及这些路径中的总功率。 y7Hoy.( 目前不支持在CPU上生成重绘光线跟踪路径(如果它们已由GPU生成)。 `"#hhKG 目前不支持使用光线执行基于路径的分析(例如,分析路径#X的辐照度分布)。 ~L_1&q^4!i 光线追迹属性 !&{"tL@. 下表列出了GPU如何处理光线跟踪属性的特定属性。 '*G8;91u
#w!ewC vt
K}Q:L(SSr\
TALiH'w6|e
}E&:
bUuQ"!>ppu
1. 父光线和光线分裂 NjO_Y t
a. 使用蒙特卡罗以外的父光线说明符时,必须注意正确配置GPU缓冲区,以确保为光线生成保留适当数量的资源。特别是,通过设置GPU设备支持的最大总祖先级别(镜面反射+散射),在MPC Trace Advanced对话框中指定用于光线分割的GPU内存分配。 8RcLs1n/
b. 当使用蒙特卡罗以外的父光线说明符和Trace CPU Rays模式时,只有父光线将返回到CPU光线缓冲区。这限制了在GPU光线追迹期间光线分割处于激活状态时可用的光线数据跟踪后分析。 @E"lN
散射 K[Vj+qdyl
散射模型 ZT<VDcP{
下表列出了对GPU上散射模型的支持。 以下行为适用于GPU上的散射模型: 1%";|
如果是不支持的散射模型,那么GPU会忽略它 nJwP|P_
Total Integrated Scatter(TIS)表在7个入射角处预先计算,作为散射模型表示的一部分,然后在GPU光线追迹期间进行插值。 G4\|bwh
8\+DSA
u Vo"_c w ,@zw
1. 如果是不支持的散射模型,那么GPU会忽略它 nPjK=o`KR 每个散射模型定义都包含进一步描述散射行为的其他属性。这些属性在FRED GUI中显示为散射模型对话框底部的“Additional Data”,或者作为用户脚本散射模型定义的一部分。 3sl6$NKo A~<cp)E 1So`]N4
mp*?GeV?M FyNm1QNy^ CF: ! 重点采样
UUGX@ 具有散射模型的表面必须至少具有一个激活的重点采样(或FRED的GUI中显示的” ScatterDirections Regions of Interest “),以便由曲面生成散射光线。尽管重点采样不会影响散射光线本身的辐射测量,但它会影响散射光线对给定方向的统计采样,并最终影响分析平面上的光线统计。
PlwM3lrj 下表列出了GPU重点采样的类型:
1aPFpo! 60WlC0Y~u
Fv:x>qZr@ [i_evsUj? 6!([Hu#= * 1. “Full Hemisphere”是“Into a given direction”重点采样类型的特定实例,其中关于散射位置处的局部表面法线将半角设置为90°。2. 椭圆体重点采样类型的GPU实现与CPU实现不同。在GPU实现中,重点采样由矩形定义,该矩形围绕从散射点看到的椭圆体的投影。采用这种方法是因为在GPU上实现比CPU上的严格椭圆更快。 在GPU和CPU实现中,辐射度测量是正确的。
<s$Jj>< 每个重点采样规范都有一组额外的属性(在FRED GUI中显示为“OtherData”),用于进一步
优化重点采样的效率。 下表列出了对这些属性的GPU支持
!iK{q0 _.I58r
=JxEM7r G7r .Jm^q 1. 当散射表面的光线追迹属性将蒙特卡罗设置为父光线说明符时,方向类型标志将被强制使用GPU上的蒙特卡洛选项。在所有其他情况下,将使用请求的方向类型。 此选项在BSDF值最高的位置生成更多的散射光线。2. 当散射表面的光线追迹属性将蒙特卡罗设置为父光线说明符时,在GPU光线追迹期间,散射光线的数量将强制为1。在所有其他情况下,将使用所请求的散射光线数量(最多10条光线)脚本 GPU上不支持脚本元件(例如材料,曲面,散射等)。 有关脚本元件如何在GPU上进行近似的更多信息,请参阅本文档的相应部分。修改FRED文档的脚本(包括更新前/后脚本)应在将文档发送到GPU之前执行以下脚本命令用于支持MPC光线追迹:
$Xqc'4YOZ X(Z(cY( 
4P#4RB KWM}VZY:Z
wZ=@0al
w zi7pJjXh {YwdhwJP
3r[s_Y* z|zEsDh;
4E+8kz'
{~XAg~ 光源 I6,||!sZ 有三种光线追迹操作模式用于使用GPU执行光线追迹,本文档的光线追迹模式部分对此进行了描述。仅当使用Trace GPU Rays模式时,本节中的信息才有意义。使用Trace CPU Rays模式时,光源功能仅受GPU上光线数据支持的属性限制(有关详细信息,请参阅“光线”部分)。 ?6h~P:n. 使用Trace GPU Rays模式时,光源定义将加载到GPU中,然后GPU用于生成和追迹光线。为了正确执行,GPU实现需要支持源定义的属性。如果不支持光源的属性,则GPU不会生成或追迹光线。 5tEkQ(Ei8 下表列出了GPU的光源属性支持: LZQG.
'-3K`[
uG-S$n"7K
,R=$qi|
ant2];0p
1. GPU仅使用列表中激活的波长。 这也会影响GPU上采样材料的表示,其折射率值在使用“As specified by list”波长选项的每个光源的有效波长下进行评估。 5f2=`C0_
2. 有关GPU如何表示每种材料类型的详细信息,请参阅本文档的“材料”部分。 "Jdi>{o8
3. 无论光源中的实际设置如何,功率单位始终为瓦特。 例如,如果指定50流明的光源,则GPU将产生具有50瓦特总功率的光线。 光线将被正确追迹,但50流明光源的辐射测量是不正确的。 T# gx2Y
4. 如果支持位置/方向组合,仍将生成光线,但光线将不具有与偏振相关的任何属性。 /)<kG(Z
光谱 q#\B}'I{
所有Spectra类型都不受支持而会被忽略。 波长规格为“Randomly according to spectrum”的光源将无法使用Trace GPU Rays光线追迹模式在GPU上生成光线。在这种情况下,需要在CPU上的FRED中生成光线,然后使用Trace CPU Rays模式在GPU上推送和追迹光线。但是,因为在将文档加载到GPU中时预先计算折射率值,所以当折射元素包含在模型中时,这可能会给出不正确的结果。 vI:_bkii
表面粗糙度 _nSEp>]L
GPU不支持表面粗糙度。如果将Surface Roughness属性分配给FRED模型中的曲面,则在转换为GPU时将忽略该属性。 xc7Rrh]}
sn]D7Ae