小编use*_*931的帖子

将世界空间法线转换为屏幕空间法线

将世界空间中定义的曲面法线转换为屏幕空间法线的正确方法是什么?我不认为它们可以简单地乘以投影矩阵,因为透视划分将事物转换为剪辑空间,据我所知,在这个与图像平面共面的空间平面保持共面.

但是我正在寻找的变换应该导致变换法线,使得图形A中描绘的蓝色世界法线应该导致不同的屏幕空间法线(因为,即使它们的平面与图像平面共面,它们也不会面向相机) - 另一方面,图形B中描绘的法线应该在变换之后(或多或少)相等,因为它们的表面面向相机.

在此输入图像描述

我在寻找什么样的转变?怎么计算呢?

我需要这个用于一些屏幕空间效果.

3d space transformation projection normals

6
推荐指数
1
解决办法
3714
查看次数

如何编写编译器可以高效编译为SSE或AVX的c ++代码?

假设我有一个用c ++编写的函数,它在很多向量上执行矩阵向量乘法.它需要一个指向要转换的向量数组的指针.我是否正确假设编译器无法有效地优化SIMD指令,因为它在编译时不知道传递指针的对齐(SSE需要16字节对齐或AVX需要32字节对齐)?或者数据的内存对齐与最佳SIMD代码无关,数据对齐只会影响缓存性能?

如果对齐对于生成的代码很重要,我怎么能让(visual c ++)编译器知道我打算只传递具有特定对齐值的函数?

sse simd avx visual-c++ auto-vectorization

6
推荐指数
1
解决办法
1506
查看次数

glTextureBarrier()和glMemoryBarrier(GL_TEXTURE_FETCH_BARRIER_BIT)之间的区别

glMemoryBarrier在GL 4.2及更高版本中可用,而glTextureBarrier在GL 4.5中可用

glTextureBarrier允许在片段着色器从中获取时同时渲染到相同的纹理,IFF纹理的每个纹素都被纹理拾取恰好一次.

我想知道glMemoryBarrier(GL_TEXTURE_FETCH_BARRIER_BIT)是否允许这样做?如果没有,是否有一个等同于glTextureBarrier的OpenGL ES?

memory opengl opengl-es render-to-texture

6
推荐指数
1
解决办法
766
查看次数

javascript 箭头函数:我们可以像 C++ lambda 那样捕获值吗?

定义 C++ lambda https://en.cppreference.com/w/cpp/language/lambda时,有一个捕获块捕获封闭范围内变量的(至少如果变量是通过复制而不是通过捕获)参考)。因此,如果 lambda 使用已捕获的变量并且稍后执行 lambda,则 lambda 内的相应变量将具有定义 lambda 时的值。

使用 JavaScript 箭头函数,我可以引用封闭范围中的变量。但是,当调用箭头函数时,它将使用它现在拥有的变量的值(而不是定义箭头函数时它拥有的值)。

是否存在类似的变量捕获机制,允许使用箭头函数对象存储捕获的变量值?

这是一个 C++ 示例:

// Example program
#include <iostream>
#include <string>
#include <functional>

