9得票1回答
如何在GLSL ES 1.0版本中声明一个返回数组的函数

以下是着色器方法: float[1] GetArray() { float array[1]; array[0] = 1.0; return array; } 给我以下内容的翻译: 错误:0:1:'GetArray':语法错误:数组大小必须出现在变量名之后。 ...

7得票1回答
THREE.js/GLSL: 使用WebGL着色器根据世界空间位置对片段进行着色

我看到过根据片段在屏幕空间或本地对象空间中的位置来解决颜色问题的方法,例如Three.js/GLSL - Convert Pixel Coordinate to World Coordinate。 这些方法使用屏幕坐标,并且随着相机移动或旋转而改变;或者仅适用于本地对象空间。 相反,我想要...

7得票1回答
GLSL ES精度错误和溢出问题

我有以下片段着色器: precision highp float; varying highp vec2 vTexCoord; uniform sampler2D uColorTexture; void main () { highp vec4 tmp; tmp = ((t...

11得票3回答
GLSL-ES中使用FP16限制的随机颗粒噪声

我正在尝试编写一个紧凑且简单的噪声函数,其严格限制为FP16。到目前为止,这是我写出来的代码,但我认为在某些操作中,数字对于fract或sin来说变得太小了,因为在GPU中,我必须将其写入这些FP16限制范围内。对于我做错了什么有什么想法吗?顺便说一句,我不能使用时间变量或样本噪声纹理。我需要...

18得票3回答
索引表达式必须是常量 - WebGL/GLSL 错误

我在片段着色器中使用非常量整数作为索引访问数组时遇到了困难。这里我已经删除了公式,因为即使在这里也不会有太多意义,但我的代码旨在根据当前像素计算tileID并使用它来确定颜色。 这是我的代码:int tileID = <Insert formula here>; vec3 co...

8得票3回答
GLSL ES 2.0逆矩阵

在glsl es 2.0中,没有逆命令。 但我看到可以使用1.0/mat2。但我担心它只会明智地分割组件。是这样吗?如果是这样的话,有什么技巧可以快速获得此内容(获取1/det)吗?

23得票3回答
在GLSL/WebGL中,如何将一个32位整数打包成4个8位整数?

我正在寻找一种并行化复杂数学运算的方法,WebGL看起来是最完美的方法。 问题在于,你只能从纹理中读取8位整数。 我希望能够从纹理中获得32位数字。 我的想法是使用4个颜色通道每像素获得32位,而不是4次8位。 我的问题在于,GLSL没有“%”运算符或任何按位运算符! 简而言之: 如何通过使用...

8得票2回答
在GLSL ES中的片段着色器中旋转纹理

我想在片元着色器中旋转纹理,而不是使用顶点着色器和矩阵变换。 旋转的中心点位于中心位置。 当渲染一个宽高比不为1的四边形时,该算法可以正确工作,但渲染结果会出现问题。有人能找出问题吗? 谢谢。 varying vec2 v_texcoord; uniform sampl...

9得票3回答
安卓Openg GL ES 2绘制大贴图速度慢

我对OpenGL非常陌生。 我正在尝试绘制带纹理的四边形(2个三角形)。纹理的大小为900x900像素。一个四边形没问题,但当我尝试绘制5-10个四边形时,会明显变慢。 可能是我做错了什么... 代码: public void onDrawFrame(GL10 gl) { GLES2...

7得票1回答
在Mac上GLSL着色器错误,但在Windows上没有:无法将'const int'转换为'4个浮点数的向量'。

我对着色器很陌生,昨天我开始尝试使用一些着色器。它们能够在我的 Windows 电脑上编译通过,但在 Mac 上运行时,两个着色器都会出现以下错误: 错误:0:14: '=' :无法将“const int”转换为“4 维的浮点向量” 在 Android 上只有第二个着色器给出了错误。它...