问题标签 [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.
actionscript-3 - 在低级 AGAL 中编码时,您是否需要为每个纹理创建一个新的 Program3D?
例如...
如果我正在开发一个需要多个纹理的应用程序(基本上是唯一的精灵),我是否需要为我希望在应用程序中使用的每个单独的纹理调用context3D.createProgram();
并组装一个新的Program3D
(带有 aVertexShaderAssembler
和 a )?FragmentShaderAssembler
Program3D
通常在引擎中如何工作?一个程序运行整个事情,还是每个纹理、模型、地图使用一个程序?
我是否正确地假设您只需要Program3D
在初始化时间 ( Event.ADDED_TO_STAGE
) 期间创建一次,而不是在每个帧 ( Event.ENTER_FRAME
) 期间创建一次,对吗?
textures - 用于将数据传递给片段着色器的统一数组或纹理?
如果您有很多浮点数据要传递给片段着色器,那么使用统一数组或纹理是更好的主意吗?似乎统一数组是正确的方法,但数组大小似乎有限(尤其是在我工作的 WebGL 中)如果我想发送有关数千个对象的信息(出于光线跟踪的目的)是除了使用纹理来传递数据,还有什么现实的替代方法吗?这是一件坏事还是一件好事?
webgl - webgl中的顶点和片段着色器值
我是 webgl 的新手。我想知道如何生成顶点和片段着色器值。我看到了一些样本,可以看到这些值的巨大数组。无法弄清楚这些值是如何生成的。是否有任何工具可以生成这些值。我错过了什么吗?没有教程解释如何创建这些着色器值。对此的任何帮助表示赞赏。
opengl - GLSL Gif 抖动效果:优化
我有一个片段着色器,它基本上读取颜色 alpha 并将其转换为跨像素的抖动效果。
但是,它对所有的 mod 和 if 语句都是相当密集的处理器。有人对优化下面的代码有什么建议吗?
以下是基于反馈的解决方案:
shader - 如何修改/置换 Cg 片段着色器中的像素位置?
是否可以使用 Cg 修改片段(像素)着色器中的像素坐标?我确信这样的功能在第 2 代/第 3 代着色器中可用,但我不知道究竟是什么配置文件,或者如何做到这一点。
java - 片段着色器无效。链接无法继续
在我的项目开始时,我使用 simple String
s 来填充我的两个Shader
s 代码。这看起来像这样:
这对我有用,但不是很清楚。所以我考虑了如何让我的代码对每个人都更干净、更清晰。我的想法是,将我的全部代码放在一个真实的.cc
文件中并将其移动到 res/raw 文件夹中。说到做到。我想通过 Inputstreams 读出我的代码并将其保存到一个字符串中。这也很好,所以我给着色器提供了字符串源。
所以......现在碰巧有一个问题,正如我所说,我还没有得到它。我什至对自己有点生气,因为我想了一个简单的方法来解决它,但我没有看到。
我什至确实展示了我输入的源代码......但它看起来是正确的!oO
(不要担心奇怪的“调试 ID”,它是项目名称)
这是着色器的源代码:
顶点着色器:
片段着色器:
每次我尝试运行程序时,ShaderlogInfo 和 ProgramlogInfo 都会对我说:
片段着色器无效。链接无法继续。*
我是疯了还是瞎了?!我希望你知道答案......我真的不知道......请帮助我!
opengl-es-2.0 - 在多个程序中使用一个顶点/片段着色器
在 OpenGL ES 2.0 中,是否可以在多个链接程序中使用已编译的顶点/片段着色器?
例如,假设我有 1 个已编译的顶点着色器和 5 个已编译的片段着色器。我可以创建 5 个不同的程序(vsh1+fsh1、vsh1+fsh2 等)吗?
据我所知,这应该是可能的,但问一下也无妨。
谢谢
c++ - GLSL 4.10 纹理映射
我试图弄清楚如何使用 GLSL 4.10 版进行纹理映射。我对 GLSL 很陌生,很高兴今天得到一个三角形渲染,使用着色器根据 sin(time) 褪色。现在我对使用具有单一纹理的着色器很感兴趣。
许多教程甚至 Stack Overflow 的答案都建议使用 gl_MultiTexCoord0。但是,自 GLSL 1.30 以来,这已被弃用,最新版本现在是 4.20。我的显卡不支持 4.20,这就是我尝试使用 4.10 的原因。
我知道我正在适当地生成和绑定我的纹理,并且我有正确的顶点坐标和纹理坐标,因为当我使用固定功能管道时我的高度图渲染得很好,并且它用颜色而不是纹理渲染得很好。
这是我的 GLSL 着色器和一些 C++ 绘制代码:
我还怀疑的事情是我是否必须将纹理坐标的东西作为变量传递给片段着色器,因为我没有在顶点着色器中触摸它。另外,我不知道如何从中获得插值的 texcoords。似乎它只会得到 0.f 或 1.f,而不是插值坐标。我对着色器知之甚少,无法理解它是如何工作的。如果有人能启发我,我会很激动!
编辑1:
@Bahbar:很抱歉,这是一个错字。我在一台机器上输入代码,同时从另一台机器上读取代码。就像我说的,这一切都适用于固定功能管道。虽然 glEnableClientState 和 gl[Vertex|TexCoord]Pointer 已被弃用,但它们仍应与着色器一起使用,不是吗?glVertexPointer 而不是 glVertexAttribPointer 使用颜色而不是纹理。另外,我正在使用 glBindAttribLocation(位置为 0,texcoord 为 1)。
我仍在使用 glVertexPointer 的原因是我试图一次取消弃用一件事。
opengl - GLSL片段着色器中纹理到对象的普通映射
我在片段着色器中映射纹理时遇到问题。我有一个与窗口大小相同的纹理(我使用在前一次渲染中渲染的部分场景,但在下面的示例中使用砖纹理),我需要将其映射为 2D。有可能吗?我尝试了不同的方法,但没有任何效果。
你能告诉我片段着色器应该是什么样子吗?请任何建议都会有所帮助。谢谢!
linker - 添加附加函数调用时,WebGL 片段着色器无法链接
我有一个用于进行光线跟踪的 WebGL 片段着色器。我使用纹理传入球体和三角形数据。到目前为止,我已经有 2 个球体和 3 个三角形在工作。当我添加调用以检查与第四个三角形的相交时,着色器没有链接,调用getProgramInfoLog()
只返回 null。
片段着色器会变得太大吗?还是我需要寻找其他原因?我如何确定问题可能出在哪里?
这是一个代码片段,注释掉任何一个checkTriangleIntersection
调用都会导致着色器成功链接。
由于所有调用都是相同的,除了索引,我认为代码本身不会有任何问题,但是我可能会遇到某种限制吗?
在我添加额外的函数调用之前,我得到了超过 30 FPS,即使我添加了额外的调用,顶点和片段着色器都可以编译。