bouncemask
int bouncemask(string labels)
labels
一个标签或以空格分隔的标签列表。
返回值
匹配任意标签的位掩码。
Mantra使用着色组件标签来区分不同类型的光线,例如”diffuse”(漫反射)、“reflect”(反射)、“refract”(折射)、“volume”(体积)和”sss”(次表面散射)。自定义BSDF除了现有标签外还可以指定自己的标签(更多信息请参阅cvex_bsdf)。
某些VEX函数接受或返回一个组件位掩码,它使用整数的位来指定一个或多个这些标签的组合。
要获取与标签关联的位值,请使用bouncemask,例如bouncemask("diffuse")。要获取匹配多个标签的掩码,请使用空格分隔的列表:
reflect_or_refract = bouncemask("reflect refract")要构建匹配所有标签的位掩码,请使用bouncemask("all")。要匹配无标签,请使用0。
当您获得一个位掩码作为返回值时,可以使用&检查它是否匹配某个标签。例如:
mask = getbounces(mybsdf)if (mask & bouncemask("reflect")) { ...}(作为bouncemask()基本用途的替代方案,您可以#import "pbr.h"并使用常量PBR_DIFFUSE_MASK、PBR_REFLECT_MASK、PBR_REFRACT_MASK、PBR_VOLUME_MASK、PBR_SSS_MASK,以及PBR_ALL_MASK和PBR_NO_MASK。您可以使用|组合这些常量,例如reflect_or_refract = PBR_REFLECT_MASK | PBR_REFRACT_MASK。)