问题标签 [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.
c++ - 使用片段着色器计算纹素
我有两个使用片段着色器生成的纹理。我希望能够计算每个纹理中高于某个颜色强度的纹素数量。
如何才能做到这一点?
我最初的想法是在生成纹理之前使用片段着色器计算这些纹素。但是,这将需要某种全局计数器。我不能使用遮挡查询,因为纹理是从其他纹理创建的。我正在使用 OpenGL 2.1。
opengl - OpenGL 着色语言向后兼容性
我注意到当 GLSL 版本低于 130 时,我的 GLSL 着色器无法编译。
拥有向后兼容的着色器源最关键的元素是什么?我不想完全向后兼容,但我想了解在 GLSL 低于 130 的 GPU 上运行简单(向前兼容)着色器的主要准则。
当然这个问题可以用预处理器解决
但我可能忽略了很多问题。
c++ - 使用顶点着色器时如何获得平坦的非插值颜色
有没有办法实现这一点(OpenGL 2.1)?如果我画这样的线
我得到了想要的结果(每个边缘的颜色不同),但我希望能够在着色器中计算片段值。如果我在设置我的着色器程序后做同样的事情,我总是会在顶点之间得到插值颜色。有没有解决的办法?(如果我可以使用四边形获得相同的结果会更好)
谢谢
c - 如何对纹理执行 HSL 变换?
如果我有一个 OpenGL 纹理,并且我需要在渲染纹理之前对其执行 HSL 修改,据我所知,我需要一个着色器。问题是,我对着色器一无所知。有谁知道我需要看哪里?
我想编写一个函数,我可以在其中传递纹理和三个值,度数的色调偏移,以及介于 0 和 2 之间的饱和度和亮度乘数,然后让它调用一个着色器,将这些变换应用于之前的纹理呈现。界面看起来像这样:
procedure HSLTransform(texture: GLuint; hShift: integer; sMult, lMult: GLfloat);
不过,我不知道例行程序中应该包含什么。我了解 HSL/RGB 转换所涉及的基本数学,但我不知道如何编写着色器或如何应用它。有人可以指出我正确的方向吗?首选 Delphi 示例,但如果必须,我也可以阅读 C。
opengl - 如何获取片段的当前颜色?
我正试图围绕 GLSL 中的着色器,我找到了一些有用的资源和教程,但我一直在为一些应该是基本和微不足道的东西而碰壁:我的片段着色器如何检索颜色当前片段?
您通过说 设置最终颜色gl_FragColor = whatever
,但显然这是一个仅输出值。如何获得输入的原始颜色,以便对其执行计算?那肯定是在某个地方的变量中,但如果有人知道它的名字,他们似乎没有在我到目前为止遇到的任何教程或文档中记录它,这让我很难过。
c# - HLSL,具有不同 Texture2D 缩小算法的程序像素着色器
我正在尝试将一些图像插值算法移植到 HLSL 代码中,现在我得到了:
问题是编程像素着色器需要不同的方法,因为我们无法控制当前位置,只有实际循环通过像素的“内部”部分。
我已经用谷歌搜索了大约一整天,发现没有一个开源库在循环中使用了缩放算法。是否有这样的库,我可以从中移植一些方法?
我找到了http://www.codeproject.com/KB/GDI-plus/imgresizoutperfgdiplus.aspx但我真的不明白他解决问题的方法,移植它会很痛苦......
维基百科讲述了一种数学方法。所以我的问题是:我在哪里可以找到包含简单缩放算法的易于移植的图形开源库?当然,如果这样的库甚至存在的话。
iphone - OpenGL ES 2.0 使用纹理渲染
iPhone SDK 有一个使用 ES 2.0 和一组(顶点和片段)GLSL 着色器来渲染不同颜色的框的示例。是否有关于如何使用此 API 呈现简单纹理的示例?我基本上想取一个四边形,并在其上绘制纹理。
旧的 ES 1.1 API 不再工作了,所以我需要一些帮助才能开始。大多数着色器参考主要讨论高级着色主题,但我真的不确定如何告诉着色器使用绑定纹理,以及如何引用 UV。
opengl - 使用片段着色器的块过滤器
我使用 Apple 的 OpenGL Shader Builder(类似于 Nvidia 的 fx 作曲家的工具,但更简单)来学习本教程。
我可以轻松地应用过滤器,但我不知道它们是否工作正常(如果是,我该如何改进输出)。例如模糊滤镜:OpenGL 本身会对纹理进行一些图像处理,所以如果它们以比原始图像更高的分辨率显示,它们已经被 OpenGL 模糊了。其次,模糊部分比未处理的部分更亮,我认为这没有意义,因为它只是从直接邻域获取像素。这是由
我不太明白:像素是使用浮点值索引的?
模糊图像 http://img218.imageshack.us/img218/6468/blurzt.png
编辑:我忘了附上我使用的确切代码:
片段着色器
顶点着色器
shader - HLSL 如何在着色器之间传递数据/读取现有颜色值?
我有 2 个 HLSL ps2.0 着色器。简而言之,它们是:
着色器 1
- 读取纹理
- 基于此纹理输出颜色值
着色器 2
- 问题:需要从 Shader 1 中读取颜色
- 输出最终颜色,它是输入颜色的函数
(它们需要是不同的着色器,因为我已经达到了 1 个着色器的最大顶点着色器输出)
我的问题是我无法弄清楚 Shader 2 如何访问现有的片段/像素颜色。
知道如何用 HLSL 做这些事情将解决我的问题;
- 读取现有像素颜色(我认为这是不可能的)
- 将 Shader 1 的结果作为 float4 传递给 Shader 2
- 将着色器 1 的结果渲染为内存中的纹理,并让着色器 2 将其读取到
math - 顶点的副法线是其法线和切线的交叉点吗?
我试图找出在图形编程的上下文中什么是副法线,但很短,我在一个网站上看到副法线被计算为法线和切线之间的叉积(即交叉(法线,切线) ),这是计算副法线的正确方法吗?