电脑图像

计算机图形学研究人员和程序员的问答

2
菲涅尔金反射率:红色通道大于1?
最近,我一直在尝试理解光与物质相互作用背后的一些物理原理。内蒂·霍夫曼(Naty Hoffman)在他的《阴影的物理和数学》一书中解释了菲涅耳反射率,并将材料的特征镜面反射色F 0定义为入射角为0°时的菲涅耳反射率。 在幻灯片65上,金的F 0为1.022、0.782、0.344(线性)。霍夫曼补充说: 其红色通道值大于1(在sRGB色域之外) 所有这些对我来说都没有太大意义。大于1的值将意味着在贡献红色通道的波长中,反射的能量多于接收的能量。这真的发生了吗?如果是这样,怎么以及为什么呢? 此外,这是维基百科对某些材料(包括金(Au))的反射曲线。对于约600nm的红色波长,曲线肯定很高,但似乎不会超过100%。
13 physics  brdf 

1
为什么在GPU编程中需要工作效率?
我一直在阅读以下有关如何在CUDA中进行并行扫描的文章: https://developer.nvidia.com/gpugems/GPUGems3/gpugems3_ch39.html 在这篇文章中,重点是使扫描“高效工作”。换句话说,GPU算法执行的加法运算应不超过CPU算法O(n)。作者提出了两种算法,一种是“天真的”算法,可以进行O(nlogn)加法运算,另一种则认为“工作效率高”。但是,高效工作的算法执行的循环迭代次数是原来的两倍。 据我了解,GPU只是巨型SIMD处理器,应该同步运行。在“高效工作”算法中执行两倍的循环似乎意味着从长远来看,许多线程将处于空闲状态并降低性能。我想念什么?

2
如何建立合适的镜头/相机物镜模型进行路径追踪?
在对smallpt进行学习和试验之后,我写了一个小路径跟踪器。 我自己没有写(也不理解)的唯一一件事就是如何计算初始光线并从相机发射它们。我的原则是正确的,但是我正在寻找一些资源来描述如何: 计算射线的初始方向 模拟一个真实的镜头(与针孔相机相反),据说可以实现像景深这样的效果? 不需要最先进的数学和物理学,但如果进行了详尽的解释,则可以。


3
非实时光线追踪
我已经使用了实时光线追踪(和raymarching等),但是在非实时光线追踪上却没有花太多时间-用于更高质量的图像或用于预渲染视频等。 我知道一种在非实时情况下提高图像质量的常用技术是,每个像素仅投射更多光线并取平均结果。 在非实时情况下,还有其他技术可以作为提高图像质量的好方法吗?

4
什么时候应使用四元数来表示3D中的旋转和缩放?
四元数(复数的二维扩展)可用于表示3D向量的旋转和缩放,并且将四元数应用于3D向量涉及两个四元数乘法,因此与通过相应变换矩阵进行乘法运算相比,所需运算更少。但是,通常改用线性和仿射变换矩阵,尤其是在着色器代码中。 (由于速度,稳定性等原因)什么时候使用四元数来表示三维缩放和旋转,而不是使用相应的转换矩阵,是否合适且更可取?

3
什么是“ Scanline Racing”
我听说许多从事VR的人都在谈论扫描线赛车,它应该有助于改善运动到光子的延迟。但是,我不清楚如何使用OpenGL完成此操作。有人可以解释一下scanline racing如何工作,以及如何在现代GPU上实现它。

4
射线追踪中如何实现反锯齿?
在在线阅读了几篇文章之后,我可以自信地说我对使用射线追踪时抗锯齿的工作原理一无所知。 我所了解的是,单个像素/射线被分成4个子像素和4条射线,而不是1条。 有人可以解释一下这是怎么做的(最好是用代码)吗?


1
为什么制作可以平铺的噪波功能要贵两倍?
我已经在几个地方看到,要使Perlin噪声循环无缝发生,就需要以略有不同的方式对它进行两次计算,并对两个结果求和。 此Perlin噪声数学常见问题解答给出了一个公式: F升Ò Ò p(x ,y,ž)= (t − z)⋅ ˚F(x ,y,ž)+ z⋅ ˚F(x ,y,ž− t )ŤFloop(x,y,z)=(t−z)⋅F(x,y,z)+z⋅F(x,y,z−t)tF_{loop}(x, y, z) = \frac{ (t - z) \cdot F(x, y, z) + z \cdot F(x, y, z - t) }{ t} 使噪声函数沿方向循环。它还提到将其扩展为在2维中循环将对进行4个评估,在3维中循环将对进行8个评估。ž ˚F ˚FFFFžzzFFFFFF 我了解这可以使图块之间实现无缝连接,这种连接不仅连续而且可以连续微分,但直觉上希望是这样的情况:如果仅对噪声函数进行一次评估,并以所需的图块大小为模减少网格点。如果噪声函数仅基于紧邻的网格点(2D噪声为4,3D噪声为8),那么当要计算的点超过图块的右边缘时,一定要使用最左边的网格点与其他栅格点之间的噪声质量相同吗? 由于我已经在多个地方看到了这种多重计算方法,因此我认为它必须具有一定的优势,但是我很难看到缺点,当网格点太大时,只需将网格点重新包装回起点即可。我想念什么?
13 algorithm  noise 

