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

ios - 如何使用 Metal 绘制弧线?

我浏览了一些关于 iOS Metal API 的教程,他们提到 Metal 中的所有内容都是三角形。在这种情况下,如果我想绘制弧线,我是否必须导入核心图形并使用它或者有没有办法做它使用金属?

谢谢。

0 投票
1 回答
448 浏览

ios - Metal ios中的递归

Metal 着色语言是否支持递归?我有代码:

但是当我构建使用它的内核函数时,它会发生错误。有任何想法吗?

0 投票
2 回答
871 浏览

ios - Metal中的多个MTLDevice实例

我们可以在 Metal 应用程序中声明多个设备吗?我声明了两个设备,device 和 defaultDevice。当我使用 defaultDevice 而不是 device 时,我在“展开时发现 nil ..”行出现异常。此外,是否有声明设备的约定。

谢谢。

0 投票
2 回答
6976 浏览

ios - iOS 金属线宽

我想设置我在 Metal 中绘制的线条的宽度。我可以使用 point_size 设置点的大小,如下所述:

https://developer.apple.com/library/prerelease/ios/documentation/Metal/Reference/MTLRenderCommandEncoder_Ref/index.html

但是,我不确定它如何与线条一起使用。

0 投票
1 回答
1181 浏览

ios - iPad 的交互式 3d 模型

类似于这个问题

适用于 iOS 的不带 WebGL 的交互式 3D 模型

我不想走 webview/javascript 路径。

我想要这样的东西

用 Swift 编写的原生 Metal 或 Scenekit。

我搜索了github,但没有遇到任何东西。

这甚至可能吗?通读 SDK,我看不到如何激活曲面、边或顶点。

0 投票
2 回答
4819 浏览

ios - Getting started with Metal

I'm an Objective-C / Swift software developer (in training) currently with an application in the App Store. But I have recently really been interested in Metal, Apple's new alternative to OpenGL. But I'm not exactly sure how to begin... Apple's documentation is handy, but only if you really know what you are doing in the first place. Are there any good tips to beginning? I really haven't explored the area of 3D game programming so would you recommend I learn another language first? And if so which?

I'm just looking for good tutorial books or sites that get in depth with the how and why. I like to understand what exactly I'm doing instead of just typing in code, but there are so many languages and beginner's books that I really don't know where to start... Can anyone help me with this?

0 投票
1 回答
722 浏览

ios - 未找到 CCRendererSharedTypes 文件

我正在尝试将项目中的 Cocos2D 升级到 3.4,但是我一直遇到同样的错误。在 CCShaders.metal 文件中,它指出未找到 CCRendererSharedTypes.h 文件。它肯定在我的项目中,所以我不确定为什么它找不到它。

我还确保标题搜索路径包括 cocos2d/cocos2d-ui 等(与示例项目相同的方式)

我通过替换 Xcode 中的文件手动从 3.1 升级,因为 Spritebuilder 更新方法对我不起作用并且没有更新我的任何文件。

有什么原因吗?我该如何解决?

0 投票
1 回答
2275 浏览

ios - iOS/Metal:如何从深度缓冲区中读取某个点?

我想从深度缓冲区中读取。在 OS XI 上的 GL 中可以执行以下操作:

(请注意,使用 iOS 上的 OpenGL ES,您无法从深度缓冲区中读取)

金属的等价物是什么?

看来我需要这样做:

然后以某种方式通过CPU从缓冲区中读取?

虽然也许有更好的方法,因为我只需要一个点(触摸的地方)。片段着色器能否仅存储该点的深度(或 2x2 用于双线性插值),从而允许我将 storeAction 保留为 MTLStoreActionDontCare?

0 投票
1 回答
1511 浏览

ios - ios metal:一个命令缓冲区中的多个内核调用

我在结合 Swift 在 Metal 中实现多个内核函数时遇到问题。

我的目标是在图像上实现逐块 DCT 转换。DCT 是通过两个矩阵乘法实现的。

J = H * I * H^-1

以下代码显示了内核函数本身以及 swift 代码中使用的调用。如果我单独运行每个内核函数,它可以工作,但我无法将写入缓冲区从第一个内核函数移交给第二个函数。因此,第二个函数总是返回一个只填充 0 的缓冲区。

所有图像输入和输出缓冲区都是 400x400 大的 RGB(每个组件为 16 位整数)。矩阵是 8x8 16 位整数。

是否需要特殊命令来同步不同内核函数的缓冲区读写访问?还是我做错了什么?

谢谢你的帮助

着色器.metal

ViewController.swift

0 投票
2 回答
2016 浏览

shader - 金属片段着色器中的像素坐标

我正在使用 Metal 编写一个 3D 应用程序。对于 3D 渲染,我需要控制每个像素。在普通屏幕中,这似乎与传递给着色器的 [[position]] 变量一起工作正常。但是在 Retina 显示器中,有一个缩放因子,每个屏幕坐标代表 2x2(或 3x3)像素。

让我以 iPhone 6 屏幕为例进行详细说明:屏幕坐标为 375x667,像素坐标为 750x1334。这是我的(测试)着色器代码:

使用上面的测试代码,我(完全)将屏幕的左半部分变为蓝色,将右半部分变为红色。这意味着 pcoord 来自 375x667 坐标系,而不是 750x1334。

问题:

  1. 是否会为每个像素坐标调用片段着色器?还是仅适用于每个屏幕坐标?

  2. 如果每个像素坐标都调用它,我如何访问片段着色器中的每个像素?

我对 pcoord.y (在我上面的代码中)进行了同样的尝试,结果相似。