public override bool ShouldCull(VertexShader.VertexShaderOutput[] vertices) { var a = vertices[0].Position; var b = vertices[1].Position; var c = vertices[2].Position; var ab = Number4.Subtract(ref b, ref a); var ac = Number4.Subtract(ref c, ref a); var l0 = new Vector3ForCulling(ab.X, ab.Y, ab.Z); var l1 = new Vector3ForCulling(ac.X, ac.Y, ac.Z); l0.Normalize(); l1.Normalize(); var normal = Vector3ForCulling.CrossZ(ref l0, ref l1); return RasterizerState.ShouldCull(normal > 0); }
public override bool ShouldCull(VertexShader.VertexShaderOutput[] vertices) { var a = vertices[0].Position; var b = vertices[1].Position; var c = vertices[2].Position; var ab = Number4.Subtract(ref b, ref a); var ac = Number4.Subtract(ref c, ref a); var l0 = new Vector3ForCulling(ab.X, ab.Y, ab.Z); var l1 = new Vector3ForCulling(ac.X, ac.Y, ac.Z); l0.Normalize(); l1.Normalize(); var normal = Vector3ForCulling.CrossZ(ref l0, ref l1); return(RasterizerState.ShouldCull(normal > 0)); }