电脑图像

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

3
游戏中几何LOD的最新状态是什么?
现代游戏如何对对象网格(例如角色,地形和树叶)的几何细节层次?我的问题分为两部分: 资产管道是什么样的?艺术家是否制作了后来被淘汰的高聚模型?如果是这样,哪种抽取算法最流行?LOD网格有时是手工完成的吗? 引擎在运行时如何在不同的对象LOD之间转换?是否有平稳或渐进的过渡? 答案可能是“不同的工作室使用不同的技术”。如果是这样,请确定一些最常见的做法。如果您能指出涵盖特定示例的白皮书/幻灯片,那也很好。
15 geometry 

1
在Metal中如何计算Mipmap级别?
我的问题特别针对Metal,因为我不知道答案是否会针对另一个API改变。 我相信到目前为止我了解的是: 贴图纹理预先计算了“细节级别”,其中通过以某种有意义的方式对原始纹理进行下采样来创建较低级别的细节。 Mipmap级别以递减的细节级别来指代,其中级别0是原始纹理,而更高级别是其二阶幂的减少。 大多数GPU实现三线性过滤,即为每个样本选择两个相邻的mipmap级别,使用双线性过滤从每个级别中采样,然后线性混合这些样本。 我不太了解的是如何选择这些mipmap级别。在Metal标准库的文档中,我看到可以在指定或不指定lod_options类型实例的情况下进行采样。我假设此参数会更改mipmap级别的选择方式,并且显然存在3D lod_optionsfor 2D纹理: bias(float value) level(float lod) gradient2d(float2 dPdx, float2 dPdy) 不幸的是,文档没有费心地解释这些选项的作用。我可以猜测会bias()偏向某些自动选择的细节级别,但是偏见value是什么意思呢?它的运作规模是多少?同样的,又是怎样lod的level()转换成离散的纹理贴图的水平?并且,在gradient2d()使用纹理坐标的渐变的假设下进行操作时,如何使用该渐变选择mipmap级别? 更重要的是,如果我省略lod_options,那么如何选择mipmap级别?这取决于执行的函数类型吗? 并且,如果该sample()函数的默认no-lod-options指定操作是要执行类似的操作gradient2D()(至少在片段着色器中),它是利用简单的屏幕空间派生类,还是直接与光栅化器和插值纹理坐标一起使用?计算精确的梯度? 最后,设备之间的这种行为有多一致?我读过一篇老文章(在DirectX 9中是古老的文章),其中提到了复杂的设备特定的mipmap选择,但是我不知道在新的体系结构上是否可以更好地定义mipmap选择。

1
佩林噪声对价值噪声的好处
在研究Perlin噪声的内部工作原理时,我想知道为什么要使用Perlin噪声而不是简单值噪声。据我了解正确,以下内容适用: Perlin噪声是一种基于晶格的噪声函数,可为基础噪声空间中的每个点分配一个n维梯度(对于原始实现是随机的,对于改进的实现是固定的)。现在,您可以通过计算距离矢量和梯度矢量之间的点积来查询空间中每个点的值。之后,您将计算出的所有值取平均值并获得查询的值。 但是,如果不使用梯度矢量,而是使用随机值,值噪声不是一样吗?由于我也在值噪声中的值之间进行插值,因此无法通过在Perlin噪声中使用附加的计算步骤(点积)来看到任何好处。 那么,为什么我要用Perlin噪声代替价值噪声呢?为什么Perlin噪音如此受欢迎?
14 noise 

1
使用GLM获取矢量长度
我对GLM库的行为感到困惑,或者我使用不当。 glm::vec2 testVec(6,-4); float len = testVec.length(); 我得到了2上面的代码片段的值。我相信我正在尝试获取由定义的向量的长度testVec。您很清楚这不是向量的正确长度。我在这里想念什么?
14 c++  vectors  glm 