int main()
{
  std::function<void(int)> byCopyCaptures[5];
  std::function<void(int)> byRefCaptures[5];
  for(int i=0; i<5; i++) {
      // The variable i is captured by copy:
      byCopyCaptures[i] = [i](int j) {std::cout << "capture by copy: i is " << i << " and j is "<< j <<"\n";};
      // The variable i is captured by reference: …
Run Code Online (Sandbox Code Playgroud)

javascript c++ lambda arrow-functions

6
推荐指数
1
解决办法
6875
查看次数

实时渲染中的“波前”是什么?

我最近在显卡上的像素着色器执行上下文中遇到了术语“波前”。

从上下文来看,我假设波前是将多个像素或顶点打包到一个结构中,可以使用一系列 SIMD 指令进行处理,但如果有人可以给出更详细的解释,我将不胜感激。

directx shader simd

6
推荐指数
1
解决办法
2212
查看次数

ios 企业:配置文件和证书过期 - 应用程序何时停止工作?

我们有一个内部 ipad 应用程序,已使用 ios 企业分发证书进行签名。

在 iPad 上的“配置文件”列表中,我可以看到该应用程序的配置文件将在大约两周后过期。

到目前为止,我在网上仅找到有关“证书”过期的信息,并且术语“配置文件”和“证书”有时在过期方面似乎可以互换使用,但这些不是相同的文件。

从理论上讲,用于签署此应用程序的证书(而不是配置文件)是否可能早于该日期过期?

如果证书过期而配置文件仍然有效,会发生什么情况?应用程序到底什么时候停止运行?

如何查看证书何时到期?

certificate provisioning ios

5
推荐指数
1
解决办法
1735
查看次数

OpenGL:单独线程上的 glClientWaitSync

我使用 glMapBufferRange 和 GL_MAP_UNSYNCHRONIZED_BIT 来映射缓冲区对象。然后,我将返回的指针传递给工作线程以异步计算新顶点。该对象是双重缓冲的,因此我可以在写入另一个对象的同时渲染一个对象。使用 GL_MAP_UNSYNCHRONIZED_BIT 为我提供了明显更好的性能(主要是因为 glUnmapBuffer 返回更快),但我得到了一些视觉伪影(尽管有双缓冲) - 所以我假设 GPU 开始渲染而 DMA 上传仍在进行中,或者工作线程太早开始写入顶点。如果我正确理解 glFenceSync、glWaitSync 和 glClientWaitSync,那么我应该通过以下方式解决这些问题:

A:避免让 GPU 在 DMA 过程完成之前渲染缓冲区对象:直接在 glUnmapBufferRange 之后,在主线程上调用

GLsync uploadSync = glFenceSync(GL_SYNC_GPU_COMMANDS_COMPLETE, 0);
glFlush();
glWaitSync(uploadSync, 0, GL_TIMEOUT_IGNORED);
Run Code Online (Sandbox Code Playgroud)

B:避免在 GPU 完成渲染之前从工作线程写入缓冲区:在 glDrawElements 之后直接调用主线程

GLsync renderSync = glFenceSync(GL_SYNC_GPU_COMMANDS_COMPLETE, 0);
Run Code Online (Sandbox Code Playgroud)

在工作线程上,在开始将数据写入之前从 glMapBufferRange 返回的指针之前

glClientWaitSync(renderSync,0,100000000);
...start writing to the mapped pointer
Run Code Online (Sandbox Code Playgroud)

1:我的显式同步方法正确吗?

2:第二种情况该如何处理?我想在工作线程中等待(我不想让我的主线程停止),但我无法从工作线程发出 glCommands。除了 gl 调用之外,还有其他方法可以检查 GLsync 是否已发出信号吗?

opengl multithreading synchronization

5
推荐指数
1
解决办法
4676
查看次数

半边缘结构上的多边斜角

我正在寻找半边数据结构上的多边斜角的示例实现或伪代码.单边斜角很容易 - 但是同时有多个边缘......我现在试了好几个小时都没有成功.我只是在拓扑变化中挣扎,正确地推动顶点看起来并不那么困难.基本上,我正在寻找一种关于如何在半边数据结构上从左网格到右网格的算法: 拓扑变化

任何人都可以指向一篇论文,一本书或多边斜角的示例实现吗?

algorithm 3d graph mesh computational-geometry

5
推荐指数
1
解决办法
340
查看次数

如何将asm着色器编译为fxo文件?

我有一个编译的fxo着色器,我正在尝试稍微编辑(只是调整一些常量).

使用fxdis(https://code.google.com/archive/p/fxdis-d3d1x/)我可以反汇编这个着色器,这是输出:

# DXBC chunk  0: RDEF offset 52 size 972
# DXBC chunk  1: ISGN offset 1032 size 80
# DXBC chunk  2: OSGN offset 1120 size 44
# DXBC chunk  3: SHEX offset 1172 size 1592
# DXBC chunk  4: STAT offset 2772 size 148
ps_5_0
dcl_global_flags refactoringAllowed
dcl_constant_buffer cb0[30].xyzw, immediateIndexed
dcl_sampler sampler[0]
dcl_resource_texture2d resource[0]
dcl_resource_texture2d resource[1]
dcl_resource_texture2d resource[2]
dcl_input_ps linear v1.xy
dcl_output o0.xyzw
dcl_temps 5
ne r0.x, l(0, 0, 0, 0), cb0[29].y
mov r1.x, v1.x …
Run Code Online (Sandbox Code Playgroud)

directx assembly shader direct3d hlsl

5
推荐指数
1
解决办法
758
查看次数

c++:static_cast&lt;int&gt; std::sqrt(x) 是否总是给出平方正整数的精确结果?

是否保证对于static_cast<int>(std::sqrt(x * x)) == x所有正 x 且 x*x 不会溢出?

如果不是,我将如何稳健地计算这些数字的平方根?

c++ sqrt

5
推荐指数
1
解决办法
201
查看次数