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 ...
|
@ -2271,6 +2271,77 @@ fn get_quad<'a>(
|
||||||
}
|
}
|
||||||
|
|
||||||
#[rustfmt::skip]
|
#[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]
|
#[test]
|
||||||
fn triangle_2d_solid_textured() {
|
fn triangle_2d_solid_textured() {
|
||||||
let (mut screen, palette) = setup();
|
let (mut screen, palette) = setup();
|
||||||
|
@ -2278,24 +2349,7 @@ fn triangle_2d_solid_textured() {
|
||||||
|
|
||||||
let texture = generate_bitmap(32, 32);
|
let texture = generate_bitmap(32, 32);
|
||||||
|
|
||||||
let top_left = Vector2::new(0.0, 0.0);
|
draw_triangles(&mut screen, TriangleType::SolidTextured, Some(&texture), None);
|
||||||
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);
|
|
||||||
|
|
||||||
let path = reference_file(Path::new("triangle_2d_solid_textured.png"));
|
let path = reference_file(Path::new("triangle_2d_solid_textured.png"));
|
||||||
if cfg!(recreate_ref_test_images) {
|
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);
|
assert!(verify_visual(&screen, &palette, &path), "bitmap differs from source image: {:?}", path);
|
||||||
}
|
}
|
||||||
|
|
||||||
#[rustfmt::skip]
|
|
||||||
#[test]
|
#[test]
|
||||||
fn triangle_2d_solid_blended() {
|
fn triangle_2d_solid_blended() {
|
||||||
let (mut screen, palette, blend_map) = setup_for_blending();
|
let (mut screen, palette, blend_map) = setup_for_blending();
|
||||||
|
|
||||||
let top_left = Vector2::new(0.0, 0.0);
|
draw_triangles(&mut screen, TriangleType::SolidBlended, None, Some(&blend_map));
|
||||||
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);
|
|
||||||
|
|
||||||
let path = reference_file(Path::new("triangle_2d_solid_blended.png"));
|
let path = reference_file(Path::new("triangle_2d_solid_blended.png"));
|
||||||
if cfg!(recreate_ref_test_images) {
|
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);
|
assert!(verify_visual(&screen, &palette, &path), "bitmap differs from source image: {:?}", path);
|
||||||
}
|
}
|
||||||
|
|
||||||
#[rustfmt::skip]
|
|
||||||
#[test]
|
#[test]
|
||||||
fn triangle_2d_solid_textured_blended() {
|
fn triangle_2d_solid_textured_blended() {
|
||||||
let (mut screen, palette, blend_map) = setup_for_blending();
|
let (mut screen, palette, blend_map) = setup_for_blending();
|
||||||
|
|
||||||
let texture = generate_bitmap(32, 32);
|
let texture = generate_bitmap(32, 32);
|
||||||
|
|
||||||
let top_left = Vector2::new(0.0, 0.0);
|
draw_triangles(&mut screen, TriangleType::SolidTexturedBlended, Some(&texture), Some(&blend_map));
|
||||||
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);
|
|
||||||
|
|
||||||
let path = reference_file(Path::new("triangle_2d_solid_textured_blended.png"));
|
let path = reference_file(Path::new("triangle_2d_solid_textured_blended.png"));
|
||||||
if cfg!(recreate_ref_test_images) {
|
if cfg!(recreate_ref_test_images) {
|
||||||
|
|
|
@ -2600,28 +2600,82 @@ fn get_quad(
|
||||||
}
|
}
|
||||||
|
|
||||||
#[rustfmt::skip]
|
#[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]
|
#[test]
|
||||||
fn triangle_2d_solid_blended() {
|
fn triangle_2d_solid_blended() {
|
||||||
let mut screen = setup_for_blending();
|
let mut screen = setup_for_blending();
|
||||||
|
|
||||||
let top_left = Vector2::new(0.0, 0.0);
|
draw_triangles(&mut screen, TriangleType::SolidBlended, None);
|
||||||
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);
|
|
||||||
|
|
||||||
let path = reference_file(Path::new("triangle_2d_solid_blended.png"));
|
let path = reference_file(Path::new("triangle_2d_solid_blended.png"));
|
||||||
if cfg!(recreate_ref_test_images) {
|
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);
|
assert!(verify_visual(&screen, &path), "bitmap differs from source image: {:?}", path);
|
||||||
}
|
}
|
||||||
|
|
||||||
#[rustfmt::skip]
|
|
||||||
#[test]
|
#[test]
|
||||||
fn triangle_2d_solid_multicolor_blended() {
|
fn triangle_2d_solid_multicolor_blended() {
|
||||||
let mut screen = setup_for_blending();
|
let mut screen = setup_for_blending();
|
||||||
|
|
||||||
let top_left = Vector2::new(0.0, 0.0);
|
draw_triangles(&mut screen, TriangleType::SolidMultiColorBlended, None);
|
||||||
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);
|
|
||||||
|
|
||||||
let path = reference_file(Path::new("triangle_2d_solid_multicolor_blended.png"));
|
let path = reference_file(Path::new("triangle_2d_solid_multicolor_blended.png"));
|
||||||
if cfg!(recreate_ref_test_images) {
|
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);
|
assert!(verify_visual(&screen, &path), "bitmap differs from source image: {:?}", path);
|
||||||
}
|
}
|
||||||
|
|
||||||
#[rustfmt::skip]
|
|
||||||
#[test]
|
#[test]
|
||||||
fn triangle_2d_solid_textured() {
|
fn triangle_2d_solid_textured() {
|
||||||
let mut screen = setup();
|
let mut screen = setup();
|
||||||
|
@ -2669,24 +2704,7 @@ fn triangle_2d_solid_textured() {
|
||||||
|
|
||||||
let texture = generate_bitmap(32, 32);
|
let texture = generate_bitmap(32, 32);
|
||||||
|
|
||||||
let top_left = Vector2::new(0.0, 0.0);
|
draw_triangles(&mut screen, TriangleType::SolidTextured, Some(&texture));
|
||||||
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);
|
|
||||||
|
|
||||||
let path = reference_file(Path::new("triangle_2d_solid_textured.png"));
|
let path = reference_file(Path::new("triangle_2d_solid_textured.png"));
|
||||||
if cfg!(recreate_ref_test_images) {
|
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);
|
assert!(verify_visual(&screen, &path), "bitmap differs from source image: {:?}", path);
|
||||||
}
|
}
|
||||||
|
|
||||||
#[rustfmt::skip]
|
|
||||||
#[test]
|
#[test]
|
||||||
fn triangle_2d_solid_textured_colored() {
|
fn triangle_2d_solid_textured_colored() {
|
||||||
let mut screen = setup();
|
let mut screen = setup();
|
||||||
|
@ -2703,24 +2720,7 @@ fn triangle_2d_solid_textured_colored() {
|
||||||
|
|
||||||
let texture = generate_bitmap(32, 32);
|
let texture = generate_bitmap(32, 32);
|
||||||
|
|
||||||
let top_left = Vector2::new(0.0, 0.0);
|
draw_triangles(&mut screen, TriangleType::SolidTexturedColored, Some(&texture));
|
||||||
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);
|
|
||||||
|
|
||||||
let path = reference_file(Path::new("triangle_2d_solid_textured_colored.png"));
|
let path = reference_file(Path::new("triangle_2d_solid_textured_colored.png"));
|
||||||
if cfg!(recreate_ref_test_images) {
|
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);
|
assert!(verify_visual(&screen, &path), "bitmap differs from source image: {:?}", path);
|
||||||
}
|
}
|
||||||
|
|
||||||
#[rustfmt::skip]
|
|
||||||
#[test]
|
#[test]
|
||||||
fn triangle_2d_solid_textured_colored_blended() {
|
fn triangle_2d_solid_textured_colored_blended() {
|
||||||
let mut screen = setup_for_blending();
|
let mut screen = setup_for_blending();
|
||||||
|
|
||||||
let texture = generate_bitmap(32, 32);
|
let texture = generate_bitmap(32, 32);
|
||||||
|
|
||||||
let top_left = Vector2::new(0.0, 0.0);
|
draw_triangles(&mut screen, TriangleType::SolidTexturedColoredBlended, Some(&texture));
|
||||||
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);
|
|
||||||
|
|
||||||
let path = reference_file(Path::new("triangle_2d_solid_textured_colored_blended.png"));
|
let path = reference_file(Path::new("triangle_2d_solid_textured_colored_blended.png"));
|
||||||
if cfg!(recreate_ref_test_images) {
|
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);
|
assert!(verify_visual(&screen, &path), "bitmap differs from source image: {:?}", path);
|
||||||
}
|
}
|
||||||
|
|
||||||
#[rustfmt::skip]
|
|
||||||
#[test]
|
#[test]
|
||||||
fn triangle_2d_solid_textured_multicolored() {
|
fn triangle_2d_solid_textured_multicolored() {
|
||||||
let mut screen = setup();
|
let mut screen = setup();
|
||||||
|
@ -2770,24 +2751,7 @@ fn triangle_2d_solid_textured_multicolored() {
|
||||||
|
|
||||||
let texture = generate_bitmap(32, 32);
|
let texture = generate_bitmap(32, 32);
|
||||||
|
|
||||||
let top_left = Vector2::new(0.0, 0.0);
|
draw_triangles(&mut screen, TriangleType::SolidTexturedMultiColored, Some(&texture));
|
||||||
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);
|
|
||||||
|
|
||||||
let path = reference_file(Path::new("triangle_2d_solid_textured_multicolored.png"));
|
let path = reference_file(Path::new("triangle_2d_solid_textured_multicolored.png"));
|
||||||
if cfg!(recreate_ref_test_images) {
|
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);
|
assert!(verify_visual(&screen, &path), "bitmap differs from source image: {:?}", path);
|
||||||
}
|
}
|
||||||
|
|
||||||
#[rustfmt::skip]
|
|
||||||
#[test]
|
#[test]
|
||||||
fn triangle_2d_solid_textured_multicolored_blended() {
|
fn triangle_2d_solid_textured_multicolored_blended() {
|
||||||
let mut screen = setup_for_blending();
|
let mut screen = setup_for_blending();
|
||||||
|
|
||||||
let texture = generate_bitmap(32, 32);
|
let texture = generate_bitmap(32, 32);
|
||||||
|
|
||||||
let top_left = Vector2::new(0.0, 0.0);
|
draw_triangles(&mut screen, TriangleType::SolidTexturedMultiColoredBlended, Some(&texture));
|
||||||
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);
|
|
||||||
|
|
||||||
let path = reference_file(Path::new("triangle_2d_solid_textured_multicolored_blended.png"));
|
let path = reference_file(Path::new("triangle_2d_solid_textured_multicolored_blended.png"));
|
||||||
if cfg!(recreate_ref_test_images) {
|
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);
|
assert!(verify_visual(&screen, &path), "bitmap differs from source image: {:?}", path);
|
||||||
}
|
}
|
||||||
|
|
||||||
#[rustfmt::skip]
|
|
||||||
#[test]
|
#[test]
|
||||||
fn triangle_2d_solid_textured_tinted() {
|
fn triangle_2d_solid_textured_tinted() {
|
||||||
let mut screen = setup();
|
let mut screen = setup();
|
||||||
|
@ -2837,24 +2782,7 @@ fn triangle_2d_solid_textured_tinted() {
|
||||||
|
|
||||||
let texture = generate_bitmap(32, 32);
|
let texture = generate_bitmap(32, 32);
|
||||||
|
|
||||||
let top_left = Vector2::new(0.0, 0.0);
|
draw_triangles(&mut screen, TriangleType::SolidTexturedTinted, Some(&texture));
|
||||||
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);
|
|
||||||
|
|
||||||
let path = reference_file(Path::new("triangle_2d_solid_textured_tinted.png"));
|
let path = reference_file(Path::new("triangle_2d_solid_textured_tinted.png"));
|
||||||
if cfg!(recreate_ref_test_images) {
|
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);
|
assert!(verify_visual(&screen, &path), "bitmap differs from source image: {:?}", path);
|
||||||
}
|
}
|
||||||
|
|
||||||
#[rustfmt::skip]
|
|
||||||
#[test]
|
#[test]
|
||||||
fn triangle_2d_solid_textured_blended() {
|
fn triangle_2d_solid_textured_blended() {
|
||||||
let mut screen = setup_for_blending();
|
let mut screen = setup_for_blending();
|
||||||
|
|
||||||
let texture = generate_bitmap(32, 32);
|
let texture = generate_bitmap(32, 32);
|
||||||
|
|
||||||
let top_left = Vector2::new(0.0, 0.0);
|
draw_triangles(&mut screen, TriangleType::SolidTexturedBlended, Some(&texture));
|
||||||
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);
|
|
||||||
|
|
||||||
let path = reference_file(Path::new("triangle_2d_solid_textured_blended.png"));
|
let path = reference_file(Path::new("triangle_2d_solid_textured_blended.png"));
|
||||||
if cfg!(recreate_ref_test_images) {
|
if cfg!(recreate_ref_test_images) {
|
||||||
|
|
Before Width: | Height: | Size: 2.4 KiB After Width: | Height: | Size: 4.1 KiB |
Before Width: | Height: | Size: 2 KiB After Width: | Height: | Size: 3.8 KiB |
Before Width: | Height: | Size: 3.9 KiB After Width: | Height: | Size: 8.1 KiB |
Before Width: | Height: | Size: 2.8 KiB After Width: | Height: | Size: 5.4 KiB |
Before Width: | Height: | Size: 32 KiB After Width: | Height: | Size: 86 KiB |
Before Width: | Height: | Size: 2.1 KiB After Width: | Height: | Size: 4.5 KiB |
Before Width: | Height: | Size: 5.2 KiB After Width: | Height: | Size: 11 KiB |
Before Width: | Height: | Size: 2 KiB After Width: | Height: | Size: 4.4 KiB |
Before Width: | Height: | Size: 4.6 KiB After Width: | Height: | Size: 9.8 KiB |
Before Width: | Height: | Size: 11 KiB After Width: | Height: | Size: 31 KiB |
Before Width: | Height: | Size: 16 KiB After Width: | Height: | Size: 44 KiB |
Before Width: | Height: | Size: 2.1 KiB After Width: | Height: | Size: 4.5 KiB |