3
是什么解释了金属的高镜面性?
根据我的理解,镜面反射颜色通常是指当表面以法线入射时被反射时反射的光量,并标记为或。此外,对于非金属材料,该值是从该材料的折射率计算与式从菲涅耳公式推导出(其中1是空气或空隙的折射率): F0F0F_0R0R0R_0nnnF0=(n−1)2(n+1)2F0=(n−1)2(n+1)2F_0 = \frac{(n - 1)^2}{(n + 1)^2} 根据维基百科上的折射率列表: 固体材料的通常在1.46(熔融石英)和2.69(Moissanite)之间。这意味着在0.03和0.21之间。nnnF0F0F_0 液体的通常在1.33(水)和1.63(二硫化碳)之间。如果我没记错的话,那意味着在0.02到0.057之间。nnnF0F0F_0 气体通常具有,所以我猜我们可以安全地假设为0。˚F 0n≈1n≈1n \approx 1F0F0F_0 所有这些值都非常低。即使是具有高折射率的晶体,例如钻石()和硅藻土(),也几乎不会超过20%。然而,大多数金属的值都超过50%。而且,我已经多次阅读上述公式不适用于金属(可以很容易地通过使用它来确认并看到完全错误的结果来确认),但是我没有找到任何进一步的解释。F 0 = 0.21 F 0F0=0.17F0=0.17F_0=0.17F0=0.21F0=0.21F_0=0.21F0F0F_0 是什么现象解释了这种差异?如何计算金属的(尤其是与之接触的介质的IoR不同于1,如水)?F0F0F_0

1
何时禁用透视校正插值(非透视)
在GLSL中,顶点属性的透视正确插值是默认设置-可以通过使用非透视限定符对特定的顶点属性禁用它。除了在后处理着色器中,我从未见过禁用透视校正的正确插值-还有其他用例吗?此外,从性能角度来看,它是否还会有所作为?

2
为什么图形说的是“电介质”而不是绝缘体?
例如,在将非导体与导体进行对比时,Filament在https://google.github.io/filament/Filament.md.html的文档使用了“介电体”一词,它称为“金属”。在stackexchange上,https: //computergraphics.stackexchange.com/search ? page = 2& tab = Relevance & q = dielectric也为“ dielectric”带来了很多成功。在这些情况下,我通常会期望使用“绝缘子”一词。“介电”是源于某种历史渊源,还是使用的准确术语?
12 material 

1
路径追踪器-多层材料和重要性采样
我目前正在尝试实现Monte Carlo路径跟踪器。我已经进行了一些研究,似乎一种常见的材料处理方法是使用分层模型。像这样: 当光入射到表面时,菲涅尔告诉我们第一层反射了多少光,第二层反射了多少,依此类推。 所以我做了类似但更简单的事情:只有一层高光和一层漫反射。尚无透射率。到目前为止,到目前为止,我对漫反射使用了一个简单的余弦加权brdf,对我的镜面反射使用了Cook-Torrance微面模型。 现在是最困难的部分:一旦射线击中表面该怎么办?通常,我会选择与表面材质相对应的brdf,对入射光方向进行采样,评估brdf,然后除以正确的概率分布函数。 但是在这里,表面撞击实际上对应于多种材料。天真的处理方法是为每个图层命中采样一次。但这显然是造成巨大性能损失的根源,这使我的道路实际上变成了树。 有更好的解决方案吗?

2
在像素内使用多个随机样本进行抗锯齿的基本原因是什么?
在图形中,通常在一个像素的范围内获取多个样本,然后将它们组合在一起(最常见的做法是取平均值),以获得最终的样本像素颜色。这具有防锯齿图像的效果。 一方面,这对我来说很有意义,因为您实际上正在做的是在像素代表的区域上整合像素的颜色。按照这种思路,平均“随机”样本似乎是进行蒙特卡洛积分的理想设置。(“随机”可以分层,基于蓝噪声,低差异序列等) 另一方面,从数字信号处理的角度来看,这感觉是错误的(或者至少不像它那样正确)。从这个角度来看,感觉就像我们要进行大量采样,然后使用盒式滤波器(盒式模糊)进行下采样以获得最终像素值。因此,似乎理想的方法是使用Sinc滤波而不是对样本求平均。我可以看到盒式过滤器比按这些思路进行的辛克式思维便宜。 这让我有些困惑。我们正在整合像素区域并进行平均的核心思想是正确的吗?还是我们正在下采样并且应该使用sinc,但是由于快速而使用盒式滤波器? 还是完全其他? 有点相关:光线跟踪中的抗锯齿/过滤

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.