问题标签 [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.
opengl - OpenGL变换反馈得到逆序结果
我尝试使用变换反馈功能,并制作了 2 个仅影响顶点位置的顶点着色器。
第一个是通过着色器,其中position out= position in ; 第二个是顶点位置的modelview-projection结果,其中position out= position in*mvp;
问题是:当我锁定转换反馈缓冲区并读取它时,我发现数据的顺序很奇怪。我的输入数据是一个vec3数组(自定义struct with 3 float),所以数据是x1,y1,z1;x2,y2,z2; x3,y3,z3;x4,y4,z4;x5,y5,z5; x6,y6,z6;...
但是我从变换反馈缓冲区中读取的结果是: x3,y3,z3,1; x2,y2,z2,1; x1,y1,z1,1; x6,y6,z6,1; x5,y5,z5,1; x4,y4,z4,1; 顺序每3个顶点反转一次,怎么会这样?!我完全不知道为什么在直通着色器期间顶点的顺序会改变......
actionscript-3 - 在低级 AGAL 中编码时,您是否需要为每个纹理创建一个新的 Program3D?
例如...
如果我正在开发一个需要多个纹理的应用程序(基本上是唯一的精灵),我是否需要为我希望在应用程序中使用的每个单独的纹理调用context3D.createProgram();
并组装一个新的Program3D
(带有 aVertexShaderAssembler
和 a )?FragmentShaderAssembler
Program3D
通常在引擎中如何工作?一个程序运行整个事情,还是每个纹理、模型、地图使用一个程序?
我是否正确地假设您只需要Program3D
在初始化时间 ( Event.ADDED_TO_STAGE
) 期间创建一次,而不是在每个帧 ( Event.ENTER_FRAME
) 期间创建一次,对吗?
xna - 绘制用户基元抱怨顶点着色器缺少 Color0
首先,我对 XNA 和 GPU 的工作方式以及它如何与 XNA(或 DirectX)API 协作是新手。
我有一个要使用 SpriteBatch 绘制的多边形。我正在对多边形进行三角剖分,并创建一个VertexPositionTexture
数组来保存顶点。我设置了顶点(为了简单起见,将纹理偏移向量设置为零),并尝试绘制图元,但出现此错误:
The current vertex declaration does not include all the elements required by the current vertex shader. Color0 is missing.
这是我的代码,我从三角测量中仔细检查了我的向量,它们很好:
我在这里可能做错了什么?
math - 在 OpenGL 中展开纹理
假设我有一个纹理映射到网格屏幕对齐的网格。它看起来像:
顶点位置为:
紫外线:
我通过在顶点周围移动来扭曲图像并通过执行glReadPixels()
.
新的扭曲顶点位置是:
产生的输出如下:
下次我使用刚刚保存的扭曲图像作为输入。我要做的是通过修改顶点坐标来反转我之前所做的翘曲效果。最初我认为解开图像的坐标必须是这样的:
但它不起作用。翘曲效果不会被撤销。我得到的是这样的:
知道我做错了什么,应该如何修改顶点坐标或 uvs?我确定我的数学错了。
谢谢!
更新
看来我的公式是错误的。我应该使用矩阵:
进而:
由于我正在做的转换是纯缩放,所以转换矩阵就像:
其中 S 是比例因子。因此,逆将是:
因此,这将使展开的顶点位置为:
看起来更直,但仍然不正确:
第二次更新
我似乎从一开始就错了。所有渲染中都有一些随机因素。我要解决这个问题,然后再试一次。
更新:UV 扭曲
这次使用 UV 翘曲完成。
使用这些 UV 扭曲:
这产生了:
然后尝试使用倒数展开:
看起来像:
这也没有做到。我开始担心我忽略的 1/0 案例。
完全无知。
webgl - webgl中的顶点和片段着色器值
我是 webgl 的新手。我想知道如何生成顶点和片段着色器值。我看到了一些样本,可以看到这些值的巨大数组。无法弄清楚这些值是如何生成的。是否有任何工具可以生成这些值。我错过了什么吗?没有教程解释如何创建这些着色器值。对此的任何帮助表示赞赏。
opengl - GLSL正交投影矩阵不像它应该的那样工作
当我尝试使用我的正交投影时,我没有得到我正在寻找的结果。我有一个 VBO,其中包含以下 2D 顶点和 texcoords(每隔一行):
目前,我使用glDrawArrays(GL_TRIANGLE_FAN, 0, 4);
VBO 似乎没有任何问题(我在 gDEBugger 中检查过)来绘制它们,而问题似乎在于顶点着色器。
这是有问题的着色器:
我对变换矩阵并不太熟悉,所以我现在正在学习,如果我想要正交投影,从我读到的上面的矩阵是正确的,这让我很困惑,因为我无法让它工作。
这是一个说明问题的图像:(请注意,纹理具有透明部分。)
编辑: 这是修改后的值:
3d - 顶点着色器是在裁剪之前还是之后调用的?
我以为答案应该在之前。但我有一个似乎与此相矛盾的着色器:
worldViewProj
是将世界位置转换为屏幕坐标的组合矩阵。我预计这个顶点着色器会将输出压缩到渲染目标的上半部分,实际上它确实这样做了——但是视图的下半部分会被更多的几何图形填充,这些几何图形通常是看不见的。
这仅仅是因为 GPU 的剔除非常粗糙吗?
opengl-3 - 任何想法如何使用顶点着色器实现 Sigma 镜头
我正在尝试使用着色器在 OpenGL 中实现Sigma 镜头,但遇到了一些问题。
我将纹理坐标传递给顶点着色器,并尝试对焦点区域和过渡区域进行空间变换。但这不起作用,我只得到原始图像。
这是顶点着色器的代码。
有什么我遗漏的吗,我刚刚开始学习 Opengl 和 GLSL,所以请任何想法表示赞赏。
谢谢
opengl-es-2.0 - 在多个程序中使用一个顶点/片段着色器
在 OpenGL ES 2.0 中,是否可以在多个链接程序中使用已编译的顶点/片段着色器?
例如,假设我有 1 个已编译的顶点着色器和 5 个已编译的片段着色器。我可以创建 5 个不同的程序(vsh1+fsh1、vsh1+fsh2 等)吗?
据我所知,这应该是可能的,但问一下也无妨。
谢谢
ios - 将投影矩阵添加到opengl es点精灵粒子效果顶点着色器
我一直在从 opengl es 2.0 编程指南中学习 opengl es。它们具有看起来像爆炸的粒子效果。我试图通过将 mat4 投影矩阵添加到顶点着色器来增强他们的示例代码,着色器编译并工作,但我在考虑投影的情况下获得定位效果时遇到问题。我的代码如下
我能够将投影添加到该行而没有任何错误,但不幸的是,这里并不真正需要它,因为该代码将 d=screen 的对象放在其生命周期的末尾
我也试过换线
至
但我没有运气让它按我的意愿放置
难道我做错了什么?或者这本书没有投影矩阵是有原因的,比如它不是有人应该用点精灵做的吗?
任何关于我应该研究的帮助或指示将不胜感激
谢谢
编辑:如果您需要我提供更多信息,请告诉我