问题标签 [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.
opengl - OpenGL Texture3D FragmentShader 写入图层
我想过滤纹理(无 mipmapping)并将过滤后的级别写入 3D 纹理。我已经使用以下代码创建了一个 3D 纹理:
我像这样渲染我的模型:
有没有办法让片段着色器同时写入多个图层并知道你在哪一层?像这样?
PS:我需要知道片段着色器中的哪一层(一些过滤的东西&请不要gl_Layer ...只能在OpenGL 4上使用,我只能使用OpenGL 3)......我可以把它写成统一和多次渲染,但如果有一种方法可以一次性完成......那就太好了:)
opengl - OpenGL 分层渲染仅渲染零
我想创建一个火山碎屑体积并将其存储在 3D 纹理中。当我在 CPU 上执行此操作时,这没有问题。但是由于 CPU 对我的应用程序来说很慢,所以我想借助分层渲染在 GPU 上创建 3D 纹理。
现在的问题是我的总是被零填充。没有随机数据总是为零。这就是相关代码片段目前的样子:
和着色器:
我在做什么错/错过了什么?
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:
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.
opengl-es - OpenGL 在计算着色器中为 GL_TEXTURE_3D 混合颜色
我不确定这是否是驱动程序错误,但会发生以下情况:
计算着色器.glsl:
的颜色通道val
完全打乱:
- 阿尔法=蓝色
- 红色 = 红色
- 绿色=阿尔法
- 蓝色=绿色
主.cpp:
对此有什么合理的解释吗?注意:我不想使用黑客val.ragb
(如果存在的话)。
three.js - 来自 2D 图像的 webgl 3D 纹理,工作但存在渲染问题
我正在尝试在 WebGL 中使用 3D 纹理,但由于它目前不受本地支持,因此我必须使用 2D 图像的技巧。它由 64 张图片组成,每张图片大小为 64px x 64px(总共 64x4096)。我想发布一个链接,但我在 SO 上没有足够的 xp(真的吗?),你仍然可以在下面的小提琴中找到文件 url。
我使用了gman以及我自己(最近的邻居)的解决方案。在这两种情况下,当我使用倾斜投影 ( capture )时,我都会遇到灰色条纹伪影的奇怪渲染问题。
当投影倾斜时,条纹/短划线似乎出现在切片之间,并且根据相机位置,它们不会以相同的频率出现。这就是为什么我在考虑渲染问题而不是采样问题。
有谁知道如何摆脱这些文物?是否有一些内置的 OpenGL ES 东西可以启用/禁用?
这是着色器代码:
请注意,我使用 ThreeJS。谢谢你的帮助。
opengl-es - 用于 3D 纹理的片段着色器
我想使用片段着色器写回 3D-Sampler:有一个图像数组作为我的 opengl-es-应用程序的输入(作为统一 sampler3D),我想对其执行一些逐像素操作。我可以使用片段着色器来计算 3D 纹理的值吗?
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 之间?
opengl - 坐标系如何在 OpenGL 中用于 3D 纹理?
我正在尝试写入和读取 3D 纹理,但我的映射似乎是错误的。我已经使用 Render doc 来检查纹理,它们看起来还不错。
这种体积纹理的随机层如下所示:
所以只有一些蓝色表示缺席,一些绿色值表示存在。
我在写入每一层时计算的坐标在顶点着色器中计算为:
由于纹理本身看起来不错,因此这些坐标似乎可以很好地实现我的目标。
需要注意的是,现在 voxel_size 是 1,纹理的比例应该是 1 到 1 与场景尺寸。本质上,纹理中的每个像素代表场景中的一个 1x1x1 体素。
接下来我尝试按如下方式获取纹理值:
其中 vertexPos 是场景中的全局顶点位置。然而,z 坐标可能完全错误(我不确定我是否应该对深度分量进行归一化),但这不是唯一的问题。如果您查看最终结果:
存在水平滑动分量问题。由于每个纹素代表一个体素,因此立方体的颜色应该始终是固定颜色。但正如你所看到的,我在顶面上为单个立方体获得了多种颜色。所以我的水平刻度是错误的。
从纹理中获取纹素时我做错了什么?
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 对象的每个像素的颜色吗?不只是边缘?也许可以,但不显示?