1
为什么GPU仍具有光栅器?
尽管有进步,现代GPU仍具有固定的光栅化器。高度可定制的,带有可编程的着色器,但是仍然不是完全可编程的。 这是为什么? 为什么GPU不能简单地是具有通用计算单元的大规模并行设备,而光栅化器只是用户提供的用于该设备的软件? 具有固定功能的硬件是否在性能上如此有益,以致于这种方法不可行?
14 gpu  rasterizer 

2
各种空间填充曲线之间有什么区别?
空间填充曲线在许多图形应用程序中非常重要,因为它们有助于显示空间局部性。我们经常听到使用Z曲线,Morton代码,希尔伯特曲线等的不同算法。其中一些不同曲线之间的区别是什么,它们如何应用于各种应用?

2
现代GPU通常如何实现各向异性过滤?
各向异性过滤 “保留了通常由MIP贴图的纹理避免锯齿所损失的纹理的清晰度”。Wikipedia文章提供了有关如何实现的提示(“在各向异性的任何方向上探测纹理(...)”),但对我而言,它并不十分清楚。 正如演示文稿“ 基于物理的渲染的近似模型 ” 注释中所说明的测试所建议的那样,似乎有多种实现方式: 当使用各向异性过滤时,(现代)GPU进行哪些计算以选择正确的MIP级别?

