--- ray/src/rt/otspecial.h 2024/12/09 00:44:29 2.11 +++ ray/src/rt/otspecial.h 2025/05/29 16:42:28 2.12 @@ -1,4 +1,4 @@ -/* RCSid $Id: otspecial.h,v 2.11 2024/12/09 00:44:29 greg Exp $ */ +/* RCSid $Id: otspecial.h,v 2.12 2025/05/29 16:42:28 greg Exp $ */ /* * Special type flags for objects used in rendering. * Depends on definitions in otypes.h @@ -13,13 +13,21 @@ extern "C" { #define T_TRANSP T_SP1 #define istransp(m) (ofun[(m)->otype].flags & T_TRANSP || \ (((m)->otype==MAT_WGMDF) & ((m)->oargs.nsargs > 5) \ - && strcmp((m)->oargs.sarg[5], "0"))) + && strcmp((m)->oargs.sarg[5], "0")) || \ + (((m)->otype==MAT_BRTDF) & ((m)->oargs.nsargs > 5) \ + && strcmp((m)->oargs.sarg[3], "0") | \ + strcmp((m)->oargs.sarg[4], "0") | \ + strcmp((m)->oargs.sarg[5], "0"))) - /* test for completely opaque materials */ + /* test for opaque (SHADOW) materials */ #define T_OPAQUE T_SP2 #define isopaque(m) (ofun[(m)->otype].flags & T_OPAQUE || \ (((m)->otype==MAT_WGMDF) & ((m)->oargs.nsargs > 5) \ - && !strcmp((m)->oargs.sarg[5], "0"))) + && !strcmp((m)->oargs.sarg[5], "0")) || \ + (((m)->otype==MAT_BRTDF) & ((m)->oargs.nsargs > 5) \ + && !strcmp((m)->oargs.sarg[3], "0") & \ + !strcmp((m)->oargs.sarg[4], "0") & \ + !strcmp((m)->oargs.sarg[5], "0"))) /* test if we have a BSDF proxy surface */ #define isBSDFproxy(m) (((m)->otype==MAT_BSDF) & ((m)->oargs.nsargs > 0) \