电脑图像

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

9
新的图形程序员应该学习Vulkan而不是OpenGL吗?
摘自Wiki:“ Vhkan API最初被Khrono称为'下一代OpenGL计划',并且这是 “一次重新设计,将OpenGL和OpenGL ES统一为一个不会倒退的通用API的尝试。与现有的OpenGL版本兼容”。 那么现在应该更适合学习图形编程的人学习Vulkan而不是OpenGL吗?看来它们将达到相同的目的。
53 opengl  api  vulkan 

5
带有标志距离字段字体的尖角
签名距离字段(的SDF)是作为一个快速的解决方案由Valve实现与分辨率无关的字体呈现在本文中。 我已经可以使用Valve解决方案了,但是我想保留转角处的清晰度。Valve指出,他们的方法可以通过使用第二个纹理通道与基础纹理通道“与”来实现锐角,但缺乏解释如何生成第二个通道。 实际上,本文遗漏了许多实现细节。 我想知道你们中的任何人都可以指出一个方向,以使SDF字体具有尖角。

6
如何调试GLSL着色器?
在编写非平凡的着色器时(就像在编写其他任何非平凡的代码时一样),人们会犯错误。[需要引用]但是,我不能像其他任何代码一样调试它-毕竟不能仅仅附加gdb或Visual Studio调试器。您甚至无法进行printf调试,因为没有任何形式的控制台输出。我通常要做的是将要查看的数据呈现为彩色,但这是一个非常基本且业余的解决方案。我确信人们已经提出了更好的解决方案。 那么我该如何实际调试着色器?有没有办法遍历着色器?我可以查看着色器在特定顶点/原始/片段上的执行情况吗? (此问题专门用于调试着色器代码,类似于调试“正常”代码的方式,而不是调试状态更改之类的东西。)
45 opengl  glsl  debugging 

4
高斯模糊如何实现?
我已经读到模糊是在实时图形中通过在一个轴上然后在另一个轴上完成的。 过去我在1D中做过一些卷积运算,但我对此不太满意,也不知道在这种情况下究竟要进行哪些卷积运算。 谁能用简单的术语解释图像的2D高斯模糊处理方式? 我也听说模糊的半径会影响性能。那是由于必须进行更大的卷积吗?

4
反照率与扩散
每当我认为我理解两个术语之间的关系时,就会得到更多使我感到困惑的信息。我以为它们是同义词,但是现在我不确定。 “ diffuse”和“ albedo”有什么区别?它们是可互换的术语还是在实践中用来表示不同的事物?

3
什么时候计算着色器比像素着色器更有效地进行图像过滤?
图像过滤操作(例如模糊,SSAO,Bloom等)通常使用像素着色器和“聚集”操作完成,其中每个像素着色器调用都会发出许多纹理提取操作以访问相邻像素值,并计算单个像素的值结果。这种方法在理论上效率低下,因为完成了许多冗余提取:附近的着色器调用将重新提取许多相同的纹理像素。 另一种方法是使用计算着色器。这些具有的潜在优势是能够在一组着色器调用之间共享少量内存。例如,您可以让每个调用获取一个纹理元素并将其存储在共享内存中,然后从那里计算结果。这可能会或可能不会更快。 问题是在什么情况下(如果有的话)compute-shader方法实际上比pixel-shader方法更快?它是否取决于内核的大小,它是什么类型的过滤操作等?显然,答案从一个GPU型号到另一个GPU都不同,但是我很想听听是否存在任何普遍趋势。

2
漫反射和镜面反射的区别是基于物理的?
实时计算机图形中对表面进行着色的经典方法是将(朗伯(Lambertian))扩散项和镜面项组合在一起,最有可能是Phong或Blinn-Phong。 现在,随着基于物理渲染的趋势以及诸如Frostbite,Unreal Engine或Unity 3D之类的引擎中的材质模型的趋势,这些BRDF已经发生了变化。例如(当时相当通用),最新的虚幻引擎仍使用Lambertian漫反射,但结合了Cook-Torrance微面模型进行镜面反射(特别是使用GGX / Trowbridge-Reitz和菲涅耳术语的修正的Slick近似) )。此外,“金属”值用于区分导体和电介质。 对于电介质,漫反射使用材料的反照率进行着色,而镜面反射始终是无色的。对于金属,不使用漫反射,镜面项与材料的反照率相乘。 关于现实世界的物理材料,是否存在漫反射和镜面反射之间的严格分隔,如果存在,分隔分隔是从何而来的?为什么一个是彩色的而另一个却没有呢?为什么导体表现不同?

