metal的基础知识入门,首推Metal By Example系列:http://metalbyexample.com/。博主的相关文章,主要给出工程实际遇到的典型问题及其解决方案。
(a)清晰 (b)高斯模糊
本节源码:https://github.com/sjy234sjy234/Learn-Metal/tree/master/GaussianBlurMPS。从第7节开始,渲染统一采用该节介绍的工程化渲染框架:https://blog.csdn.net/sjy234sjy234/article/details/82497799。
这一次,主要利用Metal Performance Shaders实现高斯模糊,并演示Metal Performance Shaders的基本用法。它实际上是一个基于metal通用计算的kernel核函数的封装,能够提供一些常见图像处理方法的核函数,如高斯模糊、图像直方图计算、索贝尔边缘检测算法等,方便开发者调用。这一节调用了高斯模糊的实现——MPSImageGaussianBlur,封装在一个GaussianBlurEncoder类中,它的用法非常简单,高斯模糊的概念大家自行科普。
初始化:
self.gaussianBlurKernel = [[MPSImageGaussianBlur alloc] initWithDevice: _metalContext.device sigma: sigma];
调用:
[_gaussianBlurKernel encodeToCommandBuffer: commandBuffer sourceTexture: srcTexture destinationTexture: dstTexture];
代码非常简单,项目不理解,可以翻看https://blog.csdn.net/sjy234sjy234/article/details/82353723和https://blog.csdn.net/sjy234sjy234/article/details/82497799。