我需要将矩阵的迹计算为 3 和 4 的幂,并且它需要尽可能快。
这里的矩阵是一个简单图的邻接矩阵,因此它是正方形的,对称的,它的条目总是 1 或 0,对角线元素总是 0。
对于矩阵的 2 次幂的迹的优化是微不足道的:
我在维基百科上发现的另一个想法是总结 Hadamard 乘积的所有元素,即 entry-wise multiplication,但我不知道如何将这种方法扩展到 3 和 4 的幂。
见http://en.wikipedia.org/wiki/Trace_(linear_algebra)#Properties
也许我只是瞎了,但我想不出一个简单的解决方案。
最后我需要一个 C++ 实现,但我认为这对问题并不重要。
在此先感谢您的帮助。
math optimization linear-algebra mathematical-optimization adjacency-matrix
我想以一种稍微不正统的方式使用深度缓冲区,我对所有规范化,缩放以及那里发生的事情感到非常困惑.
我的计划是由AMD的一些人实现空间哈希算法(链接到pdf).
tl; dr-version:通过将3D顶点离散化为(平面2D)深度纹理数组来加速最近邻搜索,将深度设置为VertexID.使用深度纹理的原因是,有一些智能深度测试甚至可以按排序顺序获得结果,但这里不太重要.
我的问题是VertexID显然是一个整数,范围从0
顶点的总量ParticleCount
,但不能直接使用,因为顶点着色器的输出必须[-1..1)
在OpenGL(或[0..1)
在DirectX)中规范化.
我的顶点着色器因此做了类似的事情:
float depth = 2.0 * gl_VertexID / ParticleCount - 1.0;
gl_Position = vec4(flatCoords, depth, 1.0);
Run Code Online (Sandbox Code Playgroud)
这有点工作,但实际存储到绑定到当前帧缓冲区的深度纹理的值会让我感到困惑.我没有完全理解浮点深度缓冲区和整数版本之间的区别,如果我甚至无法输出实数整数,并且从深度纹理读取后,[0..1]
无论我设置的是什么内部格式,所有内容似乎都被标准化(DepthComponent24,32,32f).
有人可以给我一些建议如何从这些深度纹理中获取VertexIDs吗?
谢谢
我想渲染一个像球体一样的行星.总体思路如下:
到目前为止,一切都正常运作.
现在我想添加光照,因此需要法线到表面.
在实现与照明相关的部分时,我快速添加了一种方法,使用片段着色器中的偏导数来估计地形的法线,如下所示:
vec3 X = dFdx(ins.position);
vec3 Y = dFdy(ins.position);
vec3 normal = normalize(cross(X,Y));
Run Code Online (Sandbox Code Playgroud)
ins.position
插值世界位置在哪里.
虽然这种方法有效,但它看起来并不是很好,因为它实际上导致了每个面的法线.
现在来看实际问题:
如果秒问题是"是",我有两个问题:
任何帮助是极大的赞赏!
我在渐变实现中的镜头(替换了最后几行的snoise):
float snoise(vec3 v, out vec3 grad)
{
......
// Mix final noise value
vec4 m = max(0.6 - vec4(dot(x0,x0), dot(x1,x1), dot(x2,x2), dot(x3,x3)), 0.0);
vec4 m2 = m * m;
vec4 m4 = m2 * m2;
vec4 pdotx = vec4(dot(p0,x0), dot(p1,x1), dot(p2,x2), dot(p3,x3));
vec4 temp …
Run Code Online (Sandbox Code Playgroud) 我无法让我的GLSL着色器在AMD和Nvidia硬件上运行.
我不是在寻找修复特定着色器的帮助,而是如何避免出现这些问题.是否可以检查着色器是否可以在AMD/Nvidia驱动程序上编译,而无需在具有相应硬件的机器上运行该应用程序并实际尝试它?
我知道,最后,测试是唯一可以肯定的方法,但在开发过程中我想至少避免明显的问题.
每个使用GLSL的人都必须遇到这些问题,为什么我找不到一个好方法来修复它们呢?
我正在使用librsvg将SVG文件呈现给Cairo上下文.然后我使用Pango"手动"在顶部渲染一些文本.
渲染SVG时,我得到Pango警告它无法加载字体:
"couldn't load font "'Calibri' Not-Rotated 16", falling back to "Sans Not-Rotated 16", expect ugly output."
之后通过Pango手动文本渲染完美无缺.我尝试了多个不同的字体系列,它们都可以正常渲染,没有任何警告.
我甚至浏览了librsvg源代码,看看它是如何使用Pango但我看不出与我正在做什么有任何重大差异.
我不知道如何继续调试这个问题,任何有关Pango如何在Windows下定位字体以及可能影响其查找能力的建议都非常感谢.
如果重要:
我从这里下载了所有需要的二进制文件:http://sourceforge.net/projects/ezwinports/files/