Questions tagged «texture»

对于与纹理有关的问题:程序生成,编码,方面特征,过滤,映射,存储...

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

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


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选择。

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

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



2
导数图与切线空间法线图
我发现某些引擎使用导数贴图代替切线法线贴图。 经过一番阅读之后,替换切线空间法线似乎是一种很棒的方法,但是使用它们会不会有一些不利之处?为什么仍继续使用切线空间法线? 是否可以将优点和缺点进行比较?


1
修改纹理(在其上绘画)是否被视为“状态变化”?
图形中的约定是,执行较少的状态更改比执行较多的状态更改(切换着色器,绑定缓冲区,绑定纹理等)更好。对于纹理,使用单个地图集(用于渲染精灵/文本)渲染许多多边形要比为每个多边形单独绑定一个新纹理要快。 如果我不断通过绘制纹理,这是否成立glTexSubImage2D?我有(通过网络)传入的数据流经过处理,然后一次绘制成纹理。数据以无休止的滚动形式直观呈现。 我会不会更好地在一个大矩形上绘制一种纹理(将绘制的数据滚动到视图中)?这里的想法是,在我继续绘画的同时,在任何给定的时间绑定一个(或两个)纹理。 还是我应该绘制很多小矩形(仅在绘制完成后才显示矩形)?我假设我将为每个矩形绑定一个纹理。
11 opengl  texture 

1
三次Lagrange插值张量积与双三次插值相同吗?
我只是通过对4x4最近的像素进行采样,然后在x轴上进行Lagrange插值来获得四个值,以在y轴上使用Lagrange插值来实现一些插值纹理采样。 这与三次三次插值相同还是不同?还是有不同的双三次插值,也许只是其中之一? 这里的Webgl Shadertoy实现以及下面的相关GLSL(WebGL)代码:https ://www.shadertoy.com/view/MllSzX 谢谢! float c_textureSize = 64.0; float c_onePixel = 1.0 / c_textureSize; float c_twoPixels = 2.0 / c_textureSize; float c_x0 = -1.0; float c_x1 = 0.0; float c_x2 = 1.0; float c_x3 = 2.0; //======================================================================================= vec3 CubicLagrange (vec3 A, vec3 B, vec3 C, vec3 D, float …

3
作为(漫反射/反照率)纹理的16位半浮点线性HDR图像?
因此,我已经考虑了一段时间,并尝试通过google找到答案,但没有成功。 如果您所有的纹理都是8位LDR图像(如JPEG),则在渲染时不可能与曝光控制/色调映射产生冲突。就是说,如果您调整图像的渲染曝光度,则应该在纹理中不存在的细节上进行曝光,因为低动态范围限制了这些细节。因此,在具有16位半浮点数的线性色彩空间中将纹理作为HDR图像并另存为.exr,以获得良好的颜色表示(32位“全”浮点数可能会过大吗?),这是否有意义?我认为,要获得更详细和正确的颜色值,可能还会对GI产生影响,并且如何计算颜色渗色? 还是根本没有必要,因为我们想要的渲染的最终结果可能会与以任何方式拍摄的纹理的曝光水平相似?而且由于相机通常以12-14bit的速度拍摄,因此您必须对纹理进行多次曝光,并做所有额外的工作才能将它们全部组合成一个HDRI。 编辑: 为澄清起见,我最感兴趣的是从照片逼真的渲染角度来看,使用光线跟踪渲染器(例如mental ray,V-Ray,Arnold等)进行全光模拟和全局照明,而不是实时游戏引擎。



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.