问题标签 [vertex-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 回答
229 浏览

opengl - 任何 OpenGL 着色器拼写检查器?

我还没有找到一个工具来检查 OnpenGL 着色器上的文本拼写以用于 Eclipse 或其他。处理基于文本的着色器的拼写错误,例如:

是一项非常耗时的任务。

所以,我想知道是否有人知道某种有助于解决此问题的工具。

0 投票
1 回答
108 浏览

opengl-es - 当使用骨架矩阵进行漫反射/定向照明时,我的着色器应该是什么样子?

我在网上找到了如何执行漫射照明的示例,但我似乎找不到任何关于使用骨架矩阵时事情会如何变化的信息。

有人有我可以看的例子吗?

我专门以这个页面为例来学习扩散光照: http ://learningwebgl.com/blog/?p=684

0 投票
1 回答
911 浏览

opengl-es-2.0 - 使用顶点着色器将纹理移动到像素中心

我正在尝试将我的纹理移动到像素的中心,如此处所述OpenGL Texture Coordinates in Pixel Space但我正在努力这样做。我们试图以纹理为中心的像素还是在屏幕上?我们如何访问它们?这是我的顶点着色器:

我是开放 GL 的新手,刚刚开始研究顶点着色器,所以任何建议或提示将不胜感激。

编辑:我遇到的问题是,我的纹理中的像素在缩放时会变形。普通纹理看起来不错,但是当它们在 4x4 矩阵(模型视图矩阵)上使用 scaleM 命令缩放时,看起来随机行和列中有两列或两行相同的像素。

0 投票
1 回答
1478 浏览

c - OpenGL(在 Ubuntu 中):glGetError() 返回 GL_INVALID_OPERATION

对于 OpenGL 的学习,我指的是openglbook。目前在第 2 章中,我正在尝试运行粘贴在此处以供参考的代码。

我面临的问题是以下功能:

如上function( glew.h)所示,为什么会返回"GL_INVALID_OPERATION"
如果我评论这些行,那么它可以工作,但只会打印一个空白窗口。

这是我的glxinfo。由于我的版本是 2.2 并且此代码适用于 3.3+,因此我删除了以下代码以避免失败:

更新:在遵循@Tim 的回答建议后,我能够成功运行该程序;似乎这些行是创建问题:

“#version 400\n”(替换为“#version 130”)

布局(位置 = 0)(已删除)。布局(位置 = 1)(已删除)。

然而,由于这个原因,预期的三角形并不完全相同。可能本教程会考虑到最新的 opengl 版本,而我没有,这会产生问题。

有没有办法在不改变输出的情况下将代码从最新的 OpenGL (4.0+) 兼容代码修改为较低版本 (例如 < 3.0)?我将无法升级图形硬件。

0 投票
0 回答
1035 浏览

directx - 好像我的像素着色器没有被调用

我一直在搞乱 DirectX,而且我一直在研究我的这个奇怪的想法已经有一段时间了。似乎我的像素着色器由于某种奇怪的原因没有被调用。我不知道这是否可能,或者这是我的一些愚蠢的错误。代码如下(我从教程中复制了大部分内容。)

着色器(HLSL)代码如下:

DirectX 初始化和渲染代码如下:

什么都没有在屏幕上渲染,我应该看到点或一个大的白色补丁,但我看到的只是渲染目标已清除。我一直在运行 Pix,PreVS 和 PostVS 转换看起来不错。请帮忙!

0 投票
0 回答
771 浏览

shader - 来自多个纹理的 WebGL 逐帧动画

我目前正在制作一个原型,旨在创建一个由一系列快速交换图像制成的短片互动电影。我们计划在每一帧上应用鱼眼后处理效果,并利用 WebGL 将此计算卸载到 GPU 单元。可以在此处找到使用 WebGL 实时应用此效果的示例。

这里涉及的主要挑战是能够将大量 512x512px 图像(2000 张或更多图像)下载到用户浏览器中,并在生成的序列中保持可接受的帧率(5-10 fps 的帧率开始是可以接受的)。这是一个探索性实验,因此它只能与 Chrome 兼容,并且图像序列会根据用户输入而变化,因此无法预先将序列预渲染到视频中。用于纹理的每张图像的平均重量为 25KB,它将由一个强大的 CDN 提供服务,该 CDN 旨在应对所涉及的大量流量。

相对较短的预加载时间是可以接受的(60 秒或更短),以便在我们用最初的体验来娱乐用户的同时缓存一些图像。

这可能吗?任何人都可以在这方面提供帮助?

0 投票
4 回答
17589 浏览

webgl - 调用 glDisableVertexAttribArray() 重要吗?

我对启用顶点属性数组的范围并不完全清楚。我有几个不同的着色器程序,它们具有不同数量的顶点属性。glEnableVertexAttribArray着色器程序的调用是本地调用还是全局调用?

现在,我在创建着色器程序时启用了顶点属性数组,并且从不禁用它们,而且一切似乎都有效,但似乎我应该在绘制调用之前/之后启用/禁用它们。对此有影响吗?

(碰巧我在 WebGL 中,所以我们真的在谈论gl.enableVertexAttribArrayand gl.disableVertexAttribArray。我还要注意,橙皮书OpenGL Shading Language对这些调用非常缺乏信息。)

0 投票
4 回答
3704 浏览

c++ - 如何在 GLSL 中使用 4x4 矩阵作为顶点属性?

我正在尝试使用 4x4 矩阵作为顶点属性,使用以下代码:

但我在屏幕上看到的都是垃圾。

0 投票
1 回答
675 浏览

opengl - 我的用于 OpenGL 的 Go 矩阵函数(透视/截锥和观察矩阵)有什么问题?

首先,这是非常简单的“新手标准”顶点着色器:

现在我渲染的是一个简单的 6 面立方体。36 个顶点坐标中没有应用或固有的旋转。标准教程风格的 -0.5..+0.5 东西。我会在这里为您省去顶点数组,但请放心,就这么简单。

  • uMatModel现在只是单位矩阵,还没有缩放/平移/旋转
  • uMatView是一个LookAt 矩阵(下面的 Go 代码),用 pos={ 0.1, 0.1, -3.0 }, target={ ​​0.1, 0.1, 0.1 }, up={ 0, 1, 0 } 调用(记住立方体顶点坐标都是所有维度都在 -0.5 和 0.5 之间,因此 0.1 应该“几乎在中心”)
  • uMatProj是一个透视矩阵(下面的 Go 代码),以 fov=45 aspect=winwidth/winheight near=0.1 far=100 调用

理论上,“相机”应该在正对着它的立方体“后面”大约 2-3 个单位。相反,我得到...

在此处输入图像描述

我想知道轮换是从哪里来的……我什至还没有实施轮换。

因此,总而言之,我尝试在 Go 中自己实现所需的矩阵函数,并解决数学问题。但我一定在某个地方出了问题。任何人都可以在我的以下代码中发现任何矩阵理论问题吗?

注意,这里的Vec3是同一个包中的自定义类型,我这里没有包含。现在我假设 Vec3 函数是正确的(也更容易验证)并怀疑我以某种方式弄乱了矩阵结构中的LookAt和/或Perspective算法。

0 投票
1 回答
185 浏览

shader - 更改单行会导致着色器出错

我正在学习 3D 和着色器,我已经花了数周时间创建了一个着色器。

我在这个着色器中的一行有问题 - 评论一个并用另一个替换它会导致效果在IDirect3DDevice9::CreateVertexShader()调用时失败。所有字段都已设置,当我将所有boneTransforms和设置viewProj为身份矩阵时也会发生这种行为。正如我将看到的模型一样,更改这一行(已注释)将导致顶点着色器无法编译。为什么会这样?我花了几天时间调试这个,找不到原因!

谢谢!