问题标签 [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.
opengl - 在 OpenGL 顶点着色器中,w 是什么,为什么要除以它?
所以clipCoord
只是做标准的固定管道转换。为什么我除以w
,我从中得到什么?
fragment-shader - OpenGL漫反射照明着色器错误?
橙皮书第 16.2 节列出了实现漫射照明:
但是,当我运行它时,当我移动相机时,照明会发生变化。另一方面,当我改变
到 vec3 N = normalize(gl_Normal);
我得到像固定管道一样工作的漫射照明。
这个 gl_NormalMatrix 是什么,删除它做了什么,......这是橙皮书中的一个错误......还是我不正确地设置了我的 OpenGl 代码?
[为完整起见,片段着色器仅复制颜色]
opengl - 在顶点着色器中更改顶点的颜色
是否可以使用 GLSL 顶点着色器程序设置单个顶点的颜色,就像 gl_Position 改变顶点的位置一样?
opengl - 使用顶点着色器计算球体的边界四边形
我正在尝试从图形纸中实现一种算法,并且该算法的一部分是将已知半径的球体渲染到缓冲区。他们说他们通过在顶点着色器中计算位置和大小来渲染球体,然后在片段着色器中进行适当的着色。
关于他们实际上是如何做到这一点的任何猜测?位置和半径在世界坐标中是已知的,投影是透视的。这是否意味着球体将被投影为圆形?
cg - 如何在 CPU 上运行 Cg 顶点/片段着色器?
我正在我的小上网本(运行 Linux)上使用 Cg 玩一些顶点和片段着色器。显然,我将经常达到图形控制器的资源限制,所以想知道是否有一种很好的方法可以在 CPU 上运行着色器,只是为了测试它们。像D3D的refrast...
TIA
安迪
xna - HLSL:在编译时强制执行常量寄存器限制
在 HLSL 中,有没有办法限制编译器使用的常量寄存器的数量?
具体来说,如果我有类似的东西:
在 vs_2_0 顶点着色器中,编译器将愉快地使用超过 256 个常量寄存器生成效果。但是 2.0 顶点着色器只能保证可以访问 256 个常量寄存器,所以当我尝试使用该效果时,它会在运行时以一种模糊且依赖于 GPU 的方式失败。我宁愿让它在编译时失败。
这个问题特别烦人,因为编译器本身在后台分配常量寄存器,在我要求的寄存器之上。我必须检查组件,看看我是否超过了限制。
理想情况下,我想在 HLSL 中执行此操作(我正在使用 XNA 内容管道),但是如果有一个可以传递给编译器的标志,那也会很有趣。
xna - HLSL:未对齐/打包浮动的索引
我有一个顶点着色器(2.0)做一些实例化——每个顶点都指定一个数组的索引。
如果我有这样的数组:
编译器为其分配了 100 个常量寄存器。每个常量寄存器都是 a float4
,因此它分配了所需空间的 4 倍。
我需要一种方法让它只分配 25 个常量寄存器并在每个寄存器中存储四个值。
理想情况下,我想要一种在 CPU 和 GPU 上仍然看起来像 a 的方法float[]
(现在我正在调用EffectParamter.SetValue(Single[])
,我正在使用 XNA)。但是手动打包和解包 afloat4[]
也是一种选择。
另外:这样做对性能有什么影响?它真的值得吗?(对我来说,这将在每四五个中节省一批)。
opengl-es - 当我将 gl_Position 的 x 坐标设置为零时,WebGL/GLSL 顶点着色器将 9 个点折叠成单点
我不明白为什么当我渲染一个 x 坐标为零的顶点缓冲区时,以下两个着色器会产生不同的结果:
第一的:
第二:
第一个结果是一行九个点。第二个的结果是一个点。
我将以下顶点数组绘制为 GL_POINTS:
这是VBO准备电话:
这是抽奖电话:
directx - DirectX11:将数据从 ComputeShader 传递到 VertexShader?
是否可以对要使用计算着色器渲染的几何数据应用过滤器,然后将结果用作顶点着色器中的输入缓冲区?这样可以省去我读回数据的麻烦(和时间)。
任何帮助深表感谢。
glsl - 为什么 GLSL 中的 texture1d() 会返回 vec4?
我正在尝试在我的顶点着色器中使用一维数组作为查找表.. 那么为什么当我打电话时
texture1D(tex,gl_TexCoord[0].s);
它返回一个vec4吗?我的意思是我知道这就是它的作用,但是这 4 个值代表什么?我想要的只是基于坐标的纹理中的一个值。