草庐IT

ios - 如何使用 Swift 将 Float uniform 传递给 iOS Metal 着色器?

我想将一个float传递给我的Metal着色器。我想不通。这是我的着色器:vertexfloat4model_vertex(unsignedintiid[[instance_id]]constantfloatangle){floatnumber=float(iid)/64.0;returnfloat4(number*sin(angle),number*cos(angle),0.0,1.0);}现在我想把它传递给着色器:letrenderPassDescriptor=MTLRenderPassDescriptor()letrenderEncoder=commandBuffer.rende

iOS12 导致 Metal Command Buffer 执行错误,渲染出现故障或不发生

我们有一个使用Metal进行渲染的应用程序。此应用程序可在运行iOS11的设备上正常运行。在运行iOS12的设备上使用相同的应用程序时,我们开始出现故障,有时会在渲染中挂起。我们还尝试为iOS12重新编译,但出现了同样的不良行为。在控制台上,我们收到以下不同的消息:2018-09-2209:22:29.508576-0500OurApp[1286:84481]Executionofthecommandbufferwasabortedduetoanerrorduringexecution.Discarded(victimofGPUerror/recovery)(IOAFcode5)201

ios - 当 alpha 值不是 1 或 0 时,Metal MTLTexture 会用黑色替换半透明区域

在使用Apple'stextureimporter时,或者我自己的,在渲染时用软件(带有透明背景)或在Photoshop(保存为PNG)中绘制的白色软边圆将在导入Metal时将其半透明颜色替换为黑色。下面是Xcode的Metal调试器的屏幕截图,您可以在发送到着色器之前看到纹理。Imagelocatedhere(I'mnothighrankedenoughtoembed)在Xcode、finder和放入UIImageView时,源纹理没有环。但是在UIImage->CGContex->MTLTexture过程中的某个地方(我特别考虑MTLTexture部分)透明部分变暗了。在过去的几天

iOS开发:Metal初探(画五角星+将图片3D化)

背景在WWDC2014上,Apple为游戏开发者推出了新的平台技术Metal,该技术能够为3D图像提高10倍的渲染性能,充分利用GPU的运算能力。在现阶段,AVFoundation、⼈脸识别等大量需要显示计算的时候,苹果采用了硬件加速器驱动GPU工作;在音视频方面,⾳频编码/解码/视频编码/解码->压缩任务都与硬件加速器分不开,苹果提供的Metal,能发挥GPU/CPU的最大性能,并且管理我们的资源,苹果想用metal替代opengl作为底层绘制框架。metal常见应用于一些游戏、滤镜、相机类的app。设备支持:iOS8以上,A7处理器以上,因此只有iphone5以上机型才支持metal,并且

iOS开发:Metal初探(画五角星+将图片3D化)

背景在WWDC2014上,Apple为游戏开发者推出了新的平台技术Metal,该技术能够为3D图像提高10倍的渲染性能,充分利用GPU的运算能力。在现阶段,AVFoundation、⼈脸识别等大量需要显示计算的时候,苹果采用了硬件加速器驱动GPU工作;在音视频方面,⾳频编码/解码/视频编码/解码->压缩任务都与硬件加速器分不开,苹果提供的Metal,能发挥GPU/CPU的最大性能,并且管理我们的资源,苹果想用metal替代opengl作为底层绘制框架。metal常见应用于一些游戏、滤镜、相机类的app。设备支持:iOS8以上,A7处理器以上,因此只有iphone5以上机型才支持metal,并且

iOS Swift使用metal播放透明视频

原来用GPUImage实现,采用的这篇博客介绍的方法,但是有两个比较严重的问题:App启动后第一次使用播放器时会造成主线程卡住1~5秒,越老的机型越长,第二次和以后就完全不卡,直到下次启动。这应该是GPUImage某处初始化造成的,我没有找到具体位置。播放某些视频时,画面中亮白色的位置会出现“过曝”导致看不清细节,原视频是正常的,我看了下着色器里面并没有调整颜色或者亮度,所以这应该是GPUImageMovie视频解码造成的。我只好搜了一下国外的做法,找到了medium上的这篇文章,它使用iOS自带的CoreImage处理每一帧图像,通过AVVideoComposition合成视频,滤镜用met

iOS Swift使用metal播放透明视频

原来用GPUImage实现,采用的这篇博客介绍的方法,但是有两个比较严重的问题:App启动后第一次使用播放器时会造成主线程卡住1~5秒,越老的机型越长,第二次和以后就完全不卡,直到下次启动。这应该是GPUImage某处初始化造成的,我没有找到具体位置。播放某些视频时,画面中亮白色的位置会出现“过曝”导致看不清细节,原视频是正常的,我看了下着色器里面并没有调整颜色或者亮度,所以这应该是GPUImageMovie视频解码造成的。我只好搜了一下国外的做法,找到了medium上的这篇文章,它使用iOS自带的CoreImage处理每一帧图像,通过AVVideoComposition合成视频,滤镜用met

关于ios:Metal vs GLSL CoreImage 性能

MetalvsGLSLCoreImageperformance在WWDC会话510中,Apple工程师提出了对在Metal中编码CIKernel的支持,并声称它应该工作得更快。我已经一起制作了一个测试项目,它在Metal和glsl中都实现了运动模糊(代码类似于510会话中的代码)。有时metalkernel更快,有时glslkernel更快,但我绝对看不到metalkernel执行一致性并且整体上明显更好。应该是这样吗,是不是漏了什么?注意:该项目不会在模拟器上运行,您需要A8供电设备。看起来其中一些与硬件有关。这是我的iPadPro10.5英寸结果:123456789101112131415

关于ios:Metal vs GLSL CoreImage 性能

MetalvsGLSLCoreImageperformance在WWDC会话510中,Apple工程师提出了对在Metal中编码CIKernel的支持,并声称它应该工作得更快。我已经一起制作了一个测试项目,它在Metal和glsl中都实现了运动模糊(代码类似于510会话中的代码)。有时metalkernel更快,有时glslkernel更快,但我绝对看不到metalkernel执行一致性并且整体上明显更好。应该是这样吗,是不是漏了什么?注意:该项目不会在模拟器上运行,您需要A8供电设备。看起来其中一些与硬件有关。这是我的iPadPro10.5英寸结果:123456789101112131415