问题标签 [webgl2]

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 投票
1 回答
177 浏览

webgl2 - 是否可以仅使用顶点着色器创建 WebGL 程序?

当我尝试链接仅附加了顶点着色器的 WebGL2 着色器程序时,出现“缺少着色器”错误。我正在尝试使用变换反馈,并且我认为由于顶点着色器的输出已被写出,因此不需要片段着色器。

从这篇博文:链接看来你应该能够做到这一点。WebGL 有什么我缺少的特别之处吗?

0 投票
0 回答
127 浏览

glsl - pack float into two bytes in WebGL2

I have deferred MRT render written in WebGL2. In one of standard (non float) destination textures I have two available byte components, say x and y. I want to pack and lately unpack a floating value with a range [0..100].

How to implement conversion forth and back between between float and two bytes components preserving as much precision as possible?

0 投票
1 回答
86 浏览

glsles - WebGL2 - 我可以查询具有非世界位置的阴影贴图立方体贴图吗?

我正在尝试使用 Webgl2 为点光源实现阴影贴图。为此,我使用深度缓冲区的立方体贴图,从灯光位置渲染 6 轴对齐的视图。

在我用来渲染光照的片段着色器中,我使用这些行查询这个立方体贴图:

请注意,lightPos 和 fragPos 在“视图”引用中,即:viewMat * worldMat * objPos. 在我所遵循的教程中,这应该处于世界位置(http://ogldev.atspace.co.uk/www/tutorial43/tutorial43.html)。现在,我不明白为什么我的方法行不通,因为无论它们的坐标表达的角度如何,两个位置的差异都应该是相同的,对吧?我得到的结果不是我所期望的,一切都在阴影中。我可能在其他地方犯了错误,但我想确定我理解它是如何工作的,并且错误不是来自这里。

0 投票
1 回答
2534 浏览

javascript - 带有 FLOAT 纹理的帧缓冲区上的 webGL 2 readPixels

是否可以将像素值检索为具有多个附件的帧缓冲区上的浮点数?(WebGL 2)

我试过这个:

使用浮动纹理设置如下:

然后我绑定帧缓冲区并调用 readPixels 来获取第一个附件的值:

没有浮动纹理,这项工作,但有浮动纹理,帧缓冲区保持不完整。

WebGL 2 规范似乎说这应该有效,但我现在有一些疑问,似乎 _gl.RGBA32F 似乎是问题所在,内部格式为 _gl.RGBA,它会产生不兼容的类型错误。

0 投票
1 回答
994 浏览

javascript - WebGL2中浮点纹理的线性过滤

我正在尝试在 WebGL2 中使用浮点纹理。我像这样初始化纹理:

在 Firefox 55.0.2(64 位)中,它给了我以下错误:

Error: WebGL warning: drawElements: Active texture 0 for target 0x0de1 is 'incomplete', and will be rendered as RGBA(0,0,0,1), as per the GLES 2.0.24 $3.8.2: Because minification or magnification filtering is not NEAREST or NEAREST_MIPMAP_NEAREST, and the texture's format must be "texture-filterable".

有了gl.NEAREST它,但我需要线性插值。

在 Chorme 60.0.3112.101 中它可以使用, gl.getExtension('OES_texture_float_linear');但我想在使用时WebGL2我不需要它。

0 投票
1 回答
2101 浏览

javascript - Webgl 2 中的透视投影(使用 gl-matrix)什么也没有显示,但没有它显示很好

我有以下 javascript 代码:

这会按预期在屏幕上正确输出一个三角形:

画布截图
画布截图

请注意,我实际上并没有在这里与透视矩阵进行任何乘法运算。我只是传递一个单位矩阵以表明没有它它可以正常工作。

现在当我换行时:

至:

我得到一个空的画布。

我浏览了网上的帖子,并尝试了一些建议,比如反转 Z。并摆弄近平面和远平面等。但它总是空输出。

透视矩阵有什么问题?即这里:

注意:我使用gl-matrix的 mat4 和 vec3 模块进行矩阵运算。

0 投票
0 回答
238 浏览

webgl2 - 使用 TWGL.js 除数错误的 Webgl2 实例绘制

我正在使用 Twgl.js 库来使用 webgl2

我有一个如下所示的数组,我正在使用它制作缓冲区并与 VAO 一起createBufferInfoFromArrays使用drawObjectList来绘制它,但是在我更改我的数组以使用一些无符号字节值而不是浮点数之后,我遇到了哪个 chrome 导致此错误的问题

更改前的数组:

更改后的数组

错误是说没有没有除数的缓冲区,但第一个(pos 缓冲区)没有除数!我错了什么?

提前致谢

0 投票
1 回答
736 浏览

webgl - 将深度渲染到纹理和采样器CubeShadow WebGL 2.0

我正在尝试使用 samplerCubeShadow 使 OpenGL 阴影映射代码适应 WebGL,并且我拼命系统地陷入死胡同,因为第一个和第二个之间的有效数据格式和存储显然不一样。

我知道我可以使用其他采样器而不是sampler*Shadow通过以其他方式渲染到纹理来实现阴影映射,但是,如果可能的话,我希望实现与我在 OpenGL 中相同的方式。

我的问题是找到(如果存在的话!)格式、内部格式以及 WebGL/GLSL 对 samplerCubeShadow 采样器的期望的良好组合......

1.问题:目标深度纹理格式。

在 OpenGL 中,我使用以下格式作为深度纹理:

GL_DEPTH_COMPONENT16, GL_DEPTH_COMPONENT, GL_FLOAT

但似乎 WebGL 唯一被接受的组合DEPTH_ATTACHEMENT

gl.DEPTH_COMPONENT16, gl.DEPTH_COMPONENT, gl.UNSIGNED_SHORT

我试过了gl.FLOATgl.HALF_FLOATtexImage2D拒绝了另一种类型gl.UNSIGNED_SHORT

它是 WebGL 中深度纹理的好格式吗?如果是,那么 WebGL 将深度数据存储在 16 位整数而不是浮点数中,这听起来很奇怪,但不是真正的问题,因为 16 位就是 16 位。它真的是 WebGL 中唯一可接受的深度纹理格式吗?

2.问题:纹理不可渲染

我可以毫无错误地绘制此纹理,但是,当将纹理绑定到我samplerCubeShadow的 .

texture bound to texture unit # is not renderable. It maybe non-power-of-2 and have incompatible texture filtering.

从此

要么我找到了一种“可渲染”的格式,但它不能用作DEPTH_ATTACHEMENT,或者我找到了一个合适的格式DEPTH_ATTACHEMENT,它不是“可渲染”的......那么,解决方案是什么?

伪代码:




编辑:在 OpenGL 代码中,目标深度纹理有一个额外的参数:

glTexParameteri(GL_TEXTURE_CUBE_MAP, GL_DEPTH_TEXTURE_MODE, GL_LUMINANCE);

但是,DEPTH_TEXTURE_MODEWebGL 中不存在 ......也许这是在 WebGL 中工作所缺少的?

0 投票
2 回答
9937 浏览

webgl2 - chrome 不支持 Webgl 2.0

我的 chrome 显示 Webgl 2.0 - 受支持,但在浏览器设置中被禁用,或被扩展程序阻止。我试过 1. 在 chrome://settings 中使用硬件加速 2. 在 chrome://flags 中启用 WEBGL 2.0 3. 覆盖软件渲染列表 .. 还有哪些其他选项可以从浏览器设置中启用 webgl 2.0?任何帮助深表感谢

0 投票
2 回答
2077 浏览

html5-canvas - 如何在webgl中画出完美的线条

我想用 webgl 画出完美的线条。我没有在渲染器上下文中设置任何东西。我应该启用或设置什么或提供什么选项canvas.getContext来帮助我画一条看起来不错的线?我认为使用线性和其他东西(我不知道)给我一条不像楼梯的线。

提前致谢。