问题标签 [geometry-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 回答
2244 浏览

opengl - GLSL 几何着色器和投影矩阵

因此,到目前为止,我认为 GLSL 几何着色器在输入顶点由投影/模型视图矩阵转换后工作。换句话说,几何着色器在剪辑坐标上处理事物。

如果我要使用几何着色器将 GL_POINTS 转换为例如由 GL_POINTS 制成的立方体GL_TRIANGLES怎么办?在剪辑坐标上计算事物时,生成的形状似乎总是面向您/忽略旋转/缩放等。

此外,似乎GL_TRIANGLES不支持将其作为可能的几何输出类型之一。但无论如何我都试过了,它似乎奏效了。我想这取决于视频卡?如果GL_TRIANGLES不支持,是否可以制作立方体?在空格之间制作零宽度三角形条可能?

0 投票
2 回答
5019 浏览

glsl - GLSL 几何着色器和通用顶点属性

所以我已经尝试了一段时间,将一个顶点属性数组传递给几何着色器。它是一个浮点数组(每个顶点的属性只是一个浮点值)

现在,当我把它放在几何着色器中时:

着色器编译器抱怨:

我该如何准确地传递它?

另外,这是我放置顶点属性的代码:

难道我做错了什么?

0 投票
1 回答
1835 浏览

opengl - 在几何着色器中使用 gl_ClipDistance

我正在尝试gl_ClipDistance在几何着色器中使用,但我无法让它工作。我的着色器在变换反馈记录中运行,我想根据 4 个剪切平面切割三角形。

我阅读了 GLSL 语言规范并试图找到一个完整的例子(没有找到)。这是我的着色器的样子(缩短):

在我开始转换反馈之前,我设置了:

我的planeDistance()返回正负距离取决于顶点位于哪一侧。我什至尝试将负值写入某些 . gl_ClipDistance[c],但它不会剪辑任何内容。

我究竟做错了什么?

0 投票
2 回答
2259 浏览

opengl - 为什么 OpenGL 不从我的几何着色器中裁剪部分位于查看体积之外的图元?

http://www.opengl.org/wiki/Rendering_Pipeline_Overview说在几何着色器运行之后和片段被光栅化之前,“位于观察体内部和外部之间边界上的图元被分成几个图元”。我读过的关于 OpenGL 的所有其他内容也以同样的方式描述了裁剪过程。但是,通过将片段着色器中的 gl_FragDepth 设置为比生成它的三角形上的点的实际深度更接近相机的值(以便片段通过深度测试,而如果我复制固定 -管道功能),我发现即使它部分与远视平面重叠,也会为整个原始三角形生成片段。另一方面,如果所有顶点都在平面后面,

这里发生了什么?我的几何着色器是否替换了一些默认功能?是否有我需要设置的标志/提示或需要写入的其他内置变量,以便渲染管道的下一步知道如何进行部分剪辑?

我在 NVIDIA GeForce 9400M 上使用带有 GL_EXT_geometry_shader4 扩展的 GLSL 1.2 版。

0 投票
1 回答
1301 浏览

glsl - GLSL几何着色器:迭代整个网格

我的目标是根据顶点的顺序为顶点着色

编辑:长期目标:访问前后顶点以模拟重力行为

我使用了以下代码

但是所有顶点都被绘制为黑色,似乎总是被评估为 0,我错过了什么或做错了吗?

编辑:解决了元问题:如何将所有模型几何图形输入单个几何着色器调用,因此主循环遍历所有顶点,而不是每个三角形。

0 投票
1 回答
797 浏览

directx - 使用 HLSL 几何着色器对二十面体进行多重细分

目前我正在使用以下几何着色器细分一个二十面体:

但是,我想指定细分级别。是否有可能使用输出的顶点再次调用着色器,还是我需要遵循其他方法?

0 投票
1 回答
1228 浏览

opengl - 几何着色器 GLSL 中的可变输出基元计数

我想在我的几何着色器中做这样的事情:

但是我在编译时出错:

并且着色器不会编译。

我可以理解,如果该变量在每次着色器运行时都会发生变化,那么内存管理可能太难了,但在这里它会在单次绘图调用中保持不变,因为制服是不变的。如果我在着色器中定义一些整数常量并将其用作 max_vertices 计数,它也会失败:

产生同样的错误。那么有没有办法做到这一点,或者我只需在该调用中输入一个数字,否则它不会编译。如果是第二种情况,我如何确保不会超过在主进程中查询的最大输出数:

编辑:对不起,我忘了提到我正在使用 ATI/AMD,并且 Catalyst 版本是 2010.1105.19.41785(这是我尝试过的最稳定的版本......)

0 投票
1 回答
6772 浏览

opengl - GLSL 1.5 简单几何着色器

我正在尝试编写一个简单的几何着色器,它在尝试修改内容之前只通过顶点。

我的顶点着色器是

我的几何着色器是

我的片段着色器是

如果没有链接几何着色器,一切正常。但是,当我在几何着色器中链接时,它会停止工作。我错过了什么?我的几何着色器是否需要vertexColor来自我的顶点着色器的输入,如果需要,那是如何完成的?

0 投票
1 回答
1542 浏览

opengl - 无法通过几何着色器工作

我有一个带有点的 VBO,我可以使用顶点和片段着色器进行渲染,但是当我添加一个通过几何着色器时,我什么也看不到。我正在使用 MRT 进行发光,但在此示例中我没有触摸它。

从我在其他帖子上看到的情况来看,将值从一个阶段传递到另一个阶段可能存在问题,因此我删除了所有变量,但它仍然不起作用。

我在链接后设置了程序参数 - 希望没关系。

任何想法为什么禁用几何着色器会产生白色粒子,但启用它却什么也没显示?

顶点着色器:

片段着色器:

几何着色器:

设置参数(程序链接后,程序为resources.particleprogram)

0 投票
2 回答
2389 浏览

c++ - 粒子系统是否应该在几何着色器中完全更新

粒子系统应该在几何着色器中完全更新,还是应该向几何着色器传递位置和生命等的更新数据。目前我更新几何中的所有内容,但我不确定这是否是最好的主意,以防 C++ 中需要一些数据。