问题标签 [glsl]

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 投票
7 回答
41343 浏览

opengl - 如何获取片段的当前颜色?

我正试图围绕 GLSL 中的着色器,我找到了一些有用的资源和教程,但我一直在为一些应该是基本和微不足道的东西而碰壁:我的片段着色器如何检索颜色当前片段?

您通过说 设置最终颜色gl_FragColor = whatever,但显然这是一个仅输出值。如何获得输入的原始颜色,以便对其执行计算?那肯定是在某个地方的变量中,但如果有人知道它的名字,他们似乎没有在我到目前为止遇到的任何教程或文档中记录它,这让我很难过。

0 投票
1 回答
3357 浏览

c++ - Qt 4.6 OpenGL GLSL

我试图找到像 NeHe 的 Qt 教程,它们都在 GLSL 中。因为让我们面对现实吧,过去的 OpenGL 已经死了,而着色器现在是唯一的方法。在 Qt-4.6 中,他们引入了 QMatrix4x4、QVector3 和 Shader 类。但我找不到任何教程。

我找到的所有这些都使用蹩脚的 SDL 和/或 GLUT(它们完全没用)。

0 投票
4 回答
34359 浏览

iphone - OpenGL ES 2.0 使用纹理渲染

iPhone SDK 有一个使用 ES 2.0 和一组(顶点和片段)GLSL 着色器来渲染不同颜色的框的示例。是否有关于如何使用此 API 呈现简单纹理的示例?我基本上想取一个四边形,并在其上绘制纹理。

旧的 ES 1.1 API 不再工作了,所以我需要一些帮助才能开始。大多数着色器参考主要讨论高级着色主题,但我真的不确定如何告诉着色器使用绑定纹理,以及如何引用 UV。

0 投票
0 回答
2922 浏览

opengl - GLSL着色器渲染到纹理不保存alpha值

更新:Danvil 在下面的评论中解决了这个问题。我的纹理格式是 GL_RGB 而不是 GL_RGBA 这当然意味着不保留 alpha 值。不知道为什么我没有意识到……谢谢丹维尔。

我正在使用 GLSL 着色器渲染到纹理,然后将该纹理作为输入发送到第二个着色器。对于第一个纹理,我使用 RGB 通道将颜色数据发送到第二个 GLSL 着色器,但我想使用 alpha 通道发送一个浮点数,第二个着色器将用作其程序的一部分。问题是当我在第二个着色器中读取纹理时,alpha 值始终为 1.0。我通过以下方式对此进行了测试:

在第一个着色器结束时,我这样做了:

然后在第二个纹理中,我使用沿线的东西读取第一个纹理的值

我的输出中没有像素是黑色的,而如果我将上面的代码更改为读取

在第二个着色器中

所有适当的像素都是黑色的。这意味着由于某种原因,当我在第一个着色器中将 alpha 值设置为 1.0 以外的值并渲染到纹理时,第二个着色器仍将其视为 1.0。

在渲染到纹理之前,我 glDisable(GL_BLEND);

对我来说似乎很清楚,问题与 OpenGL 以某种对我来说并不明显的方式处理 alpha 值有关,因为我可以按照我想要的方式使用蓝色通道,并且发现那里的人会立即看到问题.

此外,我调用着色器程序的方式是绘制一个四边形(我正在渲染到具有纹理的帧缓冲区):

0 投票
2 回答
3125 浏览

opengl - 使用片段着色器的块过滤器

我使用 Apple 的 OpenGL Shader Builder(类似于 Nvidia 的 fx 作曲家的工具,但更简单)来学习本教程。

我可以轻松地应用过滤器,但我不知道它们是否工作正常(如果是,我该如何改进输出)。例如模糊滤镜:OpenGL 本身会对纹理进行一些图像处理,所以如果它们以比原始图像更高的分辨率显示,它们已经被 OpenGL 模糊了。其次,模糊部分比未处理的部分更亮,我认为这没有意义,因为它只是从直接邻域获取像素。这是由

我不太明白:像素是使用浮点值索引的?

模糊图像 http://img218.imageshack.us/img218/6468/blurzt.png

编辑:我忘了附上我使用的确切代码:

片段着色器

顶点着色器

0 投票
1 回答
2972 浏览

iphone - OpenGL ES 2.0:对象旋转问题

我知道在不同的论坛上已经多次询问了以下问题,但是在查看了不同的解决方案之后,它仍然没有解决我的问题,或者我没有明白他们的意思
我正在尝试使用 OpenGL ES 2.0 对金字塔建模苹果手机。
我想允许用户使用触摸屏旋转这个金字塔,这样他就可以查看形状的每个面。
我正在使用自己的矩阵实用程序,灵感来自OpenGL ES 2.0 Programming Guide书中给出的库。
我有一个简单的顶点着色器,它需要 2 个制服和 2 个属性。
这是我的顶点着色器:

因此,在我的渲染过程中,我创建了 2 个矩阵:modelView 和投影矩阵。

这是我的投影矩阵的初始化方式:

我的金字塔顶点设置如下:

最后,这是我的绘图代码:

一切似乎都很好,我的金字塔在这里,在 Z 轴上向后平移。
当我开始旋转形状时,问题就出现了,它看起来像是围绕用户旋转,而不是围绕自身旋转。
例如,当我从左到右触摸屏幕时,我看到金字塔在右边缘从屏幕中出来,然后从左边缘回到屏幕,就好像它在我周围绕了一圈一样:页。

我对我的矩阵管理代码非常确定,所以我决定不在这里发布它以避免这个问题中的代码过多。如果需要,我可以给它。

你知道我做错了什么吗?

非常感谢 !

汤姆

0 投票
1 回答
1554 浏览

opengl - 在 GLSL 中检索 FBO 数据

我正在尝试让 MRT 在 OpenGL 中工作以尝试延迟渲染。这是我理解的情况。

  1. 创建 3 个渲染缓冲区(例如)。两个 RGBA8 和一个 Depth32。
  2. 创建一个 FBO。
  3. 将渲染缓冲区附加到 FBO。ColorAttachment0/1 用于颜色缓冲区,DepthAttachment 用于深度缓冲区。
  4. 绑定FBO。
  5. 绘制几何图形。
  6. gl_FragData[]使用片段着色器将数据发送到不同的附件。

在这一点上,我想使用 GLSL 在另一遍中获取数据,a) 如何从帧缓冲区颜色附件中检索数据,b) 从深度组件中获取数据。

0 投票
2 回答
691 浏览

opengl-es - 我在 WebGL 中的第一个着色器

我正在用 WebGL 编写我的第一个着色器。我想知道 GLSL 语言是否有任何方法来评估属性或制服是否为空。根据规格,它不支持做类似的事情

而且我认为为每种情况编写一个 bool 属性是一种浪费,这将是一种浪费。

另一个问题:当您不将制服或属性传递给着色器时,在渲染过程中会发生什么?

谢谢!

0 投票
2 回答
1307 浏览

iphone - iPhone 着色器分析

我正在使用一系列着色器在 iPhone (3GS/4/iPad) 上执行实时图像处理。fps不是我想要的。

有什么工具可以帮助我找出瓶颈是什么?

0 投票
2 回答
778 浏览

iphone - iPhone 上的查找表/调色板着色器

我有一个片段着色器,具有以下内容:

但它无法编译:

如何在 GLSL 中定义查找表?输入纹理具有来自枚举的值,我希望将每个值映射到不同的颜色。