4
是否存在不能用RGB很好地代表的常见材料?
在图形中,我们使用RGB和其他颜色空间作为光波长全光谱的近似值。总体而言,这显然效果很好,但是在日常生活中可能遇到任何合理的常见对象/材质/现象,由于发射/反射/吸收光谱复杂,RGB渲染无法很好地表现其外观? 虽然目前的答案主要集中在给定RGB色域之外的颜色,但我也很想知道是否存在一些示例,例如,由于RGB之间的相互作用,对象的颜色在RGB中呈现时显示为“错误”。光源光谱和物体的反射光谱。换句话说,光谱渲染器可以为您提供更正确的结果。 信用:我在上一个私人测试版中喜欢这个问题,所以我在这里重现。最初是由内森·里德(Nathan Reed)提出的
34 color 

2
什么是重要性抽样?
什么是重要性抽样?我读到的每篇文章都提到“ PDF”,那又是什么? 据我所知,重要性采样是一种仅对半球比其他区域更重要的区域进行采样的技术。因此,理想情况下,我应该向光源采样光线以减少噪声并提高速度。而且,某些BRDF在掠射角上的计算几乎没有差异,因此使用重要性抽样来避免这种情况是好的吗? 如果要对Cook-Torrance BRDF进行重要性抽样,该怎么做?

2
DirectX / OpenGL(Vulkan)概念图
通常,使用不同的术语通过DirectX和OpenGL公开类似的硬件功能。 例如: 常量缓冲区 / 统一缓冲区对象 RWBuffer / SSBO 我正在寻找一张详尽的图表,描述使用哪种DirectX术语来指代哪个OpenGL概念,反之亦然。 在哪里可以找到这样的资源?
32 api 



4
在多个GLSL着色器之间共享代码
我经常发现自己在多个着色器之间粘贴粘贴代码。这包括在单个管道中的所有着色器之间共享的某些计算或数据,以及我所有的顶点着色器(或任何其他阶段)都需要的通用计算。 当然,这是可怕的做法:如果我需要在任何地方更改代码,则需要确保在其他地方进行更改。 有保持DRY的公认最佳实践吗?人们是否只是将一个通用文件添加到所有着色器?他们是否编写自己的基本C样式预处理程序来解析#include指令?如果行业中存在可接受的模式,我想遵循它们。
30 glsl 

1
原始的Perlin噪声是否比单纯形噪声有任何优势?
Perlin噪声是最流行的程序噪声功能之一。Perlin后来开发了Simplex噪声,此噪声改善了Perlin噪声的一些缺点,尤其是在较大尺寸和方向性伪像上效率低下(Wikipedia列出了Simplex噪声的五个优点)。尽管如此,Perlin噪声似乎仍被广泛使用。我可以想象到,主要原因是从概念上讲,单工噪声在概念上更加难以理解,但是到目前为止,应该有足够的实现方式,因此您不必自己重新实现它。 Perlin噪声是否比Simplex噪声有任何优势?选择噪声函数时,我会选择Perlin而不是Simplex吗?

2
虚拟纹理实际上如何有效?
作为参考,我指的是idTech 5的MegaTexture技术首次(我相信)引入的技术的“通用名称” 。请观看此处的视频,以快速了解其工作原理。 最近,我一直在浏览与之相关的一些论文和出版物,而我不明白的是它可能如何有效。它是否需要不断将“全局纹理页面”空间中的UV坐标重新计算为虚拟纹理坐标?那怎么不抑制大多数对几何图形进行批处理的尝试?如何允许任意放大?在某个时候它是否不需要细分多边形? 有太多我不了解的东西,而且我无法找到关于该主题的任何实际上容易接近的资源。

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.