yQxzFy VR渲染 提高效率 避免闪烁
,f;YJHEx8 ——发光
贴图查看器(irradiance map viewer)的应用
)ieT/0nt N>S_Vgk} 一、 提高效率
kFlq@['U ——几个疑问
{ ke}W ;LM,<QJ 1、Irradiance map 光子图?Irradiance map 是一种间接照明算法,正确翻译:发光贴图采样。
Q$NT>d6Q 2、发光贴图的质量跟 参数之间的关系
(c<MyuWb 在使用vr渲染器
渲染动画序列之前,我们基本上一定会隔桢渲染发光贴图,俗称“跑光”。这里我听到过几种分歧:
mBC?Pg 有人说渲染原尺寸,参数-4 -3足够。
4]F:QS%
x 有人说渲染一半尺寸足够,参数给高点-3 -2这样质量更高。
>:s#MwIwm 还有制作
效果图的同事渲染得比例更小,六分之一,参数给到了-3 -1。
H]7MN Y 以上所有质量上的设置都满足我们的工作需要,但是很混乱,因为我们对vr渲染的质量和参数之间的关系没有概念。于是我使用Irradiance map viewer做了下面几个试验。
Ov$_Phm: 对比(720*404)[-4-3]和(360*202)[-3-2}
>8$]g (720*404)[-4-3]
0(2r"Hi ,U\F<$O 渲染时间: 发光贴图10s 帧缓存5s
OaeGukhX& Vr发光贴图采样采集到1283个采样点。
Sl,\<a (360*202)[-3-2]
0=3Av8 +9MoKn=h 渲染时间: 发光贴图10s 帧缓存5s
8CR b6 Vr发光贴图采样采集到 1275个采样点。
[YbnpI 结果:两种方式几乎一样,采样点分布及密度基本相同
9A@/5Z:v5W 结论: vr渲染发光贴图的质量是和最终渲染的画面分辨率有密切关联的,以上2种方式得到的发光贴图质量、渲染时间、最终画面质量基本一致。
对比[-4-2]和[-3-3]
720*404[-4-2]
^W&qTSjh IQ$cLr-S {tq.c9+!d 渲染时间: 发光贴图15s 帧缓存5s
I{e[Y_ Vr发光贴图采样采集到1958个采样点
UMcQqV+vT 720*404[-3-3]
4CUzp.S`h !p&[:+qN 2pKkg>/S 渲染时间: 发光贴图19s 帧缓存5s
r#svj*dn Vr发光贴图采样采集到2650个采样点
P2U^%_~ 结果:数据(采样点数量、渲染时间)上来看【-3-3】的发光贴图质量好过【-4-2】。但是分辨实际图像,发现一个有趣的现象。【-4-2】的图像在物体交接的地方变化更丰富。通过Irradiance map viewer工具对以上两个发光贴图进行分析:【-3-3】采样点密度较高、基本均匀。【-4-2】采样点密度不均匀,在
平面上密度低,但是在物体交接处密度明显有提高,甚至高于上-3-3的密度。
k}MmgaT:5] 结论:min rate设置的是一个最基本的发光采样质量,他决定物体大范围的平面的采样质量,max rate设置的是最高的发光采样质量,他决定的是物体交界处发光贴图采样质量。两者之间差值越大,画面中物体之间的互相影响越细腻,变化越多。(个人认为就是ao效果越明显。)
(KHO'QNMt^ uq.!{3)8 综上: b3'U}0Ug |`N|S 如何增加效率:可以视情况选择较差的参数渲染,后期渲染ao通道追加画面细节。
M<nKk#!+h F
gi&CJ8Q @N
tiT,3k 问题: 容易出现闪烁 黑斑。
S.4gfY JX.3b_O 二、避免闪烁、黑斑等渲染错误
q(Q$lRj/I- 下面我列出了我总结出来画面出现闪烁黑斑的原因,我只会重点说明个别几个。
nzcXL
=^r3 渲染中出现闪烁、黑斑的原因
SS)9+0$ o未隔帧渲染发光贴图
ro%Jg o共面
(C3:_cM5 o画面中有会运动物体(包含
灯光动画)
L?Fb} o细小物体闪烁(代理树)
Rj'Tu0l o远景闪烁
}x A Eu,n^ 1、未隔帧渲染发光贴图
xlP0?Y1Bl 2FE13{+f 闪烁原因:发光贴图采样的随即性,决定前后两张画面采样点必然存在区别,如果不计算好采样并且调用,单独看起来没问题的画面连起来播放必然出现闪烁。
T4JG5 83i;:cn 解决方案:隔帧跑光,但是隔多少帧?
znkc@8_4 ,SF>$
. 请大家使用Irradiance map viewer查看一下隔帧渲染出的发光贴图采样是什么样的,它并不是一个序列,而是空间整体的采样点信息。
{hH8+4c7 隔多少帧渲染也是我们的一个问题,然而通过Irradiance map viewer的使用,我发现有些镜头即使隔上100帧渲染也不会出现问题,打破了跑光隔5-10帧的限制,更是直接的提高了我们工作的效率。
*-vH64e SR$?pJh D% 2、共面
A=f)ntH~ \gW6E^ 错误原因:共面后发光贴图采样出错
sDZ<XA }nK=~Wcu\ 解决方案: 二次反弹偏移
Htm;N2$d 彻底避免共面
<"z9(t(V\% G@4n]c_ 3、画面中有会运动物体、灯光动画
VD90JU]X< (v0i]1ly[ 错误原因:运动物体发光贴图采样错误
K9_@[}Ge A2%RcKY7 解决方案:
X?z
CB 1、扫描线加ao的方式:隐藏运动物体以避免运动物体产生发光贴图采样。所后单独用其他
渲染器渲染运动的物体,丢失的细节可以使用ao通道来添加。
"3$P<Q\;l; 2、vr1.5rc5新动画渲染模式
S^7u`- P0l.sVqL :OD-L)Or 这种模式是基于incremental add to current map模式开发的适用于动画渲染的新模式,他保存出来的发光贴图采样不再是一个整体的3d世界,而是真真正正的发光贴图采样序列了。完全的满足了带有动画物体的渲染需求,但是这种模式不能隔帧渲染,耗时长。
D"<>!]@(a /&o<kY 以上两种方式都能基本解决我们的动画闪烁问题 OP98 sd&T 扫描线加ao的优势是速度快 缺点是不能渲染代理模型。 bI :cYn1 Rc5的优势是完全支持代理 解决了闪烁 缺点是速度相对较慢 发光贴图采样只能单机渲染。 @ 5V3I^ D%h_V>#z 4、细小物体闪烁(代理树)
v4W<_
7L_ d$PQb9Q+f 错误原因:
xX\A&9m 画面反走样(抗锯齿)参数过低
L r9z~T:ED 发光贴图采样严重不足
o(Q='kK dRXdV7-! 解决方案:
m8z414o 提高反走样参数
zF_aJ+i:~ 原因同远景闪烁
5`f\[oA 5、远景闪烁
1l+j^Dt'[ 2D"\Ox 8@BN6 错误原因:
IK|W^hH\8 发光贴图采样严重不足
W=?s-*F[~ R\>=}7 解决方案:
U?yKwH^{ 1、add to current map 模式
Avo"jN*<d 2、irradiance map viewer 合并发光贴图
^*+-0b;[G etLA F JnBg;D|)@ p/%B>Y> 后记:irradiance map viewer 合并发光贴图 4
n\dh<uY I\oI"\}U qaN%&K9F8 发光贴图网络渲染
d&[.=M\E8 L?p,Sy<RI 我们可以使用 这种模式下的发光贴图采样序列模式进行隔帧网络渲染。再把收集好的发光贴图采样序列合并成一个世界发光贴图采样。