1
需要有可靠的证据来证明地球地平线的形状
我要的是什么 我强调,我并不是要求公式 -我知道公式,以及如何推导它。文章结尾附近转载了它的几个不同版本。实际上,其他人不仅已经派生了它,而且还很好地介绍了这里的派生之一。 我需要的是该公式的一个著名来源,以便例如可以将其放到Wikipedia上而不违反其禁止报告原始研究的规定。[人们实际上已经尝试过 ...但是相关文章中有一些非常尽职的编辑,他们删除了该部分是因为它是原始研究……而且,不幸的是,该编辑是正确的,因此尝试没有太多意义。战斗。] 我在计算机图形学stackexchange中发布的原因 由于此处的某人可能已经模拟了地球从轨道上看的样子,因此他或她可能知道此公式(或更可能是它的某种概括)是否在某些书,杂志,会议论文集或课堂笔记中发表。等 我已经完成了“适当的谷歌搜索” 请理解,我并不是要任何人代表我去寻找答案。我已经做了很多谷歌搜索,并且只在这里发布了。我的希望(牵强)是这里的某人会马上知道参考。如果没有,那么,我希望至少您喜欢下面的漂亮图片(如果我自己这么说的话,我会与所有对计算机图形学感兴趣的人进行全面交流,然后再转向更大,更好)东西。 两个接近的来源 DK Lynch,“从视觉上识别地球的曲率”,《应用光学》第一卷。47,H39(2008)。它可以在这里免费获得。不幸的是,作者没有采取正确的方法(这并不难),而是选择了一种骇客,这(a)我并不完全理解,并且(b)与我所知道的不符。正确的公式。 R. Hartley和A.Zisserman,《计算机视觉中的多视图几何》,第二版。(剑桥大学出版社,英国剑桥,2004年)。在秒 8.3,“投影相机在二次曲面上的作用”,我们读: 假设二次曲面是一个球体,则相机中心和二次曲面之间的光线圆锥是右圆形的,即轮廓生成器是一个圆,该圆的平面正交于连接相机和球体中心的线。从几何形状关于这条线的旋转对称性可以看出这一点。球面的图像是通过将圆锥与图像平面相交而获得的。显然,这是经典的圆锥形截面,因此,球体的外观轮廓是圆锥形的。 原则上,如果仅包含更多信息,这将恰好是所需要的-至少一个圆锥形的偏心度表达式,它是与球体的距离和球体半径的函数(在这种情况下,当图像平面垂直于圆锥体的母线时,例如针孔相机对准地平线上的点时就是这种情况。 我需要学术参考的公式的详细信息 我们假设没有大气的完美球形,完美光滑的地球。我们将理想的针孔相机对准地平线,并使用简单的中央投影,计算相机背面的地平线图像的形状(即胶片在胶片上的形状-“胶片平面”) 。这是一个图形(在Asymptote中为感兴趣的人制作),该图应该使它更清晰: 正如我们在上面看到的,地平线的图像是圆锥截面的一部分。令为圆锥的偏心率;我上面提到的推导使用参数k代替,它只是反偏心率:k = 1 / ε。偏心率本身为ε = 1 / √εε\varepsilonkkkk=1/εk=1/εk=1/\varepsilon,其中ϵ=h/R是地球表面上方针孔的高度h与地球半径R的比。[而不是使用ε,这是之比海拔到- [R ,它可能使用是有用的η的比值,针孔的地球的中心的距离,ħ+- [R :向地球半径η=([R+ħ)/R=1ε=1/ϵ(2+ϵ)−−−−−−√ε=1/ϵ(2+ϵ)\varepsilon=1/\sqrt{\epsilon(2+\epsilon)}ϵ=h/Rϵ=h/R\epsilon=h/RhhhRRRϵϵ\epsilonRRRηη\etah+Rh+Rh+R。来讲 η,我们有 ε = 1 / √η=(R+h)/R=1+ϵη=(R+h)/R=1+ϵ\eta=(R+h)/R=1+\epsilonηη\eta ]。ε=1/η2−1−−−−−√ε=1/η2−1\varepsilon=1/\sqrt{\eta^{2}-1} 从针孔(图形中的点)到胶片平面的距离被视为一个单位长度。PPP 胶卷平面中的轴选择为平行于连接地球C中心(图像中未显示)和地平线上的点(相机中标记为V)的线。因为线C V必须平行于胶片平面,所以此选择定义明确。这是因为C V和胶片平面都垂直于视线P V(连接P和V的线)。和那是因为1.线P V相切地球在V,因此垂直于yyyCCCVVVCVCVCVCVCVCVPVPVPVPPPVVVPVPVPVVVV和2. P V垂直于胶片平面,因为相机是在 V处训练的。所述 X轴是当然的垂直于 …

1
恒定条件是否比切换着色器更昂贵?
通常,在着色器中分支不是一个好主意。但是现在我有了一个着色器,其条件对于整个绘制调用而言是恒定的。因此,对于一个绘制调用,执行的分支始终相同。 这种分支是否仍然比拥有多个没有这些分支并在它们之间切换的着色器还要昂贵?

1
所有基于网格的噪声都不可避免地是各向异性的吗?
我对这也适用于更大数量的尺寸很感兴趣,但是对于这个问题,我将只关注2D网格。 我知道Perlin噪声不是各向同性的(方向不变),并且下面的正方形网格显示出来足以识别其方向。单纯形噪声对此有所改善,但是其下面的等边三角形网格仍然没有完全被遮盖。 我的直觉是,任何试图在电网上产生特定频率的噪声的尝试都会导致在未对准电网的方向上产生较低的频率。因此,尽管可以进行掩盖,但原则上讲噪声不能是各向同性的,除非在不参考网格的情况下生成噪声,否则平均频率在所有方向上都相同。 例如,对于一个无噪声的正方形网格,其边长为,水平或垂直顶点的频率为,而45度(通过正方形的相对角)的顶点的频率为。ññn1个ñ1个ñ\frac1n1个2√ñ1个2ñ\frac1{\sqrt{2}n} 是否可以应用随机分布来抵消顶点位置,从而导致频率在所有方向上都相同?我怀疑没有这样的分布,但是我没有办法证明任何一种。 简而言之,有没有一种方法可以使给定频率的噪声完全基于网格,或者我应该专注于其他方法(基于非网格的噪声或伪装伪影的方法)吗?
14 noise  grid 

1
查找纹理是否仍用于任何用途?
我知道不久前(5-10年?),将数据烘焙到纹理中然后从纹理中读取数据是很流行的/有效的方法,通常使用内置的纹理插值来获得烘焙的线性插值输出数据。 现在,与纹理查找时间相比,计算时间更便宜,因此,即使不是全部消失,这种做法也肯定会减少。 我的问题是,烘烤出的纹理是否仍用于任何用途?在现代体系结构中,有人对他们有用例吗?他们似乎有可能再次回来吗?(例如,如果内存技术或基本GPU架构发生了变化)
14 texture  gpu  hardware 

1
如何模拟远处的雨水?
关闭后,可以将雨水建模为具有适当运动模糊的透明水球。对于大体积而言,这似乎是不切实际的,这对于远处的降雨场景而言是必要的。 在人眼无法分辨单个雨滴的距离上,如何模拟充满雨水的大气的影响?这对于实时使用而言并不一定足够有效,但是确实需要允许离线制作多个帧以进行动画处理而不会破坏不连续性或闪烁。 有哪些方法可用?

6
如何制作简单的2D插图以伴随几何答案?
在我对仿射变换的回答中,我做了一些小插图来帮助解释。 您如何快速制作可表达几何或数学思想的可上传PNG? 该问题旨在支持我的后记答案,但旨在寻求其他可能更有利于SE网络的解决方案。但是为了可信起见,答案必须链接到实际上已使用该技术的帖子,以及足够的“ howto”部分(如果涉及的内容不止是诸如“从菜单中选择导出”之类的内容)。 这里和这里有两个关于如何根据我们网站的优先级确定问题范围的元问题。
14 2d 

1
与PBR实施混淆
我发现了数学的奇妙世界,并且用PBR和命名来碰壁,所以我有几个问题:据我了解,BRDF描述了材料对光(入射的直接光和反射)的反应。但是在“ Cook-Torrance”中,我看不到任何有关反射的信息,我不了解如何对其进行整合,因此只能得到漫反射的光和反射。 我已经读过很多有关“ Oren-Nayar”等不同“扩散术语”的文章,它是否像DFG提名人中的其他“ D”一样,是Cook-Torrance的一部分?不用镜面计算就可以代替它吗? 我从搅拌机艺术家的背景中读到了很多有关“ GGX”的东西,我认为这是一种模糊的反映,但似乎我错了,现在我在许多不同的情况下(例如在微刻面正常情况下)都发现了这个GGX术语本教程中的分发 简而言之,问题是:“ Oren-Nayar”,“ GGX”和“ Cook-Torrance”如何相互关联(如果存在),以及如何在这些算法中集成“ vec3反射”? 正如我在成为数学新手之前所说的那样,因此如果您的回答“算是数学上的麻烦”,请为您的方程式写一个glsl / hlsl版本,这对我来说更容易理解,因此等效性对我有很大帮助 PS:我知道我的问题很模糊,但也跟我对这个问题的理解一样模糊。
14 glsl  pbr 

1
在路径跟踪中选择反射或折射
我正在尝试在路径跟踪器中实现折射和传输,但是我不确定如何实现它。首先,一些背景: 当光射到表面上时,其中一部分会反射,一部分会折射: 菲涅耳方程式给出了多少光反射与折射的关系 在递归光线跟踪器中,简单的实现方式是拍摄光线进行反射和折射,然后使用菲涅耳进行加权求和。 [RŤ大号Ø= Fř Ë 小号Ñ ë 升()= 1 - R= - [R ⋅ 大号我,反射+ T⋅ 大号我,折射R=Fresnel()T=1−RLo=R⋅Li,reflection+T⋅Li,refraction\begin{align*} R &= Fresnel()\\ T &= 1 - R\\ L_{\text{o}} &= R \cdot L_{\text{i,reflection}} + T \cdot L_{\text{i,refraction}} \end{align*} 但是,在路径跟踪中,我们仅选择一条路径。这是我的问题: 如何选择以无偏见的方式进行反射或折射 我的第一个猜测是根据菲涅耳随机选择。又名: float p = randf(); float fresnel = Fresnel(); if (p …

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.