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

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

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

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

17得票3回答
WebGL现在支持1D纹理吗?

我一直在努力寻找一个明确的答案,但似乎没有人清楚地提出这个问题。 我能在WebGL Chrome、Firefox、Safari、IE等浏览器中使用1D采样器和1D纹理吗? 编辑 可以理解为1确实是2的幂(2^0=1),这意味着您可以使用高度为1、宽度为256或512等的2D采样器和纹理来...

12得票2回答
当切换到GLSL 300时,遇到了以下错误。

当我切换到使用OpenGL ES 3和GLSL 300时,我的片元着色器遇到了以下错误 未声明标识符gl_FragColor 当使用GLSL 100时,一切正常。

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

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

11得票1回答
在编写着色器程序时,我应该避免创建多个变量吗?

我现在开始学习着色器(HLSL,GLSL),看了很多教程,发现很少创建变量,这使得阅读变得更加困难。我想知道创建新变量是否会影响着色器的性能。 例如,在CG中: 这个 inline float alphaForPos(float4 pos, float4 nearVertex){...

9得票3回答
Three.js - 如何在一个 PointCloud 中使用多个纹理

我将使用ShaderMaterial以单个PointCloud中使用多个纹理。我会向着色器传递一个纹理数组以及纹理索引属性,并在片段着色器中选择要使用的适当纹理。 相关设置代码: var particleCount = 100; var uniforms = { textures...

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

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

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

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

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

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