跳转到内容

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_MASKPBR_REFLECT_MASKPBR_REFRACT_MASKPBR_VOLUME_MASKPBR_SSS_MASK,以及PBR_ALL_MASKPBR_NO_MASK。您可以使用|组合这些常量,例如reflect_or_refract = PBR_REFLECT_MASK | PBR_REFRACT_MASK。)