Пример #1
0
 public static void ApplyUnitTransform(EffectMatrixVariable variable, LayerSettings settings, ObjectLayerSettings obj)
 {
     if (obj.Geometry != null)
     {
         if (obj.Geometry.HasBoundingBox)
         {
             Vector3 scale = obj.Geometry.BoundingBox.Maximum - obj.Geometry.BoundingBox.Minimum;
             scale.X = scale.X != 0.0f ? 1.0f / scale.X : 1.0f;
             scale.Y = scale.Y != 0.0f ? 1.0f / scale.Y : 1.0f;
             scale.Z = scale.Z != 0.0f ? 1.0f / scale.Z : 1.0f;
             Matrix m = Matrix.Scaling(scale);
             variable.SetMatrix(m);
             return;
         }
     }
     variable.SetMatrix(Matrix.Identity);
 }
Пример #2
0
 public static void ApplyBoundingScale(EffectVectorVariable variable, LayerSettings settings, ObjectLayerSettings obj)
 {
     if (obj.Geometry != null)
     {
         if (obj.Geometry.HasBoundingBox)
         {
             variable.Set(obj.Geometry.BoundingBox.Maximum - obj.Geometry.BoundingBox.Minimum);
             return;
         }
     }
     variable.Set(new Vector3(1, 1, 1));
 }
Пример #3
0
 public static void ApplyDrawIndexFloat(EffectScalarVariable variable, LayerSettings settings, ObjectLayerSettings obj)
 {
     variable.Set((float)obj.DrawCallIndex);
 }
Пример #4
0
 public static void ApplyWorldViewProjection(EffectMatrixVariable variable, IViewProjectionSettings settings, ObjectLayerSettings obj)
 {
     variable.SetMatrix(obj.WorldTransform * settings.ViewProjection);
 }
Пример #5
0
 public static void ApplyWorldInverseTranspose(EffectMatrixVariable variable, IViewProjectionSettings settings, ObjectLayerSettings obj)
 {
     variable.SetMatrix(Matrix.Transpose(Matrix.Invert(obj.WorldTransform)));
 }
Пример #6
0
 public static void ApplySDFTransform(EffectMatrixVariable variable, LayerSettings settings, ObjectLayerSettings obj)
 {
     if (obj.Geometry != null)
     {
         if (obj.Geometry.HasBoundingBox)
         {
             Vector3 min   = obj.Geometry.BoundingBox.Minimum;
             Vector3 scale = obj.Geometry.BoundingBox.Maximum - obj.Geometry.BoundingBox.Minimum;
             scale.X = scale.X != 0.0f ? scale.X : 1.0f;
             scale.Y = scale.Y != 0.0f ? scale.Y : 1.0f;
             scale.Z = scale.Z != 0.0f ? scale.Z : 1.0f;
             Matrix m = Matrix.Scaling(scale);
             m.M41 = min.X;
             m.M42 = min.Y;
             m.M43 = min.Z;
             variable.SetMatrix(Matrix.Invert(m));
             return;
         }
     }
     variable.SetMatrix(Matrix.Identity);
 }