void Post_Tnormal (TNORMAL *Tnormal) { int i; BLEND_MAP *Map; if (Tnormal != NULL) { if (Tnormal->Flags & POST_DONE) { return; } if (Tnormal->Type == NO_PATTERN) { throw POV_EXCEPTION_STRING("No normal type given."); } Tnormal->Flags |= POST_DONE; if ((Map = Tnormal->Blend_Map) != NULL) { for (i = 0; i < Map->Number_Of_Entries; i++) { switch (Map->Type) { case PIGMENT_TYPE: Post_Pigment(Map->Blend_Map_Entries[i].Vals.Pigment); break; case NORMAL_TYPE: Map->Blend_Map_Entries[i].Vals.Tnormal->Flags |= (Tnormal->Flags & DONT_SCALE_BUMPS_FLAG); Post_Tnormal(Map->Blend_Map_Entries[i].Vals.Tnormal); break; case TEXTURE_TYPE: Post_Textures(Map->Blend_Map_Entries[i].Vals.Texture); break; case SLOPE_TYPE: case COLOUR_TYPE: case PATTERN_TYPE: break; default: throw POV_EXCEPTION_STRING("Unknown pattern type in Post_Tnormal."); } } } } }
void NormalBlendMap::Post(bool dontScaleBumps) { POV_BLEND_MAP_ASSERT(Type == kBlendMapType_Normal); for(Vector::iterator i = Blend_Map_Entries.begin(); i != Blend_Map_Entries.end(); i++) { if (dontScaleBumps) i->Vals->Flags |= DONT_SCALE_BUMPS_FLAG; Post_Tnormal(i->Vals); } }