问题标签 [3d-texture]

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 回答
758 浏览

opengl - OpenGL Texture3D FragmentShader 写入图层

我想过滤纹理(无 mipmapping)并将过滤后的级别写入 3D 纹理。我已经使用以下代码创建了一个 3D 纹理:

我像这样渲染我的模型:

有没有办法让片段着色器同时写入多个图层并知道你在哪一层?像这样?

PS:我需要知道片段着色器中的哪一层(一些过滤的东西&请不要gl_Layer ...只能在OpenGL 4上使用,我只能使用OpenGL 3)......我可以把它写成统一和多次渲染,但如果有一种方法可以一次性完成......那就太好了:)

0 投票
1 回答
113 浏览

opengl - OpenGL 分层渲染仅渲染零

我想创建一个火山碎屑体积并将其存储在 3D 纹理中。当我在 CPU 上执行此操作时,这没有问题。但是由于 CPU 对我的应用程序来说很慢,所以我想借助分层渲染在 GPU 上创建 3D 纹理。

现在的问题是我的总是被零填充。没有随机数据总是为零。这就是相关代码片段目前的样子:

和着色器:

我在做什么错/错过了什么?

0 投票
1 回答
988 浏览

opengl - How to use the hardware's 3D texture sampling with a flipbook style volume texture?

A question sort of addressing the problem and another question asking a related question.

I have a 2D texture that has 12x12 slices of a volume layered in a grid like this: enter image description here

What I am doing now is to calculate the offset and sampling based of the 3D coordinate inside the volume using HLSL code myself. I have followed the descriptions found here and here, where the first link also talks about 3D sampling from a 2D sliced texture. I have also heard that modern hardware have the ability to sample 3D textures.

That being said, I have not found any description or example code that samples the 3D texture. What HLSL, or OpenGL, function can I use to sample this flipbook type of texture? If you can, please add a small example snippet with explanations. If you cant, pointing me to one or the documentation would be appreciated. I have found no sampler function where I can provide the number of layers in the U and V directions so I dont see how it can sample without knowing how many slices are per axis.

If I am misunderstanding this completely I would also appreciate being told so.

Thank you for your help.

0 投票
1 回答
301 浏览

opengl-es - OpenGL 在计算着色器中为 GL_TEXTURE_3D 混合颜色

我不确定这是否是驱动程序错误,但会发生以下情况:

计算着色器.glsl

的颜色通道val完全打乱:

  • 阿尔法=蓝色
  • 红色 = 红色
  • 绿色=阿尔法
  • 蓝色=绿色

主.cpp

对此有什么合理的解释吗?注意:我不想使用黑客val.ragb(如果存在的话)。

0 投票
1 回答
491 浏览

three.js - 来自 2D 图像的 webgl 3D 纹理,工作但存在渲染问题

我正在尝试在 WebGL 中使用 3D 纹理,但由于它目前不受本地支持,因此我必须使用 2D 图像的技巧。它由 64 张图片组成,每张图片大小为 64px x 64px(总共 64x4096)。我想发布一个链接,但我在 SO 上没有足够的 xp(真的吗?),你仍然可以在下面的小提琴中找到文件 url。

我使用了gman以及我自己(最近的邻居)的解决方案。在这两种情况下,当我使用倾斜投影 ( capture )时,我都会遇到灰色条纹伪影的奇怪渲染问题。

当投影倾斜时,条纹/短划线似乎出现在切片之间,并且根据相机位置,它们不会以相同的频率出现。这就是为什么我在考虑渲染问题而不是采样问题。

有谁知道如何摆脱这些文物?是否有一些内置的 OpenGL ES 东西可以启用/禁用?

这是着色器代码:

这是小提琴

请注意,我使用 ThreeJS。谢谢你的帮助。

0 投票
0 回答
314 浏览

opengl-es - 用于 3D 纹理的片段着色器

