问题标签 [vertex-shader]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
53474 浏览

opengl - 在 OpenGL 顶点着色器中,w 是什么,为什么要除以它?

所以clipCoord只是做标准的固定管道转换。为什么我除以w,我从中得到什么?

0 投票
1 回答
1691 浏览

fragment-shader - OpenGL漫反射照明着色器错误?

橙皮书第 16.2 节列出了实现漫射照明:

但是,当我运行它时,当我移动相机时,照明会发生变化。另一方面,当我改变

到 vec3 N = normalize(gl_Normal);

我得到像固定管道一样工作的漫射照明。

这个 gl_NormalMatrix 是什么,删除它做了什么,......这是橙皮书中的一个错误......还是我不正确地设置了我的 OpenGl 代码?

[为完整起见,片段着色器仅复制颜色]

0 投票
1 回答
24022 浏览

opengl - 在顶点着色器中更改顶点的颜色

是否可以使用 GLSL 顶点着色器程序设置单个顶点的颜色,就像 gl_Position 改变顶点的位置一样?

0 投票
3 回答
2380 浏览

opengl - 使用顶点着色器计算球体的边界四边形

我正在尝试从图形纸中实现一种算法,并且该算法的一部分是将已知半径的球体渲染到缓冲区。他们说他们通过在顶点着色器中计算位置和大小来渲染球体,然后在片段着色器中进行适当的着色。

关于他们实际上是如何做到这一点的任何猜测?位置和半径在世界坐标中是已知的,投影是透视的。这是否意味着球体将被投影为圆形?

0 投票
1 回答
895 浏览

cg - 如何在 CPU 上运行 Cg 顶点/片段着色器?

我正在我的小上网本(运行 Linux)上使用 Cg 玩一些顶点和片段着色器。显然,我将经常达到图形控制器的资源限制,所以想知道是否有一种很好的方法可以在 CPU 上运行着色器,只是为了测试它们。像D3D的refrast...

TIA

安迪

0 投票
1 回答
2013 浏览

xna - HLSL:在编译时强制执行常量寄存器限制

在 HLSL 中,有没有办法限制编译器使用的常量寄存器的数量?

具体来说,如果我有类似的东西:

在 vs_2_0 顶点着色器中,编译器将愉快地使用超过 256 个常量寄存器生成效果。但是 2.0 顶点着色器只能保证可以访问 256 个常量寄存器,所以当我尝试使用该效果时,它会在运行时以一种模糊且依赖于 GPU 的方式失败。我宁愿让它在编译时失败。

这个问题特别烦人,因为编译器本身在后台分配常量寄存器,在我要求的寄存器之上。我必须检查组件,看看我是否超过了限制。

理想情况下,我想在 HLSL 中执行此操作(我正在使用 XNA 内容管道),但是如果有一个可以传递给编译器的标志,那也会很有趣。

0 投票
1 回答
1500 浏览

xna - HLSL:未对齐/打包浮动的索引

我有一个顶点着色器(2.0)做一些实例化——每个顶点都指定一个数组的索引。

如果我有这样的数组:

编译器为其分配了 100 个常量寄存器。每个常量寄存器都是 a float4,因此它分配了所需空间的 4 倍。

我需要一种方法让它只分配 25 个常量寄存器并在每个寄存器中存储四个值。

理想情况下,我想要一种在 CPU 和 GPU 上仍然看起来像 a 的方法float[](现在我正在调用EffectParamter.SetValue(Single[]),我正在使用 XNA)。但是手动打包和解包 afloat4[]也是一种选择。

另外:这样做对性能有什么影响?它真的值得吗?(对我来说,这将在每四五个中节省一批)。

0 投票
1 回答
908 浏览

opengl-es - 当我将 gl_Position 的 x 坐标设置为零时,WebGL/GLSL 顶点着色器将 9 个点折叠成单点

我不明白为什么当我渲染一个 x 坐标为零的顶点缓冲区时,以下两个着色器会产生不同的结果:

第一的:

第二:

第一个结果是一行九个点。第二个的结果是一个点。

我将以下顶点数组绘制为 GL_POINTS:

这是VBO准备电话:

这是抽奖电话:

0 投票
1 回答
1506 浏览

directx - DirectX11:将数据从 ComputeShader 传递到 VertexShader?

是否可以对要使用计算着色器渲染的几何数据应用过滤器,然后将结果用作顶点着色器中的输入缓冲区?这样可以省去我读回数据的麻烦(和时间)。

任何帮助深表感谢。

0 投票
1 回答
2824 浏览

glsl - 为什么 GLSL 中的 texture1d() 会返回 vec4?

我正在尝试在我的顶点着色器中使用一维数组作为查找表.. 那么为什么当我打电话时

texture1D(tex,gl_TexCoord[0].s);

它返回一个vec4吗?我的意思是我知道这就是它的作用,但是这 4 个值代表什么?我想要的只是基于坐标的纹理中的一个值。