博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
在Metal上实现对多通道feature map的双线性插值
阅读量:2446 次
发布时间:2019-05-10

本文共 1648 字,大约阅读时间需要 5 分钟。

kernel void resize_interpolation_array(                                  texture2d_array
inTexture [[texture(0)]], texture2d_array
outTexture [[texture(1)]], ushort3 gid [[thread_position_in_grid]]) { if (gid.x >= outTexture.get_width() || gid.y >= outTexture.get_height() || gid.z >= outTexture.get_array_size()) return; constexpr sampler s(coord::pixel, filter::nearest, address::clamp_to_zero); const ushort2 pos = gid.xy; const ushort slice = gid.z; float scale_x = float(inTexture.get_width())/float(outTexture.get_width()); float scale_y = float(inTexture.get_height())/float(outTexture.get_height()); float i = scale_x * float(pos.x+0.5)-0.5; //this is a trick float j = scale_y * float(pos.y+0.5)-0.5; //this is a trick float i_ceil = ceil(i); float i_floor = floor(i); float j_ceil = ceil(j); float j_floor = floor(j); half4 in; in = inTexture.sample(s, float2(pos.x , pos.y ), slice); half4 f00 = inTexture.sample(s,float2(i_floor,j_floor),slice); half4 f10 = inTexture.sample(s,float2(i_ceil,j_floor),slice); half4 f01 = inTexture.sample(s,float2(i_floor,j_ceil),slice); half4 f11 = inTexture.sample(s,float2(i_ceil,j_ceil),slice); float4 r1 =(i_ceil-i)*float4(f01) + (i-i_floor)*float4(f11); float4 r2 = (i_ceil-i)*float4(f00) + (i-i_floor)*float4(f10); float4 out = (j-j_floor)*r1 + (j_ceil -j)*r2; outTexture.write(half4(out), gid.xy, gid.z); }

Reference:

转载地址:http://tftqb.baihongyu.com/

你可能感兴趣的文章
css网格_在CSS网格中放置,跨度和密度
查看>>
火狐动态调试css_使用Firefox开发工具调试CSS网格
查看>>
服务周期性工作内容_使服务工作者生命周期神秘化
查看>>
响应式屏幕_检测角度的响应式屏幕尺寸
查看>>
nuxt.js 全局 js_在Nuxt.js应用中实现身份验证
查看>>
具有NgClass和NgStyle的Angular 2+类
查看>>
网络抓取_使用ScrapeStack轻松进行网络抓取
查看>>
koa express_Koa简介-Express的未来
查看>>
github请求超时_在GitHub中创建第一个请求请求
查看>>
JavaScript函数式编程介绍:使用map(),filter()和reduce()进行列表处理
查看>>
如何在Digital Ocean上托管Node.js应用
查看>>
构建自定义JavaScript Scrollspy导航
查看>>
laravel/dusk_Laravel Dusk简介
查看>>
react 身份证校验校验_使用用户身份验证构建React应用
查看>>
slim3框架 教程_SLIM 3入门,PHP微框架
查看>>
谷歌中阻止冒泡在火狐中失效_如何在Google表格中转换货币
查看>>
wps表格日期计算天数_如何计算Google表格中两个日期之间的天数
查看>>
如何使Linux控制台更易于Linux新手使用
查看>>
谷歌浏览器开发文档获取书签_使用书签更快地浏览Word文档
查看>>
如何在Apple Watch上启用和使用缩放
查看>>