问题标签 [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 投票
3 回答
1181 浏览

c++ - 使用片段着色器计算纹素

我有两个使用片段着色器生成的纹理。我希望能够计算每个纹理中高于某个颜色强度的纹素数量。

如何才能做到这一点?

我最初的想法是在生成纹理之前使用片段着色器计算这些纹素。但是,这将需要某种全局计数器。我不能使用遮挡查询,因为纹理是从其他纹理创建的。我正在使用 OpenGL 2.1。

0 投票
4 回答
3782 浏览

opengl - OpenGL 着色语言向后兼容性

我注意到当 GLSL 版本低于 130 时,我的 GLSL 着色器无法编译。

拥有向后兼容的着色器源最关键的元素是什么?我不想完全向后兼容,但我想了解在 GLSL 低于 130 的 GPU 上运行简单(向前兼容)着色器的主要准则。

当然这个问题可以用预处理器解决

但我可能忽略了很多问题。

0 投票
1 回答
1762 浏览

c++ - 使用顶点着色器时如何获得平坦的非插值颜色

有没有办法实现这一点(OpenGL 2.1)?如果我画这样的线

我得到了想要的结果(每个边缘的颜色不同),但我希望能够在着色器中计算片段值。如果我在设置我的着色器程序后做同样的事情,我总是会在顶点之间得到插值颜色。有没有解决的办法?(如果我可以使用四边形获得相同的结果会更好)

谢谢

0 投票
4 回答
1033 浏览

c - 如何对纹理执行 HSL 变换?

如果我有一个 OpenGL 纹理,并且我需要在渲染纹理之前对其执行 HSL 修改,据我所知,我需要一个着色器。问题是,我对着色器一无所知。有谁知道我需要看哪里?

我想编写一个函数,我可以在其中传递纹理和三个值,度数的色调偏移,以及介于 0 和 2 之间的饱和度和亮度乘数,然后让它调用一个着色器,将这些变换应用于之前的纹理呈现。界面看起来像这样:

procedure HSLTransform(texture: GLuint; hShift: integer; sMult, lMult: GLfloat);

不过,我不知道例行程序中应该包含什么。我了解 HSL/RGB 转换所涉及的基本数学,但我不知道如何编写着色器或如何应用它。有人可以指出我正确的方向吗?首选 Delphi 示例,但如果必须,我也可以阅读 C。

0 投票
7 回答
41343 浏览

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

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

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

0 投票
1 回答
2301 浏览

c# - HLSL,具有不同 Texture2D 缩小算法的程序像素着色器

我正在尝试将一些图像插值算法移植到 HLSL 代码中,现在我得到了:

问题是编程像素着色器需要不同的方法,因为我们无法控制当前位置,只有实际循环通过像素的“内部”部分。

我已经用谷歌搜索了大约一整天,发现没有一个开源库在循环中使用了缩放算法。是否有这样的库,我可以从中移植一些方法?

我找到了http://www.codeproject.com/KB/GDI-plus/imgresizoutperfgdiplus.aspx但我真的不明白他解决问题的方法,移植它会很痛苦......

维基百科讲述了一种数学方法。所以我的问题是:我在哪里可以找到包含简单缩放算法的易于移植的图形开源库?当然,如果这样的库甚至存在的话。

0 投票
4 回答
34359 浏览

iphone - OpenGL ES 2.0 使用纹理渲染

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

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

0 投票
2 回答
3125 浏览

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

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

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

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

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

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

片段着色器

顶点着色器

0 投票
3 回答
3898 浏览

shader - HLSL 如何在着色器之间传递数据/读取现有颜色值?

我有 2 个 HLSL ps2.0 着色器。简而言之,它们是:

着色器 1

  • 读取纹理
  • 基于此纹理输出颜色值

着色器 2

  • 问题:需要从 Shader 1 中读取颜色
  • 输出最终颜色,它是输入颜色的函数

(它们需要是不同的着色器,因为我已经达到了 1 个着色器的最大顶点着色器输出)


我的问题是我无法弄清楚 Shader 2 如何访问现有的片段/像素颜色。

知道如何用 HLSL 做这些事情将解决我的问题;

  • 读取现有像素颜色(我认为这是不可能的)
  • 将 Shader 1 的结果作为 float4 传递给 Shader 2
  • 将着色器 1 的结果渲染为内存中的纹理,并让着色器 2 将其读取到
0 投票
5 回答
5347 浏览

math - 顶点的副法线是其法线和切线的交叉点吗?

我试图找出在图形编程的上下文中什么是副法线,但很短,我在一个网站上看到副法线被计算为法线和切线之间的叉积(即交叉(法线,切线) ),这是计算副法线的正确方法吗?