update triangle graphics reference tests with more variations

two primary goals with this change:

1. test triangle dimensions of varying widths, in preparation for
   upcoming simd per_pixel_triangle_2d changes. we want to ensure that
   scenarios where `width < 4` and `width % 4 != 0` continue to work
   fine after simd changes are done
2. test triangle rendering at various rotations, because i remember
   while testing fill rule changes, sometimes issues would only be
   visible at certain rotations. so this is mostly just useful for
   blended rendering methods, but still, is probably generally useful
   too ...
This commit is contained in:
Gered 2023-04-21 18:20:08 -04:00
parent 83b5e1eabe
commit dde2c314ae
14 changed files with 154 additions and 226 deletions

View file

@ -2271,6 +2271,77 @@ fn get_quad<'a>(
}
#[rustfmt::skip]
fn draw_triangles(dest: &mut IndexedBitmap, mode: TriangleType, texture: Option<&IndexedBitmap>, blendmap: Option<&BlendMap>) {
let size = 32.0;
let half_size = size / 2.0;
let top_left = Vector2::new(0.0, 0.0);
let top_right = Vector2::new(size, 0.0);
let bottom_left = Vector2::new(0.0, size);
let bottom_right = Vector2::new(size, size);
let scale_factor = 1.0;
let scaled_size = (size * scale_factor) as i32;
assert!(scaled_size > 4 && scaled_size % 4 == 0);
let scale = Matrix3x3::new_2d_scaling(scale_factor, scale_factor);
let triangles = get_quad(mode, texture, blendmap, scale * Matrix3x3::new_2d_translation(20.0, 20.0), top_left, top_right, bottom_left, bottom_right);
dest.triangle_list_2d(&triangles);
// 1x1
let scale_factor = 0.04;
let scaled_size = (size * scale_factor) as i32;
assert!(scaled_size < 4 && scaled_size % 4 == 1);
let scale = Matrix3x3::new_2d_scaling(scale_factor, scale_factor);
let triangles = get_quad(mode, texture, blendmap, scale * Matrix3x3::new_2d_translation(70.0, 20.0), top_left, top_right, bottom_left, bottom_right);
dest.triangle_list_2d(&triangles);
// 3x3
let scale_factor = 0.1;
let scaled_size = (size * scale_factor) as i32;
assert!(scaled_size < 4 && scaled_size % 4 == 3);
let scale = Matrix3x3::new_2d_scaling(scale_factor, scale_factor);
let triangles = get_quad(mode, texture, blendmap, scale * Matrix3x3::new_2d_translation(90.0, 20.0), top_left, top_right, bottom_left, bottom_right);
dest.triangle_list_2d(&triangles);
// 41x41
let scale_factor = 1.29;
let scaled_size = (size * scale_factor) as i32;
assert!(scaled_size > 4 && scaled_size % 4 == 1);
let scale = Matrix3x3::new_2d_scaling(scale_factor, scale_factor);
let triangles = get_quad(mode, texture, blendmap, scale * Matrix3x3::new_2d_translation(120.0, 20.0), top_left, top_right, bottom_left, bottom_right);
dest.triangle_list_2d(&triangles);
// 67x67
let scale_factor = 2.1;
let scaled_size = (size * scale_factor) as i32;
assert!(scaled_size > 4 && scaled_size % 4 == 3);
let scale = Matrix3x3::new_2d_scaling(scale_factor, scale_factor);
let triangles = get_quad(mode, texture, blendmap, scale * Matrix3x3::new_2d_translation(220.0, 20.0), top_left, top_right, bottom_left, bottom_right);
dest.triangle_list_2d(&triangles);
// todo: my matrix math is wrong here somehow (was trying to do rotations around the center of each quad), but i
// don't care enough to fix this properly. the output of this crap is "good enough"
let mut angle = 0.0;
for y in 0..2 {
for x in 0..4 {
let x_draw = 0.0 + (x as f32 * size * 2.5);
let y_draw = 80.0 + (y as f32 * size * 2.5);
let scale_factor = 1.5;
let rotate = Matrix3x3::new_2d_rotation((angle as f32).to_radians());
let scale = Matrix3x3::new_2d_scaling(scale_factor, scale_factor);
let translation = Matrix3x3::new_2d_translation(x_draw, y_draw);
let offset = Matrix3x3::new_2d_translation(half_size, half_size);
let triangles = get_quad(mode, texture, blendmap, offset * rotate * scale * translation, top_left, top_right, bottom_left, bottom_right);
dest.triangle_list_2d(&triangles);
angle += 15.0 / 2.0;
}
}
}
#[test]
fn triangle_2d_solid_textured() {
let (mut screen, palette) = setup();
@ -2278,24 +2349,7 @@ fn triangle_2d_solid_textured() {
let texture = generate_bitmap(32, 32);
let top_left = Vector2::new(0.0, 0.0);
let top_right = Vector2::new(32.0, 0.0);
let bottom_left = Vector2::new(0.0, 32.0);
let bottom_right = Vector2::new(32.0, 32.0);
let rotate = Matrix3x3::new_2d_rotation(RADIANS_45);
let scale = Matrix3x3::new_2d_scaling(2.0, 2.0);
let mode = TriangleType::SolidTextured;
let triangles = get_quad(mode, Some(&texture), None, Matrix3x3::new_2d_translation(40.0, 40.0), top_left, top_right, bottom_left, bottom_right);
screen.triangle_list_2d(&triangles);
let triangles = get_quad(mode, Some(&texture), None, scale * Matrix3x3::new_2d_translation(200.0, 40.0), top_left, top_right, bottom_left, bottom_right);
screen.triangle_list_2d(&triangles);
let triangles = get_quad(mode, Some(&texture), None, scale * rotate * Matrix3x3::new_2d_translation(120.0, 120.0), top_left, top_right, bottom_left, bottom_right);
screen.triangle_list_2d(&triangles);
draw_triangles(&mut screen, TriangleType::SolidTextured, Some(&texture), None);
let path = reference_file(Path::new("triangle_2d_solid_textured.png"));
if cfg!(recreate_ref_test_images) {
@ -2304,29 +2358,11 @@ fn triangle_2d_solid_textured() {
assert!(verify_visual(&screen, &palette, &path), "bitmap differs from source image: {:?}", path);
}
#[rustfmt::skip]
#[test]
fn triangle_2d_solid_blended() {
let (mut screen, palette, blend_map) = setup_for_blending();
let top_left = Vector2::new(0.0, 0.0);
let top_right = Vector2::new(32.0, 0.0);
let bottom_left = Vector2::new(0.0, 32.0);
let bottom_right = Vector2::new(32.0, 32.0);
let rotate = Matrix3x3::new_2d_rotation(RADIANS_45);
let scale = Matrix3x3::new_2d_scaling(2.0, 2.0);
let mode = TriangleType::SolidBlended;
let triangles = get_quad(mode, None, Some(&blend_map), Matrix3x3::new_2d_translation(40.0, 40.0), top_left, top_right, bottom_left, bottom_right);
screen.triangle_list_2d(&triangles);
let triangles = get_quad(mode, None, Some(&blend_map), scale * Matrix3x3::new_2d_translation(200.0, 40.0), top_left, top_right, bottom_left, bottom_right);
screen.triangle_list_2d(&triangles);
let triangles = get_quad(mode, None, Some(&blend_map), scale * rotate * Matrix3x3::new_2d_translation(120.0, 120.0), top_left, top_right, bottom_left, bottom_right);
screen.triangle_list_2d(&triangles);
draw_triangles(&mut screen, TriangleType::SolidBlended, None, Some(&blend_map));
let path = reference_file(Path::new("triangle_2d_solid_blended.png"));
if cfg!(recreate_ref_test_images) {
@ -2335,31 +2371,13 @@ fn triangle_2d_solid_blended() {
assert!(verify_visual(&screen, &palette, &path), "bitmap differs from source image: {:?}", path);
}
#[rustfmt::skip]
#[test]
fn triangle_2d_solid_textured_blended() {
let (mut screen, palette, blend_map) = setup_for_blending();
let texture = generate_bitmap(32, 32);
let top_left = Vector2::new(0.0, 0.0);
let top_right = Vector2::new(32.0, 0.0);
let bottom_left = Vector2::new(0.0, 32.0);
let bottom_right = Vector2::new(32.0, 32.0);
let rotate = Matrix3x3::new_2d_rotation(RADIANS_45);
let scale = Matrix3x3::new_2d_scaling(2.0, 2.0);
let mode = TriangleType::SolidTexturedBlended;
let triangles = get_quad(mode, Some(&texture), Some(&blend_map), Matrix3x3::new_2d_translation(40.0, 40.0), top_left, top_right, bottom_left, bottom_right);
screen.triangle_list_2d(&triangles);
let triangles = get_quad(mode, Some(&texture), Some(&blend_map), scale * Matrix3x3::new_2d_translation(200.0, 40.0), top_left, top_right, bottom_left, bottom_right);
screen.triangle_list_2d(&triangles);
let triangles = get_quad(mode, Some(&texture), Some(&blend_map), scale * rotate * Matrix3x3::new_2d_translation(120.0, 120.0), top_left, top_right, bottom_left, bottom_right);
screen.triangle_list_2d(&triangles);
draw_triangles(&mut screen, TriangleType::SolidTexturedBlended, Some(&texture), Some(&blend_map));
let path = reference_file(Path::new("triangle_2d_solid_textured_blended.png"));
if cfg!(recreate_ref_test_images) {

View file

@ -2600,28 +2600,82 @@ fn get_quad(
}
#[rustfmt::skip]
fn draw_triangles(dest: &mut RgbaBitmap, mode: TriangleType, texture: Option<&RgbaBitmap>) {
let size = 32.0;
let half_size = size / 2.0;
let top_left = Vector2::new(0.0, 0.0);
let top_right = Vector2::new(size, 0.0);
let bottom_left = Vector2::new(0.0, size);
let bottom_right = Vector2::new(size, size);
let scale_factor = 1.0;
let scaled_size = (size * scale_factor) as i32;
assert!(scaled_size > 4 && scaled_size % 4 == 0);
let scale = Matrix3x3::new_2d_scaling(scale_factor, scale_factor);
let triangles = get_quad(mode, texture, scale * Matrix3x3::new_2d_translation(20.0, 20.0), top_left, top_right, bottom_left, bottom_right);
dest.triangle_list_2d(&triangles);
// 1x1
let scale_factor = 0.04;
let scaled_size = (size * scale_factor) as i32;
assert!(scaled_size < 4 && scaled_size % 4 == 1);
let scale = Matrix3x3::new_2d_scaling(scale_factor, scale_factor);
let triangles = get_quad(mode, texture, scale * Matrix3x3::new_2d_translation(70.0, 20.0), top_left, top_right, bottom_left, bottom_right);
dest.triangle_list_2d(&triangles);
// 3x3
let scale_factor = 0.1;
let scaled_size = (size * scale_factor) as i32;
assert!(scaled_size < 4 && scaled_size % 4 == 3);
let scale = Matrix3x3::new_2d_scaling(scale_factor, scale_factor);
let triangles = get_quad(mode, texture, scale * Matrix3x3::new_2d_translation(90.0, 20.0), top_left, top_right, bottom_left, bottom_right);
dest.triangle_list_2d(&triangles);
// 41x41
let scale_factor = 1.29;
let scaled_size = (size * scale_factor) as i32;
assert!(scaled_size > 4 && scaled_size % 4 == 1);
let scale = Matrix3x3::new_2d_scaling(scale_factor, scale_factor);
let triangles = get_quad(mode, texture, scale * Matrix3x3::new_2d_translation(120.0, 20.0), top_left, top_right, bottom_left, bottom_right);
dest.triangle_list_2d(&triangles);
// 67x67
let scale_factor = 2.1;
let scaled_size = (size * scale_factor) as i32;
assert!(scaled_size > 4 && scaled_size % 4 == 3);
let scale = Matrix3x3::new_2d_scaling(scale_factor, scale_factor);
let triangles = get_quad(mode, texture, scale * Matrix3x3::new_2d_translation(220.0, 20.0), top_left, top_right, bottom_left, bottom_right);
dest.triangle_list_2d(&triangles);
// todo: my matrix math is wrong here somehow (was trying to do rotations around the center of each quad), but i
// don't care enough to fix this properly. the output of this crap is "good enough"
let mut angle = 0.0;
for y in 0..2 {
for x in 0..4 {
let x_draw = 0.0 + (x as f32 * size * 2.5);
let y_draw = 80.0 + (y as f32 * size * 2.5);
let scale_factor = 1.5;
let rotate = Matrix3x3::new_2d_rotation((angle as f32).to_radians());
let scale = Matrix3x3::new_2d_scaling(scale_factor, scale_factor);
let translation = Matrix3x3::new_2d_translation(x_draw, y_draw);
let offset = Matrix3x3::new_2d_translation(half_size, half_size);
let triangles = get_quad(mode, texture, offset * rotate * scale * translation, top_left, top_right, bottom_left, bottom_right);
dest.triangle_list_2d(&triangles);
angle += 15.0 / 2.0;
}
}
}
#[test]
fn triangle_2d_solid_blended() {
let mut screen = setup_for_blending();
let top_left = Vector2::new(0.0, 0.0);
let top_right = Vector2::new(32.0, 0.0);
let bottom_left = Vector2::new(0.0, 32.0);
let bottom_right = Vector2::new(32.0, 32.0);
let rotate = Matrix3x3::new_2d_rotation(RADIANS_45);
let scale = Matrix3x3::new_2d_scaling(2.0, 2.0);
let mode = TriangleType::SolidBlended;
let triangles = get_quad(mode, None, Matrix3x3::new_2d_translation(40.0, 40.0), top_left, top_right, bottom_left, bottom_right);
screen.triangle_list_2d(&triangles);
let triangles = get_quad(mode, None, scale * Matrix3x3::new_2d_translation(200.0, 40.0), top_left, top_right, bottom_left, bottom_right);
screen.triangle_list_2d(&triangles);
let triangles = get_quad(mode, None, scale * rotate * Matrix3x3::new_2d_translation(120.0, 120.0), top_left, top_right, bottom_left, bottom_right);
screen.triangle_list_2d(&triangles);
draw_triangles(&mut screen, TriangleType::SolidBlended, None);
let path = reference_file(Path::new("triangle_2d_solid_blended.png"));
if cfg!(recreate_ref_test_images) {
@ -2630,29 +2684,11 @@ fn triangle_2d_solid_blended() {
assert!(verify_visual(&screen, &path), "bitmap differs from source image: {:?}", path);
}
#[rustfmt::skip]
#[test]
fn triangle_2d_solid_multicolor_blended() {
let mut screen = setup_for_blending();
let top_left = Vector2::new(0.0, 0.0);
let top_right = Vector2::new(32.0, 0.0);
let bottom_left = Vector2::new(0.0, 32.0);
let bottom_right = Vector2::new(32.0, 32.0);
let rotate = Matrix3x3::new_2d_rotation(RADIANS_45);
let scale = Matrix3x3::new_2d_scaling(2.0, 2.0);
let mode = TriangleType::SolidMultiColorBlended;
let triangles = get_quad(mode, None, Matrix3x3::new_2d_translation(40.0, 40.0), top_left, top_right, bottom_left, bottom_right);
screen.triangle_list_2d(&triangles);
let triangles = get_quad(mode, None, scale * Matrix3x3::new_2d_translation(200.0, 40.0), top_left, top_right, bottom_left, bottom_right);
screen.triangle_list_2d(&triangles);
let triangles = get_quad(mode, None, scale * rotate * Matrix3x3::new_2d_translation(120.0, 120.0), top_left, top_right, bottom_left, bottom_right);
screen.triangle_list_2d(&triangles);
draw_triangles(&mut screen, TriangleType::SolidMultiColorBlended, None);
let path = reference_file(Path::new("triangle_2d_solid_multicolor_blended.png"));
if cfg!(recreate_ref_test_images) {
@ -2661,7 +2697,6 @@ fn triangle_2d_solid_multicolor_blended() {
assert!(verify_visual(&screen, &path), "bitmap differs from source image: {:?}", path);
}
#[rustfmt::skip]
#[test]
fn triangle_2d_solid_textured() {
let mut screen = setup();
@ -2669,24 +2704,7 @@ fn triangle_2d_solid_textured() {
let texture = generate_bitmap(32, 32);
let top_left = Vector2::new(0.0, 0.0);
let top_right = Vector2::new(32.0, 0.0);
let bottom_left = Vector2::new(0.0, 32.0);
let bottom_right = Vector2::new(32.0, 32.0);
let rotate = Matrix3x3::new_2d_rotation(RADIANS_45);
let scale = Matrix3x3::new_2d_scaling(2.0, 2.0);
let mode = TriangleType::SolidTextured;
let triangles = get_quad(mode, Some(&texture), Matrix3x3::new_2d_translation(40.0, 40.0), top_left, top_right, bottom_left, bottom_right);
screen.triangle_list_2d(&triangles);
let triangles = get_quad(mode, Some(&texture), scale * Matrix3x3::new_2d_translation(200.0, 40.0), top_left, top_right, bottom_left, bottom_right);
screen.triangle_list_2d(&triangles);
let triangles = get_quad(mode, Some(&texture), scale * rotate * Matrix3x3::new_2d_translation(120.0, 120.0), top_left, top_right, bottom_left, bottom_right);
screen.triangle_list_2d(&triangles);
draw_triangles(&mut screen, TriangleType::SolidTextured, Some(&texture));
let path = reference_file(Path::new("triangle_2d_solid_textured.png"));
if cfg!(recreate_ref_test_images) {
@ -2695,7 +2713,6 @@ fn triangle_2d_solid_textured() {
assert!(verify_visual(&screen, &path), "bitmap differs from source image: {:?}", path);
}
#[rustfmt::skip]
#[test]
fn triangle_2d_solid_textured_colored() {
let mut screen = setup();
@ -2703,24 +2720,7 @@ fn triangle_2d_solid_textured_colored() {
let texture = generate_bitmap(32, 32);
let top_left = Vector2::new(0.0, 0.0);
let top_right = Vector2::new(32.0, 0.0);
let bottom_left = Vector2::new(0.0, 32.0);
let bottom_right = Vector2::new(32.0, 32.0);
let rotate = Matrix3x3::new_2d_rotation(RADIANS_45);
let scale = Matrix3x3::new_2d_scaling(2.0, 2.0);
let mode = TriangleType::SolidTexturedColored;
let triangles = get_quad(mode, Some(&texture), Matrix3x3::new_2d_translation(40.0, 40.0), top_left, top_right, bottom_left, bottom_right);
screen.triangle_list_2d(&triangles);
let triangles = get_quad(mode, Some(&texture), scale * Matrix3x3::new_2d_translation(200.0, 40.0), top_left, top_right, bottom_left, bottom_right);
screen.triangle_list_2d(&triangles);
let triangles = get_quad(mode, Some(&texture), scale * rotate * Matrix3x3::new_2d_translation(120.0, 120.0), top_left, top_right, bottom_left, bottom_right);
screen.triangle_list_2d(&triangles);
draw_triangles(&mut screen, TriangleType::SolidTexturedColored, Some(&texture));
let path = reference_file(Path::new("triangle_2d_solid_textured_colored.png"));
if cfg!(recreate_ref_test_images) {
@ -2729,31 +2729,13 @@ fn triangle_2d_solid_textured_colored() {
assert!(verify_visual(&screen, &path), "bitmap differs from source image: {:?}", path);
}
#[rustfmt::skip]
#[test]
fn triangle_2d_solid_textured_colored_blended() {
let mut screen = setup_for_blending();
let texture = generate_bitmap(32, 32);
let top_left = Vector2::new(0.0, 0.0);
let top_right = Vector2::new(32.0, 0.0);
let bottom_left = Vector2::new(0.0, 32.0);
let bottom_right = Vector2::new(32.0, 32.0);
let rotate = Matrix3x3::new_2d_rotation(RADIANS_45);
let scale = Matrix3x3::new_2d_scaling(2.0, 2.0);
let mode = TriangleType::SolidTexturedColoredBlended;
let triangles = get_quad(mode, Some(&texture), Matrix3x3::new_2d_translation(40.0, 40.0), top_left, top_right, bottom_left, bottom_right);
screen.triangle_list_2d(&triangles);
let triangles = get_quad(mode, Some(&texture), scale * Matrix3x3::new_2d_translation(200.0, 40.0), top_left, top_right, bottom_left, bottom_right);
screen.triangle_list_2d(&triangles);
let triangles = get_quad(mode, Some(&texture), scale * rotate * Matrix3x3::new_2d_translation(120.0, 120.0), top_left, top_right, bottom_left, bottom_right);
screen.triangle_list_2d(&triangles);
draw_triangles(&mut screen, TriangleType::SolidTexturedColoredBlended, Some(&texture));
let path = reference_file(Path::new("triangle_2d_solid_textured_colored_blended.png"));
if cfg!(recreate_ref_test_images) {
@ -2762,7 +2744,6 @@ fn triangle_2d_solid_textured_colored_blended() {
assert!(verify_visual(&screen, &path), "bitmap differs from source image: {:?}", path);
}
#[rustfmt::skip]
#[test]
fn triangle_2d_solid_textured_multicolored() {
let mut screen = setup();
@ -2770,24 +2751,7 @@ fn triangle_2d_solid_textured_multicolored() {
let texture = generate_bitmap(32, 32);
let top_left = Vector2::new(0.0, 0.0);
let top_right = Vector2::new(32.0, 0.0);
let bottom_left = Vector2::new(0.0, 32.0);
let bottom_right = Vector2::new(32.0, 32.0);
let rotate = Matrix3x3::new_2d_rotation(RADIANS_45);
let scale = Matrix3x3::new_2d_scaling(2.0, 2.0);
let mode = TriangleType::SolidTexturedMultiColored;
let triangles = get_quad(mode, Some(&texture), Matrix3x3::new_2d_translation(40.0, 40.0), top_left, top_right, bottom_left, bottom_right);
screen.triangle_list_2d(&triangles);
let triangles = get_quad(mode, Some(&texture), scale * Matrix3x3::new_2d_translation(200.0, 40.0), top_left, top_right, bottom_left, bottom_right);
screen.triangle_list_2d(&triangles);
let triangles = get_quad(mode, Some(&texture), scale * rotate * Matrix3x3::new_2d_translation(120.0, 120.0), top_left, top_right, bottom_left, bottom_right);
screen.triangle_list_2d(&triangles);
draw_triangles(&mut screen, TriangleType::SolidTexturedMultiColored, Some(&texture));
let path = reference_file(Path::new("triangle_2d_solid_textured_multicolored.png"));
if cfg!(recreate_ref_test_images) {
@ -2796,31 +2760,13 @@ fn triangle_2d_solid_textured_multicolored() {
assert!(verify_visual(&screen, &path), "bitmap differs from source image: {:?}", path);
}
#[rustfmt::skip]
#[test]
fn triangle_2d_solid_textured_multicolored_blended() {
let mut screen = setup_for_blending();
let texture = generate_bitmap(32, 32);
let top_left = Vector2::new(0.0, 0.0);
let top_right = Vector2::new(32.0, 0.0);
let bottom_left = Vector2::new(0.0, 32.0);
let bottom_right = Vector2::new(32.0, 32.0);
let rotate = Matrix3x3::new_2d_rotation(RADIANS_45);
let scale = Matrix3x3::new_2d_scaling(2.0, 2.0);
let mode = TriangleType::SolidTexturedMultiColoredBlended;
let triangles = get_quad(mode, Some(&texture), Matrix3x3::new_2d_translation(40.0, 40.0), top_left, top_right, bottom_left, bottom_right);
screen.triangle_list_2d(&triangles);
let triangles = get_quad(mode, Some(&texture), scale * Matrix3x3::new_2d_translation(200.0, 40.0), top_left, top_right, bottom_left, bottom_right);
screen.triangle_list_2d(&triangles);
let triangles = get_quad(mode, Some(&texture), scale * rotate * Matrix3x3::new_2d_translation(120.0, 120.0), top_left, top_right, bottom_left, bottom_right);
screen.triangle_list_2d(&triangles);
draw_triangles(&mut screen, TriangleType::SolidTexturedMultiColoredBlended, Some(&texture));
let path = reference_file(Path::new("triangle_2d_solid_textured_multicolored_blended.png"));
if cfg!(recreate_ref_test_images) {
@ -2829,7 +2775,6 @@ fn triangle_2d_solid_textured_multicolored_blended() {
assert!(verify_visual(&screen, &path), "bitmap differs from source image: {:?}", path);
}
#[rustfmt::skip]
#[test]
fn triangle_2d_solid_textured_tinted() {
let mut screen = setup();
@ -2837,24 +2782,7 @@ fn triangle_2d_solid_textured_tinted() {
let texture = generate_bitmap(32, 32);
let top_left = Vector2::new(0.0, 0.0);
let top_right = Vector2::new(32.0, 0.0);
let bottom_left = Vector2::new(0.0, 32.0);
let bottom_right = Vector2::new(32.0, 32.0);
let rotate = Matrix3x3::new_2d_rotation(RADIANS_45);
let scale = Matrix3x3::new_2d_scaling(2.0, 2.0);
let mode = TriangleType::SolidTexturedTinted;
let triangles = get_quad(mode, Some(&texture), Matrix3x3::new_2d_translation(40.0, 40.0), top_left, top_right, bottom_left, bottom_right);
screen.triangle_list_2d(&triangles);
let triangles = get_quad(mode, Some(&texture), scale * Matrix3x3::new_2d_translation(200.0, 40.0), top_left, top_right, bottom_left, bottom_right);
screen.triangle_list_2d(&triangles);
let triangles = get_quad(mode, Some(&texture), scale * rotate * Matrix3x3::new_2d_translation(120.0, 120.0), top_left, top_right, bottom_left, bottom_right);
screen.triangle_list_2d(&triangles);
draw_triangles(&mut screen, TriangleType::SolidTexturedTinted, Some(&texture));
let path = reference_file(Path::new("triangle_2d_solid_textured_tinted.png"));
if cfg!(recreate_ref_test_images) {
@ -2863,31 +2791,13 @@ fn triangle_2d_solid_textured_tinted() {
assert!(verify_visual(&screen, &path), "bitmap differs from source image: {:?}", path);
}
#[rustfmt::skip]
#[test]
fn triangle_2d_solid_textured_blended() {
let mut screen = setup_for_blending();
let texture = generate_bitmap(32, 32);
let top_left = Vector2::new(0.0, 0.0);
let top_right = Vector2::new(32.0, 0.0);
let bottom_left = Vector2::new(0.0, 32.0);
let bottom_right = Vector2::new(32.0, 32.0);
let rotate = Matrix3x3::new_2d_rotation(RADIANS_45);
let scale = Matrix3x3::new_2d_scaling(2.0, 2.0);
let mode = TriangleType::SolidTexturedBlended;
let triangles = get_quad(mode, Some(&texture), Matrix3x3::new_2d_translation(40.0, 40.0), top_left, top_right, bottom_left, bottom_right);
screen.triangle_list_2d(&triangles);
let triangles = get_quad(mode, Some(&texture), scale * Matrix3x3::new_2d_translation(200.0, 40.0), top_left, top_right, bottom_left, bottom_right);
screen.triangle_list_2d(&triangles);
let triangles = get_quad(mode, Some(&texture), scale * rotate * Matrix3x3::new_2d_translation(120.0, 120.0), top_left, top_right, bottom_left, bottom_right);
screen.triangle_list_2d(&triangles);
draw_triangles(&mut screen, TriangleType::SolidTexturedBlended, Some(&texture));
let path = reference_file(Path::new("triangle_2d_solid_textured_blended.png"));
if cfg!(recreate_ref_test_images) {

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.4 KiB

After

Width:  |  Height:  |  Size: 4.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2 KiB

After

Width:  |  Height:  |  Size: 3.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.9 KiB

After

Width:  |  Height:  |  Size: 8.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.8 KiB

After

Width:  |  Height:  |  Size: 5.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 32 KiB

After

Width:  |  Height:  |  Size: 86 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.1 KiB

After

Width:  |  Height:  |  Size: 4.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.2 KiB

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2 KiB

After

Width:  |  Height:  |  Size: 4.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.6 KiB

After

Width:  |  Height:  |  Size: 9.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 11 KiB

After

Width:  |  Height:  |  Size: 31 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 16 KiB

After

Width:  |  Height:  |  Size: 44 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.1 KiB

After

Width:  |  Height:  |  Size: 4.5 KiB