问题标签 [fragment-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 投票
4 回答
23498 浏览

opengl - How to calculate gl_FragCoord in glsl

Ok, in my GLSL fragment shader I want to be able to calculate the distance of the fragment from a particular line in space.

The result of this is that I am first trying to use a varying vec2 set in my vertex shader to mirror what ends up in gl_FragCoord:

Now in the fragment shader I expect:

But it does not. What operation does the pipeline do on gl_Position to turn it into gl_FragCoord that I am neglecting to do on fake_frag_coord?

0 投票
2 回答
11282 浏览

opengl - 你可以在同一个程序中有多个像素(片段)着色器吗?

我想要两个像素着色器;第一个做一件事,然后下一个做别的事。这是可能的,还是我必须将所有东西都打包到一个着色器中?

0 投票
1 回答
1691 浏览

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

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

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

到 vec3 N = normalize(gl_Normal);

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

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

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

0 投票
3 回答
4738 浏览

fragment-shader - 片段着色器模糊......这是如何工作的?

sample[i] = texture2D(sample0, ...) 行如何工作?

似乎模糊了图像,我必须首先生成图像,但在这里,我以某种方式试图查询我正在生成的 iamge。这是如何运作的?

0 投票
1 回答
2302 浏览

objective-c - 纹理上的片段着色器

我正在尝试为程序添加一些后处理功能。渲染是使用openGL完成的。我只想让程序加载一些自制的片段着色器并在视频流上使用它们。

我使用“OpenGL Shader Builder”编写了一小段着色器,它只是将纹理转换为灰度。着色器在着色器构建器中运行良好,但我无法使其在主程序中运行。屏幕保持全黑。

这是设置:

这是“渲染屏幕”功能,它基本上......渲染屏幕。

最后是着色器。

着色器的加载和使用有效,因为我可以使用此着色器将屏幕全部变为红色

如果着色器包含语法错误,我会从 LoadShader 函数等收到错误消息。如果我删除着色器的使用,一切正常。

我认为问题来自“将纹理作为统一参数传递”的事情。但这些是我使用 openGL 的第一步,我无法确定任何事情。

0 投票
1 回答
1642 浏览

opengl - Fragment Shader Eye-Space 未缩放的深度坐标

我正在尝试在 GLSL 片段着色器中使用与场景中对象的未缩放(从前剪裁平面的真实距离)距离。gl_FragCoord.z 值比我预期的要小。在我的顶点着色器中,我只是使用 ftransform() 来设置 gl_Position。当我预计它们在 15 到 20 之间时,我看到的值在 2 到 3 之间。

如何获得真实的眼空间深度?谢谢!

0 投票
3 回答
2380 浏览

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

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

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

0 投票
7 回答
41343 浏览

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

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

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

0 投票
4 回答
3773 浏览

c++ - OpenGL 模板测试是在片段程序运行之前还是之后发生的?

当我设置glStencilFunc( GL_NEVER, . . . )有效地禁用所有绘图,然后运行我的 [shader-bound] 程序时,与让片段着色器运行相比,我没有得到任何性能提升。我认为模板测试发生在片段程序之前。不是这样吗,或者至少不能保证?将片段着色器替换为仅将常量写入 gl_FragColor 的片段着色器确实会导致更高的 FPS。

0 投票
2 回答
3125 浏览

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

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

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

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

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

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

片段着色器

顶点着色器