public Shaders( DirectlyLitMaterialBase Direct,
                 IndirectlyLitMaterialBase Indirect,
                 EmissiveMaterialBase Emissive,
                 TranslucentMaterialBase Translucent,
                 NormalBase Normal )
 {
     this.Direct = Direct;
     this.Indirect = Indirect;
     this.Emissive = Emissive;
     this.Translucent = Translucent;
     this.Normal = Normal;
 }
        internal void Set( NormalBase Normal,
                           Point WorldHit, Point ModelHit,
                           Matrix ModelToWorld,
                           AdditionalData AdditionalData )
        {
            Debug.Assert( ModelToWorld != null );

            this.Normal = Normal;
            this.WorldHit = WorldHit;
            this.ModelHit = ModelHit;
            this.WorldToModel = ModelToWorld.Inverse;
            this.AdditionalData = AdditionalData;

            switch ( Normal.Type )
            {
                case NormalType.NormalizedModel:
                    this.Prenormalized = PrenormalizedTerm.Model;
                    break;
                case NormalType.NormalizedWorld:
                    this.Prenormalized = PrenormalizedTerm.World;
                    break;
                default:
                    this.Prenormalized = PrenormalizedTerm.None;
                    break;
            }

            this.WorldNormalValid = false;
            this.ModelNormalValid = false;
            this.NormalizedWorldNormalValid = false;
            this.NormalizedModelNormalValid = false;
        }