metal相关内容

如何在顶点/片段着色器(金属)中使用3x3 2D变换

我的任务很简单,但是显然我仍然不了解投影在着色器中的工作方式.我需要在一个纹理四边形(2个三角形)上进行2D透视变换,但是在视觉上看起来不正确(例如,梯形比CPU版本中的梯形稍微高些或拉伸得更多). 我有这个结构: struct VertexInOut { float4 position [[position]]; float3 warp0; float3 ..
发布时间:2020-05-09 02:07:51 移动开发

金属顶点着色器绘制纹理的点

我想执行Metal(或OpenGLES 3.0)着色器,该着色器通过混合绘制“点"基元.为此,我需要将纹理的所有像素坐标作为顶点传递给“顶点着色器",以计算要传递给片段着色器的顶点的位置.片段着色器仅在启用混合的情况下输出该点的颜色.我的问题是,是否有一种有效的方法是将顶点的坐标传递给顶点着色器,因为1920x1080图像的顶点过多,而在一秒钟内需要完成30次?就像我们通过使用dispatchTh ..
发布时间:2020-05-09 02:07:49 移动开发

在iPhone 6s的Swift 3中设置Metal

我一直在尝试转换Apple的 MetalBasicTessellation validateAttachmentOnDevice:347: failed assertion `MTLRenderPassDescriptor texture must be MTLTextureType2DMultisample when using a resolveTexture.' 我已经正确设置了ren ..
发布时间:2020-05-09 02:07:47 其他开发

Apple Metal API中的"setVertexBuffer:offset:atIndex:"问题

我是Apple Metal的新手,运行苹果示例代码"创建和采样纹理",我喜欢一个奇怪的东西,"图1 "是我的 Macmini 2018(GPU是Intel®UHD Graphics 630)的结果 >,您可以看到四边形的左下角受到挤压,原始源使用setVertexBuffer:offset:atIndex:设置顶点缓冲区,我将其替换为setVertexBytes:length:atIndex:并运 ..
发布时间:2020-05-09 02:07:43 其他开发

如何指定Metal Shader语言版本?

我的应用程序第三次获得Binary Rejected.崩溃日志没有帮助(我已将其符号化,但是它们不包含任何打印日志...). 在iPhone 6s,iPhone X和iPad Pro 12.9 上运行良好 我正在使用目标为iOS 11 的iOS 12进行测试 由于iOS版Metal无法在模拟器中运行,因此我尚未在iOS 11 上进行过测试 所以我得到了Crashlytics并获得 ..
发布时间:2020-05-09 02:07:34 移动开发

OpenGLES将代码混合到金属翻译

我对Metal拥有以下简单的OpenGLES混合代码: glBlendEquation(GL_FUNC_ADD); glBlendFunc(GL_ONE, GL_ONE); glEnable(GL_BLEND); 我用Metal编写了代码,但是如果它确实完成了同样的工作,我会感到困惑.具体来说,我是否需要提及alpha混合因子或否.因为我看到在Metal中此代码的性能比OpenGL ..
发布时间:2020-05-09 02:07:30 移动开发

如何编译两个版本的金属文件

我想同时支持10.13和10.14,但是我想在10.14上支持快速数学运算.如果我强制使用#define __CIKERNEL_METAL_VERSION__ 200,则仅能编译项目,但这意味着在10.13上它将崩溃.如何配置项目,以便创建2个金属库?到目前为止,结果文件为default.metallib(使用Xcode编译) BOOL supportsMetal; #if ..
发布时间:2020-05-09 02:07:24 移动开发

使用带有Scene Kit Shader修改器的Metal的自定义变量声明

我很难将制服传递给Scene Kit的着色器修改器.在使用OpenGL时似乎可以正常工作,而在使用Metal时则不能. 我以前曾经成功使用过SCNProgram,但想利用SceneKit的镶嵌细分功能,而不是为镶嵌细分设置计算着色器. 但是我想使用我已经在Metal中编写的代码,而不是使用OpenGL. 不幸的是,没有太多的例子来说明如何做到这一点. 这个Swift Playgrou ..
发布时间:2020-05-09 02:07:22 其他开发

Metal-线程本地的命名空间变量?

我正在尝试在Metal中创建一个伪随机数生成器(PRNG),类似于thrust的RNG,每次在线程内调用RNG 时,它都会产生不同的结果给定特定种子的随机数,在这种情况下为thread_position_in_grid.我已经将其设置得很完美,并且使用我已有的代码,现在我得到了一张漂亮的均匀随机图片. 但是,我的代码在每个线程中只能运行一次.我想实现一个next_rng()函数,该函数使用最 ..
发布时间:2020-05-09 02:07:18 C/C++开发

哪些是正确的矩阵值,可在SCNProgram传递的金属着色器中使用以获取正确的铬(如反射)

我正在开发一个应用程序,该应用程序应在天空盒内渲染一个镀铬风格的反射球形物体(使用六面立方体贴图). 我正在Swift中使用Scenekit通过不同的方法来做到这一点. 只要我让Scenekit完成所有工作即可,一切都很好并且得到了完美的体现(请参见下面的图1)-换句话说,使用具有金属度1.0,粗糙度0.0和颜色UIColor.white的标准SCNMaterial(使用.physic ..
发布时间:2020-05-09 02:07:15 其他开发

iOS 8.3-金属,展开一个可选值时发现为零

在Apple发布iOS 8.3之前,我的代码可以正常工作,但是由于更新的XCode抱怨找到了一个nil值,即使我的值都不为nil(我在调试时对此进行了验证). 出于理智,我重新编写了程序,使用Metal渲染了一个简单的三角形到屏幕上,但是抛出了同样的错误.我有一个由3个顶点组成的数组,然后将其乘以数组的大小即可得到缓冲区的大小,并传入OptionCPUCacheModeDefault,因为我 ..
发布时间:2020-05-09 02:07:07 移动开发

金属着色语言-更改缓冲区大小

是否可以在运行时更改缓冲区大小?我们在寄存器device: 期间分配缓冲区大小 device = MTLCreateSystemDefaultDevice() queue = device!.makeCommandQueue() do { let library = device!.newDefaultLibrary()! let ..
发布时间:2020-05-09 02:07:00 其他开发

Metal如何将图像块分配到每个线程组?

例如,如果要进行灰度转换,则需要以以下方式设置我的threadsPerGroup和线程组. NSUInteger maxTotalThreadsPerThreadgroup = [self.computePipelineState maxTotalThreadsPerThreadgroup]; MTLSize threadgroupCounts = MTLSizeMake(threadExe ..
发布时间:2020-05-09 02:06:52 其他开发

金属Alpha混合不起作用

无论出于何种原因,我都遇到金属中Alpha混合的问题.我要绘制一个MTKView,对于我创建的每个管道,请执行以下操作: descriptor.colorAttachments[0].blendingEnabled = YES; descriptor.colorAttachments[0].rgbBlendOperation = MTLBlendOperationAdd; descripto ..
发布时间:2020-05-09 02:06:48 移动开发

将SkeneKit场景捕获为视频

我正在将SceneKit与Metal(而非openGL)配合使用;希望允许用户录制他玩游戏的视频.有什么想法可以将场景渲染为视频吗? (无需录制场景音频,这可能会使它更简单) 解决方案 我认为我应该将其添加为答案: ReplayKit可以很好地完成工作,尽管它确实需要iOS9和支持Metal的设备(A7或更高版本).我从未使用过它,但是从我记得的WWDC 2015来看,它只需要设置几 ..
发布时间:2020-05-09 02:06:44 移动开发