| 845 | } |
| 846 | |
| 847 | inline Vec3fa Material__eval(ISPCMaterial** materials, unsigned int materialID, unsigned int numMaterials, const BRDF& brdf, const Vec3fa& wo, const DifferentialGeometry& dg, const Vec3fa& wi) |
| 848 | { |
| 849 | Vec3fa c = Vec3fa(0.0f); |
| 850 | auto id = materialID; |
| 851 | { |
| 852 | if (id < numMaterials) // FIXME: workaround for ISPC bug, location reached with empty execution mask |
| 853 | { |
| 854 | ISPCMaterial* material = materials[id]; |
| 855 | switch (material->type) { |
| 856 | case MATERIAL_OBJ : c = OBJMaterial__eval ((ISPCOBJMaterial*) material, brdf, wo, dg, wi); break; |
| 857 | case MATERIAL_METAL: c = MetalMaterial__eval((ISPCMetalMaterial*)material, brdf, wo, dg, wi); break; |
| 858 | case MATERIAL_REFLECTIVE_METAL: c = ReflectiveMetalMaterial__eval((ISPCReflectiveMetalMaterial*)material, brdf, wo, dg, wi); break; |
| 859 | case MATERIAL_VELVET: c = VelvetMaterial__eval((ISPCVelvetMaterial*)material, brdf, wo, dg, wi); break; |
| 860 | case MATERIAL_DIELECTRIC: c = DielectricMaterial__eval((ISPCDielectricMaterial*)material, brdf, wo, dg, wi); break; |
| 861 | case MATERIAL_METALLIC_PAINT: c = MetallicPaintMaterial__eval((ISPCMetallicPaintMaterial*)material, brdf, wo, dg, wi); break; |
| 862 | case MATERIAL_MATTE: c = MatteMaterial__eval((ISPCMatteMaterial*)material, brdf, wo, dg, wi); break; |
| 863 | case MATERIAL_MIRROR: c = MirrorMaterial__eval((ISPCMirrorMaterial*)material, brdf, wo, dg, wi); break; |
| 864 | case MATERIAL_THIN_DIELECTRIC: c = ThinDielectricMaterial__eval((ISPCThinDielectricMaterial*)material, brdf, wo, dg, wi); break; |
| 865 | case MATERIAL_HAIR: c = HairMaterial__eval((ISPCHairMaterial*)material, brdf, wo, dg, wi); break; |
| 866 | default: c = Vec3fa(0.0f); |
| 867 | } |
| 868 | } |
| 869 | } |
| 870 | return c; |
| 871 | } |
| 872 | |
| 873 | inline Vec3fa Material__sample(ISPCMaterial** materials, unsigned int materialID, unsigned int numMaterials, const BRDF& brdf, const Vec3fa& Lw, const Vec3fa& wo, const DifferentialGeometry& dg, Sample3f& wi_o, Medium& medium, const Vec2f& s) |
| 874 | { |
no test coverage detected