问题标签 [metal]

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

ios - 尝试将常量 float3x3 添加到着色器文件时出现编译器错误

我正在尝试将此代码添加到我的 Metal 语言文件中:

或这个

金属编译器给了我以下错误:

但是,如果我这样做

我没有得到任何编译错误。

任何想法出了什么问题?它也适用于矢量类型而没有问题:

直接在代码中定义常量矩阵的好方法是什么?

0 投票
1 回答
118 浏览

c++ - 缺乏着色器 C 兼容性重要吗?

我正在阅读使用 Metal 启动并运行,第 2 部分,尝试学习使用可用的最佳语言功能重写所有代码。其中一个特性是 C++ 构造函数,我很高兴能够在我的着色器中使用它,它来自 Cg 和 GLSL,它们缺少这个。

此代码在设备上运行良好,但我收到警告:

'vertex_main' 指定了 C 链接,但返回与 C 不兼容的用户定义类型 'ColoredVertex'

这有关系吗?我不知道为什么要指定 C-linkage。我也不知道如何禁用警告,这是我想做的,以及报告错误,如果没关系的话。

0 投票
1 回答
124 浏览

ios - 在 ios App 中添加金属支持作为可选渲染器

我正在开发一个带有 openGL ES 渲染的 iOS 应用程序。我们正在研究金属支持,我们在使用 ios 7.1 的设备上启动应用程序时遇到崩溃(我们针对 ios 7.1+ 设备)

dyld:库未加载:/System/Library/Frameworks/Metal.framework/Metal

看起来即使 Metal.framework 在我们的应用程序中仍未使用,应用程序也会尝试加载它并作为框架崩溃,而不是 ios7 的一部分。

只有在设备是 ios8+ 的情况下,我们如何才能动态链接金属框架?

0 投票
2 回答
609 浏览

ios - Ray tracer for complicated figures

I have implemented realtime ray tracer with MetalFramework for iOS and it is implemented for following optical prisms like dodecahedron, icosahedron, octahedron, cube, etc. All my figures are composed from triangles, for example cube - 12 triangles, octahedron - 4 triangles. I trace rays and search intersection with figure, then I search how ray moves in prism. Then ray leaves figure and I search intersection with skybox. The problem is in complicated figures. When I test cube fps is 60, but when I test dodecahedron fps is 6. In my algorithm intersection with figure is the same as intersection with any triangle. It means that when I check intersection with ray and figure I have to check intersection with all triangles. I need some idea how to do not check intersections for all triangles. Thanks.

0 投票
2 回答
244 浏览

ios - iOS Metal:启用用户交互

我正在尝试使用需要用户交互的 iOS 金属构建一个简单的应用程序。触摸屏幕后,屏幕上的焦点转移到触摸点。有点像 Zen Garden 应用程序,在触摸时,您会更靠近被触摸的点。任何关于使用什么方法或如何进行设计的想法/建议/讨论将不胜感激。

谢谢!

0 投票
1 回答
686 浏览

ios - 以 640x480@60fps 快速拍摄视频

我想使用最少的资源以 60fps 的速度捕获视频,因为我需要每帧最多使用 16-20 毫秒,并且大部分时间将被帧上的大量计算占用。

我目前正在使用预设AVCaptureSessionPreset1280x720,但我想以 640x480 进行计算,否则设备将跟不上。问题从这里开始:根据 Apple 允许开发人员执行的操作,我无法直接以 640x480@60fps 捕获,并且我当前的调整大小非常慢。

我正在使用金属内核着色器调整图像大小,但 98% 的时间(在 Instruments 中看到)都花在这两行上:

基本上在内存加载/存储指令中。这部分让我感到困惑,因为理论上内存在 iPhone 上的 CPU 和 GPU 之间共享。

你认为金属代码应该更快吗?我也有使用 Metal 的视频演示,它不会出汗(GPU 上约 1 毫秒,而调整大小需要约 20 毫秒)。

有没有更快的方法来调整图像大小?您对 Image I/O 的体验如何?

更新:

当我将工作组的大小增加到 22x22x1 时,图像大小调整的性能从 GPU 的 20 毫秒提高到了 8 毫秒。仍然不是我想要的,但更好。

更新 2:

我切换到CoreGraphics,它运行得足够快。看到这个帖子

0 投票
1 回答
5895 浏览

json - 使用 Mantle 解析 JSON - Swift

我正在使用 mantle 通过 Swift 解析 JSON 数据。JSON 文件的内容包括:

我创建了模型类,继承自 MTLJSONSerializing。“第一级类”是包含两个顶级对象数组。

就这样越来越深。

其他类的结构类似。(如有必要,我可以将它们全部发布在要点上。)

获取 JSON 数据的调用如下:

testDic 是上面发布的文件。

我为获取 json 数据所做的调用成功,我非常有信心问题出在我的数据模型中。字典的值是一个数组,所以我很有信心将它解析为一个数组。

我得到的错误是:

但是可用是此类的属性...

希望它足够清楚,如果您有任何问题,请随时提出。

我对解析JSON真的不熟悉,谢谢大家的帮助。

0 投票
0 回答
628 浏览

ios - 为什么这个金属着色器在 iPhone 6 上需要 20 毫秒?

我用 Metal 写了一个简单的点着色器,但它运行得很慢,只有 10K 点。所有顶点都在交错缓冲区中,它们具有 4 字节对齐的属性,但它仍然非常慢(>70ms CPU 和 ~20ms GPU)。顶点着色器大约需要 9 毫秒,而片段着色器需要 12-13 毫秒(!)。

撇开 CPU 不谈,这真的很奇怪,因为我只是在需要时重新加载缓冲区,你有没有看到任何可能损害 GPU 性能的东西?

更新

当我优化一个占用大量 CPU 的独立函数时,GPU 的使用率也下降了。现在整个着色器在大约 1 毫秒内执行。我很想知道 GPU 时间是否如此之高,因为它正在等待 CPU 执行下一个周期。

0 投票
2 回答
993 浏览

ios - 在 Metal 中访问 Mipmap 级别

我是 Metal 编程新手,我想知道如何访问纹理的特定 mipmap 级别。我可以使用 BlitEncoder 来完成 mipmapping,但我不太确定如何访问特定的 miplevels 以供我使用。

帮助将不胜感激。

0 投票
2 回答
2503 浏览

ios - iOS Metal:无法使用函数创建计算管道状态

我试图制作一个简单的应用程序,用于使用 iOS Metal Framework 在 GPU 上解决数独问题。

我按照这篇博文的说明进行操作:

http://memkite.com/blog/2014/12/15/data-parallel-programming-with-metal-and-swift-for-iphoneipad-gpu/

我在这里对我的代码进行版本控制:

(在撰写此问题时,HEAD 是提交 c3e06e0)

而且我在调用时遇到了错误

那是在 ViewController 中设置 MTLDevice 时(第 95 行):

我得到的错误是:

我在带有 iOS 8.1.3 的 iPhone 6 Plus 上运行它

有人知道什么会导致我收到错误吗?