问题标签 [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 回答
160 浏览

framebuffer - 如何在帧缓冲区中为 3DTexture 的一层渲染单个像素?

我有一个 4x4x4 3DTexture,我正在初始化并正确显示它以着色我的 4x4x4 顶点网格(请参阅带有一个白色像素 - 0,0,0 的附加红色网格)。

在此处输入图像描述

但是,当我在帧缓冲区中渲染 4 层(使用 gl.COLOR_ATTACHMENT0 --> gl.COLOR_ATTACHMENT3 一次全部四个层时,我的片段着色器成功渲染了层上的 16 个像素中的 4 个(变为绿色)。

在此处输入图像描述

当我只使用 gl.COLOR_ATTACHMENT0 做一层时,相同的 4 个像素显示为 1 层正确更改,而其他 3 层保持原始颜色不变。当我将 gl.viewport(0, 0, size, size) (在此示例中为 size = 4)更改为整个屏幕之类的其他内容,或者大小不超过 4 时,会写入不同的像素,但不会超过 4 . 我的目标是精确地单独指定每一层的所有 16 个像素。我现在使用颜色作为学习经验,但纹理实际上是用于物理模拟的每个顶点的位置和速度信息。我假设(错误的假设?)有 64 个点/顶点,我正在运行顶点着色器和片段着色器各 64 次,每次调用着色一个像素。

我已经从着色器中删除了除重要代码之外的所有代码。我没有改变javascript。我怀疑我的问题是初始化并错误地传递了顶点位置数组。

然后我使用 bufferInfo 如下:

顶点着色器:calc_vertex:

片段着色器:calc_fragment:

0 投票
1 回答
305 浏览

framebuffer - 如何保持粒子之间的协调以及哪个纹理像素包含每个人的信息?

以 4x4x4 网格为例,我有 64 个顶点(我称之为粒子),它们从相对于彼此的特定位置开始。这 64 个粒子将在 x、y 和 z 方向上移动,失去它们相对于彼此的初始位置。然而,每个周期,新的粒子位置和速度都需要根据粒子与其原始邻居之间的原始起始关系来计算。

我了解到我需要为此使用纹理,因此需要使用帧缓冲区,现在我可以编写两个 3DTexture 触发器来提供执行此操作的写入和读取功能。但是,在下一个循环中,当 gl_FragCoord 被传递给片段着色器时,粒子的新位置(例如可以用另一个粒子切换),我看不到任何机制可以使保存粒子的纹理的原始坐标信息将与粒子的当前信息一起写入。是否有一些我不理解的机制允许移动粒子将它们的数据存储在静态网格(3D 纹理)中,每个粒子的数据总是填充相同的坐标,所以我可以使用 texelFetch 来获取粒子的数据,以及原始邻居的数据?我可以更改 gl_FragCoord,

一旦我解决了这个问题,我希望实现一个变换反馈来执行顶点的实际移动,而不会将纹理转储到 CPU 并提取位置数据并将其重新上传到 GPU 以供下一个周期使用。

对于如何使用帧缓冲区中编写的纹理来跟踪每个粒子的原始位置、原始邻居以及相对于那些原始邻居的当前位置,是否有任何建议?

0 投票
0 回答
106 浏览

metal - 如何在金属上创建 astc 压缩切片 3d 纹理?

我从一些来源(如此链接:https ://metalbyexample.com/new-in-metal-3/ )了解到 iOS 13 支持 3D ASTC 纹理。但是,在苹果的开发文档(https://developer.apple.com/documentation/metal/mtltexture/1515679-replace)中,它仍然说“您不能使用带有 MTLTextureType.type3D 纹理的压缩像素格式。”。

金属真的支持 astc 3d 纹理吗?如果是这样,我该如何创建一个?

0 投票
1 回答
84 浏览

ios - iOS 金属 3d 纹理采样方法是三线性的吗?

我正在使用颜色查找表来创建 3d 纹理,并使用输入颜色来查找输出颜色。但我发现输出颜色有一些中断层。这个采样器是否使用三线性采样 3d 纹理?

这是我创建 3d 纹理的代码

lutData是一个由 r、g、b、a、r、g、b、a、...组成的数组。

lutSize是查找表的大小,它是 32 或 64。

在我的着色器中,我只想像这样对其进行采样。

我正在尝试不同的 filter::xxxx 没有任何帮助。

这是一个很好的结果,插值非常平滑。

伊姆古尔

这是 3d 纹理样本的不良结果。

伊姆古尔

0 投票
0 回答
1261 浏览

blender - Blender 显示纯色而不是纹理

我对 Blender 很陌生(我使用 Blender 2.8.3)。我给我的对象一些纹理,但我不知道为什么纹理不会显示在视口中和渲染它时。我的项目. 但是,其他纹理 ( 从 Blender OSM 生成的那个) 没有问题。我已经从https://artisticrender.com/blender-viewport-shading-guide/尝试过这种方式。但我认为已经有了我的材质预览模式下的视口模式(或者我没有?)。提前谢谢你。

最常见的问题是我们看不到我们添加到着色器中的纹理或颜色。这通常是因为我们仍然停留在实体视口模式中。要解决此问题,只需在 3D 视口右上角从实体视口模式更改为材质预览模式即可。材质视口模式将设置一个没有阴影的默认照明,以便您可以完整地看到您的材质。还有一些与此视口模式相关的设置,我们将在后面介绍。