我想使用片段着色器写回 3D-Sampler:有一个图像数组作为我的 opengl-es-应用程序的输入(作为统一 sampler3D),我想对其执行一些逐像素操作。我可以使用片段着色器来计算 3D 纹理的值吗?

0 投票
2 回答
829 浏览

opengl - 使用 GL_TEXTURE_3D

我正在尝试读取一个文件,该文件表示要在渲染体积时映射到颜色的值。即,每个体素在输入文件中都有其颜色表示。这里它遵循一个虚拟测试文件:

它应该定义一个顶部为黑色的值,然后是白色层、黑色层和白色。

我是这样读的:

这就是我创建纹理的方式:

这些是将用于构建我的 VAO 的值:

最后,这是我的着色器:

  1. 顶点着色器:

.

  1. 片段着色器:

.

加载制服和属性值后,我绘制体积:

但是,我得到的只是一个空白卷:

在此处输入图像描述

我不知道如何正确设置纹理坐标以及如何正确实现这种情况下的片段着色器。

0 投票
2 回答
1579 浏览

opengl-es - 在 OpenGL ES 3.x 中使用 Sampler3D 从 3D 纹理中读取

我正在使用 OpenGL ES 3.2 从片段着色器中的 3D 纹理读取并将该值写入 FBO。然后我使用 glReadPixels 从 FBO 附件中读取,并打印出获得的值。

我将采样器附加为:

在着色器中,我从纹理中读取为:

从纹理读取时,我只能从 z 坐标为 0 的值读取。从任何其他深度读取值会给出垃圾值或 NAN。

3D 纹理不应该允许我使用 (x, y, z) 值作为纹理坐标,其中 x、y甚至 z可以介于 0.0 和 1.0 之间?

0 投票
0 回答
521 浏览

opengl - 坐标系如何在 OpenGL 中用于 3D 纹理?

我正在尝试写入和读取 3D 纹理,但我的映射似乎是错误的。我已经使用 Render doc 来检查纹理,它们看起来还不错。

这种体积纹理的随机层如下所示:

在此处输入图像描述

所以只有一些蓝色表示缺席,一些绿色值表示存在。

我在写入每一层时计算的坐标在顶点着色器中计算为:

由于纹理本身看起来不错,因此这些坐标似乎可以很好地实现我的目标。

需要注意的是,现在 voxel_size 是 1,纹理的比例应该是 1 到 1 与场景尺寸。本质上,纹理中的每个像素代表场景中的一个 1x1x1 体素。

接下来我尝试按如下方式获取纹理值:

其中 vertexPos 是场景中的全局顶点位置。然而,z 坐标可能完全错误(我不确定我是否应该对深度分量进行归一化),但这不是唯一的问题。如果您查看最终结果:

在此处输入图像描述

存在水平滑动分量问题。由于每个纹素代表一个体素,因此立方体的颜色应该始终是固定颜色。但正如你所看到的,我在顶面上为单个立方体获得了多种颜色。所以我的水平刻度是错误的。

从纹理中获取纹素时我做错了什么?

0 投票
1 回答
843 浏览

ios - iOS Metal API 在体积内绘制 3d 纹理

所以,我正在尝试用 3d 纹理渲染一个立方体。纹理包含 3 片 3 种不同的颜色,红绿蓝。每个切片由具有相同颜色的 4 个像素组成。工作正常。https://imgur.com/a/a5oXi

片段着色器代码:

然后我想让红色和蓝色切片透明,所以我设置 alphas 等于 0

片段着色器现在包含

并希望看到绿色的切口,但我只看到绿色边缘https://imgur.com/a/yGQdQ

立方体内部没有任何东西,我什至看不到后边缘,因为 cullMode 设置为 .front。

我可以绘制并查看对象内的纹理,以便我可以看到它的内部吗?到目前为止我还没有找到方法。不是当我将纹理类型设置为 3d 时,它应该计算 3D 对象的每个像素的颜色吗?不只是边缘?也许可以,但不显示?