enumclassaccess{sampler,read,write}
enumclasscoord{normalized,pixel}:从纹理中采样时,坐标是否需要归一化
enumclassfilter{nearest,linear}:纹理采用的过滤方式,放大(mag_filter)/缩小(min_filter)过滤
enumclassmip_filter{none,nearest,linear}:设置纹理采样使用mipMap方式,如果是none,则只有一层纹理生效
enumclassaddress{clamp_to_zero,clamp_to_edge,repeat,mirrored_repeat}:设置所有纹理坐标的寻址模式
enumclasss_address{clamp_to_zero,clamp_to_edge,repeat,mirrored_repeat}:设置所有纹理s坐标的寻址模式
enumclasst_address{clamp_to_zero,clamp_to_edge,repeat,mirrored_repeat}:设置所有纹理t坐标的寻址模式
enumclassr_address{clamp_to_zero,clamp_to_edge,repeat,mirrored_repeat}:设置所有纹理r坐标的寻址模式
注意:在Metal中初始化采样器必须使用constexpr修饰符修饰
Metal主要有3中函数修饰符
注意:
使用地址修饰符用来表示一个函数变量或者参数变量被分配到哪一片内存区域。所有的着色器函数的参数,如果是指针或者引用,都必须带地址空间修饰符。
devicefloat4*color;structFoo{floata[2];intb[2];}deviceFoo*info;threadgroup:线程组地址空间,用于并行计算着色函数分配内存变量,这些内存变量在线程组中被所有的线程共享;这些变量不能用于图形绘制着色函数(顶点着色函数、片元着色函数)
总结:对于图形着色函数来说,其指针或者引用类型的参数必须用device或者constant地址空间;对于并行计算着色函数,其指针或者引用类型的参数必须用device或者threadgroup或者constant地址空间修饰。