区块链技术博客
www.b2bchain.cn

WebGPU 规范篇 05 采样器求职学习资料

本文介绍了WebGPU 规范篇 05 采样器求职学习资料,有助于帮助完成毕业设计以及求职,是一篇很好的资料。

对技术面试,学习经验等有一些体会,在此分享。

系列博客目录传送门:https://xiaozhuanlan.com/topic/9587342601

  • GPUSampler:采样器
  • 采样器的创建
    • GPUAddressMode
    • GPUFilterMode


GPUSampler:采样器

GPUSampler 采样器对象,对着色器中的纹理资源进行过滤或者编码。

[Exposed=(Window, DedicatedWorker), SecureContext] interface GPUSampler { }; GPUSampler includes GPUObjectBase;

采样器的创建

通过 device.createSampler() 方法即可创建,这个方法一样需要一个对应类型为 GPUSamplerDescriptor 的参数对象。

dictionary GPUSamplerDescriptor : GPUObjectDescriptorBase {   GPUAddressMode addressModeU = "clamp-to-edge";   GPUAddressMode addressModeV = "clamp-to-edge";   GPUAddressMode addressModeW = "clamp-to-edge";   GPUFilterMode magFilter = "nearest";   GPUFilterMode minFilter = "nearest";   GPUFilterMode mipmapFilter = "nearest";   float lodMinClamp = 0;   float lodMaxClamp = 32;   GPUCompareFunction compare;   [Clamp] unsigned short maxAnisotropy = 1; };

其中,

  • 参数 addressModeUaddressModeVaddressModeWGPUAddressMode 枚举类型的,默认值均为 "clamp-to-edge",意义是纹理宽度、高度、深度三个方向上的填充模式,详见下文 GPUAddressMode 的解释;
  • 参数 magFilterminFiltermipmapFilterGPUFilterMode 枚举类型的,默认值均为 "nearest"。分别表示放大、缩小时的采样方式,以及 mipmap(多级纹理) 切换等级时的采样方式,详见下文关于 GPUFilterMode 的解释;
  • 参数 lodMinClamplodMaxClamp 指定细节层次的最大和最小级别,默认分别为 0、32,应该是对应的 Mipmap;
  • 参数 compare 类型是 GPUCompareFunction,如果指定这个参数,该采样器将变成一个具有指定比较功能的比较采样器;
  • 参数 maxAnisotropy 默认值是 1,表示采样器能用到的最大各向异性值,大多数对这个的实现是 1 到 16。各向异性有关概念见文末参考资料部分。

GPUAddressMode

enum GPUAddressMode {   "clamp-to-edge",   "repeat",   "mirror-repeat" };

这个其实就是填充方式,有兴趣的朋友可以自己设置一下 Windows 的壁纸。

clamp-to-edge 是超出原纹理外的像元,仍使用纹理边缘那一圈纹素,这里借用网友博客的图(WebGL实现):

WebGPU 规范篇 05 采样器

"repeat" 即纹理坐标超界(0~1)后仍在纹理上循环取值,所谓的“平铺式的重复纹理”,仍借助网友的博客图(WebGL 实现,双向都为 repeat):

WebGPU 规范篇 05 采样器

"mirror-repeat" 即超界后再倒回去继续对称取值,所谓的“镜像对称式的重复纹理”,这里便不再补充图片。

译者注:Clamp 这个单词,在名词上是钳子,动词或形容词词性上大致可以理解为“截取”、“切断”,即“得在什么什么范围内”。

GPUFilterMode

enum GPUFilterMode {   "nearest",   "linear" };

即放大缩小滤波器,指定纹理放大或缩小时如何采样。

"nearest" 是近邻采样算法,使用原纹理上映射后距离像素中心最近的那个像素的颜色值,作为新像素的值。

系列博客目录传送门:https://xiaozhuanlan.com/topic/9587342601

  • GPUSampler:采样器
  • 采样器的创建
    • GPUAddressMode
    • GPUFilterMode


GPUSampler:采样器

GPUSampler 采样器对象,对着色器中的纹理资源进行过滤或者编码。

[Exposed=(Window, DedicatedWorker), SecureContext] interface GPUSampler { }; GPUSampler includes GPUObjectBase;

采样器的创建

通过 device.createSampler() 方法即可创建,这个方法一样需要一个对应类型为 GPUSamplerDescriptor 的参数对象。

dictionary GPUSamplerDescriptor : GPUObjectDescriptorBase {   GPUAddressMode addressModeU = "clamp-to-edge";   GPUAddressMode addressModeV = "clamp-to-edge";   GPUAddressMode addressModeW = "clamp-to-edge";   GPUFilterMode magFilter = "nearest";   GPUFilterMode minFilter = "nearest";   GPUFilterMode mipmapFilter = "nearest";   float lodMinClamp = 0;   float lodMaxClamp = 32;   GPUCompareFunction compare;   [Clamp] unsigned short maxAnisotropy = 1; };

