问题标签 [metalkit]
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.
scenekit - 我从 SCNScene 创建了 MDLAsset。如何提取 MDLMesh、MDLCamera(s) 和 MDLLight?
我正在努力尝试遍历MDLAsset
通过加载SCNScene
文件 (.scn) 创建的实例。
我想识别和提取MDLMesh
s 以及相机和灯光。我认为没有直接的方法可以做到这一点。
例如,我在 MDLAsset 上看到了这个实例方法:
这是我用的吗?
我已经在 SceneKit 建模器中仔细标记了事物。我可以不参考那些理想的吗?当然,有一本我可以访问的 ids/labels 字典。我在这里想念什么?
更新 0
由于完全缺乏 Apple 文档,我不得不求助于 Xcode 调试器中的场景图。叹息...
一些东西。我看到了MDLMesh
,MDLSubmesh
这就是我所追求的。获取它的遍历方法是什么?灯光和相机也是如此。
我还需要知道顶点描述符的布局,以便与我的着色器同步。我可以在 parsed 上强制使用特定的顶点布局SCNScene
吗?
metal - 如何从 MDLMeshBufferData 中提取数据以填充 MTKMeshBuffer?
我需要从 MDLMeshBufferData 实例创建一个 MTKMeshBuffer 实例。这是一个代码片段:
这 ???是我需要填写的位。有人可以向我展示用于从 MDL 缓冲区中提取位以填充 MTK 缓冲区的正确 API 吗?
ios - 在金属中同时有纹理和无纹理,具有多重混合
我在金属中绘制了 2 个不同的顶点缓冲区,一个带有纹理(忽略顶点颜色数据),另一个没有纹理(仅绘制顶点颜色数据):
着色器如下所示:
这是有更好的方法吗?我想使用我设置为黑色的纹理的任何顶点,着色器检查颜色是否为黑色,如果是,则使用纹理,否则使用颜色。
另外,如果彩色多边形和纹理多边形在屏幕上重叠,有没有办法使用乘法函数将它们混合在一起?似乎 MTLBlendOperation 只有加/减/最小/最大选项,没有乘法?
c++ - 为什么 C++ 顶点函数中有两个括号 [?
我正在观看 Apple 关于 Metal 和 MetalKit 的介绍视频。
着色器的示例代码有这些双括号,如[[buffer(0)]]
参数。为什么有两个括号?这是什么意思,还是只是表明后面有关键字“缓冲区”?标准 C++ 中没有这样的结构,是吗?
另外,作为 GP-GPU 的介绍,什么是一个好的 1 或 2 周有趣的项目?对于具有良好数学技能但没有艺术技能的新手来说,这是可以管理的。
pointers - Metalkit:Swift 3 中的 MTLBuffer 和指针
我从 Metalkit 开始,我有一个非常简单的内核作为测试用例。
此“计算”数据存储在MTLBuffer
.
此时内核已将一些测试数据写入MTLBuffer
. 问题是我应该如何从我的主程序访问这些数据?
我unsafeMutableRawPointer
从buffer.contents()
. 如何获得可以在其他任何地方使用的快速值数组(显示在屏幕上,写入文件,...)?
这些片段在这个非常简单的应用程序中工作,但我不确定它们是否正确:
既bindMemory
和assumingMemoryBound
工作。虽然assumingMemoryBound
假设底层字节已经输入并且bindMemory
没有。我认为其中一个应该工作,但不能同时工作。应该是哪一个,为什么?
ios - 如何使用 metalkit 绘制 3D 线
我正在尝试在 iOS 中使用 metalkit 绘制 3D 线,我添加了两个顶点
我正在应用带有旋转角度的模态矩阵。
但这条线是连续旋转的,我尝试使用平移矩阵,但没有观察到差异。
实际上,我的任务是在 3D 中为增强现实画一条线,使用latitude
和longitude
沿它们的路径放置标记。
作为第一步,我正在尝试使用金属绘制 3D 线。请参考使用 metalkit 绘制 3D 线的任何示例,大多数示例都是三角形。
ios - 如何在 Metal 中将具有透明度的图像放在另一个图像上?
每当我尝试在 Metal 中对具有透明部分的图像进行 blit 处理时,透明部分都会被黑色替换。
需要明确的是,我的图像不包含任何半透明像素。它们要么是纯色的,要么是完全透明的。
我有一个简单的 ViewController 设置 Metal 并尝试 blit 2 图像。但是第二张图片的透明部分是黑色的,不会显示下面的第一张图片。
任何帮助将不胜感激!
swift - 使用 MetalKit 渲染文本
有没有办法在 MetalKit 中呈现文本?
我找到了这个链接(在 Obj.C 和 iOS8 中),我想知道是否有一个更新的例子可以显示在 Swift 中的 MetalKit 文本渲染?
还有什么可以帮助的是如何将 UIView 渲染到 MetalKit 中。有人知道一个例子吗?
glsl - 金属着色语言 - FragCoord 等价物?
我试图将这个 shadertoy 场景翻译成Metal Kernel
. 在着色玩具代码中:
以防万一OpenGL
,我们需要iResolution
从glfw
窗口发送。并且fragCoord
将从. gl_FragCoord
_Fragment Shader
我在metal
文件中有这个:
所以我可以iResolution
从width
and得到我的height
。但我不确定如何获得gl_FragCoord
.
Metal_stdlib
有相当于的东西吗gl_FragCoord
?或者如果我必须计算,我怎样才能获得相同的值?
swift - 启用混合使 renderPipelineState 无法在 MetalKit MTKView 中构建
我正在渲染一个在 metalkit 中有一些半透明区域(alpha < 1)的几何体MTKView
。如果isBlendingEnabled
在渲染管道状态的描述符中保留为 false,则所有内容都按应有的方式显示(尽管使用所有纯色)。
我知道渲染半透明对象取决于绘制顺序。目前,我只想测试 alpha 混合看起来像半透明区域与渲染缓冲区中已有的混合,即使它只是混合到背景(此时仍然只是清晰的颜色)。
但是,当我尝试启用混合时,makeRenderPipelineState
失败并出现以下错误:
编译器无法构建请求错误域=编译器错误代码=1“片段着色器未写入渲染目标颜色(0),混合所需的索引(1)”
这是尝试在 MTKView 的委托中构建管道状态的代码。它从 MTKView 继承属性的地方,我已将这些属性的值放在注释中
鉴于错误抱怨color(0)
,我将color[0]
绑定添加到片段着色器的输出中:
最后,绘制代码:
我没有在片段着色器中明确设置任何纹理。这是否意味着 currentDrawable 隐含地是索引 0 处的颜色附件?为什么要color(0)
在索引 1 处看到错误消息?混合是否需要两个颜色附件?(它不能只是添加到已经渲染的东西上吗?)
谢谢。