其中,

  • 参数 addressModeUaddressModeVaddressModeWGPUAddressMode 枚举类型的,默认值均为 "clamp-to-edge",意义是纹理宽度、高度、深度三个方向上的填充模式,详见下文 GPUAddressMode 的解释;
  • 参数 magFilterminFiltermipmapFilterGPUFilterMode 枚举类型的,默认值均为 "nearest"。分别表示放大、缩小时的采样方式,以及 mipmap(多级纹理) 切换等级时的采样方式,详见下文关于 GPUFilterMode 的解释;
  • 参数 lodMinClamplodMaxClamp 指定细节层次的最大和最小级别,默认分别为 0、32,应该是对应的 Mipmap;
  • 参数 compare 类型是 GPUCompareFunction,如果指定这个参数,该采样器将变成一个具有指定比较功能的比较采样器;
  • 参数 maxAnisotropy 默认值是 1,表示采样器能用到的最大各向异性值,大多数对这个的实现是 1 到 16。各向异性有关概念见文末参考资料部分。

GPUAddressMode

enum GPUAddressMode {   "clamp-to-edge",   "repeat",   "mirror-repeat" };

这个其实就是填充方式,有兴趣的朋友可以自己设置一下 Windows 的壁纸。

clamp-to-edge 是超出原纹理外的像元,仍使用纹理边缘那一圈纹素,这里借用网友博客的图(WebGL实现):

WebGPU 规范篇 05 采样器

"repeat" 即纹理坐标超界(0~1)后仍在纹理上循环取值,所谓的“平铺式的重复纹理”,仍借助网友的博客图(WebGL 实现,双向都为 repeat):

WebGPU 规范篇 05 采样器

"mirror-repeat" 即超界后再倒回去继续对称取值,所谓的“镜像对称式的重复纹理”,这里便不再补充图片。

译者注:Clamp 这个单词,在名词上是钳子,动词或形容词词性上大致可以理解为“截取”、“切断”,即“得在什么什么范围内”。

GPUFilterMode

enum GPUFilterMode {   "nearest",   "linear" };

即放大缩小滤波器,指定纹理放大或缩小时如何采样。

"nearest" 是近邻采样算法,使用原纹理上映射后距离像素中心最近的那个像素的颜色值,作为新像素的值。

系列博客目录传送门:https://xiaozhuanlan.com/topic/9587342601

  • GPUSampler:采样器
  • 采样器的创建
    • GPUAddressMode
    • GPUFilterMode


GPUSampler:采样器

GPUSampler 采样器对象,对着色器中的纹理资源进行过滤或者编码。

[Exposed=(Window, DedicatedWorker), SecureContext] interface GPUSampler { }; GPUSampler includes GPUObjectBase;

采样器的创建

通过 device.createSampler() 方法即可创建,这个方法一样需要一个对应类型为 GPUSamplerDescriptor 的参数对象。

dictionary GPUSamplerDescriptor : GPUObjectDescriptorBase {   GPUAddressMode addressModeU = "clamp-to-edge";   GPUAddressMode addressModeV = "clamp-to-edge";   GPUAddressMode addressModeW = "clamp-to-edge";   GPUFilterMode magFilter = "nearest";   GPUFilterMode minFilter = "nearest";   GPUFilterMode mipmapFilter = "nearest";   float lodMinClamp = 0;   float lodMaxClamp = 32;   GPUCompareFunction compare;   [Clamp] unsigned short maxAnisotropy = 1; };

其中,

  • 参数 addressModeUaddressModeVaddressModeWGPUAddressMode 枚举类型的,默认值均为 "clamp-to-edge",意义是纹理宽度、高度、深度三个方向上的填充模式,详见下文 GPUAddressMode 的解释;
  • 参数 magFilterminFiltermipmapFilterGPUFilterMode 枚举类型的,默认值均为 "nearest"。分别表示放大、缩小时的采样方式,以及 mipmap(多级纹理) 切换等级时的采样方式,详见下文关于 GPUFilterMode 的解释;
  • 参数 lodMinClamplodMaxClamp 指定细节层次的最大和最小级别,默认分别为 0、32,应该是对应的 Mipmap;
  • 参数 compare 类型是 GPUCompareFunction,如果指定这个参数,该采样器将变成一个具有指定比较功能的比较采样器;
  • 参数 maxAnisotropy 默认值是 1,表示采样器能用到的最大各向异性值,大多数对这个的实现是 1 到 16。各向异性有关概念见文末参考资料部分。

GPUAddressMode

enum GPUAddressMode {   "clamp-to-edge",   "repeat",   "mirror-repeat" };

这个其实就是填充方式,有兴趣的朋友可以自己设置一下 Windows 的壁纸。

clamp-to-edge 是超出原纹理外的像元,仍使用纹理边缘那一圈纹素,这里借用网友博客的图(WebGL实现):

WebGPU 规范篇 05 采样器

"repeat" 即纹理坐标超界(0~1)后仍在纹理上循环取值,所谓的“平铺式的重复纹理”,仍借助网友的博客图(WebGL 实现,双向都为 repeat):

WebGPU 规范篇 05 采样器

"mirror-repeat" 即超界后再倒回去继续对称取值,所谓的“镜像对称式的重复纹理”,这里便不再补充图片。

译者注:Clamp 这个单词,在名词上是钳子,动词或形容词词性上大致可以理解为“截取”、“切断”,即“得在什么什么范围内”。

GPUFilterMode

enum GPUFilterMode {   "nearest",   "linear" };

即放大缩小滤波器,指定纹理放大或缩小时如何采样。

"nearest" 是近邻采样算法,使用原纹理上映射后距离像素中心最近的那个像素的颜色值,作为新像素的值。

部分转自互联网,侵权删除联系

赞(0) 打赏
部分文章转自网络,侵权联系删除b2bchain区块链学习技术社区 » WebGPU 规范篇 05 采样器求职学习资料
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

b2b链

联系我们联系我们